Be careful to use correct HTTP status codes for maintenance pages

Wrong status codes on maintenance pages can deindex sites or cache bad redirects. 503 Service Unavailable with Retry-After preserves SEO during temporary downtime.

Define a route that only responds to a specific format

Constrain a Rails route to a single response format such as XML when one URL must serve only that representation.

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.

Heartbleed test

Checks a server hostname for the Heartbleed vulnerability in OpenSSL (CVE-2014-0160).

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.

BrowserStack has browser plugins for local testing

Private and internal servers can be tested through the BrowserStack cloud without exposing them publicly, even behind firewalls, proxies, or Active Directory.

Your First AngularJS App: A Comprehensive Tutorial

Beginner AngularJS development often involves routing and client-server data transfer issues. A hands-on introduction helps build a first working app with core concepts.

Removing Dot-Underscore Files ~ Kadin2048's Weblog

Dot-underscore ._ files from macOS can clutter non-AFP server volumes and need quick cleanup methods.

Tabs in Textarea Plugin for jQuery

Use Tab and Shift+Tab in regular textareas to indent or outdent code for in-browser editing of HTML, CSS, JavaScript, or server-side languages.

"The certificate is not trusted because no issuer chain was provided." Error with SSL + Nginx

SSL connections fail when the certificate chain is incomplete. Appending the intermediate certificate to the server certificate lets Nginx present a trusted chain.

HTML5: disabled vs. readonly form fields

Noneditable HTML form controls behave differently with disabled and readonly: submission, focus, and tab order change, and browser quirks can affect fieldset descendants.

Sidekiq 7: Rate limiting with capsules

Sidekiq 7 capsules let queues run with separate concurrency limits, useful for protecting apps or APIs from too many parallel jobs.

Researching a new form of HTTP caching optimization - Phusion BlogPhusion Blog

Caching HTTP responses in the server based on an individual cookie can speed delivery, but cache invalidation remains unresolved.

Working with or without time zones in Rails applications

Rails time handling is error-prone because Time.now and Time.current can differ. A single-time-zone setup needs matching Active Record and time zone configuration.

Evening on Backbone.js/Views w/ Q&A with David Heinemeier Hansson - YouTube

Basecamp stays fast with little JavaScript by combining server-rendered pages, PJAX, and Russian doll caching to reduce client-side work.

What's My DNS? Global DNS Propagation Checker

Check a hostname’s current IP address and DNS records against name servers worldwide to verify DNS propagation after zone changes.

Stubbing out external services with an embedded Sinatra application

Test suites that depend on remote APIs can become brittle and slow; an embedded Sinatra app provides a lightweight stub server for isolated integration tests.

An Illustrated Guide to SSH Agent Forwarding

SSH agent forwarding lets remote servers use your local SSH keys without copying them, reducing key exposure while enabling convenient hop-through access.

What's in a View? A look at the alternatives

Tradeoffs between progressive enhancement with jQuery-style approaches and client-side views affect interactivity, complexity, and how much rendering stays on the server.

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.

Using multiple MySQL versions on the same linux machine using docker

Run several MySQL releases on one Linux host with Docker instead of mysql-sandbox, and connect Rails to each instance through a separate TCP port.

Highlighted prompt for production shells

Insert into ~/.bashrc and reload afterwards: source ~/.bashrc

PS1='${debian_chroot:+($debian_chroot)}\[\033[41;33m\]\u@\h\[\033[00m\]:\[\033[01;34m\]\w\[\033[00m\]\$ '

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.

Taking screenshots in Capybara

Capybara test failures can save screenshots and HTML automatically, with manual capture also available through save_and_open_page, save_screenshot, or Rails ScreenshotHelper.