HTTP 302 redirects for PATCH or DELETE will not redirect with GET
Browsers may keep PATCH and DELETE on 302 redirects instead of switching to GET, breaking AJAX flows. Use 303 See Other or POST method override to force a GET follow-up.
What's so hard about PDF text extraction?
PDF text extraction is harder than it looks because the format allows extreme flexibility, so automatic text data retrieval often fails in edge cases.
Node: How to run a globally installed package with npx
Globally installed npm packages are not directly runnable with npx --no-install; npx -- works when given the global package path.
RSpec: How to write isolated specs with cookies
Cookie-dependent behavior in Rails specs is hard to test outside controller specs, especially signed and encrypted values. ActionDispatch::Cookies::CookieJar provides isolated access in request and helper specs.
Rails: Kill spring with fire
Rails Spring processes can linger and restart unexpectedly, interfering with command runs; stopping the process and disabling auto-start prevents it from coming back.
Devise: Invalidating all sessions for a user
Stolen Rails session cookies can remain usable after logout with Devise. Invalidating them requires changing the authentication salt, resetting the password, or storing sessions server-side.
NVM: How to automatically switch version when changing directories
Node.js version switching in Bash is manual by default, so projects with .nvmrc can run the wrong runtime until nvm use is triggered automatically.
Scrum: Online Planning Poker
Scrum teams need a simple way to agree on story estimates without registration or setup. PoinZ provides online planning poker for collaborative estimation.
How to transition the height of elements with unknown/auto height
Collapsing dynamic content cannot animate height: 0 to height: auto; a grid row transition between 0fr and 1fr provides a modern CSS workaround.
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.