This site's Git history dates back to April 2018. Three stacks, a few long silences, and some commit messages I'd rather you didn't see. I'm going to show them anyway because the mistakes turned out to matter most.
It started as a Jekyll static site on GitHub Pages. In 2019 I rewrote it in PHP and moved it to my own server. This year it became what it is today: a Vue 3 + TypeScript SPA with a PHP API behind it. Same domain, same person, completely different codebase. The difference is obvious at a glance:
Exhibit A: "please work v5"
On December 2, 2022, I tried to fix image lazy loading for cached images. The commit log for that single day reads: fix lazy loading … please work … please work v2 … v3 … v4 … please work v5. Seven commits, one bug, zero dignity.
The bug wasn't the problem. The problem was that my only way to test the fix was to deploy it. Two days later, the log shows the actual lesson: "improve deploy: have a rollback option if build fails." Not a smarter fix, but a better feedback loop. That's the pattern I keep relearning: when you catch yourself praying in a commit message, the thing to fix is rarely the code. It's the loop around the code.
Exhibit B: the mistake I made five times
The production runtime is pinned to a specific language version. My local toolchain isn't, so it happily accepts syntax that the pin doesn't allow. I have known about that gap since 2019. And yet, this spring the history shows me walking straight into it five separate times, each one breaking production, each one followed by a commit whose entire message is a variation on the same apology: revert that, use the supported form instead, fix the entity to match the server.
After the fifth time, I finally stopped trusting my memory: I wrote the constraint into the project docs and pointed static analysis at it, so the build fails before the server can. I haven't made that mistake since, not because I got smarter, but because I made it impossible.
The same shift shows up throughout the recent history. In 2019, I committed "hope that chrome audit is all green :D". This year, the site runs automated accessibility tests on every change and even has a live audit built into the examples page:
The point
Nothing in this repo is impressive on its own. What I like about it is that every ugly commit is still there, and each one bought something: a rollback button, a static analysis rule, a test suite, a habit. If your Git history looks embarrassing, good: it means the lessons were real. Just make sure each mistake leaves a guardrail behind so you get to make new ones next time.




Top comments (0)