Friday, August 21, 2009

Here Cometh the Cloud.

I am a big fan of cloud computing. It is a giant trend that was very easy to spot from a long time ago, but I was never quite sure exactly "when it's here".


For me, I think that day is today.


I just got done trying out SpringSource's Cloud Foundry. It's basically a way to easily deploy web applications on a Spring/Java/Tomcat/Apache/MySQL platform on Amazon EC2. And you know what? It freaking works!


As a Java developer, this is what I wanted -- a really easy point-and-click web interface to deploy a distributed Java application on the cloud. I don't have to worry about all of the boring systems plumbing. (and this comes from a guy who kinda likes the boring systems plumbing!). As a developer, I just want a platform that can scale effortlessly and cheaply.


Sure... Cloud Foundry has all sorts of issues: limited DB support, limited configuration, no elastic block storage, etc. But for a first release, I think the Spring Source folks shows what the future could be like for developers.


Cloud Foundry isn't the only cloud solution out there, but it's the one I care about as a Java developer, since java/tomcat/spring apps are what I write. And let's face it: Google's App Engine for Java just sucked.


I really do see computing as a utility. And I really hope to see scalable computing systems with full software stacks to become a utility as well. I think it could usher in a whole new wave of developer innovation. When you lower the bar for the deployment of scalable applications (and you make it really cheap), you start to invite a whole new segment of developers with interesting ideas and interesting solutions.


The next 10 years are going to be cool.

Thursday, August 20, 2009

Bucket List 3: Work with Someone Great (and then impress them!)

I am a big believer that only true way to get better is to surround yourself by great people. I believe this works in sports, business, the economy, and just about everything.


I think it's really true for a developer. Want to write better code? Work with someone that really really really knows their craft. You'll learn a thing (or 10). Try to keep up with them -- try taking your craft to the next level!


You'll know you've succeeded when you come up with an idea that will impress the heck out of them.


Don't work with smart people? Get on a new team or a new project!


You're the smartest guy in the company? Find a new job!


Can't find a new job with smart people? Find an open source project with smart people. There are tons of them out there! Get on the forums for a software project and contribute! Impress the experts!


You'll never get any better if your the sharpest programmer in the shed!

Saturday, August 1, 2009

I Heart RAID

On Thursday afternoon, we had a critical situation in the Kratzer Household.


The computer was having problems and wouldn't start up. Jenn called me while I was out at lunch. I decided to leave work early because what she was describing didn't sound good.


I came home to find out that one of my disk drives was complete toast. Luckily, I made the decision to purchase a computer with a RAID controller on the motherboard. For those non-techies out there, a RAID controller allows me to make two disks look like one disk (among other configurations). This is called RAID 1 - or mirroring. Every time a piece of data is written to the disk drive, it is actually written to two disk drives. The beauty of this is that I always have a working image of my computer system (even if a drive dies).


This problem was easily fixed. I went to Best Buy (10 minute drive down the road), and found a similar disk drive (same size, same speed, same vendor even!). I installed the mounting kit and slid the new drive into the computer, removing the old drive.


When I booted the computer, the system told me that the RAID array was rebuilding itself and that it would start booting a while. After a slower boot into Windows, I was able to watch the drives "rebuild". Basically, the one good drive needed to copy all of its data to my new drive (to keep the system back in sync). This took about an hour and a half. After that, I was in tip-top shape.


When I purchased my computer three years ago, I made three conscious decisions:

+ I got the maximum amount of memory I could put in the computer at the time (4 GB). This has had a very good pay off for me in terms of performance.

+ I got a premium XPS system from Dell. Wow. I actually never opened up my computer until Thursday (I'm a software guy.. not a hardware guy). The case system was designed to open very easily (no screw drivers needed) and every component was easy to access. Thank you, Dell.

+ I invested some extra money for a RAID controller. I always knew this was a good decision. The events on Thursday proved it.


Someone once said "There are two types of disk drives. Those that have failed and those that are going to fail.". I can testify to this. I've had many computers over my time and I have had many disk failures. I knew that having RAID would "save my bacon".


And while I certainly have back-ups of everything, I am glad that this problem was fixed (with zero data loss) in a couple of hours. A re-installation and a copy of my data down from Amazon S3 would likely have taken days. And I'm sure that I would have forgotten to back up something.


Thank you, RAID.