Jake Worth

Jake Worth

I'm Jake Worth, a web developer. Home About Now Newsletter

My Development Roadmap

October 20, 20201 min read

I’ve been working on a development roadmap for my projects, and wanted to share my process. Consider this a recipe to turn an idea into…

You Have New Mail

October 16, 20201 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

October 13, 20201 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

October 11, 20201 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…

My RubyConf 2020 Abstract

October 10, 20202 min read

This Fall, I learned that I’ve been selected as a waitlisted speaker to RubyConf 2020. What’s the waitlist? Conference organizers have to…

Duplicate your Development Branch for QA

October 09, 20201 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…

How I Clean Up JavaScript Dependencies

August 03, 20201 min read

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

Introducing React Explained

June 12, 20201 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

May 07, 20201 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

January 30, 20201 min read

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

My Annual Review 2019

December 31, 20193 min read

Every year I conduct an annual review to reflect on the ending professional year. I share the results of that review on this blog. For those…

Searching with Ripgrep

December 30, 20191 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…

WebAssembly 101

December 18, 20191 min read

I’m happy to announce that in January 2020, I’ll be giving my first presentation about WebAssembly to my colleagues at Hashrocket, in a…

Open Source Again

December 14, 20191 min read

Today, I opened the source code to this blog on GitHub! 🎉 https://github.com/jwworth/jakeworth The previous iteration of this application…

A Different Language

October 12, 20191 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…

Developer Reading List

September 28, 20193 min read

What books have shaped me as a programmer? In the post, I’d like to share my personal developer reading list. Some of these books are…

Intro to TDD

September 11, 20192 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…

ACR 2019: Functioning in React

September 04, 20191 min read

This October I’ll be presenting a talk titled Functioning in React: A Deep-Dive into useState at Ancient City Ruby in Jax Beach, FL…

How to Prepare for a Technical Interview

August 06, 20191 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

July 29, 20191 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

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

Neural Networking for Complete Sentences

May 19, 20191 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

April 11, 20191 min read

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

April 09, 20191 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

March 08, 20191 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

February 23, 20191 min read

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

February 05, 20191 min read

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

TypeScript Node Module Starter

January 18, 20191 min read

Recently I started writing a Node module, and I realized I wanted unit tests and type safety from the start. This led to a spin-off project…

Porting from Rails to Gatsby

January 05, 20191 min read

Jake Worth Dot Com power-users will notice that I’ve revamped this site. This week I transitioned this blog from a Ruby on Rails app to…

Adventures in Mentorship

January 03, 20191 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…

My Annual Review 2018

December 31, 20182 min read

Each year I conduct an annual review to help me reflect on the ending year. Here’s this year’s entry. News This was an important year for me…

Avoiding Code Catastrophes

December 04, 20181 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…

Morning Reading

November 14, 20181 min read

Today I read some technical blog posts that caught my eye over the week. Here’s a summary of each. Beyond Console Log : a breakdown of some…

50 Days of Code

October 31, 20181 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…

100 Days of Code

September 08, 20181 min read

For the next 97 days, I’ll be doing the 100 Days of Code challenge. I vow to code for at least an hour every day until mid-December…

JavaScript Equality

July 17, 20181 min read

A few weeks ago, I built an app with React.js and create-react-app that I call ‘JavaScript Equality’. It’s deployed here: https://javascript…

mgrim: Everything Updated All The Time

July 11, 20181 min read

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

Comprehensive Instructions

July 09, 20181 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

February 17, 20181 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…

My Annual Review 2017

January 01, 20183 min read

Each year I conduct an annual review to help me reflect on the ending year. Here’s a link to last year’s. What Went Well I learned a lot…

Updating Tilex's README

November 13, 20171 min read

Today was day one of the Code Quality Challenge . I think it’s a great professional challenge and am excited to be in the first cohort. For…

The Universal Programming Language

September 17, 20172 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

August 10, 201710 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…

Twelve Labors: End

August 09, 20172 min read

In a recent post , I discussed my plan to review one of the very first programs I ever wrote, ‘Twelve Labors’: https://github.com/jwworth…

New Feature Flags in Rails 5.1.3

August 06, 20171 min read

Not long ago I created a new Ruby on Rails web application using the Rails 5.1.3 release. Our goal was a Rails API supporting a React.js…

Twelve Labors: Start

August 02, 20172 min read

Over the next few days, I’m planning to code review one of the very first programs I ever wrote, ‘Twelve Labors’. It’s a rough, basic stab…

It's Done

July 19, 20172 min read

A coworker recently taught me a client management technique that I love ❤️. When a stakeholder asks for a change to the software we’re…

Don't Build Every Feature

June 20, 20171 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

June 11, 20172 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

June 06, 20172 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…

Binary to Decimal Conversion in Ruby

May 04, 20172 min read

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

You Should Blog

February 11, 20173 min read

This week marked the third anniversary of my blog. It started here . I created this blog to reflect on my code and development as a…

First Post in the Semaphore Community

January 25, 20171 min read

