Closing the Feedback Loop Changes Everything
I refactored some components in our internal admin panel last week. The code looked fine. Tests passed. I shipped it. Then someone opened it on a phone. Half the layout was broken. This is the oldest …
Read more →Google Cloud Finally Gets Native OpenTelemetry Ingestion
I got an email from Google this morning about a new OTLP endpoint. Buried in the usual “no action required” corporate-speak was something I’ve been waiting for: …
Read more →How I Use AI to Automate Daily Planning with Obsidian
I’ve tried GTD, bullet journals, Notion, Roam, and probably a dozen apps I’ve already forgotten. They all failed for me. Not because they’re bad tools, but because I’d always …
Read more →Less Distraction, More Focus
In case you think the environment full of distraction and context switching introduces such negative effects as reduction of ability to stay focused on a single task for long enough, you’re not …
Read more →RunDeck Set Admin Password
RunDeck is an excellent tool from PagerDuty to automate certain tasks. Suprisingly, resetting default admin user password in a docker container isn’t easy. Default username is admin and the …
Read more →Upgrading Rails to 8.1 and fixing incompatible gems
You probably faced similar error. Could not find compatible versions Because every version of paranoia depends on activerecord >= 6, < 8.1 and rails >= 8.1.0 depends on activerecord = 8.1.0, …
Read more →Rails Suppressor Pattern
While grokking through Rails source code, one pattern caught my eye, namely Suppressor. Here is the full listing, and as you could spot, it’s quite concise. But, I spent some time trying to …
Read more →Chrome Command Palette in Dev Tools
I was today years old when I learned about Cmd + Shift + p command palette in Google Chrome. Why you might need it? To enable dark mode emulation!
Read more →Adding PDF previews to ActionText with ActiveStorage
Rails is a great framework, once you stop thinking in Java patterns and embraice DHH way of writing web apps. Interestingly, Basecamp uses exactly the same ActiveStorage implementation, but shows …
Read more →Stop writing data migrations
As many of us, I was writing data migrations as a part of database schema migrations. Why that’s a bad practice, and what’s the better way to do this. Your data migration typically comes …
Read more →