Archive for June, 2008

Virtual Server Setup

Saturday, June 28th, 2008

Recently, I needed a clean environment to do some development for a project at work. The OS (ubuntu) I have installed on my development computer wasn’t the same as what the application was originally developed and deployed in (red hat) and this was causing a few issues. I debated bringing up a slicehost slice solely for coding and testing, but this seemed like a hassle, as well as an extra expense.

Enter virtualization. There are a number of options to create a virtual computer on your host system. The most popular hypervisors are VMware and Xen. What these programs will let you do is create a completely separate installation of an operating system inside your current one. This let me create the clean environment I needed for this project.


Internet Explorer and Ajax

Tuesday, June 17th, 2008

Okay, I just wasted waaaay too much time trying to track down an apparently odd Internet Explorer redraw issue. The problem was an ajax call associated with the onchange of a checkbox form element. In Firefox this worked perfectly. Click the button, the div updates itself. However, in IE 6 and 7 it would just sit there and do nothing until you would force a redraw (ctrl +a seemed to do it), or scrolled the page up & down a few times.

It turns out, this was because of the way IE handles the onchange javascript event. This only fires once the checkbox loses focus. To fix this, I just switched from the onchange event to the onclick event and everything works as expected. I’ll retract some (okay, just one) of my nasty comments about Internet Explorer now as this does make logical sense thinking about it now.

So the offending code looked like

<input type="checkbox" name="mycheckbox" value="something" onchange="update_div();">click me

whereas it should be:

<input type="checkbox" name="mycheckbox" value="something" onclick="update_div();">click me

BambooInvoice – Free Online Invoicing software

Saturday, June 14th, 2008

If you do any contract work, you’ve probably had the joy of tracking your hours (if you’re still trying to solve that issue, check out my Project Hamster post) and then creating an invoice of some sort for the client. In the past I have tried a couple of solutions such as a creative Excel spreadsheet or creating a new email from scratch each time. I’ve also checked out the online service Blink Sale, but, never really liked the thought of some other company knowing how much I’m billing my clients and making each month. That, and there was the 3 invoices per month limit for the free version.

This is where BambooInvoice steps in. It’s a FOSS solution that you host on your own server. The interface is great, and installation is simple.


Simple Time Tracking with Project Hamster

Friday, June 6th, 2008

If you’re like me, you frequently need to be able to tell people how long a project took, how much time some bug fixes ate out of the day, or what you worked on the past day. I’ve looked around for a quick & simple app to track my time usage and hadn’t come up with a good match until I recently found Project Hamster. My previous main barrier to usage was laziness and wanting a lightweight program to do this simple task. Hamster makes it dead easy to enter time, add new categories / activities and view simple reports.


Faster DNS lookups with OpenDNS

Monday, June 2nd, 2008

So, first off, what is DNS and why do you care if it’s fast? A crash course in dns is that it changes a nice, memorable name like, oh say, to it’s actual IP address ( in this case). Think of it as flipping through the phonebook to find out somebody’s phone number.

Now, as you are browsing the web sometimes you may notice that it can take quite a while for the page to initiate a connection with the remote server. This can sometimes be caused by a slow response from a dns server so it takes a while for your browser to figure out who to ask for content. Imagine you’re running a server and you are sending out a few thousand emails an hour, as well as pulling in content from multiple sources, and doing reverse lookups on numerous IP addresses. Any slight delay will add up to huge latency over time, and DNS lookups can be quite costly (time-wise).