26 Aug 2023
Four years and a GPU shortage later, I built my third gaming PC in July 2023. It was a tough one to plan because my last build was really hard to top.

It’s technically the fourth PC build I’ve been part of, after helping my brother build his first in late 2021.
Read more »
01 Sep 2022
The localStorage API is as straightforward as can be. Create, read, delete, clear-all methods, and that’s about it. The only notable limitation is that it only stores strings, but that can be mitigated using JSON stringification and parsing to expand support for objects and more.
I came up with this cute wrapper class for localStorage a few years ago, and it remains one of my favorite personal utility classes in JavaScript.
Read more »
30 Jan 2022
You can execute displayswitch.exe
to bring up the Win+P display switcher utility from the command line. This is not a new discovery by any stretch. Some web searching tells me this utility has existed since at least Windows 7. It wasn’t the easiest thing to find instructions when I wanted a solution. I figured I should write this down in the context of Python to help people searching with the keywords I was.
So if you’re setting up a script for your own personal automation, or writing a utility application in Python that switches or extends users’ displays, here are some code snippets to copy-paste.
Read more »
01 Jan 2022
I put off writing this review for so long because my thoughts on this TV are not easy to compile into words. This review is the culmination of very heavy use over a whole quarter, me ruminating over all aspects of this product, and several conversations I’ve had with different people about this purchase.
To help set the stage, perhaps I should start with my profile as a consumer. In summary:
- I am very discerning about picture quality. many hours over days to get picture modes and settings just right on a new TV.
- I am extremely particular about user experience in software. Part of my professional work happens to involve some UX design.
- I watch a lot of movies. And I mean… A LOT. Hundreds per year.
- I tend to use my TVs very heavily. In the work-from-home world, I have this TV on for more than half of my waking hours of an average work day.
When my 2016 Vizio P-Series gave up after 5 years of heavy use, I set off on my journey of picking just the right successor. I settled on what many reviewers consider the absolute best TV for movies (thanks Rtings, Digital Trends, others). This excludes exorbitantly expensive models, and the Sony A80J. That one was significantly more expensive at the time of my purchase. As a bonus, the LG C1 came with cutting edge gaming features like modern VRR support, new HDMI standards, low input latency and whatnot.
Read more »
30 May 2021
For the last couple of years, I’ve had a very nifty setup in my home. It allows me to turn on my desktop PC using Alexa, so that I don’t have to walk up to it, press the power button, then wait for it to boot up. I have previously chronicled the process of setting it up on this blog.
An important bit of tl;dr, I achieved this using Simple Queue Service (SQS) on AWS, a Raspberry Pi constantly querying a queue for instructions, and the Wake-on-LAN standard.
Ever since I set that up, I’ve had this idea of taking that a step further, and sending requests directly into Windows once it has woken up.
Read more »