Today I am pleased to share my first post in the Semaphore community, available here . This is a republication of a post from the…

Reset an Ecto Heroku Postgres Database

January 08, 20171 min read

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

January 06, 20171 min read

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

My Annual Review 2016

December 24, 20164 min read

Each year I conduct an annual review to help me remember the things that went well, reflect on areas where I can improve, and focus on the…

Vim Nonrecursive Mappings

December 17, 20161 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…

Git Bisect Demo Pt. 2

December 11, 20162 min read

This week I rebuilt my Elixir Git Bisect Demo project in Ruby; it’s available here . Doing so allowed me to demo an automated Git bisect…

Examine Your Assumptions

December 05, 20162 min read

Pausing to verbalize, examine, and reject faulty assumptions should be one of the first steps in any debugging process. One feature of an…

Git Bisect Demo

December 02, 20161 min read

I just built a new project, called ‘Git Bisect Demo’. It’s available here . Purpose The purpose of this program is establish conditions…

Porting TIL from Rails to Phoenix: Initial Commits

November 29, 20161 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…

My Reading List for the Winter

November 07, 20161 min read

Inspired by this post by Gregory Brown, I’d like to share the books I’m planning to read in the cold Chicago winter. By diving into these…

Gold Master Testing: An Introduction

October 26, 20161 min read

I’ve been researching, thinking about, and preparing to write a Gold Master test recently. Here’s an overview of the technique from the…

Hamming Distance in Elixir

September 12, 20162 min read

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

August 27, 20161 min read

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

July 31, 20164 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…

One Skill for an Apprentice Candidate

July 15, 20161 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?

July 06, 20161 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…

My Hashrocket Blogroll

July 06, 20161 min read

My coworkers rock. Collaborating with really smart people is one of the best parts of Hashrocket. It’s exciting and challenging. Besides…

Why is Your Blog on Rails?

July 04, 20162 min read

Why is your blog on Rails? I’ve been asked this several times. With all the great alternatives such as Github pages and Jekyll, why choose…

Writing Elixir Sigils

July 04, 20162 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…

Squash Your PR

July 03, 20165 min read

The Idea What does it mean to squash a Git branch? Most pull requests go through a loop like this: Open pull request Maintainer gives…

Recreating Elixir's Enum.sum

June 30, 20161 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…

Server Side Sorting in Ruby

June 28, 20162 min read

Recently a friend asked me a question about sorting in Rails, and I thought I’d share my answer here: I’m working on an app that displays…

What is the best way to learn Rails?

June 14, 20161 min read

Original post: https://www.quora.com/What-is-the-best-way-to-learn-rails/answer/Jake-Worth Assuming you are interested in learning on your…

Are web development jobs stable?

June 10, 20161 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…

Upgrade To Rails 5

May 31, 20161 min read

Today I upgraded this blog to the Rails 5 first release candidate. Here is the pull request where the changes were made: https://github.com…

60 Days 60 Contributions

May 19, 20162 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

April 21, 20161 min read

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

April 16, 20164 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…

April Update

April 09, 20163 min read

Consider me inspired: Here’s what I’ve been learning and working on. Learning My learnings live here: https://til.hashrocket.com/authors…

Round Robin Problem in Lua

March 07, 20161 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…

Vim Buffer Problem

March 07, 20161 min read

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

March 06, 20162 min read

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

March 06, 20162 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…

Book Club: Elm

February 07, 20162 min read

This week at Hashrocket Chicago we had the third meeting of an internal company book club. Our focus was chapter three of Seven More…

Book Club: Factor

January 22, 20162 min read

This week at Hashrocket Chicago, we had the second meeting of an internal company book club. Our focus was chapter two of Seven More…

Expose Your Ignorance

January 15, 20161 min read

I’m currently reading Apprenticeship Patterns by Dave Hoover and Adewale Oshineye; it’s fantastic. I wish I’d read it when starting out…

Book Club: Lua

January 10, 20163 min read

This week at Hashrocket Chicago we had the first meeting of an internal company book club. This was something I’d been interested in for a…

My Annual Review 2015

January 01, 20165 min read

2016 is here! Each year I conduct an annual review, counting successes and failures, looking forward to the future, both personal and…

My Blank Keyboard

December 17, 20152 min read

It’s been a month since I replaced all the keys on my keyboard with blank keys. Ok, I kept four of the original keys, which spell my name…

40 Day Github Streak

December 09, 20151 min read

This week I hit 40 days of consecutive daily open source pushes to Github, besting my previous record of 18 days. It’s been an insightful…

Resources

November 27, 20151 min read

This week I created a new project on Github, ‘Resources’, available here: https://github.com/jwworth/resources ‘Resources’ is a collection…

20 Day Github Streak

November 17, 20151 min read

As of today I’ve pushed open-source code to Github every day for twenty days, a personal record. I don’t know when I’m going to stop; most…

Three Years Programming

November 04, 20152 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

October 31, 20151 min read

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

Blog Redesign Part 2

October 30, 20151 min read

