How to prevent a 1fr grid column overflow

Long content in a 1fr grid track can force overflow and hide neighboring columns. minmax(0, 1fr) lets the track shrink instead of keeping its automatic minimum size.

Use -webkit-line-clamp to natively truncate long (multi-line) texts with an ellipsis

Native CSS truncation for multi-line text adds an ellipsis after a fixed number of lines, avoiding JavaScript clamping and its performance cost.

E-mail deliverability

High-volume transactional email often gets blocked by spam filters and denylist issues, making reliable delivery hard even with standard SMTP relays.

How Rails chooses error pages (404, 500, ...) for exceptions

Rails maps unhandled exceptions to HTTP status codes and error pages via action_dispatch.rescue_responses, and custom classes can be treated as 404 or 500 responses.

Sentry: Different ways of deferring notifications for an issue

Persistent or unavoidable Sentry issues can still be monitored without email spam by using ignore constraints based on time, occurrences, or affected users.

Useful filtering options of git log

git log can be narrowed by message, file, line content, commit range, count, and date to inspect only the relevant history.

A non-weird replacement for grouped_collection_select

Rails grouped select helper feels awkward; flat_grouped_collection_select groups arbitrary collections by a field for simpler select menus.

Project management best practices: The story tracker

The tracker acts as the source of truth for project work, separating developer and non-developer stories and keeping developer items fully specified before backlog intake.

Reading an element's attributes with Capybara

Capybara elements expose HTML attributes through [], returning values like class, placeholder, href, or nil when an attribute is absent.

Using git patchfiles to speed up similar implementation tasks

Repetitive model scaffolding can be adapted quickly by patching a similar commit instead of rewriting files from scratch.

JavaScript has a native event emitter

Publish/subscribe in frontend JavaScript does not require a separate library; EventTarget provides native event listeners and dispatching for custom events.

Git stash: Working with old entries

Older git stash entries can be inspected, applied, popped, or dropped by reference; patch views and partial restores help recover changes selectively.

Don't assign time values to date attributes

Time values assigned to date fields can shift a day in non-UTC apps. Use Date.current or convert future times with to_date before saving.

Webmock normalizes arrays in urls

Different HTTP clients encode array query parameters differently, and WebMock normalizes them during matching, which can hide real-world crashes in tests.

CarrierWave: Processing images with libvips

CarrierWave uploads can process images with libvips instead of ImageMagick for faster, lower-memory handling and reduced security risk, including resizing, color conversion, metadata stripping and PDF thumbnails.

How to find child nodes that match a selector with JavaScript

Direct child selection with querySelectorAll is awkward without :scope; :scope > ... targets only immediate descendants instead of every matching descendant.

Code splitting in esbuild: Caveats and setup

esbuild code splitting can reduce main-bundle size, but multiple entry points, chunk cascades, and import-order changes can break builds or runtime behavior.

RubyMine and Rubocop: Performing safe autocorrects on save

Enable safe RuboCop autocorrect in RubyMine on save, trading a small save delay for automatic fixes; bulk edits can become slow.

RubyMine: Fixing "Rubocop returned exit code -1. See the logs for details"

RubyMine can show "Rubocop returned exit code -1" when the installed Rubocop version is outdated or incompatible. Updating rubocop often resolves the error, and idea.log helps confirm the cause.

Create and send any HTTP request using the Postman request builder

Postman provides a graphical way to build and send HTTP requests, with collections, environments, history, and a cookie manager for API testing.

We now have our own memoization gem "Memoized"

Forked memoizer methods now keep their original arity and run faster on repeated calls within the same request.

Cucumber: Identifying slow steps that drag down your test speed

Cucumber test suites can hide slow steps that waste most runtime. --format usage measures step durations and highlights optimization candidates, especially when waiting assertions surface previous delays.

Balance your texts today with text-wrap: balance

text-wrap: balance improves headings and teaser text that break awkwardly, balancing line widths where supported while progressively enhancing browsers that lack it.

Checklist for Implementing Design

Design changes need more than visual parity: implementations should be tested, responsive, touch-friendly, accessible, localized, and consistent with existing patterns.