Today is a good day to code

The Post Tablet Era

Posted: July 30th, 2011 | Author: | Filed under: android, Apple, Companies, Google, iPhone, Lifestyle, Media | Tags: , , , , , , | No Comments »
google chromebook


The tablet entered with a huge bang a few years ago.  It was staggering, Apple sold in an incredible number of iPads and forced all of the netbook manufacturers and Google to scramble to produce and release a tablet OS, namely Honeycomb, that was arguably not ready for release.

The result with both the iOS and Honeycomb are two excellent tablet OSs, and Ice Cream Sandwich promises to be a stellar tablet and smartphone OS.  What I have been discovering over the past year plus using both versions of the iPad and the Galaxy Tab 10.1 is that I don’t really need a tablet for general computing.

This is surprising to me.  I built an IDE for the iPad and iPhone after all, and found myself using my own product more on the iPhone for quick edits than I did on the iPad.

I watch an awful lot of netflix on the iPad, and I play games most of the time that I am using it.  I have found that with the Galaxy Tab, my patterns are much the same gaming, watching videos, occasionally reading ( although I still prefer my Kindle hardware to the tablet versions ).

So I am coming to the conclusion that the pundits were right initially, tablets are clearly for content consumption, not content creation.  The reason, however that these devices are not suitable for content creation is worthy of debate, and is an issue that I’d like to take up now.

Natural User Interfaces

The user interaction that most tablets sport as the default is something that is being called a natural user interface, that is an interaction that uses some of the users other senses, such as motion, to perform an on screen action.  The current crop of tablets mainly use touch instead of a dedicated hardware component to facilitate user interaction with the interface.

This lends itself obviously to gaming, and a “kick back” experience of sorts.  The user can use touch, or the gyroscopes to control a character on the screen, this makes logical sense to just about any user.

As an example, many role playing games have a 3/4 view of the game board, that is, the camera is typically at 5 o’clock high, or somewhere thereabouts.  The control scheme for most of these types of games is to touch a place on the screen to send the character to that location.  Role playing games work particularly well on tablets for this reason, they are almost better with a touch interface than a controller.

As another example, car racing games use the accelerometer in the tablets to control an on-screen car.  This works well, unless you are in a position in which your motion is constrained, such as the bed, most of these games provide some sort of alternate touch based interaction that replaces the accelerometer based input.

The problem with using on screen touch points in auto and first person shooter games is that the controller now covers part of the screen, or your hands end up covering important parts of the game world, causing the player to miss part of what is happening.  I know that in my case, it takes away from the FPS experience and makes it so that I typically don’t buy those sorts of games on tablets, but instead prefer to play them on a console.

Natural user interfaces only work when the content is modified such that the user can interact with it sensibly using the available sensors, gyroscope, touch screen, microphone, et cetera.  In a famously bad case of using a natural user interface to interact with content from a platform that uses traditional input, Numbers presents the user with a typical spreadsheet like the one you would find in Excel for your Mac or PC.  The issue here is that Apple didn’t modify the presentation of the content such that it matches the platform.  Arguably there is no way to do this in a form that makes sense.

The interface for Numbers features beautiful graphic design elements, and is generally pleasant, but when you tap on a grid element, a virtual keyboard pops up and you are invited to type into the fields.  Apple has made a numeric keyboard interface which is pretty nice, but anytime you display the virtual keyboard, you haven’t thought hard enough about the problem.  Displaying a grid of content is not useful on this device, it is amazingly useful on the desktop, but it just doesn’t work here.  Inputting large amounts of data is frustrating, and the virtual keyboard makes mistakes all to common, either because of mistyping or the misguided autocorrect.

Modifying Content for the Natural Interface

Most of the people who are buying tablets today appear to be tolerating these issues, my belief is that they are doing this because tablet computers feel like a piece of the future they were promised when they were children, useful or not.  Eventually, they will likely stop using their tablets at all in favor of ultralight laptop computers, or they will relegate the tablet to the living room table as a movie watching and game playing platform.

It is possible to make significant user input acceptable on a tablet, perhaps even pleasurable, by using a bit of creativity.  First, they keyboard is a complete failure.  It has its place, but in most cases it can be replaced by effective gesture (non touch ) and speech recognition.  This is the only viable way for bringing large amounts of content.

