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.  

Friday, February 18, 2011

To Infinity and Beyond!

Man, I really dig cloud-based computing infrastructure.  It was made my life as CTO of a SaaS lots easier.  The ability to grow new infrastructure with out having to order equipment, service and wait for install has made us more agile.

We are currently using Amazon's EC2.  One of the neatest things for me is how this really enables smooth upgrades of our production software.  When we are ready to do a release, we grow new "candidate" systems - front end serves and databases.  The candidate systems are populated with the new code and "smoke" tested by QA and development.  When cut over time comes around,  we simply shutdown previous version front end servers, move data over, move the dynamic IP addresses to point to the new systems and we are off and running.   We keep around the old systems just in case,  and decommission them about a week later.

Very cool.

Wednesday, February 6, 2008

twittervision

There is something very cool about twittervision.   It is an intersection of social network and web 2.0 technologies.  It isn't very useful, but it is fascinating to look at.  I wonder why?

Saturday, January 12, 2008

Integrated hand held devices

This week I have been taking my annual trip to CES and then IEEE CCNC.  I only spend one day at CES and I can see everything I want.  CCNC is the real reason I come.  It is a great conference, balancing academic and industry research.  A good friend of mine, Alex Gelman, is on the steering committee and I come also to see him.  

When I spend so much time away from home,  I really learn to appreciate my iPhone.  I imagine the same is true of other integrated mobile devices,  but the iPhone really rocks.   The ability to have a cell phone, email, web, music, SMS text messaging, calender, google maps, photos on that one device makes it so convenient for travel.  Last night I sat in the hotel lobby reading, while plugged into the iPhone listening to music, while text messaging with my wife (also on the iPhone), while pulling down email in the background (on the iPhone).  Very cool.


Thursday, January 10, 2008

Is anyone passionate about technology any more?

I've been think a lot about Bill Evans lately.  I own almost all of his early music and have built a rather large collection on my iPod.

Bill Evans did one thing well - he was a jazz pianist. One of the earliest and one of the best. That's all he did in his career.  He never produced music,  never sang, never acted.  Only jazz piano.  

When I first got started in this business, as a software developer,  I was passionate about what I did.  I loved algorithms in graduate school and ate up operating systems.  I still feel passionate and love what I do.  I never want to do anything else - marketing, sales, etc... I am a technologist.  That's all.  

At some point in this business, perhaps around the time of the bubble,  people came into this industry to make it rich and strike it big.  Several left after the bubble.  I know a couple of guys who left and went into real estate.  

I wonder if this has changed our business permanently.  Is anyone in technology because of passion anymore?  Are there any other Bill Evans in this industry?