There is no such thing as perfect code

The title alone may offend some folks that read this post, but, please, hear me out before you close the browser window and go away muttering “this guy has no idea what he’s talking about”. I was talking to a developer friend of mine today and he made the statement “there is no such thing as perfect code”. The statement kind of took me by surprise but as we talked through it, I came to see his particular point.

How many times have you written an application or feature that solved a particular problem and then gone back to look at it later and thought to yourself “this is some really crappy code that I wrote–I wish I could redo this and do it ‘right'”? I know I have had that thought countless times looking at things I’ve written over the last 11 years of my professional development career. Did we think the code was “crappy” when we launched the application? Chances are the answer at that time was no. So, what changed?

Read More

Database bullet dodging and lessons learned

I dodged a very large (metaphorical) bullet yesterday. I’m not in the habit of trying to find bullets to dodge, but this one found me because it tuns out I didn’t plan as well as I thought I had.

It all started yesterday morning when a client asked me to make some batch updates to the data in his MySQL database. So, I wrote a script to make the required updates. Before running the script, I made a backup of the database in case something went wrong. Everything was good so far. I ran the script, checked the database to see if anything looked amiss and called it a night (oh yeah, this was like 11:00pm last night). This morning, I get an urgent text message from the client saying that the data didn’t look quite right. No problem I think, I made a backup copy of the database last night, I can fix this. But nooooo, that database backup wasn’t around any more. Why, you ask? Oh yeah, that. I saved it to the same location that the regular, nightly backup saves to. So by the time I needed the backup this morning, it was already gone. Luckily, the eventual fix was very simple once I figured out where my script had gone wrong. It could have been really ugly though.

Read More

External monitor solution for your laptop

One of the things that I’ve missed greatly since moving to using a laptop as my primary machine just over 3 years ago is the ability to run multiple monitors. My old tower machine had a pretty hefty video card (for the time) in it that had both DVI and VGA connectors built in. At the time, I ran twin Dell 17″ LCDs off that card and loved the advantages that having twice the screen space gave me.

That all changed when I bought a Dell 17″ laptop and started using that as my primary machine. While you can leave the laptop open and use the internal LCD screen with an external monitor attached to the monitor connector, that configuration has never suited me well. I have this “condition” that things I deal with on a regular basis need to be symetrical (my wife thinks I should be in therapy for it, I think it’s just a matter of wanting things to look “right”), so having a laptop open next to an external monitor just never appealed to me.

Read More

Living the “Inbox Zero” Way

A few weeks ago I read a series of articles titled “Inbox Zero – Action Based Email” on the 43Folders web site. I had been looking for a better way to keep up with all the things that I needed to do and had happened upon the Todo application for iPhone as discussed in a previous post. That led me to the online task server named ToodleDo which I started using heavily after doing a “brain dump” of all the things running around in my head that I needed to do.

For the lasst two weeks I’ve been able to successfully maintain 0 messages in the Inbox folders of my 3 main email accounts. I’m definitely not “there” yet with the whole Getting Things Done method of managing what you need to do, but I do feel like this is an important baby step.

Read More

A “Cloud-y” Revelation

I suppose I’m terribly late in having this revelation but it dawned on me last week that the future of a lot of a significant part of what we do in our our day to lives is going to depend on “the cloud”. What do I mean by that you ask? Let me ‘splain something to you Lucy…

Last week while browsing through the iTunes App Store, I decided to purchase a copy of ToDo. ToDo is a nifty GTD-based application for keeping the items in your to do list moving and making sure that you don’t lose track of anything. What impressed me most (other than the fact it is a very nicely built application) was its ability to synch with 2 totally unrelated online task management services (ToodleDo and Remember the Milk) which means that you no longer have to keep a duplicate to do list on multiple devices AND you can now take that one, central, authoritative to do list with you wherever you go.

That’s when it hit me. When I’m looking for providers of services that I am in need of, I no longer look at any services that are just online, or just installed on my laptop. If the service I’m looking at doesn’t have touch points for my computer, my iPhone and web-based access, I’m just not interested. It appears to me as though this is the direction that things are moving. People don’t single access points to their data any more and the trend is growing.

As a developer that lives in this space, this revelation was pretty significant for me. It made me realize that any application that I build from now on is going to require those multiple touch points if it is to be a complete success.

Bring on the clouds I say…I like this trend even if it took me longer than the average bear to figure it out.