RSS Amplifier

Blog

Caffeinspiration

Recent content on Caffeinspiration

alexanderell.isRSS feed ↗72 posts

Latest posts

Timeline and Early Days

Timeline and discovery: the early days The simple timeline of my journey sounds deceptively easy at first: I found out about the issue after an echocardiogram on January 23rd, 2025. I had open heart surgery on Tuesday, June 24th I was sent home from the hospital three days later on Friday, June 27th I hit the 12-week mark on Tuesday, September 16th It’s now Sunday, November 16th Just a quick…

On having heart surgery at 32

Author’s note: this is a departure from topics that I usually write about. It’s not related to tech, learning, or anything I’ve written about before; it’s my personal experience going through heart surgery at 32. Reader, be warned that there are personal and real details. There won’t be any gory images, but I won’t be sanitizing the experience or pretending it…

Cathy: my dear, helpful catheter

Listen, there isn’t much in this world that’s as luxurious as being able to pee whenever you want to. Imagine floating in the ocean, free at the drop of a hat, except it’s anywhere. A simple luxury, but a freeing one. Or, at least it would be, if you weren’t confined to a hospital bed. I’m talking, of course, about wearing a Foley catheter. The only small downside to…

How much oranger do red orange bags make oranges look?

Look at this orange: Now look at this orange: It’s the same orange. But, look how much more orange it looks with the red mesh on top of it: If you buy bags of oranges (at least at many places in the US), they frequently come in this red mesh bag. This bag makes the oranges look more orange. Oranger. Here’s what that looks like at a local grocery store 1 : Ripe oranges are usually…

Visualizing my strengths and areas for growth with RPG radar charts

Sometimes I just love a good visualization, and there’s something about radar charts that makes them so approachable. Maybe it’s the asymmetry or the mapping to 2D space, but they give an immediate view across multiple dimensions. The other day, I was chatting with a colleague of mine about different areas you can grow in as a software engineer, and I was reminded of something I had…

Harry Chapin and RATM: the problem with bleeding interests

Note: this post requires a basic familiarity with the songs discussed. If you’re not familiar with them, I’d recommend you listen to at least a portion of the following three songs: Free Bird by Lynyrd Skynyrd ( YouTube ) Cat’s in the Cradle by Harry Chapin ( YouTube ) Killing In The Name by Rage Against The Machine ( YouTube ) There are many musical genres I like, and what I…

All of the writing I did in a week as a software engineer

The other day, I was thinking about less-obvious skills that I find helpful for working as a software engineer. Some skills are obvious, like understanding technical topics, learning new things, and thinking like a computer, but there’s a separate class of unobvious skills that an outsider may not immediately think of when they imagine a career in software. 1 Empathy and communication are…

Brute-forcing the NYT Digits game

You’re given a list of integers and a target number. You can add, subtract, multiply, or divide numbers, and you can use the result for future operations. Once you have used a number in an operation, you may not use it again. Your task is to find a combination of arithmetic steps to get to the target number. For example, if you’re given [1, 2, 3] and the target is 9 , a valid path…

The dog hair and the computer mouse

Because I spend my entire workday on the computer, my mouse is very important to me. With my basic optical mouse, I’m far from a connoisseur, but there are a few things that I’m just so used to that I notice any changes immediately. For example, it’s easy for me to notice changes to my mouse acceleration, and even the slightest change in acceleration throws me off. I notice it so…

Things that are hard to measure, things that are easy to measure

There are things that are hard to measure, and there are things that are easy to measure. I think about this duality a lot when it comes to software engineering, especially when it comes to the difficult task of measuring developer productivity and engineer effectiveness 1 . Taking a very naive approach, there are many easily measurable aspects of the job that you could use 2 : Jira tickets closed…

In the desert, no service, and your partner's late to the rendezvous. What now?

Let’s say, purely hypothetically, that you’re in Joshua Tree National Park. Your partner dropped you off in the morning, and you’ve spent the day hiking and scrambling in pretty populated areas of the park. You arranged to meet your partner at 4:45PM at the place where they dropped you off. You’re currently in possession of a cell phone (though without any service), some…

Practice being a beginner

I’m a big fan of trying new things. Part of the process that I’ve come to enjoy is facing and getting over my initial hesitations and reaffirming that it’s OK to be bad at things. Trying something new for the first time can be scary. There’s an element of vulnerability, where you’re clearly showing that you’re not good at something. It’s like I’m…

