Jake Worth

Jake Worth

Written by Jake Worth, a developer at Hashrocket based in Chicago. Learn about Jake Follow on Twitter

Gatsby Port

January 05, 2019

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

Adventures in Mentorship

January 03, 2019

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, 2018

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, 2018

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, 2018

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

50 Days of Code

October 31, 2018

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 here and reflect on…

100 Days of Code

September 08, 2018

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, 2018

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, 2018

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, 2018

A user opened an issue in Tilex last week that I spent a significant amount of time thinking about and bouncing off colleagues (thanks JB…

How I Talk: Practice and Delivery

March 08, 2018

This post is part of a series about preparing technical talks; the introduction is here . Today, I’ll be covering the final steps of my…

Autoformat Elixir on Buffer Write

February 17, 2018

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, 2018

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…

How I Talk: Researching and Preparing Slides

December 29, 2017

This post is part of a series about preparing technical talks; the introduction is here . Today, I’ll be covering the third step of my…

Updating Tilex's README

November 13, 2017

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, 2017

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: Brainstorming

August 29, 2017

I’m writing a blog post series about preparing technical talks; the introduction is available here . Today, I’ll be covering the second…

How I Talk: Finding An Idea

August 18, 2017

I’m writing a blog post series about preparing technical talks; the introduction is available here . Today, I’ll be covering the first part…

How I Talk

August 10, 2017

I’ve been giving technical talks for a few years. I keep a list here . Speaking about my craft onstage is nerve-wracking, and a major time…

Twelve Labors: End

August 09, 2017

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…

Rails New Feature Flags in 5.1.3

August 06, 2017

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, 2017

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…

Pairing is Hard Work

August 01, 2017

We pair program most of the time at Hashrocket, and as a result I’ve been pair programming almost every workday for nearly three years. I’ve…

It's done

July 19, 2017

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, 2017

Thirty spokes unite at the single hub; It is the empty space which makes the wheel useful. Mold clay to form a bowl; It is the empty space…

Work Small

June 11, 2017

Write programs that do one thing and do it well. – The Unix Philosophy I love small commits. When I commit a change, I like a short message…

Tilex Progress

June 06, 2017

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, 2017

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

You Should Blog

February 11, 2017

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, 2017

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 Database

January 08, 2017

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, 2017

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, 2016

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, 2016

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, 2016

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, 2016

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, 2016

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 to Phoenix: Initial Commits

November 29, 2016

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, 2016

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, 2016

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

Hamming Distance in Elixir

September 12, 2016

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, 2016

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, 2016

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, 2016

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, 2016

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, 2016

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, 2016

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, 2016

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, 2016

What does it mean to ‘squash’ a Git branch? Disclaimer: This process alters history, so do it on a feature branch, not the default branch…

Recreating Enum.sum

June 30, 2016

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

June 28, 2016

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…

Maintaining Focus

June 16, 2016

I think the hardest thing about being a developer is maintaining focus. I am as guilty of distraction, FOMO, and indecisiveness as anybody…

What is the best way to learn Rails?

June 14, 2016

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, 2016

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, 2016

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, 2016

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, 2016

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, 2016

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…

4-9-16 Update

April 09, 2016

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, 2016

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, 2016

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, 2016

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, 2016

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, 2016

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, 2016

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, 2016

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 (Week One)

January 10, 2016

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, 2016

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

Hard Mode: Keyboard Edition

December 17, 2015

It’s been a month since I replaced all the keys on my keyboard with blank keys. Here’s a picture of my current rig: https://twitter.com…

40 Day Github Streak

December 09, 2015

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, 2015

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, 2015

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…

I'm a Rustacean

November 06, 2015

Today I wrote my first program in the Rust language. It’s a simple coin toss game. The source code is here: https://github.com/jwworth/coin…

Three Years Programming

November 04, 2015

This month marks three years since I started programming; I’d like to take a minute and reflect on this milestone. Programming is Awesome…

Rails Pull Request #22140

November 01, 2015

Today I submitted another pull request to Rails: https://github.com/rails/rails/pull/22140 This was my sixth merged pull request to this…

Silver Searcher RDoc Support

October 31, 2015

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, 2015

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, 2015

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…

Action Name

October 07, 2015

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…

After Commit Callback

October 05, 2015

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

Remarkovable

October 04, 2015

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, 2015

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, 2015

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, 2015

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, 2015

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, 2015

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, 2015

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, 2015

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, 2015

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…

Scrapp Reboot

May 20, 2015

Over the past month I completely overhauled Scrapp . I wrote Scrapp on a train to Champaign-Urbana, as a demo of my skills as a junior…

60 Days 60 Hacks Week 1

May 14, 2015

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

60 Days 60 Hacks

May 07, 2015

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, 2015

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

N + 1 Problem and N Plus

February 22, 2015

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…

My First Ember.js App

February 07, 2015

The last two weeks I’ve been diving into JavaScript frameworks, culminating in my first Ember.js app. I built it with Vic Ramon’s Ember…

Week 4: The DOM

January 23, 2015

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, 2015

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, 2014

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, 2014

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, 2014

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, 2014

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, 2014

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…

30 Days of Vim

September 23, 2014

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…

Scrapp

September 04, 2014

Today I am announcing the launch of Scrapp . Scrapp is an app for tracking Scrabble games. It allows you to record players, scores, and…

Code Club: Rack and Rails Server

August 27, 2014

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, 2014

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

Rails Pull Request #16603

August 22, 2014

Yesterday I made my second contribution to Rails. Here’s how it happened. I had been looking for ways to contribute. I use Rails for…

Vim or Bust

August 20, 2014

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, 2014

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

Code Club

August 18, 2014

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, 2014

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, 2014

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, 2014

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, 2014

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, 2014

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…

My Keyboard: Microsoft Natural Ergonomic Keyboard 4000

May 13, 2014

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, 2014

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, 2014

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, 2014

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 (Unix)

April 09, 2014

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, 2014

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…

Sinatra Pull Request #126

March 28, 2014

Reading Sinatra’s documentation today, I found a few things to improve. I checked and didn’t see anybody working on them, so I decided to…

Why I Like Git

March 27, 2014

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…

My First Pull Request: SASS

March 24, 2014

SASS bills itself as ‘the most mature, stable, and powerful professional grade CSS extension language in the world’. It’s called an…

My First Pull Request: Capistrano

March 20, 2014

The makers of Capistrano describe it as a ‘remote server and automation tool written in Ruby’. Capistrano allows you to script repetitive…

My First Pull Request: Sinatra

February 28, 2014

When I was learning Ruby, Sinatra was the first framework I used. It’s popular in Ruby tutorials because it’s easy to use and understand…

My First Pull Request: HAML

February 19, 2014

My first pull request to HAML was merged yesterday. I love the open source community. The tools I use every day are maintained by teams…

Hello World!

February 09, 2014

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…