On the visualization front, using our example in Numbers, perhaps a flat grid is not something that makes sense on the tablet, maybe we should send the data to a server for analysis and present it as a series of graphs that can be changed by the user, manipulating the graph directly with touch actions, or with spoken commands.  The result of the changes would flow back into the spreadsheet, updating the numbers behind the visualization.

Many would argue that this would not be a rich enough interaction for some of the complex spreadsheets, pivot tables, etc… that they work with, indeed, it likely would not.  Most of these users would not perform these actions on the tablet, instead they would use a MacBook Air, or other lightweight laptop computer.  It takes a huge amount of creativity and intelligence, as well as significant amounts of computer power to manipulate data in this way.

Imagine a speech interface for a word processor that could use the camera to track your facial expressions to augment its speech accuracy.  It could, and should, track your eyes to move the cursor and ask you to correct it when you make a bad face at a misinterpreted sentence.  An application like this could make word processing on a tablet a wonderful experience.

The technology to do most of these things is here.  It is either fragmented with each part patented by a different company, some without any sort of tablet such as the Microsoft with the Kinect.  Or the effort to produce a piece of software to utilize the features of tablet computers to best effect is too great to justify the investment.  For example, doing that sort of work for a word processor doesn’t make sense when people will just jump over to their laptop to use Word.  Would anyone pay $100 up front for an iPad word processing application?  I don’t think so.  Would anyone pay $25 per month for the same application as a service on the iPad?  Its equally doubtful.

What you come to eventually is that, for interacting with content that either naturally lends itself to, or can be easily modified for, the tablet, it is fantastic.  Currently, however it is severely overpriced for how it is being used.  After all, you can get a fairly cheap notebook that can play Netflix and casual games for $200, or 1/3 the price of most tablets.  If you have to carry your laptop anyway, why would you have a tablet at all.  Why wouldn’t you take the Air with you and leave your tablet at home.  It can do everything the tablet can do, and it also can handle any of the content creation that you care to try.

Thinking about the situation, we need to find better business models that will allow for the development of applications that can handle the modifications to content that we need for tablets to be generally useful.  This will take a while, and in the interim it is likely that some companies will produce tablet hybrids, the ASUS Eee Transformer is one tablet that comes to mind.  It is very popular, runs a mobile tablet operating system, but becomes a keyboard wielding notebook in a second.

The Google Chromebook is another example of a lightweight, even in software, laptop that can do most of what a tablet can do, as well as most of what the typical laptop does.  In my own use, excluding building applications for tablets, I always reach for my Chromebook instead of my tablets.  All of this is excluding the huge difference in the difficulty of building applications on the platforms.

Writing applications for tablets is extremely hard with a doubtful return on investment, unless you are making a media or gaming title.  While writing applications for the web is easy and potentially extremely lucrative with many variations on possible business models, and little interference from device manufacturers.

I am starting to think that Ray Ozzie was right when he said that Chrome OS was the future.  It feels more like the near future than the iPad at this point.  The tablet will always have its place, and perhaps with significant advances in natural user interface technology, with accordant price reductions it will start to take over from the laptop.  I am fairly bullish on the natural user interface over the long term, but at the same time I pragmatically understand that we aren’t there yet.  The devices, software, and consumers have a lot of work to do for us to really enter the era of the computerless computing experience.  I am committed to getting there, but I think that the current crop of tablets might be a false start.

Hands on Review of iPad Vacation Update

Posted: April 15th, 2010 | Author: | Filed under: Apple, iPhone, mides | Tags: , | No Comments »

For the past week and a half, I have been on vacation with my family, my iPad had come a day before we were scheduled to leave. I wanted to write an addendum to my earlier quick hands on review since I have had some time to work with it for a few days.

In many ways, the iPad is a breakthrough device, changing the game as far as usability as well as functionality. But for someone like me, a software developer, it misses the mark a bit.

The only significant bug I have encountered while on vacation is the Wi-Fi bug. It has bothered me at almost every hotel, with the device frequently failing to connect to the netwok, or to obtain an ip address. Otherwise things have pretty much worked as I had expected.

