Tom Petrocelli's take on technology. Tom is the author of the book "Data Protection and Information Lifecycle Management" and a natural technology curmudgeon. This blog represents only my own views and not those of my employer, Enterprise Strategy Group. Frankly, mine are more amusing.

Wednesday, April 28, 2010

Of iPads and Hamptons

Last week I was on vacation with my family in Williamsburg, Virginia. I highly recommend it if you haven't been there. We stayed at a Hampton Inn which is usually considered a budget hotel. It was a fantastic hotel. I often stay at Hampton Inns because they have everything I want and need at a great price. Big rooms, comfy beds, a decent TV with 100 channels, and a free breakfast buffet. They also have attentive and super friendly service. They always seem to be be staffed with nice and helpful people.

Hampton Inn gets my business on a regular basis for one reason – they focus on things that are important to travelers and don't bother with needless frills. A well appointed business center is more important to me than a fancy lobby that I will never sit in. By focusing on what is of real value, they keep costs low and provide a great experience.

That got me thinking about the iPad. I know it sounds weird but I think about products a lot. I love the idea of the iPad. I have doodles in my notebook from five years ago for a tablet device like it. Yet, I've found little enthusiasm for it amongst regular folk (meaning non-geeks). Even hardcore Mac people who seem to be willing to buy every little thing that Steve Jobs comes up with aren't that interested. Why?

The typical answer I get is that they don't know what it is for. Some will point to their iPhone and say “I already have one and it makes phone calls too!” or “What is it? An eBook reader? Internet device? I already have a laptop.”

The problem with the iPad is not that it can only run one application at a time. That's certainly a problem but one that Apple will eventually fix. The big problem is that it isn't solving a big problem. It doesn't focus on what is important to people. The iPhone did. Apple understood that people wanted information wherever they were. The netbook concept was also successful by providing only Internet access (pretty much) and not trying to be a full blown laptop. eBook readers such as the Kindle or Nook are addressing the needs of voracious readers. They want to be able to carry ten books on a plane and still have it fit in their carry-on bag.

The iPad, in contrast, is neither fish nor fowl. It's an Internet device but with few advantages over a laptop or netbook. It's not exactly an eBook reader. Those have special displays to making reading easier over long periods of time. Traditional displays can be tough on the eyes when reading a book (I know. I tried it). As a media player, it is rather large to haul around just to listen to tunes.

All products must pass two tests. One is the “who cares?” test. Will anyone care enough to take a look at it? Does it grab your attention in some way? The second test, a more stringent one, is the “show me the money!” test. Will someone care enough plunk down their hard earned cash to buy one?

Apple's reputation and design aesthetics will almost always pass the first test. Pretty helps. Cool gizmo features like the giant touch screen will also help to get people to at least take a look. The second test can only be passed by providing enough consumers enough value for the right price. As far as the iPad goes, I'm not hearing the love out there.

I like the idea of the iPad. A small, lightweight, device that surfs the Internet, let's me check email, read eBooks, listen to music, and watch video on a screen that is big enough for my old eyes to see. Others don't share my enthusiasm. Perhaps the iPad tries to do too much. It does seem to want to compete with other devices that most people already have. Or perhaps it is simple too much money for something that doesn't replace a laptop or even an eBook reader.

For a great many people, the value is simply not there. Apple, in trying to create a trend, may have missed the most important aspect of product development – give people what they really want at a reasonable price and nothing more. Here, the value/price ratio appears to be way off. I'm hoping I'm completely wrong since the death of the iPad could set the entire tablet computing segment back.

Or maybe Steve Jobs should needs to stay at a Hampton Inn from time to time.

Friday, April 16, 2010

Tom's Plain Language License for Mere Mortals

For the past few months I've been working sporadically on a piece of software. It's not a great looking bit of code but interesting none-the-less. It's a simple document management system called Document Locker that allows you store files in a repository (so you know where they are) and wrap some metadata around them. That's not the interesting part. What's neat is that you can define relationships between documents and see which is connected to which. This approach will be most helpful when organizing multi-part documents, scientific papers, and a software project.

Finally, the day is near that I am to release it into the wild, including source code. Roughly two weeks hence, Document Locker 0.5 (the first iteration) will be made available through Part of preparing for the release is developing a license. All software needs a license to keep it from being misused and to protect the creator. This includes open source software. It never ceases to amaze me how little people realize that open source has a license.

