Motoblur Android 2.0 Update, please Googlefy it Jha.

Unfortunately, Motorola has decided to leave a gaping hole in their Android device offensive.  Motoblur is a great technology.  I have a Cliq/Dext and I love how when I press menu something happens in less than a minute.  However, I don’t like the fact that even G1s have a later version of Android than me.  Also, I have heard that Android 2.0 solves a lot of the problems that I had with Android 1.X.  However, I have no way of knowing that because Motorola has chosen to have the Droid be the only “Google experience” Android device.  What this leaves for users like me is frankly unclear.  As a developer, I know it will take at least 3 months for integration work for a new Android platform to take place before they can do an update for my phone.  However, its been more than 3 months since Donut and no OTA from Motorola.  This could mean one of many things

   1. Motorola has slow developers or they had a problem updating Motoblur to 1.6.
   2. Motorola has no intention of doing incremental updates and is working on an Eclair 2.0/2.1 update around February timeframe.
   3. Motorola is still using the old phone development model and is going to wait a year before they come out with a version .1 of the Cliq and do an update for all devices then.

Of all these possibilities I hope it isn’t 3.  This would indicate that Motorola’s Jha may be missing the market.  The pace at which things change is quickening for everyone.  I can see how it is hard to appreciate that users would be impatient with a device that isn’t updating every 6 months when people used to keep phones for 3-5 years with no update.  However, this is a critical failing.  Bluntly, customers want the latest and greatest and they want it for free.  This is actually why the on-line pornography business is going to implode.  Any sector that had its hopes set on a stagnant market with the same customer demand for years in software is going to die out.  Google is demonstrating this to the world everyday.  If you don’t accept the Goggle model of continuous, free updates then you are dead in the water as someone else will.  That someone else will have your customers the next time you are late with an update.  Every day there are thousands of competitors out there looking at your products and business model and trying to see how to “Googlefy” it.  That is

   1. Create a better user experience for it that is as easy to use as Google search.
   2. Make use of more data that is “smarter” about how it does things than your software is.
   3. Come up with releases as frequently as they can
   4. Provide it with no costs or at the most a low subscription model (And even subscription models are disappearing as well)

What these means for companies like Motorola is actually pretty devastating in the long run.  The only way to beat Google is to do like Google and hope that you can still bring in revenue in a fashion similar as possible to your current revenue schemes.  Not everyone can offer it for free, but, if you provide 3 out of the 4 things I called “Googlefying” then you stand some chance of a long term strategy.  To be fair, Google hasn’t quite figured out a revenue scheme for all the products it creates, so you may actually be beating them to the game there.

Hopefully, Motorola is working on a 2.0/2.1 release that will probably be a minimal version of Motoblur since Eclair includes so many of the features of Motoblur.  If not, I will likely keep my phone for at least another year, but, to be honest I won’t be able to afford to keep an outdated device for much longer than that.

Computing is getting smaller

Computing is getting smaller.  Ten years ago when you would plan an enterprise system we would plan in terms of how many physical boxes we would need to serve the need of x users.  For example, we would say that to server 1000 simultaneous users we would have one application server box, one  database server box, and two load balanced presentation servers.  So if our client need was 5000 simultaneous users  then we would know that we are talking 5 times of many boxes (e.g. 20 boxes).  This was a significant aspect of solution design and it was very much a limiting factor.  It meant that there had to be time and resources for integration (installing OS, application libraries, and applications on one box is time consuming:  now imagine on 20 boxes) accounted for in estimates.  You had to factor into your solution how much it would cost for the hardware.  That’s why all shops back then usually had large it infrastructure resources on hand.  For you to create an enterprise solution you had to maintain a shop that you would only use for a small portion of your development all year round (there was little outsourcing of it back then).  I am not even talking about something at the scale of a Google or amazon either.  Medium size applications (5000 to 100,000 simultaneous users) would need these resources.  Otherwise you would not be able to create a solution quickly.

