Brandon Werner

Archive for the ‘Operating Systems’ Category

iPhone Bug: Websites that serve xhtml breaks Safari

Friday, July 20th, 2007

I am a stickler for web standards, and make a lot of effort to ensure this website stays XHTML 1.1 compliant, along with the JavaScript and other code that runs in it (often having to modify plug-in’s code out of recognition). However, until recently I conceded that because Microsoft decided in Internet Explorer 7 not to include an XML parser like every other modern web browser manages to do, I could not serve content as application/xhtml+xml as you should, but instead as text/html.

Being a mentally ill obsessive compulsive designer, it bothered me. Then I stumbled upon this plug-in for Wordpress from Joost de Valk that does the simple PHP code to see if the HTTP_ACCEPT of the browser can take application/xhtml+xml and serves it as such if it can. Otherwise, those with less-than-great browsers get text/html.

Imagine my surprise when, after having made this change and verified that it works on IE7 / Firefox / Safari that when I tried to load my website on Safari Mobile it would load the page but before showing any content promptly crash.

Keep in mind that Apple implies that if your site works on Safari 3.x Beta on either Mac or PC, it will work on SafariMobile as it shares much of the same code base before it forked in October. I am not sure if it’s something about the XHTML 1.1 that I’m using, or any modified Prototype.js or other JavaScript that I’m running while using XHTML 1.1 (using application/xhtml+xml changes how JavaScript code works when interacting with a DOM). However, I’ll repeat that it all parses and renders correctly in xhtml+xml on Safari 3.x and even Safari 2.x.

The bigger problem is that the browser in the iPhone obviously states that it can, in fact, take application/xhtml+xml as a content_type or else the code in the plug-in above would default to text/html. So, if you want your web application to work on the iPhone, best to keep it text/html for now.

Apple Safari 3 Tries To Convince People Not To Use Google as Homepage

Wednesday, June 13th, 2007

Safari Prompting When Setting Google as Homepage

Google has been pretty sensitive to Microsoft integrating things in to their operating system that might, even in the slightest bit, cause people to feel some barrier to using Google technology in their browsers. In that light, I can’t imagine what Apple was thinking when they decided to include this helpful prompt asking if you are really really sure you want to make Google your homepage if your homepage happens to be something else. This isn’t even a generic warning about moving a homepage either, it mentions Google specifically.

To reproduce this at home follow these steps:

  • Set your homepage in Safari 3 Beta to www.nytimes.com or any other site
  • Close your preferences
  • Go back in and try to set it to Google.com
  • See this message: “Are you sure you want to switch your home page to Google search? You can do a Google search directly from Safari’s search field without going to Google’s webpage”

For Google, who try to make themselves the homepage of choice through their iGoogle initiative, competing directly with other portal providers, this must be a nightmare prompt from their friends at Apple.

I’m certain Apple meant no harm in adding this prompt, but how much do you want to bet this doesn’t make it in to the final release?

Microsoft Keynote: How To Design Frustrating Products

Tuesday, June 12th, 2007

Better Software Conference in ACM Magazine AdvertisementI really want to put the Science back in to Computer Science, and am an avid member of the ACM and IEEE, although the lines between those are starting to blur. I’ve found that their magazine and website, ACMQueue, is an amazing attempt at putting academics back in to the marketing and Forrester “research” laden stuff that we are forced to contend with in this industry (their latest cover article, API Design Matters, is a good read but not yet up on the site).

A fresh new issue I got to read today, however, made me do a spit-take:

There is a “Better Software Conference and Expo” that is going to be occurring between June 18 - 21st 2007 at Las Vegas. Microsoft, a keynote speaker at the event, apparently hoping that what happens in Vegas stays in Vegas, will be presenting this topic to attendees and wondering why they can’t stop giggling in the audience (click on image to the left and look to the bottom keynotes)

How To Install Haskell Haddock on Mac OS X

Sunday, June 10th, 2007

If you’re scratching around trying to find out how to compile Haddock after getting the source, especially if you are using the awesome EclipseFP plug-in for Eclipse which has it’s use integrated inside the IDE, here are the steps:

First, ensure you have Glasgow Haskell Compiler installed, obviously. It has a OS X binary port and I like it over HUGS.

Second, you should really have Happy and Alex installed as well, as the build will look for it, and they are good to have, but will work fine without it.

from your unzipped directory:

