1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
|
<!doctype html>
<html lang="en">
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<meta name="author" content="aki">
<meta name="tags" content="activity chart, commit chart, static generator">
<meta name="published-on" content="2024-02-11T21:10:00+01:00">
<link rel="icon" type="image/png" href="favicon.png">
<link rel="stylesheet" href="style.css">
<title>Generate Your Daily Commits Chart Now</title>
<header>
<nav><a href="https://ignore.pl">ignore.pl</a></nav>
<time>11 February 2024</time>
<h1>Generate Your Daily Commits Chart Now</h1>
</header>
<article>
<p>I include my website in my CV. Or at least the cgit instance depending on my mood and the state of the homepage.
<p>Of course, what I like is rarely what a recruiter may like. This obviously is a generalization. Maybe they'll simply
look at the link, confirm it works and end at that never really thinking about bare minimal aesthetic I use. Maybe
they'll prove me completely wrong and like it. Maybe they'll quickly go through couple of my articles and git
repositories and look for things that are actually important. Maybe they won't open the link at all.
<p>I often disappear for several months and leave the homepage as is, without any new posts or anything. Sometimes I may
push some commits to the public repositories. Sometimes I'm stuck on some random private repository or working in a
garden and everything seemingly shows that I'm dead.
<p>Nonetheless, I would want to give anyone something similar they have seen to look at and give some indication of what
I am doing currently. Whether I commit something here or there or wherever.
<h2>Activity Chart</h2>
<p>And so I decided to write a static generator for daily commits charts. Well, call it as you want, an activity chart,
a commit chart, the squares from Github that Gitlab made weird copy of. Now it's my turn to copy it:
<pre>
$ xargs activity -fsvg >generate_your_daily_commits_chart_now-1.svg <list
$ rsvg-convert -w 670 generate_your_daily_commits_chart_now-1.svg \
> -o generate_your_daily_commits_chart_now-1.png
</pre>
<img alt="my activity past 53 weeks or so" src="generate_your_daily_commits_chart_now-1.png">
<p>It supports generating charts as SVG images, HTML tables or... Directly in your
terminal:</p>
<img alt="same but in terminal" src="generate_your_daily_commits_chart_now-2.png">
<p>You can generate yearly charts, too. Here are all commits of
<a href="https://github.com/emscripten-core/emscripten">Emscripten</a> in 2022 in pure HTML generated with:
<pre>
$ cd emscripten
$ activity -fhtml5 >../ignore.pl/generate_your_daily_commits_chart_now-3.html
</pre>
<style>
table.activity-chart {
font-family: sans-serif;
border-spacing: 2px;
}
table.activity-chart tr { height: 11px; }
td.activity-chart-label {
position: relative;
font-size: 12px;
min-width: 2em;
}
td.activity-chart-label span {
position: absolute;
top: -3px;
}
td[data-activity-level] {
box-sizing: border-box;
outline-width: 1px;
outline-style: solid;
outline-offset: -1px;
outline-color: rgba(27, 31, 35, 0.06);
border-radius: 2px;
height: 11px;
min-width: 11px;
}
td[data-activity-level="0"] { background-color: #ccc; }
td[data-activity-level="1"] { background-color: #9be9a8; }
td[data-activity-level="2"] { background-color: #40c463; }
td[data-activity-level="3"] { background-color: #30a14e; }
td[data-activity-level="4"] { background-color: #216e39; }
</style>
<table class="activity-chart">
<tr><td class="activity-chart-label"><span></span><td><td data-activity-level="0"><td data-activity-level="1"><td data-activity-level="1"><td data-activity-level="1"><td data-activity-level="1"><td data-activity-level="0"><td data-activity-level="0"><td data-activity-level="0"><td data-activity-level="0"><td data-activity-level="1"><td data-activity-level="3"><td data-activity-level="1"><td data-activity-level="1"><td data-activity-level="0"><td data-activity-level="0"><td data-activity-level="0"><td data-activity-level="0"><td data-activity-level="0"><td data-activity-level="0"><td data-activity-level="0"><td data-activity-level="1"><td data-activity-level="3"><td data-activity-level="0"><td data-activity-level="0"><td data-activity-level="1"><td data-activity-level="0"><td data-activity-level="1"><td data-activity-level="0"><td data-activity-level="2"><td data-activity-level="0"><td data-activity-level="0"><td data-activity-level="1"><td data-activity-level="0"><td data-activity-level="0"><td data-activity-level="0"><td data-activity-level="0"><td data-activity-level="0"><td data-activity-level="0"><td data-activity-level="0"><td data-activity-level="0"><td data-activity-level="0"><td data-activity-level="0"><td data-activity-level="0"><td data-activity-level="0"><td data-activity-level="0"><td data-activity-level="0"><td data-activity-level="0"><td data-activity-level="1"><td data-activity-level="0"><td data-activity-level="1"><td data-activity-level="1"><td>
<tr><td class="activity-chart-label"><span>Mon</span><td><td data-activity-level="0"><td data-activity-level="4"><td data-activity-level="2"><td data-activity-level="1"><td data-activity-level="4"><td data-activity-level="1"><td data-activity-level="4"><td data-activity-level="1"><td data-activity-level="1"><td data-activity-level="3"><td data-activity-level="3"><td data-activity-level="4"><td data-activity-level="4"><td data-activity-level="2"><td data-activity-level="2"><td data-activity-level="2"><td data-activity-level="2"><td data-activity-level="4"><td data-activity-level="3"><td data-activity-level="0"><td data-activity-level="4"><td data-activity-level="4"><td data-activity-level="2"><td data-activity-level="3"><td data-activity-level="3"><td data-activity-level="2"><td data-activity-level="0"><td data-activity-level="2"><td data-activity-level="4"><td data-activity-level="4"><td data-activity-level="4"><td data-activity-level="3"><td data-activity-level="3"><td data-activity-level="3"><td data-activity-level="1"><td data-activity-level="1"><td data-activity-level="2"><td data-activity-level="4"><td data-activity-level="0"><td data-activity-level="3"><td data-activity-level="1"><td data-activity-level="4"><td data-activity-level="2"><td data-activity-level="2"><td data-activity-level="1"><td data-activity-level="3"><td data-activity-level="1"><td data-activity-level="2"><td data-activity-level="2"><td data-activity-level="2"><td data-activity-level="3"><td>
<tr><td class="activity-chart-label"><span></span><td><td data-activity-level="3"><td data-activity-level="4"><td data-activity-level="4"><td data-activity-level="2"><td data-activity-level="4"><td data-activity-level="1"><td data-activity-level="4"><td data-activity-level="4"><td data-activity-level="2"><td data-activity-level="4"><td data-activity-level="3"><td data-activity-level="3"><td data-activity-level="4"><td data-activity-level="2"><td data-activity-level="3"><td data-activity-level="3"><td data-activity-level="3"><td data-activity-level="4"><td data-activity-level="3"><td data-activity-level="4"><td data-activity-level="4"><td data-activity-level="4"><td data-activity-level="3"><td data-activity-level="4"><td data-activity-level="2"><td data-activity-level="4"><td data-activity-level="0"><td data-activity-level="2"><td data-activity-level="4"><td data-activity-level="1"><td data-activity-level="2"><td data-activity-level="2"><td data-activity-level="3"><td data-activity-level="4"><td data-activity-level="4"><td data-activity-level="4"><td data-activity-level="4"><td data-activity-level="4"><td data-activity-level="0"><td data-activity-level="4"><td data-activity-level="4"><td data-activity-level="2"><td data-activity-level="1"><td data-activity-level="3"><td data-activity-level="1"><td data-activity-level="1"><td data-activity-level="2"><td data-activity-level="4"><td data-activity-level="4"><td data-activity-level="4"><td data-activity-level="4"><td>
<tr><td class="activity-chart-label"><span>Wed</span><td><td data-activity-level="4"><td data-activity-level="4"><td data-activity-level="4"><td data-activity-level="4"><td data-activity-level="4"><td data-activity-level="2"><td data-activity-level="4"><td data-activity-level="4"><td data-activity-level="1"><td data-activity-level="4"><td data-activity-level="3"><td data-activity-level="1"><td data-activity-level="1"><td data-activity-level="1"><td data-activity-level="2"><td data-activity-level="4"><td data-activity-level="4"><td data-activity-level="3"><td data-activity-level="4"><td data-activity-level="2"><td data-activity-level="4"><td data-activity-level="4"><td data-activity-level="4"><td data-activity-level="3"><td data-activity-level="2"><td data-activity-level="3"><td data-activity-level="3"><td data-activity-level="4"><td data-activity-level="1"><td data-activity-level="1"><td data-activity-level="1"><td data-activity-level="2"><td data-activity-level="3"><td data-activity-level="4"><td data-activity-level="4"><td data-activity-level="1"><td data-activity-level="2"><td data-activity-level="2"><td data-activity-level="0"><td data-activity-level="4"><td data-activity-level="2"><td data-activity-level="3"><td data-activity-level="1"><td data-activity-level="4"><td data-activity-level="3"><td data-activity-level="4"><td data-activity-level="1"><td data-activity-level="2"><td data-activity-level="1"><td data-activity-level="3"><td data-activity-level="2"><td>
<tr><td class="activity-chart-label"><span></span><td><td data-activity-level="4"><td data-activity-level="4"><td data-activity-level="3"><td data-activity-level="3"><td data-activity-level="4"><td data-activity-level="4"><td data-activity-level="4"><td data-activity-level="4"><td data-activity-level="2"><td data-activity-level="3"><td data-activity-level="4"><td data-activity-level="4"><td data-activity-level="1"><td data-activity-level="1"><td data-activity-level="4"><td data-activity-level="4"><td data-activity-level="4"><td data-activity-level="4"><td data-activity-level="4"><td data-activity-level="4"><td data-activity-level="3"><td data-activity-level="4"><td data-activity-level="3"><td data-activity-level="3"><td data-activity-level="2"><td data-activity-level="2"><td data-activity-level="4"><td data-activity-level="2"><td data-activity-level="4"><td data-activity-level="1"><td data-activity-level="2"><td data-activity-level="3"><td data-activity-level="4"><td data-activity-level="2"><td data-activity-level="4"><td data-activity-level="2"><td data-activity-level="4"><td data-activity-level="3"><td data-activity-level="4"><td data-activity-level="3"><td data-activity-level="1"><td data-activity-level="0"><td data-activity-level="1"><td data-activity-level="1"><td data-activity-level="2"><td data-activity-level="4"><td data-activity-level="0"><td data-activity-level="3"><td data-activity-level="4"><td data-activity-level="2"><td data-activity-level="4"><td>
<tr><td class="activity-chart-label"><span>Fri</span><td><td data-activity-level="4"><td data-activity-level="4"><td data-activity-level="4"><td data-activity-level="4"><td data-activity-level="4"><td data-activity-level="4"><td data-activity-level="4"><td data-activity-level="4"><td data-activity-level="4"><td data-activity-level="2"><td data-activity-level="4"><td data-activity-level="4"><td data-activity-level="1"><td data-activity-level="2"><td data-activity-level="2"><td data-activity-level="4"><td data-activity-level="3"><td data-activity-level="4"><td data-activity-level="1"><td data-activity-level="4"><td data-activity-level="4"><td data-activity-level="4"><td data-activity-level="4"><td data-activity-level="4"><td data-activity-level="3"><td data-activity-level="2"><td data-activity-level="4"><td data-activity-level="1"><td data-activity-level="3"><td data-activity-level="2"><td data-activity-level="2"><td data-activity-level="1"><td data-activity-level="2"><td data-activity-level="1"><td data-activity-level="2"><td data-activity-level="2"><td data-activity-level="4"><td data-activity-level="2"><td data-activity-level="3"><td data-activity-level="4"><td data-activity-level="1"><td data-activity-level="1"><td data-activity-level="1"><td data-activity-level="4"><td data-activity-level="4"><td data-activity-level="2"><td data-activity-level="0"><td data-activity-level="4"><td data-activity-level="2"><td data-activity-level="4"><td data-activity-level="0"><td>
<tr><td class="activity-chart-label"><span></span><td data-activity-level="0"><td data-activity-level="2"><td data-activity-level="0"><td data-activity-level="1"><td data-activity-level="2"><td data-activity-level="0"><td data-activity-level="1"><td data-activity-level="1"><td data-activity-level="1"><td data-activity-level="1"><td data-activity-level="2"><td data-activity-level="0"><td data-activity-level="1"><td data-activity-level="0"><td data-activity-level="0"><td data-activity-level="0"><td data-activity-level="1"><td data-activity-level="1"><td data-activity-level="1"><td data-activity-level="0"><td data-activity-level="0"><td data-activity-level="4"><td data-activity-level="0"><td data-activity-level="0"><td data-activity-level="1"><td data-activity-level="0"><td data-activity-level="0"><td data-activity-level="0"><td data-activity-level="1"><td data-activity-level="1"><td data-activity-level="1"><td data-activity-level="1"><td data-activity-level="0"><td data-activity-level="0"><td data-activity-level="0"><td data-activity-level="0"><td data-activity-level="0"><td data-activity-level="0"><td data-activity-level="0"><td data-activity-level="0"><td data-activity-level="0"><td data-activity-level="0"><td data-activity-level="0"><td data-activity-level="0"><td data-activity-level="0"><td data-activity-level="0"><td data-activity-level="0"><td data-activity-level="0"><td data-activity-level="1"><td data-activity-level="0"><td data-activity-level="1"><td data-activity-level="0"><td>
</table>
<p>It stubbornly breaks the layout and looks even worse in source. One can filter by author or committer e-mail
address:
<pre>
$ activity -fsvg -Aplease@ignore.pl >../ignore.pl/generate_your_daily_commits_chart_now-4.svg
</pre>
<p>And then inlined into this blog post:</p>
<svg viewBox="0 0 663 95">
<defs>
<style type="text/css"><![CDATA[
.label { font: 11px sans-serif; }
.cell {
width: 11px;
height: 11px;
rx: 2px;
}
.cell.level0 { fill: #ccc; }
.cell.level1 { fill: #9be9a8; }
.cell.level2 { fill: #40c463; }
.cell.level3 { fill: #30a14e; }
.cell.level4 { fill: #216e39; }
]]></style>
</defs>
<g transform="translate(0,0)"><text y="10px" class="label"></text><rect class="cell level0" x="40"/><rect class="cell level0" x="52"/><rect class="cell level0" x="64"/><rect class="cell level0" x="76"/><rect class="cell level0" x="88"/><rect class="cell level0" x="100"/><rect class="cell level0" x="112"/><rect class="cell level0" x="124"/><rect class="cell level0" x="136"/><rect class="cell level0" x="148"/><rect class="cell level0" x="160"/><rect class="cell level0" x="172"/><rect class="cell level0" x="184"/><rect class="cell level0" x="196"/><rect class="cell level0" x="208"/><rect class="cell level0" x="220"/><rect class="cell level0" x="232"/><rect class="cell level0" x="244"/><rect class="cell level0" x="256"/><rect class="cell level0" x="268"/><rect class="cell level0" x="280"/><rect class="cell level1" x="292"/><rect class="cell level0" x="304"/><rect class="cell level0" x="316"/><rect class="cell level0" x="328"/><rect class="cell level0" x="340"/><rect class="cell level0" x="352"/><rect class="cell level0" x="364"/><rect class="cell level0" x="376"/><rect class="cell level0" x="388"/><rect class="cell level0" x="400"/><rect class="cell level0" x="412"/><rect class="cell level0" x="424"/><rect class="cell level0" x="436"/><rect class="cell level0" x="448"/><rect class="cell level0" x="460"/><rect class="cell level0" x="472"/><rect class="cell level0" x="484"/><rect class="cell level0" x="496"/><rect class="cell level0" x="508"/><rect class="cell level0" x="520"/><rect class="cell level0" x="532"/><rect class="cell level0" x="544"/><rect class="cell level0" x="556"/><rect class="cell level0" x="568"/><rect class="cell level0" x="580"/><rect class="cell level0" x="592"/><rect class="cell level0" x="604"/><rect class="cell level0" x="616"/><rect class="cell level0" x="628"/><rect class="cell level0" x="640"/></g>
<g transform="translate(0,14)"><text y="10px" class="label">Mon</text><rect class="cell level0" x="40"/><rect class="cell level0" x="52"/><rect class="cell level0" x="64"/><rect class="cell level0" x="76"/><rect class="cell level0" x="88"/><rect class="cell level0" x="100"/><rect class="cell level0" x="112"/><rect class="cell level0" x="124"/><rect class="cell level0" x="136"/><rect class="cell level0" x="148"/><rect class="cell level0" x="160"/><rect class="cell level0" x="172"/><rect class="cell level0" x="184"/><rect class="cell level0" x="196"/><rect class="cell level0" x="208"/><rect class="cell level0" x="220"/><rect class="cell level0" x="232"/><rect class="cell level0" x="244"/><rect class="cell level0" x="256"/><rect class="cell level0" x="268"/><rect class="cell level0" x="280"/><rect class="cell level4" x="292"/><rect class="cell level0" x="304"/><rect class="cell level0" x="316"/><rect class="cell level0" x="328"/><rect class="cell level0" x="340"/><rect class="cell level0" x="352"/><rect class="cell level0" x="364"/><rect class="cell level0" x="376"/><rect class="cell level0" x="388"/><rect class="cell level0" x="400"/><rect class="cell level0" x="412"/><rect class="cell level0" x="424"/><rect class="cell level0" x="436"/><rect class="cell level0" x="448"/><rect class="cell level0" x="460"/><rect class="cell level0" x="472"/><rect class="cell level0" x="484"/><rect class="cell level0" x="496"/><rect class="cell level0" x="508"/><rect class="cell level0" x="520"/><rect class="cell level0" x="532"/><rect class="cell level0" x="544"/><rect class="cell level0" x="556"/><rect class="cell level0" x="568"/><rect class="cell level0" x="580"/><rect class="cell level0" x="592"/><rect class="cell level0" x="604"/><rect class="cell level0" x="616"/><rect class="cell level0" x="628"/><rect class="cell level0" x="640"/></g>
<g transform="translate(0,28)"><text y="10px" class="label"></text><rect class="cell level0" x="40"/><rect class="cell level0" x="52"/><rect class="cell level0" x="64"/><rect class="cell level0" x="76"/><rect class="cell level0" x="88"/><rect class="cell level0" x="100"/><rect class="cell level0" x="112"/><rect class="cell level0" x="124"/><rect class="cell level0" x="136"/><rect class="cell level0" x="148"/><rect class="cell level0" x="160"/><rect class="cell level0" x="172"/><rect class="cell level0" x="184"/><rect class="cell level0" x="196"/><rect class="cell level0" x="208"/><rect class="cell level0" x="220"/><rect class="cell level0" x="232"/><rect class="cell level0" x="244"/><rect class="cell level0" x="256"/><rect class="cell level0" x="268"/><rect class="cell level0" x="280"/><rect class="cell level4" x="292"/><rect class="cell level0" x="304"/><rect class="cell level0" x="316"/><rect class="cell level0" x="328"/><rect class="cell level0" x="340"/><rect class="cell level0" x="352"/><rect class="cell level0" x="364"/><rect class="cell level0" x="376"/><rect class="cell level0" x="388"/><rect class="cell level0" x="400"/><rect class="cell level0" x="412"/><rect class="cell level0" x="424"/><rect class="cell level0" x="436"/><rect class="cell level0" x="448"/><rect class="cell level0" x="460"/><rect class="cell level0" x="472"/><rect class="cell level0" x="484"/><rect class="cell level0" x="496"/><rect class="cell level0" x="508"/><rect class="cell level0" x="520"/><rect class="cell level0" x="532"/><rect class="cell level0" x="544"/><rect class="cell level0" x="556"/><rect class="cell level0" x="568"/><rect class="cell level0" x="580"/><rect class="cell level0" x="592"/><rect class="cell level0" x="604"/><rect class="cell level0" x="616"/><rect class="cell level0" x="628"/><rect class="cell level0" x="640"/></g>
<g transform="translate(0,42)"><text y="10px" class="label">Wed</text><rect class="cell level0" x="40"/><rect class="cell level0" x="52"/><rect class="cell level0" x="64"/><rect class="cell level0" x="76"/><rect class="cell level0" x="88"/><rect class="cell level0" x="100"/><rect class="cell level0" x="112"/><rect class="cell level0" x="124"/><rect class="cell level0" x="136"/><rect class="cell level0" x="148"/><rect class="cell level0" x="160"/><rect class="cell level0" x="172"/><rect class="cell level0" x="184"/><rect class="cell level0" x="196"/><rect class="cell level0" x="208"/><rect class="cell level0" x="220"/><rect class="cell level0" x="232"/><rect class="cell level0" x="244"/><rect class="cell level0" x="256"/><rect class="cell level0" x="268"/><rect class="cell level0" x="280"/><rect class="cell level1" x="292"/><rect class="cell level0" x="304"/><rect class="cell level0" x="316"/><rect class="cell level0" x="328"/><rect class="cell level0" x="340"/><rect class="cell level0" x="352"/><rect class="cell level0" x="364"/><rect class="cell level0" x="376"/><rect class="cell level0" x="388"/><rect class="cell level0" x="400"/><rect class="cell level0" x="412"/><rect class="cell level0" x="424"/><rect class="cell level0" x="436"/><rect class="cell level0" x="448"/><rect class="cell level0" x="460"/><rect class="cell level0" x="472"/><rect class="cell level0" x="484"/><rect class="cell level0" x="496"/><rect class="cell level0" x="508"/><rect class="cell level0" x="520"/><rect class="cell level0" x="532"/><rect class="cell level0" x="544"/><rect class="cell level0" x="556"/><rect class="cell level0" x="568"/><rect class="cell level0" x="580"/><rect class="cell level0" x="592"/><rect class="cell level0" x="604"/><rect class="cell level0" x="616"/><rect class="cell level0" x="628"/><rect class="cell level0" x="640"/></g>
<g transform="translate(0,56)"><text y="10px" class="label"></text><rect class="cell level0" x="40"/><rect class="cell level0" x="52"/><rect class="cell level0" x="64"/><rect class="cell level0" x="76"/><rect class="cell level0" x="88"/><rect class="cell level0" x="100"/><rect class="cell level0" x="112"/><rect class="cell level0" x="124"/><rect class="cell level0" x="136"/><rect class="cell level0" x="148"/><rect class="cell level0" x="160"/><rect class="cell level0" x="172"/><rect class="cell level0" x="184"/><rect class="cell level0" x="196"/><rect class="cell level0" x="208"/><rect class="cell level0" x="220"/><rect class="cell level0" x="232"/><rect class="cell level0" x="244"/><rect class="cell level0" x="256"/><rect class="cell level0" x="268"/><rect class="cell level0" x="280"/><rect class="cell level3" x="292"/><rect class="cell level0" x="304"/><rect class="cell level0" x="316"/><rect class="cell level0" x="328"/><rect class="cell level0" x="340"/><rect class="cell level0" x="352"/><rect class="cell level0" x="364"/><rect class="cell level0" x="376"/><rect class="cell level0" x="388"/><rect class="cell level0" x="400"/><rect class="cell level0" x="412"/><rect class="cell level0" x="424"/><rect class="cell level0" x="436"/><rect class="cell level0" x="448"/><rect class="cell level0" x="460"/><rect class="cell level0" x="472"/><rect class="cell level0" x="484"/><rect class="cell level0" x="496"/><rect class="cell level0" x="508"/><rect class="cell level0" x="520"/><rect class="cell level0" x="532"/><rect class="cell level0" x="544"/><rect class="cell level0" x="556"/><rect class="cell level0" x="568"/><rect class="cell level0" x="580"/><rect class="cell level0" x="592"/><rect class="cell level0" x="604"/><rect class="cell level0" x="616"/><rect class="cell level0" x="628"/><rect class="cell level0" x="640"/></g>
<g transform="translate(0,70)"><text y="10px" class="label">Fri</text><rect class="cell level0" x="40"/><rect class="cell level0" x="52"/><rect class="cell level0" x="64"/><rect class="cell level0" x="76"/><rect class="cell level0" x="88"/><rect class="cell level0" x="100"/><rect class="cell level0" x="112"/><rect class="cell level0" x="124"/><rect class="cell level0" x="136"/><rect class="cell level0" x="148"/><rect class="cell level0" x="160"/><rect class="cell level0" x="172"/><rect class="cell level0" x="184"/><rect class="cell level0" x="196"/><rect class="cell level0" x="208"/><rect class="cell level0" x="220"/><rect class="cell level0" x="232"/><rect class="cell level0" x="244"/><rect class="cell level0" x="256"/><rect class="cell level0" x="268"/><rect class="cell level0" x="280"/><rect class="cell level3" x="292"/><rect class="cell level0" x="304"/><rect class="cell level0" x="316"/><rect class="cell level0" x="328"/><rect class="cell level0" x="340"/><rect class="cell level0" x="352"/><rect class="cell level0" x="364"/><rect class="cell level0" x="376"/><rect class="cell level0" x="388"/><rect class="cell level0" x="400"/><rect class="cell level0" x="412"/><rect class="cell level0" x="424"/><rect class="cell level0" x="436"/><rect class="cell level0" x="448"/><rect class="cell level0" x="460"/><rect class="cell level0" x="472"/><rect class="cell level0" x="484"/><rect class="cell level0" x="496"/><rect class="cell level0" x="508"/><rect class="cell level0" x="520"/><rect class="cell level0" x="532"/><rect class="cell level0" x="544"/><rect class="cell level0" x="556"/><rect class="cell level0" x="568"/><rect class="cell level0" x="580"/><rect class="cell level0" x="592"/><rect class="cell level0" x="604"/><rect class="cell level0" x="616"/><rect class="cell level0" x="628"/><rect class="cell level0" x="640"/></g>
<g transform="translate(0,84)"><text y="10px" class="label"></text><rect class="cell level0" x="28"/><rect class="cell level0" x="40"/><rect class="cell level0" x="52"/><rect class="cell level0" x="64"/><rect class="cell level0" x="76"/><rect class="cell level0" x="88"/><rect class="cell level0" x="100"/><rect class="cell level0" x="112"/><rect class="cell level0" x="124"/><rect class="cell level0" x="136"/><rect class="cell level0" x="148"/><rect class="cell level0" x="160"/><rect class="cell level0" x="172"/><rect class="cell level0" x="184"/><rect class="cell level0" x="196"/><rect class="cell level0" x="208"/><rect class="cell level0" x="220"/><rect class="cell level0" x="232"/><rect class="cell level0" x="244"/><rect class="cell level0" x="256"/><rect class="cell level0" x="268"/><rect class="cell level0" x="280"/><rect class="cell level0" x="292"/><rect class="cell level0" x="304"/><rect class="cell level0" x="316"/><rect class="cell level0" x="328"/><rect class="cell level0" x="340"/><rect class="cell level0" x="352"/><rect class="cell level0" x="364"/><rect class="cell level0" x="376"/><rect class="cell level0" x="388"/><rect class="cell level0" x="400"/><rect class="cell level0" x="412"/><rect class="cell level0" x="424"/><rect class="cell level0" x="436"/><rect class="cell level0" x="448"/><rect class="cell level0" x="460"/><rect class="cell level0" x="472"/><rect class="cell level0" x="484"/><rect class="cell level0" x="496"/><rect class="cell level0" x="508"/><rect class="cell level0" x="520"/><rect class="cell level0" x="532"/><rect class="cell level0" x="544"/><rect class="cell level0" x="556"/><rect class="cell level0" x="568"/><rect class="cell level0" x="580"/><rect class="cell level0" x="592"/><rect class="cell level0" x="604"/><rect class="cell level0" x="616"/><rect class="cell level0" x="628"/><rect class="cell level0" x="640"/></g>
</svg>
<h2>Generate Your Own</h2>
<p>You can grab the tool from its repo <a href="https://git.ignore.pl/activity/">activity</a>. All you need is Lua,
Penlight and Git. Go check it out! I'm waiting for your feedback and patches.
</article>
<script src="https://stats.ignore.pl/track.js"></script>
|