PicLens - News as Pictures

I’ve started using PicLens more and more these days. It’s one of those Marmite love or hate things. Either you love PicLens or you don’t. I like it because it reminds me of the News in Pictures that broadsheets publish at the end of a year. With PicLens you can do this every day.

Nice!

Computer Weekly Blog Awards

I’ll keep this short because I always feel awkward when you have to plug yourself. However, now that I’m in the race, best start running. However, I cannot run with being wound up and votes wind me up :-) So, vote by following these three easy steps:

  1. Go to the Computer Weekly Blog Awards Site
  2. Select ‘The Long Way Round’ from the Programming and Technical Blogs combo box.
  3. Hit Submit.

That’s it. Job done. Now, back to content…

Launching Java Soup

This is just a quickie to say that I’m contributing news to another blog called Java Soup that focuses exclusively on the Java platform. I’ll still be posting here but all Java related stuff will be heading out in the Java Soup direction.

QCon 2009 - Here I Come!

I am officially a lucky son of a gun. After walking away with a Wii at the 2007 No Fluff Just Stuff conference in London, I am now the proud owner of the willie wonker free pass to QCon 2009.

The guys at InfoQ announced that they would round up all the bloggers writing posts about QCon 2008 London and randomly pick a winner. Yours truly won! I’m chuffed.

Big hand to InfoQ. Only 9 months to go…

Infrastructure as a Service : Just Compute and Go!

Context: Some Investment Bank, Some large project, Some time ago…

Me: Wait up Scott (Scott is our SysAdmin. Disclosure: We still are drinking buddies!)
Scott: What now Gibbon! Whatever you’re selling, I ain’t buying…
Me: Stop your whinging you miserable jobsworth. I need 10 Linux servers tomorrow for about 5 hours of performance testing.
Scott: LOL - like that’s really gonna happen chump!
Me: I’ve got budget, approval and all the necessary papers, plus fat cat sponsors. Make it happen.
Scott: Look at me!
Me: <sigh>. Do I have to?
Scott: Do you think our datacentre is a freakin’ tardis?
Me: Noooo….but I do expect it have a few servers out the hundreds you claim to spend you time servicing. Don’t be so greedy. Share a little!
Scott: Seriously. I’ve got 2 hands, 10 mission critical applications I need to provision servers for like yesterday and no more space for new machines.
Me: I don’t want new machines. Just recycle existing ones.
Scott: That’s even worse. First I have to find them (talking days here), then make sure no-ones using them (talking months here), and then and only then install all your crap on them. Next day - Get Real! More like next month…
Me: I could get to the moon and back in that time with decent alien SysAdmin in tow…seriously, this is bad news.

Today

1) I don’t have to ask Scott for servers, I can get them myself. Hmmm, I wonder what Scott is doing these day :)
2) I don’t have to wait weeks for servers, I can get them in minutes.

3) I don’t have to buy nor own servers/licenses, I can pay on demand.

“I don’t need my own datacentre policed by some power crazy SA, with Infrastructure as a Service (IaaS), now I just Compute and Go!

Did you pick up on the Wash and Go tag line! One of my favourites eighties commericials but let’s get back to the script. IaaS is here and is picking up traction to point where I would seriously question any small to medium IT shop not thinking about downsizing their datacentre and/or putting to bed plans to create a new datacentre. Having pretty much instantaneous access to compute resources in the form of servers and storage, delivered as a metered service, means that you are now only limited by your imagination.

IaaS enables your systems to scale out in a cost effective manner. Grab more computing resources when you need them, release them when you don’t. Neverland! For development shops, the ability to periodically fire up a test environment and tear it down in a shot is pure candy. Not just test environments for that matter, but UAT, demos, integration, and so on.

The Players

First off the bat are Amazon Web Services with its S3 and EC2. IMO, Amazon are clearly the leaders in this space, despite the early critics telling Amazon to stick to minding their shop! If you want a server or storage, eight out of ten companies prefer Amazon. I’m not going to say any more here because the best place to talk to about is on the AWS Blog.

