String#indent: Know your definitions!

String#indent is not part of standard Ruby and may come from gems with unstable internal APIs. Defining it yourself avoids breakage when dependencies change.

Spreewald version 0.9.4 released

Fixes for flaky browser tests in Spreewald 0.9.4, including a resolved “I click on ...” step and broader Selenium retry handling.

Fix when assigning nested attributes raises "undefined method `to_sym' for nil:NilClass"

Nested attribute assignment can fail when a MySQL table lacks a primary key, triggering to_sym on nil. Adding a primary key index or setting self.primary_key = "id" fixes the lookup.

Debugging in Cucumber

Useful Cucumber steps help inspect a Capybara session by opening the current page in a browser or starting an interactive debugger.

Unicode support in MySQL is ...

MySQL 5.x rejects Unicode characters above U+FFFF, so emoji and many historic scripts cannot be stored in UTF-8 columns.

Cucumber does not find neither env.rb nor step definitions when running features in nested directories

Feature files in nested directories can stop Cucumber from loading env.rb and step definitions unless the features directory is required explicitly.

Cucumber: Wait until CKEditor is loaded

Timing issues can cause undefined errors when interacting with CKEditor in Cucumber tests. Waiting for the editor to reach ready avoids flaky WYSIWYG input steps.

Using Arel to Compose SQL Queries

Arel provides a Rails API for building SQL queries when where hashes are too limited. It exposes lower-level query composition through ActiveRecord.

Namespacing: why `uninitialized constant` error may occour in `development` but not in `test` environment

Namespaced Ruby classes can raise uninitialized constant in development when autoloading misses a nested class, while test may pass because everything is already loaded.

Howto prompt before accidentally discarding unsaved changes with JavaScript

Warns users before leaving a page with unsaved form data or dirty CKEditor content, helping prevent accidental loss during navigation or submit handling.

Make custom web font available within CKEditor content

Custom web fonts do not appear inside CKEditor content unless the editor loads the font CSS through config.contentsCss.

Redis Desktop Manager

Cross-platform open source Redis administration GUI for managing databases, replacing slow, clunky tools with a desktop client.

Rails 4 Engines - TechRabbit

A modular Rails architecture can balance the simplicity of a single app with the separation of multiple services. Rails engines provide shared structure without the overhead of a full service-oriented setup.

How to call overwritten methods of parent classes in Backbone.js

Backbone models often need overridden methods to keep parent behavior. __super__ lets an երեխա class call inherited initialize with the same arguments.

Removing Dot-Underscore Files ~ Kadin2048's Weblog

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

RulersGuides.js demo

Adds Photoshop-like rulers and guides to a web page with a JavaScript library; also available as a bookmarklet for quick browser use.

Checking the character length of a text containing markup (e.g. WSYIWYG)

Markup inflates naive length checks in WYSIWYG text. Stripping tags and normalizing non-word characters yields a more accurate character count.

Stripping all non-word-characters (a.k.a \W) and preserve diacritics (a.k.a Umlaute) in utf-8

Nicht-ASCII-Buchstaben wie Umlaute gehen bei \W in UTF-8 verloren. [^[:word:]] entfernt Sonderzeichen und erhält diakritische Zeichen.

Protip: Always leave a failing test

Leaving a failing test at the end of unfinished work makes it easier to resume later and quickly see what still needs attention.

Resolving Element cannot be scrolled into view (Selenium::WebDriver::Error::MoveTargetOutOfBoundsError) on Mavericks

Selenium and Cucumber tests on Mavericks can fail with MoveTargetOutOfBoundsError when Firefox starts on a different monitor than the focused Terminal window.

We are not normal people

Marketing and sales for developers often require a different approach than standard B2B playbooks, with technical credibility and context mattering more than broad persuasion.

Ruby number formatting: only show decimals if there are any

Ruby %g formatting trims trailing decimals when they are not significant, but it can switch to scientific notation and round unexpectedly.

[Openstack] "Failed to schedule_prep_resize: No valid host was found." when trying to resize an instance

OpenStack instance resize can fail with “No valid host was found” when the scheduler rejects the same compute host. Enabling allow_resize_to_same_host in Nova resolves it.