Apple Bashing

macguy_jailMy, how the mighty have fallen from grace.

Not long ago, Apple (especially the Mighty Mr. Jobs) could do no wrong at all.  They were the cool geeks, leading the world out of the dark canyons of Wintel captivity.  But slowly, ever so slowly, chinks have appeared in their iArmor.

You've probably seen the latest - Apple is fighting like hell to punish the free spirits who've dared to unlock their iPhones.  One update after another is pumped out by Apple, preventing people from loading their own MP3s as ringtones, and now bricking the unlocked phones.

But now, reports are starting to come in that some people who haven't tampered with their phones are having problems with these updates, too.  This is going to really hurt Apple.

These are some of the same people who stood in lines for hours and hours just to buy one of these new phones.  Why?  Because Apple wasn't just another phone company, and they weren't going to treat their customers like regular phone customers.  No, these people were special.  They were the iFaithful.

Sorry, folks.  Apple's chasing those bad, bad iUnlockers with such vigor that they're running over their best customers.  That's going to leave a mark.

In case you're keeping score at home, kids, here are some of the lowlights Apple's hit over the last few months:

Let me know if I missed any.

So I really think someone should jump on this and make a new "Mac Guy" vs. "Motorola Guy" or "Sprint Guy" or something like that where the Mac Guy is stuck in jail, or Steve Jobs comes out with a hammer and pummels his phone or something.  Let's see who's got the moxie to take the first shot - I can't wait!

How can you “feel” platform quality?

parkedcars1 You can tell the difference between a Kia and a Mercedes with your eyes closed, can't you?  It's more than the look of the car; it's a host of little experiences that tell you how the car was built, and that someone really sweated the small stuff.

You can feel quality when you reach for a knob - it's in the right place, even though you've never thought about what the right place is.  You can feel it when you twist the knob or flip a switch - you can tell that knob is going to be working just fine the umpteen-thousandth time you reach for it.

Doors are a good place to look for quality.  I owned an Acura a couple years ago, and it had a little electrically-actuated finger that grabbed the door when it reached the door frame and pulled it in tight to latch.  I hardly ever noticed it until I got rid of the car, but then I really missed it.  Other high-quality cars pride themselves on a solid, muted "chunk" that could just as easily come from a bank vault.

Software has quality, too.

You may not be aware of the dozens of subconscious signals that transmit software quality to you, but they're there, too.  The first thing that people think about when "software quality" comes up is coding quality - how many bugs are there?

You've probably seen the jokes that talk about using the horn, turn signal, and gear shift to restart the car when it breaks - that's a reference to coding quality.  We don't want our cars to leave us stranded by the side of the road, and we don't want our software to puke its guts out all over our screen every time we look at it sideways.

