Back in my Simi Valley office, and once again knee deep in my day job. But there have been a number of exchanges and conference calls today where a common thread has emerged. While in Sydney I had the opportunity to catch up with old friends, some of them mentioned in previous blog postings, and the conversations turned to how cool development has become.
No matter the age – and yes, I talked with folks my own age as well as with those the age of my children – cutting code was what they really liked to do. Whether deep inside software development shops, or simply providing applications to their own organizations, the types of environments they worked with and the tools they used, began to look alike. I really saw for the first time the full impact of standards and an open development environment – and the flexibility and power that has come as a result.
As most of you know, I have a passion for user groups and for those folks who support user groups. It should come as no surprise to anyone that I actively participate in a number of them and am a board member of a group that is not ITUG. I think we all recognize that today, it’s a heterogeneous world and I like to stay engaged with the users of a number of different technologies. No real surprise here, I suspect.
It was while in a phone conference with another group, we began to look at who we should be targeting as a potential member of the community and from somewhere, the term “Java Dude” came up. Immediately, all of us could visualize exactly who that individual was – we could all relate to someone we knew as that Java Dude! First playing with Java in their home computing environment, in many instances, and developing a taste for the ease of development they experienced, they became champions of the environment and over time, saw acceptance of this development environment within their workplace. Taking on the role of evangelists, they become increasingly proud of the inroads this modern technology was making within their organization.
But at the core of all of this was the increasing use of industry standards and open systems. This certainly does change a lot of things and when used in the development environment, pretty much shields today’s developer from any uniqueness that may be associated with the target server platform.
The move to Intel’s Itanium chip at the core of today’s NonStop servers, really was a significant step in the right direction as far as I am concerned – and riding the Intel Itanium roadmaps should see significant price-performance improvements going forward. Suddenly, developers are running virtual machine environments on their desktops that support multiple OS images with any number of data bases management systems deployed. And Linux is becoming widely used in these powerful development clients.
The Itanium play is only part of the story. The Java Dude, and his peers, using any mixture of C/C++ and even C#, have all gravitated to some pretty powerful client desktops. Industry standards and open systems were really opening up the productivity floodgates!
And it was against this backdrop that I had a very lively conversation with Marty Turner, now at Integrated Research and a former Tandem Cupertino developer (remember SNAX/ CDF?). I caught up with Marty in Sydney last week, and what follows here is basically how the dialogue developed, and I am including it as it happened, to make sure I don’t miss anything or edit errors into the dialogue:
RT Writer(RTW): Now, about all this Linux stuff - are you happy with it on clients? Or just on servers? Does it help you as a developer?
Marty: I use it mostly as a client, building software I download using VI (I also have Slickedit and use the KDE workbench, but good old VI (actually VIM) is still my favorite for a "quick" edit. VI is the old ubiquitous text editor written by Bill Joy in the 70s; easy to use - once one gets a subset of the (myriad of) available commands in one's repertoire. VIM is a much improved (hence, VI iMproved) version that is on most all Linux distributions (and available on many/most Unix’s). KDE is the Open Source version of the CDE (Common Desktop Environment): CDE was an industry-attempt (by Sun, IBM, etc.) to build a common Unix GUI desktop manager. KDE is very powerful and has many configurable options whereas Gnome (being somewhat less easily configurable) is pretty and easier to use (industry perception) than KDE.
I run a MySQL server for playing with some Internet stuff and run a CVS and Subversion server just to keep my skills up with those two. Oh, and since I have a 250GB Raid1 setup on it (it being my PogoLinux box (see http://www.pogolinux.com/)), I use it as our master backup server for the likes of our personal data and my 48GB of iTunes!
RTW: Could real dummies like me easily install on my home PC? Or, is it still for power users / developers and for servers?
Marty: Absolutely you could get into it; the state-of-the art of some of the distributions (or, “distros”) has become quite easy to use; there are of course the distros for the "power" users (like Debian), but the Linux community have worked really hard in the last 3-5 years to make installing it less painful (so more folks use it). A good website just to see what folks are using is distrowatch. I have about 9 or so distros under VMWare on my Windows box and use Mandriva 2007 (Mandriva used to be Mandrake until they merged with Connectiva) on my PogoLinux box. For a Linux tyro I'd suggest Ubuntu or Kubuntu as they are for the most part currently the easiest to install, configure, maintain, and use; either directly on a PC or under VMWare (I've only installed on desktops, but have hard that it's easy on laptops as well). Both Ubuntu and Kubuntu are based on Debian and as such are quite stable and have a good selection of software (applications, tools and games) and are very easy to use Linux-distro-wise: the main difference between the two being - Ubuntu uses Gnome as its window manager and desktop, and Kubuntu uses KDE as its window manager/desktop. Ubuntu is kept up to date (stable Linux kernel and tools) the most as it's the most popular and it'd be the one I suggest for a Linux installation/user novice as it's easy to install, use, and keep up-to-date. Too bad I didn't know you were interested in it, or I could have given you a DVD copy of 7.10 the other night (the current version). See http://www.ubuntu.com/getubuntu/download for Ubuntu and http://www.kubuntu.org/download.php for Kubuntu (again, I'd still suggest Ubuntu first). The easiest way to learn how to use all this is install it under VMWare (I use workstation 6); else, just use/buy an el cheapo desktop and blow away Windows with an Ubuntu install (you can dual boot, but that sort of setup is not easy for a novice).
RTW: What do you think of VMWare? And, based on your previous IBM experience, is it a kind of IBM VM, but for Intel? And for AMD to?
Marty: Functionally, it allows me to do just what I used to do with VM/370: run a different OS than the native one in control of my hardware; the main difference being that VMWare integrates its functionality with a host OS (in my case WinXP, but can do Linux etc. as a host) rather than being a top-level hardware controlling OS.
It runs on Intel and AMD hardware (my box is a HT technology Pentium 4) with supposedly no major differences; the key here is that Intel has new chips (coming out already or soon) that provide instructions that help mitigate context switching etc. on both X86 and Itanium. AMD has their own acceleration coming (or maybe here already) to do the same thing (think VM 370 hypervsor microcode if you will).
I just run Linux distros under WinXP hosted VMWare, but I could also host other WinTel OS’s (eg Win2k) or have a Linux hosted VMWare running Wintel stuff with other Linux’s etc. very powerful. Now note that we've not even addressed other VMs like Open Source XEN, but my choice is VMWare for now as it's a real commercial product that will (hopefully) be evolve in a useful fashion over time.
RTW: For what we are talking about here, are there minimum memory / CPU requirements as I have heard others struggle with them on older PC platforms?
Marty: You need a fair amount of grunt (cpu), disk space (for swap etc.) and real memory. My 3.2GH Dell Pentium 4 has two 160GB hard drives and 1 GB of memory and I can only run two active VMs at a time; I'm told another GB of real memory will help that but I haven't purchased the memory yet.
RTW: And just one point, are you involved in any way in the development of code for Tandem / NonStop these days?
Marty: That's all I work on at IR. IR has PROGNOSIS which not only works on NonStop, but a bunch of other stuff these days; however, my job since 9/2006 has been all on NonStop (pTAL, C, C++).
RTW: Many thanks …
On my return to the US, I asked my own development VP here at GoldenGate, Sachin, and was surprised to see we were heading down the same path. According to Sachin “in general, we are starting to give powerful desktops to our developers and they are running VMWare so they can have private environments of different OS's and databases.”
As this was the second reference to VMWare, I decided to give my good friend Al Williams over at Penn State University a quick email query as in previous meetings, at the other user group I am involved in, he often talked about it. Now, mind you, he also brought a Mac to the board meetings, so I was a bit cautious. But Al provided the following response.
Al: VMWare is a pretty big topic. We use the server products for server consolidation - pretty common for lots of places. The other interesting part is the VMWare desktop products (Workstation, Player, Fusion and ACE). I don't know much about ACE - it is for deploying secure images in a managed environment. Player is a free download and will allow you to run VMWare virtual machines created by the server products or Workstation on a Windows or Linux environment - kind of like Adobe Acrobat reader lets you view PDFs, but not create them. Workstation is the product that runs on Linux or Windows that allows you to create and run Linux, Windows, Solaris and several other OS's (not Mac OS). Fusion is the version that runs on Mac OS X and lets you run all the other OS's except Mac OS.
So who would want this desktop stuff? Developers can run different OS's on their single development machine to test out a product they are working on to make sure it works across various releases and types of OS's. The Player allows you to run any of those environments.
RTW: Again thanks …
But now, I began to want to dig deeper. Was Marty’s set up unique, or could we expect to see more deployments along similar lines to his. I decided to check in with Brad Poole of ACI, another former Tandem Cupertino guy (this time, remember DSM and the EMS component?) and now heavily engaged in field Proof of Concepts (PoC’s) – did he have a similar set up?
Brad: It looks like Marty's development environment is focused on Unix (VI and VIM are text editors for Unix.... I think the macro capability of this is considered quite good though I've never used it). My world is primarily PC Windows based and I mostly use Eclipse for Java development and, of course, Visual Studio for C# development.
RTW: OK! thanks ...
From this, it appears we have seen the playing field move to Microsoft and I wondered if this was by choice, or whether a company like ACI was setting basic standards. So this time, I fired off a quick email to Dave Finnie, a key architect and developer I had talked to a few days earlier in Sydney.
Dave: It is a bit of an individual thing. Most people still use VC++/Visual Studio. No-one uses Linux to develop on as far as I know. Although, I've got to say, I used to develop on Linux and I much preferred it. The whole Windows reliance is pretty much mandated by the gear that ACI has set up out of Omaha. About half of us use Eclipse to some degree. Several people use Eclipse for building but Visual Studio for editing. I use emacs for editing (and probably will until I hang up my programming gloves :-)). A number of us make use of a lot of the cygwin utilities to mimic the facilities that you would normally get on a Linux system. We do use the NSK cross-compilers a lot - in fact they are part of our build process for the real products that we ship. Do I see this changing - probably not, under ACI.
RTW: Fair enough …
But is this a unique ACI variation? When it comes to being a power developer working on NonStop, then the best source I knew of had to be Sam Ayres. Sam is well known to many of us with his Advocacy and SIG support and Sam is currently an ITUG Board member. So, again, another quick email exchange led to this.
RTW: Do you develop under Linux? Or something else – any VMWare, for instance?
Sam: While I’ve done development under Linux (Red Hat) and also under VMWare, these days I work primarily under Eclipse running under Windows XP on a Lenovo laptop (thinkpad). I’ve written Java client code (Java payment SDK) that runs on all platforms. I tested that on Linux, HP-UX, Windows, Solaris. While we do run Linux servers in the middle tier various parts of our system, we use HP-UX for our Oracle databases.
Here is a big consideration for a developer: note the Eclipse plugins for C++, Cobol and PTAL cross-compilation for NonStop are only supported under Windows, so I don’t think I’ll be leaving my windows workstation soon. That being said, personally speaking, I seldom do anything other than Java these days, so I could work under Linux as easily as Windows. But then there is that issue of connection to the company’s e-mail systems, shared filesystems, remote access, etc etc etc.
Answer in a nutshell: due to company infrastructure I develop primarily on a Windows PC, developing under Eclipse, targeting NonStop. I don’t think that will change here; there is too much dependence on Windows infrastructure.
I would suggest for you, rather than running multiple boot environments, just buy a laptop/workstation with Linux pre-installed, I don’t believe you want to be experimenting with dual boots on the machine that you use for your day to day business…
RTW: Aha … I am getting the picture! Thanks …
I have covered a lot of ground here and this blog entry is longer than I normally provide. But I really wanted to make sure I lost none of the content in the exchanges that occurred. Do we all need to upgrade out PCs and workstations and install software like VMWare so we can kick off multiple OS’s and databases? For many partner ISVs then yes, I can see that happening and there’s many benefits associated with doing that. For other users, I suspect a Windows environment running Eclipse with the plug-ins for NonStop is the way to go.
But throughout all of these exchanges, what really hit me today was how easily a broad cross-section of the NonStop community is now developing using exactly the same tools, utilities, and services that were used to support the development of applications for any other platform. Now, the same can be said for all the other platforms as well – today, industry standards and open systems have just leveled the playing field. There is no requirement for today’s developer to step outside his or her comfort zones as they switch between all the platforms that exist today in our heterogeneous world. NonStop is as standard and as open as any other platform.
Just engage in a conversation with any of these Java, or C/C++/C# Dudes – and you will come away with a whole new perspective on how well integrated the NonStop platform has become. Choice abounds and options are a plenty – and we really do have to ask, “why do any of us have issues today with recommending NonStop”? As delivering services in a real time world becomes more imperative, surely the availability and scalability characteristics of NonStop servers remains the differentiating component but why do we often penalize the selection of NonStop when it is as standard and open as any other platform across the world of developers we rely on so strongly?
Thoughts? And I look forward to you comment postings.