Archive for the 'Uncategorized' Category

Geeking It Up a Notch

Monday, September 18th, 2006

For the first time in over five years I bit the bullet and purchased a new desktop computer.

My machine to date, and the one I am still writing this article on, has been an Athlon 850MHz computer. It has received numerous memory and hard drive upgrades over the years, but fundamentally it is the same machine that I bought with my life savings ($2400) so long ago. The computer has actually been sufficient for everything that I do, including the occassional game, and with a reformat I honestly could have kept it going. Still at some point one needs to move on and get with the times, so I chose last Saturday as the day I would once again be modern.

I must say that technology has progressed quite a bit since I last fully immersed myself in the world of computer hardware. Not having a need for the stuff I had completely stopped paying attention to what the latest and greatest processor or graphic card was. It took quite a bit of research to get familiar with how everything worked again, and thanks to some friends who did know what the hot new tech was I was able to spec out a new machine.

I should mention that I am very picky about what goes into the machine that I will spend 8+ hours a day on for the next four years, so once again I chose to assemble the computer myself. When the dust had cleared and I had finally realized that the floppy drive was hooked up incorrectly, I had myself the following brand new monster:

  • Intel Core 2 Duo 6400 processor
  • Asus P5B mother board with RAID, WiFi, built-in sound, etc.
  • 2GB DDR2 Dual Channel RAM
  • 3 Western Digital 320GB hard drives
  • GeForce 7600GT graphics card

Total cost: ~$1650 CAD

I’m still in shock at how much computer prices have fallen. I was able to buy a much better machine (even after adjusting for technology improvements) than I could have five years ago, and I was able to do it for about 70% of the price! The best part is that there are now desktop machines with more than sufficient power that can be bought for as little as $400. It looks like we are finally in the age where computers are becoming as common and potentially less expensive than the family TV.

One thing that hasn’t changed is the willingness of hardware manufacturers to accomodate even the most bloated computer budgets. I got great value for my money, but had I decided to buy the absolute best of everything out there I could have easily spent $5 to 10K. With computer hardware becoming outdated so quickly I can’t imagine every justifying that kind of expenditure.

Over the next couple weeks I will slowly be setting everything up on the new computer and transfering everything over. I still plan on putting my old one to good use, but haven’t quite decided on how.

What the Heck is a “Real Job”? How I Learned a Business Doesn’t Count

Wednesday, May 31st, 2006

When I was about 15 I had been running a small website on a game called Worms. The site itself was written in MS Word and featured design classics like a button labeled “Best Viewed in 1024×768″ and all sorts of negativity towards Netscape. However I really enjoyed writing material for the site and soon had a repository of unique content on the game.

One morning I received an e-mail that I initially deleted as yet more spam. However something about it caught my eye and after examining the proper English I realized that it was actually an offer from a gaming network to run their Worms Center website. I would be provided with an awesome design, unlimited diskspace and bandwidth, support for scripting languages (back when that feature was relatively rare), and freedom to take the site where I pleased as long as I made it the #1 site in the community. Oh and I would receive money every month for doing so. I was already exceeding the bandwidth on the free webspace provided by my ISP so I accepted the offer and my first job experience ever became building a worm-filled empire.

I didn’t know it at the time, but Worms Center turned out to be my first experience in running a business. I had to hire and manage a small volunteer staff, establish strategic partnerships with other sites, keep on top of the “industry”, manage public relations (got some great lessons there), build traffic, and of course cater to a picky customer base of other 13-20 year olds. In the end it paid for a top of the line computer, a ridiculous amount of pita and sub lunches, and whatever stupid stuff people my age bought. What a great experience!

While I was busy learning about business in an unconventional way and doing so from the comfort of home, my friends were also in the process of getting their first jobs. I was then introduced to a mentality that I didn’t really understand, and still don’t. The moment they joined the workforce flipping burgers and stocking shelves they became really helpful in telling me that I should also get a job. When I insisted that I did have a job and enjoyed it very much the response was always “that’s not a real job Matt”.

In the end not very many of them actually outearned me, and those that did worked ridiculous hours and were covered in grease burns. More importantly I was picking-up real web development skills and greatly improving my writing, which have played an instrumental role in everything I’ve done since.

The most shocking thing about this whole experience was the age that this happened. It’s not like we were forty and disillusioned by years of hard work in the real world. The fear of somebody doing something different, something with an unsure ending, is so strongly built into society that virtually all the high schoolers I knew instinctively tried to tell me that I was on the wrong path. In reality they were scared, and trying to re-assure each other as a flock that their normal path was indeed the correct one.

I wish I could say that this attitude has changed over time, but I still hear the same crap now even as I’m running a viable and relatively safe website development company. It does get better the closer you get to the entrepreneurial crowd, so being in a business program at university finally provided some more open-minded outlooks. Step into other faculties though and you can practically hear a flock of sheep running the moment you mention entrepreneurship.

Technorati Tags: ,

Building a Software Product? Quick Fixes Will Burn You Down the Road

Tuesday, May 16th, 2006

To my regular readers: this is a little off what I normally write about, but it’s my blog and I reserve that right!

Software is a strange creature because it can never be perfect. In fact part of the trick to successfully deploying a great program is applying the 80/20 rule (or whatever ratio applies to you) to bug fixes in order to not waste prepostreous amounts of time and money fixing that last little glitch. Simultaneously a buggy program quickly loses its usefulness, so there must be balance between being perfection and being lousy. I’m here to offer one very important distinction to aid you in restoring this balance.

If You Are Going to Fix It, Do It Right the First Time

It’s very tempting to hack solutions in when you need something extra in your software, be it a traditional desktop application or a web application. Doing it right can often be costly in time and money, while a hack can take five minutes and save the budget. We can always redo it when the resources are available right? Well time moves on, the hack is never fixed, and slowly more and more of the code and users begin to depend on the hack. The amount of fixing that now needs to be done begins to multiply and pretty soon your little lifesaver is eroding the entirety of your application.

I’ve fallen victim to this more times than I can count. I recently spent all weekend fixing design problem in user management code that I wrote three years ago. A lack of foresight has required almost completely gutting the existing code and corresponding access routines, leaving me with gobs of dependent code that now needs to be fixed. The past can come back to haunt you, and when it does the cure is now much worst than it was in the past.

It Comes Back Down to Design

Whenever introducing a new feature or beginning an application, careful attention must be paid to the design. Ultimately you want something that will not only work well when its released, but will also be able to have the needs of the future easily integrated into it. I’ve been rewarded heavily for my foresight when I began a site framework years ago, because that base code, including the very first file that was ever written for it, is alive today and thanks to its modularity and high expandability it doesn’t feel dated.

Here are some general rules to check for to make sure the code that you are about to write is going to be a very sour gift for your future self:

  • Flexibility: Don’t write a module that can only add a specific column of data when it’s only slightly harder to make it work for any column. Providing a reasonable amount of generalization encourages re-use which in turn lowers the amount of bugs that can creep in (as you aren’t duplicating the same functionality over and over).
  • Modularity: If you aren’t writing a highly modular application that can easily have functionality added and decoupled then you are putting yourself at a tremendous disadvantage against nimble competitors like Google who completely redefine expected behavior and functionality overnight (see why GMail is destroying Hotmail). I like code that behaves like LEGO blocks.
  • Sanity: My all-encompassing description for code that makes sense. This means avoiding strange solutions for problems (typical result of micro-optimization or laziness) and writing intuitive self-descriptive code. You should be able to look at the code years from now and have it make sense.

What you do in the present should be for the purpose of building up your future, not leaving future self a mess to clean up. This applies to software!