2024 Git wrapped
As last year, I have gathered all relevant Git repositories I've contributed to this year, and done basic calculations.
Again, the target audience of this article is me in the future.
Note on how I interpret the data
I am using the word "productivity" as a proxy for "# of authored commits". I am very much aware it's not that simple, and I'm totally ignoring the fact that no two commits are equal and that they require significantly different amount of work done.
When comparing the numbers, I'm trying to look for trends, and I hope that the sample size of work done over the whole year is large enough to smooth out the largest outliers.
Gathering the data
I've used the script I wrote in 2023. It is still ugly.
The data
Since I have not changed what I'm observing, I can do comparisons.
Metric | 2024 | 2023 |
---|---|---|
Git identities | 6 | 6 |
Git repositories I've contributed to | 37 | 43 |
Commits I've authored | 664 | 1 117 |
Last year, I've written:
I know there is a way to convert extensions to MIME types or something human friendly, but again, the plan is to run this once a year, I can do the additional deduplication and clean up myself.
It would have been nice to not have to sum it up manually. Oh well.
Language breakdown
The following table contains lines added per language/document format. The ratios of removed lines roughtly match lines added, they have been excluded for simplicity.
Language | 2024 | 2023 |
---|---|---|
.gitconfig | 164 | 35 |
Bash | 2 165 | 1 906 |
BibTeX | - | 3 106 |
C | 6 | - |
Caddyfile | 88 | 15 |
Containerfile | 236 | 23 |
CSS | 654 | 598 |
Go | 8 108 | 9 825 |
Hare | - | 3 441 |
HTML | 638 | 624 |
INI | 93 | 222 |
Jinja2 | - | 118 |
JSON | 526 | 3 184 |
Makefile | 550 | 400 |
Markdown | 4 886 | 3 236 |
Plaintext | 6 355 | 2 380 |
Python | 59 049 | 27 022 |
ReStructured Text | - | 507 |
RPM .spec | 998 | 1 |
Rust | 4 853 | - |
Systemd service | 545 | 8 |
LaTeX | - | 9 225 |
TikZ | - | 300 |
Typst | 274 | - |
TOML | 298 | 264 |
YAML | 4 539 | 5 459 |
XML | 480 | - |
Generic configuration | 1 187 | 309 |
Unknown | 119 | 5 459 |
total | 119 305 | 73 882 |
Time breakdown
What the tables show
Since the total numbers of commits and lines of code differ a lot between 2023 and 2024, I express every time unit as a fraction # of commits per unit/total commit #. This makes it easier to show trends even if the total activity wasn't the same.
By weekday
I've definitely handled work-life balance better, the weekend work has gone significantly down. I would like to carry this over into 2025. While it is mostly caused by life reasons, I think making the brain focus on different types of activities mostly payed off.
Day | 2024 | 2023 |
---|---|---|
Mon | 21 % | 15 % |
Tue | 19 % | 14 % |
Wed | 15 % | 14 % |
Thu | 17 % | 18 % |
Fri | 14 % | 16 % |
Sat | 6 % | 12 % |
Sun | 9 % | 11 % |
By month
I'm not sure if there's any takeaway from the following table. I'd say the numbers pretty much reflect the energy I've had during the year, and amount of problems at work I've had to deal with.
Month | 2024 | 2023 |
---|---|---|
Jan | 6 % | 7 % |
Feb | 9 % | 13 % |
Mar | 10 % | 15 % |
Apr | 5 % | 12 % |
May | 7 % | 5 % |
Jun | 3 % | 8 % |
Jul | 6 % | 7 % |
Aug | 11 % | 12 % |
Sep | 13 % | 7 % |
Oct | 10 % | 5 % |
Nov | 8 % | 5 % |
Dec | 12 % | 3 % |
By hour of the day
I have made at least one commit for every hour of the day in 2024.
Timespan | 2024 | 2023 |
---|---|---|
0-6 | 2.3% | 4.8% |
7-12 | 13.5% | 23.7% |
13-19 | 42.3% | 50.1% |
20-24 | 13.0% | 20.6% |
It is interesting to see that my morning at-work productivity has not changed, and the productivity done after lunch has gone up, taking from what I would have been doing off-hours.
Timespan (workdays) | 2024 | 2023 |
---|---|---|
0-6 | 2.8% | 4.5% |
7-12 | 25.8% | 25.6% |
13-19 | 63.1% | 51.1% |
20-24 | 8.3% | 18.9% |
In 2024, the most likely nights to code were Tuesdays (11 commits out of 19 in total). Days where I'd complete the development before going to sleep shortly after midnight were Saturdays, Fridays and one Wednesday.
I haven't made a single commit between 0 and 6 AM on Monday and Sunday, and the least likely evening to do work are Thursdays (2 commits out of 71).
Use-case breakdown
Since I can isolate some repositories from others, I can separate the work I've done for myself with the one done for the job.
Metric | Work | Personal |
---|---|---|
New lines | 83 802 | 38 789 |
Languages used | ~16 | ~14 |
Most productive day | Mon, Tue, Thu | Sun, Sat, Tue |
Most productive hour | 17, 16, 14 | 23, 21, 20 |
The month-based breakdown is interesting it deserves its own table:
Month | Work | Personal |
---|---|---|
Jan | 6 % | 5 % |
Feb | 14 % | 0 % |
Mar | 12 % | 4 % |
Apr | 8 % | 1 % |
May | 5 % | 11 % |
Jun | 5 % | 1 % |
Jul | 6 % | 7 % |
Aug | 10 % | 14 % |
Sep | 14 % | 7 % |
Oct | 8 % | 13 % |
Nov | 7 % | 8 % |
Dec | 4 % | 30 % |
I only have partial explanation for the May/Personal outlier, I don't remember what happened, and updating my git queries to list all commits from that period is something I'm too lazy to do as I'm writing this.
Thoughts
Last year I asked myself:
How much is 1 117 commits?
Looking at the first comparison: quite a lot. But at the same time, the total number of lines changed was half last year, suggesting more debugging or more intricate work, while this year I feel I must have built a lot of new projects, apparently.
2024 has definitely been about shutting down and reflecting on the life I live.