The result of all this is that the typical development effort would have a full complement of developers as well as a sizeable on site hardware and hardware staff complement.  It also meant that any discussion of a new solution would require hardware folks in the discussion.  Capacity planning was very much in the domain of the hardware folks.  Typically you would spec out a list of boxes needed and an expected load per box.  The hardware folks would take that and return with a hardware requirements list.  Computing back then was a big effort because even before you started there would be several servers sitting around with staff supporting them.  During the development even more hardware and staff would be added.  Once you were done there would be typically more hardware and staff as well.

Today, we still need infrastructure to support of solutions.  However, the effort is much smaller.  I can seriously say that I can plan and implement a solution on the same scale of a medium size solution from ten years ago without either consulting any hardware folks and without adding a single physical box to my infrastructure.  In fact, depending on my market goals, I may be able to do this without spending a single dime initially.

What has caused this sea change?  A few things.  The first is undoubtedly virtualization.  I can remember the first time that sysadmin and I worked on deploying virtualization software in this infrastructure where I was a team lead.  It was at my request, because I was frankly getting pissed about how long it would take for me to get hardware to just test out new software solutions.  Eventually at that site we got a huge Dell sever with 16 gigs of goodness that ran at least 4 virtual servers.  That sysadmin may not have realized it, but, the moment we got that box my reliance on him to deploy new solutions immediately became zero.  With a few mouse clicks I could configure and deploy a new box and automatically size it to whatever my application needed.  I would tell any sysadmin that if they are worried about job security don’t give a person like me a virtual server to play with as I will likely never need your help with anything ever again. 

The seond thing is cloud computing.  Actually you can think of cloud computing as an obvious extension of virtualization.  However, there is a way in which cloud computing has achieved a sort of critical mass.  With virtualization you basically end up with a bland server that still has to be configured for your apllication needs.  You still have to make that application server provide all the services needed for your application.  If you want a cron type process running in the background then if its a windows box you will have to create a scheduled task or Windows Service.  If you want access to a sql like data access layer you will have to install some db server and then set up authentication and whatever database objects that you need to exist.  The point is that a virtualized server will still need to be configured for your application and that will require additional software and configuration before you get to the point of focusing on your domain problem.  Even for some of the brilliant development tools like Ruby you still have to deploy Apache.  However, the cloud changes that.  All the cloud implementations start out by providing you all the services and abstraction layers that you could ever imagine for creating an application.  Out of the box you begin by working only on your domain problem.  No need for an authentication layer, a job monitoring layer, a message queue layer.  All of these facilities are included.  In fact the only piece of software you will spend much time with is a development tool for whatever language the cloud supports.  E.g. if its the Google cloud you will be using Eclipse running either Python or Java.  Clouds also abstract away hardware.  In fact hardware becomes an abstract concept that is only referred to in terms of CPU cycles or concurrent users.  As a developer you focus on this when it is absolutely necessary:  when your application users need more performance for an already deployed application.

The third thing that has changed can best be described as the growth of XRX.  The web is a platform.  This is also a good way to look at the components that make up a domain model based solution.  In fact this is a natural way to look at a problem in a domain based way.  I wont get into a discussion of why I think a domain model specific way is a natural way to look at problems.  However, I will say that this is exactly the basic premise of all the cloud infrastructures that I have experience with.  The focus is on getting the developer to think on their problem domain and then constructing data models and processes on those data models.  10 years ago if I was planning an application so much time would be spent on specifying hardware, bandwidth, application libraries, etc, that by the time we would get to actually writing in any domain specific way it was usually towards the end of the application effort.  By then any notion of a problem domain was very much influenced by all these other hardware and application library constraints.  Today, the problem domain can pretty much be your only consideration.  Hardware specifications and application library constraints are not a limiting factor anymore.  For a developer it is very freeing as we spend time doing what we should be doing:  problem solving.

Why do I say computing is smaller.  Well its because the effort to create something like a Facebook can literally occur at my dinner table with no more than myself and some other developers involved.  We don’t need a dedicated server team.  We don’t need to spend our capacity planning effort on speccing servers.  yes, there are still giant servers in some data center somewhere.  However, I don’t have to think about that till my app has been up and running in the cloud long enough to necessitate additional capacity that I will then hopefully have enough revenue to pay for.

