RSSAmplifier

Blog

Jacob Elder

My thoughts on software engineering and more

jacobelder.comRSS feed ↗10 posts

Latest posts

A solver for the NYT Spelling Bee game

My household loves the New York Times’ daily word games. Unfortunately, my wife is a lot better at Spelling Bee than I am. This provided the perfect excuse for today’s project. Pangrams are in bold. Scores are accurate according to the game’s official guide. The solver is written in Rust and compiled to WebAssembly , and then wrapped in a trivial Web Component . It runs entirely in-browser,…

The Habits and Tools of Effective Remote Teams

In 2017 I was living near Boston, and I joined a startup founded by two friends of mine who had recently moved to New York. On the rare occasions that we would meet in person, it would be in one of the smallest sizes of offices that WeWork offered. The rest of the time, we’d be a remote-first company. That company eventually grew from 4 people to over a hundred, got acquired , achieved a huge…

Eponymous Laws

Who doesn’t love namedropping a great thinker in casual conversation? These are some that I continually find useful. Hyram’s Law “With a sufficient number of users of an API, it does not matter what you promise in the contract: all observable behaviors of your system will be depended on by somebody.” Hyram Wright Jakob’s Law No relation to the author “Users spend most of their time on other sites.…

Where "Shift Left" Fails: Type Theater

I have been building web apps for long enough to remember when it was commonplace to SSH (or Telnet!) into the server and just vim index.php . As you can imagine, it was pretty easy to bring the site down like that, so we started doing what is now called Continuous Integration and Continuous Deployment: automated tests as a precondition for deployment. Later, we adopted static analysis tools and…

Matching and iterators in Rust

One of the things I really like about Rust is its match expressions. Plenty of other languages like Ruby, Python, and Haskell have similar features, but it’s painfully absent in popular languages like JavaScript. There, we have only switch...case . That statement is not exhaustive, and matching on anything other than scalar values requires casting to string and may yield counterintuitive results.…

Introducing: Green Thumb Guide

Two interests defined 2023 for me: large language models, and plants. So I thought, why not combine them? Green Thumb Guide is a chatbot intended to help newbies like me to not kill their houseplants, and help their garden thrive. It has a knowledgebase of articles I’ve found useful, and it also understands the climates that outdoor plants can tolerate. The first version “hard coded” my hardiness…

SQL Sage: Using LLMs to write better SQL

This is not a post about using LLMs to write SQL. It’s about using LLMs to teach SQL. ⊕ Everybody deserves a friend they can ask really stupid questions of without embarrassment. A mentor, guide, or illustrated primer . With the advent of GPTs, you can! I’ve been using custom GPTs to improve various skills, and in this post I’ll be introducing the most useful one I’ve made so far: SQL Sage . My…

The Director of "Toy Story" also drew the BSD Daemon logo

In my teens and early 20s I was obsessed with the history of computing and the internet. I still am, but other obsessions have reduced the relative weight of this interest. It was during those years that I made a regular pilgrimage to the MIT Flea Market . I bought many of the components for my first computers there. I also found this important piece of computing history, a full set of 4.3 BSD…

A shopping list for new parents

Everything in this list is something we have actually used and would recommend to other new parents. First Trimester Morning sickness is no joke, except it’s nothing like what we see in movies and TV, where the heroine throws up once and then takes a pregnancy test. The new mom is going to be on the verge of puking for weeks on end, morning, noon, and night. Fortunately, extra-sour candy can trick…

4 Rules for Designing Queues

Over the past few months I’ve been dealing with some champagne problems like, “How are we going to process all this data for so many customers?” (please pardon the humblebrag). The answer to problems like that is almost always to introduce a queing system of some sort. I would like to share with you some guidelines that I’ve used for designing the SQS queues at Blissfully . NOTE While these…