$ ghc -o Setup Setup.lhs -package Cabal
$ ./Setup configure --ghc --prefix=${prefix} --enable-library-profiling
$ ./Setup build -v
$ ./Setup copy --copy-prefix=/usr/local/

Of course, /usr/local could be wherever you want the executable and libs to be installed. It has a /bin and /share.

After this step, you should be able to run Haddock documentation extraction from the Eclipse IDE. If you’re curious how Haskell looks in Eclipse with the EclipseFP plug-in, here it is:

Haskell Eclipse Thumbnail

With module support and outline expansion, it still takes heavily from the OO world (it doesn’t keep this updated if playing with the shell, for instance) it’s still somewhat nice to keep things organized. Of course, the IDE paradigm changes substantially when you are talking about lazy dynamically typed call-by-value languages. Still, for a round peg trying to fit in a square hole, it’s ok.

I still perfer the Haskell editor in the incredible TextMate, however.

Why I Don’t Hate Mark Spencer, Open Source CEO

Friday, June 23rd, 2006

There are few people in our lives that we can be happy for without some jealousy. Sure whenever we shake the hand of the guy on our team promoted, slap hands with a player who bested us or applauded the top grade getter in our class back in school we always smile thinly, but deep down inside is that human tendency to speckle it with regret we are not in their place. I have to admit often times, being very competitive, I’ve felt that emotion. Only in places where we are not in direct competition or could care less about the outcome can we at once be both happy and congratulatory with honesty. I imagine someone winning a pie eating contest would qualify.

However there is a third scenario, one in which you see someone succeed where you have not and genuinely enjoy their success and can only hope for more, not only because they deserve it but because you care for them. This is called admiration, and I have it for my friend Mark Spencer, who was just picked as one of Inc’s Top 30 Entreprenuers under 30.

Sure, we were both entrepreneurs, and talked about dishonest employees, growth and other perils of business, but he has become one of the most highly visible entrepreneurs in the Open Source business model. He has been featured in Forbes, Inc.com and many other places as his business, Asterisk, has grown to become the premiere solution for telephony in both small businesses and, increasingly, large corporations. Everyone who deploys it saves massive amounts of money, gains control over their network, and wrestles their infrastructure away from the licensing whims of the AT&Ts and Avayas of the world.

His story fits the mold of a successful entrepreneur; one that never dismisses opportunity, even if it doesn’t fit with your previous business plan. In college he started a Linux support company and needed a cheap (read:free) telephony solution for his cash strapped start-up at his house. What is an open source entrepreneur to do? Why, write your own solution of course!

His software, Asterisk, is the open source solution for telephony, and his company Digium sells and manages hardware that runs his open source product. Of course, you don’t have to use their hardware, and a recent article at O’Reilly even talked about how you can use Asterisk to turn a $60 Linksys router in to a $600 telephony machine. In all of this Mark has stayed true to himself and his company, and with a character that is both disarming and geniune.

As I left being an entrepreneur in late 2005, and his work taking him to Europe and the West coast, often times in the same week, we haven’t had time to enjoy each other’s company as much as I would like. There was even a time a few months ago when he purposely took the longer flight to have a two hour lay over in Cincinnati so we could hang out. Sadly, because of work commitments, I had to ditch him. So, my Java peeps, help me make it up to him and support Open Source businesses at the same time!

Vote for him at Inc.com by going here. You may also catch his profile on Inc.com as one of their top 30 under 30 group.

Vertical Quality And McNealy: Why Apple, Sun and Google Have It Right.

Monday, April 24th, 2006

I have always had to defend my love of the vertical markets, especially to the hortizontal dominated business world. However, in The Register’s send-off for the departed Sun Microsystem’s CEO Scott McNealy, the commentator made an economic comment that hit me so square between the eyes it summed up the entire reason for the need of there to be an Apple, Google, and other one-integrator strategies that have recently come back in to vogue.

Wall Street had long waged war against McNealy’s insistence on Sun as a vertically integrated systems company: one that produces a finished widget. Financial markets prefer to see horizontal vendors, exemplified by Wintel and Dell, because they squeeze the costs out of a business. In reality, the costs are simply transferred elsewhere, usually to the customer in the form of integration woes, shorter buying cycles, and lower reliability.