Are you really Open Source?

I’m a bit groggy and out of it from pulling an all-nighter to build a software that I needed for a client proposal.  I won’t name any names, but, this “open source” product was not easy to build.  First off, when I went to a link that says “download” I was thinking that I was going to see one or more tar gzips.  Well this product had none.  In fact all I could do was to use firefox download manager to download several folders on the svn website for the project. 

Seondly, those files were marked as debian packages and since I was running Ubuntu 9.1 I thought I was cooking with gas.  Those downloads took about 20 minutes and I spent the last week trying to deploy them to no success.  I spent the last week pulling my hair out before accepting that the debian packages were hopelessly broken and not even rebuilding them from the source had any hopes of fixing them.  I went through the torture of downgrading my perl install to 5.8.8 because I assumed there was a library issue.  Actually the core issue is that the dependencies for the debian packages were farked.  In fact, even after adding the developer’s debian site to my Synaptic source list I discovered how broken the packages were:  The two main packages had circular dependencies.  Unfortunately, no package manager on earth can resolve circular dependencies since such a thing is illogical.

Thirdly, after giving up on using debs (and somewhat messing up my perl installation with a polluted deploy of perl 5.8.8–that I must uninstall) I moved to CPAN.  This is where I discovered how truly devious the developers were.  I could understand if someone had not updated their debian and tar gzip deliverables, but, for the CPAN deployment to be broken actually takes some effort from the developers themselves to ensure that the package is uninstallable.  What makes this worse is that to even get to the point of the CPAN deployment I had to download via SVN the trunk for the application.  This is not documented in any of the developer’s documentation.  I am sorry, but, this developer is giving a big middle finger to the Open Source community by not fixing whatever distribution mechanism they are using for their software.  I appreciate the hard work that they have certainly put into this product, but, to deliberately (all my problems were not by accident and were not coincidence, they have deliberately broken the automated build and deploy mechanisms) make it hard to find and use their software they might as well not bothered to declare it “Open Source.”  Open source is not just a phrase, its about a certain respect that developers have for themselves and the greater user community.  A respect that means the developers have faith that others will benefit more from the fruits of their labor rather than restricting use to a chosen few.  Not showing this respect is dishonest and not in keeping with the spirit of the Open Source community.

Seriously, I would have found it easier to download and build the Windows 7 source code than this application.  That is a shameful indictment of this developer and their business practices.  Its no surprise that they offer pay for hosting for the software (I’m guessing the debian packages broke on the same day they announced the hosting plans).

After much hand-wringing, the software finally builds under Ubuntu 9.1.  I have not had the luck of deploying it into Apache, but, I don’t expect much problems with that (though I do expect to have to hack through their setup scripts to make sure files get copied properly).  I had to spend the whole night going through missed dependencies in CPAN (I even had to reverse engineer a few build scripts).  I was considering some sort of partnership with the developer, but, now I don’t respect them enough to do so.  Instead, I will hack their software myself.  Of course I’ll make sure there is a working debian for whatever changes I make available on my site.

Goodbye, and thanks for the fish!!!

Abandoned Yahoo Mail

