HTTP headers can only transport US-ASCII characters safely

HTTP header values are limited to low-ASCII for safe transport; non-ASCII data such as Umlauts or emojis can be carried by JSON-escaping characters above 127.

Knapsack: Rerun a flaky test locally

Reproduce a flaky CI spec locally by rerunning the same Knapsack shard with the same seed and test order.

Beware: Many browsers define window.event

Some browsers expose window.event, but Firefox and recent IE versions do not. Passing the handler’s event object avoids cross-browser failures and accidental global access.

How to split up a git commit

Split one Git commit into several smaller commits by pausing an interactive rebase, undoing the commit, and recommitting selected changes.

How to explain SQL statements via ActiveRecord

ActiveRecord explain exposes database query plans for a scope, including joined or eager-loaded queries, in the database's native EXPLAIN format.

Always disable autocomplete for date pickers

Browser autofill can cover date picker popups and make them unusable. Disabling autocomplete on the trigger input keeps the calendar visible while preserving fallback behavior.

Canceling event propagation

Event propagation can be stopped in different ways, with distinct effects on default actions, bubbling, and handlers on the same element. jQuery’s return false combines prevention and propagation stop.

Controlling how your website appears on social media feeds

Social network previews often pick the wrong title, image and description unless OpenGraph meta tags provide them; Facebook caches previews and may need manual refresh.

How to bulk-unwatch many repositories on Github

Opting out of notifications for many GitHub repositories is faster through the watching page than changing each repository individually.

Defining custom RSpec matchers

Custom RSpec matchers support reusable test assertions, chaining, block expectations, and complex matcher classes for domain-specific checks.

Your database tables should probably have timestamps

Missing created_at and updated_at columns make record history harder to trace and bug reports harder to investigate. Rails migrations can add and backfill timestamps for old tables.

Rubocop fails with undefined StringIO

RuboCop can crash with uninitialized constant ... StringIO and related socket reader errors when an old version misses a required stringio require. Upgrading fixes it.

Controlling the order of DOM event listeners

DOM event listeners run in registration order, so forcing a handler to fire first or last can require capture, delegation, or a related event.

How to accept more than 4k query parameters in Rails

Large form submissions can fail with hidden Rack::QueryParser::QueryLimitError when total request parameters exceed Rails' default limit. Raising params_limit allows bigger POSTs.

Testing ActiveJob `limits_concurrency` with Solid Queue

ActiveJob concurrency checks can pass falsely with the :test adapter because blocked jobs still enqueue; using :solid_queue verifies real blocking behavior.

Generating test images on the fly via JavaScript or Ruby

Create placeholder images dynamically as SVG data URIs in JavaScript or Ruby, avoiding external image services and keeping the graphic easily adjustable.

Use a global .gitignore file to ignore stuff from your machine

Git can ignore machine-specific files globally instead of per repository, avoiding repeated setup and cluttered project .gitignore files.

Faux-disabled fields in HTML forms

Form fields can block input without using disabled, but readonly, pointer-events: none, and inert each affect submission and accessibility differently.

Opt out of selenium manager's telemetry

selenium-webdriver can send hourly usage stats during browser feature specs; setting SE_AVOID_STATS=true disables the telemetry call.

Cucumber CI job quirks

Cucumber CI rerun logic can pass green after syntax errors when no failing_features file is written; native --retry avoids this edge case.

Debugging Rails Active Jobs with the Vanilla Adapters

Rails jobs can be hard to inspect because adapters behave differently in development, test, and production. Logging, synchronous execution, and queue tables help trace failures and pending work.

pnpm: How to update a single package conservatively

Selective pnpm dependency updates for CVE mitigation can be smaller than a full install. pnpm up with exact package versions keeps package.json and the lockfile changes minimal.

Project management best practices: Standup

Daily team check-ins keep small projects aligned, surface blockers early, and prevent developers from disappearing into isolated work.

Rails disables CSRF protection in tests

Rails test environment turns off CSRF checks by default, so missing authenticity tokens can hide broken POST flows. Enabling forgery protection in JavaScript tests catches these failures.