I am as shocked as anyone that the Verizon Iphone is a reality. Its very good news for Apple. I am not so naive to believe that it will have any impact on the growth of Android. Android didn’t grow because of an absence of competition, but, because of the strength of the platform.
For those that know me personally, I’ve been working on a great platform idea. I wish I could say more, but, eventually it will be all I will talk about. I am happy to be back in the game, its a lot of fun being at the start of something. Its a chance to jump into something exciting.
The first version of one of my side projects is now up on appspot. I created this App, because I wanted a way to conduct data mining of particular subjects that interest me. In essence the app does diffs of Google search requests over time. It gives a way to store and visualize the Google search history of terms. These terms become an “interest” with the inclusion of a NLP element. Terms can just be what you choose, but, the idea is to use an NLP engine to use your search terms and create a better query using some NLP’s engines notion of taxonomy. The NLP component has not been implemented yet, but, the search history has. I’m still working on the guts of this App, so please be gentle.
Its my first GWT app as well so it has provided an opportunity for me to learn a lot. This App is my focus right now since I am using such good tools to develop it and learn so much in the process. I am looking for UI designers and HCIL experts to help me design the interface so if you are interested please drop me a note.
Apple has loosened restrictions on developers writing code for IOS. This is entirely to be expected. Apple is a smart company. They can feel themselves losing their grip on the mobile marketplace. They need all the hands on deck to offshoot this winter’s Android tablet invasion. If this year is any indication, Android will dominate the mobile phone market even quicker than I could have expected. I predicted 3 years earlier this year, but, honestly, with 800,000 of one brand of Android phones selling out in a week and no vendor capable of stocking any high end Android phones, the tea leaves are clear. Apple knows that their last and best has to be the Ipad. If the Ipad doesn’t remain the dominate computing platform for media delivery then all those media houses and Apple are in trouble. But, how could the Ipad be that device. First off, its not the best tablet. Its just Apple’s first successful tablet. That is saying something, but, Apple will not be able to hold off the Android tablet phenomenon. There are going to be at least 10 to 12 tablets with more features and lower prices than the Ipad this christmas. Once the media houses realize that they have to do Android apps as well then Apple is sunk in the tablet market. I have to admit that Apple is going to lose this battle not because their product is second best. In fact, if the Ipad was the most amazing tablet pc ever, it would still be a disaster. No one can compete with multiple competitors offering even the same product for lower prices. This fantasy that somehow Apple has an intuitive understanding of consumers will be proven for the bunk it is. The most brilliant product apple has ever created was Apple OS X. Unfortunately there are literally dozens of oses available (most for free) that offer the same or better features than OSX. That Microsoft Windows is dominant is a reflection of the market saturation of Microsoft rather than any inferiority of the Apple products.
Apple is smart enough to accept that they will lose the mobile phone market. They can accept that as long as they can still charge a premium for their phone device (which is why they will never leave AT&T). What they cannot accept is that ubiquitous computing will leave them behind. Apple is not going to be defeated by an Android sword. Instead it is going to be defeated by a million Android paper cuts. Its a familiar feeling for Apple and it can’t feel good about it. Even I wish it would happen to a worse company.
Speaking of a worse company what the hell is Nokia thinking. Symbian 3’s opportunity was back in 2008 before Android hit the street. The moment the G1 came out the opportunity for a new mobile phone stack to make it pretty much disappeared. Android is literally the best we can do right now for a phone stack. I know it sucks to accept this, but, honestly we should have been able to have something like Android with J2ME and I don’t even know how long ago that disaster was. Android’s greatest innovation is that it is an open source mobile device platform. Sure you can make a better platform. But, if you aren’t willing to give it away you can’t beat Android. I suspect that Nokia is going to undergo a painful market readjustment once the failure of Symbian 3 is accepted. Once they and Blackberry start selling Android devices I will invest in them. Otherwise, they are on the wrong side of history.
I wasted about a week on a known issue with GWT and AppEngine (link). The basic problem is that GWT requires the source of a Java class in order to provide access to that class on the client side. The issue is that age old problem of front end and back end version of objects that you encounter a lot. The fix would be if the App Engine team had done some consultation with the GWT team so that this restriction of the GWT wouldn’t mean trouble for developers using both. As it stands I’m going to use the light version of object solution.
Sucks that this problem exists, but, its what happens with a large company. Two teams go off and do something and the results are a little incompatible. It happens.
I know all the cool kids have dual core OSX boxes, but, I am running Ubuntu on years old hardware (Dell Dimension 2400) as a matter of necessity as well as common sense (imho computers have been much faster than I needed for about 5 years now). Good thing with that is that usually drivers and compatibility are a nonissue as older hardware is the most supported. Unfortunately, I’ve been having an issue with Intel 865 and related chipsets because of the flipside of this equation (old bugs have a tendency to go unfixed for years). I don’t know the reasons behind it, but, Intel Graphics hardware is buggy under Linux. Actually the last two PC’s I’ve had would crash intermittently in Ubuntu 9X and 10X with no explanation. After chasing down blogs, I’ve identified the issue as related to X server crashes. There was also an issue with USB compatibility that seems to have been fixed in Lucid Lynx.
The graphics issue fix seems to be to get any type of video graphics adapter other than the built in 865GV adapter. I got a good deal on a PCI graphics adapter from PNY at Microcenter. When is the last time you bought a “PCI” anything folks? Once I dropped the Nvidia 8400 GS in and went through a slight issue with setting the horizontal and vertical refresh rates I was cooking with gas. The only bug in my ointment is that I now desperately want a second monitor as viewing everything on one monitor for app development is more cumbersome with just multiple virtual desktops.
I’m a little peeved at the Intel chipset Linux issue. IMHO Intel should spend a few bucks ensuring Linux compatibility. If you are experiencing any issues with built in Intel chipsets, don’ t hesitate to buy a graphics or audio adapter and disable the built in one. The issue I was experiencing is actually a confirmed bug in 10.04, but, there is such a bug for every version of Ubuntu related to Intel chipsets. A bug that old has to be related to the hardware manufacturer and is not likely an Xserver issue.
The big boys have another hit on there hands. If you haven’t heard the Google Web Toolkit is out in the wild and even comes with a nice Eclipse Plugin. The link is here (http://code.google.com/webtoolkit/). Very nice stuff and it even offers the ability to use the Google App Engine as host for your apps. The benefits of using GWT are plentiful, but, for my purposes:
1. Allows me to write a snappy looking Ajax enabled app without becoming a JQuery god.
3. Eclipse plugin that enables me not to think about it.
4. Built in support for the Google App Engine (one less thing for me to think about).
5. Did I mention the whole Java thing…That is huge, because you are getting the power of Java in your apps.
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.
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.
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.