Without the ability to use Xcode, let alone GCC, and with the prohibition on downloading and executing additional binaries, however I haven’t been able to fix simple bugs with my iPad / iPhone application, Mides.

Right now, for someone like me, the MacBook Air, 13″ MacBook Pro, or my old trusty 15″ would be much better. For the weight, the MacBook Air would be a much better travel companion for an Objective-C coder.

I have been able to do a bunch of JavaScript / CSS / HTML work with Mides on the iPad, thanks to the Bluetooth keyboard, but serious software work will not really be practical on this device.

However, as a media consumption device to keep the kids happy, this thing has been awesome. The netflix, and other streaming video applications, has been fantastic, when the wi-fi worked. The 3G version should take care of the wi-fi issues, via not using it, but I am looking forward to the 3.2.1 update.

I’ll write another more comprehensive review, when I get back, as well as using my MacBook Pro to get Mides’ bugs fixed.

Mides 1.8.1 Endless Keyboard Popup Issue

Posted: April 9th, 2010 | Author: | Filed under: Apple, Companies, iPhone, mides | Tags: , , , | No Comments »

The Mides 1.8.1 release should have fixed a bunch of the startup, and SFTP stability issues, but there was one lingering issue. The endless keyboard popup issue. The fix is to disable the “Twist to complete” feature in the iPad settings app.

The reason this is an issue is that the accelerometer values for the iPad are way more extreme than the iPhone due to it’s size, so the code that I had to ignore small movements of the device is not working on the iPad. I will remove twist to autocomplete for the iPad in a future release as it doesn’t make sense for this device, and since there is now a button for it.

This issue shouldn’t affect the iPhone, it is an iPad only issue. There was no way to find then issue before I had hardware since the accelerometer is not available in the way I need on the iPad simulator. But at least there is a good workaround.

Hands on Review With The Apple iPad

Posted: April 3rd, 2010 | Author: | Filed under: Apple, Companies, iPhone, mides | Tags: , , , | No Comments »

Today at around 9 AM my opinion of the Apple iPad changed. In one of my previous blogs, thoughts on the apple iPad, I commented that I wouldn’t buy the iPad if I weren’t a developer, and if I hadn’t I would be seriously disappointed that I hadn’t.

The first thing that I noticed was that the iPad feels really sturdy. It feels as strong as s piece of solid aluminum. The on screen keyboard is pretty good, in fact, I’m using it right now to create this post. But using the Apple Bluetooth keyboard with it makes it clear that this thing has the ability to replace my laptop for most of the reasons I carry one. My own app looks great, although not without it’s minor bugs. A friend found a way to get into an endless loop with the code completion dialog. It took me a while to figure out a work around, it turned out to be changing the orientation.

Browsing the web is just …. Natural … There is a quality to using the web on this that is difficult to describe, but it is like nothing else. I would recommend that if you can wait, the 3G version would be better if you don’t mind AT&T, and you don’t mind paying them extra. If you do not have an iPhone, it may make sense to pay the extra. If you do have an iPhone already, then it just doesn’t make a ton of sense to me. I will probably get a MiFi somewhere and just sign up for a contract.

I would recommend getting a case as well. While I am not afraid that it will break, it is bigger than it feels in your hands and as such is a pretty likely candidate for some unintended bumping. The battery life is stellar. I don’t even think about it, and at the end of the day I still have 47% power.

The app situation is pretty unclear. I added a bunch of apps to my iPad hoping that more of them would have been optimized for the iPad. But it seems that most developers opted to create completely separate applications for the iPad. I was going to do that as well, but I didn’t want the headache of having to maintain two separate applications with the same functionality. The doubled applications range in usability. I found that most of the applications were very usable in their iPhone form.

In summary, my opinion has been changed. The iPad is a game changer. Mides on it is excellent, especially with the bluetooth keyboard. The iWork suite is fantastic. I love this form factor, it feels like you are playing with the future. It is also awesome to be able to stream episodes of Top Gear on my iPad with the Netflix app. I am glad that I got the 16 GB version, I really find that I don’t need more storage since I always have my iPhone with me, I haven’t found that I run out of space, especially with the convert to 128kbps AAC option in iTunes 9.1. Since this is a first impression, I’ll check back in after my experiment to see if I can live with the iPad instead of a laptop for a couple of weeks.

