| Comments

I’ve seen some reports and received some emails on email groups that I’m a part of around Windows 8 and Google Chrome browser and how touch is not working.  In fact I was initially confused about this myself because it was working fine for me on my machine (Lenovo x230t) but other people were insistent that it wasn’t working.  Then I asked what machine they were on.

Almost exclusively everyone was on a “high DPI” machine (or had high DPI settings in their display).  If you have a Surface Pro, for example, you are using a high DPI machine.  I installed Chrome on my Surface Pro and indeed saw the problem there.  After some digging it appears to be that Google Chrome is not yet a high DPI-aware desktop application (at least of this writing which was using version 30.0.1599.66 m – phew that was a mouthful of a version number).

Look at this screenshot.  This is from my Surface Pro with no changes.  I’m tapping on the 2nd image in the news highlights (indicated by the touch square indicator) but notice where the target is actually clicking – on the date “October 4” where the context menu is located:

Chrome missed touch target

I asked around the office and received one workaround, which I received, but also found a better one.  Here are both of them for you to consider.

Workaround 1: run in compatibility mode

This involves you getting to the properties of the chrome.exe program and viewing the compatibility tab.  In there you can check the option to disable DPI scaling:

Chrome compatibility setting

I didn’t like this option because immediately after restarting Chrome the display was crisp but “tiny” to see for my aging eyes.  You can see here is the msn.com site before/after this compatibility setting:

Chrome msn.com before

msn.com on Google Chrome with no compat setting

Chrome msn.com compat set

msn.com on Google Chrome with the compat setting enabled

After this setting the hit-targets are fine and work but the content is small (although admittedly more of it is viewable, but that is too small for me).  To mitigate this you can use Chrome’s zoom feature to zoom to 150% to match most closely the high DPI scaling that automatically happens.

Chrome zoom settings

But there has to be a better way…and is (in my opinion).

Workaround 2: set the Chrome flag for HighDPI Support

I learned that Chrome has “flags” that you can set to experiment with certain settings or override other default/automatic settings.  From the address bar, type “chrome://flags” and you’ll see a page of options.  Scroll near the end and you’ll see a “HighDPI Support Windows” setting which is set to Automatic. 

Chrome HighDPI Flag setting

Force this to Enable and re-launch Chrome.  Boom you are working again.  Simpler fix and gets you scaling on your device as well.  Now some of Chrome’s chrome (menus, etc.) aren’t as crisp still but the main content area doesn’t confuse hit-targeting of your touch interaction because of the scale.

The good part is that it appears that the Chrome team is aware of this and a Chrome bug is logged (Chromium Bug 271222: When using the global Windows UI scaling feature, touchscreen touches are off by the set scale).

I don’t use Chrome on a regular basis (nothing against it, just don’t need it) but do get sad when friends have problems so I like to try to help out.  Hopefully if you are in this case with your touchscreen and Google Chrome this will get you fixed up.

Hope this helps!

| Comments

Well, today I received my Kindle Fire.  I pre-ordered this on Sep 28 when they were announced.  I’ve been eagerly awaiting to see if there is anything that can be a better-priced tablet-like consumption device like iPad.  I absolutely love my existing Kindle reading device.  Love it.  If you are looking for an e-reader device only, you should look no further than the Kindle reading-specific devices.  They are priced so good now that there is no excuse if you are an avid reader and have always wanted one.

Before I get to my “review” I wanted to share a little bit about myself, my usage and my reality with these types of things.  I hesitate to even call this a review because I’m not a gadget reviewer, paid jaded journalist or a fanboy of any kind when it comes to these things.  My allegiance is to awesome products that are practical for me.

