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

Web Articles

Written by thoughtbot, your expert partner for design and development.

    • All Topics
    • Design
    • Development
    • Product
    • More topics
  1. Configuring an Elm App with Environment Variables via webpack

    Passing config from the environment to your Elm 0.18 app with webpack.

    Tom Wey
    January 25, 2017
    • Elm
    • Web
  2. Update Your Gems Early and Often

    bundle outdated can be useful for keeping your bundler dependencies updated.

    Ian Zabel
    January 24, 2017
    • Rails
    • Ruby
    • Web
  3. Elm's universal pattern

    Want to build a random generator? A JSON decoder? Combine multiple Maybes into a more complex one? Do it all with this one simple trick.

    Joël Quenneville
    January 13, 2017
    • Elm
    • Web
  4. Preloading Nested Associations with Ecto

    A look at how to preload database associations using Elixir’s Ecto library.

    Greg Lazarev
    January 11, 2017
    • Elixir
    • Ecto
    • Web
  5. Lessons Learned: Avoiding Primitives in Elm

    Switching from primitive types to product types can improve confidence in correctness and compiler errors, but not without a cost.

    Josh Clayton
    January 10, 2017
    • Web
    • Elm
    • Haskell
  6. "Tell, Don't Ask" in Elixir: A Story of Pattern-Matching

    Write declarative Elixir code by applying “Tell, Don’t Ask”.

    Josh Clayton
    December 21, 2016
    • Web
    • Phoenix
    • Functional Programming
    • Elixir
  7. Building custom DOM event handlers in Elm

    A step-by-step guide to implementing a custom onChange event in Elm 0.18.

    Joël Quenneville
    November 21, 2016
    • Web
    • Elm
  8. Options for adding a blog to a Rails application

    TL;DR: roll your own.

    Tute Costa
    November 18, 2016
    • Rails
    • Blog
    • Web
  9. Announcing FormLinter

    A tool for making better forms.

    Ben Orenstein
    November 9, 2016
    • Formkeep
    • Design
    • Web
    • News
  10. Composition vs Inheritance

    Choose the right tool for the job when building modular software.

    Joël Quenneville
    November 3, 2016
    • Web
    • Ruby
    • Good Code
  11. Sign up to receive a weekly recap from thoughtbot

    Looking for even more ways to stay connected?
    RSS feed icon Check out our feeds
« First ‹ Prev … 15 16 17 18 19 20 21 22 23 … 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