Automating my indoor air quality

2020 was a lot of terrible things, and one terrible thing we learned a lot about was wildfires. 2020 was the worst year for wildfires in California history, topping the previous worst-ever year in 2018. We saw the first ever gigafire (1 million acres burned) in California, and facing down one of the driest Januaries on record in 2021, it seems like year-round wildfires are the new reality.

Poor air quality is an insidious thing. You can’t always see it or smell it, and you might not feel sick. But, over time, these small particles build up in your body and have a detrimental effect on your lungs and heart. Population-level studies from polluted cities in China and India make it very clear: breathe a lot of fine particulate matter (PM2.5), die sooner.

Source: Hoodline

So, air quality is a problem, but what can we do about it? The recommendation from the CDC and other health organizations is simple: stay inside. Wildfires and other major sources of air pollution like cars and factories are outside, so by staying inside, you lower your exposure to bad air. This makes sense, but when the skies are literally red because of suspended smoke particles, these basic measures may not be enough.

Continue reading →
Posted by andrew in Personal, Software, 0 comments

TypeScript in the Wild

When I previously used JavaScript, the grand debate was which JS utility library to use: jQuery vs. mootools vs. YUI vs. dojo. While I’m glad this tradition of grand debates has continued (Angular vs. React vs. Vue), the community has also quickly coalesced around the biggest improvement to JavaScript in the last decade: TypeScript.

In this post, I want to talk about my experience migrating an existing JavaScript codebase to TypeScript. But first, a quick digression on why I love TypeScript, and how TypeScript is the culmination of a number of great ideas in PL.

Continue reading →
Posted by andrew in Software, 0 comments

On the importance of software testing

As the famous programmer Jean-Paul Sartre once put it, hell is other people’s code. This is what echoes through your head when you’re jolted awake at 2AM by PagerDuty, blaring about a Sev0 production outage. You trawl through the changelog to find the offending commit: a missing null check that results in an exception. You start rolling back the bad deploy, but as you sit there, illuminated by the glow of your laptop screen, you curse to yourself: how did a simple error like this make it all the way to production?

Continue reading →

Posted by andrew in Software, 0 comments