Why I can’t upload pictures on my laptop using Ubuntu

I have been a Linux user since at least 1995.  That was the year I bought my first distribution copy of SlackWare 96.  I have fiddled with almost every distro you can think of over the years.  I can remember going through all the dramas with Linux:  the Window Manager wars, the libc mess, the Gnome wars, the growth of Redhat.  During all of these moments I honestly didn’t hold it against Linux that I always needed to have a copy of Windows available to get real work done sometimes.  Linux was usually the best environment to get development work done for Java or LAMP so I never had a problem not having a proper Office Application.  The Dual boot thing was annoying, but, I could get over it with the rock solid stability and close compatibility with other Unixes. 

In the last 5 years I have somewhat settled on using “Desktop” distributions.  My reasons:
1.  Easier to update so I could see new features without having to do some funky configuring.
2.  Less maintenance.  I like to pretend that my computer is not a hobby that requires constant caring and feeding like a house pet.
3.  Easier installation of addons and new software.
I know I’m losing patience with my old age and quite frankly I don’t have the time for spending overnight to get printing to work.

Honestly I was in a state of Détente with Linux because I wasn’t really happy with a few things.  Driver support in Ubuntu has always been atrocious and this distro had some of the best driver support.  I hated how simple things would not work like my HDMI port.  Don’t even get me started on Linux’s lack of support for the Hybrid Graphics in my Dell laptop. 

This weekend I updated to Ubuntu 11 with its new Unity Interface and I just realized that I had been using Linux for 17 years and I was still unable to do something very basic:  Upload images to PicasaWeb that were loaded on my laptop.  First off, all my years mucking about with fstab made me know to load my windows partition as a mounted drive when I installed Ubuntu (that saves a lot of headache, but, frankly why doesn’t Ubuntu mount every partition it sees on the drive automatically?).  So getting to the pictures wasn’t the problem.  The problem was the the new Nautilus interface that popped up inside of Mozilla Firefox was complete indecipherable.  Now, I am something of a UI geek (its why I went to Ben Schneiderman’s school for my undergrad and tried to get a job in that lab) and I have worked with computers with all sorts of weird interfaces (look, I programmed doom into my TI 85 calculator, so I know how to get things done).  Its hard to admit, but, I couldn’t figure out how to get to my windows mount inside the file list window.  I thought I was losing my mind so I tried another browser, but, they all default to using the Nautilus file browser.  I’m sorry, but, after trying for about 15 minutes I gave up.

Good job Ubuntu, I just gave up on Unity at that point.  Its clear they never tested this with any user groups.  I had Gnome running pretty nicely with CompWiz (Desktop Cubes, extra effects, :)).  I switched back to Ubuntu “Classic”, but, I decided to boot into Windows to upload my pictures.  The funny thing is that I see how quickly Android has gotten away from the mistakes of Linux.  For one thing there is only one GUI for Android (though folks implement add-ons).  I find it very satisfying using the stock Android 2.2 Ui on my G2X (drool).  Over the years I have been forced into liking stock interfaces and I can say that Android is a nice one.  The travesty that is Unity is not ready for prime time.  If you can’t bring in a user group consisting of basic users and see how productive they are in using the UI then you can’t make that UI the default.  Regardless of Shuttleworth’s feelings about Gnome the decision should have been made to keep users productive even if you are using a messy code base. 

Starting it up, Verizon Iphone

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.

Verizon IPhone will never happen and here is why.

  • They study BMW and Apple in business school because they are manufacturers who don’t sell the most of products, but, they make more off each sale than any of their competitors. Apple will not be able to make as much off a Verizon IPhone as they do now, so it will never happen.
  • Verizon likes to tinker with the build of software on the phones they sell. For Android phones this doesn’t matter much as you can easily ignore the crap they put on and customize that experience away. However, for Apple is a deal breaker. It will never happen because Apple wants its experience on a phone and won’t tolerate what Verizon wants to “value-add.”
  • Verizon already has phones with better features and a better OS than IPhone. Strangely, Android has surpassed IPhone as the feature elite phone stack. Frankly it will never happen because whatever deal Apple will want to make for Verizon to get the IPhone won’t be worth it to a company that already sells 3-4 of the best mobile devices out there (Droid2, DroidX, Incredible, etc).
  • This story has been reported so many times that it is getting close to become a legend like Duke Nukem Forever or Microsoft giving away computers for customer service reviews. Legends are rarely based on fact so thats reason enough it will never happen.

Google Interests launches

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 Adjusts

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.
        

Problems of being a large company, or why GWT and AppEngine don’t work well together

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.

Linux on free hardware

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.

Google Web Toolkit

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.
2. Develop an app in a productive language like Java and then publish it as raw Javascript.
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.

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.