Jake Worth

Blog of Jake Worth, software engineer in Maine.

Favorite Posts

Latest Posts

How To Introduce New Ideas

Published: September 08, 2022 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…

Computers Can Be Understood

Published: September 06, 2022 2 min read

A big mental leap I made early in my programming was starting to view computers as something that could be understood. A computer is a…

TIL: Ignore Whitespace in Code Review

Published: September 05, 2022 2 min read
  • til
  • github

Reviewing a GitHub PR on that contains a lot of whitespace changes? This can make it challenging to evaluate the substance of a PR. Ignore…

TIL: Filter Network Requests By Status Code

Published: August 30, 2022 2 min read
  • til

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…

TIL: Suspend Vim

Published: August 29, 2022 2 min read
  • til
  • vim

Imagine you’re iterating on a script and you want to drop back to the terminal to experiment. Maybe you shell out in command mode. Maybe you…

Vim Scratchpad

Published: August 25, 2022 2 min read
  • vim

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…

Level Up Your Dash

Published: August 21, 2022 2 min read

One of my favorite programming tools is Dash. In this post, I’ll share some tips for leveraging this fantastic program. What’s Dash? Dash…

Prefer Real Data

Published: August 18, 2022 2 min read

When testing user input or data presentation, I prefer using realistic rather than random data. This might sound obvious, but it’s something…

Luck Played a Role

Published: August 15, 2022 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…

All My Best Debugging Tips

Published: August 05, 2022 6 min read
  • debugging

This is a list of all the best debugging tips I’ve picked up over the years. It’s inspired by ‘All my best programming tips’ by Jason…

Tmux Application Startup Script

Published: July 28, 2022 2 min read
  • tmux

My development environment depends on several processes running. Here’s how I’ve scripted this setup. Whenever I boot up, I need at least…

Broken Mental Model

Published: July 25, 2022 2 min read
  • debugging

Perhaps you’re familiar with this scenario: you’re debugging and you’re stuck . You’ve Googled and read some blog posts, Stack Overflow…

Retros Need Action Items

Published: July 19, 2022 2 min read
  • agile

Agile retrospectives should produce many action items. What Are Action Items? Action items are small, defined, actionable TODOs to follow up…

Better Than 'foo'

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…

Database Migration Checklist

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…

Logging an Object

Published: July 07, 2022 2 min read
  • javascript

When I log a JavaScript value in the console, I generally use an object literal. It’s a little thing with a big cumulative benefit. In this…

Why Ruby?

Published: June 30, 2022 2 min read
  • ruby

Why should someone learn Ruby in 2022? Ruby was my first programming language, and although I’ve drifted elsewhere, I write Ruby every day…

Objects as Props

Published: June 27, 2022 2 min read
  • javascript

A common frontend pattern is to pass an object as a prop. Consider an component that shows a user’s initials. What data should we pass to…

Naive Implementation

Published: June 23, 2022 2 min read

In this post, I’d like to document a technique I’ve used over the years: a naive implementation. A naive implementation takes imperfect…

Authentication vs. Authorization

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…

Spell Check With Vim

Published: June 15, 2022 2 min read
  • vim

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…

A Perfect Bug Report

Published: June 13, 2022 4 min read
  • debugging

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…

Make a Prediction

Published: June 08, 2022 2 min read
  • debugging

Imagine you’re debugging, and you’re getting stuck . Everything you try leads to another unexpected result. You can’t predict what’s going…

Desire Paths

Published: June 05, 2022 2 min read

Lately I’ve been thinking about desire paths. We’ve all seen a desire path . They are paths created by erosion from human and animal…

Think Hard

Published: June 01, 2022 2 min read

This is a response to Ben Kuhn’s ‘Think Real Hard.’ Ben starts by sharing a problem-solving checklist from scientist Richard Feynman…

PostgreSQL Polymorphism

Published: May 30, 2022 2 min read
  • postgresql

Scenario: you have a record that can belong to one record or another, but not both. But maybe you don’t like the polymorphism provided by…

Goodbye Shared Dotfiles

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…

Organizing React Components

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…

On Starting Over

Published: May 18, 2022 2 min read

I used to have a bad habit when working alone: I’d start a feature, begin questioning my progress, and start over from scratch. Sometimes…

Find the Breaking Git Commit

Published: May 17, 2022 3 min read
  • git

Something is broken, you can’t figure out why, and you’re wondering: how and when did this break? Maybe there are a lot of changes to…

Be Fast

Published: May 06, 2022 2 min read

