jsTimezoneDetect

Determines a user's timezone in JavaScript when browser and system settings may be unreliable.

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.

fnando/i18n-js

Rails I18n translations become available in JavaScript clients through a small library for sharing locale data outside the server.

Font Awesome 5 migration guide

Font Awesome 5 changes icon names and adds fab, far, and fas prefixes; a JavaScript shim can preserve v4 names during migration.

yaronn/blessed-contrib

Build terminal dashboards with ASCII and ANSI art in JavaScript for visual monitoring and lightweight text-based interfaces.

Magnific Popup: Responsive jQuery Lightbox Plugin

Responsive JavaScript lightbox for single images and galleries, with optional animations and straightforward setup.

Chartkick

Create JavaScript charts from Ruby with a single line while keeping data local instead of sending it to Google.

CodeMirror

JavaScript browser code editor with syntax highlighting and optional indentation support for many languages.

Desktop Notifications with WebKit

Chrome supports desktop pop-up notifications through WebKit's webkitNotifications API, letting websites trigger popup bubbles from JavaScript.

The developer console can do more than you think!

Browser developer tools offer richer logging than console.log, including tables, grouped output, timers, clickable object links, and stack traces for debugging.

Jasmine: Test that an object is an instance of a given class

Verify that a value was created by a specific constructor in Jasmine with jasmine.any(Klass) instead of direct instance checks.

Playing audio in a browser

Browser audio playback is fragmented across Flash and HTML5, with codec, seeking, loading, and styling limitations that often require a hybrid library.

Unpoly: Passing Data to Compilers

Rails data can be passed to Unpoly compilers through data-* for simple strings and up-data for objects, arrays, and nested values.

Solutoire.com › Flotr Javascript Plotting Library

Flotr is a javascript plotting library based on the Prototype Javascript Framework (version 1.6.0.2 at the moment) and inspired by Flot (written by Ole Laursen).

Should You Use JavaScript Library CDNs? « Lickity Split

sing Google’s JavaScript Library CDN comes with a 1/3 of a second tax on missing. (Note that a tax like this applies to opening connections to a any new host: JavaScript Library CDNs, advertisers, analytics and visitor tracking, etc. This is why you should try to reduce the number of different hostnames you serve content from.)

What's wrong with defining JavaScript variables within if blocks? - Stack Overflow

Because javascript has something called "Hoisting" which makes your code do things it doesn't look like it should be doing. Basically, that means a javascript interpreter will move all var declarations, regardless of where they are in the body of a function, to the top of the function body.

Regular tasks for long-running projects

Long-running projects need regular upkeep to avoid stale dependencies, growing data, and bloated storage that raise costs and slow applications.

Rails asset pipeline: Using ESNext without a transpiler

Modern browsers run most ES6 features natively, but Rails asset pipelines can still fail when Uglifier cannot minify newer syntax.

Cross-Origin Resource Sharing - Wikipedia

Browser requests across domains are blocked by the same-origin policy unless a service allows them with CORS; it replaces JSONP and supports regular XMLHttpRequest and non-GET methods.

What we know about PDFKit

PDF generation from Rails uses a WebKit-based wrapper around wkhtmltopdf, with print styling, headers, footers, and binary-version pitfalls.

Regular Expressions: Quantifier modes

Greedy, lazy, and possessive quantifiers change regex matching behavior and performance; poor choices can trigger heavy backtracking or even denial-of-service bugs.

Understanding the Selenium error "Modal Dialog Present" (aka Selenium::WebDriver::Error::UnhandledAlertError)

Intermittent Cucumber failures can come from a leftover browser alert blocking Selenium commands after an unfinished AJAX request.

4 Lessons Learned Doing Angular on Rails

Experience from building an Angular frontend with a Rails backend, highlighting practical lessons for teams combining a JavaScript client with server-side Ruby on Rails.

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.