Think of that when you buy a $500.00 Gateway from Best Buy. It is true that the majority of people who read this blog are the technological heavy-weights, and might not believe they feel all the integration cost and reliability issues that come from the Windows (Is it really Wintel anymore?) ecosystem. However, I don’t go a day without someone complaining about some lost productivity do to their Windows XP workstation, and these are some of the smartest people to be had in a workforce. Coming home to (and using at work when possible) Apple technology has always created longing looks when I show the one step .Mac sync or the bluetooth pairing for my HID devices, or even my ability to direct music to any stereo in my house with one touch.

It’s the same thrill a Google user gets when he shows how his multiple calendars can be subscribed to, synced to his mobile and integrated with his mail. Things that Just WorkTM and Just Work because it’s vertical and integrated. Despite your valid concerns about lock down and other nasty things, the fact remains that as these devices become commodities the network becomes more important and the devices themselves have such a low barrier to entry that one moment you can be iPod + iTunes and the next be Creative + Napster. But, the returns diminish when you become Creative to any music service or Napster to 30 devices.

The same theory extends even to other business markets. A year ago Wired ran an article entitled “The Decline of Brands” stating that because of the more price conscious consumer and knock-off discount brands, that the quality that a large company like Proctor & Gamble implied in it’s Vertical brand strategy would diminish. This is true, but it doesn’t mean consumers aren’t more Vertical minded, in fact they are more so, just not to that level of detail. Sure you may find that a household’s Gillette Bodywash and Febreez has been replaced with Target brand labels, but chances are good they will all be from Target.

Even Java uses the Vertical Market strategy, taking Java and extending it to JEE and JME but with the same integration and quality of what is in J2SE. In the end, it’s the Vertical strategy that will win out as people become as fiercely brand loyal as they were during the American car days of the 1900s. Yes, you had to pay more for Chevy engine parts for a Chevy car, but as the dealers knew you could just as easily get a Ford the next year, prices were high but not exuberant. Also, you always knew it would Just WorkTM and get you to work on time, even if you had to pay the Vertical Market premium.

And that’s the point. Participating in Vertical Markets does tend to be more expensive up front, but the cost isn’t non-existent in the Horizontal model, it’s just more hidden. Perhaps to an America where most people live paycheck to paycheck, a cheap Creative player now may mean you can afford to pay the integration cost in the future the next time you get paid (another cable, another music service, customer support calls, syncing issues, rebuilding the library, upgrading to Vista for that “extra” media ability, ect.) but in the end, you’ll still end up paying just as much, especially if you value your time.

Sadly, before most markets move to the costlier but more quality driven Vertical process, there is always the Horizontal market before prices come down enough so that a person can switch brands, not just components. Steve Jobs and Scott McNealy are both people who never gave in to the Horizontal marketplace, never willing to give in to the quality penalty such a move would give their companies and their reputation.

They have had to live deep in to their middle-life to see it come back, but in the world of PSP, iPod and Google where entire industries have had sprung up around these Vertical ecosystems, they can finally say they never gave up on the idea of quality and integration championing the dull and the mass produced.

LispWorks Will Have Native Intel Mac Version In Q2 of 2006

Friday, February 10th, 2006

Martin Simmons of LispWorks confirmed today on the LispWorks mailing list that an Intel native version of LispWorks for the Macintosh platform will be available by June 2006.

There will be an Intel native Mac version of LispWorks 5.0, which is due in Q2
this year…We can probably fix problems with LispWorks for Macintosh 4.4 running under
Rosetta as chargeable support work. Please ask about that on lisp-support.

Many people have commented that almost all versions of Lisp (both free and commercial) have problems running on the Intel platform of Mac OSX do to signifigant problems with using Lisp through the Rosetta software program that translates PPC instructions to Intel for compatibility with applications that do not have a universal binary or Intel native product available.

Lisp is a language that ties very deeply to the kernel and the hardware of a computer, and it is not surprising that Rosetta is causing problems with Lisp developers. Among reports of problems are hanging and very slow compile and start-up times for Lisp IDEs and applications.

An un-answered question is the support for PPC and in particular Mac OSX on PPC in the future. Because Lisp is processor dependent, a universal binary (fat binary) solution is not possible, and Lisp vendors will have to actively support versions for both PPC and Intel on Mac OSX.

Given the wide use of Mac OSX in the acedemic and biomedical industries, this move was expected but previously un-released. Allegro, the other big commercial Lisp vendor, has not disclosed any plans on when it will go Intel native.

Allegro 8.0 Lisp Also Crashes On Mac OSX Like SBCL Does

Thursday, February 9th, 2006

