Andreas Flakstad

Posts · Email

Shhh, Don't Put Secrets in the Repo

Let’s talk about app config and secrets.

Every web app needs a port, URLs, feature flags, API keys, OAuth secrets, maybe a service account JSON file, maybe a certificate and key.

Some values come from environment variables. Some come from local files. Some are defaults. Some are fetched from a secret manager. Some need to be written as files because the library using them expects a path.

The common answer I’ve been exposed to is to make the app orchestrate all of this. Add a config library and teach it where to look.

Well, that works, but now startup has its own rules. Does the env var override the file? Does the local profile override the default? Does the cloud secret replace the local one? To understand how the program starts, I have to understand the precedence rules inside the app.

From 308MB to 41MB: shrinking a GraalVM native image

A short, practical recipe for getting smaller Clojure native binaries with GraalVM native-image. Prompted by ongoing work building Ro, a local-first work system with web, CLI and TUI interfaces.

These are the biggest levers I found doing this work initially. There are many other config flags and approaches to take to bring this down further, and I will likely explore them more as the project matures.

Baseline observation building a native image of the project on macOS:

ls -lh ~/.local/bin/ro
# -rwxr-xr-x ... 308M ... ~/.local/bin/ro

Goal: reduce size without breaking runtime behavior.

Keyboard-First Outlining

For as long as I’ve had to manage projects, I’ve disliked the tools built for the job. Notion, Asana, Trello, Jira, ..all powerful, but also bloated, complicated, and designed around the mouse. Basecamp is a nice breath of fresh air with it’s relative simplicity and focus on communication, but still falls short of the fluid keyboard-driven workflow I’ve always wanted.

Meanwhile, I kept coming back to my old favorite: Emacs org-mode. Org has everything I love: hierarchical outlines, flexible todos, notes, deadlines, and lightning-fast keyboard navigation. The problem is, it’s not built for teams. Nobody else can easily see your progress. You end up either isolated in your org files or forced back into the big, bloated tools.

What I really want is simple: the speed and focus of org-mode combined with the visibility and integration of a web app. None of the existing tools strike this balance, so I’ve started building my own. The long-term vision is a complete project management tool shaped by these principles, but the first step is modest: an outline component for the web, inspired by org-mode.

The Creator’s Oath

A manifesto for principled software builders who honor craft, integrity, and the user’s freedom.

This is a manifesto for creators who refuse to build noise. It is an oath to create only what is worthy. For ourselves. For those who value their time. For a world that deserves better tools. To build software that empower users, respect their freedom, and endures beyond fleeting trends.