Sunday, February 28, 2010

Windows 7 Tablet with Multi-Touch, Forget About It!




I recently got a chance to use some of the latest multi-touch features in Microsoft Windows. I had hoped for good things from Microsoft but found their product to be frustratingly unresponsive! It took multiple attempts to register multi-touch actions or even single-touch button presses. When touches were being tracked the UI was so far behind the input that even simple actions like zooming in and out of a map became virtually impossible. Worse than the disappointing Microsoft Surface experience, the Windows multi-touch tablet UX would probably be a joke!

Microsoft Surface: Not Yet a Polished Product



I finally got my hands on Microsoft surface at the Samsung pavilion in Vancouver this weekend. The Responsiveness was less than quick. After using multi-touch on my MacBook Pro and iPhone, I expected a physical and seamless feeling experience on the Surface. What I discovered was nothing less than a very delayed response time on this device.

The Palm Pre, which I used to shoot this picture, running WebOS, well out performed this surface. The most interesting part of the experience were the glass blocks, which when placed on the screen, would bring up various windows that allowed sharing content and other arbitrary activities.

More pictures follow:





Selling the Experience | A CBC Web/Radio Show On How We Think About Advertisements

While in Vancouver for the Olympics, I had the good fortune of discovering a fantastic radio show on advertising on CBC Radio called The Age of Persuasion, hosted by Terry O'Reilly (left). For any one designing user experience products are working to create other consumer software products, this show offers a captivating look at how we think about new products. There are many great historical examples from the early days of advertising as well as a look into current trends. I can't recommend the show highly enough.


You can find recent episodes here: http://www.cbc.ca/ageofpersuasion/ Give the episode "Season 4: “Being There: Selling Experiences" a listen and tell me if you are not hooked.


Tuesday, February 23, 2010

iPad OS 3.2 beta 3 is out?

Whenever a new iPhone/iPad SDK comes out there is always a huge rush and slow connection speeds follow. Today, I discovered that the 3rd iPad beta simulator/SDK had just been released; however, when I went to the dev center I was only offered the beta 2 version.









Is Apple now offering there SDK updates in waves to avoid the bandwidth crunch, or was the SDK pulled?


Update 1 (1:30pm) The SDK has a photos app (with mysterious camera button) . ...I still can't download it. :(

Update 2 (3:30pm): It turns out that Apple pulled the iPhone/iPad Beta 3 SDK only moments after its release. So, there is no telling when we will be able to legitimately download this SDK.

Update 3 (11:15pm):
iPad simulator finally available. Download in progress :)

Monday, February 22, 2010

Controlling the UIScrollView in a UIWebview: Removing the Bounce, Shadows, and More

To control the scrolling behavior of a webview ,we simply grab a reference to its inner scrollview and then control that scrollview as we would any other.

The first and only subview of the UIWebView is a UIScrollView. Unfortunately, Apple has provided no direct access to this scrollview; however, the Apple engineers also do not yet have any notion of private methods on objects. ;) (You may have heard stories from other developers about private APIs. However, an API is only private if its methods cannot be found in Apple's published APIs. All of the methods that we are going to use here are included in the documented APIs.)


First we will pull the UIScrollView out from the UIWebView:

NSArray *sv = [NSArray arrayWithArray:[myWebivew subviews]];
UIScrollView *webScroller = (UIScrollView *)[sv objectAtIndex:0];


That's it, now you have full control over the webviews inner scrollview and we have only used documented API's.

(The sv array provides a pleasant level of indirection as it allows us to access the scrollview without directly pulling it from the webview.) If you are looking to prevent scrolling, control scroll offset or effect any other scrolling behavior you will be able to do it with this webScroller object.

Next if you want to remove those shadows from the top and bottom of the webview, you can simply hide them. They are inserted in the webScroller (the webview's scrollview). Use the following lines to hide the shadows.

NSArray *wsv = [NSArray arrayWithArray:[webScroller subviews]];

[[wsv objectAtIndex:6] setHidden:YES];
[[wsv objectAtIndex:7] setHidden:YES];
[[wsv objectAtIndex:8] setHidden:YES];
[[wsv objectAtIndex:9] setHidden:YES];


There you have it!

Remember, as sdk version change there may be some issues with this code, so watch your apps to make sure they continue to function properly when new OS version are released.



UIWebView sizeToFit broken?

UIWebView sizeToFit does not work unless the webView starts with a non zero frame.
In the following code the webView will not be sized to fit. To correct the issue choose a non-zero size for the webview frame.
myWebView = [[UIWebView alloc] initWithFrame:CGRectZero] // wrong
[myWebView loadHTMLString:@"...lots of html here resulting in a very large webview..." baseURL:nil];

- (void)webViewDidFinishLoad:(UIWebView *)webView {
// if webview frame is zero size to fit will not work.
[webView sizeToFit];
NSLog(@"webView height: %f", webView.frame.size.height);
}

To correct the issue change: myWebView = [[UIWebView alloc] initWithFrame:CGRectZero] // wrong to myWebView = [[UIWebView alloc] initWithFrame:CGRectMake(0,0,320,100)] // right

Sunday, February 21, 2010

How to specify a port for scp file transfers

I found the scp syntax to be a bit non conventional here, so I am making a quick note to serve as reminder to anyone who finds this syntax less than intuitive.

To scp over a specified port use scp -P [port] ./myfile myuser@example.com:/mydir/

Whether you want to use scp to copy up to the remote host or down from the remote host, the port goes at the beginning of the command. Also, a capital -P is required.

Saturday, February 20, 2010

With Only 140 Characters Per Post Twitter is Just Not Enough!

Sometimes, after 140 characters, I am just getting started, so after a year and a half without a single post to this blog, I am at it again. I don't expect to generate many lengthy entries, but am looking forward to blogging without limits.

Friday, February 19, 2010

YouTube offers HTML5 beta site and it works on the iPad Simulator, is Hulu Next?

YouTube is now offering an HTML 5 beta to all users http://www.youtube.com/html5.
The videos play very well on the iPad Simulator and I would expect even better performance on the h.264 optimized device hardware.

















Will hulu also offer an HTML alternative or will they leverage the lack of Flash on iPad forcing users to pay for their service? http://bit.ly/aMGdQP