John Wiseman sadly reports that the latest Allegro version of their Common Lisp, 8.0, which has gotten written up in eWeek and made us all proud, also crashes (not really) on Mac OSX the same way that SBCL does. This is a problem that’s going to have to be fixed, because the number of CrashReporter instances it generates on a system is unacceptable when in REPL developing.

Imagine every stacktrace spawning a 30MB process on your system each time…

I also wrote something about it as a note (read:warning) on my research project’s installation instructions. It goes:

You can use SBCL on Mac OSX from both the command line and visually, but you probably don’t want to at this moment. SBCL throws a SIGSEGV at every stracktrace, and Apple’s Crash Reporter looks for these events at the kernel level and opens a Crash Reporter process. When being used visually, SBCL will give you a dialogue box displaying this issue. However, when you run SBCL from the command line or even in the REPL in interactive mode (like you do in Emacs with SLIME), every compile will trigger an Apple Crash Reporter process. This means that after one hour of development you could have 30 or 40 crash reporters launched on your system without any visual indication. Since SBCL developers are aware of the problem, but have not patched the SBCL distribution, we do not recommend or support using SBCL in development on Mac OSX. You can still do it, but keep your Activity Viewer open.

Now it would appear the same thing is true with Allegro 8.0, but something tells me this will be fixed quick. There are a lot of scientist running OSX in the biomedical and computer science field and they are Allegro’s bread and butter.

I don’t think we’ll get the same from SBCL.

Solaris Review: Solaris Welcome Home!

Wednesday, January 25th, 2006

Some time ago I ran across one of your blogs in which you made some comparison between Solaris and Linux. I was very impressed and bookmarked it. I may have made a mistake but it seems that the article is no longer there… If it is possible, could you please direct me to where I can find it? Better yet, would you mind sharing the article (again) with the world? Thanks, Hering

Dear Hering,
With pleasure. It was on The Post Modern website and published August 4th, 2005. Here it is.

Sparc Ultra 5Back in 1999 when I was an 18 year old in corporate America doing my thing, you always knew who the really important people were because they had Sparc Ultra 5s on their desk in addition to their clunky Windows PCs. The rest of us were forced to use Hummingbird to emulate X and screen-pop our control-M to monitor jobs. I’m proud to say at the end of my run of working at this place, I had my own Sparc Ultra 5 with 21 inch monitor running Solaris 7 in the CDE environment doing C++ coding and building applications for servers. There was just something powerful about Sun OS that came through; it felt solid under your fingers, like a fine instrument. This was Unix Proper. But alas, it was expensive as hell, locked on expensive hardware, and seriously useful only for workstation tasks (it had a clunky Real Player and Flash, but that was it). Linux came on strong, with it’s free price and it’s compatibility as the primary target of all open source technology builds. Solaris binaries were well down the webpage, and getting lower.

This week, after years of GNU Linux, I’ve come home. I must admit when I saw CDE load on my screen again (I shun Java Desktop for server tasks) I was a little nostalgic.

The Hacker Learning Curve

Much has been made of the latest free Solaris 10 release for x86 and Sparc, and although the OpenSolaris project is gaining steam (but not up to Solaris 10 in functionality yet because of third-party issues) many hard nosed open source zealots are shunning Solaris for Linus’ and GNU’s old stand-by. This is where ideology can hurt you. Although I do understand people who grew up with Linux in their homes or small offices would never have exposure to a real Unix operating system, I think the vast majority of Linux users are staying away because the learning curve is steep, even for a seasoned Linux pro. Like I discovered when I installed Solaris 10 over the weekend, Linux has made us lazy.

Huh?

Linux comes from the same environment that scripting languages like PHP and databases like MySQL come from; they are littered with hacks and shortcuts from developers who just want to get it to work, and don’t sit down long enough to think about what a particular strategy means over the long term, or about others who may come along later. This has resulted in Linux being fast to administer and fast to get to do what you want, but as stability and universal configurations come in to play when a system grows, the need for serious structure in process execution and user management becomes clear. Solaris requires different thinking, and you graduate in the course of learning Solaris (or re-learning for me) from thinking only in the moment to really understanding the power and resources a Unix operating system provides when well configured. Many Linux users, sadly, will simply give up in frustration over this simple issue.

Here are some examples:

