Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

https://github.com/fpsvogel/learn-ruby

Learning resources for Ruby, Rails, and related skills.
https://github.com/fpsvogel/learn-ruby

book-list books bookshelf curriculum learning practice programming rails resources ruby ruby-on-rails study-materials tutorial web-development

Last synced: 7 days ago
JSON representation

Learning resources for Ruby, Rails, and related skills.

Awesome Lists containing this project

README

        

# Learn Ruby: a resource list

Hi! This road map has helped me as a second-career developer who didn't do a bootcamp. I hope it helps you too.

Notice a broken link? Or want to suggest an addition? [Open an issue!](https://github.com/fpsvogel/learn-ruby/issues/new)

## Table of contents

The "not done" sections (currently "Foundational tools" and below) are somewhat chaotic because I haven't yet seen what's worth keeping there.

- [Preliminaries](#preliminaries)
- [Basics](#basics)
- [Front-end basics](#front-end-basics)
- [Ruby basics](#ruby-basics)
- [Rails basics](#rails-basics)
- [Getting hired](#getting-hired)
- [Foundational tools](#foundational-tools)
- [SQL](#sql)
- [Git](#git)
- [How the Internet works](#how-the-internet-works)
- [Advanced Ruby and Rails](#advanced-ruby-and-rails)
- [Advanced Ruby](#advanced-ruby)
- [Advanced Rails](#advanced-rails)
- [Front end](#front-end)
- [HTML and CSS](#html-and-css)
- [JavaScript](#javascript)
- [UI and usability](#ui-and-usability)
- [Accessibility](#accessibility)
- [Expanding my horizons](#expanding-my-horizons)
- [Games in Ruby](#games-in-ruby)
- [Programming games](#programming-games)
- [Ruby media](#ruby-media)
- [Chat / social media](#chat--social-media)
- [Newsletters](#newsletters)
- [Blogs](#blogs)
- ["Let's build" screencasts](#lets-build-screencasts)
- [Topical screencasts](#topical-screencasts)
- [Streams](#streams)
- [Podcasts](#podcasts)
- [Rails codebases to study](#rails-codebases-to-study)

## Preliminaries

- **If you want to keep it simple** and use just *one* resource that can take you from zero to hireable, I suggest the free [Odin Project](https://www.theodinproject.com/paths). If you want more variety and more depth on certain topics, keep reading!
- **Why did I chose Ruby?** At first I went for full-stack JS, but the JS ecosystem was confusing to me as a solo learner. Ruby was a lot more straightforward to me, and generally more enjoyable too.
- **Make sure your day job is conducive to part-time studying** if you're a working adult looking to switch careers. I used to be a teacher and spent many of my evenings and weekends grading assignments, which would have made it difficult to learn programming. So I switched to a remote customer support job to free up my schedule.
- **Take care of yourself!** Exercise and get plenty of sleep, and you'll better retain what you learn. If you develop wrist pain from heavy computer use, get an ergonomic keyboard, [do daily wrist stretches](https://youtube.com/watch?v=fdD7CgN5FGg), and try a break app such as [Stretchly](https://hovancik.net/stretchly).

Resources marked with a dollar sign (πŸ’²) cost money. You may be able to find books for free (from your local library, interlibrary loan, or more dubious sources) but buy them if/when you can, to support the authors.

## Basics

### Front-end basics

- [x] Learn some HTML, CSS, and JS: [The Odin Project - Foundations path](https://www.theodinproject.com/paths/foundations/courses/foundations) or resources under ["Front end"](#front-end) below.
- [x] Build a blog from scratch. [GitHub Pages](https://pages.github.com) is an accessible way to do this. (Choose the option "Project site", then "Start from scratch".)

### Ruby basics

- **Basics:**
- [x] [The Odin Project - Ruby](https://www.theodinproject.com/paths/full-stack-ruby-on-rails/courses/ruby)
- [x] [GoRails - Ruby for Beginners](https://gorails.com/series/ruby-for-beginners) if you prefer videos.
- [x] [Try Ruby](https://try.ruby-lang.org/) and [BigBinary Academy](https://academy.bigbinary.com/learn-ruby), if you like an interactive approach.
- **Guided practice:**
- [x] [Exercism - Ruby](https://exercism.org/tracks/ruby)
- [ ] [Advent of Code](https://adventofcode.com) with other people's Ruby solutions to compare yours to. One way to do this is [my Ruby AoC CLI](https://github.com/fpsvogel/ruby-advent-of-code) (command-line interface).
- **OOP (object-oriented programming):**
- [x] πŸ’²[Sandi Metz - Practical Object-Oriented Design](https://www.poodr.com)
- [x] πŸ’²[Sandi Metz & Katrina Owen - 99 Bottles of OOP](https://sandimetz.com/99bottles-sample-ruby)
- **Build stuff with Ruby.** Here are some ideas:
- A CLI (command-line interface) app. I made [one that gives statistics on a reading log](https://fpsvogel.com/posts/2021/my-first-ruby-app-lessons-learned).
- A game. A text-based game is the simplest approach; for graphical games, see the [Games in Ruby](#games-in-ruby) section.
- A static site. [Bridgetown](https://github.com/bridgetownrb/bridgetown) is great for (among other things) building static sites, which are simpler than SSR (server-side rendered) sites Γ  la Rails. Maybe [rebuild your blog](https://fpsvogel.com/posts/2021/build-a-blog-with-ruby-bridgetown)? Be sure to [join the Bridgetown Discord server](https://discord.gg/Cugms94QFM)β€”the maintainers are very welcoming and helpful to newbies.
- More ideas: [Coding Challenges](https://codingchallenges.fyi), [Build your own X](https://github.com/codecrafters-io/build-your-own-x), [Projectbook](https://projectbook.code.brettchalupa.com), [Project-based learning](https://github.com/practical-tutorials/project-based-learning#ruby)
- **Reference:**
- [x] [Ruby API](https://rubyapi.org). Mentioning it up here because it's the best Ruby docs site but very little-known. Since its search uses a query param, you can add a search keyword to your browser to let you quickly search from the address bar, for example `rb partition` would take you to [https://rubyapi.org/3.4/o/s?q=partition](https://rubyapi.org/3.2/o/s?q=partition)

### Rails basics

Only books and courses are listed below, but be sure to *build things* as you learn. I myself [started building a large-ish Rails app](https://fpsvogel.com/posts/2021/first-rails-app-plain-reading) at first, but then I found it more helpful to build a series of small throwaway apps ([1](https://fpsvogel.com/posts/2021/gpt3-ai-story-writer), [2](https://fpsvogel.com/posts/2021/wikipedia-explorer-discover-articles-like-stumbleupon), [3](https://fpsvogel.com/posts/2021/pass-the-story-collaborative-writing-game), [4](https://fpsvogel.com/posts/2022/doctor-lookup-health-provider-search-tool)).

- **Basics:**
- [x] [GoRails - Build a Blog with Rails 7](https://gorails.com/series/build-a-blog-with-rails-7) and if you want more along the same lines, [Rails 6 for Beginners](https://gorails.com/series/rails-6-for-beginners)
- [x] [The Odin Project - Rails](https://www.theodinproject.com/paths/full-stack-ruby-on-rails)
- **Testing:**
- [x] πŸ’²[Jason Swett - The Complete Guide to Rails Testing](https://www.codewithjason.com/complete-guide-to-rails-testing/)
- [x] [thoughtbot - Testing Rails](https://github.com/thoughtbot/testing-rails) or [the summary blog post](https://thoughtbot.com/blog/how-we-test-rails-applications)
- [x] πŸ’²[Effective Testing with RSpec 3](https://pragprog.com/titles/rspec3/effective-testing-with-rspec-3/)
- [ ] πŸ’²[Test Driving Rails](https://testdrivingrails.com) if you need/want Minitest for Rails testing.
- **Misc.:**
- [x] [Explore Ruby communities (below)](#chat--social-media)
- [x] [Style guides](https://ruby.style/) for Ruby, Rails, and RSpec

### Getting hired

- **Get real-world experience to put on your resume:**
- Contribute to open-source projects. I've written [a short guide on how to get started](https://fpsvogel.com/posts/2021/how-to-contribute-to-open-source-ruby-rails).
- [Ruby Central - Scholars and Guides Program](https://rubycentral.org/scholars_guides_program/)
- **Mentorship:**
- [First Ruby Friend](https://firstrubyfriend.org) where aspiring and first-year developers are connected with a mentor.
- [r/rails](https://www.reddit.com/r/rails) is worth trying too. Examples: [1](https://www.reddit.com/r/rails/comments/rvs7f2/rails_mentoring/), [2](https://www.reddit.com/r/rails/comments/lvwn41/finding_a_mentor/).
- **The job search:**
- [Notes on my 2021-2022 job search](https://fpsvogel.com/posts/2022/how-to-find-ruby-rails-job)
- [Notes on my 2023-2024 job search](https://fpsvogel.com/posts/2024/job-search-networking-for-engineers)

## Foundational tools

### SQL

- **Basics:**
- [x] [SQL Teaching](https://www.sqlteaching.com)
- [x] [SQLBolt](https://sqlbolt.com)
- [x] [Select Star SQL](https://selectstarsql.com)




- **Advanced:**
- [ ] [Next-Level Database Techniques for Developers](https://sqlfordevs.com/ebook)
- [ ] πŸ’²[SQL Antipatterns, Volume 1](https://pragprog.com/titles/bksap1/sql-antipatterns-volume-1/)
- [ ] [Markus Winand - Use the Index, Luke!](https://use-the-index-luke.com/sql/preface)
- [ ] πŸ’²[Markus Winand - SQL Performance Explained](https://sql-performance-explained.com)
- [ ] [Advanced Topics in SQL](https://www.edx.org/course/advanced-topics-in-sql) course from Stanford
- **PostgreSQL:**
- [ ] [Postgres Playground](https://www.crunchydata.com/developers/tutorials)
- [ ] [Yeah, Postgres can do that](https://dev.to/efertsch/series/20415)
- [ ] πŸ’²[High Performance PostgreSQL for Rails](https://pragprog.com/titles/aapsql/high-performance-postgresql-for-rails/)
- [ ] Blog posts on Rails + Postgres: [lots on PaweΕ‚ Urbanek's blog](https://pawelurbanek.com/blog), [this one at Honeybadger](https://www.honeybadger.io/blog/rails-postgresql-queries/), [this one at thoughtbot](https://thoughtbot.com/blog/advanced-postgres-performance-tips).
- [ ] πŸ’²[The Art of PostgreSQL](https://theartofpostgresql.com/)
- [ ] πŸ’²[PostgreSQL Query Optimization: The Ultimate Guide to Building Efficient Queries](https://link.springer.com/book/10.1007/978-1-4842-6885-8)
- **SQLite:**
- [ ] πŸ’²[SQLite on Rails](https://fractaledmind.gumroad.com/l/sqlite-on-rails)

### Git

- **Basics:**
- [x] [Oh My Git!](https://ohmygit.org/)
- [x] [Oh Shit, Git!?!](https://ohshitgit.com/)
- [x] [Git Katas](https://github.com/eficode-academy/git-katas)
- [x] [The Git Parable](https://youtube.com/watch?v=ANNboouhNHE)
- [x] [Git Flight Rules](https://github.com/k88hudson/git-flight-rules)
- **Advanced:**
- [ ] [thoughtbot - Rebuilding Git in Ruby](https://thoughtbot.com/blog/rebuilding-git-in-ruby)
- [ ] [Pro Git](https://git-scm.com/book)
- [ ] πŸ’²[Building Git](https://shop.jcoglan.com/building-git)

### How the Internet works

- [x] πŸ’²[Computer Networking: A Top-Down Approach](https://gaia.cs.umass.edu/kurose_ross/eighth.htm)
- [ ] [HTTP From Scratch](https://kmcd.dev/series/http-from-scratch/)
- [ ] πŸ’²[Web Security for Developers: Real Threats, Practical Defense](https://www.amazon.com/Web-Security-Developers-Malcolm-McDonald-ebook/dp/B07V78WH7V) and the accompanying site [Hacksplaining](https://www.hacksplaining.com/)
- [ ] [PortSwigger - web security exercises](https://portswigger.net/web-security/all-topics)
- [ ] [Jesse Storimer - Working with TCP Sockets](https://workingwithruby.com/wwtcps/intro)
- [ ] Build a web server from scratch. Here are Ruby resources: [Ruby HTTP server from the ground up](https://www.dmitry-ishkov.com/2021/07/ruby-http-server-from-ground-up.html), [How to Build a Web App with and without Rails Libraries](https://shopify.engineering/building-web-app-ruby-rails), and [a Reddit discussion with helpful comments](https://www.reddit.com/r/ruby/comments/vfc02l/newb_here_have_you_written_your_own_web_server)

## Advanced Ruby and Rails

### Advanced Ruby

- **Reference:**
- [ ] [Victor Shepelev (zverok) - The Ruby Reference](https://rubyreferences.github.io/rubyref/) plus [Ruby Changes](https://rubyreferences.github.io/rubychanges/3.0.html) (covering Ruby 3+). [Ruby Evolution](https://rubyreferences.github.io/rubychanges/evolution.html) is also great.
- [ ] [RuboCop performance rules](https://github.com/rubocop/rubocop-performance)
- [ ] [RuboCop security rules](https://docs.rubocop.org/rubocop/cops.html#department-security)
- **Concurrency:**
- [ ] [Jesse Storimer - Working with Ruby Threads](https://workingwithruby.com/wwrt/intro)
- [ ] [Jesse Storimer - Working with Unix Processes](https://workingwithruby.com/wwup/intro)
- [ ] [Async Ruby](https://brunosutic.com/blog/async-ruby)
- **Front end:**
- [ ] [Phlex](https://www.phlex.fun/): view templates; also a base for some other gems such as [Superform](https://github.com/rubymonolith/superform).
- [ ] [Glimmer DSL for Web](https://github.com/AndyObtiva/glimmer-dsl-web): a Ruby front-end framework.
- [ ] [Heartml](https://heartml-docs.onrender.com/): SSR web components with Ruby.




### Advanced Rails

- **Reference:**
- [x] πŸ’²[Rebuilding Rails](http://rebuilding-rails.com/)
- [ ] [πŸ’²The Rails Companion](https://courses.writesoftwarewell.com/p/rails-companion)
- [ ] πŸ’²[The Rails 7 Way](https://leanpub.com/therails7way)
- [ ] [Rails Guides](https://guides.rubyonrails.org/)
- [ ] [Rails API docs](https://api.rubyonrails.org/)
- **Architecture:**
- [ ] [Rails Way App](https://github.com/solid-process/rails-way-app)
- [x] πŸ’²[Layered Design for Ruby on Rails Applications](https://www.packtpub.com/product/layered-design-for-ruby-on-rails-applications/9781801813785)
- [ ] [Develop Single-Machine Rails Applications with LiteStack](https://blog.appsignal.com/series/develop-single-machine-rails-applications-with-litestack.html)
- [ ] πŸ’²[Maintainable Rails](https://leanpub.com/maintain-rails)
- [ ] πŸ’²[Gradual Modularization for Ruby and Rails](https://leanpub.com/package-based-rails-applications)
- **Performance:**
- [ ] πŸ’²[Nate Berkopec - The Complete Guide to Rails Performance](https://www.railsspeed.com/)
- [ ] πŸ’²[Nate Berkopec - The Ruby on Rails Performance Apocrypha](https://www.speedshop.co/2021/01/14/announcing-apocrypha.html)
- [ ] [Mature Optimization Handbook](https://carlos.bueno.org/optimization/) (not Rails-specific)
- **Background jobs:**
- [ ] [Sidekiq wiki](https://github.com/sidekiq/sidekiq/wiki)
- [ ] [How does Sidekiq work?](https://www.mikeperham.com/how-sidekiq-works/)
- [ ] πŸ’²[Ruby on Rails Background Jobs with Sidekiq](https://pragprog.com/titles/dcsidekiq/ruby-on-rails-background-jobs-with-sidekiq/)
- [ ] πŸ’²[Nate Berkopec - Sidekiq in Practice](https://nateberk.gumroad.com/l/sidekiqinpractice)
- [ ] [AcidicJob](https://github.com/fractaledmind/acidic_job)
- **Deployment:**
- [ ] πŸ’²[Josef Strzibny - Deployment from Scratch](https://deploymentfromscratch.com/)
- [ ] πŸ’²[Josef Strzibny - Kamal Handbook](https://strzibny.gumroad.com/l/kamalbook)
- [ ] [Ruby on Whales: Dockerizing Ruby and Rails development](https://evilmartians.com/chronicles/ruby-on-whales-docker-for-ruby-rails-development)
- [ ] πŸ’²[The Docker Book](https://dockerbook.com/)
- **Misc.:**
- [ ] πŸ’²[Frictionless Generators](https://garrettdimon.com/products/frictionless-generators)

## Front end

### HTML and CSS

- **Community:**
- [The Spicy Web (Discord)](https://discord.com/invite/CUuYVH7Qa9)
- **HTML:**
- [ ] [MDN - Getting started with the web](https://developer.mozilla.org/en-US/docs/Learn/Getting_started_with_the_web)
- [ ] [MDN - HTML](https://developer.mozilla.org/en-US/docs/Learn/HTML)
- [ ] [htmlreference.io](https://htmlreference.io/)
- **CSS:**
- [ ] πŸ’²[The Spicy Web - CSS Nouveau](https://www.spicyweb.dev/css-nouveau)
- [ ] [MDN - CSS](https://developer.mozilla.org/en-US/docs/Learn/CSS)
- [ ] [cssreference.io](https://cssreference.io/)
- [ ] [CSS Selectors: A Visual Guide & Reference](https://fffuel.co/css-selectors/)
- [ ] [The Odin Project - Intermediate HTML and CSS](https://www.theodinproject.com/paths/full-stack-ruby-on-rails/courses/intermediate-html-and-css)
- [ ] [The Odin Project - Advanced HTML and CSS](https://www.theodinproject.com/paths/full-stack-ruby-on-rails/courses/advanced-html-and-css)
- [ ] [CUBE CSS](https://cube.fyi)
- [ ] [Every Layout](https://every-layout.dev/)
- [ ] [Magic of CSS](https://adamschwartz.co/magic-of-css/)
- [ ] [Under-Engineered Patterns](https://adrianroselli.com/2023/05/under-engineered-patterns-for-wcbuf.html)
- [ ] [Stephanie Eckles - Modern CSS Solutions](https://moderncss.dev/)
- [ ] [Stephanie Eckles - SmolCSS](https://smolcss.dev/)
- [ ] [CSS Naked Day](https://css-naked-day.github.io/)
- [ ] πŸ’²[Julia Evans - Hell Yes! CSS!](https://wizardzines.com/zines/css/)
- [ ] [Modern Font Stacks](https://modernfontstacks.com/#font-stacks)
- [ ] [Type Is Design: Fix Your UI with Better Typography and CSS](https://www.youtube.com/watch?v=1Pe7oGIKkqc)
- [ ] [CSS games](#programming-games)

### JavaScript

- **Basics:**
- [x] [Exploring JavaScript](https://exploringjs.com/js/)
- [x] [Modern JavaScript Explained For Dinosaurs](https://peterxjang.com/blog/modern-javascript-explained-for-dinosaurs.html)
- [x] [What the heck is the event loop anyway?](https://youtube.com/watch?v=8aGhZQkoFbQ)
- [x] [MDN - JavaScript](https://developer.mozilla.org/en-US/docs/Web/JavaScript)
- **Practice:** See also [programming games](#programming-games) below.
- [ ] [Exercism - JavaScript](https://exercism.org/tracks/javascript)
- [ ] [Advent of Code](https://adventofcode.com/) with CLI runner ([1](https://github.com/caderek/aocrunner), [2](https://github.com/t-hugs/advent-of-code)) and solutions ([1](https://github.com/sguest/advent-of-code), [2](https://github.com/shahata/adventofcode-solver/tree/master/src), [3](https://github.com/leyanlo/advent-of-code), [4](https://github.com/niksimon/advent-of-code), [5](https://github.com/romellem/advent-of-code), [6 (TS)](https://github.com/T-Hugs/advent-of-code/tree/main/years), [7 (TS)](https://github.com/AlexAegis/advent-of-code/tree/master/solutions/typescript))
- [ ] Build something in JS. Or for a more structured approach: [JavaScript30](https://javascript30.com/) and [solutions](https://github.com/search?q=javascript30&type=repositories), [Advent of JavaScript](https://www.adventofjs.com/) and [solutions](https://github.com/search?q=%22advent+of+javascript%22+OR+%22advent+of+js%22&type=repositories), [Frontend Mentor](https://www.frontendmentor.io/), [Frontend Practice](https://www.frontendpractice.com/)
- **DOM, forms, and other Web APIs:**
- [x] [The Modern JavaScript Tutorial - Browser: Document, Events, Interfaces](https://javascript.info/ui)
- [ ] [MDN - Web forms](https://developer.mozilla.org/en-US/docs/Learn/Forms)
- [ ] [web.dev - Learn Forms](https://web.dev/learn/forms)
- [ ] [MDN - Web APIs](https://developer.mozilla.org/en-US/docs/Web/API)
- **Going deeper:**
- [x] [You Don't Know JS Yet](https://github.com/getify/You-Dont-Know-JS). Be sure to read the last three parts after they're finished. #TODO
- [ ] [Deep JS](https://exploringjs.com/deep-js/toc.html)
- [ ] [What the f*ck JavaScript?](https://github.com/denysdovhan/wtfjs)

- **HTML-first JS libraries:** There are lots of these, e.g. see [Hotwire](https://hotwired.dev/), many others at [UnsuckJS](https://unsuckjs.com/). But these are the ones I'm most interested in.
- [i-html](https://www.keithcirkel.co.uk/i-html/) for HTML over the wire. Also, read [Hypermedia Systems](https://hypermedia.systems) and/or watch [Return To Hypermedia: Solving Javascript Fatigue Using Fundamental Web Architecture](https://youtube.com/watch?v=LRrrxQXWdhI), by the creator of [htmx](https://htmx.org/) (a similar library that is larger and better-known).
- [Alpine.js](https://alpinejs.dev/). Add [Alpine AJAX](https://alpine-ajax.js.org/) for functionality like i-html/htmx.

### UI and usability

- **Learning:**
- [x] πŸ’²[Don't Make Me Think](https://sensible.com/dont-make-me-think/)
- [x] πŸ’²[The Design of Everyday Things](https://www.nngroup.com/books/design-everyday-things-revised/)
- [ ] [Growth.Design](https://growth.design/)
- [ ] [Roast My Landing Page blog](https://blog.roastmylandingpage.com/)
- [x] [Victor Ponamariov - 50 Tips to Improve User Interface](https://fifty.user-interface.io/50_ui_tips.pdf)
- [ ] [Victor Ponamariov - How to design almost any UI element](https://user-interface.io/articles/how-to-design-almost-any-ui-element)
- [ ] πŸ’²[Victor Ponamariov - 100 UI/UX Tips & Tricks](https://akcium.gumroad.com/l/ui-ux-tips) (or on [the landing page](https://hundred.user-interface.io/))
- [ ] πŸ’²[Victor Ponamariov - Re:Form](https://reform.user-interface.io/)
- [ ] πŸ’²[Master UI Design](https://www.masteruibook.com/)
- [ ] πŸ’²[Refactoring UI](https://www.refactoringui.com/book)
- [ ] πŸ’²[User Interface Design: A Software Engineering Perspective](https://www.amazon.com/dp/0321181433)
- **Libraries:**
- [Pico CSS](https://picocss.com/)
- [Shoelace](https://shoelace.style/), soon to be superseded by [Web Awesome](https://www.kickstarter.com/projects/fontawesome/web-awesome).

### Accessibility

- [ ] [MDN - Accessibility](https://developer.mozilla.org/en-US/docs/Learn/Accessibility)
- [ ] [Responsible Web Applications](https://responsibleweb.app/)
- [ ] [web.dev - Learn Accessibility](https://web.dev/learn/accessibility/) (among [their other courses](https://web.dev/learn/))
- [ ] In Rails: [Accessibility is a Requirement](https://www.youtube.com/watch?v=BF3D_IqOknk), [Accessible by Default](https://www.youtube.com/watch?v=4j2zlvE_Yj8)

## Expanding my horizons

- **Be a mentor:**
- [x] [Exercism](https://exercism.org/mentoring)
- [ ] [First Ruby Friend](https://firstrubyfriend.org/mentors)
- **Career advancement:**
- [x] [Engineering progression for humans](https://localghost.dev/blog/engineering-progression-for-humans/)
- [ ] πŸ’²[The Missing README: A Guide for the New Software Engineer](https://nostarch.com/missing-readme)
- [ ] [Path to Senior Engineer handbook](https://github.com/jordan-cutler/path-to-senior-engineer-handbook)
- [ ] [Staff engineer archetypes](https://staffeng.com/guides/staff-archetypes/)
- [ ] πŸ’²[The Software Engineer's Guidebook](https://www.engguidebook.com)
- [ ] πŸ’²[The Staff Engineer's Path](https://www.oreilly.com/library/view/the-staff-engineers/9781098118723/)
- [ ] πŸ’²[The Tech Resume Inside Out](https://thetechresume.com/)
- **Design patterns:**
- [x] πŸ’²[Head First Design Patterns](https://www.oreilly.com/library/view/head-first-design/9781492077992/)
- [x] [Refactoring.Guru](https://refactoring.guru/)
- [ ] [thoughtbot - Ruby Science](https://thoughtbot.com/ruby-science) (or [EPUB/PDF](https://thoughtbot.gumroad.com/l/ruby-science))
- [ ] πŸ’²[Exercises in Programming Style](https://www.routledge.com/Exercises-in-Programming-Style/Lopes/p/book/9780367350208)
- **Architecture (not Rails-specific):**
- [ ] [The Architecture of Open Source Applications](https://aosabook.org/en/index.html)
- [ ] [Software Design by Example](https://third-bit.com/sdxjs/)
- [ ] πŸ’²[Learning Domain-Driven Design](https://www.oreilly.com/library/view/learning-domain-driven-design/9781098100124/)
- **My other lists:**
- [Learn Computer Science and Low-Level Programming](https://github.com/fpsvogel/learn-cs)
- [Learn functional programming](https://github.com/fpsvogel/learn-functional-programming)

## Games in Ruby

- **Ruby game libraries:**
- πŸ’²[DragonRuby Game Toolkit](https://dragonruby.itch.io/dragonruby-gtk) is my recommendation because it has the liveliest community, and all the resources below are for DragonRuby. You may qualify for a free license (see "Free Unrestricted License" on the homepage), and the creators regularly give it away for free during game jams and other special occasions.
- [Gamefic](https://gamefic.com/) is for building text-based adventure games and interactive fiction. See [Getting Started](https://gamefic.com/guides/getting-started) and [examples](https://github.com/castwide/gamefic-sdk/tree/master/examples).

- [Gosu](https://www.libgosu.org/)
- [MiniGL](https://github.com/victords/minigl)
- [Ruby 2D](https://www.ruby2d.com/)
- [Taylor](https://www.taylormadetech.dev)
- **DragonRuby tutorials:**
- [Building Games with DragonRuby](https://book.dragonriders.community/)
- [Let's make Tetris with DragonRuby Game Toolkit, Part 1](https://www.youtube.com/watch?v=xZMwRSbC4rY) and [Part 2](https://www.youtube.com/watch?v=C3LLzDUDgz4)
- [Notes on DragonRuby Game Toolkit](https://dev.to/presidentbeef/series/16166)
- **DragonRuby community, reference, tools:**
- [Discord server](discord.dragonruby.org)
- [Docs](http://docs.dragonruby.org.s3-website-us-east-1.amazonaws.com/)
- [Zif](https://github.com/danhealy/dragonruby-zif)
- [Dragon Riders Community](https://www.dragonriders.community)
- [DragonRuby Treasure](https://itch.io/c/2785336/dragonruby-treasure), a collection of games made with DragonRuby.

## Programming games

- **API games (any language):**
- [Space Traders](https://spacetraders.io/)
- [Artifacts](https://artifactsmmo.com/)
- [Battlesnake](https://play.battlesnake.com/)
- **Ruby games:**
- [SC2AI](https://sc2ai.pages.dev/)
- [Ruby Warrior](https://github.com/ryanb/ruby-warrior) or [the online version](https://palkan.github.io/ruby-warrior/).
- **JavaScript/TypeScript games:**
- [Screeps](https://screeps.com/)
- [BitBurner](https://bitburner-official.github.io/)
- [Elevator Saga](https://play.elevatorsaga.com/)
- **CSS games:**
- [Flexbox Zombies](https://flexboxzombies.com/p/flexbox-zombies)
- [Grid Critters](https://gridcritters.com/)
- [CSS Diner](https://flukeout.github.io/)
- [Flexbox Froggy](https://flexboxfroggy.com/)
- [Flexbox Defense](http://www.flexboxdefense.com/)
- [CSS Grid Garden](https://cssgridgarden.com/)
- [CSSBattle](https://cssbattle.dev/)
- [Coding Fantasy](https://codingfantasy.com/)
- **Other programming games:**
- [Swarm](https://swarm-game.github.io/)

## Ruby media

### Chat / social media

- [Ruby (Discord)](https://discord.com/invite/ruby-518658712081268738)
- [Ruby.social (Mastodon)](https://ruby.social)
- [Ruby on Rails Link (Slack)](https://www.rubyonrails.link/)
- [Lobsters](https://lobste.rs/) is not Ruby-specific, but it's a way to widen your horizons and the discussions are often great. It's like Hacker News but smaller and more focused on programming.

### Newsletters

- [Short Ruby](https://newsletter.shortruby.com/)
- [Ruby Weekly](https://rubyweekly.com/)
- [Ruby Radar](https://rubyradar.dev/)

### Blogs

There are lots more out there; these are just my favorites.

- [Code with Jason](https://www.codewithjason.com/articles/)
- [Fly.io - The Ruby Dispatch](https://fly.io/ruby-dispatch/)
- [Fullstack Ruby](https://www.fullstackruby.dev/)
- [Noel Rappin's Blog](https://noelrappin.com/blog/)
- [One Ruby Question](https://buttondown.email/bhumi/archive/)
- [Write Software, Well](https://www.writesoftwarewell.com/)
- [zverok on lucid code and open data](https://zverok.substack.com/)

### "Let's build" screencasts

These are series using at least Rails 7.

- [CJ Avilla - CreatorPlatform.xyz](https://www.youtube.com/watch?v=uuHtuR2FFS4&list=PLS6F722u-R6IJfBrIRx3a2SBkAL4vUp2p)
- [Conner Jensen - learning management system](https://www.youtube.com/watch?v=HDA9QiHgrsI)
- [Conner Jensen - ecommerce app](https://www.youtube.com/watch?v=HDA9QiHgrsI)
- [TypeFast - Tinysale (Gumroad clone)](https://www.youtube.com/playlist?list=PLCawOXF4xaJLcYMsWPqEKoOCDsr-xLv5J)
- [TypeFast - Airbnb clone](https://www.youtube.com/playlist?list=PLCawOXF4xaJK1_-KVgXyREULRVy_W_1pe)
- [TypeFast - Trello clone](https://www.youtube.com/playlist?list=PLCawOXF4xaJLgAlweneIHqQTUMiVquXaD)
- [TypeFast - Twitter clone](https://www.youtube.com/playlist?list=PLCawOXF4xaJLb9HwPWiizGBNupJszY6bR)
- [TypeFast - Instagram clone](https://www.youtube.com/playlist?list=PLCawOXF4xaJIzmh3y8xxzGGYog9r3npOE)
- [Webcrunch - supplement sharing app](https://www.youtube.com/playlist?list=PL01nNIgQ4uxOhHYZd6THGIFVBALJZCcpM)

### Topical screencasts

- [Code with Jason Meetup](https://www.youtube.com/@codewithjason/videos)
- [Deanin](https://www.youtube.com/@Deanin/videos)
- πŸ’²[Drifting Ruby](https://www.driftingruby.com)
- πŸ’²[GoRails](https://gorails.com)
- [Ruby & Beyond](https://www.youtube.com/@RubyAndBeyond)
- [SupeRails](https://www.youtube.com/@SupeRails/videos)
- [Webcrunch](https://www.youtube.com/@Webcrunch/videos)

### Streams

- [AmirRajan](https://www.twitch.tv/amirrajan)
- [ChaelCodes](https://www.twitch.tv/ChaelCodes)
- [CodingWithCaleb](https://www.twitch.tv/codingwithcaleb)
- [fractaledmind](https://www.youtube.com/@fractaledmind/streams)
- [FullStackLive](https://www.twitch.tv/fullstacklive)
- [jhawthorn](https://www.twitch.tv/jhawthorn)
- [purplelf](https://m.twitch.tv/purplelf)
- [TenderlovesCoolStuff](https://www.youtube.com/@TenderlovesCoolStuff/streams)
- [thoughtbot on YouTube](https://www.youtube.com/@thoughtbot/streams)
- [thoughtbot on Twitch](https://www.twitch.tv/thoughtbot)
- [YakAndShears](https://www.twitch.tv/yakandshears)
- [yesthatelise](https://www.twitch.tv/yesthatelise)

### Podcasts

- [Bike Shed](https://www.bikeshed.fm/)
- [Code and the Coding Coders who Code it](https://podcast.drbragg.dev/)
- [Code with Jason](https://www.codewithjason.com/podcast)
- [Friendly Show](https://www.friendly.show/)
- [Fullstack Ruby](https://www.fullstackruby.dev/topics/podcast)
- [IndieRails](https://www.indierails.com/)
- [Maintainable](https://maintainable.fm/)
- [Rails Changelog](https://www.railschangelog.com/)
- [Remote Ruby](https://www.remoteruby.com/)
- [Rooftop Ruby](https://www.rooftopruby.com)
- [Rubber Duck Dev Show](https://www.rubberduckdevshow.com/)
- [Ruby for All](https://www.rubyforall.com/)
- [Ruby on Rails Podcast](https://www.therubyonrailspodcast.com/), especially starting at [episode 372](https://www.therubyonrailspodcast.com/372) went they went independent, brought on co-hosts, and hired an editor.
- [Ruby Rogues](https://topenddevs.com/podcasts/ruby-rogues)
- [Tightly Coupled Book Club](https://rss.com/podcasts/tightly-coupled-book-club/)
- [YAGNI](https://yagni.fm/)

## Rails codebases to study

I've chosen the codebases below based on a these criteria:

* Is active, with recent commits.
* Does not use a JS framework on the front end, though I made exceptions.
* Is well-known *or* solves a problem that's interesting to me.

If you want to explore more widely, here are other places to find open-source Ruby projects:

* [OpenSourceRails](https://opensourcerails.org/)
* [Ruby projects on CodeTriage](https://www.codetriage.com/?language=Ruby), though not all of them are Rails apps
* [Real World Rails](https://github.com/eliotsykes/real-world-rails) (and [how to search through it](https://www.hexdevs.com/posts/massive-list-of-open-source-ruby-on-rails-applications-you-can-use-as-a-reference/))
* [Awesome Ruby and Rails Open Source Apps](https://github.com/asyraffff/Open-Source-Ruby-and-Rails-Apps)

Without further ado…

- **Small codebases:** Less than 50k lines of Ruby code.
- [github.com/onerinas/whatwentwelltoday](https://github.com/onerinas/whatwentwelltoday). <2k lines. *An app to share daily positivity.*
- [github.com/krschacht/37signals-rails-code](https://github.com/krschacht/37signals-rails-code). <2k lines. *Extracts from the Basecamp and Hey codebases.*
- [github.com/nshki/naisho](https://github.com/nshki/naisho). <2k lines. *Send personal data deletion request emails to hundreds of data brokers at once.*
- [github.com/carsoncole/workypad](https://github.com/carsoncole/workypad). 2k lines. *App for managing job prospecting.*
- [once.com/writebook](https://once.com/writebook). 3k lines. *App for publishing books to the web.*
- [github.com/ChaelCodes/MeetAnotherDay](https://github.com/ChaelCodes/MeetAnotherDay). 4k lines. *Helps you find and meet up with your friends at conferences.*
- [github.com/SpinaCMS/Spina](https://github.com/SpinaCMS/Spina). 5k lines. *CMS (Content Management System).*
- [github.com/docusealco/docuseal](https://github.com/docusealco/docuseal). 6k lines. *Open source DocuSign alternative.*
- [github.com/codetriage/codetriage](https://github.com/codetriage/codetriage). 6k lines. *Issue tracker for open-source projects.*
- [github.com/maybe-finance/maybe](https://github.com/maybe-finance/maybe). 8k lines. *Personal finance app.*
- [github.com/demingfactor/calagator](https://github.com/demingfactor/calagator). 9k lines. *Community calendar platform.*
- [github.com/joemasilotti/railsdevs.com](https://github.com/joemasilotti/railsdevs.com). 12k lines. *The reverse job board for Ruby on Rails developers.*
- [github.com/RailsEventStore/ecommerce](https://github.com/RailsEventStore/ecommerce). 12k lines. *Example app showing DDD (Domain-Driven Design), CQRS, and Event Sourcing.*
- [github.com/AllYourBot/hostedgpt](https://github.com/AllYourBot/hostedgpt). 12k lines. *Self-hosted ChatGPT alternative.*
- [github.com/TheOdinProject/theodinproject](https://github.com/TheOdinProject/theodinproject). 12k lines. *Main website for The Odin Project web development learning platform.*
- [github.com/lobsters/lobsters](https://github.com/lobsters/lobsters). 13k lines. *Hacker News clone.*
- [github.com/thoughtbot/upcase](https://github.com/thoughtbot/upcase). 14k lines. *Learning platform for developers.*
- [github.com/CircuitVerse/CircuitVerse](https://github.com/CircuitVerse/CircuitVerse). 15k lines. *Digital logic circuit simulator. Has a Vue.js front end.*
- [github.com/houndci/hound](https://github.com/houndci/hound). 14k lines. *Automated code review for GitHub PRs.*
- [github.com/chicago-tool-library/circulate](https://github.com/chicago-tool-library/circulate). 17k lines. *A lending library management system.*
- [github.com/rubyforgood/pet-rescue](https://github.com/rubyforgood/pet-rescue). 19k lines. *Connects adopters/fosters with pets.*
- [github.com/ifmeorg/ifme](https://github.com/ifmeorg/ifme). 21k lines. *Mental health communication web app to share experiences with loved ones.*
- [github.com/openSUSE/osem](https://github.com/openSUSE/osem). 25k lines. *Event management tool tailored to Free and Open Source Software conferences.*
- [github.com/feedbin/feedbin](https://github.com/feedbin/feedbin). 25k lines. *RSS reader.*
- [github.com/rubygems/rubygems.org](https://github.com/rubygems/rubygems.org). 26k lines. *Where Ruby gems are hosted.*
- [github.com/huginn/huginn](https://github.com/huginn/huginn). 36k lines. *Web task automation.*
- [github.com/AlchemyCMS/alchemy_cms](https://github.com/AlchemyCMS/alchemy_cms). 36k lines. *CMS (Content Management System).*
- [github.com/rubyforgood/casa](https://github.com/rubyforgood/casa). 37k lines. *Volunteer management system for the nonprofit CASA.*
- [github.com/rubyforgood/human-essentials](https://github.com/rubyforgood/human-essentials). 39k lines. *An inventory management system for essentials supply banks.*
- [github.com/SumOfUs/Champaign](https://github.com/SumOfUs/Champaign). 39k lines. *Digital campaigning platform. A Rails app generator.*
- **Larger codebases:** More than 50k lines of Ruby code.
- [github.com/WikiEducationFoundation/WikiEduDashboard](https://github.com/WikiEducationFoundation/WikiEduDashboard). 50k lines. *Wikipedia course dashboard system. Has a React front end.*
- [github.com/chatwoot/chatwoot](https://github.com/chatwoot/chatwoot). 56k lines. *Customer engagement suite. Has a Vue.js front end.*
- [github.com/solidusio/solidus](https://github.com/solidusio/solidus). 72k lines. *E-commerce platform.*
- [github.com/mastodon/mastodon](https://github.com/mastodon/mastodon). 75k lines. *Like Twitter but self-hosted and federated.*
- [github.com/openfoodfoundation/openfoodnetwork](https://github.com/openfoodfoundation/openfoodnetwork). 102k lines. *An online marketplace for local food.*
- [github.com/forem/forem](https://github.com/forem/forem). 103k lines. *Powers the blogging site [dev.to](https://dev.to/). Uses Preact on the front end.*
- [github.com/redmine/redmine](https://github.com/redmine/redmine). 117k lines. *Project management app.*
- [github.com/alphagov/whitehall](https://github.com/alphagov/whitehall). 117k lines. *Publishes government content on [gov.uk](https://www.gov.uk/).*
- [github.com/zammad/zammad](https://github.com/zammad/zammad). 250k lines. *Helpdesk/customer support system.*
- [github.com/decidim/decidim](https://github.com/decidim/decidim). 288k lines. *The participatory democracy framework.*
- [github.com/discourse/discourse](https://github.com/discourse/discourse). 322k lines. *Discussion forum platform. Has an Ember.js front end.*
- [github.com/opf/openproject](https://github.com/opf/openproject). 368k lines. *Project management software.*
- [github.com/instructure/canvas-lms](https://github.com/instructure/canvas-lms). 745k lines. *A popular LMS (learning management system).*
- [gitlab.com/gitlab-org/gitlab](https://gitlab.com/gitlab-org/gitlab). 1.8 million lines. *Like GitHub but with CI/CD and DevOps features built in. Uses Vue.js on the front end. Has great [docs on architecture](https://docs.gitlab.com/ee/development/architecture.html).*