Tonight I overhauled the look and feel of my blog (again). This blog started as a Wordpress app with a generic theme. During RailsConf 201…

Tmux List Sessions

October 13, 20151 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…

Rails Action Name Method

October 07, 20151 min read

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

October 05, 20151 min read

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

Remarkovable

October 04, 20151 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

October 01, 20151 min read

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…

Buy The Book

September 26, 20152 min read

One trick that helps me learn as a developer is something I call ‘buy the book’. I get book recommendations all the time from my peers. If…

Ceramic Nation

September 11, 20151 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…

60 Days 60 Hacks Retrospective

July 09, 20152 min read

I’m finished with my learning project #60days60hacks. The project is over, but the learning continues. Some rough stats: I wrote twelve…

60 Days 60 Hacks Week 6

June 18, 20151 min read

I’m now six weeks into my learning project #60days60hacks. I’d like to take a minute and reflect. This week I’ve written about Vim, RSpec…

60 Days 60 Hacks Week 5

June 13, 20151 min read

I’m now five weeks into my learning project #60days60hacks. I’ve been documenting this all on Today I Learned , a project I built with my…

60 Days 60 Hacks Week 4

June 05, 20151 min read

I’m now one month into my learning project #60days60hacks. The bulk of my writing is now going into Today I Learned , a project I’ll…

60 Days 60 Hacks Weeks 2 & 3

May 28, 20151 min read

I’m now three weeks into my learning project #60days60hacks. Writing every day has been fun and challenging. It’s forced me to be creative…

60 Days 60 Hacks Week 1

May 14, 20151 min read

The first week of my project #60days60hacks. Committing to learning and posting something new and useful every day has been a good exercise…

60 Days 60 Hacks

May 07, 20151 min read

For the next 60 days, I’m doing a project to level up in all areas of my craft. I’m calling it ‘60 Days 60 Hacks’. Learning is the essence…

New Blog

May 07, 20151 min read

Frequent visitors to this blog will notice it looks different lately. The previous version of this blog was written in Wordpress PHP and…

The N + 1 Problem

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

Week 4: The DOM

January 23, 20153 min read

This week I’ve been learning more about the Document Object Model, known as the DOM. I’d like to summarize my thoughts, with the goal of…

Learning to Program as a Career Change

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

Week 51

December 19, 20142 min read

It’s getting cold in Chicago. Luckily, programming is an indoor activity. This week I wrote my first proper Ruby gem, then wrote two more…

Week 50

December 12, 20142 min read

This was an interesting week. I worked on some open source projects, experimented with the Pure Data language, and learned some new Ruby…

Week 49

December 05, 20143 min read

This week was awesome. I learned every day and hope to bring some new ideas to my work. A recurring theme was testing; some notes: TDD…

Week 48

November 26, 20143 min read

This week I learned a lot. I picked up some new (old) slang, with the term ‘bare metal’. Here is a definition from the awesome Jargon File…

Ruby Symbol#to_proc

October 31, 20142 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…

30 Days of Vim

September 23, 20142 min read

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

August 27, 20142 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…

Vim Cheat Sheet

August 22, 20142 min read

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

August 20, 20142 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…

Code Club: Rails Console

August 19, 20142 min read

Another week, another showdown in the Code Club. Still being challenged by the one-hundred line requirement. We keep it (generally) because…

Code Club

August 18, 20143 min read

At Rails Conf 2014, I watched a talk by Saron Yitbarek called Reading Code Good . Saron shared a story (and great slides) about creating a…

Heroku PGBackups Testing

August 06, 20145 min read

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

Technical Interview Questions

July 15, 20143 min read

I recently had the chance to give a technical interview. I’d like to document how I set up the interview. These steps are mostly directed…

Principles of the Agile Manifesto: #2

June 24, 20142 min read

The second principle of the Agile Manifesto is: ‘Welcome changing requirements, even late in development. Agile processes harness change…

Principles of the Agile Manifesto: #1

June 17, 20142 min read

I’ve been learning about Agile software development this year. Agile is a software development methodology that was defined in 2001 with the…

Linux is Awesome

May 23, 20143 min read

I’ve been using Linux (Ubuntu 10.04 LTS and 12.04 LTS) for almost a year. It’s awesome. I grew up on Windows and thought I’d never switch…

Microsoft's Natural Ergonomic Keyboard 4000

May 13, 20142 min read

This week I’ve been trying to improve my workspace. Programming requires a lot of repetitive actions in a sedentary position, and I’m…

Mass-Opening Like Files in a Directory

May 08, 20142 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

April 30, 20142 min read

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…

Free Programming Books

April 15, 20141 min read

It’s a great time to learn programming. There has recently been an explosion of free online resources for every platform, including ebooks…

Save a Command's Output to a File

April 09, 20142 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

March 31, 20142 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…

Why I Like Git

March 27, 20142 min read

I’m lucky to have always programmed in a world with good version control tools. It’s one of the first things I learned and a foundation of…

Hello World!

February 09, 20141 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…