PostgreSQL: Be careful when creating records with specific ids
Manually assigning primary keys in PostgreSQL can leave sequences unchanged, causing duplicate-key errors on the next insert. Resetting the sequence prevents conflicts.
Non-blocking Asynchronous JSON.parse Using The Fetch API
Offloading expensive JSON.parse work from the main thread keeps fetch-based apps responsive and avoids blocking during large response processing.
Openstack: nova resize
Changing an OpenStack VM’s RAM, disk, or vCPU count requires nova resize and a matching flavor; the resize causes downtime and can take a long time.
Jasmine: Testing complex types for equality
toBe only checks reference identity; toEqual handles arrays, objects, dates, regular expressions, NaN, exceptions, and custom equality testers.
Mocking time in Jasmine specs
Control time in Jasmine tests with the built-in jasmine.clock() to fake timers and new Date() without adding SinonJS.
Pierce through Javascript closures and access private symbols
Accessing state hidden in JavaScript closures can simplify tests and let Jasmine spies mock private methods or inspect local variables.
Detecting N+1 queries with Bullet
Bullet monitors database queries during development and flags N+1s, unnecessary eager loading, and missing counter caches to improve application performance.
Rails 4.2 Foreign Key Support
Database constraints for comments and users help enforce referential integrity, but support is limited to certain adapters and can surface ActiveRecord::InvalidForeignKey errors.
Spreewald 1.2.11 fixes frequent "no alert open" errors on Chrome
Chrome updates can cause frequent no alert open errors in Capybara dialog tests. Spreewald 1.2.11 waits for browser dialogs before confirming them.
How to fix a corrupt (zsh) history file
Corrupted zsh history files trigger startup errors and can be rebuilt by extracting valid entries from the damaged history data.
Capistrano 3 has slightly changed its symlink implementation
Capistrano 3 symlinks linked directories using the full path, so public/system now points to shared/public/system instead of shared/system.
JavaScript events: target vs currentTarget
event.target points to the clicked descendant, while event.currentTarget points to the element handling the listener; currentTarget is usually the safer choice.
A commitment is not a guarantee - Pivotal Tracker
Teams can commit to quality software, but cannot guarantee outcomes they do not fully control.
How to capture changes in after_commit
after_commit callbacks lose access to unsaved change data when Rails clears dirty tracking at commit. Rails 5+ provides saved_change_to_attribute? and previous_changes for commit-time checks.
How to fix: iPad does not trigger click event on some elements
iPad tap handling can ignore delegated click events on some elements, especially table rows. Adding cursor: pointer or an onclick attribute makes them respond.
24 little known CSS facts
Little-known CSS properties and selectors affect outlines, typography, and pseudo-elements, with browser support varying across features.
The Complete Guide to Rails Caching
Caching in Ruby on Rails reduces repeated work and speeds up pages, but stale or fragmented cache data can hurt performance and correctness.
Padrino: "incompatible marshal file format (can't be read)"
Old cached fragments marshaled by a previous Padrino version can trigger TypeError after deployment; clearing external cache stores fixes incompatible marshal data.
emcien/iso_latte
Background jobs can die from memory exhaustion, segmentation faults, or abrupt exits; IsoLatte runs code in a subprocess and reports exceptions through a pipe.
Savon: Use complex SOAP types as arguments
Manual xsi:type assignment lets Savon send complex SOAP arguments to remote methods when generated stubs are unavailable.
Protip: Clone large projects multiple times
Long test suites block new work on large projects; cloning the repository into a separate directory lets tests run in parallel while development continues.
Free advice: show up early
Delays from taxis, flights, and other travel disruptions can make you look unreliable unless you plan extra time into professional schedules.
Material Design Lite
CSS and JavaScript toolkit for applying Google’s Material Design to static websites, but it is incomplete, awkward to use, and can conflict with live reload or JavaScript frameworks.
FactoryGirl: How to easily create users with first and last name
Create a user factory that accepts one full-name value and splits it into first and last name automatically, reducing repetitive test setup.