I currently own an iPhone 4, iPad 2, MacBook, Lenovo, Roku, XBOXen and a Windows Phone.  In the past I’ve also had an Google Nexus One device but no longer have that (or other Android device) in my possession…until now.  I use my devices for personal use mostly, but as a super nerd…it is hard to say that I don’t use my phone as my communication device for work either.  My usage is mostly consumption.  I look at my calendar/contacts, watch movies, listen to music, read books, take pictures, play some casual games, watch television shows and other Internet TV and read/compose email content.  I am not creating large content, movie trailers, etc. with any of my devices.  I like when things work, are easy to use (or easy to figure out how to work around things when they aren’t easy to actually use) and are responsive to my needs.  I don’t care/know about any clock-speed benchmarks on performance stuff between any devices that I’ve ever owned/used because, frankly, it doesn’t matter.  What matters to me in performance is my perception and expectations…now what a high-speed camera says. 

With all that said, here are my initial impressions after a few hours (not an exhaustive use, agreed) with the device from opening to writing this.  Forgive the thoughts if they seem random…they are in order of my thoughts and usage.  Also forgive some of the Apple comparisons…but I trust you’ll understand them to be valid as they are the king of user experience.


I friggin’ love Amazon packaging.  It is industrial but easy to use, no tools required, and just ‘get to the product’ fast.  I’ve often said I’d love to sit in a focus group and watch all the executives from cereal companies open their product boxes.  The Kindle Fire packaging is just what you’d expect from amazon and with a pull of the cardboard ‘zipper’ I was at my Fire.

Kindle Fire strapped in MoleskineI pulled it out and my gut reaction was huh, this feels heavier than I’d expect for the size.  The size also struck me as small initially…even knowing what the dimensions were.  It is just a bit smaller than my Moleskine that I use…which, in fact, is kind of an advantage as I can carry the two together (surely someone will latch onto this and make an awesome case). 


The one thing that disappointed me was the power cord.  The current Kindle’s that I own have a well-designed power cord.  It has personality, compact and just has that just here to give you power kind of attitude.  The Kindle Fire one feels like I just bought a ThinkPad laptop.  Disappointing.  But I realize this is a power cord…still, just feels like a step back in product design when compared to their existing platform.

First power-on experience

Sorry Amazon, you colossally failed here.  Now I’m not complaining about the speed because my iOS devices take forever from a cold boot.  But I could sense the Android-ness of the boot here.  The logo flashed a few times rather than a consistent image on screen.  This just made it feel unpolished a bit.

But that’s not the part that bothered me.  Immediately upon getting to the first screen, I was greeted with a list of wireless networks.  Very nice start.  I selected the one for my house which is WPA-2 protected and I have a long passphrase.  I was prompted quickly to enter the phrase and presented with a keyboard in portrait orientation (more on orientation in a minute).  The keyboard really felt comfortable in the portrait orientation and I could use it quickly. 

Once I entered my password and clicked next, it immediately recognized me…as the Kindle owner.  And by this I mean it said “Welcome TIm Heuer” and connected to my Amazon account.  I suspect they associated my serial number with my account pre-ship and this was a good touch.  I had the immediate impression that my library of content would be immediately available (more on that in a bit too).  However, this is where it went downhill…fast.

The screen then said it was downloading updates.  W.T.F.?! 

My first impression of a brand new device that hadn’t been on the market was that an update was already needed?  Big time un-polish.  I was not even able to get to any user screen and this update is in my face.  I figured it wouldn’t take that long though…after all, what could need updating already.

I was wrong.

I didn’t clock-time it but I was able to complete the following before the 100% mark was hit: eat a bowl of cereal (already poured), wash my bowl, vacuum my kitchen wood floor with a quick sweeper, go upstairs to take off my shoes and put some slippers on (yes, I wear slippers when I get home…don’t be jealous), come back downstairs, get a drink, get a pad of paper to start taking some notes, and then sit down in the living room.  There are a lot of factors here that could be in play like WiFi strength, bandwidth, etc. but the bottom-line for me was that this was a horrible first impression.

