Blueprint Theme: Construction Industry Visual Identity
Generic business app aesthetics don't resonate with field workers. They spend their careers turning blueprints into reality—so we made our app look like one.
Technical notes, project documentation, and lessons learned across software, DIY, writing, and more.
Generic business app aesthetics don't resonate with field workers. They spend their careers turning blueprints into reality—so we made our app look like one.
A running collection of CSS one-liners that fix the hundred tiny paper cuts making your mobile web app feel 'off' compared to native apps.
Android fragmentation is real—different phones have wildly different system chrome. Instead of fighting safe-area calculations...
We started with a hamburger menu. Three months later, we ripped it out. Here's the decision framework that made the choice obvious—and might save you the...
Settings is important but shouldn't steal prime thumb-zone real estate. Put a profile avatar in the header—visible on every page...
M3E's 46-study research was about consumer apps. But what about people wearing work gloves, squinting in sunlight, who need to clock in NOW?
SignalR reconnects automatically—until it doesn't. Here's how to build resilient real-time connections with exponential backoff and HTTP polling fallback...
The app works via USB. It works in the emulator. Switch to wireless debugging and it crashes instantly.
What started as 'the pending count resets to zero' turned into a 7+ hour journey through Blazor component lifecycle, INotifyPropertyChanged...
Your error boundary works in Blazor WASM but crashes in MAUI Hybrid with 'WebViewNavigationManager has not been initialized.' Here's why and how to fix it.
The sync bug only happened on Mondays. Two sync operations running simultaneously, corrupting data.
The mobile app worked great on WiFi. Then a user drove through a tunnel and the sync button showed 'syncing' for 30 seconds before erroring.
Before building months of features, I built one thing: error logging. It proved the entire Mobile → API → Database → Web Admin pipeline worked—and found...
A 1,435-second GPS gap led us to the one Android permission every tracking app needs and nobody mentions in the docs.
You download a game. You tap buttons. Things happen. But what's actually going on behind the scenes — and how do people peek behind the curtain?