In a blog entry earlier this month, I compared the Firefox branch builds to the Firefox trunk builds (and concluded at the time that it was best to stick with the branch builds for now). Though the previous entry goes into more detail on the “branch” vs the “trunk”, here’s a mini-recap: the Firefox development team creates a separate copy of the codebase just before every major release; and, only low-risk bugfixes are applied to this “branch”. And, for a time after the Firefox 1.0 release, the “1.0 branch” was more stable than the trunk...
Fighting Blog Comment Spam
It seems our blog is starting to get some attention. Unfortunately, it is by comment spammers. Realizing that dropping their links across blogs everywhere is a great way to up their search engine rankings, comment spammers make fake comments on posts, much to the annoyance of bloggers everywhere.
To fight this, today I installed the WordPress plug-in “Spam Karma.”
Spam Karma was a very simple install. I downloaded a .zip file from the link above, unzipped the file, uploaded one file to an existing directory on our blog server, and put the rest of the files in a new directory...
Getting the browser to cache your dynamically generated images
When building a web application you sometimes need to dynamically generate the image. In my case I’m not using HTTP authentication so I have to secure the images another way. I tucked the images outside of the document root and pull them in through a php script as needed. At it’s simplest your php script merely sets the Content-Type, Content-Length and dumps the image.
$fh=@fopen('path/to/image.jpg','rb'); if ($fh) { header('Content-Type: image/jpeg'); $s_arr = fstat($fh); header('Content-Length: '.$s_arr['size']); fpassthru($fh); }
This is all well and good except that php is adding all sorts of headers to prevent the browser from caching...
fruitcake recipe
Since long before I was born, it’s been a Busch Family Tradition to have chili & hot chocolate on Christmas Eve. Nobody’s sure exactly what year or why this began, but given that my father grew up in Wisconsin, we imagine it probably happened whatever year was the coldest, and when his family didn’t have a lot of extra cash for extravagant dinners. It worked out so well, we suppose, that people in my family have enjoyed it every year since.
Well, most of us have enjoyed it. We found out almost after the fact that my two sisters really didn’t enjoy chili & hot chocolate all that much...
Building Better Web Apps
As a web application developer I get frustrated by the sluggish user interface that most web applications provide. I want interaction with a web application to be as quick as a desktop application. A number of web applications take advantage of the XmlHttpRequest object, Google suggest being a recent notable addition. All versions of IE 5 and up have XmlHttpRequest, as well as Safari and the Mozilla based browsers. This magic little object lets you make asynchronous HTTP requests behind the scenes and dynamically update the web browser...
May as Well Set Floats to Display: inline
As one of the three three major layout mechanisms — in addition to absolute and relative positioning — floated elements are not uncommon these days. However, the occasional browser weirdness can contribute to float’s already-tricky nature. In particular, IE has the bizarre habit of doubling margins on a floated element if that margin is in the same direction as the floating (such as margin-left on a float:left element). Fortunately, there’s a solution.
To give an example, say you had an element which had a 10em left margin that was also floated left. Modern browsers would correctly display a 10em left margin but IE would come up with 20em somehow...
greetings from ottawa!
in our headphones
Yesterday, a visit to the used CD store during lunch revealed the differing tastes we all have in music. Alex picked up a few metal discs. Bryan grabbed a TV show’s soundtrack. I grabbed two CDs ( and ) for a holiday party I’m co-hosting this weekend.
We all enjoy listening to our own music in our headphones (and sometimes out loud, particularly when Bryan busts out singing). We thought it would be neat to have our playlists post to our blog...