21 December 2025
Lately I’ve been creating and using personal software in a different way, and it has become a pattern: Git to store and sync, Markdown to write, and a few tiny scripts to glue everything together. No frameworks, no databases, no vendors. Writing it down might help anyone who wants a simple, portable setup they fully own, so here we go!
How it started
It all started with Obsidian, my note system. It isn’t anything fancy: just a private repo on GitHub. I still use the mobile app, but after a while I dropped the desktop app and switched to Neovim with this community Obsidian LSP.
Having the same setup to manage my notes and write code makes my lif…
21 December 2025
Lately I’ve been creating and using personal software in a different way, and it has become a pattern: Git to store and sync, Markdown to write, and a few tiny scripts to glue everything together. No frameworks, no databases, no vendors. Writing it down might help anyone who wants a simple, portable setup they fully own, so here we go!
How it started
It all started with Obsidian, my note system. It isn’t anything fancy: just a private repo on GitHub. I still use the mobile app, but after a while I dropped the desktop app and switched to Neovim with this community Obsidian LSP.
Having the same setup to manage my notes and write code makes my life easier. Using Git to sync between machines is pretty natural, even on the phone using Termux and a simple Bash script launched from a homescreen shortcut.
Every day the app on the phone generated a new entry from a template with the tasks I do and the sections I like to keep updated.
But I wanted entries from my calendars too, so I vibe-coded a simple Python script that reads from Google Calendar and creates the file. Every day a GitHub Actions workflow generates the file at 4:00 AM and commits to GitHub. This could be done in a million ways, but this one was particularly easy and works well.
That project I never had time for
After that, I decided I also wanted a daily report of the news I follow: BlueSky, blogs, releases on GitHub, etc. I guess I still miss Google Reader. Again, I created a repo on GitHub, vibe-coded a couple of Python scripts, a daily GitHub Actions workflow, and an HTML page (I wrote about PWAs recently), and I have now my own site of news curated for me. I’m even using GitHub AI models to summarize the longer entries. It couldn’t be easier!

Finally, I did the same with my blog. Dealing with Hugo (and don’t ask me about JBake) was frustrating and time-consuming. Now it’s just a couple of vibe-coded Python scripts with uv, and it’s done. I also added RSS and comments from Leaflet (big thanks to SharpMars for the idea!). Combining this approach with at-proto services like BlueSky or Leaflet is great. At-proto gives me ownership of the data I share with others. Git keeps me portable: I can move easily to any Git host (GitHub, Tangled, whatever comes next) and I can host it with GitHub Pages or Cloudflare Pages on my own domain. I can evolve the setup with the functionality that matters to me and I’m the owner of the whole thing. I don’t depend on a company and I’m not exposed to ads in the process. The stack is boring by design: text files, Git history, and a browser. That keeps the surface small, the backups easy, and the odds of future breakage low.
This setup also works great with the GitHub app. I use it to navigate the repo, search, make changes, or explore my notes with an AI agent in the GitHub mobile app. I can launch a GitHub Actions workflow to publish the blog or reload articles in my news. I can also easily launch AI agents to do minor tasks like add new sources or correct typos in the blog. All from my phone!
This is another advantage of this setup: it allows me to explore AI tools with total freedom. The tasks are simple enough that I can try different approaches and switch between tools, which gives me good insights into what LLMs can do nowadays. I use them a lot at work, but with my side projects it feels different because I allow myself to explore more. I’m not as focused on delivering and making sure nothing breaks in the process. If I break my blog or my news site, it isn’t a big deal. Also, the setup is straightforward and simple, so it’s easier to understand what the AI agent is doing, why, and how it could be done. That’s much harder in big projects with many libraries and frameworks.
Finally, hosting those pages on Cloudflare works really well. It’s very cheap, essentially just the cost of the domain. And if you want to keep a page private, you can use a private Git repo and configure Cloudflare to serve it with authentication via various identity providers. This is quite complicated with Google Cloud or GitHub Pages, but Cloudflare makes it really easy.
AI is changing how we consume software
None of this is rocket science. It breaks fairly often, but it’s easy to fix: a quick prompt and a code agent usually solve it. When something fails, I paste the error into an AI prompt, get a patch, and move on. Most issues are wiring problems, not architecture problems, so the fixes are fast.
The same pattern shows up on my workstation. I tried several apps to lower the burden of reviewing PRs. I even used prr, but having to create a personal token was a problem. Nowadays I use a Bash script with the GitHub CLI to review PRs. It allows me to review PRs quickly and properly from the terminal. I can’t live without it!
With more software than ever, my bar to install something new is ridiculously high. Most of what a fancy app offers I can get with the tools I’ve always used (Neovim, Alacritty, Zellij, and Firefox) plus a handful of vibe-coded scripts. It’s easier for me because I don’t have to learn another tool, and easier for the agent because it already knows how to work with these boring, well-known ones. It’s almost 2026 and I spend the majority of my time in the terminal. The only app I keep open all day is Slack, and thanks to Recap (summary of muted channels) I spend less time in it than ever.
These simple utilities shape how I see the future of software: solid building blocks, open source, highly adaptable to the user, and easy to wire together with Git and Markdown. It is often faster to vibe-code a 30-line script than to bend a complex app like Hugo or a full IDE into doing what you want. Owning the small pieces keeps you in control and keeps the stack understandable years later.
I’m not the only one noticing this: devs creating a shopping list app in the grocery store or a timing app to cook two recipes at once in the kitchen are good examples of this trend. We are entering a new era in terms of productivity that requires a totally different mindset. Things in the past looked impossible, like writing your own language, are doable now. It’s exciting and, at the same time, a bit scary.