Another lesser known player is Flexiscale. Flexiscale is an outgrowth of XCalibre that has been in the hosting business for many years. Cognifide have been using Flexiscale for about 6 months now. The platform is new and continually improving. We are actively pushing them to make the management of their servers better. We work closely with their engineers and have built a console to manage our on-demand flexiscale servers. Cogniscale is freely available for download. It is not a supported product, use at your own risk, but if you any requests or feature improvements, please talk to Adam Najmanowicz who is the lead developer. He wrote a blog post about getting started with Cogniscale that is worth a read.

Then you get hybrids that sit on top of Amazon that provide management services such as RightScale. Also, you can of course roll your own IaaS in three easy steps. (1) Buy a server. (2) Install Xen or VMWare. (3) Pick one from the X new servers. Done!

Next Steps

IaaS is not rocket science. The whole point is to make things simpler. However, with IaaS, your SysAdmin is no longer the cable guy sweating under desk, fighting with wires, or banished to the datacentre/server room. In fact, they can focus on doing the stuff they enjoy. Administering infrastructure. Which leads us onto the topic of “Automated Infrastructure”. When a single physical box spawns say 12 servers, you cannot hope of continue to manage this infrastructure manually. People don’t scale. You need damned good tools to manage and monitor the enterprise.

Earlier, I wondered what Scott, our friendly SysAdmin would be doing these days. If he had any sense, he would be looking into tools such as Puppet, iClassify, Capistrano to name a few to help automate infrastructure. Something that is going to be real important to companies that wish to take full advantage of IaaS.

Ruby is the R in Rails

I would love to have attended RailsConf 2008 but alas you can only do so much in a day. Although this was a Rails conference, it seems that this year there was less talk about Rails and more about Ruby. This is hardly surprising really given that Rails is just a web framework. Yep, Rails is just a web framework. And just like any other web framework, its serves as a gateway from the web and into your enterprise. Now, after a year of doing Rails, you’re basically done. Coasting. Yes, there are tips and tricks you can pick up along the way but for all intense purposes you’ve got the badge. You’re done. You know Rails.

Now the more pressing problems and prickly questions around the enterprise, integration and scalability need to be addressed and this is where Ruby is amore compelling story. In fact, things in the Ruby space are really moving forward at break neck speed. It’s not surprising really, given the relatively few Ruby conferences there are each year, that Ruby gets to play out and steal some of Rail’s thunder at RailConf.

So what is going on in Ruby space that’s so interesting?

Ruby Implementations - Where integration is Key

First up there’s JRuby. This is a 100% pure Java implementation of the Ruby programming language. And right there is JRuby’s sweet spot. The ability to seamlessly integrate with the Java platform through Ruby is a big win for some. So running Rails under JRuby and using it as a web gateway into your Java enterprise, together with the ability to leverage mature/known Java tools and the free performance hikes that accompany it has been a very appealing proposition to some. A prime example being the ThoughtWorks Mingle product. Also, having access to the abstract syntax tree which can be shared between multiple Ruby runtimes hosted within the same JVM process is pretty neat and a highly efficient way of managing memory.

MacRuby! As a Mac User I’m excited by this implementation of Ruby 1.9. With MacRuby you can write Mac OS X applications in Ruby without the performance hit typically attributed to standard Ruby and Ruby Cocoa. MacRuby is native to Mac OS X core technologies. Damned quick with all the elegance of Ruby to boot.

IronRuby, backed my Microsoft and sits on top of its Dynamic Language Runtime (check out John Lam’s talk on the DLR), is a .NET implemention of Ruby. IronRuby enables Ruby programmers seamlessly integrate with the .NET platform, in much the same way that JRuby does on the Java platform. Ruby.NET is open source .NET implementation that does not have the same pull as IronRuby.

In fact, the main draw for Ruby developers that target JRuby, MacRuby, Ruby.NET or IronRuby is integration with the Java, Mac OS X or .NET plaforms respectively.

Ruby implementations - Standards are key

Let’s park integration. Let’s focus upon Ruby developers building Ruby apps with an Ruby-oriented environment. Both Rubinius (a spec led Ruby implementation) and MRI/YARV (currently the official Ruby) are competing VMs for running Ruby applications. Everyone started with Matzs Ruby Interpreter (MRI) but now we have many more alternatives. The Yet Another Ruby VM (YARV) project has officially merged into MRI as of May 2008 to combine the best of both worlds to enhance the official Ruby implementation.

