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…
jQuery nextUntil sluggish
One of jQuery's latest traversal functions, nextUntil, adds enormous value for anyone using expand collapse functionality in their sites. By allowing you to "select" all…
Image colors render differently in various browsers
I ran into this issue today, specifically with a 24-bit transparent PNG, saved via Photoshop's "Save for Web" feature. The name "Save for Web" should…
Plone SEO enhancements
I have a fondness for Plone, although many developers point to it's SEO unfriendliness as it's primary weakness. Plone does boast SEO friendly URLs, which…
Storing last login date as a marketing tool
If you're not already tracking your users' last login date in your database, you might want to consider it. The storage space footprint is minimal,…
Strong form SPAM prevention technique
To emphasize the necessity for some form of SPAM prevention, consider this example. You have an HTML form, such as: <form action="send.cfm" method="GET"> <input…
Eclipse Remote Systems FTP issues
I don't normally drift outside of the coding skillset, but this one has irked me for a long time, and I know other's are feeling…