All that aside I figured it was done.  After all, I hadn’t even got to a real user screen yet.  Nope, it rebooted.  Ok, fine let it reboot.  After the reboot I was then presented with an Installing Updates screen.  Seriously?  Man, this was frustrating.

It applied the updates and brought me to the start screen.

Start screen organization

FIrst a note on the lock screen.  This appears to be a portrait-only orientation thing.  This seems odd, but not a deal-breaker by any means…just odd.

After a quick little walk-through on-screen of where things were, I got presented with the start screen.  There wasn’t a ton there but the Facebook logo was prominent as was some simple navigation that was obvious: Music, Video, Docs, Books, Apps, Web. 

Your 'recently used’ items are presented in sort of a bookshelf flip view thing.  Then there is another ‘shelf’ of where you can put favorites.  Fine.

The device doesn’t seem to respond fluidly to orientation changes and the change is abrupt feeling.  There were times I did the shake it a bit because that is supposed to wake up the gyro move to get it to flip.  This is slightly annoying.

The presentation of items in the shelf-flipper-thingy is pretty responsive to navigation in touch, although I felt the number of items it scrolled on a small touch gesture was too much.


Kindle Fire touch pointsI didn’t think I’d mind not having any hardware buttons, but I do.  The lack of a ‘home’ button is kind of annoying especially since the device itself is hard to distinguish the top of it.  Having a hardware home button I think is key.  It is the eject button to get you back home no matter where you are in the device.  Kindle Fire doesn’t have one.

Instead they maintain navigation through a toolbar on the bottom, which does have a home button.  When in apps it can be visible or will be subtly hidden and you have to tap it to bring it up.  It isn’t always obvious, but it is there.  Still a hardware home would be nice.

There are also no volume hardware buttons.  This bothers me less actually.  Most of the time when needing to change volume I’ll be in an app that has these controls or me.  It’s one of those nice-to-have features but I don’t think it degrades the experience too much.

The picture presented here in this section shows you my touch points on the screen used after a few hours…this should give you an idea of all the places I had to touch to navigate in different areas.

Mail, calendar, contacts

I quickly went to configure mail.  Colossal fail #2 for the Kindle Fire.

I was presented with a screen asking what type of account I had.  Sweet, I picked Gmail.  I was then asked my login information, which I provided.  Then I was presented with What kind of account is this? screen and asked to choose POP or IMAP.


I am currently awaiting a phone call from my relatives who bought one of these to have me help walk them through this phase.

This is horrible.  POP/IMAP is not user-friendly things to put in front of users unless you absolutely have to.  I’m not convinced for the major email providers they present as options this is at all necessary.  The problem is clearly that I use Google Apps for my domain and Fire doesn’t understand that.  This is a shame.  I was unable to complete my email setup without looking up settings.  Fail.  Fail.

I then also noticed explicitly on the mail screen that it calls out that you will not be able to connect to a Microsoft Exchange account without buying an app separate for this.  Fail #3 in the mail experience.  Seriously, I realize that they may not cater to Exchange, but iOS supports this as well in their platform!  My suspicion here is licensing…but that is just a guess that Amazon just didn’t want to do work here and rely on the Android app ecosystem…which will fail them.

So in the end I did not set up mail…it is just too cumbersome and is not going to fit my needs.  This is a minor problem as I can use web mail, but still annoying.

There doesn’t appear to be a calendar app at all.  Not just to sync with my actual calendar (which won’t work anyways since I use Exchange), but not a calendar to even look at.  This seems odd.

Contacts is there, but again, no sync. 

Basically this will not be a mail, calendar, contacts device for me.  This is a problem for my usage.

Media content

I do use Amazon media content and am a Prime member.  I have a set of music in Amazon Cloud player and also regularly rent/view movies from Amazon.  The video and music experiences are acceptable to me here for the Amazon-based content.  I have no real complaints.

As I noted earlier when I turned on my device it automatically recognized me as the user.  These media areas are tightly integrated with your account so I didn’t have to “log in” anymore to use them.

