intermediate_ruby     about     articles


👋 I’m Josh!

I write words for computers and people.

Intermediate Ruby is a spot for:

  • early-career engineers to grow in skills, confidence, proficiency
  • mid-career engineers to grow in skills, competence, and context
  • engineers hunting for their first job
  • engineers hunting for their second job
  • engineers hoping to be more skilled in their current job

I write everything with a goal that it feel accessible to someone of any skill level. If these resources feel to advanced for you, please let me know by opening a new Github issue.

I’ll either improve the resources so they’re more accessible (with your help) or I’ll point you towards some other resources that will help you build more of a foundation.

Is all of this free?

Currently, sorta. To you, the reader, if all you do is read things I’ve written, yes, it’s free.

If we spend time swapping slack DMs, phone calls, zoom calls, and I’m asking you questions and giving you input? I’ll ask that you sponsor me for an appropriate amount via GitHub Sponsors.

Start Here

The goal of Intermediate Ruby is for me to transfer as much useful-to-you information about anything that’s helpful to you. Most of the knowledge you might obtain will center on the process and the practice of software development.

To that end, I’ve got a bit of a mish-mash of resources for you. They are intended to be approximately “very friendly to an early-career software developer”, or anyone who’s completed a software development bootcamp.

On the flip side, There’s many developers who feel like they’re “solid mid-level developers”, and don’t know how to grow out of it.

I hope to be helpful to these populations as well.

So, here’s a way to start writing more code, and at a higher degree of skill. I think it’s critical to ‘explore widely’ and then pick whatever seems most interesting. Below, you’ll find six different projects that can help you write a lot of code, quickly, in a way that will feel like good practice. I’m proud of all of it, in different ways.

1. First-time Open-Source Contribution - A Guide

This four-part, carefully-edited/annotated/master-based learning1 walk-through

Replicate everything about creating this pull request, after reading this issue.

👉 Jekyll Bug Fix with Matt (a detailed code-along)

1. (Re)implement Fútbol

Click through to the repository, skim the readme, then start looking at some of the classes.

This is my implementation of a project that, when I first encountered a similar project early in my career, took me two weeks to do.

This time around, it took just a few hours, and it’s much, much better than my first attempt.

So, if in looking at the code, you wish you could write code more like it, start following the instructions in the repository readme.

I will walk you through every single line of code in this repository, in detail.

Futbol Project Implementation

Of the people that I know have worked through the above resource, 100% of them said it’s been something like “instantly game-changing”.

2. Commit Tracing in Pry

Two of you (to my knowledge) have worked through this resource: Commit Tracing In Pry (Part 3)

This is really the end of a three-part series. It’s currently a bit confusing, but it’s my best/most successful experiment yet. The folks that have worked hard to follow every step?

They felt like the rate of learning-units-per-hour was extremely high. Higher than almost anything they’ve ever experienced.

It’s probably best to just schedule a call with me as you’re starting it:

3. Web Scraping in Ruby with Nokogiri

Intermediate Ruby Obstacle Course: Nokogiri

A while back, I wanted to build a little web scraping tool. I wanted to scrape the top-level comments of a particular Hacker News thread, to build a list of submitted personal websites.

I ended up building a simple web app which serves a random URL pulled from the top-level comments of that particular HN thread.

4. Podcasts and Talks and Presentations

At minimum, I inject a little novelty into the world around me, and maybe ‘do useful/helpful things’ along the way. 😁


  1. I care more than most people I know about ‘pedagogy and expert knowledge transfer’, and not because I’ve found learning to be effortless and easy my whole life. For example, I gave a presentation about a paper from 1984, talking about how (essentially) TWO SPECIFIC INTERVENTIONS can cause any student to achieve 98% results!!! The paper is really interesting, and I’d recommend just clicking through the slideshow I based a talk off of. I don’t have the recording of the talk, but the slideshow is interesting.

    That’s why people say things like this:

    The time that I’ve spent working one-on-one with Josh has been, without a doubt, the most valuable time I’ve spent individually with anyone at on my journey to becoming a skilled software developer.

    Josh combines his unrivaled work ethic and technical aptitude with deep, genuine empathy and self-awareness that is unique and has made him an indispensable ally.