Great programmers can be great because they are fast. I’ve sunk a lot of time into being proficient at Vim. I’ve used it as my text editor…

Commit Part of a File in Git

Published: May 06, 2022 2 min read
  • git

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…

One Way Out of a Function

Published: May 02, 2022 3 min read

A programming style that I like was described to me as: “one way out of a function.” The idea is that early returns cause confusion, and…

Am I Too Old to Become a Programmer?

Published: April 28, 2022 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…

It's Harder to Read Code Than Write It

Published: April 25, 2022 3 min read

In Things You Should Never Do, Part I , Joel Spolsky narrates Netscape’s ruinous decision to rewrite their browser from scratch. This…

On Code Screenshots

Published: April 19, 2022 2 min read

When I’m helping someone debug and they share a screenshot of code, I know that helping them just got harder. A common antipattern on sites…

Hash Fetch Instead of If/Else

Published: April 16, 2022 2 min read
  • ruby

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…

Get It Working First

Published: April 13, 2022 3 min read

I recently completed a winter survival course, where we had to a build a shelter with just the contents our packs, in ten minutes…

My psql Config

Published: April 12, 2022 2 min read
  • postgresql

RC files, thought to stand for “run command” files, are read by a program during startup. The file that configures the PostgreSQL REPL psql…

Exit Vim "Ex" Mode

Published: April 06, 2022 2 min read
  • vim

How does one exit Vim “Ex” mode? But first, how did you get into “Ex” mode? Probably with : If you got into this mode by accident, as I…

How to Read a Stack Trace

Published: April 05, 2022 4 min read
  • debugging

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…

RSpec.describe vs. describe

Published: April 02, 2022 2 min read
  • ruby

RSpec’s block has two common syntaxes. Which should you use? Disclaimer: they both work. But I’m assuming since you’re here, you’re…

Your Demo Doesn't Need Auth

Published: April 01, 2022 2 min read

When building a demo, I believe you often can and should skip authentication. Picture this: a junior engineer or team demoing an MVP. Smart…

The Importance of a Bug

Published: March 30, 2022 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…

Learn From It

Published: March 25, 2022 2 min read

You were stuck , and now you aren’t. Congratulations! Before you move on, I think that it’s vital to stop and learn from it. It’s the best…

Make Renames Easy

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…

How to Read Postgres Docs

Published: March 21, 2022 2 min read
  • postgresql

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 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…

Try Every OS

Published: March 14, 2022 2 min read

A perennial conversation in code boot camps where I’ve taught: which operating system is the best for web development? I think students see…

How to Make a New Directory and File in Vim

Published: March 11, 2022 2 min read
  • vim

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…

Autoformat Your Code

Published: March 10, 2022 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…

Don't Copy-Paste Dotfiles

Published: March 09, 2022 2 min read

A protip for dotfiles/configuration files: don’t add anything to them that you haven’t tried to understand and confirmed you want to have…

How I Review Code

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…

How I Make Sure I Understand a Feature Before Building

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…

Don't Stay Stuck

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…

Why Vim

Published: February 23, 2022 2 min read
  • vim

I’ve been using, teaching, and stanning Vim since almost the beginning of my programming career. Yet, when asked to explain this preference…

On Disabling Tests

Published: February 22, 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…

Count to Ten

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…

Avoid Similar Variable Names

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…

Alias Terminal Commands

Published: February 10, 2022 2 min read

Our goals in the terminal should be precision and speed. Speed matters because slow typing is friction between thought and action. Any…

Frozen String Comment: YAGNI

Published: February 09, 2022 4 min read
  • ruby

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…

Why I Don't Point Bugs

Published: February 07, 2022 2 min read
  • debugging

I generally don’t add Agile story points to a bug ticket and in this post, I’d like to explain this preference. I’ll cover terminology…

Weekly Summary Technique

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…

Opt Into Beta

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…

Finding a Mentor

Published: January 31, 2022 3 min read

“How do I find a programming mentor?” Let’s refine the question. What kind of advice do you need? If it’s growing your skills and advancing…

Use a Dev Email

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…

Answering Questions on Stack Overflow

Published: January 27, 2022 3 min read

I enjoy answering questions on Stack Overflow . It helps me learn and practice reviewing code. In the beginning, it also unlocked site…

Hard-Code Your Expectations

Published: January 25, 2022 2 min read

Here’s an assertion I see in tests: I push back against code like this because I think that hard-coded expectations are almost always…

Presence is Boolean

Published: January 24, 2022 2 min read

Here’s a problematic pattern I see a lot in frontend code: When you split and in two, it’s very easy to accidentally put the app into…