Mides 1.8 Release

Posted: March 29th, 2010 | Author: | Filed under: Apple, Companies, iPhone, mides | Tags: , , , | No Comments »

On Thursday I submitted Mides 1.8 to Apple, hoping to get it in for the big launch of the iPad store. However, it got kicked back to me because the reviewers approached it in a pattern that I hadn’t tested. They exposed a bug related to some #ifdef code that had hung around after my refactoring.

While I am disappointed that I didn’t make it for the launch, I am happy that Apple found that bug before my customers did. I have since fixed that bug and fixed some other minor issues related to SFTP. So all in all, this release should be a really good one. Unfortunately I’ll have to wait a few days to resubmit until my iPad comes in the mail. It’s better to test on real hardware. I could sit here and pretend that I didn’t want to release until I had the device to make sure that I had everything just right, but I am too honest for that.

I think that this is a huge launch and would have loved to be there at day 1. Suprisingly I just missed the 2.0 launch in much the same fashion. But I was in the store about a week or two later. Fortunately we won’t have to wait that long this time.

The announcement that Apple was accepting apps before the hardware shipped caught me by suprise. I thought they would make everyone wait until the device was out. 1.8 is a very ambitious release, trying to get SFTP and the iPad refactoring into it.

I’ll probably keep plugging away on 1.9 until I can resubmit my 1.8 branch. Mides on the simulator is awesome. I can’t wait to load it up on my shiny new iPad, I can’t wait for everyone who is supporting and using mides to do the same!

*EDIT* 4/2/2010

Mides actually will make the launch of the iPad app store.  In fact, it is in there already!  I am super jazzed to have a launch title on the AppStore.  The iPad version is pretty cool.  Just having more screen real-estate is huge.  I hope that there are no strange bugs.  Once I get my iPad on Saturday, I’ll sanity check it and try to fix any bugs that I notice.  Apple did pretty good due diligence on the app though, so I figure it is OK.

What if Apple’s Vision of a Modern Platform is Right?

Posted: February 8th, 2010 | Author: | Filed under: Apple, Cocoa, Companies, Google, iPhone, Microsoft, Objective-C, Programming | Tags: , , , | No Comments »

This past weekend, I was thinking more about the iPad.  One of the thoughts that kept coming back was about the iPhone / Cocoa Touch development ecosystem as a platform, and how that looks in comparison to existing platforms.  The conclusion that I came to was a bit disturbing to me as a developer concerning the future of application development in general.

It is somewhat useful to quickly recap the development environments of the past to contrast them to today.  First we need to talk about Microsoft and what a platform meant to them.  To Microsoft, the computer was a tool for technical users.  Even if their said goal was to put a computer on every desk, the engineers clearly have and had difficulty putting them into the place of their users.

As the computers’ abilities increased, so did their complexity, and the complexity of the OS.  Doing simple tasks like taking a piece of text from a word processing program and putting it into your spreadsheet program in DOS was mostly ridiculously complicated.  Windows made things a bit easier initially, but only for the most technical users.  Doing what should be mostly simple tasks were still difficult, DOS was still around and necessary to do many common tasks.  The thing booted from DOS which created no end of problems.  It just wasn’t an optimal solution for the mass of computer consumers out there.  This was evinced by a proliferation of “computer” classes which were supposed to take the burden of designing something that was easy off of the engineers who designed the system.  That it did, and they proceeded to make a system that was even more of a tangle.

For those who would say that the Macintosh is much easier, I take issue with the word “much.”  In reality Unix / Linux / Mac OS X.x is not terribly easy to use.  To someone who has a good understanding of the computer, and conventions it is much simpler and more straightforward to use and manage.  For a technical user Apple does a fantastic job of making most things that normal people want to do easy without preventing technical users from doing complicated things, but the underlying complexity is not without its cost to the typical end user.

