Rails Action Mailer — Sending Emails in Rails Without the Headaches Email is one of those features every app eventually needs and nobody particularly wants to build. Welcome emails, password resets, weekly digests, transactional notifications — the list grows quickly once your app is
Developer tips How to Get Your First Tech Conference Talk Accepted Speaking at a tech conference is one of those career milestones that seems impossibly far away until someone tells you the actual submission process, at which point it becomes merely uncomfortable. The secret
Ruby-code Flatten A Deeply Nested Array In Ruby Arrays in Ruby can be nested arbitrarily deep — arrays of arrays of arrays. flatten collapses them into a single level, but knowing when to flatten fully versus partially is what separates clean
Ruby 3 Ractor — True Parallelism in Ruby 3 Without the Shared State Nightmare Ruby’s GIL — the Global Interpreter Lock — has been the punchline of many conversations about concurrency for a long time. The lock means that even with multiple threads, only one can execute
Rails Active Storage — File Uploads in Rails Without the Ceremony File uploads have a reputation for being one of those features that look simple and turn out to be a multi-day project. Pick a storage backend, configure credentials, handle direct uploads, generate variants,
Developer tips Contributing to Open Source — The Career Move Most Developers Overthink The phrase “contribute to open source” carries a weight it doesn’t deserve. Somewhere along the way it became synonymous with submitting a pull request to a major framework, getting accepted by Matz himself,
Ruby-code Sort An Array Of Hashes By Multiple Keys In Ruby Sorting a collection of hashes by a single key is straightforward, but sorting by multiple keys — primary sort by one field, secondary sort by another — requires a slightly different approach using
Ruby 3 Ruby 3.2's Data Class — Immutable Value Objects Done Right If you’ve been writing Ruby for a while, you’ve probably cobbled together something to represent simple value objects — a Struct, a frozen hash, maybe a plain class with an attr_reader and a
Rails Stimulus.js — Adding Interactivity to Hotwire Without a Frontend Framework Turbo handles navigation and real-time updates beautifully — page transitions, stream updates, frame replacement, all without writing JavaScript. But there’s always that next layer of requirement: a dropdown that opens and closes, a
Developer tips Writing in Public — How Developers Build Authority Without Becoming Influencers Most developers I know are suspicious of “building an audience.” It sounds like something that requires a ring light, a content calendar, and a willingness to perform enthusiasm for things you don’t actually
Ruby 3 Ruby's Fiber Scheduler — Concurrency That Actually Makes Sense Most Ruby developers have a complicated relationship with concurrency. Threads feel dangerous. Processes feel heavy. And the GIL — the Global Interpreter Lock — has been the villain in so many horror stories
Rails Solid Queue — Background Jobs in Rails 8 Without Redis For years, the default answer to “how do I run background jobs in Rails?” has been: add Redis, add Sidekiq, configure two separate services, monitor two dashboards, and don’t forget to handle Redis
Developer tips Your GitHub Profile Is Your Developer Brand — Here's How to Make It Count Most developers treat their GitHub profile like a filing cabinet — a place to dump code and move on. They’re not wrong to use it that way; that’s technically what it’s for. But
Ruby 3 Pattern Matching in Ruby 3 Pattern matching landed in Ruby 2.7 as experimental and graduated to stable in Ruby 3.0. Most Ruby developers have heard of it; far fewer use it confidently in production code. This post cuts
Rails Real-Time UI Updates with Turbo Streams in Rails 7 and 8 Real-time features used to mean reaching for ActionCable, writing JavaScript event listeners, and managing WebSocket state that lives entirely outside your Rails stack. Turbo Streams changed that equation entirely. Built into Rails 7