Monday, March 21, 2011

Using EC2 as a playground

One of the neatest things about an infrastructure-as-a-service cloud computing model (like Amazon's EC2), is that you can use it as a playground in order to play with services and operating systems before you make a commitment.  This kind of thing used to be really hard to do as little as 10 years ago.  You needed to buy or find old hardware,  then install an OS (plus patches) and then you could play with it, and then repeat for a new OS.

Using EC2 as a playground is particularly helpful for playing with all the Linux variants.  A micro-instace on EC2 only cost pennies an hour (or about $20 a month if you keep in running 24/7), and you can install all sorts of linux OS's on it.  In the last few weeks our team has tried out Ubuntu server, Fedora 14, CentOS, and the new Amazon Linux AMI.  Pretty cool.  Our beta systems are currently running on Fedora,  but at some point we are going to migrate to the Amazon Linux AMI.  We spent lots of time trying them out before deciding,  and we could do it on the cheap without having to worry about installs and such.

Testing out Amazon Web Service's platform products has been very neat also. Again, since you are only paying for what you use, it can be done economically.  We have tested and are currently integrating S3, but are also testing and considering integrating Elastic Load Balancing and RDS.

The interesting trend here is the commoditization of platform and infrastructure, which allows engineering teams to leverage the commodity pricing in order to build better and more flexible applications.  This trend also puts the value of a software product squarely back on the intellectual property, as it should be, and not on the infrastructure, where it does not belong - but that is a subject for another post.

Wednesday, March 16, 2011

On Doing the right thing

There are two truths about being a commercial software developer:

1) You are never really done
2) There is always someone who is not happy with you.

On the first item,  there never is really a time when you can put a bow on a product, frame it and hang it up, step back and admire and claim - "it is done!"  There are always more requirements to fulfill, refactoring to do,  defects to fix,  and crud to finish up.  Really.  You are never done.  You continuously fight architectural decay,  requirements burdens and general entropy.

The second item is what has been on my mind recently.  You really can't and don't make everyone happy in a software product.  There is always an opportunity to fault the defects, the process, the requirements gathering, the product management,  the user interface, the performance, the testing, the software architecture.  The bigger and more complicated the product, the more this is true.  

So what should motivate a commercial software development team?  Some teams or individuals are motivated by the coolness factor,  bragging rights.  Telling your buddies what cool algorithm, hack, stack or complexity you developed.  I know that as I look back on my career, I get a smile on my face when I think about some cool code I have slung in some very short amount of time that did some very neat things.  Bragging rights.  

Bragging rights are cool,  but those opportunities don't come very often as you are taking care of the 100th refactor, bug or UI tweak this month.

So, you know what conclusion I have come to over my career?  My motivation is to do the right thing, not please every person.  This means that when things aren't moving as quickly as you want, or you are faced with a problem, or client services wants something quick, I ask myself and my team "what is the right thing to do?"  Not, "what will make us look best?", or "what is easiest?".  If you focus on doing the right thing and not the political thing, or the thing that will make you look best, you develop pride in your work and this in turn gives you a reason to keep working hard and enjoy what you do.

It's not as easy as it sounds.  Doing the right thing means making a hard choice, or admitting you did wrong. It means courage to speak up and advocate, rather than being a passive participant.  It means being able to make a commitment and stick to it.  It means doing something you feel good about - not something that will make you look good in front of others.  Doing the right thing means being able to admit you may be wrong, and adopting a better practice that may exist in the industry or that someone else may by suggesting.

The great thing about doing the right thing is that you don't have to worry about who is happy with you or not, and you don't have to worry about office politics or petty things that creep into teams.  It means you can sleep good at night knowing you have done what you believe is the right thing.

Thursday, March 10, 2011

Taking the Google Laptop for a Spin

So, for the last couple of months I have been beta-testing the new google laptop (Officially, Google CR-48 Chrome).  Engadget has a pretty good set of pictures and overview here.  

My 17 year old tech-savvy daughter's assessment? - "It's just the internet."  Well, that's kind of the point.

I have been a Macbook Pro user for the last several years,  and on the development side I favor unix-like OSs, so I have a bias.  I love what the google laptop represents and it's potential - an easy to use thin end-user device where everything you do and work on is saved automatically for you in Google's cloud.  This laptop is all-google-all-the-time: Chrome brower,  gmail, google docs, google calendar, etc...  If you are a power google user you will love the model.

The hardware itself leaves some to be desired.  I recognized that this is beta-model and not a final production laptop, but there are some things that make it wonky to use.  The speed and response is good enough for surfing the web and using all the various google products.  Video playback is OK, but at times choppy (underpowered graphics processor).  The keyboard is OK - not great.  The mouse pad is weird - there is some bug where suddenly it will select a bunch of text and delete or be too sensitive and jump the cursor around.  The built in Verizon 3G access is pretty nice.

Chrome OS itself is pretty solid.  It looks like the Chrome browser, with a simple settings tab.  The OS is very thin.  There is not much to mess-up, and given the complexity of modern desktop OSs with gajillion settings and what not, it is pretty cool.

Like I said, the power of this machine is in the potential and what it says about modern computing - simple end user devices,  cloud-based infrastructure storing your pictures, settings, documents and such, and the "post-pc" world.  If Google sets the price point of these right,  say $300-400, they could sell a bunch.

In the meantime, I will keep using it and downloading the patches to the OS.  Let's see how it continues to evolve.