In react apps with accounts and authentication, a common pattern for handling public/private routes is to have: * A PrivateRoute component that wraps auth-protected views. It checks for authentication and…
Lately, I’m finally making the move from ESP8266 to ESP32. I resisted it for a while because ESP32 development boards are bigger and more expensive than those for the ’8266,…
Since Nova was released, I’ve been using VideCode’s Sass extension to automatically compile my Sass files into css. It’s the only extension that exists for compiling Sass in Nova, apparently. The…
A reference for all the available HomeKit accessory types and their ESP-HomeKit enum values.
There’s a shelf that I built hanging above my bed that has two LED downlights in it (the shelf is made from cherry that was cut down on my great…
I’ve been using the SVG-mask-plus-background-color trick for a while to make sharp icons that can be colored to match nearby text. But I just learned today that they can inherit…
Adobe’s Creative Cloud installs a heap of random apps and tools and other bloatware. It’s pretty bananas, but it really gets obnoxious when you want to uninstall Creative Cloud1. You can…
Earlier this year, I launched a new Apple Watch app called UV Forecast. It’s a simple way to keep track of the sun’s strength at your location right from your…
I’m a big fan of Raspberry Pi. I have a few in my house doing various things, so from time to time I have to set up a new Pi,…
When I was trying to submit the first version of UV Forecast to App Store Connect, I kept getting back “ERROR ITMS-90363: Invalid Info.plist key” errors complaining about the location…