Yo, back to journaling. I need to write this down before I forget what it felt like.
As everyone else in this rat race, in the last six weeks I shipped more than I could imagine a couple of years ago. Ten projects across five languages, one of them involving actual hardware on my desk. I was assisted by AI in all of them, and I’ve spent some time wrestling with what that means for my future self. I’ll get to that. Enjoy the memes. But first, the inventory.
What I built

-
Dustrown - A dead simple Markdown viewer with a real GUI, written in Rust. The goal wasn’t the app itself but understanding how to build a native GUI application in Rust. But the initial motivation, and that’s why I am also proudly using it for reading .md files now, was exactly that: I wanted a simple enough application to render Markdown files with a Github style in my Linux desktop. I got there.
-
EMT Bus RTT - A webapp with a map showing real-time bus arrival information for Madrid’s public network. This one was a stepping stone: I want to build something like this transit tracker, but I needed a reliable system to pull transit data first. This is that system. In the meantime, I build and deployed a frontend app on top of it to use it through a browser: https://emt.hal9.xyz/
-
Ferrum (private repo) - AI-powered iron tracking for people managing anemia. Take a photo of a meal, get an iron content estimate. Built in Rails. The real goal was exploring AI-based flows for extracting structured information from unstructured input; food habits were an interesting domain to do that. Latest version ships features to also extract more nutrients and calories from the food.
-
Musync (private) — A single-binary music library organizer written in Go. It classifies albums into genres and subgenres, then reorganizes them into a clean
Genre/Subgenre/Artist/Album (Year)/folder structure. I have a massive collection. Now it’s organized. -
Hackbox - A privacy-first website with simple tools for mundane developer tasks: timestamp conversion, UUID generation, base64 encoding, and so on. Built it because I happen to visit old sites for these tasks and they were drowning in tracking and cookies. Zero analytics, zero data collection. Simple but useful.
-
Harvest - A compact idle simulation game in JavaScript. My first game. Idle games are simple enough to design that they’re a good entry point - the mechanics are constrained and the feedback loop is clear. I wanted to understand what building a game actually felt like.
-
cpu-ruststats - Two small Rust binaries for monitoring CPU usage and system temperatures, with ASCII sparklines and warning/critical thresholds. Designed to plug into i3blocks/i3status. I claimed it “vibe coded” in the README because I had zero Rust experience going in - but it works, it has proper CLI flags, and it lives in my status bar. Counts as shipped.
-
journal-rb - A minimal static site generator that converts Markdown posts to HTML. Yes, Jekyll exists. I wanted something completely tailored to my needs. You’re reading a post generated by it right now.
-
retro-digital-diary-lcd - MicroPython software to control a custom digital diary built on a Raspberry Pi Pico with a 128x64 LCD display and a CardKB mini keyboard. Inspired by the Casio agendas I loved as a kid. I also designed and printed a 3D enclosure for it. It’s sitting on my desk, it works, and it’s incomplete. Easily my most personal project of the batch.
The unfinished one
Started, learned something, moved on.
Why so much, why now (or why I need to write this)
The AI gap is real and it’s widening quick. The honest answer is that I could not have done this at this pace without it. Rust GUI, Go binaries, Rails AI flows, MicroPython on constrained hardware; I was navigating through kinda unfamaliar waters in some projects, and AI shrunk the learning curve, skipped the empty slate moment for everything. It wasn’t easy tho.
I want to be precise about what that means, because I spent some time asking what is my role, or what will be my role with all this power.
AI scaffolded a lot of boilerplate. It suggested patterns. Assisted my chaotic curiosity. It helped me move fast through the parts that are tedious to write but easy to verify and reliable to delegate. I don’t claim (God forbid me) to know how to program using Rust by doing that, but it’s clear that it is helping me to expand my areas of interest, lowering the barrier entry for those like me. And, for someone like me, it’s an amazing experience. I am also not oblivious to the risks of those empowering feelings. What it couldn’t do was tell me what to build, or why. It couldn’t decide that I needed a reliable data layer before building the transit tracker, based on Madrid current availability. It couldn’t know how I wanted a Casio agenda. It couldn’t catch the MicroPython-specific memory constraints on the Pico, where the training data gets thin fast and real debugging takes over (althought this last thing won’t last too much)
At this point, I stop and think. The judgment and curiosity is mine, reasonably gained through more than 12 years of experience in the field. The ten different itches that produced ten different projects, that’s not something you can simply prompt and wait to happen.

ahh, the classic memes
What I learned (a frivolous list, but tried to keep it simple)
-
Rust is worth it. The learning curve is there, but the mental model it forces is valuable even when I’m not writing Rust, and enjoy this payoff. But please, don’t take me too seriously.
-
Go for binaries. Musync needed to be a single binary that just worked and was faster than Python, because of the volume of the data. Go was the right call and efficient for file manipulation.
-
Build your dev tooling first. The simulator I built for the retro diary (run the whole thing on a PC with
SIM=1 python3 main.py) saved enormous time. Hardware feedback loops are slow; abstracting them away early was the right move. -
Nostalgia is a interesting (but also hackneyed) starting point. Some of my most focused work came from chasing a feeling rather than solving a defined problem. Still, hey, it works for me.
-
Idle games are harder to balance than they look. The mechanics are simple but the feedback loops require more thought than I expected.
What’s next
The retro diary needs more software work before the enclosure redesign makes sense. EMT Bus RTT needs to become the actual transit tracker I had in mind. Ferrum and Musync are private but both functional enough to use.
And I need to write proper journal entries for all of these. Which is exactly what I’m doing.