I looked over all the major licenses such as Apache and GPLv3. All of the open source licenses I examined had the same problem – they are a mass of legal gobbly gook. I'm used to reading contracts and license agreements (which are a kind of contract) and they were still a tough slog for me. And long? As Sarah Palin would say “You betcha!” No sane person would subject themselves to reading these documents unless driven by necessity. It's like eating bugs. You would do it if you had to but not if there was an alternative.

The reason that even open source licenses are like this is because they are written by lawyers. Lawyers, like engineers, have their own technical language. They have their own concerns and worries and they think in a certain manner. The documents reflect this. I'm not saying it's a bad thing but for a great many uses this type of language obscures more than it illuminates.

When you get down to it, a license exists to create an agreement between people about rights. As the creator, I hold all the rights. You can do certain things with my creation but only those things that I allow. If you can't understand what I'm allowing you to do, how can you be expected to uphold your end of the agreement? You can't.

So, I set out to develop my own license. I'm pretty sure that a large number of lawyers would think I'm nuts just I would if lawyers wanted to write software. My goals were:

  1. To make obvious what I was allowing a recipient to do.

  2. To make obvious what they can't do.

  3. To say so in plain language that anyone could understand.

  4. Keep it short. Life's too short for long licenses.

  5. I wanted to make a point about licenses.

The result was Tom's Plain Language License for Mere Mortals. It is as plain language as I could get. Unfortunately there is no getting away from referencing other, big, heavy, legalese licenses. Since I have to reference the Java and Neo licenses the reader is still struck with reviewing those licenses. Too bad. Otherwise, it's pretty straightforward and just a bit irreverent. Irreverent? That helps me to achieve goal number five and make the point that software licenses, even benign ones, are so complicated, so full of legal jargon, that they are useless as the basis for a relationship.

With Tom's Plain Language License for Mere Mortals you know where you stand. If you can't understand what you are agreeing to then you shouldn't be mucking about with software. Really.

If you are interested in a preview, you can check it out at Twitter comments (direct message please) or email them to me if you know my email.

Friday, April 09, 2010

Programmer's Religion

I've been thinking a lot about programming languages. It occurred to me that I know quite a lot of them. Though I personally prefer Java, I've also written code in C++, C, Pascal, various assembly languages, HTML (a kind of language), Javascript, XML, SQL, and a variety of others professionally. For amateur projects, I've used PHP, PERL, VB (ick!), C#, and now Python. I even took a shot a LISP once. So, I don't have a lot of religion about what I program in. They all have strengths and weaknesses, good and bad.

So it came as no surprise when a very knowledgeable technologist asserted to me that a good programmer could write code in any language. As expected, I agreed. Being a polyglot programmer myself, it certainly seemed correct. At the time it did. But maybe...

Since then I've come to believe that you can write a program in just about anything but not write code professionally in more than a few. Modern coding requires more than just understanding computer languages. With the exception of a few outliers like LISP and SmallTalk, most computer languages fall into a handful of syntax groups. Java, C++, C#, PHP, and Javascript are so similar that it's hard to imagine any experienced programmer not getting the basics.

But only the basics. The problem lies in what it takes to be a productive programmer. Understanding how to program a computer or write in some language is less than half of what you need to know to do it professionally. Enterprise applications especially are built around entire frameworks and environments.

Take Java. There are several graphics built-in libraries such as AWT and Swing. It has a rich set of general collection objects with the ability to adapt them to any type of object using simple syntax. There are lots of utility, security, reflection, multi-threading, and database connection classes. That's not even getting into Enterprise JavaBeans (the middleware/SOA framework) or servlets which are used for web programming. Keeping up requires books, training, and on-line resources. You have to focus on staying current with changes and new additions.

This is where the difference lies. There is Java the language and Java the development environment. C++ is a language but C++ in the .Net environment is what you write code in. It's very difficult to focus on being expert enough to be a productive in more than one of these complex environment. This is why you see programmers with so much religion around their languages and environments. .Net people can be passionately pro-.Net. Java people can be Java bigots.

It's a natural side effect from all the effort that goes into being expert enough at something to do a good job with it. It's not that one environment is better or worse – all have their strengths and weaknesses. The demands of being productive in any particular environment require that you focus all of your attention on being good at one thing. You can switch languages and environments but it's like switching religion. It can be done but it's a process that will take time, effort, and will.

So, I take back what I've said in the past. A good programmer needs to have religion. Not religion in the sense of unquestioning zealotry. Religion as in a deep devotion to their craft and a singular focus on what they are doing.