Posted on Leave a comment

The Perfect Job Pet Project

I took my 15 minutes on my pet project in bed as I drifted to sleep. No computer was necessary. The question of how to write the application had to be answered. ColdFusion or PHP? I have hosting for both. This question only applies if I am going to totally custom design the application from ground up.

Custom designing a web application can be compared to redesigning a kitchen. You have skills. You can buy tools and wood at Home Depot. A professional might choose different places for equipment and materials. You could draw rectangles on a piece of paper and build your own cabinets but you will probably make some mistakes that a professional carpenter has been trained to avoid. When your cabinet sags oddly in the middle you might apply a hack by wedging a length of 2×4 under the sag. A professional would never do that but no one is going to see your hack so what does it matter? That is until you try to install an appliance under the counter and realize your counter cannot be used with that appliance due to the accessibility issue created by your 2×4. In the end you will probably have spent the time and money doing it yourself and then time and money to have a professional repair your installation. Of course, at this point you resent the professional because so much money is being spent. A less expensive option would be to purchase pre-built (open source) cabinets. These should mostly fit your situation and you probably have the talent to install them yourself although paying a professional to install the pre-built cabinets will guarantee they are installed correctly and don’t fall off the walls.

Laying in bed thinking about the path of least resistance and picking low hanging fruit, I ruled out a custom application despite having the talent to build it. A custom application will take much longer to launch and there is no guarantee that The Perfect Job will get traffic or produce income. Although there is plenty of open source in the ColdFusion community, I will rule it out and limit myself to the PHP open source community. This narrows my decision to WordPress, Joomla, Drupal, and Django (a web application framework..so this is still custom programming). There are plenty of other options but no sense in making the list too long. A comprehensive list can be found at http://cmsmatrix.org/.

I have more experience in customizing Drupal than I do with Joomla or Django. Drupal is a powerful CMS and many consider it a real CMS while WordPress is frequently dismissed as "just a blogging platform." However, Drupal hits a server kind of hard. I don’t pay much for hosting and you get what you pay for so I will rule Drupal out to avoid having increased hosting fees due to too many CPU cycles or memory usage. Once The Perfect Job is getting more attention, I can always upgrade the hosting and reconsider Drupal.

The choice is quickly becoming self-evident. Joomla gets a lot of positive press. It is a split from the Mambo development. If I am not mistaken, Scripps Networks is a fan of Django and that alone should be a reason to experiment with and learn Django. The fact that they are a major online publisher adds more reason. However, I am far more familiar with WordPress customizations than Joomla or Django. The path of least resistance is undeniably WordPress.

So in less than 15 minutes, I was able to come to a firm decision to write the features of The Perfect Job as part of a WordPress installation. The next 15 minutes will come this evening or this weekend and will be to closely read the WordPress licensing agreement to see if the coding I do for The Perfect Job will have to be released into the open source community or not.

Posted on Leave a comment

What do I do?

I often get the feeling that most people have no idea what I do down in this dungeon. Here’s a sample:

In the next hour, I will write, test and prove some php and JavaScript+jQuery to present a table of data, allow a user to click a delete icon, use a modal to prompt for delete confirmation, then remove the data from the database and the row from the table without a page refresh. Will work in IE6, 7, Chrome, Safari and Firefox.

This is also a micro-milestone. I often write these down, although I rarely publish them, when the number of tasks I have is overwhelming, or I have coder’s block, or I need motivation. Giving yourself small, achievable milestones can lead to great productivity.

Update: Had a digression. To get the new code to work I had to upgrade jQuery’s UI from 1.5.3 to 1.7.1. This was well worth the effort. They’ve done a great job with 1.7.1!

Posted on Leave a comment

Pet Projects

Every developer needs a pet project. In a decade of writing code for other people I have had some fantastic ideas and even a couple of false starts but never truly had a pet project. My excuse has always been that I was waiting for a lull between projects to be able to write my own but there is no such thing. Either you jump from one project to another or from a project to marketing for another project. I’ve decided that I will steal away 15-30 minutes a day, no more, to work on my own pet project. For the project, I have chosen The Perfect Job. This evening I will take 15-30 minutes and simply decide between custom coding all functionality of the site versus incorporating it into a CMS such as WordPress, Joomla, Django, or Drupal. As I work through the build out of The Perfect Job, I will blog each 15-30 minute session here.

Posted on 2 Comments

Bureaucracy R.I.P.

An easy mistake as a freelancer is to get behind on paperwork. Maybe that paperwork is balancing your checkbook or sending invoices or mundane like writing up postmortems for projects and filing the supporting documentation or something more evil like IRS filings. Whatever it is, I’m caught up on all of mine!

Posted on 1 Comment

April 1st – the most worthless day on the Internet

How’s the saying go? "Believe none of what you hear and only half of what you see" or did I get that backwards. The point is some inanely hugh amount of information on the Internet is inaccurate. I’ve always said 90%. This is why you should always confirm your sources! On April 1st I just assume 100% of the information is wrong. Of course, whose April 1st are we talking about? Darren Rouse of Problogger fame lives in Austrailia so for many people last year his April Fool’s Day joke came in on March 31st making people believe it was real. My first 30 seconds of looking at the Internet today:

TechCrunch beat me to the roundup. That said, Internet, I’m turning you off today. Even Redditers hate April 1st.

Update: When did April Fool’s Day begin?

Posted on Leave a comment

Today

I have so many deliverables due today that I feel like the pregnancy ward on a full moon.

Btw, if you unplug your harddrive to be able to replace a stick of memory, your AMD-K6 2/400 will report "Primary Hard Disk Fail" upon trying to boot and give you a mild heart attack.

Posted on 3 Comments

I’m done with document.getElementById

I’m working on a project that has compatibility with Internet Explorer 6 as a major requirement. This means all appearances, all Ajaxy functionality, every aspect of the web application should look and perform in IE6 just as it would in Firefox, Chrome, IE7, IE8, and Safari. One of my favorite pieces of code is "document.getElementById()" but special cases have to be considered for IE 6. As an example, you can use getElementById to change the value of a hidden form element:

<input type="hidden" id="foo" name="foo" value="default value">
<input type="submit" id="goBtn" name="goBtn" value="Process..." onclick="document.getElementById('foo').value='anothervalue';">

That code will not always work. jQuery comes to the rescue! Rather than write lines and lines of additional code for browser testing and coding for a special case, we can simply replace "document.getElementById(‘foo’).value=’anothervalue’;" with "$(‘#foo’).val(‘anothervalue’);" and the code will work.

<input type="hidden" id="foo" name="foo" value="default value">
<input type="submit" id="goBtn" name="goBtn" value="Process..." onclick="$('#foo').val('anothervalue');">

I cannot sing jQuery’s praises enough!