Java in the Clouds part I: Overview

Background:

It seems that the IT buzzword hobbiests have left the certain crazes of yesteryear, and moved on with Platform as a Service (PaaS).  One aspect of cloud computer that has taken off is Software as a Service (SaaS).  It’s allowing organizations to deploy their software services to a third party host or provider, responsible for traditional maintenance.

I just read this O’Reilly article.  It describes some cloud applications and immediately goes into Stax.  Essentially, Stax is a Platform as a Service.  Much like Force.com, you can write applications locally (I used the force.com plugin for Eclipse) and deploy/synchronize it in the clouds.  Pretty convenient.  Stax is cool because it combines two technologies: Java and Amazon’s EC2 technologies.  As of the time of this writing, MySQL is the backend of choice and Apache Tomcat is the J2EE container.

Business Value:

Traditional means of development usually requires a developer to be the organization’s site, using a standard issued computer, developing locally, testing and deploying to an unstable or a QA server in the same network.  Modern acceptance of technologies, such as VPN, allowed developers to do their development outside of their cubicles, but one problem still arise.  That problem is that if an organization wants to add another developer to their development team, that organization cannot easily and elastically set up a platform for that new resource.  The corallary is true as well when it comes to reducing or transfering a developer to another team.  This is even more problematic when teams and developers are dispersed across different locale.

Elastic conventions should be preferred over configuration (much like the design pattern) when it comes to the developer’s entire environment.  Test driven development and code coverage (much like force.com), should be integrated with every platform’s API.  The elastic model for development should simplify code synchronization issues and merges.  I think cloud based frameworks and platforms will mature such that requirements to testing, to implementation, to integration testing, to deployment, to user acceptance testing, release management can become not only simplified and better streamlined, but can become almost autonomous and asynchronous for large complex projects spanning across locale’s.

Up Next:

The next part of this series will cover the implementation details of Platform as a Service, starting with force.com’s implementation.  I know force.com is not java based (although Apex is a cool derivative).  But the documentation is pretty outstanding and the tutorials are easy to follow.

References:

Windows 7: Will It Be Worth It?

At the time of writing, the scheduled release date for Microsoft’s Window’s 7 is October 22, 2009.  Are you excited?  Probably not.  Why?  Is it because of the YEARS of sloppy user interface and unreliable/prolonged release cycles?  Is it because of banal and antiquated features that other OS’s have implemented years ago?  Is it because of the extremely high hardware requirements of the OS itself?  Or is it Microsoft’s silly pricing model for various “versions” of the OS?  If this is an SAT question, the correct answer is: ALL OF THE ABOVE.

Windows Core:

This version of Windows will be fundamentally better than the previous versions.  How?  Because both Vista and XP are just so awful that almost any change to the kernel will be better than what we currently have today.  That being said, I am excited to see how Windows 7 will implement programming for multi-core processors.  For modern hardware architectures, this should be a “Win” for Windows.  I can’t tell you how frustrating it is to see cpu cycles being wasted when running the simplest of applications.

Security:

The good news is that Windows security policies can be better set.  Currently, under the Vista regime, it’s an all or nothing approach.  Instead, the new User Account Control (UAC) will be driven by a slide bar.  The parent of this new UAC will be the Action Center, replacing the Security Center, so the user will have better control of what should be reported to the user.

The bad news is that Windows is still behind the *nix security policies.  Unix is designed on security foremost and will always consider it top priority, Linux follows suit.  For example, I am an Ubuntu user (bandwagon, I admit, but I’ve been using Suse prior to Ubuntu).  Ubuntu does server security things right.  For instance, the root user is disabled by default.  Some find this annoying, I think it’s great.  For actions which require admin level authentication at both the GUI and shell level, it prompts the user for credentials.  At the command line level, the user has to type ‘sudo’ for every admin level action, even to be considered to be authenticated.  When I’m performing heavy admin tasks, I simply su into root.  I usually close the shell and it’s back to my protected user again.

To protect against the six (yes, six) known viruses for linux, I install ClamAV for good measure.  It’s free, it’s unobstrusive and it works great.  Most virus (if not all) in the Linux world is actually a Windows virus embedded in a Linux email.  Couple this with Firefox extensions and security best practices, my Ubuntu box isn’t worth being hacked into.  Some of these best practices include using strong passwords, only using ssh (w. root login disabled), increasing the delay time for bad logins, keeping ports locked unless you absolutely need them open, implementing rootkit protection practices, etc.

The Desktop:

The new Windows Desktop looks pretty good.  It has a modern look about it while still retaining that lovable “square” like feel.  Windows 7 will have a better task bar.  It has a auto snap feature for comparing documents.  It will also implement touch and hand writing recognition.  Sounds cool but at the same time, kind of useless.

For my Ubuntu desktop, I installed Compiz.  This allows a sweet, rich desktop experience.  The coolest, by far is desktop cube.  You can have multiple desktops represented by a cube.  This cube rotates to a different desktop via a mouse (scroll up/down on desktop), keyboard mouse gesture combo (alt-ctrl-left mouse button) or just the keyboard (alt-ctrl-left or right).  If you want to switch it up, you can traverse desktops via the flat desktop features, where keyboard strokes (alt-ctrl-down, then left or right) give it a “film” like effect.  These features are just the tip of the ice berg.

Hardware Requirements:

The minimum hardware requirements for Windows 7 is 2 Gig for the 64 bit version.  This is where Windows 7 truly loses.  My quad core, 8 Gig Vista desktop sits idle at 3+ Gigs, granted I do have apps running in my task bar.  This is silly.  What’s more silly is that the OS installation requires 20 Gigs.  Compare these hardware requirements with that of Ubuntu, or even XUbuntu at the 64 bit level.  XUbuntu requires 256 MB or RAM and 1.5 Gigs of HD space. Ridiculous.

Price Point:

I’m not going to lecture you, the reader, of Linux’s perfect price point (it’s free).  I will purchase a copy of Windows 7, but I have to agree that the migration path matrix is confusing (six editions, 2 architectures).  Some editions do not have a migration path.  A fresh install is the only way to upgrade.  Still, is the new operating system worth it?  For Home Premium Edition, yes (about $119 upgrade).  I tend to suppliment software with free open source applications like VLC and Firefox.  I love Open Office (OOo), FileZilla, 7zip, among others.

Conclusion:

The Windows 7 OS gets my recommendation but only one edition, which is the Home Premium Edition of Windows 7.  In my household, Microsoft has lost the battle.  I keep one desktop around for games and software not available for Linux (like printer drivers).  For those who do not play games or need the latest wi-fi adapters (or can find wi-fi alternatives like access point / router combo), I recommend either Ubuntu or openSuse at the desktop level, Ubuntu Server or CentOS for light web servers, or CentOS or RHEL for heavy load production servers which may require support.

References:

  • http://en.wikipedia.org/wiki/Windows_7
  • http://www.microsoft.com/windows/windows-7/
  • http://news.cnet.com/8301-10789_3-10078931-57.html
  • http://www.compiz-fusion.org/
  • http://blogs.zdnet.com/Bott/?p=1246

Follow

Get every new post delivered to your Inbox.