Blog

Thoughts, tutorials, and insights on web development

Incremental Constraints: How Small Rules Change Team Culture
2025-09-039

From fragile legacy code to a healthy engineering culture — how one team used incremental constraints like test coverage, performance checks, and security scans to turn chaos into quality.

Team Culture
Technical Debt
Continuous Improvement
Testing
DevOps
Blocking Unsafe Code: Security Audits in GitHub Actions
2025-09-016

Step-by-step guide to integrating bundler-audit, license_finder, and OSV Scanner into CI/CD pipelines — with YAML examples that block deployments until issues are fixed.

GitHub Actions
Ruby
Security
Supply Chain
DevSecOps
Retiring Rack::BodyProxy: Post-Response Hooks with rack.response_finished
2025-09-013

Why Rack::BodyProxy is fading out, how rack.response_finished delivers accurate post-response hooks with fewer allocations, and a step-by-step migration path for your middleware.

Rack
Rails
Middleware
Performance
Spec
Database Schema Evolution: Safe DB Evolution Principles in Rails
2025-09-0111

Forward-only migrations, expand–contract pattern, online DDL, dual-write models, monitoring, and disaster recovery — a practical guide to evolving Rails database schemas without downtime.

Rails
PostgreSQL
Migrations
Zero Downtime
DevOps
How RubyGems Protects Us From Supply Chain Attacks (And Why Every Ruby Developer Should Care)
2025-09-016

What happens behind the scenes during gem install: automated scanning, risk scoring, retroactive scanning, incident response — and why companies should support RubyGems critical infrastructure.

Ruby
RubyGems
Security
Supply Chain
DevSecOps
Feature Flags (Feature Toggles) in Simple Terms
2025-05-038

Learn how feature flags work, why they're needed, and how to implement them in your applications. Discover how to enable safe releases, quick rollbacks, A/B testing, and flexible configuration without code changes.

Feature Flags
DevOps
AWS
A/B Testing
Software Development