Drawer vs. Bottom Nav: A UX Decision Framework
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...
Technical notes, project documentation, and lessons learned across software, DIY, writing, and more.
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...
Leaflet.js is the best mapping library on the web. Blazor speaks C#. Making them talk requires a clean interop boundary—here's the pattern that finally made...
You open Uber. You see your driver moving on the map. How? How does your phone know where someone else's phone is, right now?
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.
Your Blazor WASM app works locally but shows 404s for .wasm files after deployment. Private browsing doesn't help. Different browsers give different results.
Your Blazor app loads the HTML, shows the spinner, then... nothing. The console shows errors about '/0'.