Blog
Tutorials, tool deep-dives, and hot takes on indie development, open source, and the tools I build.
No blogs match . Try a different keyword or filter.
Structured prompts for AI: stop hand-editing JSON and XML at midnight
Why structured prompts matter for parseable AI output, what goes wrong when you maintain them by hand, and a practical way to build JSON or XML prompt contracts.
How to extract design tokens from any website
A practical guide to pulling colors, typography, and CSS variables from live sites - without screenshot guesswork or uploading pages to a random server.
Chat apps keep your files forever. Temporary file sharing does not.
Messaging apps are archives by design. Here is why that is a bad default for IDs, docs, and one-off handoffs - and what temporary file sharing should mean.
Converting code between languages - what actually works
Realistic cross-language conversion: what converters are good for, where they fail, and a review workflow that keeps ports honest.
How to generate MD5, SHA-256, and SHA-512 hashes (without shipping secrets to a server)
A practical hash tutorial: what digests are for, when to use MD5 vs SHA-256 vs SHA-512, and how to hash safely in the browser.
How to make a custom QR code with colors and a logo (and still scan)
A step-by-step how-to for branded QR codes: contrast, logos, testing before print, and avoiding free-tool traps - without an account wall.
Why does publishing something online require an account? It didn't used to.
The account requirement for posting online is a relatively recent default. Here's why it happened, what it costs, and what no-account publishing looks like.
Why people want to be anonymous online: and when it's actually reasonable
Anonymity online gets treated as suspicious. The reality is most reasons people want it are completely normal.
You're sharing more than you think: a practical guide to digital privacy
Not a paranoia guide. Just a realistic look at what data you're giving away daily and which habits actually make a difference.
Why your Android app keeps getting rejected from the Play Store
Play Store rejections are frustrating because the rejection reasons are vague. Here are the actual causes behind the most common ones and how to fix them.
Where Does Your WhatsApp Photo Actually Go After You Send It?
You send a photo and move on. But that image may end up on phones, backups, and cloud storage you never think about. Here's what actually happens.
SHA256 vs MD5 vs SHA512: which one should you actually use?
A straightforward breakdown of the three most common hash algorithms, what makes them different, and when each one is the right choice.
I got tired of chat apps keeping my files forever. So I built Blink.
Most messengers treat every attachment like permanent data. Here is why I built an Android app for temporary file sharing instead.
AI can generate apps now. Here's what that actually means for Flutter developers.
Google AI Studio and others can now spit out native app code. I've been watching this closely as someone who builds Flutter apps. My honest take.
Why I built a blogging platform that doesn't know who you are
Echo lets you publish without an account, email, or identity. Here's the thinking behind it and what I learned building something that intentionally forgets you.
Cracking hashes in a CTF without setting up Hashcat
How dictionary attacks work for beginner CTFs, when a browser cracker is enough, and when you still need Hashcat.