Use the Git stash without shooting yourself in the foot

git stash apply leaves entries in place, so later stashing can restore the wrong changes; git stash pop applies and removes the top stash entry.

Too many parallel test processes may amplify flaky tests

Flaky test suites can fail more often with too many parallel workers; limiting PARALLEL_TEST_PROCESSORS can reduce race-condition failures with only a small runtime cost.

Ruby: Retrieving and processing files via Selenium and JavaScript

Selenium can fetch binary files through JavaScript and return them to Ruby as an array, useful when direct downloads are awkward or blocked.

Cheat Sheet for the modern DOM API

Quick reference for native DOM methods and properties that replace many jQuery calls, helping you find equivalents without browsing Element interfaces.

How to debug file system access in a Rails application

Rails apps can make hidden file checks that slow requests, especially on networked storage. strace reveals unnecessary stat calls and other system calls.

How to push to Git without running CI on GitLab CI, GitHub Actions, or Travis CI

Git pushes can trigger unwanted CI jobs on GitLab, GitHub Actions, or Travis CI. Skip runs with commit-message flags or GitLab push options.

Bundler: Enforce consistent platform versions

Bundler can install different gem variants depending on Gemfile.lock platforms, causing inconsistent native package versions. Locking the target platform improves reproducible installs.

Make Nokogiri use system libxml2

Nokogiri can be built against system libxml2 instead of bundled binaries, reducing rebuild work after security updates and aligning installs with patched OS libraries.

How to force horizontal panel layout for Chrome

Chrome DevTools can switch between vertical and horizontal panel layouts based on width, making deep DOM trees hard to inspect. The panel layout setting forces a preferred orientation.

Capistrano: How to find out which version of your application is currently live

Capistrano stores the deployed commit hash in REVISION, making the live release easy to identify on one server or across multiple hosts.

Simple debounce in vanilla JavaScript

Delays repeated function calls until activity stops, reducing work from noisy events like scrolling and improving performance.

Upgrading RubyGems to the last compatible version

Installing the newest RubyGems can break older Ruby versions; use the latest compatible release instead of the default system update.

Rails: Example on how to extract domain independent code from the `app/models` folder to the `lib/` folder

Move API-client code out of app/models into lib/ to separate domain logic from reusable infrastructure and keep Rails code more maintainable.

Ruby: How to make your ruby library configurable

Configuring a Ruby library via a block makes endpoints and similar settings easy to override without hardcoding values.

MySQL will not use indexes if you query the wrong data type

MySQL can ignore indexes when a predicate compares a column to the wrong data type, turning lookups into full table scans.

Rspec: around(:all) and around(:each) hook execution order

RSpec hook order matters when around(:all) and around(:each) wrap setup and teardown; their execution timing differs from before and after hooks.

Ruby: Different ways of assigning multiple attributes

Ruby classes with many fields can become hard to instantiate or validate. Options range from positional and keyword arguments to ActiveModel::Attributes, Struct, hashes, and OpenStruct.

Chrome: disable "Choose your search engine" popup in tests

Fresh Chrome installs in Europe can trigger a search-engine choice popup that breaks Cucumber tests; --disable-search-engine-choice-screen disables it.

cucumber_factory 1.14 lets you set array fields, has_many associations, numbers without quotes

cucumber_factory 1.14 adds array attributes, multiple has_many associations, and unquoted numeric values in factory-style test data.

Customizing Rails error messages for models and attributes

Rails error messages can be overridden at application, model, or attribute scope through locale YAML files, enabling clearer validation feedback than the default generic texts.

Load order of the environment

Rails environment code loads in a fixed boot order, affecting which settings and constants can override others. Knowing the initialization sequence prevents surprises when adding configuration or app code.

Beware of params with non-string values (nil, array, hash)

params can contain nil, arrays, or hashes, so treating request values as plain strings can lead to unsafe lookups and unexpected matches.

Ruby blocks: Braces and do/end have different precedence

{} and do ... end bind blocks to different method calls, which can make print names.map do ... end return an Enumerator instead of the mapped array.

Tod: A Gem for handling daytime without a date

Tod handles time-of-day values without dates, avoiding timezone-related bugs when parsing, comparing, formatting, or storing hours, minutes, and seconds.