You might be saying "Duh – just use the CSS 3 border-radius style". Or, you might be saying "Who is this guy? Why doesn't he…
Prefer open/close syntax when commenting
In many languages, there are two ways to comment: Open/close (often used for multi-line comments), i.e. /* my comment */ Single open (often used for…
Keeping on top of website errors
One of my favorite books depicts a southern farmer who boasts how his animals do all the work (maintaining the grass by eating it, etc,…
Web form emails missing information
Probably not worthy of a blog post, but the solution was so simple, yet finding it was so hard! Are you sending emails to yourself,…
Testing and Debugging the easy way: The debug flag
Setting and accomodating for a debug flag is one of the easiest ways to turn your script or application into "debug mode". One such method…
Avoid the MySQL password function
MySQL offers a convenient method to store user passwords, encrypted in a database table. You use the password function both to store a password, and…
Expires header and dependent content-types
I generally set expire headers for CSS, JS and images according to Google's page speed recommendations, which at time of writing is one month. This…
Don’t forget about Base 2
We've all gotten so used to high-level programming that we often forget about how compact and clean machine code really is. Wait a minute, let's…
MySQL Union All – Unexpected behavior
I don't use the UNION ALL SQL keyword all that often. In most cases, I'm happy with UNION, which merges duplicate rows. Today, for this…
Firefox, some things are better left unchanged
I love Firefox, it's been my web developers tool of choice for years. The Web developer's toolbar, firebug, and various other web development tools make…