RAMROD 2019 - Jul 31, 2019
I have been training on my bike for most of the year, and it culminated last week at RAMROD 2019. I did the ride last year as well, and had decided to challenge myself to do it a second time this year.
Today I Learned - Jul 31, 2019
Recently I discovered the term “run those systems in anger.” This was from a podcast I was listening to (either Software Engineering Daily or YCombinator) and the guest was talking about building software and how to choose the right frameworks/tools. The idea is that you should probably choose the tools you hate the most because you have probably spent some time “running those systems in anger,” and you probably understand how it will break/fail in interesting or surprising ways and can build around those.
Today I Learned - Jun 25, 2019
Today I learned about Webmentions and webmention.io. Webmention is a standard for federated communication between servers, allowing one server to indicate to another that it has published content with a link to (aka “mentioned”) some content on the target server. This is standardized so that it does not require a single owner or centralized service (such as Twitter or FB) to facilitate the communication or store the data, each server can do it itself.
Today I Learned - Jun 24, 2019
Today I learned about Catastrophic Backtracking in Regular Expressions. This is a form of Regex that has O(2^N) CPU complexity, causing it to effectively never return when executed against even a reasonably short string. I won’t attempt to go into depth, the link above does a great job of that, but this affected our service by blocking the main thread and causing the service to become entirely unresponsive with a pegged CPU.
Today I Learned - Jun 21, 2019
Today I learned about NOWAIT for PostgreSQL. This is an option for the SELECT FOR UPDATE command, allowing you to control the behavior of locking rows during a transaction. We use SELECT \* FROM table WHERE col = 'value' FOR UPDATE to provide exclusivity when updating certain objects in the database. Adding the NOWAIT option causes this statement to error and return immediately if the row is already locked, allowing the application to handle this case in a more interesting way than simply waiting indefinitely.
Flutter for Backend Engineers - Jun 9, 2019
I’ve recently been building an app using Flutter, and the experience has been really awesome. This is my first real foray into building a mobile app, and the Flutter SDK has done a great job of shrinking the learning curve.
Full Time Development on Chrome OS - Apr 6, 2019
I have recently purchased a Google Pixelbook to help satisfy my curiosity about the feasibility of a non-OSX platform for development. I plan to use the Pixelbook as my daily driver, and I’m writing a series of blog posts about the experience.
Hello - Apr 1, 2019
Howdy. I’m a software engineer, and this is my blog. I like building software, riding bicycles, and playing with gadgets.