Amakuru.net

David Morel — Staff Data Platform Engineer & Digital Garden

9 to 5 & After Hours.

Data pipelines by day, Mac apps and Python tools by night — I write from Amsterdam (sometimes Lyon) about what I build on either side of the working day. Data platforms that have to scale and weekend tools that only have to please one person; the story behind each one — why it exists, what shaped it, what it taught me.

After Hours Nº 036
Nº 036 Five small tools for daily annoyances
Nov 2026 ✱
Nº 036 — Lead

A Mac app to keep track of every git repository, a terminal view of the pull requests waiting on me, an on-device translation service, a calibre plugin and a VS Code extension — all built with Claude Opus 5, some of them in a few minutes.

Every working day has its small frictions, the kind you stop noticing because fixing them never seemed worth the effort. Between June and November 2026 I fixed five of mine, with Claude Opus 5 doing most of the writing. A calibre plugin or a VS Code extension used to mean learning an API I would never touch again, for a gain of a few seconds a day; now a small program or a configuration tweak costs about as much as describing what bothers me.

git-roster is the one that grew into a real application. I work across a lot of repositories, personal and professional, and kept discovering too late that one of them was behind its remote or had changes I had forgotten about. GitRoster is a single macOS window listing all of them, with the branch and its state on each row, a click away from opening any of them in my git client, a terminal, the editor or the browser. It pulls and pushes when the

· Read the whole story →

The rest of the archive
  1. Nº 030 Confetti, a Google Keep of my own
  2. Nº 029 When there is no Terraform provider: a Power BI integration that would not go quietly
  3. Nº 028 Life after Gmail: cleaning up the migration mess with a few scripts
  4. Nº 027 A lean Claude Code setup that fits in a dotfiles repo
  5. Nº 026 Moving Immich from a Mac to a single-node k3s cluster
  6. Nº 025 Migrating a 35-million-row dbt project from Athena to Databricks
  7. Nº 024 When `dbt test` isn't enough: validating a migration table by table
  8. Nº 023 A CLI for Cloudflare email routing, because the dashboard does not scale
  9. Nº 022 MailAvatars: putting faces on the people who actually email you
  10. Nº 021 Stateful services on AWS: parameter groups, audit logging, and a backup you actually trust
  11. Nº 020 Tabs Exposé: a macOS-style overview for Chrome and Brave
  12. Nº 019 Where's My Money: a local-first personal finance tracker
  13. Nº 018 A serious data warehouse on GitHub Actions and dbt — without an orchestrator
  14. Nº 017 A high-throughput JSON ingestion pipeline, built one bottleneck at a time
  15. Nº 016 A reproducible Claude Code dev container
  16. Nº 015 A cronjob framework on GitHub Actions: turning 150-line workflows into 10-line specs
  17. Nº 014 A CPAN module written entirely by Claude — and the test suite that proves it
  18. Nº 013 Reorganising a Lightroom catalog from the command line
  19. Nº 012 Async ML inference under three hostile constraints
  20. Nº 011 Captioning and tagging my Lightroom catalog with local vision models
  21. Nº 010 Photo Metadata Viewer: a small, fast EXIF inspector for macOS
  22. Nº 009 A whole Auth0 tenant in Pulumi: importing the live system, then making it portable
  23. Nº 008 NearbyDevices: a menu-bar map of everything on your network
  24. Nº 007 Git Remote Open: a Finder Quick Action that gets you to the file on the web
  25. Nº 006 Git-aware AWS resource tagging in 370 lines of Python
  26. Nº 005 Algorithm::TimelinePacking: arranging overlapping intervals into lanes
  27. Nº 004 Pulling every PDF out of a Gmail label, one folder per month
  28. Nº 003 CloudWatch to Loki via Lambda: cutting log spend without losing fidelity
  29. Nº 002 Parquet Viewer: a small DuckDB-powered Mac app for inspecting Parquet files
  30. Nº 001 A menu bar app for the VPNs macOS forgot
} }