Its been real, but, I am deprecating my usage of yahoo mail.  The nail in the coffin for me is the continued deterioration of support for my Android phone.  I can tell that Yahoo is trying to get Android users to not use their email client.  No access on Wifi and problems connecting on Tmobile.  They want us to get the picture:  Yahoo doesn’t want us to use a Google device to access their products.  That’s fine except I can’t think of a convincing reason to stick with Yahoo rather than switch to Gmail:
1.  Attachments are easier in gmail and can be larger
2.  Support for my cellphone is non issue.
3.  Gmail has a much cleaner interface.
4.  Integration with Google docs is nice (that’s right, I don’t have to worry about porting my documents from Yahoo docs do I?*

All in all, I thank Yahoo for making this switch so easy for me.  By providing a service that was only marginally better than hotmail it had encouraged me to switch, but, now that they are pushing me away I know to leave before the door hits my ass on the way out.

In the future, email me at my gmail address.

*there is no such thing.

Tomcat 6 and Ubuntu apt-get

I understand the philosophy behind package managers.  It is a major reason I use Ubuntu over say Gentoo.  However, just because I choose to use a package installer does not mean I get an application installation that is mangled.  I suspect there is something wrong with the tomcat6 deb installation that is preventing me from using a particular war. 

1.)  How the hell do I enable logging?  Why do I have to go through several web pages to figure out how to do something so basic in a system?  Why does the tomcat6 manager not have a link to the logs?  Who cares about JLUI and Java.Logging differences.  All I want is a simple log file that I can open up in a text editor and refresh when new entries get created.  Why do I have to go through var/log and syslog to see tomcat debug messages.  Tomcat6 logging is ridiculous.

2.)  Why does a broken deb result in you not being able to install any other deb on your system?  I had to manually delete entries in apt-gets database.  This was not fun or pleasant and they could have easily included that functionality in synaptic.

3.)  Why is this easier to install on a Windows XP box than a fresh Ubuntu install?  Iv’e been a linux user since the early days of Slackware and back then open source software was not easier to install in Linux than windows.  This is a new development for me. 

The king is dead, long live Android

I don’t have to pretend to be a futurist (this has happened before ), but, its worth noting.  As it stands the Apple Iphone is the 8001b gorilla in the mobile device space.  They have over 50 million devices and are racking up record sales numbers every quarter.  However, as they have stumbled in the past, they are about to stumble again.  I am assuming that Jobs prefers having Apple as a recognizable quantity rather than a sizable one.  Apple is going to lose the mobile desktop, just like how they lost the PC desktop. This time, it may be more painful as there are far more investments depending on Iphone dominance.  Hopefully, this post can get some folks to avoid major investments.  The truth is that within 2 years Android and Maemo will be on more devices than Apple currently has in the wild.  In fact, I predict that Verizion wireless alone, will have more Android devices sold in 5 years. 
This is not a hard prediction to make as I have seen the movements occuring in the last year.  I am quite surprised by how quickly Android has matured in less than a year.  I am also surprised by how much better Android is than other phone stacks from its launch.  Android is a game changing platform, because, it is the first mobile stack that gives a desktop experience to the mobile market.  This is a sea change that will be replicated though not with as much success.  The Verizon development was the killer launch for Android.  The largest mobile phone provider in the United States is putting its entire heft behind a single platform. 
The Windows Mobile and Iphone teams must have simultaneously gasped at this announcement.  If not, the end of year reports on Android device sales will.  Let me be the first to encourage Microsoft to enter the Android development business and stop wasting money on a platform that has not achieved the quality of Android’s first iteration in its umpteenth iteration. There will be plenty of room in the mobile device space for all competitors, but, soon it will consist of Android devices and those that are not Android devices.  Android will set the trends and will be the platform to match in order to be successful.  Apple neither has the technical capability nor the corporate mindset to compete with Android. Microsoft is also facing an also ran status, but, will continue to have a sizable market share.  However, it will become harder and harder to justify purchasing an Iphone.

A revolution of simplicity

I came across something today, that promises to change how I develop software moving forward.  Its not every day that you experience something like this.  The particular problem that I was looking into was for how to manage data collection and data quality reporting for a data management entity.  Having solved some problems for them with a different set of technologies (.Net and workflow technology), I was interested in what was the current state in the art (I had developed the core concepts of the solution over a year ago).  A technology of interest last year was Xforms.  There were several problems with using that last year.  Today many of those problems have disappeared so its viability is more promising.  However, while researching this I came across something much more consequential:  XRX:

Forms on the client
REST interfaces
and XQuery on the server

Stayed tuned to this space, but, I am expecting to add this concept to my toolset.  Meanwhile please review the manifesto of sorts:  XRX