Learning by working on problems just outside of your reach

There’s a common pattern I’ve seen when learning something new, where you can effectively move towards a larger goal by working on problems just outside of your reach. I did a little thinking about what that would look like and how to find the right steps to take. Circles of knowledge: what I do and do not know Let’s say you have some general knowledge in some areas. I sometimes…

iPhones and action discoverability, or "How the hell was I supposed to know that?"

Discoverability I spend a lot of my time thinking about UX and design, and I try to consciously think about it in the wild when I can. One of the things that always catches my eyes is the idea of discoverability, or how a user is able to discover that action X does some thing Y. A basic way to do so is to rely on patterns that we’re all familiar with. For example, this link is blue, and if…

The hobby buyer's fallacy: "I'd really pursue my hobby if I just bought X"

There’s a trap I used to fall into that has happened more times than I’d like to admit 1 . The typical scenario would be something like this: There’s a hobby I’m into (or starting to get into) I find myself wanting to do that hobby more than I currently am I find some THING that seems like it would help I somehow convince myself that having that THING would make the…

Stubbornness and programming

Every now and then, there will be the type of problem to solve where I know it will require an extra cup of coffee, a long block of dedicated time, and a lot of careful reading, debugging, note taking, and going for walks to think. This is often “subtle bugs that are hard to repro but we need to fix” territory; it’s not fun greenfield development with a lot of brand new code…

Writing a toy WebSocket server from scratch

WebSocket (WS) connections are pretty neat. I’ve gotten to play around with them before, both for personal and professional projects, but my view has mostly been at a high level and concerned mainly with the things that I can build on top of them. I haven’t spent much time digging through the protocol. I thought it would be pretty interesting to build a toy WS server from scratch. Like…

What happens if you point two CNAMEs at each other? Not much, really

I dabble with DNS for work, and I’m frequently checking if CNAMEs are properly configured. CNAMEs are Canonical NAMEs, kind of like nicknames, that indicate that one domain name is a nickname for another domain name. For example, you probably encounter CNAMEs that map from the classic www subdomain: www.example.com CNAME example.com This entry indicates that example.com is the Canonical NAME…

Sharpening the axe for programming

A woodsman was once asked, “What would you do if you had just five minutes to chop down a tree?” He answered, “I would spend the first two and a half minutes sharpening my axe.” When it comes to solving a problem with code, I’ve found a few things that help make the process more efficient. The code is the output, but like sharpening the axe, there are a few things I do outside of writing…

Funny artifacts in a 3D house scan

I like to window shop houses on Zillow. I really enjoy the recent trend of 3D interior scans, as they help give you a feeling for what the place is like, and it allows for another way to explore the space without seeing it in person, which is key for a good cross-country window shopping experience. The other day, I was looking at a 4 story townhouse, and I noticed a few weird things on its 3D…

My false start when learning to program

I got into programming after college, but there was a brief period of time when I had first tried to learn how to program. It didn’t stick, and I was thinking the other day about why that first attempt didn’t keep. It was during one of my college summers (2012 or so) when I was working as an intern at a small law firm in Vermont. My day to day duties varied heavily, with some days…

Work context, home context

When I usually think about context in the meta, non-technical part of being a software engineer, I usually think of context switching and swapping your brain’s focus and working memory from one mode to another, switching from focused programming to a status meeting or trying to fit in a little coding time in the 30 minute blocks in between meetings. Another aspect of context I’ve been…

How to break the Envoy CI at head

I like to talk about small mistakes I’ve made. I’m a big proponent of psychological safety, and as a champion for it, I think it’s very important to talk about times you’ve slipped up or done something dumb. We all make mistakes, and there are times when you feel silly for doing something. This is one of those times. I recently merged a large pull request in Envoy that…

Long running pull requests

There’s nothing quite like merging a pull request that has been pending for months. It’s so satisfying. At Google, they have little badges for your internal user profile. One of the ones you can get celebrates the longest time delta in between creating a change and submitting it. For example, if you create a PR on August 1st and submit it on September 1st, you’d probably get the…

How far behind a plane is its noise?

If you’re ever near a relatively low flying airplane, you may have noticed that it sounds like it’s in a different spot in the sky than where it actually is. You can hear the loud engines, and your ears tell you it should be in one place, but your eyes tell you it’s clearly well ahead of its noise. It’s a funny visual trick, and, living near the Boston airport flight path,…