There is a Pandora app that came pre-installed and I configured it with my account.  The interesting thing is that when I launched it I was warned about data usage fees.  I realize this is because this is an Android app that is used elsewhere, but it shows the lack of customization tailored to the device.  This is a WiFI only device right now…I shouldn’t have seen that warning.

Hulu and Netflix were my next tries.  I had to go to the Store to download these apps first.  These both installed fine and I was able to configure my accounts quickly.  I actually like the Hulu app.  I think it feels right from a UX perspective and the playback was fine.

Netflix app needs some work.  Frankly it feels like they are wrapping their web site.  It sucks.  It most closely resembles their Roku app, which sucks just as equally.  Part of me suspects it actually is the same app.  The input controls, etc. just didn’t feel like they belong.  Regardless I was able to watch movies.  That’s what counts I guess.


If you’ve never used Android before, then the store will appear unfamiliar in some ways.  I’ve seen this before and was able to quickly navigate, understand how purchases are queued in the background, etc.  I had no real problems here.

What I find interesting is the lack of consistency that Amazon is enforcing in the Fire.  The Facebook, Pandora, Hulu and Netflix app icons are all different sizes.  The Netflix one is clearly their iOS one…as does the Pandora one feels the same.  When these are all next to each other on the home screens in the ‘shelves’ they really do look inconsistent (size, rounded, square, etc.) and some are just blurry.  No attention to detail here.

The other thing I didn’t like about the store was the amount of email receipts in my inbox!  Amazon hasn’t figured out how to batch things.  This is only slightly annoying but after getting used to the fact I can make 10 purchases over the course of 2-3 days on iOS and get a unified one-receipt mail, this is another lack of attention to detail.  Not a show-stopper, just an observation.

Reading experience

This is a Kindle after all, right?!  I’m not an avid reader, but have been reading a lot lately.  My Kindle 3 works great for reading and is easy on the eyes.  I don’t think you can really beat e-ink.  The reading experience on the Fire is much like the iPad.  It’s a glossy screen, very bright, and for long reading intervals probably won’t be great.  I have changed my colors and font sizes to adapt to this.

Other than that the reading experience is fine.  Touch to page flip, etc.  No complaints here.

Be sure to protect your Kindle Fire with a case. Caseable allows you to create a custom case for your Kindle

“Other” category of feedback

Here are just some thoughts on some other areas of feedback

  • touch performance seems inconsistent from app to app and even within the Kindle’s own apps
  • Keyboard doesn’t auto-dismiss in areas where it should for me
  • auto-complete/correct are annoying – this is not a Kindle-specific problem as I realize every system needs to be trained
  • since the speakers are on the ‘top’ of the device, when lying on a desk to listen to music I prefer the landscape orientation and the music app actually looks better in that view, IMO
  • web browsing seems fine. it doesn’t feel as fast as they keep talking about, but so far frankly no browser seems fast to me. I wait for pages to load and deal with it. The Fire browser isn’t fast to me, but doesn’t feel terribly slow either when compared to my real use on iOS Safari as well.
    • Note that YouTube defaults to their mobile site, which royally sucks (unless iOS)
  • Web pages as apps – Facebook and Twitter actually give you icons as “apps” but really just launch the web browser to their mobile site views…nothing special as an app.  If you want a better Facebook/Twitter app experience I recommend the Seesmic app as it will do both in one app quite well
  • The Amazon settings seem to be broken on my device
    • It gave me the option to name my device, which I did, but despite that the upper left corner of my device still reads “Tim’s 3rd kindle” which was the default name…and yes I’ve rebooted a few times.
    • The app has a “Your Account” tab on the top that no matter how much I stare at it or tap it, does nothing.  No idea.
  • No opinion of battery life yet
  • The lack of camera, microphone don’t bother me.  My iPad has these and the camera sucks and I don’t use it anyway.