I pain to think of how many Linux admins are frustrated at why they can’t just log in to Solaris and do a /etc/init.d/tomcat start and then logout without Tomcat closing on them. nohup has no meaning to them. The idea that an OS garbage collects all the terminal processes a person starts after they log-off, even if they become root, is foreign to those brought up in the Linux environment. In Linux you can linger long after you’re gone. The same holds true for directory structure and security, which Solaris has not forgotten in it’s attempts to be more accessible.

Another thing that will make Linux users cry is the fact that, even as almighty root, you can’t create a directory in /home for users. Solaris smartly assumes roaming profiles where different uses will want to bring their /home directory with them to whatever box they go to, and the automount service watches over /home like a hawk. You have to create home directories in /export/home if you want to do it manually.

Init.d is so 90s

Another issue that can face a Linux switcher is Sun’s answer to the mess that is now init.d. The SMF (Service Management Framework) is a spectacular replacement for the old init.d and runlevel based process management, and provides milestones in place of run-levels and easy XML files that provide for restarting crashed services and maintenance mode of processes, something a Linux user has to deal with just by using /etc/init.d/service restart command and praying it doesn’t crash again. It also stores these files in a hierarchical fashion that works on both the intuitive and management level.

As an example, start-up XML files for DNS applications are stored in the directories:

/network/dns/server
/network/dns/client

If you wish to start these services, you can call the following:

svcadm enable /network/dns/client
svcadm enable /network/dns/server

The System Administrator themselves can write their own XML files and plug them in to the architecture, and several blogs exist that provide step by step guides for setting up MySQL, Tomcat, JBoss, and many other common services you may want to move over to the SMF to gain the benefits.

Even boot-time process starting is handled with greater elegance, since enable and disable carry over to all other boots of the OS. Want to only start a service now and have it not start at next boot? Don’t cd in to those rc3.d/ files, Just use:

enable -t /network/dns/server (for temporary)

With Solaris, you’ll get to drink a lot more coffee and have a lot less carpal tunnel.

Solaris 10: Linux Inside

Not that Solaris hasn’t tried to bridge the gap with the open source world. In fact, init.d/ does indeed work (mostly to start Linux and OSS programs like MySQL and samba) and the operating system comes loaded with all the Linux goodies such as Apache, Tomcat, MySQL, Samba, and the rest as well as a Gnome environment that actually completely works out of the box, the excellent Java Desktop System. It also comes with StarOffice pre-installed for workstation use. It keeps these, for the most part, locked away in /opt/sfw/ which is like having a complete Linux distribution mounted inside your Solaris OS. This helps ease the transition for Linux users, since ifconfig, top and the rest are there for your use.

All of Solaris’ applications are installed when you install your operating system, but none of them are turned on by default for security reasons. They are locked away by way of config files. Apache, Tomcat, Sun Studio Server 8, Samba and the rest are set up to start at boot time, but all the scripts in init.d look for a .conf file typical with the application (i.e. server.conf or httpd.conf). It provides these files after install with example implementations under the suffix of example in the various directories (For example: httpd.conf.example), but if there isn’t a .conf file for the process, it won’t start. To enable the Apache server, for instance, you would simply do the following:

cd /opt/sfw/apache/conf/
mv httpd.conf.example httpd.conf
/etc/init.d/apache start
- now the server will start.

This is a much easier way of providing all the services a user might want to start without forcing them to hack the init scripts immediately, and gives them the ability to install the latest and greatest versions themselves without clashing with distro installed defaults, which often happen when you already have Apache installed on Fedora or Mandrake but want to compile your own.

Solaris 10: Documentation without the O’Reilly Tax.

What really separates Solaris 10 from the pack is the documentation. If you don’t think you’ll take advantage of documentation, it’s only because you grew up without it on Linux, and Google has been your only recourse. Solaris did not grow up in the world of HTML HOW-TOs and Wikis. Far from it, there is enough documentation online to kill a rainforest if printed. And it’s really good documentation too; documents that walk you through everything you’d ever want to do from setting up Sendmail to using NIS+ to configuring network services. It has high-level overviews with detailed walk-throughs and advances at the level of the reader by providing quick methods to get started and then drilling down in to the details as people get more comfortable with the services they are deploying.

To put it bluntly, Sun provides O’Reilly quality documentation for free, where open source technologies require you to run out and give O’Reilly your $40.00 to get the exact same thing. Although open source technologies (companies?) like MySQL, Tomcat and the rest are going the “professional open source” route and trying to offer the same level of documentation and support, the open source world will always be plagued by the fact that writing documentation, not even good documentation, is a horrible job and no programmer who just wrote a Really Awesome Thing is going to want to take the time to write a detailed technical book about it.

