Someone posted a question about using global variables on r/php, which I answered. Copied here for posterity. Using global state is technical debt. This means you're trading off short term wins (mostly writing less boile…
My notes on Everzet's talk "Design how your objects talk through mocking" at PHPNW14 Everzet's Original slide deck Code sample here are using Prophecy to create test doubles Different test doubles: Mocks, stubs…
Quick strace command that I use all the time to see what files a process is opening: strace -f <command> 2>&1 | grep ^open Really useful to see what config files something is reading (and the order) or to see what…
I haven’t done much with Canvas, so I thought I’d experiment by making Conway’s Game of Life with a little JavaScript. Conway’s Game of Life is based on a grid of cells, which are either alive or dead. It has 4 simple ru…
Bitcoin is a digital currency without any central control. It was introduced 4 years ago today (3rd January 2009). 1 Bitcoin (BTC) is currently worth around $13. Last year Bitcoin grew considerably in market cap (now abo…
As the first alpha of PHP 5.5 has been released, now is a great time to play with its new features. The first new feature is generators. Generators are like very simple iterators. PDO’s PDOStatement class implements Trav…
Every now and then I need to batch resize or change the quality in some images. Photoshop and the GIMP let you do this, which is fine if you’re happy using your mouse or lots of RAM. The most efficient way of processing …
In JavaScript A common patten in JavaScript is immediately-invoked function expressions, also known as self-executing anonymous functions. These allow you to create a private scope that won’t pollute the global namespace…
The PHP Framework Interoperability Group (PHP-FIG) are a group representing most of the big names in the PHP world such as Zend and Symfony. The group has formed to encourage PHP frameworks to be more interoperable. They…
Responsive design today is great: different layouts can be served to different screen sizes. In the future, extra media queries could be available to web developers and designers to allow the content of a page respond to…
Mobile browsers delay browser clicks (or, more accurately, taps) by 300ms so they can detect double taps. This can be great but if you want to speed up clicks in your mobile site or app, you can use my plugin: jQuery Fas…
We all love using Dependency Injection but often Laravel’s facades and IoC container are used more like a static service locator, which (despite being testable) can easily lead to violations of the Dependency Inversion P…