Category Archives: PHP

What goes around, comes around

I’m not a big believer in karma, but this week I experienced some karma-like effects. Two years ago for work, I developed code to protect wiki websites. Then I published it on my blog.

This weekend a software upgrade caused this protection code to stop working on our websites. I couldn’t find an answer. Then yesterday, some chap named Nathan left a comment describing the solution. I hadn’t asked for help. He was simply documenting his own experience. But it was just what I needed.

This is fundamental to open source software — the creation of a software commons. It’s also what happens on Wikipedia, the creation of a knowledge commons.

In Love Is the Killer App, Tim Sanders suggests freely sharing your knowledge and your network, not hoarding them.

Jon Udell talks of “narrating” one’s work from day to day. This allows everyone to share in your vast brain knowledge, and it becomes your living résumé. I’d like to do more of that.

Amtrak series: Ruby on Rails on Rails

This will be the most technical of my posts in the Amtrak series, but it’s not just for computer geeks so stay with me. Here we go.

Ruby on Rails is a “web application framework”, a way for programmers to make web applications more easily and more quickly (and more enjoyably, as its creators would be quick to point out.) It was created by 37signals, the makers of Basecamp and other fine web apps, and has been one of the fastest growing programming environments of the last couple years. “Ruby” is the programming language and “Rails” is the set of additions that make it “fast” and “easy,” like a high-speed train. (Not a sight-seeing Amtrak.)


You probably see where this is going. As an exercise in literalness, I though it would be interesting to do a little Ruby on Rails programming while on the train, or in other words, Ruby on Rails on Rails. (Mitch Hedberg said “I’d like to see a forklift lift a crate of forks. It’d be so…literal. ‘Hey, you’re using that machine for its exact purpose!'”) See the pictures.

I have not delved into Rails as much as my local colleagues, but with the little I’ve used it, I’ve been impressed. By taking away the tedious parts of programming, it really does make programming more enjoyable. I know several good developers who prefer it.

Ruby on Rails enforces an architecture called “Model-View-Controller” (MVC), which is used heavily in Mac applications and well written web applications. Though not built on Rails, WordPress also uses an MVC architecture. If you have a WordPress blog, you know you can easily change the theme of your blog. This is thanks to the modular MVC architecture with which it was written.


Here’s where this applies to everyone: 37signals hasn’t only extracted Rails from their best programming practices, they’ve also extracted a book from their best business practices. I highly recommend Getting Real by 37signals, availably entirely for free on their website. They’ve given away their “cookbook” — what they’ve learned about marketing, project management, time management, hiring, agility, task prioritization, and more. I finished the book believing that small teams can do great things.

New version of Seth Godin WordPress plugin

Five months ago I created a WordPress plugin to implement a marketing principle taught by Seth Godin. He said good marketers “treat returning visitors differently than newbies”. The plugin has been one of the most popular features on my blog.

Today I upgraded the plugin to version 1.3, adding a feature that allows the welcome message to be displayed permanently if desired.

For more information, read about the What Would Seth Godin Do plugin for WordPress.

PHP 5 and Beyond

I enjoy developing in PHP 5, for its improved object oriented design and XML support. PHP 6 is slated to have additional useful improvements like built-in Unicode, built-in caching, and increased security out of the box (no register_globals, magic_quotes, or safe_mode).

Here are other improvements I’d like to see in a future version of PHP:

  • while-else statement — A while-else statement would be perfect for MySQL results: loop through the results, or if there were no results display an error.
  • a better toString() — The toString() function lets you cast an object as a string, but in PHP it only works when directly combined with echo or print. Dumb.
  • function overloading — Let the signature of the function call decide which definition to use.

Read more about PHP 6.