Lost in LoC


Getting Software Development Right.

Posted in Corporate Philosophy,Development by Ryan Baldwin on February 28, 2008
Tags: , ,

I’ve been doing a lot of thinking about “computers” and this whole “Internet” thingie, and I think it’s safe to say that software is The Next Big Thing, and has been for the past 20 years. When you consider all the software that exists in the world, and how all this software allows us to do the things that we do, it’s pretty mind boggling how much code has been written. I’m often amazed at cell phone technology and all the software that’s been written to support a simple phone call. The software on the phone, the software to support the various infrastructure, for routing calls, for determining GPS positioning, for billing, roaming, text messaging, etc. It’s enormous! I recently read that a new, fully equipped mobile phone can have an excess of over 5 million lines of code; half the R&D cost of a new car is invested in software. Heck, I have to surf the internet whenever I wear a suit so I can remember how to tie a tie. Software, evidently, is here to stay.

There are billions, if not trillions of lines of code that exists in the world today. Trillions of lines of code that have generated billions upon billions of dollars in revenue. Trillions of lines of code that affect almost every single thing that we do. And upon these trillions of lines of code, billions miss the point of what software is supposed to do – which is all the nitty gritty stuff that we hate to do. In a nutshell, software’s purpose is to automate, not digitize.

Perhaps I’m jumping to conclusions, but I find that a lot of software out there is focused too much on the whiz-bang trap, and not enough on making my life easier, more productive and better. A good example is a product I recently worked on. The product in question was a Point of Sales system which did a lot of great things. When it came to data mining, the tracking of key metrix, and real-time cross-continental financial reporting the system was second to none. It had fantastic features that cut away all the chaff and showed you exactly how well your business was doing up to the second. However, when it came to managing some key components of the business the software was not only unhelpful, it was down right painful to use. But it wasn’t painful to use because the user interface was complicated, it was painful to use because it didn’t actually help you accomplish those key components. The difficult manual process that existed before purchasing the system (which was performed on paper) was still a painful manual process in the system.  The only difference was that instead of using a paper and pencile, the user would use a keyboard and a monitor (and a lot of mouse, but that’s another issue all together). These core components were simply digitized and not automated.

Now, don’t get me wrong, there were parts of the system that were automated (the reporting, metrix tracking, etc.) however they were the wrong parts. The parts that were automated were all secondary features that were the byproduct of using the primary features of the system (in which very little automation existed); or they were automated processes that required so much manual configuration up front that it was barely worth setting up. In other words, the system did a poor job of making the primary, day to day business processes and administrative activities easier because it failed to automate those processes and activities.

And this, I believe, is one of the key differences between poor software that makes you want to shutdown your computer and software that makes you want to fork over a thousand dollars! These little features that automate key components have huge impact. The reason why I use Google Mail isn’t because of the Gigabytes of available space (I don’t even know how much disk space I have with Google anymore), it’s the feature that orders my email threads into conversations instead of a dumb sort-by-date-received. I like using iTunes because all I do is click the song’s “purchase” button and 30 seconds later I have it on my hard drive and it’s playing on my computer speakers. I love using my iPod because when I want to get new music onto it I just plug it into my computer. Done.

These are all examples of products that have oodles of competition but they leave their competition in the dust. Why? Because the designers identified the painful processes that traditionally exist in these applications and they automated those processes so that the users don’t have to worry about them anymore.

Not only do I enjoy using software that automagically removes the painful parts of my life, I also enjoy creating the automagic software – and that’s exactly what I’m doing at VendAsta right now. We’ve identified some pain points in the business processes of our client and we’re automating the solution so they never have to worry about it ever again. Intrigued? Then send us a resume – we could use your creative input.

VendAsta Rocks!

Posted in Shameless Corporate Plugs by Ryan Baldwin on February 22, 2008
Tags: ,

