Heads up: Angular may break links to the current URL (e.g. when using ngInclude)
Angular's $location service can intercept clicks to the current URL and break same-page links, especially when components like ngInclude activate location handling.
Git: creating and deleting a tag
Git tag objects come in annotated and lightweight forms; annotated tags store metadata and can be signed, while tags must be pushed and deleted separately.
Turning off VCR when stubbing with Webmock
VCR can block WebMock stubs because it hooks into WebMock and rejects unknown requests. Temporarily disabling VCR in rspec lets WebMock behave normally.
Rails + Sidekiq::Web: Configuration for wildcard session cookies
Sidekiq::Web can create duplicate session cookies when Rails uses a wildcard cookie domain, breaking logout and other session-dependent actions.
Webservice to test and inspect requests
Temporary request URLs make it easy to inspect HTTP callbacks and webhooks; incoming traffic is recorded and displayed for debugging.
Fix for: "can't convert nil to String" when running "gem update --system"
Updating RubyGems can fail with TypeError: can't convert nil into String after certain previous updates. Removing rubygems-update first restores gem update --system.
How to install packages from newer Ubuntu releases
Install newer Ubuntu release packages on an LTS system when new hardware or software needs them, while minimizing dependency conflicts and upgrade risk.
Selenium: How to close another tab (popup)
Closing a Selenium pop-up requires switching to its window handle and then pointing the driver back to another tab to avoid broken subsequent steps.
Ruby: How to make an object that works with multiple assignment
Ruby multiple assignment can pull values from a single object by calling to_a; defining to_a lets custom classes support destructuring into several variables.
Fix Slack call overlay on Awesome WM
Slack call overlay windows can hijack large parts of the screen in Awesome WM. A floating, always-on-top rule keeps the call panel out of the way.
Spreewald: Content-Disposition not set when testing a download's filename
Public file downloads may miss Content-Disposition, so filename checks fail in Spreewald. Matching only Content-Type or testing the downloaded file avoids flaky download assertions.
Capybara steps to match stuff within any selector
Capybara within scopes only the first matching element, so tests that need all matches use “inside any” Cucumber steps instead.
How to fix broken font collisions in wkhtmltopdf
PDFKit and wkhtmltopdf can ignore CSS font names when font metadata collides, causing one face to dominate or local files to fail. Fixing internal font names or embedding fonts restores proper rendering.
How to add a custom dictionary to Ruby Mine
RubyMine can use a custom spell-check dictionary for project-specific terms and nonstandard words. A UTF-16 dictionary must be converted to UTF-8 and added in Settings.
How to move all files in a folder to a new subfolder
Move every file in a directory into a newly created subfolder with mv, avoiding the destination folder itself with a shell glob pattern.
How to exploit websites that include user input in their CSS
Unsanitized user input in CSS can enable exploitation in web apps, and CSS input sanitization is harder than HTML sanitization.
A Theme Switcher
Implementing an inverted night-mode look with a few lines of CSS keeps image colors intact while changing the page appearance.
Bundler 2 will rename Gemfile and Gemfile.lock
Bundler 2.0 renames Gemfile to gems.rb and Gemfile.lock to gems.locked, with old filenames supported until Bundler 3.0.
Association to polymorphic model does not determine inverse_of automatically
Nested polymorphic associations can fail to save because Rails does not infer the inverse automatically; setting :inverse_of on the parent relation fixes the validation error.
How to enable the Thinkpad microphone mute key on Ubuntu 16.04
ThinkPad microphone mute key stopped working on Ubuntu 16.04 after an upgrade. Binding the ACPI event to amixer restores hardware mute control.
Rails: render a template that accepts a block by using the layout option of render
Reuse a form partial with a customizable submit section by rendering it as a layout and yielding the form object into a block.
How to change the class in FactoryBot traits
FactoryBot traits cannot use :class; a nested factory or initialize_with can build the desired subtype instead.
Import Excel files without running into memory limitations
Reading large XLSX files can exhaust memory when every cell becomes a Ruby object. Stream-based parsers like Roo and Creek avoid loading the full spreadsheet at once.
Ubuntu MATE: Fixing ALT + TAB being really slow
ALT+TAB in Ubuntu MATE can become unusably slow because the application switcher renders live thumbnails for each window. Disabling thumbnails or software compositing restores fast switching.