"I Think That..."

Published: January 19, 2022 2 min read

I think a mark of a mature engineer is having (strong) opinions (weakly held) that you can really articulate. An idea I find useful as an…

Bug Reports are Gold

Published: January 15, 2022 2 min read
  • debugging

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…

Get Good

Published: October 13, 2021 2 min read

What should you focus on at the beginning of your career? My answer is: being really good at programming. I wish I’d heard this advice…

Organizing Your JavaScript Imports

Published: August 30, 2021 2 min read
  • javascript

Is there a way to organize JavaScript import statements that makes sense? Perhaps you have a large component with a ton of imports, and they…

When Should I Not Refactor?

Published: August 26, 2021 2 min read

Refactoring (noun): a change made to the internal structure of software to make it easier to understand and cheaper to modify without…

The Tutorial Anti-Pattern

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…

Consultancy Cycles

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…

Exploring the JWT Sub

Published: April 02, 2021 2 min read

As I explore JSON Web Tokens (JWT; pronounced ‘jot’ if you enjoy correcting people), I’m learning the rules and testing, much like a…

Proxy Pattern

Published: February 26, 2021 2 min read

I had the opportunity recently to implement a simple version of a proxy class. In this post, I’d like to talk about what a proxy class is…

Do the Hard Things First

Published: January 25, 2021 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 An…

Exercism Raindrops in Python

Published: December 06, 2020 2 min read
  • python

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…

Programming Resources for Beginners

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…

My Annotated Vimrc

Published: November 26, 2020 4 min read
  • vim

I am obsessed with Vim. Folks who’ve programmed with me, or attended the Vim Chicago Meetup when I was an active organizer, can attest. Vim…

Essays on Programming I Think About a Lot

Published: October 29, 2020 • Updated: July 04, 2022 10 min read

Programming is a game of abstractions, and we programmers traffic in ideas. When I find an idea that resonates with me, I turn into an…

My Development Roadmap

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…

You Have New Mail

Published: October 16, 2020 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…

Printing Code on a Mac

Published: October 13, 2020 2 min read

A few times over the years, I’ve had to print out code that I’ve written onto physical paper. I have actually heard that some teams do team…

Restore a Heroku Database Locally

Published: October 11, 2020 2 min read
  • postgresql

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…

Duplicate your Development Branch for QA

Published: October 09, 2020 2 min read
  • git

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…

How I Clean Up JavaScript Dependencies

Published: August 03, 2020 2 min read
  • javascript

Unused dependencies are bad: they increase the size of your project, slow down your processes, require upgrades, and send incorrect messages…

Introducing React Explained

Published: June 12, 2020 2 min read

Today, I’d like to introduce my newest project, a free weekly newsletter for React learners called React Explained . 🎉 For as long as…

South Dakota v. Wayfair, Technology, and Your Business

Published: May 07, 2020 2 min read

Today I published a post on the Hashrocket blog titled ‘South Dakota v. Wayfair, Technology, and Your Business’. It covers a unique…

WebAssembly: The Next Language of the Web

Published: January 30, 2020 2 min read

Interested in WebAssembly? At Hashrocket’s Winter Miniconf 2020, I presented my personal one-month audit of this emerging technology. Please…

Searching with Ripgrep

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…

A Different Language

Published: October 12, 2019 2 min read

When people who don’t code listen to programmers talk about code, something they say is that it sounds we’re “speaking a different language…

Technologist Reading List

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…

Intro to TDD

Published: September 11, 2019 2 min read

If one wanted to learn Test-Driven Development, AKA TDD, in 2019, where should they start? It’s worth mentioning first that there are…

How to Prepare for a Technical Interview

Published: August 06, 2019 2 min read

Today, I published a post on the Hashrocket blog about interviewing. It’s called How to Prepare for a Technical Interview . Interviewing is…

Pangram in TypeScript

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…

Clone All of an Organization's Git Repos

Published: June 11, 2019 2 min read
  • git

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…

Neural Networking for Complete Sentences

Published: May 19, 2019 2 min read

This week I wrote a bit of neural networking code for the first time. It utilizes Brain.js to try and recognize if a sentence is…

Interview: Jeremy Huffman, Dialyxir

Published: April 11, 2019 2 min read
  • elixir

Today, I published a post on the Hashrocket blog presenting a recent interview I conducted. It’s titled Interview: Jeremy Huffman, Dialyxir…

Planning Poker: Speed Mode

Published: April 09, 2019 2 min read

