30 Jul

Programming in the Tablet era

After a long hiatus, I am back to doing desktop development full time.  No more WebForms, no more ASP.net, no more browser incompatibilities…at least for now.  Unfortunately I’ve found the desktop world has changed a bit since I last left it.  Tablets have entered the market, small form factor PCs that are no bigger than PDAs of yester year running WinXP Tablet edition or Vista.  Where did those come from?

But with new challenges come new opportunities.  Lets talk about some of the interesting opportunities of these devices.  I’ve been working with them for a while and I’m convinced they are the way of the future, but not without their drawbacks.

1.  They are small.  A big screen on one of these babies is 13 inches!  Plus they are still running at 1024×768 resolution.   What this means: be very careful with how you use screen real estate, and up your font sizes!  In fact, you need to make everything a bit bigger.  Something that I try to do is to use more graphics on my applications so the screens “seem” like they are doing more to the user, but get away with doing less.  Pretty is just as big a selling point as useful.

2.  Touch screen. Forget about the keyboard and mouse (often they are not there).  Users are going to interact directly with the screen with either a stylus or a finger.  An issue to realize is that those stylus thingys are not that precise.  You put the pen down and the cursor moves real close to were you are touching, but not quite there either.  I was just playing with a store model today and was having a heck of a time hitting the Start button.  Again from point 1, make things bigger.

3.  Right-click menus: Don’t use them.  I know, I know, the right-click menu is a windows institution.  That is where the power users went to get things done.  That is where programmers put stuff that they can’t find room for elsewhere.  In fact, I’m often disappointed if I don’t see a right-click menu.  Back to Point 2, no mouse, no right-click.  Actually there is a way to do a right-click with a stylus — depending on the stylus, but I consider it technologically beyond the capabilities of the mortal computer user, and probably beyond your abilities as well.  Just pretend right-click menus don’t exist.  This isn’t that new BTW, web developers have had to work without a right-click menu since forever. You can manage.

4. Keep the UI simple.  Don’t be writing kitchen sink apps.  This mean exploring different UI paradyms.  Currently I’m playing with the Ribbon control on my app instead of the traditional Menu and Toolbar (I’m using the one from Developer Express).  It is simply amazing how much you can pack on that thing.

5. Embrace WPF.  You don’t have to do a full embrace, a man hug will often do.  WinForms 2.0 has this cool control call the ElementHost control that can host WPF.  For my current project I’m using a control called the InkCanvas.   That thing has saved by butt, and I will write more on that later.  But again, this is about doing more with less, and wpf can excel at that is used appropriately.

6. Don’t rely on ANY infrastructure if possible.  Netwrok? Maybe. Internet? Probably not.  If there was internet you’d probably be writing a web application.  When working with one of these devices plan on not having any network connection at all, or only infrequently.

7. Speed, power, ram are an issue…but nowhere near as bad as with compact devices (e.g. phone/pda devices).  You still get ram and real hard-drives.

That is my list for now, I’m sure I’ll come up with more later, but it is a good starting point.  But my key take-away from all of this is that desktop development is far from over.  .Net capable devices are still advancing faster than web technology (IMHO) and the capabilities keep growing.  They are cool as well.   But there is one test for these devices that still fails for me.  While I like to develop for tablets, I still don’t want to develop on a tablet (the screen is too small).