RubySpec

But unlike Smalltalk that was really killed by competing implementations, the Ruby community, through RubySpec are collaborating on standards and competing on implementation. This is good. No, hold up, this is great! This will hopefully provide more choice to the developers to select the appropriate Ruby implementation that best fits their solution requirements. Hopefully, this will hold the community together and keep everyone pulling in the same direction. So far, that appears to be the case…

..but then there was Ruby for Scale - Maglev

Maglev is a Ruby implementation built on top of Gemstone’s VM that is written in Smalltalk. Chad Fowler goes into the why and when you would choose to use this Ruby implementation other the others. But the problem is very few people have access to Maglev. It promises the world and come on guys its time to show me the money! The community has seen is a presentation. A damned fine presentation I’m told but Charles Nutter of JRuby is not convinced and other people are already dismissing outright Maglev’s claim to scale. 100 times performance improvement is a big claim. One to watch I guess.

And Finally!

Take a look at the following code snippet:

#!/usr/local/bin/ruby

require 'scalability'

# your code

Now the Twitter guys must be get this all the time. Twitter is growing in size and its architecture will mature and incorporate different technologies I’m sure that best fits their current problems. Time will time. But to say its Ruby’s fault is a little naive at best. That said, wouldn’t it be just great if only you could include scalability in Ruby applications, Java apps, .NET apps, or whatever the platform.

Now, that would be awesome. But the simple fact is you can’t include it, you have design it in. Boooooo say the crowd. Kill joy chant the business. But unfortunately, like so many things in the software industry, you have to go the long way round (read as experience) to get desired results. Because there are no short cuts (read as foolish hacks, or inexperience) on the road to scalability…only blood, sweat and tears! But there are leg ups, tools and techniques and people to assist, but that’s any story for another day…

Forget Cloud Computing. Think As-A-Service!

S3, EC2, Google App Engine, Gmail, Salesforce.Com are all in the cloud. But what does in the cloud mean? Typically, when you ask people what is cloud computing, that is where the confusion begins. As an industry we always allow the key market makers to spin the bullshit that invariably plunges us into a year long struggle to get a grip of what really is important and what’s not. After a couple of weeks of reading, I can hand-on-heart say that we are now smack bam in the middle of trying to untangle this term we glibly refer to as cloud computing.

Let’s go back a 100 or so years when electricity was not a utility. During this period, different electrical companies offered different electrical services. There were services for street lights, residential lighting, industrial power, street car lights and so on. Also, these companies had different equipment, voltages and frequencies. This accidental complexity required businesses to employ full-time electrical experts that were responsible for liaising with various electrical companies and their services/equipment to quite literally keep the lights on in the building.

Of course, over time, services, equipment, voltages and frequencies were standardised. Knowledge was shared. Electrical companies offered electricity as a utility and a metered service. Companies no longer needed to employ full-time electrical experts nor have on-site, specialised electrical equipment. Now businesses and residential users, like you and me, continue to rely on electricity as a reliable, scalable, dependable and metered service. In fact, we can even piggy back our computer networks over our electricity supply.

No questions asked. Electricity as a service is a given.

Utility computing is offering the same kind of deal for computing resources. Cloud computing is just a commercial extension of utility computing that offers storage and computation cycles as a metered service. Today, you can create an Amazon account and pay for storage and computation cycles using its S3 and EC2 services respectively. Cloud computing goes even further and enables software to be deployed into the cloud thereby providing a platform for distributed computing for the masses.

But here’s the important part. Cloud computing is NOT important, in much the same way that power generators and the national grid don’t interest the everyday electrical consumer. What does interest us are the services, price and relationships with have with the companies that supply electricity. At the moment there are three types of cloud computing services that are currently getting their fair share of air time:

  • Infrastructure As A Service (IaaS)
  • Software As A Service (SaaS)
  • Platform As A Service (PasS)

Over the next year or so, we are going to hear more and more about these services as they enter the mainstream. Yes, the term cloud computing will be used, but those people in the know, they will be looking for the specific services that they wish to make the best use of. Those guys will be the frontrunners.

Phew, I’m getting tired and the sun is shining outside. I think the best thing to do is to drill down into each of the above cloud services in a separate post to keep things small and simple. Until then…see ya!