Beyond this, un-like the Linux admin community, the Solaris admin community is together and solid, with one place to go. It’s Sun’s BigAdmin site, and it’s loaded with everything you’d ever want to know or search for. Also, Solaris has incredible management applications that make managing users, groups, and projects a breeze (and gets rid of that pesky /home issue for you automatically). It now includes a webconsole interface as well for managing not just users and installed applications but containers (Solaris zones) as well.

There is so much more to talk about, such as the great package management, the Solaris zones which is virtualization and software partitioning that enables you to create many private execution environments within a single instance of the Solaris Operating System ( I have three set up on my home server), the DTrace debugging system and predictive self-healing. However, these technologies are so beyond the current Linux feature set that I doubt a “switcher” would even be motivated to use them immediately.

It’s Only My Opinion

My reasons for advocating a technology are plain and not tied to ideology. Apple has the best client operating system, with expose window management, innovative unix technology and GUI, while still being able to run Microsoft Office and Adobe apps that are in the customer marketplace. Therefore, I advocate them. Java is one of the most flexible and powerful programming language in the world, and in a world where international governments are passing laws requiring open source to be used exclusively for computers and servers, C# just isn’t going be portable beyond the United States in the near future (unless you want to hang your fortunes on the fever-inducing named Mono). Therefore, I advocate Java.

My reasons for advocating Solaris are the same: Now free, it is simply the most advanced and powerful server operating system available to you, with plenty of face-time with highly paid doctorates of computer science over the years to make it’s advantage lasting while also playing well and complementing the open source technologies that most people use. It runs fast from the PIII 256 MB RAM machine I have tested it on to the run of the mill Intel Pentium 4s I use as servers at home to the fastest 64-bit AMDs we have in the dev environment at my start-up.

Even if you are a Linux lover, you owe it to yourself and your intellectual curiousity (that thing that makes you format your box every 9 months with some new OS) to try out Solaris 10.

In The Presence of A Guru (On Catholicism, VAX/VMS and Geek Culture)

Wednesday, January 25th, 2006

I’m twenty-six years old. It might seem odd that, given I’m so young, I would have fond memories of an OS like VMS, an architecture like VAX, seeing a sound studio hooked up to a Sparc Ultra 5, an old man who knew everything about everything and an old Catholic sacred store employee who hacked mainframes in the 50s. However, so far I’ve taken the road less traveled in my technology career, and because of that have had a great time playing with and learning things most people would never have the opportunity to see or use. I write about that here, in particular, my experience with Gurus.

Guru Is Sacred

HR recruiters use a lot of words they don’t understand. The one word, however, I must ask back is the word Guru. Turn it over now, and pretend you never heard it. Do not ask, in your very scientific rating system for skills, if a person is “Beginner, Intermediate, Expert, or Guru”. If someone was a Guru, they would not fill out this form and they certainly wouldn’t be working for you. As anyone that has ever been in presence of a real Guru understands, there are no “Java” Gurus or “Linux” Gurus or any other demarcation. Gurus transcend all of this, and yet embrace it all as well. They are at least 50 years old or more, they do not conform to any past, current or future dress trends (go ahead and tell them about your dress code standards, just make sure I’m around when you do) and they certainly don’t care about money, fame or titles. They are as close to priests as technology will get, and hearken back to an era when technology was science and imagination, not press releases and vaporware.

When true geeks encounter such a person, we instantly sit crossed-legged on the floor, turn off our cell phones (not just vibrate) and say, with deep respect “Tell us stories!”. I’ve only met two in my life, and they were in the oddest places. You won’t find them at conferences or pitching their latest book. You have to find them, they don’t find you.

Catholic Computing

The first place I met a guru was in a Catholic store. Seriously. My father is a Catholic and, as it seems with most religions, alternates between fits of devotion and fits of secularism. During one such fit of devotion, he took me to the Catholic store in the city. Cincinnati has a deep history of both German Catholic and Jewish immigrants and so finding these exclusively Catholic stores is not hard (but getting harder). After grabbing a rosary, a few holy cards and other knick-knacks, we moved to the counter where we met a very gracious old women in her 60s who you could tell was doing this very boring and leisurely job for a higher purpose than a paycheck. As she was packing up my father’s purchases I was talking about one of the various jobs I was doing and what it entailed. I as 17 at the time, and had moved to the Delta Upsilon frat house in Columbus to go to Ohio State University. However, as I needed money, I applied for a small job at Nationwide Insurance doing mundane mainframe vs. UNIX report resolution using nothing but a thick mainframe stack of printed batch jobs, a UNIX terminal, and a calculator (it was a nice desk one though). As I found problems, I went through the C code or COBOL and figured out where the problem had occurred. I had done so well that I was hired full time at Nationwide, and school was put on the backburner in a not-so-smart move. Instantly, the woman’s face lit up in surprise and delight.