Today, I published a post on the Hashrocket blog about rapidly assigning points in a story estimation workflow. It’s titled Planning Poker…

Pick a Good Name

Published: March 08, 2019 2 min read

Last week, I published a post on the Hashrocket blog about choosing good names for things in software. It’s called Pick a Good Name…

Use Yarn Like a Pro

Published: February 23, 2019 2 min read
  • javascript

Last week, I published a post on the Hashrocket blog about my favorite JavaScript package manager, Yarn. It’s called Use Yarn Like a Pro…

Generate Images for Instagram

Published: February 05, 2019 2 min read

Today I released a post on the Hashrocket blog, Generate Images for Instagram . It documents a project I made to generate Hashrocket…

Adventures in Mentorship

Published: January 03, 2019 2 min read

This fall, I participated in the formal mentorship program at the Code Platoon bootcamp here in Chicago, and I wrote about the experience…

Avoiding Code Catastrophes

Published: December 04, 2018 2 min read

Last week, I published a Hashrocket blog post for junior developers, addressing a question I’ve been asked a few times. It’s called…

50 Days of Code

Published: October 31, 2018 2 min read

Recently, I hit Day 50 of the ‘100 Days of Code’ challenge. I’ve been focused on language design, and I’d like to pause and reflect on that…

JavaScript Equality

Published: July 17, 2018 2 min read
  • javascript

A few weeks ago, I built an app with React.js and create-react-app that I call ‘JavaScript Equality’. View deployment here . This…

mgrim: Everything Updated All The Time

Published: July 11, 2018 2 min read
  • git

