summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAki <please@ignore.pl>2024-02-11 21:10:00 +0100
committerAki <please@ignore.pl>2024-02-11 21:09:52 +0100
commit54e9ce8c71373bec26668f2dbebc282ab88985b4 (patch)
treeb27e9311f53f1c4edb4300f74da55e45b0e0ed42
parent05ce506927de1e8ebef7fe32e35667d48f362cdf (diff)
downloadignore.pl-54e9ce8c71373bec26668f2dbebc282ab88985b4.zip
ignore.pl-54e9ce8c71373bec26668f2dbebc282ab88985b4.tar.gz
ignore.pl-54e9ce8c71373bec26668f2dbebc282ab88985b4.tar.bz2
Published Activity blog post
-rw-r--r--generate_your_daily_commits_chart_now-1.pngbin0 -> 30416 bytes
-rw-r--r--generate_your_daily_commits_chart_now-2.pngbin0 -> 110287 bytes
-rw-r--r--generate_your_daily_commits_chart_now.html122
-rw-r--r--index.html2
4 files changed, 124 insertions, 0 deletions
diff --git a/generate_your_daily_commits_chart_now-1.png b/generate_your_daily_commits_chart_now-1.png
new file mode 100644
index 0000000..5120237
--- /dev/null
+++ b/generate_your_daily_commits_chart_now-1.png
Binary files differ
diff --git a/generate_your_daily_commits_chart_now-2.png b/generate_your_daily_commits_chart_now-2.png
new file mode 100644
index 0000000..0637ff4
--- /dev/null
+++ b/generate_your_daily_commits_chart_now-2.png
Binary files differ
diff --git a/generate_your_daily_commits_chart_now.html b/generate_your_daily_commits_chart_now.html
new file mode 100644
index 0000000..bafc86e
--- /dev/null
+++ b/generate_your_daily_commits_chart_now.html
@@ -0,0 +1,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 &gt;generate_your_daily_commits_chart_now-1.svg &lt;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 &gt;../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 &gt;../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>
diff --git a/index.html b/index.html
index 18a7b7c..cd1b11d 100644
--- a/index.html
+++ b/index.html
@@ -19,6 +19,8 @@
<section id="posts">
<h2>posts</h2>
<ul>
+<li> <a href="generate_your_daily_commits_chart_now.html">Generate Your Daily Commits Chart Now</a><br>
+ <time>11 February 2024</time>
<li> <a href="my_server_keeps_turning_off.html">My Server Keeps Turning Off!</a><br>
<time>26 January 2024</time>
<li> <a href="make_to_act_only_on_modified_files_from_prerequisites.html">Make to Act Only on Modified Files From