“I worked on IBM Mainframes in the 50s”

My father smiled and started to walk away, not knowing that in that moment she had given herself away and that I was obligated to stay a lot longer. Instantly her face and manner changed. She moved from extruding very stoic resignation and comfortableness about her life and her old age in to a fiercely intellectual and witty archetype of a Guru. She was more alive than seemed possible, and proceeded to tell me about her punch cards, the programs she would write, the ins and outs of the machines she would use, how her hands were sometimes bloodied by the very mechanical machines that read things in and spit things out, and the things she loved most about the math behind the machines. She worked on a program that calculated something for the government, but the exact specifics had long faded from her memory. She said she retired in the late 70s and hasn’t liked or cared for the personal computer thing that happened afterwards. She said she could never understand a mouse. I eventually left after absorbing all her stories, and her pious Catholic manner we had first seen on arriving was beginning once again to poke through as she got tired. I promised I’d come by again, and she said she’d really enjoy it, but I never did.

Solaris does Apple

Years later I would run in to another Guru. I was in the unenviable position of being picked by the director of a large company in Cincinnati to travel with him and one other person to Columbus where the company had just purchased an IVR / Interactive Voice Response company to use in connection with it’s Customer Service outsourcing business. This company was built from the ground up (the CEO actually made the custom propeller blade ceiling fans that were used in the company), everyone had known each other for years, and I was one of the lucky ones that had to learn all the technology and then take the equipment, the knowledge and the best practices back to our corporate headquarters for assimilation. Of course, the employees would be left behind. This was not a fun assignment.

The technology used was mostly homegrown as well. Because of the massive amount of lines needed to run the inbound and outbound automated call centers, the business was located right next to an AT&T POP (Point of Presence) and they were a heavy user of Periphonics and Lucent IVR software, which ran on top of Solaris 7. What was amazing was that to interface with the Periphonics IVR for voice prompts you had to use a custom language. To interface with the Lucent IVR technology you wrote in.. wait for it.. COBOL. What was also amazing was that the client for all audio recording, encoding and management was on Solaris as well. I gawked at seeing an entire sound studio hooked up to a Pizza box Sparc Ulrta 5 with a wave-editor and audio tools in a CDE interface. Imagine the maroon ugliness for a moment…

What caught my eye most though was the wall long library of technical books in the center of the building. As I walked closer, I could see they were all one publisher, but various editions. As I got closer I saw the Digital logo. In my final steps I could finally make out what they were, ten years worth of VAX/VMS technical manuals.

“Don’t touch those, they’re Bills.”, said a cold and aloof employee passing by.

Apparently, Bill was an old-skool consultant who ran the whole show and was the brains behind the entire setup. Sure there were System Administrators and IVR programmers, but the rest of the company and the connections between them were invented and managed by him, and he loved VAX. Everything was VAX. These were old systems (they still had the Digital nameplate on them) but they ran the latest version of OpenVMS for the time (1999). Although most of the technology he wrote would be replaced by the integration, there was one small thing we couldn’t replace: A web-based reporting system that all clients used to get their call metrics, written by Bill, which ran (obviously) on VAX/VMS and was written in, of all things, DCL and Perl.

I would have to meet Bill.

The Functional Guru - A Digital Rogue?

Later that week a rusted, blue car of un-discernable make and model pulled in to the parking lot next to the POP. Out came a man around 60 years old, wearing a pony-tail behind his very bald head and red sweat pants that were a little too tight for the women’s stomachs. Through the days, the outfit changed very little. For our sanity’s sake we assumed he had more than one pair of red sweat pants and didn’t ask. Others scoffed, but I admired him as having a Berkley-esque manner about him. We sat down to go over the system, and after the following turn-over weeks I became a deep admirer of his. He was, certainly, another Guru.

