Skip to main content
thoughtbot thoughtbot
  • Live on Twitch!

    thoughtbot is livestreaming

    Work alongside the thoughtbot team as we collaborate with each other and our clients, live. Ask us anything, we're live right now!

  • Case Studies
  • Blog
  • Let’s Talk
Live on Twitch!

thoughtbot is livestreaming

Work alongside the thoughtbot team as we collaborate with each other and our clients, live. Ask us anything, we're live right now!

Let’s get started!
View all Services
Development
  • Ruby on Rails
  • Hotwire
  • AI and Machine Learning
  • Maintenance
  • Mobile
Design
  • Discovery Sprints
  • UX, UI, and Product Design
  • Design Systems
Product
  • MVP
  • Product Management
  • Accessibility
Team and Processes
  • Team Augmentation
  • Fractional Leadership
View all Services
View all Resources
Development
  • Tech Leadership Resources
  • Open Source
  • Books
  • The Bike Shed Podcast
  • Live Streaming on YouTube
  • Conference Talks
The business of great software
  • Playbook
  • Purpose Built
  • Giant Robots Smashing Into Other Giant Robots Podcast
  • Design Sprint Guide
  • Live Streaming on LinkedIn
View all Resources

Articles by Joël Quenneville

View other authors

  1. Problem Solving with Maybe

    Write more confident code to avoid viral Maybe taking over your project.

    Joël Quenneville
    February 12, 2018
    • Elm
    • Functional Programming
    • Good Code
    • Web
  2. The Mechanics of Maybe

    Leverage the core mechanics of Maybe to clean up your nested cases.

    Joël Quenneville
    February 9, 2018
    • Elm
    • Functional Programming
    • Web
  3. Why Factories?

    Understanding why we use factories helps us write faster, more readable tests.

    Joël Quenneville
    January 12, 2018
    • Ruby
    • Web
    • Testing
  4. 5 Common JSON Decoders

    Elm JSON decoding in 5 common scenarios

    Joël Quenneville
    December 4, 2017
    • Elm
    • Web
  5. Two ways of looking at map functions

    Map functions are hard to “get” in the abstract. This looks at two mental models that helped me understand them better.

    Joël Quenneville
    November 20, 2017
    • Elm
    • Web
    • Functional Programming
  6. Modeling with Union Types

    Clean up Maybe by modeling multiple shapes of data with union types.

    Joël Quenneville
    October 13, 2017
    • Elm
    • Web
  7. Booleans and Enums

    Refactor common Boolean smells using enums (union types).

    Joël Quenneville
    September 20, 2017
    • Web
    • Elm
    • Good Code
  8. Following the Path

    A journey into requiring files via $PATH and $LOAD_PATH.

    Joël Quenneville
    April 10, 2017
    • Web
    • Ruby
    • Unix
  9. Decorating ActiveRecord

    Avoid some tricky edge cases when decorating ActiveRecord models.

    Joël Quenneville
    March 31, 2017
    • Web
    • Ruby
    • Rails
  10. Modeling a Paginated API as a Lazy Stream

    Pagination of APIs is a performance optimization trick. As a consumer, you may want to model things with a lazy stream instead.

    Joël Quenneville
    March 29, 2017
    • Web
    • Ruby
« First ‹ Prev … 3 4 5 6 7 8 9 10 Next › Last »

Footer

thoughtbot
  • Services
  • Case Studies
  • Resources
  • Let's Talk
  • Our Company
  • Careers
  • Purpose
  • Blog
  • Sponsor
  • Mastodon
  • Bluesky
  • GitHub
  • YouTube
  • Twitch
  • Feeds
© 2025 thoughtbot, inc.

The design of a robot and thoughtbot are registered trademarks of thoughtbot, inc.

  • US: +1 (877) 9-ROBOTS
  • UK: +44 (0)20 3807 0560
  • Beware of fraudulent thoughtbot job listings Learn more
  • Code of Conduct
  • Accessibility Statement
  • Privacy Policy