Coding quality gets a lot of attention from QA departments who want to automate them away, and from development departments who want to unit-test them away.  Coding quality improves when teams work together, and when individuals learn the craft of software development (hint: pick up a copy of Steve McConnell's Code Complete).

But coding quality isn't the end of software quality.

Design quality is perceptible in the layouts of screens and the ease with which new users find themselves around for the first time.  It's like the bank vault car doors.

What is platform quality?

Platforms show their usability in all these ways, but there are other aspects of platform quality that are more subtle.  I've been working pretty extensively with two different platforms over the last several months, and I am struck every day with the difference in "feel" I get from these two platforms.drupal_logo_sm

Drupal is a Content Management System (CMS).  It's the software that powers  this blog, and I've also deployed it into a couple other environments.  I have worked with other LAMP-based CMS systems (PHP-Nuke, PostNuke), and I have no problem putting Drupal on a pedestal above those other platforms.  Drupal does enough things so very, very well that I've begun to think of it as a general-purpose web platform rather than just a CMS.

I like it a *lot*.

SugarCRM_logo SugarCRM is a Customer Relationship Management System (CRM / CRMS).  It's a competitor, and it's available in open source (Community) and two paid versions (Pro and Enterprise).  Even though I'm going to pick on some aspects of SugarCRM, I have to begin by saying that I really admire what they've done.  The value to be had here by customers relative to the commercial alternatives is impressive.

But where Drupal inspires confidence to look for new places to use it, SugarCRM makes me want to stay in its comfort zone.  I'm pretty sure SugarCRM is going to do well at the things it does natively, but extending it hurts. is actively working to transform their CRM platform into a general-purpose web platform, but SugarCRM isn't ready for that yet.

Even though these are two completely different applications, they are similar in the sense that in most implementations, the "stock" product isn't quite right for the job.  That's clearly true for Drupal, where you are very likely to customize the UI and add modules to get the right mix of functionality for your site.

SugarCRM is more likely to have most of what you need out of the box, which is a testament not only to the complex nature of the CRM space, but also to the high level of functionality in the box.  It's probably also fair to point out that the business processes and data relationships in CRM are more complex than for CMS, but for now, I'm going to ask to have my cake and eat it, too.

I'm going to compare these two platforms in a number of areas, pointing out the ways that each of them build up or tear down my confidence in the platform, and where applicable, showing where an idea from one would work really well in the other.

(stay tuned for more on this in future posts)

Rendezvous with Rama bot built

Ok, did anyone else ever read Arthur C. Clarke's sci-fi novel, Rendezvous with Rama?  The connection here is a little thin, but I had a distinctive flashback when I saw it.  In Clarke's story, astronauts land on a visiting spaceship, initially thought to be dead, but which later turned out to be the home of all sorts of robots. 

Everything on Rama reflects a theme of "three", including one type of robot that Clarke describes in great detail.  This spider-robot is said to look like a three-legged daddy longlegs, and the way it moved sounded pretty far-fetched, at least until I saw this robot from Virginia Tech.  I'm sure this won't turn out to be the most practical form of locomotion, but it's a wonderful example of thinking outside the box.  (read more about it on Engadget)

GroundWork Open Source network management

In my earlier post about Open Source Customer Service, I mentioned GroundWork Open Source.  I found these guys while searching for a Nagios VMWare appliance image.  GroundWork has taken Nagios and wrapped it and extended it to add functionality and to make setup and administration a ton easier.

If you're worried about how to get started with GroundWork, their download area has options to install it yourself, boot an ISO "Live" image, or run it as a VMWare or Virtual PC VM image.  You should be able to find at least two good ways to get up and running in a hurry.  Documentation is good, and as a bonus, I received a number of emails with sincere offers to help if I needed anything.  I didn't feel like I was being ambushed by used-car salesmen, though (you've probably experienced that from some vendors).

Like other mixed-source vendors (ex: SugarCRM), GroundWork has a free Open Source option as well as paid options.  I worked with the Open Source product, which has been plenty-powerful for me.  Paid products add features and support.  GroundWork just announced GroundWork Connect, a support portal for paid customers.

I haven't been able to spend the time required to really explore all facets of this framework, and despite the excellent documentation and support, it'll take time to really get the most out of a system like this.  Although you can view a network monitoring solution as an application, it really bears a lot of resemblance to a programming environment in the way you organize your work, collect bits of logic into modules, and coordinate the operation of those modules.

At the simplest level, this system will tell you what machines are up and which are down, but there are lots of systems that will tell you that much.  Things start getting interesting when you begin to factor in which applications reside on which machines, which machines depend on which other machines, which applications depend on which other applications, and so on.  There are some really powerful possibilities here for someone who takes advantage of them.

Personally, I'd like to look at incorporating some response-time / QOS metrics in at least one scenario.  I have a feeling that using GroundWork to collect some real information would allow me to produce some pretty compelling pictures about what's happening to application-level quality under different loads.

The only thing I've seen so far that you may want to look into before diving in is hardware requirements.  Depending on the size of your organization and the amount of sampling you're going to do, hardware requirements can start to creep into the range of a "real nice machine" -- a powerful CPU and multi-Gig RAM setup is described for large-scale monitoring.  I expect that most organizations will get by with lots less horsepower, but check this out when you evaluate.

Hopefully, I'll be able to share some more input on GroundWork after I put a few more miles behind me.  I've seen a lot to like so far.

Apatar data migration framework

As I mentioned in my last post, I've run across a couple of open source projects that have really jumped out of the pack with their attention to customer service.  This first of these is Apatar.  I found these guys as I was searching for a way to get data from a system migrated to SugarCRM

Anyone who's ever done data migration for a project knows how quickly this task can suck the life out of a schedule.  Apatar's product looked to be just what I needed: an open data migration framework with end-point plug-ins for all sorts of systems, including my "from" and "to" systems, so I gave it a try. 


Their product is a Java-based canvas that hosts migration steps, where the steps perform any number of functions, including mapping between two data sources.  Using the pre-built connectors for SalesForce and Sugar (both using these products' SOAP interfaces), I was able to wire up a test migration harness very quickly.

I really liked the fact that I'd be able to construct a migration job that I could run again and again, and I loved the availability of all the plug-ins.  The company is a mixed-model organization - Apatar is available in open source and "Enterprise" variants.  As with other companies in this model (SugarCRM comes to mind), it is important to gauge the vitality of the open source community if you're interested in that variant.  In Apatar's case, they've got a really nice developer portal (good), but the featured content is anywhere from a couple weeks to several months old (not great).  If you're interested in Apatar, I would definitely suggest testing the response time and accuracy of the community support before betting the farm on it.

It turns out I wasn't able to use Apatar for my project -- partly due to problems in my infrastructure.  The production SalesForce system I was migrating from didn't have the SOAP API enabled, which really eliminated Apatar as a migration tool.  I tried using Apatar to read a CSV file and upload to Sugar, but I ran into problems there, as well.  To be fair to Apatar, I've used the Sugar SOAP API separately, and it is pretty touchy.  When it encounters a problem, it throws exceptions first and asks questions later. 

Error handling is one area where Apatar could use some improvement, though.  Instead of just aborting the whole job or logging the fact that x-thousand records had errors, it would be nice if Apatar would log the problem in a form that lets me go back and examine the input and output rows.  After all, if more than 5-10% of my records are failing, there's probably something in my mapping I'm going to have to fix, and that's going to be a whole lot easier if I can see what was coming in and what was going out.  For bonus points, give me an interactive debugger to let me look at the data values.

Early in my evaluation, I got an email from Apatar asking if I needed any help, and another asking for my feedback.  When I got to the point where I was able to give some constructive comments, I got in touch with them and exchanged emails with one of their techs.  There was really nothing to be done about my #1 problem (no access to SalesForce's SOAP API), but I offered my feedback about error handling, and it was well-received.

I'll definitely keep Apatar on my radar to see if they continue to grow and improve.  They've got the potential to be a great tool to have in the chest.

Open Source Customer Service

A while back, I replied to a post on a Joel-on-Software forum about how to compete with an open source competitor.  In my reply, I suggested that the author look at usability and customer service, as these are often two weak links in open source projects.

Since then, I'm happy to say that I've come across a couple of organizations that have proven me wrong.  Both of these organizations "get" what it means to be a software product.  They understand that there's a lot of work to be done once the software is written.  The thing that really caught my attention about both of these organizations, though, is that they both reached out and contacted me personally to see if I needed help.

What a breath of fresh air.

How many times have you had a software vendor contact you in this way - regardless of the price of the software?  This little touch does a lot to reassure the person on the other end that there's help available if they need it.  It's an easy way to start a relationship off on the right foot.

Watch for a couple of mini-reviews about Apatar and GroundWork Open Source - both are great examples of proactive customer service.