At first I had imagined he had put a lot of traps and complicated code in to the system to ensure a paycheck. Why else would he stick with VAX/VMS and write code away from such tried technologies and frameworks? As he walked me through the system, however, the elegance of his design began to show through. He had, after all, managed to write an entire web based reporting application that supported thousands of clients and queried hundreds of thousands of records in an application that was smaller than the HTML it eventually rendered. I now know he used a lot of functional programming methodology, basically building list-like code structures that built on top of each other and essentially became a very easy macro interface. It was a feat I would have admired had it been in Lisp, but what made it even more impressive was that it was in Perl and obscure DCL. Certainly, it was not terse, but he didn’t seem that concerned. It was also extremely scalable and customizable, in a manner than I must admit I’d still want to use an entire JavaEE application stack and code to do myself. Gradually, as I would continue to use and work with the application and expand it to our needs, it was the only part of the whole system that never once crashed, balked at a complex programming task or did something unexpected. It was a bubble unto itself, with no huge frameworks, no webservices or XML config files. It was a pure, clean web application that looked great on any browser and ran as fast as the wind.

This code could only come from a guru.

Further, he talked about why he loved VAX (Virtual Address Extension) and in particular the OS OpenVMS. He use to work on the VAX development at Digital all the way back to 1975 with the PDP-11/20, and had helped develop the software for the VAX-11 architecture. He showed me file versioning (and why it was a good idea), the special commands that allowed you to tune the kernel and how to manage the network and filesystems in a distributed manner. He talked about UNIX in general, about his days of programming for the Apple IIe, about how the old Apple’s wrote to the disk drive based on processor ticks (before the Folklore website existed, by the way) and how he first wrote the drivers for some Apple hardware for a company in Columbus. He knew, at every execution, what was going on in the compiler, in the code and in the object model. I learned more from him than I could ever say.

The thing was, whenever another programmer or manager type would come up to him, or ask him a question, he would pipe up and give the very default answers. This led them to come to the conclusion he was a hack, or at best unproductive. I knew differently, and also understood that true Gurus don’t really care if you believe they know what they are doing or not. They simply assume the engineering respect that most developers don’t get from the business side these days, and it’s most likely why they aren’t seen in very many data centers or cubicles anymore.

The Need For Elder Respect In Technology

That’s a shame, because what shows through in both of the gurus I’ve met is how they desperately wanted someone to share all of their knowledge with, their successes and their hacks that they had invented over the years. Its sad to think there are people with these great stories and knowledge without an ear to talk to. You see, the only thing that Gurus can do is teach. Not that they couldn’t code C or Lisp or C++ around us youngin’s three times fast, but that would be a monumental waste of talent. In a world where Economics has Alan Greenspan and Biology has Timothy Hunt and Paul Nurse, Computer Science puts it’s best out to pasture way too fast, making them nothing but fodder for PBS documentaries.

What they teach is more than just heroic stories or a good way of thinking of a problem, but not to give up being who we are. As the personal computer has taken off and information technology has moved from science and imagination to business cases and flame-wars on Slashdot, these people remind us that the core of who we are is also alive in them, and that in many ways they found a way to express that passion that we may never get a chance to.

When we, as programmers, rally around Linux or point to the beauty of Mac OSX or talk up the idea of open standards and open source code, we do not rally around these things individually and for separate reasons, but because we all share in the idea that technology can be something amazing, liberating and powerful even if it may have lost it’s way. Geek culture is at it’s core optimistic about humanity, even in it’s weary cynicism of today, and it’s only in talking with these gurus that we can understand that this same shared tradition of optimism is also a heritage, one we must respect.

Steve Jobs stated in his commencement address at Stanford last year that after he had been removed from Apple in the 80’s he apologized to Mr. Packard and others for letting the previous generation of innovators down. While if he did in fact let these people down could be disputed, I find in his words the best illustration of someone who understands the Geek culture, someone who understands we have a heritage to respect. I wonder if it even occurred to the companies and internet start-up firms to apologize or feel guilty for letting the previous innovators down, for losing site of the goals of technology for their own personal gain. I’m certain those who invented the World Wide Web on a NeXT box back in the 1980s or worked hard on the TCP/IP protocol in the 1960s didn’t get one red cent from the boom. Then again, these people wouldn’t care, they weren’t thinking about money when they churned away for endless hours on it. They got it.

So, don’t ask for Gurus. You don’t really want a Guru. They care a lot about the bottom line, just not yours.