Postgres Scan Types in EXPLAIN Plans | Crunchy Data Blog

What is a sequential scan vs index scan vs parallel scan .... and what is a bitmap heap scan? Postgres scan types explained and diagrammed.

#postgres#database
Added: 12 Dec 2025
Lessons learned from studying Fizzy test suite

The Fizzy application is a new play on Kanban board and project management. It has a comprehensive test suite focused mostly on unit and integration tests, althought other types of test are also present. The test suite is well-organized and follows Rails conventions with some application-specific patterns for multi-tenancy and UUID handling. Can we find more than that?

#Ruby on Rails
Added: 11 Dec 2025
Making Rails Global IDs safer

The new LLM world is very exciting, and I try to experiment with the new tools when I can. This includes building agentic applications, one of which is my personal accounting and invoicing tool - that I wrote about previously As part of that effort I started experimenting with RubyLLM to have some view into items in my system. And while I have used a neat pattern for referencing objects in the application from the tool calls - the Rails Global ID system - it turned out to be quite treacherous. So, let’s have a look at where GlobalID may bite you, and examine alternatives and tweaks we can do. What are Rails GIDs? The Rails global IDs (“GIDs”) are string handles to a particular model in a Rails application. Think of it like a model URL. They usually have the form of gid://awesome-app/Post/32. That comprises: The name of your app (roughly what you passed in when doing rails new) The class name of the model The primary key of the model You can grab a model in your application and get a global ID for it: moneymaker(dev):001> Invoice.last.to_global_id Invoice Load (0.3ms) SELECT "invoices".* FROM "invoices" ORDER BY "invoices"."id" DESC LIMIT 1 /*application='Moneymaker'*/ => #<GlobalID:0x00000001415978a0 @uri=#<URI::GID gid://moneymaker/Invoice/161>> Rails uses those GIDs primarily in ActiveJob serialization. When you do DebitFundsJob.perform_later(customer) where the customer is your Customer model object which is stored in the DB, ActiveJob won’t serialize its attributes but instead serialize it as a “handle” - the global ID. When your job gets deserialized from the queue, the global ID is going to get resolved into a SELECT and your perform method will get the resulting Customer model as argument. All very neat. And dangerous, sometimes - once LLMs become involved.

#AI#Ruby on Rails
Added: 11 Dec 2025
How to Remove Secrets from Git History Safely

Accidentally committed secrets to Git? Learn how to safely and permanently remove sensitive data from your Git history using git-filter-repo — the modern,...

#DevOps
Added: 10 Dec 2025
Create a Markdown Editor in Ruby on Rails | AppSignal Blog

In this post, we'll build a Markdown editor using Rails.

#Ruby on Rails#Tutorial#Frontend
Added: 10 Dec 2025
Turn Any Idea Into a Validated MVP

A step-by-step path to validate your idea fast by defining the problem, testing assumptions, prototyping the critical flow, and shaping a focused MVP you can learn from.

#Product Development
Added: 9 Dec 2025
Value Objects in Ruby: The Idiomatic Way

Master Value Objects in Ruby using the modern Data.define class. Learn about immutability, value equality, and how to eliminate boilerplate code for cleaner, safer domain modeling.

#Ruby
Added: 9 Dec 2025
Logging outbound emails with ActionMailer in Rails | Storm Consultancy - Your Digital Technology Agency

A guide to using the ActionMailer after_deliver callback to log emails sent from your Ruby on Rails application

#Ruby on Rails
Added: 9 Dec 2025

This is my personal site, where I write about Ruby, programming, and any of my varied fascinations.

#CSS#Design
Added: 9 Dec 2025
đź§  10 uncommon but powerful Ruby & Rails Methods.

As Ruby and Rails developers, we often rely on the same familiar set of methods to get things done. The same set of operations are more or…

#Ruby on Rails
Added: 7 Dec 2025
Vanilla CSS is all you need

The post stuck with me. Over the past year and a half, 37signals has released two more products (Writebook and Fizzy) built on the same nobuild philosophy. I wanted to know if these patterns held up. Had they evolved?

#Ruby on Rails#CSS
Added: 5 Dec 2025
Building optimistic UI in Rails (and learn custom elements)

Learn how custom elements work in Rails by building an optimistic form. From simple counters to instant UI updates, understand when to use custom elements over Stimulus controllers.

#Javascript#Ruby on Rails#Frontend
Added: 5 Dec 2025
Why I believe prototyping in code beats everything else

A code prototype changes everything. When you prototype in code, the thing you are testing is real. It works in the browser. It works on any device. It responds to real-world variables.

#Productivity#Product Development
Added: 4 Dec 2025
How To Rev Up Your Rails Development with MCP

Shipping new features on legacy Rails applications requires deep codebase context. The rails-mcp-server gem closes the gap between AI agents and your Rails projects, enabling more relevant code analysis and context aware refactoring suggestions. Whether you're dealing with tech debt in a brownfield application or building new greenfield features, this tool can help you move faster with confidence.

#AI#Ruby on Rails
Added: 1 Dec 2025
Single Responsibility Principle

Should a Ruby class do just one thing? Explore the Single Responsibility Principle, cohesion, and when to split classes through practical examples.

#System design
Added: 1 Dec 2025
Speed Up Your Rails Testing Workflow with Local CI

Stop waiting for GitHub Actions. Rails 8.1's local CI runs your tests in seconds on your own machine. Here's how it works.

#Productivity#Ruby on Rails#testing
Added: 1 Dec 2025
Building Self-Hosting Rails Applications: Design Decisions & Why

Technical deep-dive into the design decisions that make Broadcast a truly self-hostable Rails application.

#Ruby on Rails#DevOps#System design
Added: 1 Dec 2025
Don’t Make Me Think Principle, Testing, and Intuitive Expectations

A new extension to Minitest Expectations by yours truly is the perfect illustration for this philosophy of programming.

#Productivity#testing#Ruby
Added: 1 Dec 2025
Tips for effective prototyping with Rails 8 and Claude Code

As developers, we’re living in a time where building applications from scratch is easier than ever, thanks to AI tools like Claude Code. Our…

#AI#Ruby on Rails
Added: 30 Nov 2025
Common Pitfalls When Adopting Shape Up (and How to Avoid Them)

I see some common pitfalls when people try to do Shape Up "by the book." There are things in the book that are Basecamp-specific or often misunderstood, and teams who successfully adopt Shape Up route around them.

#Productivity#Product Development
Added: 24 Nov 2025
TDD is more important than ever

Lately, I've been reminded of the heady days of my agile youth by how often I've found myself asking, "how will we test this?" As I've mentioned…

#testing
Added: 24 Nov 2025
Building a multi stage timetable with modern CSS using grid, subgrid, round(), and mod(). - 9elements

Combining finest craftsmanship with elegant design to ship innovative digital experiences.

#Tutorial#Frontend#CSS
Added: 24 Nov 2025
Review your own git pull requests

Last week, I wrote about my experience working with the team at Cloud Four, and in particular some of their great practices around PR management. Today, I wanted to talk specifically about a habit my friend Gerardo Rodriguez got me into: reviewing your own pull request. It’s pretty simple. When you create a pull request in GitHub, click on the Files changed tab, and scroll through the diff. Anywhere you’ve done something new that’s not already explained by in-code comments, add a comment in the GUI about what you did and why.

#Soft Skills#Ways of Working
Added: 17 Nov 2025
Simple One-Time Passcode Inputs

Fully functional OTP entry may be easier than you think.

#Frontend#HTML
Added: 17 Nov 2025
First Previous Next Last