Overall impression

The thing that frustrates me is that Amazon cut corners here.  They have one Kindle Fire device.  They aren’t saying that Kindle Fire is available on Android tablets…they made one.  Because of this I expected a really tailored experience…and am not seeing it.  You had one platform to optimize perfomance, you owned the implementation of certain things, etc…and you took advantage of little of that.  You put a good start screen on content…but didn’t tailor the other portions…this is a shame.

If you also want to be a serious contender there are also areas you shouldn’t rely on the app ecosystem to fix for you.  I am primarily talking about the ‘work’ side of things.  Seriously, invest in a good Microsoft Exchange story here.  Get the mail client to work with it, make it better than 3rd party apps and create a calendar app too.  Give me, the user, the integration that feels right.  Don’t make me install 2 apps to get mail/calendar and then I have 3 separate apps that don’t integrate with each other *at all* – not good for the user.

For the price point, this feels like a good device for those who want to consume media and books but don’t want to shell out for an iPad.  After using it I am liking the size a bit more.  I think all the arguments of the amount of apps available for the Kindle Fire is a bunch of BS.  It isn’t about the number of apps…it is about the amount of apps that matter.  They big name casual games are there, the big media apps are there, etc.  So far there is only a few niche things that I “miss” but can still live without. 

Will I keep this device?  Not sure yet.  The mail/calendar/contacts thing bothers the heck out of me.  I’ll use it for a few weeks on my normal consumption to determine the realism of if I’ll use it.  I think I will, but need some more real-world usage on may day-to-day life to determine.

If you only want an e-reader, don’t get this.  Get the $79 Kindle or Kindle Touch.  This will be over-kill, confusing and not great on the eyes for *lots* of reading (neither is the iPad).  If you use Amazon services already and want an Amazon-driven experience for that content (books, Amazon MP3/Cloud Player, Amazon Prime, Amazon Instant Video) then this device seems reasonable to acquire for the price.

Hope this helps!

| Comments

One of the new features to Silverlight 3 is the ability to add multi-touch capabilities to your application.  When I posed the question on Twitter, I got some responses of ideas people would use this for.  Honestly most of them could be accomplished with mouse events today and X/Y calculations.  These would be the touch applications that are pretty singular.  But I did get some multi-touch ideas that I think I’ll try to explore.  First though, let’s look at the basics of what Silverlight provides for multi-touch application development.


Hopefully I’m stating the obvious here, but your hardware has to support multi-touch.  And I’m not talking about that fake kind.  I’m talking about hardware that announces the WM_TOUCH messages to Windows.  If you (or your customers) aren’t going to be having multi-touch hardware, then writing against this API isn’t going to help!  I’m currently using the HP TouchSmart TX2 laptop running Windows 7.  I find this to be a good machine and fairly cheap-ish with regard to how laptops are these days and with the features it provides.

The Event

The first thing to understand is how to tap into the touch events from the hardware to Silverlight.  Understanding this at the beginning of your application development can be a critical step.  The key reason for this is unlike other input events (i.e., MouseLeftButtonDown, etc.) which can be added to individual UIElements in an application, the touch event is an application-wide event. 

There is one primary event: FrameReported.  This event is what gets fired when the hardware sends the touch events to the runtime.  The Touch class is a static class for the sole reason of this FrameReported API.  To wire it up in your application you can use code like this:

   1: Touch.FrameReported += new TouchFrameEventHandler(Touch_FrameReported);

And now you have to write your event handler.

The Event Handler Arguments

Once the runtime receives a touch message, the FrameReported event fires (and will do so several times…see later here).  The arguments you get that you primarily need to concern yourself in most circumstances are the GetPrimaryTouchPoint and GetTouchPoints.

The primary touch point could be thought of as the first touch message/point that the runtime received in a current sequence.  So if your application is using single gesture touch behaviors, this is likely what you’d use.  Otherwise GetTouchPoints is going to give you all the registered touch points from the hardware reported to the runtime.

