Steve Phillips

PHP's worthless stack traces

I recently read a very good article on the problems with PHP, and one point that it brings up is the complex stack traces. While it doesn't give a specific example, I recently came across a bug in my code that lists a completely worthless stack trace. Bear in mind that this code is the result of purely built-in PHP functions. There are no extra modules or libraries involved that could create this mess.

Managing client side caching

In both my previous job and my current job, I have dealt primarily with internal systems and the unique challenges that come with them. Among these challenges are handling client side caching of asset files like javascript and css. When writing an internal application that updates frequently (sometimes more than once a day), I often found myself running into the problem of cached assets. If the user were to access a page that I had recently changed, they would get the new HTML, but not necessarily get the new Javascript.

Using trigger_error to deprecate old PHP systems

If you spend enough time writing code, you'll eventually come across a better way to do something and have the desire to replace all of your previous code with this superior method. Or, you'll find a block of code that you can quickly see is useless or redundant and you want to get rid of it. In both of these scenarios, simply removing the old code and putting in the new code seems like the obvious answer, but it's not always so easy.

Magic columns, part 2 - the fetch_models method

In my last post, I spoke about a pattern I have been experimenting with called the magic column pattern. Without repeating that article, it allows for great flexibility in regards to a model's member properties. As an follow up to that article, this second part will talk about a member method within the Model class that is used to quickly load related models.

The magic column pattern

Ever since I changed jobs at the start of the year, I've been far more cavalier with trying new techniques and seeing how they pan out. I don't know where this sudden devil-may-care attitude came from, but I suspect it's lifting the burden of old systems from my shoulders and a mirror of the approach I have taken with Fusion. The old systems were so ingrained in me that they almost became a force of nature unto themselves that couldn't be changed by a mere mortal code jockey like myself.

Parsing a consistent request on different environments

At work, I've recently been spending time on a router class for the custom framework that powers our internal administration system. This router will just about everything related to URL requests, including:


Fusion - lots of math learning going on here

It's been 8 weeks since I announced Fusion. I really need to blog more. Maybe I should start to follow Chris Shiflett's Ideas of March blogging revival and dedicate this month to keeping up to date with this blog.

Introducing Fusion

I've tried a few times in the past to make a game but haven't had much success. I can now say that I've gotten further with my current project than any of my previous ones and feel comfortable making a post about it. The current project is codenamed Fusion, and is beginning life as a Space Invaders clone. Along with Dovetail, it is a collaboration with a friend of mine - George Emond. He is doing the art and I am doing the programming.

Dump GoDaddy Day

Thursday was dump GoDaddy day, which was an organized boycott of GoDaddy in response to their stance on SOPA / PIPA. I was one of the boycotters who transferred my 5 domains from GoDaddy to Namecheap, even though GoDaddy claims to have changed their stance on SOPA.

Changing jobs

I started working at BDI in Feb 2007 and ended yesterday. After nearly 5 years of working there, first as a junior developer and eventually as development manager, it was past due that I part ways and move on. I enjoyed my time there, made a lot of great friends and advanced my skills as a developer tremendously. Unfortunately, the scope of projects that can be done while working there is limited, and I need to move on in order to continue my advance.