Steve Jobs and the rest of the world

Before I say anything, let me say that I have a tremendous amount of respect and regard for Apple and their marketing expertise. This is not a slam, but, they sell 5 year old technology and make more off it than even the creators. Thats not their shortcoming, but, its a recognition of how talented they are at the sale. There is a genius in that. Complain all you want about being outdated and boxed in, but, you are getting a product that reflects the ideals of the packagers better than almost anything out there.

With that being said, I completely disagree with Steve Jobs vision of the world. I prefer freedom and independence even if it means that I have to have more diligence and put some effort into making it my own. As a software developer, I find the latest Iphone SDK odious. I can understand that Apple has an interest in controlling the “user” experience for it’s customers. However, frankly its none of their damn business really how I use their devices. To me, this started with the way they responded to “jail breaking.” For those who don’t know, that was the term for the way an IPhone can be rooted so that the users is able to configure the phone as they like and install whatever software they like. As a customer, I think that if you ask me to pay full price for this phone I have all rights to install whatever I want on the phone. While on the Verizon network I was running a Motorola Q with a nonstandard ROM. Though Verizon had a problem with that they didn’t block me from the network or not allow me to get updates etc. I had a nonstandard ROM because I wanted to use extra features that were in my phone that the Verizon ROM didn’t allow. My ROM did not have any impact on the Verizon network (though some customizations may have an impact). Now I can understand if a company feels that they should not suffer negative impact because of some change to a standard release. However, its usually impossible or difficult to tell ahead of time that a particular customization will have a negative impact. Until someone does it in the wild there is no way for Apple to know what impact some customization will have. What I find disturbing about the SDK is that it makes the presumption that developers will do things that have a negative impact. As a developer I find that insulting, but, understandable. However it is illogical. Without any testing there is no way to know these things. Since Apple isn’t testing nonstandard customizations there is no way for them to know ahead of time. Therefore they cannot jump to the conclusion that customizations will be bad.

This latest SDK is really about Apple wanting to further control customization to the IPhone. It is all apart of how Steve Job sees the world. I’m not going to comment on how valid or invalid his world view is. Frankly people can believe what they want about the world. However, this cannot justify him trying to change the world to fit his particular world view. I want the freedom to use what I paid for however I want as long as it doesn’t negatively impact others (such as Apple). For him to presuppose that something I do will negatively impact is quite insulting and infringes on my rights as a customer. It will only be a matter of time, before Apple’s philosophy about closing the user experience becomes a legal issue. It will already become a market issue. Everyone knows that wherever you find lots of programmers you are now going to find lots of Android phones. It is no accident. Developers all like to flirt with the vision of perfection that is Apple. However, when we roll up our sleeves we want systems that allow us the freedom to customize. For cellphones, Android is that platform. As I have said before, over time this will result in a shrinking market share for the IPhone. As I have said, this has happened before.

Since I know the market will correct the influence that Apple has on mobile application development I am not really concerned about what Apple is doing. Apple is doing the worst to their own interests. The current spat with Adobe strikes me as further desperation. If Apple really believes that they are going to have the market share to direct the future of web application development then they are under some grand illusion. Not even Google has that much influence and Google is probably the closest to having that influence.

What I get from all this is more of the old Apple conflict between Jobs and Wozniak (link). This is actually an old conflict between closed and open systems. As influential as Jobs is on consumer electronics is how influential Wozniak is on software engineering. In the end I believe the bazaar will always be larger than the Cathedral. However, I believe there will always be a Cathedral. The thing is that there will be fewer and fewer people flocking there.

XRX real world example

I know I have been mentioning my excitement about XRX and what it means for web development today. However, I have not gotten into any specifics as to why I think it is so powerful. Recently I solved a problem using XRX and I think its a good demonstration of the power.

I was building a little helper application and for a part of its
processing I need to store some web based data. Since it is pulling and storing data from the web XRX technologies are
a natural fit. I was working with Python since I was doing the initial design for a quick solution. I could have used a regular SQL database to store things. However, a few things bothered me about that:

  • Schema definition for something that I was actually changing a lot. I wasn’t big on firing up some sql management
    tool when what I really wanted was a web CRUD form that was flexible enough to change when my needs changed.
  • I needed to store web based data, so it was easier to store it as xml and to store it in a way that had columns of
    a typical web app (creation date, URI, etc).
  • I didn’t know where all the components were going to be and it made sense to have something that had a rest interface since I could easily access this from all sorts of connection points.
  • I had Orbeon running on my box so it made sense to use that to manage schema and my data.

Because of all these reasons I choose to create an xform model and form in Orbeon and then use the eXist rest interface
to update the model via HTTP puts in Python. Now I know that sounds like a mouthful, but, its actually much simpler than it sounds.

  • I created a form using the Orbeon Form Builder app. This is a web based app for creating xform web apps and models. You can literally create an app in 5 minutes using it. That app will have a data store automatically that has a rest interface. The power of this is that as I can change my model and web app in the same place. As I change it in the form
    builder its immediately accessible via Rest.
  • Once i defined my CRUD app, I was able to insert records based on the model from my python code using HTTP Puts. This was not even 10 lines of code to accomplish storing of data for my app with a flexible data model. I have worked on apps
    where it would take us 3 months to write code to allow such schema flexibility and such loose coupling. Using a REST interface is by the book loose coupling. If you have a unified XSD you could modify only one file to control data schema
    in all places.

Some of this may sound like overkill, but, keep in mind:

  • I’m not sure what my schema will look like yet.
  • Storing to a regular SQL data store would take 5 minutes, but, I would have to rewrite the code whenever the schema changes.
  • I didn’t need the CRUD web form, but, its an easy way to validate all my code by firing it up to see what my
    crawler (what I’m working on next) is inserting into the database.

Couple of kudos are in order:

  • Orbeon is brilliant.
  • Python is the quickest prototyping code that can be put into production
  • REST interfaces allow infinite customizability.
  • Sun Virtual Box is nice stuff.