My current favorite command line alias is , composed of four other aliases: Here’s what this does (starting from a feature branch…

Comprehensive Instructions

Published: July 09, 2018 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…

Autoformat Elixir on Buffer Write

Published: February 17, 2018 2 min read
  • elixir
  • vim

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…

The Universal Programming Language

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…

How I Talk: My Guide to Tech Public Speaking

Published: August 10, 2017 10 min read

I’ve been giving technical talks for a few years; I keep a list of each one here . Speaking makes me nervous, and it’s a major time…

It's Done

Published: July 19, 2017 2 min read

When a stakeholder asks for a change to the software we’re developing, my standard response is, roughly: “Sure thing.” Then later: “I’m…

Don't Build Every Feature

Published: June 20, 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…

Work Small

Published: June 11, 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…

Tilex Progress

Published: June 06, 2017 2 min read
  • elixir

First, some background . Tilex, our Phoenix port of Today I Learned , is coming really well. After a personal hiatus for RailsConf prep, I…

Binary to Decimal Conversion in Ruby

Published: May 04, 2017 2 min read
  • ruby

This week I wrote a small algorithm in Ruby to convert binary numbers into decimal numbers. Here’s the problem description, from Exercism…

You Should Blog

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…

Reset an Ecto Heroku Postgres Database

Published: January 08, 2017 2 min read
  • elixir
  • postgresql

We introduced some breaking database changes to our Phoenix port of Today I Learned on Friday; today I deployed them to staging…

Adding jQuery to Phoenix

Published: January 06, 2017 2 min read
  • elixir
  • javascript

We’ve been building a Phoenix application lately; here’s the backstory . Today I stared porting the Sprinkles of JavaScript ™ to our…

Vim Nonrecursive Mappings

Published: December 17, 2016 2 min read
  • vim

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…

Porting TIL from Rails to Phoenix: Initial Commits

Published: November 29, 2016 2 min read
  • elixir
  • ruby

Last week, I started a new project: porting Today I Learned from Ruby on Rails to Phoenix (Elixir). The first few commits were pair…

Gold Master Testing: An Introduction

Published: October 26, 2016 2 min read

What is a Gold Master test? The idea is that you write a unit test that takes a known set of data (for instance, a production dump), feeds…

Hamming Distance in Elixir

Published: September 12, 2016 2 min read
  • elixir

Today I solved the Exercism Hamming Distance problem in Elixir. Problem Description From Exercism: Write a program that can calculate the…

Sum of Multiples in Elixir

Published: August 27, 2016 2 min read
  • elixir

Today I solved Exercism’s Sum of Multiples problem. Here’s the description of the task: Write a program that, given a number, can find the…

Run Length Encoding in Elixir

Published: July 31, 2016 4 min read
  • elixir

I’ve been working through the Elixir challenges on Exercism.io , to learn the language in the same way James Edward Gray recently attempted…

Learn to Test

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…

Why Elixir?

Published: July 06, 2016 2 min read
  • elixir

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…

Writing Elixir Sigils

Published: July 04, 2016 2 min read
  • elixir

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…

Squash Your Pull Request

Published: July 03, 2016 5 min read
  • git

Most pull requests go through a cycle like this: Programmer opens pull request Maintainer gives feedback Programmer makes changes Repeat #…

Recreating Elixir's Enum.sum

Published: June 30, 2016 2 min read
  • elixir

I’m learning Elixir, and today as an exercise, I was challenged to recreate using recursion. For those new to the language, iterates…

Server Side Sorting in Ruby

Published: June 28, 2016 2 min read
  • ruby

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…

Are Web Development Jobs Stable?

Published: June 10, 2016 2 min read

Original post: https://www.quora.com/Are-web-development-jobs-stable/answer/Jake-Worth Yes, as stable as any other job. If you look at…

60 Days 60 Contributions

Published: May 18, 2016 2 min read

For the next 58 days, I’m conducting a personal challenge to get more involved in the open source software community. It’s called ‘60 Days…

Keyword, Match, and Region in VimScript

Published: April 21, 2016 2 min read
  • vim

After a recent talk I gave that included VimScript, an attendee asked a question about the differences between , , and following in a…

Career Interview Questions

Published: April 16, 2016 4 min read

I was interviewed for a high school career day recently, and thought it would be fun to share my answers here: Please describe your current…

Vim Buffer Problem

Published: March 07, 2016 2 min read
  • vim

A few weeks back I tackled the following programming challenge: Vim Buffer: I open up a new Vim buffer and type all the numbers 1 to 10,00…

From One End to the Other in Ruby

Published: March 06, 2016 2 min read
  • ruby

A while back I tackled the following programming challenge: From One End to the Other: Find the smallest possible (positive) integer that…

LED Clock in Ruby

Published: March 06, 2016 2 min read
  • ruby

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…

Round Robin Problem in Lua

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…

Three Years Programming

Published: November 04, 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…

Silver Searcher RDoc Support

Published: October 31, 2015 2 min read
  • ruby

Today I submitted my first pull request to The Silver Searcher project: https://github.com/ggreer/the silver searcher/pull/782 Silver…

Tmux List Sessions

Published: October 13, 2015 2 min read
  • tmux

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…

Rails Action Name Method

Published: October 07, 2015 2 min read
  • ruby

Today I was trying to control what rendered on a page based on which controller action called it, and discovered the method. It’s located…

ActiveRecord After Commit Callback

Published: October 05, 2015 2 min read
  • ruby

Today I used a pretty awesome Rails callback, . executes after a database transaction completes, making it ideal for third-party…


Published: October 04, 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…

FileUtils For All

Published: October 01, 2015 2 min read
  • ruby

A step in the Ruby deploy scripts for one of my projects shells out as such: . This prevents all design artifacts from going out with the…

Ceramic Nation

Published: September 11, 2015 2 min read

Last night I built a Markov-powered generated novel, called Ceramic Nation . It’s wrapped as a robot named Ellis Champlin, who is…

The N + 1 Problem

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…

Learning to Program as a Career Change

Published: January 22, 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…

Ruby Symbol#to_proc

Published: October 31, 2014 2 min read
  • ruby

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…

30 Days of Vim

Published: September 23, 2014 2 min read
  • vim

It’s been a month since I started using Vim full-time; it’s time to reflect. To summarize, Vim is awesome, because it is fast, endlessly…

Code Club: Rack and Rails Server

Published: August 27, 2014 2 min read
  • ruby

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…

Vim Cheat Sheet

Published: August 22, 2014 2 min read
  • vim

The Vim adventures continue. Today I started reading through the ‘help’ section, which is vast and full of surprising ideas. Starting to…

Vim or Bust

Published: August 20, 2014 2 min read
  • vim

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…

Heroku PGBackups Testing

Published: August 06, 2014 5 min read
  • postgresql

We recently moved some of our environments, including their PostgreSQL databases, to Heroku. Heroku differs from a basic Linux server in…

Mass-Opening Like Files in a Directory

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…

RailsConf 2014 Wrap-Up

Published: April 30, 2014 2 min read
  • ruby

I just returned from Rails Conf 2014 here in Chicago. This was my first conference as a developer, and my first time being immersed in the…

Save a Command's Output to a File

Published: April 09, 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…

One Monitor

Published: March 31, 2014 2 min read

I have one computer monitor on my desk. Not long ago ago, this was the norm for everybody, but today, I am the only person in my office who…

Hello World!

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…

© 2022 Jake Worth.