I only care about the helpful notifications, not the promotional ones

Here’s a scenario. First, you download an app for a service that has some sort of in-person component, like picking up an order or meeting a driver at the curb. When using that app for the goal, be it that order or that meeting, it’s very helpful to have notifications, since they give you the current status and it can be important to coordinate. You’d like to get a notification…

Playing with a 3D representation of RGB color space

I’m working on a color picking/finding game, and part of it will be asking the user to pick a color from a range of colors. This got me thinking: what are some ways we can represent RGB color space? RGB One way to think of colors, especially colors on computers, is as a combination of three different primary colors: R ed, G reen, and B lue. If we say how much of each color we want, we can…

Wikipedia Over WhatsApp

In-flight messaging I was on a Delta flight the other day, and I was thinking about how they offer free messaging from your smartphone. How do they limit the wifi? Maybe they have some basic filter that says “deny everything except the urls for these 3 messaging apps”, which makes sense conceptually. What if we don’t want to pay for wifi and we still want to be able to browse the…

A basic ear training note matching game

This is a game for matching musical notes. JavaScript is needed to run this game. If you don’t have it enabled, I totally get it — I often don’t like it either. This is a simple ear-training game for matching notes. Play along with your favorite instrument! You can also try singing/whistling, but note that the pitch detection is hand rolled and rough around the edges — apologies if it…

"I don't know the numbers": a math puzzle

I saw a math puzzle the other day on Hacker News . It reads as follows: Two numbers are chosen randomly, both are positive integers smaller than 100. Sandy is told the sum of the numbers, while Peter is told the product of the numbers. Then, this dialog occurs between Sandy and Peter: Peter: I don’t know the numbers. Sandy: I don’t know the numbers. Peter: I don’t know the…

Getting comfortable with being uncomfortable

Software engineering is cursed with uncertainty. When we’re solving big new problems with software, if the exact problem has been solved before, we could just reuse the solution that already exists. Frequently though, the exact problem (or combination of problems) hasn’t been solved before, and we need to come up with a way to solve it. Have you felt that feeling? That moment of…

Opinionated variable names

I think a lot about the human part of code, especially the work our brains do when writing and reading it and interfacing with the computer. Rachelbythebay had a great take on a way to inject some brain-processing into a technical task - when you’re running a command to affect n servers, maybe it would be good to type that number in manually. The idea is to force you to take in that number…

What is a minute, really?

What’s in a minute? It can be sixty long seconds, or it can be just a blink of the eye. Easy ways to slow time down If you’re trying to slow time down, see how long a minute feels for any of the following: If you’re able to, hold a plank for 60 seconds Read the Elementary Rules of Usage section from The Elements of Style If you’re able to, sprint at full speed for 60…

The tech interview prep industry

Before I got into tech, I worked at a tutoring company in the Northern Virginia suburbs of Washington, D.C., doing a mix of schoolwork-related tutoring and standardized test prep. From a business perspective, it made so much sense - you have kids taking standardized tests and parents who wanted their kids to do well on them. Here we have the SAT, a measurable evaluation that can be an immediate…

Keeping a debugging lab notebook

I like to keep a debugging lab notebook when I’m working through a particularly tricky problem. It’s nothing fancy, just a new tab visit to docs.new and a quick @today to add today’s date. I usually try to describe the problem and the specific issue I’m having, including any reproduction steps or screenshots (frequently copied over from the issue tracker). I try to…

Detecting pitch with the Web Audio API and autocorrelation

I’ve been playing with the Web Audio API recently, and I made a basic app that will detect the pitch of incoming tones using your microphone. You can try it by pressing “Start” (be sure to try both the sine wave and the frequency displays), and I’ll be walking through how it works below. Start Press start to begin Rounding options: No rounding Round to nearest Hz Round to…

I prefer my biographies in chronological order, thank you very much

Usually, biographies go through someone’s story in roughly chronological order. OK, that’s a little too linear, like a page-a-day journal for your entire life. Realistically, you’re going to focus on different parts of the subject’s life more than others. You can imagine that broken up into chapters, too. Maybe our subject’s childhood is generally passed over in favor…

My lizard brain is no match for infinite scroll