Now, if you were designing a platform today, for millions of people worldwide, with different levels of technical ability, the issue of computer and operating system security looming large, and the ever increasing abilities developers have to make computers do insanely complex things in the blink of an eye, how would you develop it?  Would it be like Windows, putting the burden of learning, understanding, and protecting themselves on the user?  Would it be like Unix / Linux, putting the burden of everything on the user, but exposing incredible levels of customization to the user?

What you would do would depend on what your goal was, but if your goal was to provide the best possible user experience, you would likely ( I know that I would ) take it upon yourself to protect your users from viruses, phishing, hacking, malware, etc…  You would likely make it difficult or impossible for developers working on your platform to make choices that would negatively impact the usability of the platform.  You might choose a somewhat difficult language combination for development to make a barrier to entry for developers, to make sure that the developers that did create for your platform were of a caliber such that they could actually make compelling content for your devices.

You might establish a certification board of some sort to determine if the applications being developed for your platform met your requirements for ease of use, stability, and security.  You may come to the conclusion that the only way to enforce your vision of the platform and be the ultimate consumer advocate, you would have to make sure that every application went through this board before they were available on your platform.  Once available for your platform, you might make the installation and configuration experience as painless as possible for the user, even if it meant imposing further complexity of implementation on the developer.

Does any of this sound familiar.  When I went through, designing a platform as a consumer advocate, what I ended up with was pretty much like what Apple has for the iPhone / iPad / iPod Touch development environment.  With one exception, I was actually more stringent in that I wouldn’t allow wapletts ( web application applets ) on the platform.  I would require those developers to just build a web application customized for the experience.

The funniest thing, or strangest if you don’t like that colloquialism, was that designing the platform as a developer, it didn’t look anything like this, in fact, it looked much more like the development experience around Ubuntu linux.  Where I ended up is that perhaps as developers, we are heaping too much responsibility on the average user trying to use the platform.  I think that Apple has the right mix with the app store experience for the types of devices that are running the Cocoa Touch framework on Objective-C.

That being said.  I don’t like it.  However, I understand it, and the UX / UI Designer at my heart rejoices at the emergence of this paradigm, where the responsibility for security and workflow consistency are on the developer, not the user.  But the programmer in me rebels at having someone tell me how to design and implement what I want on my device.  Having someone lord over me as to what is an acceptable software application is irritating to say the least.  I think the UX designer, and consumer advocate in me wins, and there are platforms like Mac OS X that I can work on to satisfy the programmer urges in me.

I predict, however that Apple will do away with the use of the existing Mac OS X on the MacBook,the iMac, and the MacBook Air.  I think they will start running this Cocoa Touch OS with all of the restrictions and HIG guidelines as the iPhone.  I think that there will be an app store for these devices, and I think that it will be the only way to install software.  Seeing iWork on the iPad is the first example of the migration of Cocoa Touch to a full fledged computer operating system.

Apple will probably, keep the MacPro line and the MacBook Pro, perhaps adding an iMac Pro running Mac OS X.x in the way we have always come to expect it, and it will likely become even geekier than it already is.  The most floor slapping, hilarious thing is that Apple has come full-circle to an old Microsoft idea that was right on, however, big surprise, was improperly executed.

Originally Microsoft had its Windows Professional and Home lines, they had Windows 2000 for business and Windows 98 for home users.  The concept was that they wanted to have a much simpler OS for normal consumers and a much more complicated, and powerful, platform for businesses to use.  Apple has slightly turned this on its head, they, in my humble opinion, want to have a platform that is an awesome one for media consumers, and general consumers, and a platform for the programmer geeks that have made Apple what it is.  It is for that reason that I anticipate a iPad Pro soon after the launch of the iPad, perhaps even as soon as WWDC ’10.  The iPad Pro would likely run a Cocoa Touch OS that was less restricted, and more like Mac OS X.x.

Ultimately, I think Apple wants, and will make everyone happy, but we are at the beginning of this incredible consumer platform, and I think that for its stated goals, the App Store, the “awful policies,” et cetera, are the best possible way to get to it.  However, I think for its perception among geeks, Apple needs to communicate their strategy as soon as possible.  If they intend to make all of their devices like the iPod Touch, then we have a problem.  However, this is extremely unlikely.  I can’t wait until WWDC this year!

Thoughts on the Apple iPad

