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.