For me understanding the Move event is critical.  If you take a look and add the data to my diagnostic app below for Move, you’ll see that even simply touching your finger in one place fires constant Move commands.

What you get in a TouchPoint

Both the primary and the collection of touch points listed above will return the TouchPoint object, which contains valuable information.  Namely it is going to give you Postition, which is a point relative to the offset you provided in the GetTouchPoint call (or absolute if you pass in null).

You also get the Action of the touch.  There are three actions: Down, Move and Up.  It is important to understand the firing sequence here.  Assume a given TouchPoint, it will first report Down, then it will continue to report Move until the touch is removed, at which point Up will occur.  The key piece in the middle is Move.  This action is firing even if you aren’t moving any element.  It is essentially reporting that you have a TouchPoint that is in Down state (i.e., touched).  Move can be helpful if you are needing to move things along with the updated position of the element.

You also get the TouchDevice which contains some helpful information.  Provided via the TouchDevice is an Id value, which is a unique id provided by the operating system for the device which reported the TouchPoint.  Also provided is DirectlyOver which is the topmost UIElement the position is over at the time the touch was produced.

What about my mouse events?

Ah, good point!  In the TouchFrameEventArgs you have a method you can call which is SuspendMousePromotionUntilTouchUp.  You would want to use this if you knew *for sure* that the end user had multi-touch hardware.  This would prevent the mouse event promotion for the given touch point.  This method can only be called if the Action is Down for the TouchPoint.  Once the TouchPoints all report Up, then normal mouse event promotion would resume.

Putting it all together

For these basics, I decided just to create a quick diagnostic application that would show the registering of the TouchPoint elements, as well as identifying the primary touch point.  My application has registered the FrameReported event handler and then I’ve added some logic:

   1: public MainPage()
   2: {
   3:     InitializeComponent();
   4:     Touch.FrameReported += new TouchFrameEventHandler(Touch_FrameReported);
   5: }
   7: void Touch_FrameReported(object sender, TouchFrameEventArgs e)
   8: {
   9:     foreach (TouchPoint tp in e.GetTouchPoints(this.Positions))
  10:     {
  11:         if (tp.Action == TouchAction.Down)
  12:         {
  13:             // do something
  14:         }
  15:     }
  16: }

The end result is that when the user touches that application surface, we add the TouchPoint to an ObservableCollection that is bound to a DataGrid to show the points currently registered and by which device.  When the user removes the touch action, they go away.

Obviously it is hard to demonstrate touch capabilities in a screenshot and it really does it no justice.  I’m going to do my best attempt here to show you a picture-in-picture view of the application running and me interacting with it via Touch.  You’ll need Silverlight to view this demonstration.


There you have it.  The basics of multi-touch in Silverlight 3.  It’s fairly simple to understand the core mechanics of the API.  What gets tricky is interacting with your application beyond just showing the points :-).  In a future post I’ll show an application that makes use of this multi-touch feature in understanding where the touch occurred in my given application and how you can find the element that was touched (even though it’s an application-wide event).  If you aren’t subscribed, please consider subscribing to my blog for regular updates for Silverlight information.

Feel free to spelunk this diagnostic app code:  MultiTouch_CS.zip (C#) or MultiTouch_VB.zip (Visual Basic).

Hope this helps!

| Comments

loke pointed to a new device from htc being announced today for the uk market.  it's called the "touch" and is a new windows mobile 6 device.  probably my only huh moment is looking at the specs and not seeing support fro HSPDA/UTMS (3G) for the networks...odd i thought.

but it is going to come in a wasabi green color :-)  they have a new UI they call TouchFLO that you can see on the main product site at http://www.htctouch.com -- their advertisement on the main page of htc.com right now is a pretty good one i thought -- hits the right emotion (kind of like the blackjack ads did).