Posted: January 28th, 2010 | Author: | Filed under: Apple, Companies, iPhone | Tags: , , , , | 1 Comment »

First off, let me say that I am an apple fanboy to the highest degree.  Prior to today, there has been only one Apple device since 2001 that I have not really wanted in its original form, that product is the Apple TV.  Today, there are two.  In the rest of this post I’d like to explore why I feel this way.

There are bound to be many, many people who will find a tablet like the on Apple described yesterday to be wonderful.  I am coming from a slightly different place, as I have a MacBook Pro, an iPhone, and a Kindle.  What I was looking for was something innovative enough to replace all three, and the tablet isn’t it.

Looking at my needs for a portable computer, we can eliminate the tablet right off.  It can’t run GCC, it can’t run clisp, PHP, etc… So for me as a developer it isn’t practical, as a writer, it is.  Between iWork’s pages and the keyboard attachment, it will make a fantastic transportable word processing device.  The biggest problem with this is that I can’t run openoffice or word.  Not that I would necessarily want to, but if all of my files are in word format, and Pages mangles them, then this is a non-starter.  Also, without the ability to move files easily onto and off of the device, I’m sure there will be a mobile me tie-in here, it just isn’t as flexible as my laptop, ahem… netbook.

On the smartphone front, this device is way too big to put into my pocket, doesn’t have a camera, and doesn’t support standard cellular voice.  Of course I could use skype, etc… but sometimes, for as much as we complain about AT&T, it is nice to just make a regular voice call and have it not be complicated.  On top of that, since it doesn’t tether to my iPhone, something that I should be able to do just in general.  Instead, I have to, on top of the data plan that I already pay for for my iPhone, pay an additional $29 per month to use the internet.  The 250 MB plan is a joke, as soon as I watch a few Hi-Def youtube feeds, I will have gone through it.  This doesn’t replace my smartphone, iPhone.  It doesn’t even really work together with my iPhone.

While the iPad, even with its unfortunate name, has a really beautiful ebook reader application.  The books are way more expensive than the Kindle, and the screen is still a backlit LCD.  I can read my Kindle just fine in the high-noon sun, which I do a lot.  I can read my kindle with no problem at the playground with my kids.  I can’t even see what is on my laptop in the sun, perhaps the iPad will be better, but it doesn’t even come close to the readability of the Kindle.  It is great that the battery life on the iPad is 10 hours, I can’t look at the screen reading text for that long.  So it doesn’t really replace the Kindle in its current form.

Overall, it is awesome at some things, but it doesn’t really replace what I have, is it better at browsing the web than my laptop with a 3G card?  No, not really, I can use Verizon or Sprint 3G, I’m not stuck with AT&T, I have the choice to use Firefox or Google Chrome, I’m not stuck with Safari.  I like Safari, but Chrome and Firefox have better features.  Is it better at media, since I tend to consume a lot of audio podcasts, no it isn’t.  For users like me the iPad is just what I hoped it wouldn’t be, its a big iPod touch.  I already have an iPod touch and an iPhone and a laptop.  There is nothing that the iPad does that would make me replace any of them, not even the iPod touch, since I can actually put that in my pocket and take it with me.  There is also the neck pain that comes from looking down into your lap for 4 hours that we have all felt from playing games on the iPhone.

I don’t intend to buy the iPad, at least in its current form.  I was really hoping that Apple would come in and do something super cool with gestures or something to make that form factor work, what they have done is smart in that they aren’t really challenging the other markets, they are trying to make a niche that is there own.  I think the super wealthy digerati will buy this, and some people who don’t already have an iPod Touch or a Kindle, or even some people who don’t have a laptop, but most people will still spring for the $300 netbook over the iPad.

It has dawned on me though that the iPad is a megaton bomb on Google’s Chrome OS hopes.  iPad Safari will be able to run all of the google apps in the same fashion that Chrome OS likely will, from an icon on screen, so to the majority of users they will be the same.  Google does have one advantage, and that is its openness.  Google is talking about allowing NSAPI plugins that run native code on the platform, Apple can claim that one could just write a native application, but it doesn’t allow augmenting the web browser to provide additional functionality to web applications.  The lack of openness could end up biting Apple as we transition all of our desktop environment to the web.