A daily report scanning 1.2 million rows to return two hundred. Why neither obvious index helped, what the composite one costs, and the two answers I turned down.
jQuery 1.9 shipped in January and removed a set of methods that had been deprecated for years but were still everywhere: $.browser, .live(), .die(), the two-function form of…
Every request WordPress serves opens with one query that reads every option flagged autoload = yes and unserialises the lot into memory. That is a reasonable design for…
WordPress 3.5 replaced the uploader with a Backbone application, and the hook every custom meta box was built on went with it. The old pattern opened ThickBox and…
Installing fail2ban is treated as a step that protects the server. What it actually gives you is one jail — [ssh], watching auth.log — while the same brute…
A dropdown with z-index: 9999 that still sits underneath the header is not a numbering problem. The two elements are being compared inside different stacking contexts, and the…
CodeIgniter 2’s Active Record escapes values for you, which is why it gets recommended as the safe alternative to writing SQL by hand. It escapes the arguments it…
Asking for every post is one argument away, which is why it survives review: it works on the development database, and the development database has forty products in…
A data-* attribute is usually introduced as a place to hang values for JavaScript to read. It is also an ordinary attribute, which means CSS can select on…