28 Oct 2023
Recently, I found myself working with AWS Kinesis Firehose and S3. All I wanted was to write custom JSON records programmatically into a Firehose stream, and have it output to an S3 location. However, by default, the records would get written without any newline separators. Searching for how to insert newline characters generally got me to complex solutions for complex data input sources.
Neither AWS documentation, nor existing Stack Overflow answers pointed me towards the incredibly simple actual syntax. I chased down complex solutions using Firehose features until I figured out you can just include the newline character directly after your message.
Read more »
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 »