I’m declaring defeat. Infinite scroll has won. There is an endless supply of interesting things to consume online, and there are teams and teams of very smart people working very hard to get me to keep watching. One more video means one more metric counter incrementing, one more engagement click, one more step towards growth, ad revenue, product success… The danger for me is that I…

I miss easily seeing how my coworkers use tools

It’s one of the little things I miss about working in-person with other people. Writing software can involve so many different tools. Before my current remote working times, one of the ways I picked up on efficient ways to use some of the tools involved was from seeing how coworkers navigated them, especially when they had a lot more practice with them. A colleague and I would be looking at…

Morse Codle

This is a game for playing Wordle with Morse Code. JavaScript is needed to run this game. If you don't have it enabled, I totally get it — I often don't like it either. MORSE CODLE q w e r t y u i o p a s d f g h j k l Enter z x c v b n m --> Guess the MORSE CODLE in four tries. Hit space or press the play button to hear the word. Each guess must be a valid five-letter word. Hit the enter button…

Writing Morse code games in JavaScript using the Web Audio API

Playing sound with the Web Audio API Playing Morse code Morse code timing Playing letters, words, and sentences Adjusting the speed The Listening Game The “Speaking” game Parsing the incoming signal into Morse code Hooking it up to user input Finishing thoughts Last week, I posted a pair of games I made to play with Morse code in your browser . I wanted to take some time to describe…

Little games to play with Morse Code in your browser

Be sure to also check out my other Morse code game, Morse Codle , a daily Morse code Wordle puzzle. This is a pair of games for playing with Morse Code. Since the games play the signals as sound, I recommend headphones (wired if possible for the latency) and a low volume. Game options are available towards the bottom. Unfortunately, JavaScript is needed to run these games. The only JS running on…

Writing a toy traceroute from scratch

traceroute is a tool you can use to trace the route of packets from your computer to another computer. It lets you see each step that your packets take along the way. For example, the following is the result of running traceroute from my computer in Massachusetts to “example.com”: You can see that it took 8 hops to get from my computer to the destination IP ( 93.184.216.34 ), and you…

(1) New Message: How websites catch your attention with JavaScript

There are many good things about JavaScript. There are also bad things about JavaScript. There are many cases of well-intentioned features in JavaScript being used for unhelpful purposes. These features can help support rich web applications with impressive features and capabilities, but they can often be used antagonistically, in the sense that they aren’t helpful for the user ( like…

How do you visualize code?

The other day I was reading about the development of personal computers and the desktop GUI, and I was thinking about how comfortable we all have become with the analogy of the “desktop” for our personal computers. We place files in folders and keep them on our desktops. There’s a lot of physical action going on. Humans are very good at understanding spaces , especially when it…

A Children's Book Story About Distributed Systems

Editor’s note: the following document was found in a collection of papers and assignments, apparently dating from late 2020 when the author was stuck inside studying distributed systems. An additional note, written in green and red Crayon on the back of a CVS receipt, was found stapled to the document: “it is now winter . this work features only approximate explanations. it favors…

Completing a Part-Time Master's in Computer Science While Working

“I’m going to be 29 anyways, so I might as well be 29 with a Master’s.” — me 5 years ago debating whether I should take classes On June 5, 2017, I started taking classes at Tufts University while working full time. On January 4, 2022, I submitted the final draft of my Master’s thesis. Much like my past self had hoped, I’ve made it 4 years in the future, and…

The Strange Path of Accepting How Your Brain Works

I recently read Turing’s Cathedral , a book about the early history of computers, and it largely focused on the life and brilliant times of John von Neumann, who was, to put it simply, a genius . It is both fascinating and disappointing to learn about a brain that works so much better than your own. Fascinating because the wide spectrum of human ability has led to a brain so capable. That we…

Writing an RPC From Scratch

There are many ways for computers to talk to other computers. A commonly used approach is a Remote Procedure Call, or an RPC. An RPC allows for the abstraction of calling another computer’s procedure as if it were a local one with all of the transmission and communication taken care of. Let’s say we’re writing some math program on a single computer and we have some procedure or…

You're Reading This in the Future

You’re reading this in the future. Isn’t that weird? Even I’m reading this in the future. Let’s say I write the last “C” in this sentence at 7:41:50 EDT in the evening of Friday April 16, 2021, or exactly 1618616510 seconds since January 1, 1970, UTC. Even as I started typing this next sentence, let alone editing this and pushing this to my blog, that time has…