Well, this Friday caps off my first week at VendAsta Technologies Inc. I started on the Tuesday after the Family Day long weekend, and I have to say, this has probably been one of the most satisfying weeks of work I’ve had in years. I’ll take you through the scoop of what’s gone down in my first week.

Tuesday: Get new laptop (Dell XPS m1330); get 21″ wide-screen monitor; install necessary software (EVEMon, Opera, etc.); steal the CEO’s chair; give the CEO back his chair; build my own chair; watch new laptop suddenly stop booting; cry sad panda; get new laptop (Dell XPS m1530); smile appropriately; wipe away tears of joy.

Wednesday: Start writing HR “Welcome Guide” masterpiece (we’re a start up and I’m Employee #2, so I started documenting all my questions and answers); read over product backlogs of work that’s been done; wipe away tears of joy.

Thursday: Have an awesome meeting with some really smart people; read up on client’s requirements and newly discovered information; start work on simple Proof of Concept for dynamically generating forms based on underlying XML fragments; wipe away tears of joy.

Friday: Continue working on Proof of Concept; install MSDN documentation; write blog entry (so I can have a free beer at 3pm as per our Corporate Blogging Policy Amendment issued by Brendan King – an amendment I believe I can live with); wipe away tears of joy.

The tempo here is awesome. Really smart, self-motivated people, an organic team that naturally adapts to change, an awesome atmosphere and a super duper sense of empowerment. I actually have a say in how we approach things, what we should do, and how we should do it. I have a voice along with the voices of the other dozen or so members of VendAsta – something I’ve been craving at this point in my career. End Result: All I want to do is build awesome software that makes people go WOW!™

Are you craving the same things I was craving? Do you want to get in on the WOW!™ action? Good news – VendAsta’s hiring. Word on the street is that you should send a CV.

Never go Back for Seconds

Posted in Corporate Philosophy,Development by Ryan Baldwin on February 18, 2008
Tags: , ,

I come from a small, blisteringly cold corner of Canada called Regina, Saskatchewan(Regina’s the city, Saskatchewan is the easy-to-draw-hard-to-spell province).  The population hovers somewhere around 200,000 people, and the temperature fluctuates between -40 C in the winter and +35 C in the summer.  That, coupled with the fact that we’re the capital city and thus the political center of the province, makes for a fairly interesting year-round climate.  I’ve lived here for 2 years.

The first winter I lived here I experienced something remarkably annoying, something that flustered me so much I absolutely dread having to face it when it occurs.  This something could literally ruin my day.  This something is how the city handles heavy snow fall… or, rather, how they mismanage heavy snowfall.  Essentially here’s what happens.

Day 1:  Mother nature unleashes a fury of ill tempered wind and snow.  You get cold feet and a runny nose, and then dread having to shovel your walk.

Day 2:  You think about shoveling your walk, but get lazy.  Coincidentally, the city feels the same way about plowing  the streets.

Day 3:  You shovel your walk and, if you’re responsible, you throw down either some salt or some sand so that the mail man doesn’t kill himself when he’s delivering the latest issue of the Sears Canada Catalog.  The city sends out the plows.

Day 4:  Your car slides uncontrollably out of control into oncoming traffic but, calling on the evasive maneuvering powers of Mr. Zulu you avoid catastrophe and regain control of your vessel.

Day 5:  You repeat day 4 and thus decide it’s best to just walk everywhere.

Day 6:  The city decides to throw down some salt or some sand so that its fine citizens don’t kill themselves when delivering themselves and their families to their destinations.

It’s Day 3 that drives me absolutely batty.  The city always plows the streets on these big snow days, but in doing so they leave huge stretches of sheer ice.  The roads will often be far worse afterwards than if they had simply left the loose snow.  It usually takes the city a good couple more days before they unleash their army of dump trucks and spread sand on all the roads so that our cars actually have some traction and stop at red lights.  What bothers me about this isn’t the fact that it’s so hard to drive, it’s that the city didn’t finish the job when they should have, and it makes my “user experience” one of pain, anxiety, and in the worst case scenario, fiscally expensive.

Why the city doesn’t dump sand immediately after plowing the streets is a mystery to me.  They must be able to foresee the road conditions they’re creating when they plow, so why not do something about it?  Why wait so long afterwards?  It’s obvious that the people using the roads will require traction, so why not give them traction instead of making them wait in pain for it?

The software industry is chalk full of similar examples.  For instance, at my previous job our flagship product was a retail Point-of-Sale system.  One of my projects was to integrate the services provided by Flipswap directly into our product so that our customers (wireless retail stores) could increase their revenue for doing practically nothing.  Sounds great (and it is – free money!), however, for our first release we didn’t include any reporting or ways of reconciling these types of transactions.  This is an odd thing to do considering our flagship product’s claim to fame is the ability to track and reconcile practically everything in the world. 

So we created a fantastic new revenue boosting feature that was counterproductive to the main philosophical objectives of the product – the same philosophical objectives that our customers bought into - with the intention that we would introduce the missing functionality “in the future”.  Of course, when it comes to software, the words “we’ll do it later” are 4 of the deadliest words you can utter, as “later” can be months or even years down the road, if ever.  For us it was about 6 months later, and like any new feature there were bugs and it was far from perfect.  However we spent the time to get things fixed up, and the reporting features are now reliable and stable… 14 months after the original feature set was released.

The need for reconciliation and revenue reporting for this new feature was easily foreseeable, but we frustrated our customers with a complete lack of it for 6 months, and then frustrated them more by unleashing a somewhat mediocre implementation.  It’s just like the city waiting 2 days to plow my street, then waiting 2 more days before sanding those streets such that the things are actually usable.  We - the people responsible for developing software (and I’m not talking about just developers) need to perform our due diligence and examine what problems our new features will introduce to the user, and then make the appropriate changes such that those problems will not exist.  We want to enable and empower our customers, not hinder them.  We want to make a natural extension of their business that allows them to do their jobs faster and better.  We want to automate a process, not digitize a process.  So when we address the buffet table of options, lets not just load up our plates and choke back what we have and then go back for seconds.  Lets take a good hard look at what we want and need right off the bat and get it all in one serving.

Life After Blue Screens of Death

Posted in Technology by Ryan Baldwin on February 13, 2008
Tags: , , ,

As far back as I can remember I’ve always had a computer. In my earliest memories exists an Apple II Plus. I remember sitting in front of that brown clunky keyboard and, for the most part, randomly hitting keys with all my weight an in attempt to make it do… something. Despite being a toddler, I remember pulling the lid off and blowing on the various boards, thinking that dust on the inside was causing all those command not found errors. Coincidentally, this solution solved my various Nintendo problems a few years later.

When I was 9 my family shelled out what I could only imagine was a gazillion dollars for a IBM PS/2 . The thing was a cutting edge beast at the time, running an Intel 486sx on Windows 3.1 . On top of the already outrageous horsepower, my parents splurged on a Creative CD-ROM and a SoundBlaster 16 sound card. We were on cloud nine.

This was my true entry point into the world of computers. While my mother became obsessed with Minesweeper, I became obsessed with watching the family-friend-tech-guy install and trouble shoot the multimedia peripherals; peering over his shoulder to watch him modify various autoexec.bat and config.sys files, enter cryptic commands and make the computer bend to his will. He taught me the basics of computer hardware; what the CPU is, the difference between the hard drive and RAM, software vs. hardware, etc. We paid him a plate of brownies, he produced a working computer and a kid interested in technology.

Not only was this my first jaunt into the world of home computing, it also became my first jaunt into the world of the Usenet and the Internet. My mother was a student at the University of Saskatchewan, and as such I could telnet into campus and peruse Usenet, hit up some bulletin boards, develop a crush on some goth chick from the Southern United States and engage in juvenile flame wars with other kids. I was hooked, but for the most part I kept my new found love of computers to myself. I never took any computer courses all through high-school, I never spoke of computers, and I never expressed any outward interest. My passion at this time was geared towards the arts – music and theater (and for the most part, this passion still exists today). It wasn’t until my second year of post-secondary education that I decided to switch from a major in Drama to acquiring a degree in Computer Science.

Thus commenced the long, serious road of Windows and Blue Screens. When I began, the systems at our school were running NT4.0. Then, between my first and second year, the system admins cut to Windows 2000. My classes were, for the most part, all done within a Microsoft environment. Our C programming and Introduction to Internet Programming classes were done on Linux RedHat 5.0 using sweet, sweet KDE 1.1. Our networking classes were all done from a Novell perspective (which was unfortunate for many reasons, as Novell was on its way out with the release of Microsoft’s ActiveDirectory, and much of our classes concentrated on Novell proprietary technology and protocols). So while at school I received a good mix of operating systems, for the most part we lived in Windows and our classes focused on Microsoft based technology. Thus, most of what I used at home was also Microsoft technology.

The home OS roadmap over my lifetime has been as varied as the wind. I started off on the Apple II Plus and whatever OS that thing was running, then switched over to Windows 3.1. Few years later I bought a new machine with Windows95, then upgraded to Win98, Win98SE, WinME, Windows 2000, then to Windows XP. After running XP for a few years I became increasingly frustrated with the amount of security vulnerabilities. I finally said enough was enough and bought an iBook G4 running OS X 10.3. I then upgraded to OS X 10.4. About a year later I acquired employment with a different company and they provided me with a Lenovo Thinkpad T60, so I essentially retired the iBook and was back in Windows XP. I then put together a new home system running XP Professional, and then about 6 months ago upgraded to Vista 64bit. It was at this point that, yet again, I said enough was enough.

I believe that all things should be given equal and ample opportunity prior to making a final decision. This philosophy and approach was applied to Microsoft Vista. While I didn’t experience the software compatibility problems experienced by large portions of the population, I did share in their pain of the incisive “Are You Sure? We need your password” dialogue boxes, the inconsistency of the user experience (was anybody co-ordinating a set of standards?), the lack of responsiveness, the complete mish-mash of the overall user experience, handcuffing DRM, and everything I once knew had been completely re-branded, moved, or removed.

To compliment this festival of confusion, Microsoft started to splinter the .NET Framework (which has been my bread and butter for the past 6 years) into so many fragments that I can no longer keep up. You have the .NET Framework 2.0, .NET Framework 3.0 (which is still a 2.0 runtime), .NET Framework 3.5 (which, also, is still a 2.0 runtime), .NET ASP.NET Extensions, Dynamic Data, etc. etc. What actual features and libraries that reside in which versions of the .NET Framework is becoming more and more convoluted, and it’s impossible to properly plan for a long term project because Microsoft is continuously publishing new technology, changing release dates, etc.

The world of Microsoft, after a 15 year relationship, had become completely fuzzy. I no longer knew who this crazy Operating System was. I was tired of its problems with punctuality, and I never knew what it was going to do next. So I took a deep breath and I figured out what I really used my computer for. I had some personal .NET projects I was working on, but the time I was alotting towards completing those projects was becoming less and less – besides, my job grants me a laptop and any Windows development work could be done on that. So outside of personal Microsoft development projects, my computer usage boiled down to 4 regular things:

  1. Internetting
  2. Emailing
  3. Multimedia
  4. Playing EVE-Online

Figuring that EVE-Online can now be played on all 3 major platforms (Windows, Linux, and Mac OSX), and considering I didn’t want to fork over the money for a new Mac, I decided to try Ubuntu 7.10 for AMD 64, marking the first time I’ve tried Linux since SuSE was purchased by Novell 4.5 years ago. And I have to admit, the experience of transition was almost completely painless. Within 60 minutes I had a full install of Ubuntu up and running, EVE-Online was downloaded and installed, my wifi was up and running, my NVidia graphics card was configured for dual screens, I had Eclipse downloaded and installed with the Aptana and RadRails plugins. I was emailing family, surfing the web, and staring at Ruby code. My machine, despite being over 2 years old, had never performed faster or better, and the user experience, from installation (those Live CD’s should be standard for every OS) to desktop, blew Vista out of the water.

Despite having a bit of a learning curve (re-learning about the Linux file system, where things reside, and all the deep-under-the-covers knowledge of how the OS worked), I’m looking forward to home computing again. Linux has come a long, long way, and literally every day it improves. After having to put up with the Vista debauchle for 6 months, and then switching over to Linux, I’m starting to understand the power of Open Source Software. No more having to wait for some monolithic software company to round up its 3 billion programmers to fix a single security bug that was reported 2 years ago, no longer having to wait years for a specific feature only to be sadly disappointed at its short-sited implementation. No longer having to pay for every single piece of software that makes my computer actually useful. No longer having to wait 30 seconds for my computer and bluetooth mouse reestablish their love affair when the system returns from sleep mode. No longer must I wait for Microsoft to grace me with 400 megs of updates once every 2 years. Ubuntu solved everything in 30 minutes, and it works, reliably, with almost no configuration at all.

While Linux still has a long ways to go before it’s accessible by the “typical” desktop user, most of the issues are “simple” usability problems. Specifically the home-user distros (such as Ubuntu) need to do a better job at abstracting the low-level details of the System from the user – but they’re definitely getting there; enough such that I can safely say there is definitely life after Microsoft.

Harold and Maude

Posted in Music by Ryan Baldwin on February 11, 2008
Tags: , , ,

haroldandmaudesmall.jpgOne of my favourite movies of all time is a little diddy called Harold and Maude. Bud Cort stars in this 1971 cult classic as Harold, the 18 yeard old son of a heartless wealthy woman (where the father is we do not know). Harold is completely obsessed with death and the darker sides of life. He stages his own suicide over a dozen times, drives a hearse, and attends funerals for fun. The dude is, to say the least, troubled, bored, and fairly lonely.

Enter Maude, the 79 year old holocaust survivor turned playful peaceful protestor played by Ruth Gordon. Maude enjoys birds, trees, and posing nude for ice sculptures. Maude is Harold’s girlfriend.

Upon hearing the premise of the movie for the first time most people shudder in disgust. People get caught up in the moot details of age difference and are automatically revolted by the thought of the 2 main characters getting it on. As such, most of the people whom I’ve told should watch the movie, don’t. It’s too bad because the movie has great messages about the difference between life and living, how we can all make changes for the better, and that sometimes it takes a bit of effort in order for us to find ourselves.

Harold & Maude is a great story, with great acting, with great costume design and a great way to re-experience the 70′s (or experience for the first time if you missed that entire decade). But the icing on the cake is the unbelievable soundtrack, written and performed entirely by Cat Stevens…which was finally released just a couple months ago.

That’s right – 36 years after the film was released to mixed reviews the official soundtrack was finally released. And only 2,500 copies. And only on vinyl. It’s an absolutely incredible package; a 12″ multi-colored record that’s the actual soundtrack, a 40 page full colour booklet on the making of the film, a hot pink 7″, 2 rather large posters, and a copy of Cat Stevens’ (aka Yusuf Islam) lyrics for a couple of the tracks. 40$ + 36 years = 1 great package. And it sounds great!

That all being said – why 36 years? Since this movie came out the director Hal Ashby and star Ruth Gordon both passed away; Cat Stevens turned to Islam and retitled himself Yusuf, called for the Death of John Ralston Saul, only to re-emerge 30 years later under the monicer familiar Cat Stevens brand and put out a new album. 7 years passed after the release of the movie before I was even born. I’m now 29.

For whatever the reason it matter not. The package is excellent, the movie still rocks my boat, and Cat Stevens still pens a great tune. 1 out of 1 Baldwins agree – The Harold and Maude Official Soundtrack is fantastic.

Next Page »