Twitpic and Youtube with Shashin

I just did something that’s a no-no with beta software – I added new features. I just couldn’t resist 🙂 . Shashin 3 now works with Twitpic and Youtube. To your right are a photo from Picasa, a photo from my Twitpic account, and a Youtube video I uploaded, all shown using a single Shashin[…]

Shashin Documentation and Examples

Writing good documentation is hard work 🙂 now contains detailed documentation for installing and using Shashin 3 (the beta version is currently available at GitHub). I modified the Shashin 3 progress status page so it is now a demo page, with . I created a new, temporary page for , since it is still available[…]

Dependency Injection in PHP

Last week I gave a presentation to my team on dependency inversion and dependency injection in PHP. Dependency inversion is the “D” in the the SOLID object oriented design principles, and dependency injection is a design pattern for implementing it. We previously learned the single responsibility principle (PDF) (the “S” in SOLID). To me, dependency[…]

Why Do Planes Crash?

A couple weeks ago I gave a presentation to my team, based on Malcolm Gladwell’s Outliers: The Story of Success. I focused on his analysis of mitigated speech (when we downplay or sugarcoat the meaning of what we say, usually out of deference to authority). Mitigated speech has been a key factor in numerous airplane[…]

Agile Programming for WordPress Plugins: The Joy of Output Buffering

A standard practice of Agile programming, and good programming in general, is to separate your display code from your application logic. Bob Martin: Today’s modern programming environments make it possible to put many different languages into a single source file. For example, a Java source file might contain snippets of XML, HTML, YAML, JavaDoc, English,[…]

Thoughts on @RonJeffries “But We Need a Database… Don’t We?”

Ron Jeffries wrote a post a couple days ago with a title indicating its about databases, but then he proceeds into a test-driven development (TDD) coding exercise. Halfway through, an ostensible reader interrupts: Hey! I thought this was supposed to be about databases??? Hey, yourself. Try to pay closer attention. This is totally about databases.[…]