Blog
Favorite Posts
Over the years, I’ve published a few hundred blog posts. Here are a few favorites.
All Posts
Here's the full archive of my posts.
Published: November 09, 2023 • Updated: November 20, 2023 • 2 min read When I’m feeling sluggish at work, I have a great hack: asking “What would
finishing this today look like?” It’s a version of one of Tim…
Published: November 06, 2023 • 2 min read A design principle that’s crept into my programming could be summarized
as: “Absence of color is better than the wrong color.” Color in user…
Published: October 30, 2023 • Updated: October 31, 2023 • 2 min read One of my favorite product hacks is asking: “What’s the why?” Before delivering a feature, stop and ask: why is this feature worth adding…
Published: September 13, 2023 • 2 min read
Write a little bit of code, and you may come to an unsettling realization:
there are multiple ways to do almost any programming task. How do…
Published: September 06, 2023 • 2 min read Something I’ve learned as an engineer: when presented with the option of
working on a Big Project, or doing anything else, take the Big…
Published: September 03, 2023 • 2 min read “How did this feature break? I thought we were writing tests.” –Frustrated Boss We spent the time writing tests, and yet, a bug survived…
Published: August 14, 2023 • Updated: October 14, 2023 • 2 min read Have you ever seen a pull request that seems to completely explain itself? It’s a real artifact. I don’t know the project, yet I understand…
Published: August 09, 2023 • Updated: August 10, 2023 • 2 min read Here’s some advice about programming, that also isn’t advice: “Don’t ask for advice; ask for a code review.” In this post, I’d like to…
Published: August 04, 2023 • Updated: September 05, 2023 • 5 min read When it comes to controlling frontend presentation in React, booleans are a
common tool, but they often fall short. In this post, I’ll…
Published: June 26, 2023 • 3 min read I recently wrote about a debugging technique that I recommend: making a
prediction. The idea is that before
trying an experiment during a…
Published: May 02, 2023 • 3 min read Absolute imports are an essential feature for me in any JavaScript application.
In this post, I’ll explain what they are and why they’re…
Published: April 10, 2023 • Updated: October 16, 2023 • 4 min read After a decade of programming full-time, I’ve developed a daily work routine
that I’d like to share. I hope to revisit it and share it with…
Published: April 03, 2023 • Updated: April 17, 2023 • 5 min read There are only two hard things in Computer Science: cache invalidation and
naming things.
— Phil Karlton Let’s talk about variable name…
Published: March 28, 2023 • Updated: March 29, 2023 • 3 min read Code coverage– the percentage of your code covered by automated tests–
is a metric associated with quality. In this post, I’d like to pour…
Published: March 26, 2023 • 3 min read Here’s an argument that’s gaining momentum in my field: AI like ChatGPT and GitHub Copilot is very good at writing describable code…
Published: March 21, 2023 • Updated: November 07, 2023 • 3 min read Here are some one-sentence summaries of books that have helped me understand
programming and technology. Some are technical and some are…
Published: March 15, 2023 • Updated: May 01, 2023 • 4 min read Retrospectives are one of my favorite engineering team practices. In this post,
I’ll explain why and how I run retros. If you’ve never done…
Published: March 01, 2023 • 2 min read There’s been a lot of recent discussion in the TypeScript community about
typing functions. These arguments tend to take binary positions…
Published: January 12, 2023 • 2 min read CRUD is an acronym that’s used a lot in web and mobile development. Frontend
engineers in particular might wonder what it means and why we…
Published: December 29, 2022 • 4 min read Have you ever wanted to create a timer in a React app? In this post, I’ll
explain how to create a timer effect in a React application using…
Published: December 20, 2022 • Updated: April 20, 2023 • 3 min read When I am preparing development work, I write Gherkin-style stories, which
follow the “Given/When/Then” format. I learned this technique at…
Published: December 03, 2022 • Updated: December 13, 2022 • 4 min read Which HTML elements should we be giving a user to click? In this post, I’ll
share some best practices for clickable elements. To summarize…
Published: November 12, 2022 • Updated: September 19, 2023 • 5 min read This post was inspired by the following Tweet: You need a code review, but you don’t have another person. Maybe you’re building a startup…
Published: November 09, 2022 • Updated: May 16, 2023 • 2 min read I’ve been lucky to have worked with some great engineers, and one thing that
they tend to do exceptionally well is reporting about their…
Published: October 27, 2022 • Updated: April 03, 2023 • 4 min read How do you write a resume that helps you transition to programming? You have experience in another field. You want to be a programmer. You…
Published: October 26, 2022 • Updated: January 03, 2023 • 2 min read Today I completed the ‘Resistor Color Trio’ TypeScript exercise on Exercism.
This exercise asks us to write a TypeScript function that takes…
Published: October 26, 2022 • 3 min read Today, I’d like to dive deeper into a part of my practice: using a persisted
text file for jotting things down. You can read the post I’m…
Published: October 25, 2022 • Updated: July 21, 2023 • 2 min read Some advice I offer people entering the programming profession is to buy the
best hardware you can. You’re going to need it. Get the most…
Published: October 24, 2022 • Updated: January 03, 2023 • 2 min read Today as a code kata I completed the ‘Resistor Color Duo’ TypeScript exercise
on Exercism. Here’s my work. This exercise asks us to write a…
Published: October 21, 2022 • 2 min read The exit code of a command in a Unix-based system is an important and
easy-to-miss piece of data. It isn’t printed to standard out; you have…
Published: October 21, 2022 • Updated: March 03, 2023 • 2 min read Here’s a meme I saw this week: Here we have a person debugging code, and they’re saying “My code doesn’t work.
Let’s change nothing and run…
Published: October 19, 2022 • 2 min read Suppose you want to append to a file that’s write-protected and can only be
edited via . Is that possible? It is! A technique I discovered…
Published: October 19, 2022 • 2 min read When learning a new language or framework, the first thing I do is read the
official documentation cover-to-cover. Choose the latest version…
Published: October 17, 2022 • Updated: December 30, 2022 • 3 min read The FactoryBot gem, previously known as FactoryGirl, is ubiquitous
in Ruby and Ruby on Rails testing. If you aren’t familiar with it, you…
Published: October 14, 2022 • Updated: February 09, 2023 • 2 min read Trying to enforce unconventional coding preferences on a team is an uphill
battle. When in doubt, default to convention. Contrived Example…
Published: September 29, 2022 • Updated: June 28, 2023 • 2 min read When testing a serialized Rails API with RSpec, a common mistake is to assert
about the response body, only to find that it’s an empty…
Published: September 28, 2022 • Updated: October 14, 2022 • 2 min read Here are some books that have helped me understand programming. This list is a
living document that I plan to update as I read. Recommended…
Published: September 08, 2022 • Updated: November 21, 2023 • 2 min read How do you introduce new ideas and ways of working? We want to bring a new idea
to our engineering teams, such as a new command-line…
Published: September 06, 2022 • Updated: June 25, 2023 • 2 min read A big mental leap I made early in my programming was starting to view computers
as something that could be understood. What is a computer…
Published: September 05, 2022 • Updated: March 29, 2023 • 2 min read Reviewing a GitHub PR on that contains a lot of whitespace changes? Extra
whitespace can make it challenging to evaluate the substance of a…
Published: August 30, 2022 • 2 min read The Chrome DevTools Network Tab is incredibly useful for frontend web
development, but it can be noisy. Perhaps you’d like to filter it down…
Published: August 25, 2022 • 2 min read Today I’d like to share a small part of my practice: using a persisted
scratchpad text file for jotting things down. When coding, often I’ll…
Published: August 21, 2022 • Updated: January 09, 2023 • 3 min read One of my all-time favorite programming tools is Dash by Kapeli. In this post,
I’ll share some tips for leveraging this fantastic program…
Published: August 18, 2022 • Updated: October 09, 2023 • 3 min read When testing user input or data presentation, I prefer using realistic rather
than random data. For a recipes app, that would mean adding an…
Published: August 15, 2022 • Updated: March 30, 2023 • 2 min read I believe that luck is part of every professional journey. Here’s a sampling of
the luck I’ve had. A passage I recently read caught my…
Published: August 05, 2022 • Updated: November 29, 2023 • 9 min read This is a list of all the best debugging tips I’ve picked up over the years. Some of these might seem obvious, yet we forget them when it…
Published: July 28, 2022 • 2 min read My development environment depends on several processes running. Here’s how
I’ve scripted this setup. Whenever I boot up, I need at least…
Published: July 25, 2022 • Updated: April 26, 2023 • 2 min read Perhaps you’re familiar with this scenario: you’re debugging and
stuck. You’ve Googled, read some blog posts, docs, and forum answers. You…
Published: July 19, 2022 • 2 min read Agile retrospectives should produce many action items. What Are Action Items? Action items are small, defined, actionable TODOs to follow up…
Published: July 13, 2022 • 3 min read There’s almost always a better variable name or value than ‘foo’. It’s useful
as a placeholder, but it almost never belongs in production…
Published: July 11, 2022 • Updated: July 12, 2022 • 2 min read Here’s my checklist for a great database migration. A great migration is: Correct Atomic Reversible Consistent with the style of the…
Published: July 07, 2022 • Updated: August 04, 2023 • 2 min read When printing a JavaScript value to the console, I suggest using an object
literal over the raw value. It’s a little thing that over time…
Published: June 30, 2022 • 2 min read Why should someone learn Ruby in 2022? Ruby was my first programming language, and although I’ve drifted elsewhere, I
write Ruby every day…
Published: June 27, 2022 • Updated: January 19, 2023 • 2 min read A common React pattern is to pass an object as a prop. Consider a user
avatar component that shows the user’s initials. You might see one in…
Published: June 23, 2022 • Updated: May 04, 2023 • 2 min read A naive implementation is a programming technique that prioritizes imperfect
shortcuts for the sake of speed, simplicity, or lack of…
Published: June 21, 2022 • 2 min read Authentication and authorization are two distinct concepts. Yet, I’ve found
they’re sometimes used interchangeably. In this post, I’d like…
Published: June 15, 2022 • Updated: January 14, 2023 • 2 min read I write each post for this blog in Vim. Writing in the terminal makes me feel
like a programmer, even when I’m not specifically programming…
Published: June 13, 2022 • Updated: October 24, 2023 • 4 min read You’re a person who opens bug reports for software engineering teams. Perhaps your bug reports take a long time to resolve, and you’d like…
Published: June 08, 2022 • Updated: May 17, 2023 • 2 min read Imagine you’re debugging, and you’re stuck. Everything you try leads to another unexpected result. You continue to be surprised by what you…
Published: June 05, 2022 • 2 min read Lately I’ve been thinking about desire paths. We’ve all seen a desire path. They are footpaths created by erosion from
human and animal…
Published: June 01, 2022 • Updated: November 29, 2023 • 2 min read This is a response to Ben Kuhn’s ‘Think Real Hard.’ Ben starts by
sharing a problem-solving checklist from the scientist Richard Feynman…
Published: May 30, 2022 • Updated: June 22, 2023 • 2 min read Scenario: you have a database record that can belong to one record or another, but not
both. That ambiguous ownership could be called…
Published: May 25, 2022 • 2 min read A lot of people start programming with shared dotfiles, copied from a team or
online. I did. Maybe you’re ready to move on. Why would you do…
Published: May 23, 2022 • 2 min read You’re creating a React app, and want to organize your components. Or maybe you’re working in a legacy codebase, with many components in one…
Published: May 18, 2022 • Updated: January 14, 2023 • 2 min read I used to have a bad habit when working alone: I’d start a feature, begin
questioning my approach, throw away my work, and start over from…
Published: May 17, 2022 • Updated: June 27, 2023 • 4 min read Some code is broken, and you can’t figure out why. Maybe there are a lot of changes to consider, and identifying that breaking
change seems…
Published: May 06, 2022 • Updated: September 14, 2023 • 2 min read Great programmers can be great because they are fast. I’ve sunk a lot of time into being fast at Vim. I’ve used it as my text editor
for…
Published: May 06, 2022 • 2 min read You’ve been working on a big set of changes, and haven’t committed to Git yet.
Now, you want to commit some, but not all, changes to a file…
Published: May 02, 2022 • Updated: August 11, 2023 • 4 min read A programming style I try to practice could be described as: “there should be
only one way out of a function.” Early returns can often cause…
Published: April 28, 2022 • Updated: April 19, 2023 • 2 min read “The best time to plant a tree was twenty years ago. The second best time is
now.”
— Chinese proverb I mentor adults who are learning to…
Published: April 25, 2022 • Updated: August 23, 2023 • 4 min read In Things You Should Never Do, Part I, Joel Spolsky narrates
Netscape’s ruinous decision to rewrite their browser from scratch. This…
Published: April 19, 2022 • Updated: March 20, 2023 • 3 min read A common anti-pattern on sites where code is discussed, such as Slack, Stack
Overflow, GitHub Issues, etc., is to post a screenshot of code…
Published: April 16, 2022 • 2 min read Conditional logic has its place, but often there’s a better alternative.
Today, we’ll look at a Ruby solution: a hash with . My thanks to…
Published: April 13, 2022 • Updated: March 17, 2023 • 3 min read I recently completed a winter survival course where we built shelters in just
ten minutes with only the contents of our packs. The pack I…
Published: April 12, 2022 • 2 min read RC files, thought to stand for “run command” files, are read by a program
during startup. The file that configures the PostgreSQL REPL psql…
Published: April 06, 2022 • Updated: January 03, 2023 • 2 min read How does one exit Vim “Ex” mode? But first… how did you even get into “Ex” mode? Probably by accidentally
typing in normal mode: If this is…
Published: April 05, 2022 • 4 min read A stumbling block for many people when debugging is reading the stack trace.
Today I’d like to discuss this skill. What is a stack trace…
Published: April 02, 2022 • Updated: April 07, 2023 • 2 min read Ruby’s RSpec block has two common syntaxes. Which should you use? 👉Disclaimer: they both work. But I’m assuming since
you’re here, you’re…
Published: April 01, 2022 • Updated: October 26, 2022 • 2 min read When building a demo application, I believe you often can skip authentication. Picture this: a coding school student team demoing a project…
Published: March 30, 2022 • Updated: March 29, 2023 • 3 min read In today’s post, I want to talk about the importance of a bug. I remember the first bug that I shipped to production. I was upset that I’d…
Published: March 25, 2022 • Updated: April 03, 2023 • 4 min read You were stuck, and now you aren’t. 👏 Congratulations! Before you move
on, it’s vital to stop and learn from it. It’s the best way I know…
Published: March 22, 2022 • 3 min read “There are only two hard things in Computer Science: cache invalidation and
naming things.”
— Phil Karlton Today I want to talk about re…
Published: March 21, 2022 • 2 min read Have you ever tried to read the documentation for a Postgres command? Although
many consider Postgres’ docs best-in-class, they include…
Published: March 16, 2022 • Updated: March 20, 2024 • 2 min read If I could give one piece of advice to anyone learning to program: build. This advice might be most helpful to beginners. But it’s been…
Published: March 14, 2022 • Updated: June 01, 2023 • 2 min read Which operating system is the best for programming? This is a perennial question in code boot camps where I’ve taught. I think
students see…
Published: March 11, 2022 • 2 min read How does one create a new directory and file, without leaving Vim? Assuming you’re running a shell, I would shell out for either of these…
Published: March 10, 2022 • Updated: August 14, 2023 • 2 min read Auto-formatting code is good, and you should be doing it all the time. Why? It
helps you write better code in real-time, it preempts trivial…
Published: March 09, 2022 • Updated: March 29, 2023 • 2 min read A protip for program configuration files (dotfiles): don’t add configuration to
them that you haven’t tried to understand and confirmed you…
Published: March 06, 2022 • 4 min read Code reviews are important on many teams. Do them well, and your code ships
quickly and safely. Do them poorly, and your code ships slowly…
Published: March 02, 2022 • Updated: July 07, 2022 • 2 min read Here’s an idea that’s not ready for programming work: “Let’s add social login
to our website.” Same idea, ready for work: “A logged-out…
Published: March 01, 2022 • 2 min read We’ve all seen this: a frustrated coworker hunched over a computer after
hours, flailing alone against some impossible bug. Go home…
Published: February 23, 2022 • Updated: January 02, 2023 • 2 min read I’ve been using, teaching, and stanning Vim since almost the beginning of my
programming career. Yet, when asked to explain this preference…
Published: February 22, 2022 • Updated: October 03, 2022 • 2 min read I want to talk about a common technique: disabling problematic tests to allow a
feature to ship. I challenge this practice because I believe…
Published: February 15, 2022 • 2 min read A trick that that has helped me as a programmer: count to ten before killing a
process. I learned this in IT. When a screen froze, the IT…
Published: February 14, 2022 • 2 min read A convention I see, particularly in Ruby tests, are variable names like this: Swap these out for and , or and , and you
have a very…
Published: February 10, 2022 • Updated: June 01, 2023 • 2 min read Any command you type out manually, or even tab-complete a few times, can be
shortened. A common shortening technique is the terminal alias…
Published: February 09, 2022 • Updated: January 03, 2023 • 5 min read Open a production Ruby file, and you’ll often see this magic comment at the
top. Today I’d like to argue that most Ruby files do not need…
Published: February 07, 2022 • Updated: January 23, 2023 • 3 min read When I create Agile bug tickets, I don’t add Agile story points. In this post,
I’d like to explain this preference via two arguments…
Published: February 04, 2022 • 3 min read
I’ve written a weekly summary for myself and my teams for years. In this post,
I’ll explain why I do and how I use this tool. Why Write a…
Published: February 02, 2022 • 2 min read Here’s a technique I’ve used on launches: instead of a big scary waterfall, or,
in tandem with a phased release, let customers opt into a…
Published: January 31, 2022 • Updated: July 02, 2023 • 3 min read “How do I find a programming mentor?” I feel grateful to have collected a group of mentors over the years. I call on
them frequently to talk…
Published: January 29, 2022 • 2 min read
An engineering technique I recommend: when you sign up for any service, even on
a side project that’s just getting off the ground, create an…
Published: January 27, 2022 • Updated: June 07, 2023 • 3 min read I enjoy answering questions on Stack Overflow. It
helps me learn about common challenges and practice reviewing code. In the
beginning, it…
Published: January 25, 2022 • Updated: January 25, 2023 • 3 min read Here’s a kind of assertion I see often in tests: And here’s that same assertion with a hard-coded expectation, which is almost
always better…
Published: January 24, 2022 • Updated: June 13, 2023 • 2 min read When possible, I prefer to use the presence of data as a boolean, rather than a
boolean itself. Here’s a problematic pattern I see a lot in…
Published: January 19, 2022 • Updated: January 31, 2023 • 2 min read An idea I find useful as an individual contributor is starting my consulting
with this phrase: “I think that…“. The idea is to let your…
Published: January 15, 2022 • Updated: September 05, 2023 • 2 min read Me: Hey, I’m experiencing an issue with your software. Here’s a detailed bug report.
SaaS CTO: What you’re describing isn’t possible…
Published: October 13, 2021 • 2 min read What should you focus on at the beginning of your programming career? My answer is: being really good at programming. “Be So Good They Can’t…
Published: August 30, 2021 • Updated: November 26, 2022 • 2 min read The statements at the top of a JavaScript component file can be a
confusing, duplicative, churning mess. Is there a way to organize them…
Published: August 26, 2021 • Updated: July 17, 2023 • 3 min read Refactoring (noun): a change made to the internal structure of software to
make it easier to understand and cheaper to modify without…
Published: August 24, 2021 • 3 min read
Here’s a scenario: you’re applying for your first tech job. You’ve found a
bunch of tutorials like Rails Tutorial and you’re speeding…
Published: August 04, 2021 • 2 min read This week in conversation I made this argument: Working at a quality software development consultancy like
Hashrocket early in your…
Published: April 02, 2021 • Updated: December 31, 2022 • 2 min read Today I’d like to explain the , or subject, registered claim of a JSON Web
Token. Registered claims are predefined fields of the JWT that…
Published: February 26, 2021 • Updated: August 21, 2023 • 3 min read Here’s a Ruby class that claps: And here’s me using an instance of it to do something surprising. is not defined in , or any parent of it…
Published: January 25, 2021 • Updated: May 23, 2023 • 2 min read “First thing in the morning, eat a live frog, and you can go through the rest
of your day knowing the worst is behind you.”
— Mark Twain A…
Published: December 06, 2020 • 2 min read I’ve been learning a bit of Python this Fall to facilitate conversations with a
mentee. In this post, I’m going to share the first Python…
Published: December 05, 2020 • 3 min read A self-teaching, learning programmer asked me the following question: Can you recommend any resources or sites that you go to with questions…
Published: November 26, 2020 • Updated: June 30, 2023 • 6 min read I love Vim. Folks who’ve programmed with me, or attended a Vim Meetup when I
was an organizer, can attest. When I was learning to code…
Published: October 29, 2020 • Updated: October 01, 2023 • 11 min read Programming is a new and abstract field, and so we place great emphasis on
ideas. How should we deliver value? How should we prevent defects…
Published: October 20, 2020 • 4 min read I’ve been working on a development roadmap for my projects, and wanted to share
my process. Consider this my recipe to turn an idea into…
Published: October 16, 2020 • Updated: October 31, 2023 • 2 min read Here’s a familiar scenario: you open a new terminal, and before the prompt
appears, you see the following. You have new mail. What’s going…
Published: October 11, 2020 • 2 min read Sometimes a post is just for me, and this is likely one of those posts. Several
of my open source projects run on Heroku, and I often want…
Published: October 09, 2020 • 2 min read I’m working on a team where we keep a clone of the branch (the main
place where work is done), used to deploy to a QA environment. The…
Published: August 03, 2020 • 2 min read Unused dependencies are bad: they increase the size of your project, slow down
your processes, require upgrades, and send incorrect messages…
Published: December 30, 2019 • 2 min read I’ve been using Ripgrep on my work machine, and for pure performance,
it’s tough to beat. Here are two mappings I’ve set up to replace…
Published: September 28, 2019 • 3 min read “Not all readers are leaders, but all leaders are readers.” –Harry S. Truman It’s been said that most programmers read less than one…
Published: September 11, 2019 • Updated: October 04, 2023 • 3 min read I’ve practiced TDD (Test-Driven-Development) a lot and feel knowledgable about when it’s useful and when it isn’t. In this post,
I’d like to…
Published: July 29, 2019 • 2 min read I’ve been doing Exercism’s TypeScript exercises, and wanted to share some of my
early solutions. A pangram is a sentence that contains each…
Published: June 11, 2019 • 2 min read Today, using parts of this Gist I
found a command to clone all the repos in a Github organization. Here it is,
tested on Ruby 2.3: Change…
Published: July 17, 2018 • 2 min read A few weeks ago, I built an app with React.js and create-react-app that I call
‘JavaScript Equality’. View deployment here. This application…
Published: July 11, 2018 • 2 min read My current favorite command line alias is , composed of four other aliases: Here’s what this does (starting from a feature branch…
Published: July 09, 2018 • Updated: March 29, 2023 • 2 min read A user opened an issue in Tilex last week that I spent a significant amount of
time thinking about and talking about (thanks JB) before…
Published: February 17, 2018 • 2 min read I’ve been working with the Elixir 1.6 autoformatter a lot this year. Part of
that journey was adding the following to my local Vim…
Published: September 17, 2017 • 2 min read
Recently I tried to answer a question that is common when talking about software. I’ll paraphrase: Why can’t there be an “universal…
Published: August 09, 2017 • Updated: April 19, 2023 • 9 min read I’ve been giving technical talks for a few years, and I’m speaking at the Vim
Chicago Meetup next month about integrating React with Vim. In…
Published: July 19, 2017 • 2 min read When a stakeholder asks for a change to the software we’re developing, my
typical response is, roughly: “Sure thing.” Then later: “I’m…
Published: June 19, 2017 • 2 min read Mold clay to form a bowl; it is the empty space which makes the bowl useful.
–Tao Te Ching There’s a detail about Today I Learned some might…
Published: June 10, 2017 • 2 min read
Write programs that do one thing and do it well. –The Unix Philosophy I believe in working small. I love small Git commits and pull requests…
Published: June 05, 2017 • 2 min read First, some background. Tilex, our Phoenix port of Today I Learned, is
coming really well. After a personal hiatus for RailsConf prep, I’m…
Published: May 04, 2017 • Updated: December 30, 2022 • 2 min read This week I wrote an algorithm in Ruby to convert binary numbers into decimal
numbers. Here’s the problem description, from Exercism…
Published: February 11, 2017 • 3 min read
I created this blog to reflect on my code and development as a
programmer. In that spirit, I’d like to make a pitch to
anybody reading: you…
Published: January 07, 2017 • 2 min read We introduced some breaking database changes to our Phoenix port of Today I Learned on Friday; today I deployed them to staging. Resetting…
Published: December 17, 2016 • 2 min read My first PR to a new Vim plugin was merged this week, check it out. For context, vim-termbux is a plugin by my friend Dillon Hafer that…
Published: November 29, 2016 • 2 min read Last week, I started a new project: porting Today I
Learned from Ruby on Rails to Phoenix (Elixir).
The first few commits were pair…
Published: September 11, 2016 • 2 min read Today I solved the Exercism Hamming Distance problem in Elixir. Problem Description From Exercism: Write a program that can calculate the…
Published: August 26, 2016 • Updated: January 03, 2023 • 2 min read Today I solved Exercism’s Sum of Multiples problem in Elixir.
Here’s the description of the task: Write a program that, given a number, can…
Published: July 31, 2016 • 4 min read I’ve been working through the Elixir challenges on Exercism.io, to learn the language in the same way James Edward Gray recently attempted…
Published: July 15, 2016 • 2 min read What is one skill I could learn to set myself apart from other apprentice candidates? Testing. The web frameworks of today all have mature…
Published: July 06, 2016 • 2 min read I’ve been learning and using Elixir lately, and loving it. More than once, I’ve been asked some version of the question: why are you…
Published: July 04, 2016 • 2 min read Sigils are a mechanism for working with textual representations in Elixir. If you’ve ever made an array of Strings in Ruby with , the API is…
Published: July 03, 2016 • 5 min read Most pull requests go through a cycle like this: Programmer opens pull request Maintainer gives feedback Programmer makes changes Repeat #…
Published: June 30, 2016 • 2 min read I’m learning Elixir, and today as an exercise, I was challenged to recreate using recursion. For those new to the language, iterates over…
Published: June 28, 2016 • 2 min read Recently a friend asked me this question about server-side sorting in Rails: I’m working on an app that displays movies.
The index page…
Published: April 20, 2016 • 2 min read After a recent talk I gave that included VimScript, an attendee asked a
question about the differences between , , and
following in a Vim…
Published: March 06, 2016 • 2 min read A while back I tackled the following programming challenge: From One End to the Other: Find the smallest possible
(positive) integer that…
Published: March 06, 2016 • 2 min read A few weeks ago I attempted to solve a programming challenge that was described as such: LED Clock: You are (voluntarily) in a room that is…
Published: March 06, 2016 • 2 min read A while ago, I solved the following programming challenge: Round Robin: Given 3 Teams (A, B, C), we want to organize a tournament schedule…
Published: March 06, 2016 • Updated: July 26, 2023 • 2 min read A few weeks back I tackled the following programming challenge from my colleague Josh Branchaud: Vim Buffer 🐈⬛ I open up a new Vim buffer…
Published: November 03, 2015 • 2 min read
This month marks three years since I started programming; I’d like to take a
minute and reflect on this milestone. Programming is Awesome…
Published: October 30, 2015 • Updated: March 20, 2023 • 2 min read Today I submitted my first pull request to The Silver
Searcher project: PR #782 Silver Searcher is a fantastic command line search tool. I…
Published: October 13, 2015 • 2 min read Today while hacking on Rails I stumbled upon the Tmux ‘list sessions’ command. (where is your Tmux leader) opens a list of all your Tmux…
Published: October 03, 2015 • 2 min read I made a new gem today, called Remarkovable. The source code is here: https://github.com/jwworth/remarkovable This gem extracts the Markov…
Published: September 11, 2015 • Updated: January 04, 2023 • 2 min read Project announcement! Last night I built a Markov Chain-generated
novel, titled Ceramic Nation. It’s presented as a robot named Ellis…
Published: February 22, 2015 • 2 min read Recently, I was thinking about the N + 1 problem. N + 1 is a performance issue in a web application, where a method call unleashes a torrent…
Published: January 21, 2015 • 6 min read A few years ago, I wrote my first computer program. It was a line of JavaScript
that printed my name on the screen, using the website…
Published: October 31, 2014 • 2 min read Explore a Rails app, and you might see something like this: What is that , you might be wondering? It’s shorthand for this: Often in Ruby…
Published: August 27, 2014 • 2 min read This week in Code Club we explored Rack, the middleware of the Rails stack.
Rack is newsworthy of late due to a change in ownership…
Published: August 22, 2014 • 2 min read The Vim adventures continue. Today I started reading through the ‘help’ section, which is vast and full of surprising ideas. Starting to…
Published: August 20, 2014 • 2 min read Starting with this blog post, I will be using Vim as my primary text editor. When I started programming, I was on a Windows machine. I used…
Published: May 08, 2014 • 2 min read The Unix command line is powerful. Before doing anything in a GUI, I usually first try to see if it can be done in the command line. Often…
Published: April 08, 2014 • 2 min read One tool that I love allows you to take the output of a terminal command and save it in a file. That command is: An example: This runs the…
Published: March 31, 2014 • Updated: October 10, 2023 • 2 min read I have one computer monitor on my desk. Not long ago, this was common, but
today, many people have two, three, or four monitors. In this…
Published: February 09, 2014 • 2 min read
I’ve been writing code for a few years now, and am proud to be launching my own
developer’s blog. The developer’s blog is a time-honored…
Join 100+ engineers who subscribe for advice, commentary, and technical deep-dives into the world of software.