Archive for the 'Software' category

A new all-in-one TouchSmart 4 upgrade tool

October 15, 2011 6:21 pm

After much spare-time work, I’ve finally gotten approval to publish a tool that helps you install the TouchSmart 4 software on previous generation hardware. It’s currently available through the  TouchSmartDevZone.com site. You can find it here in the downloads section. HP had previously published a similar tool, but pulled it from their website after about a month or so.

This tool is unsupported by HP, so use it at your own risk. It did receive some testing, both by HP and a few customers, so I have reason to believe it will work properly for you. Also, in order to use it, you have to accept the license agreement that is displayed when you first run it.

Why write a blog post about it? I want to give a little detail on what it does in case things don’t go as smoothly as they’re supposed to.

The tool basically does these things in order:

  • Check that all prerequisites for TouchSmart 4 are fulfilled, including hardware checks
  • Installs the Microsoft .NET Framework 3.5 SP1 if needed (a few hosted apps need this)
  • Downloads all officially published softpaqs from the HP support website
  • Installs the Microsoft .NET Framework 4.0 if needed (the TouchSmart “shell” needs this)
  • Installs all downloaded HP TouchSmart 4.0 software components

Should Windows indicate that a reboot is needed “right off the bat”, clicking a corresponding button in the tool will make sure that the tool is automatically restarted after the reboot. The tool will also automatically restart after potentially installing .NET 3.5 SP1 and .NET 4.0. No reboot is necessary after the remainder of the software has finished installing. If User Account Control is enabled on your system, the tool will prompt for permission to run each time it is launched.

Here is a sequence of screenshots that show the tool in action (captions beneath pictures):

TS3toTS4_upgrade
Installing .NET 4.0

TS3toTS4_upgrade_2
Installing the TouchSmart 4.0 “shell”

TS3toTS4_upgrade_3
Preparing to install other softpaqs

TS3toTS4_upgrade_4
Removing older versions of Music/Photo/Video apps

TS3toTS4_upgrade_5
Installing softpaqs

TS3toTS4_upgrade_6
Install progress after third softpaq install

TS3toTS4_upgrade_7
Hosted app registration happening during install

Once all software is installed, the tool gives you an opportunity to burn the downloaded file to a DVD, along with the upgrade tool itself. This will speed up install on other systems a little, since installing from DVD may be faster than downloading from the Internet. Most people probably don’t need this DVD, but it may come in handy, should you want to rerun the upgrade in the future (after a system restore, for example.)

TS3toTS4_upgrade_8
All software finished installing

TS3toTS4_upgrade_9
After clicking the button to prepare a DVD

TS3toTS4_upgrade_10
Windows Explorer window opened with files ready to burn to DVD

TS3toTS4_upgrade_11
Notification that files are ready to be burned to DVD using the Windows Explorer window

The only thing I’ve seen go somewhat awry from time to time is that the download of a softpaq may get to a 100%, seemingly, but not finish. I think this might be caused by the server(s) that hosts the downloads, but I’m not sure. Since the tool is written to perform its operations to full completion at each step before going to the next, it may get stuck and not allow you to close it in this situation. Should that happen, you can hold down the Ctrl key on the keyboard while clicking the red button with the little “x” in the upper right corner to close the tool. This will terminate the incomplete download and delete the partially downloaded file. When you run the tool again, the downloads will resume with the not completed download first, and hopefully complete the downloads this time around.

Depending on your Internet connection speed, downloading an installing everything can take several hours, so it’s best to do this when you have that kind of time available.

I hope this tool is useful for some of you.

A brief history of five TouchSmart generations–pioneering ideas for Windows 8

September 26, 2011 10:15 am

A few weeks ago I attended Microsoft’s BUILD conference to get ready for what’s coming in Windows 8. As I was sitting in the first day’s keynotes and big picture sessions, I couldn’t help but think back on the work HP has done with its TouchSmart software and notice areas where the TouchSmart software pioneered ideas that Microsoft is now building into Windows 8 for the new Metro style of programming and the new touch-first Start screen. I decided to dig a little deeper and give you a brief tour of the history of TouchSmart and highlight some of the ideas now in Windows 8 that we put into the TouchSmart software a long time ago. I’ll put a [+Win8] marker by the ideas as I go along. Let’s get started!

TouchSmart 1, aka SmartCenter, aka LaunchPad (January 2007)

The first version of TouchSmart was not called that. It was named SmartCenter and shipped with the very first modern all-in-one touch-enabled PC, the HP TouchSmart IQ770.

               

This machine was one of the so-called “Dream PCs” for Microsoft’s introduction of Windows Vista in January of 2007. I’ve written about this version of SmartCenter before, so I won’t repeat much of that here.

Touch-first [+Win8]

Of course, the main point of even embarking on a project such as the SmartCenter software was that Windows wasn’t even remotely ready for touch interactions. Every app on the Windows Desktop requires the precision that the mouse pointer provides. Fingers and touch can’t hit the tiny controls accurately enough. So SmartCenter was designed with that in mind, and as a result had large targets all throughout its user interface. Here are some sample screenshots:

SmartCenter_1_HomeSmartCenter_1_Personalize_1SmartCenter_1_Personalize_2SmartCenter_1_Personalize_3SmartCenter_1_Weather_2SmartCenter_1_Weather_3

Note that all buttons, checkboxes, radio buttons, scrollbars, etc. are large enough to be easily tapped with a finger. Note also that, for example, the on-screen keyboard that is used for entering a ZIP code in the Weather app defaults to the correct layout, i.e. the numeric one.

Live app data in shortcuts [+Win8]

This idea wasn’t really all that new, of course. Snippets of live app data displayed in a mini-view of sorts had been introduced with Windows Sidebar gadgets and other widget-like UIs on other operating systems, but SmartCenter was the first to use live data as part of the shortcut that launches an app. You could say the shortcuts were more like mini-versions of the full app. Live data is of course hard to demo with screenshots, so here is a small video clip of the SmartCenter home screen (or start screen, if you will), showing shortcuts that update their information as time passes:

This major version of the SmartCenter software was delivered with four total releases: 1.0, 1.1, 1.2, and 1.4. Towards the final delivery of version 1.0, it became clear that a standardized way of getting the live information from the apps was needed. This became a major area of investigation and investment for the next major version of the software.

 

TouchSmart 2 (June 2008)

The second generation of TouchSmart software, 2.x, was introduced with IQ500/IQ800 series hardware. These two hardware models marked the beginning of the monitor-like appearance of the TouchSmart PCs. The IQ770 was a “multi-volume” chassis – these new models had a “single volume” design, supported by the “easel” style feet that were used in the follow-on generation as well.

         

The 2.x series of software was released in three versions: 2.0, 2.5 and 2.8.

Fixed layouts for apps [+Win8]

With SmartCenter 2.0, we introduced the concept of fixed sized layouts for the TouchSmart apps. We initially picked three: small, medium and large. You can see two of the three illustrated by this screenshot:

image

The Tutorials, Canvas and Calendar apps are shown in medium size, while the remaining apps are shown in small size. By tapping on an app, you would go to the large size:

image

This layout is purposely not called full screen, since there is a reserved area at the top of the screen for navigation, app name/time and music playback controls.

Tiles concept [+Win8]

In order to make it clear that the app representations in SmartCenter were not just icons, we decided to call them tiles, or rather “live tiles.” This term was used in the developer documentation that was produced to help other people plug their apps into SmartCenter, and so we had “small tiles,” “medium tiles” and “large tiles.” For each tile size we gave guidance about how to use it appropriately. We introduced the term “layouts” to suggest that each tile size should use a different layout of basically the same content or information. As you notice from the screenshots above, when the Weather tile is small, it shows only basic information. In the large tile, the information is more full-featured and also provides access to settings for the Weather app. The medium tile for Weather looks like this:

Medium

As you can see, this layout for Weather includes only the current conditions and the forecast for the day.

With TouchSmart 2.0, a big investment was made to produce media consumption applications: Music, Video and Photo (often shortened to “MVP”) as well as a WebCam and DVD app. The screenshot above shows other apps that were published later (Netflix and Recipe Box, for example), but that just goes to show that following development guidelines has benefits: newer apps can work with older SmartCenter versions…

Other changes from the 1.0 version include the top and bottom row of “tile scrollers” and the music playback control set (aka. “media plate”) that I already mentioned. The tile scrollers had two different behaviors, depending on how full they were. If enough tiles were present, the scroller would become an infinitely looping container. If not enough tiles were present, it would have “snap-to” endpoints.

The TouchSmart 2.0 software was unveiled at a big press event in Berlin, Germany. Several of my colleagues were invited to attend to make sure everything went smoothly from a technical perspective. The most nerve-wracking part was that the TouchSmart IQ500 was to come out of a pedestal on stage after sitting inside said pedestal for an extended period of time before its unveiling. People were not sure the thermals were designed to handle as little exchange of air as this posed. Here’s a video from the introduction to give you a better idea of what I’m talking about (skip towards 1:18 or so to see the pedestal and the TouchSmart lifting out of it):

As you can see, everything worked out pretty well. This was the biggest introduction ever made for a TouchSmart PC line. No event after that had that much effort put into it.

 

TouchSmart 3 (October 2009)

With the third generation of SmartCenter, we piggybacked onto the 600/300 series of hardware. The enclosures still used the easel stand design with three feet for support, and the exterior was tweaked a bit along with the screen aspect ratio (now 16:9 instead of 16:10).

         

Generally, though the concept was largely the same, except for the software. A big investment was made to produce more apps for the TouchSmart software suite, and this brought us apps like Canvas, Twitter, Hulu, Live TV, Link, Movie Store, Recipe Box and a bunch of others. The TouchSmart software development guidelines were augmented with more of a proper SDK with app samples, installer samples and more guidance.

New layout

SmartCenter 3.0 introduced another layout that we called wide-interactive. You see, in SmartCenter 2.x there was no way to interact with the medium sized tiles in the upper tile scroller (except for in the browser, but that’s a small detail). In this version we wanted to provide interaction with the app in the upper scroller. In order to do that properly we needed a bigger size tile and a new layout to have enough space for interaction to make sense. Here’s a screenshot of 3.0 (running on a 16:10 screen, not the aspect ratio it was designed for – so circular elements are “squished”):

image

In SmartCenter 3.0 the touch scrollers no longer “looped” infinitely, but each had a “snap to” end regardless of how many tiles were present; each wide-interactive tile was given a colored title bar to add a little splash of variety and visual interest. In addition, the “media plate” and other control elements on the home screen were redesigned to appear a bit lighter than before. Also, standard button glyphs were introduced for closing and minimizing SmartCenter. Oh, and the clock was moved around and given a day of the week display. Phew – at least the Personalize button stayed almost in place…

The final big change was that tiles in the bottom scroller no longer used the small layout. They were simply icons to launch the app into large layout directly. This was done to improve performance and load less stuff at the startup of SmartCenter.

 

TouchSmart 4 (September 2010)

Okay, so here we are, almost at the last chapter of this brief history (which is turning out not so brief after all…) TouchSmart 4.0 was introduced with the TouchSmart 310 (and 610) series of hardware. These departed from the easel-type stand and went to a single-foot design (I know there’s a better term for it, I just can’t think of it at the moment).

         

TouchSmart 4 didn’t see much investment in new apps, but focused on new capabilities provided by the SmartCenter framework.

Infinite Canvas [+Win8, sort of, on the Metro Start screen]

A major goal of the SmartCenter framework software had been to provide an almost limitless space for apps to live in. With SmartCenter 4.0 that goal was finally realized. Not only did the framework provide for an infinitely expanding space for hosted apps to live in, it also did away with the upper tile scroller and let the apps be positioned freely on the canvas. This is what TouchSmart 4.0 looks like after initial startup:

image

And once again, things were moved around on screen: The clock from lower left to lower right (and it was given a function: click to show a mini-calendar), personalize from lower right to lower left (and the word personalize removed). The “media plate” music playback controls were removed and put into the music app instead. The volume control was separated out from the media plate and put in the upper left. The bottom carousel was redesigned and had the infinite looping re-introduced (to allow for a bit of visual and interactive playfulness). Tapping a tile launches the corresponding app:

image

Apps can be moved around freely and the carousel shows a colored highlight for each running app:

image

If you look at the above shot closely, you’ll notice the Weather app in what looks like another layout. What’s happening there is not a new layout, though. It’s simply the wide-interactive layout, shrunk down to an “inactive” size. Thus we called it “shrunk layout” or “shrunk view”.

The button next to personalize in the lower left can be used if the app you’re looking for in the carousel is hard to find: QuickLaunch is sorted alphabetically:

image

Parallax background [+Win8, sort of, on the Metro Start screen]

Scrolling the canvas (or panning it, if you prefer) is done by grabbing empty space (with mouse or touch) and moving from side to side. To add a little visual interest to this, and to demonstrate the departure from the 3.0 tile scrollers, we added a parallax effect to the background to give you the illusion of looking into the distance on your screen. Several sets of parallax backgrounds were developed for variety’s sake, to be picked in the personalize area.

Magnets

Another major feature of SmartCenter 4.0 was the introduction of something we called “magnets”. These represent active content that originally came either from an app or from SmartCenter itself (in the case of Graffiti magnets). Magnets eliminate the need to start an app when you want to enjoy a favorite piece of content, be it a photo, video or some music you want to keep handy for quick enjoyment. Here are a few magnets placed on the canvas (they can be “pinned” so they always stay visible or “unpinned” to scroll with the canvas):

image

Here’s what it looks like after panning a bit (while playing the fireplace video):

image

You can see the pinned magnets haven’t moved and the background looks slightly different (the islands have moved at different paces to give the illusion of depth as they’re moving).

Okay, let’s see what it looks like in action:

 

TouchSmart 5 (September 2011)

And that brings us to the latest generation of SmartCenter (as of this date), i.e. 5.0. This version of the TouchSmart framework software was brought to market with the just recently introduced 520/420/320 series of TouchSmart PCs. The exterior of the machines has been updated once more to keep up with design trends, but otherwise the single-volume enclosure is still the chosen form.

            

Integration of Windows apps, desktop icons

The biggest change in SmartCenter 5.0 regards the blending of the two environments that were previously separated: SmartCenter and the Windows Desktop. This means you no longer need to exit the SmartCenter environment when you want to run Windows apps. Here’s a screenshot of SmartCenter 5.0:

image

Note that the Windows 7 taskbar is fully visible and that you can use it for launching apps and seeing what apps are running. The SmartCenter app carousel now has the icon highlight turned on permanently and only shows a short animated starburst as an app is launched. You also see all your desktop icons represented on the SmartCenter canvas. As you can see, the magnets overlap the desktop icons, which can be a bit of a clutter issue. No worries, you can turn off the desktop icons via Settings, if you don’t like them on the canvas. Or you can rearrange your magnets so they occupy different space:

image

In general, SmartCenter 5.0 attempts to bring the touch-first environment of past generations together with the traditional, mouse-centric desktop. That’s a value-proposition you don’t have in Windows 8, which is most likely not available until sometime in late 2012 anyway…

Automatic panning/scrolling

One additional thing SmartCenter 5.0 does is automatic panning of the canvas/desktop whenever an app is launched. This removes the need for you to have to rearrange app windows frequently when you want to switch from one app to another. The canvas pans automatically to make more room for every app you start. To return to an app, you just click on it in the taskbar or the app carousel. Another video might explain it a bit better:

This behavior can be turned off in Settings as well, in case it’s not useful to you. There are many, many areas that I haven’t touched on in this post, such as all the personalization and customization aspects that SmartCenter contains and how they changed over time. Or the fact that you can make your own parallax backgrounds (not documented anywhere, unfortunately, but pretty easy to figure out for enterprising souls). Or the easter eggs, oh yes…

Let me make some general remarks about the last four generations of SmartCenter: Any apps written to observe the guidelines of SmartCenter 2.0 are able to run on SmartCenter 2.0 through 5.0. A nice compatibility feature. Of course, older versions of apps needed updates as new SmartCenter functionality was introduced (or removed, as with the media plate removal in 4.0), but as you’ve seen, the Netflix app (which was published with SmartCenter 3.0) runs just fine in SmartCenter 2.0 and 5.0 as well. What’s more, if you know what you’re doing, you can have all the versions of SmartCenter 2.0 – 5.0 running on the same system. That’s how I was able to collect screenshots and videos for this post. Oh, and the technology underlying all these versions of SmartCenter is Microsoft’s Windows Presentation Foundation (WPF), 3.0, 3.5, and 4.0. The various apps were written in anything from compiled-to-native-code-Python to WPF to Adobe Flash. The software development process used since about SmartCenter 2.5 is anchored in Scrum, an Agile software development framework.

This concludes my brief history of the TouchSmart software. As you have seen, Windows 8 definitely picked up a lot of the features that the SmartCenter framework pioneered: Live tiles, fixed layout sizes for apps, parallax scrolling with an expandable space and touch-first design. Until Windows 8 is available, the TouchSmart 5.0 software suite is most likely the best alternative for touch – combined with new thinking on how to add something more to the the desktop environment – that you’ll find on an all-in-one PC anywhere.

Custom RSS feeds for BUILD 2011 videos

September 17, 2011 1:25 pm

Now that //build/ is over, lots of people want to download the sessions they missed because there was an ocean of stuff being presented and you couldn’t possibly catch it all live.

One way to do this is to use a PowerShell script (I found one here).

Here’s the script code in case you don’t want to follow the link:

cd "C:\build11"
[Environment]::CurrentDirectory=(Get-Location -PSProvider FileSystem).ProviderPath
$a = ([xml](new-object net.webclient).downloadstring("http://channel9.msdn.com/Events/BUILD/BUILD2011/RSS/wmvhigh"))
$a.rss.channel.item | foreach{ 
    $url = New-Object System.Uri($_.enclosure.url)
    $file = $url.Segments[-1]
    $file
    if (!(test-path $file))
    {
        (New-Object System.Net.WebClient).DownloadFile($url, $file)
    }
}

One problem with this might be that you don’t want all videos. So you’d have to filter the RSS feed that the script pulls down. There’s no documentation on how to do that, but a little experimentation shows that you can do this:

http://channel9.msdn.com/Events/BUILD/BUILD2011/RSS/wmvhigh?t=.net%2Bframework

The available filters (for the t parameter) are:

.NET%2BFramework

Access%2BControl

Applications

ASP.NET

Assessment%2Band%2BDeployment Kit

Async

C#

C++

Certification

Charms

Cloud

Compliance ​

Continuous%2BAvailability

Data

Database

Debugging

DirectX

Drivers

Elasticity

Expression%2BBlend

Files

Games

Graphics

HTML5%2Band%2BJavaScript

Hyper-V

IHV

Keynote

Manageability

Media

Metro%2Bstyle%2Bapps

Metro%2Bstyle%2Bdevice%2Bapps

Networking

Odata

OEM

Parallel%2BComputing

Performance

Power

Pre-​Recorded

Printing

Remote%2BDesktop

REST

Roaming

Scalability

Security

Sensors

Silicon

SQL

Storage

Touch

UI

Platform

User%2BExperience

Virtualization

Visual%2BBasic

Visual%2BStudio

WCF

Web

Windows%2BAzure

Windows%2BPhone

Windows%2BRuntime

Windows%2BStore

Wireless

Workflow

XAML

If you’re just interested in the slides, use a query like this:

http://channel9.msdn.com/Events/BUILD/BUILD2011/RSS/slides?t=.net%2Bframework

In general, the query can be constructed like this:

http://channel9.msdn.com/Events/BUILD/BUILD2011/RSS/
[type]?t=[tag]&term=[free text]

Where [type] can be one of: wmv, wmvhigh, mp4, slides

You can add multiple t arguments.

So if you’re interested in slides related to “client” topics, this might be your query:

http://channel9.msdn.com/Events/BUILD/BUILD2011/RSS/slides?t=async&t=charms&t=expression%2Bblend&t=files&t=games&t=metro%2Bstyle%2Bapps&t=metro%2Bstyle%2Bdevice%2Bapps&t=touch&t=ui%2Bplatform&t=user%2Bexperience&t=windows%2Bphone&t=windows%2Bruntime&t=windows%2Bstore&t=xaml

WebOS and Windows Phone 7 development – Part 1: WebOS

August 10, 2011 11:20 am

This is the first of a two part “miniseries” of my forays into developing for mobile platforms. Part two is here.

01_Store_List_03

After Phil McKinney announced a WebOS app development contest at HP’s internal technology conference, Tech Con ’10, I was somewhat drawn to trying my hands at this unknown “beast” (lure of the prize? Maybe.) In a conversation with Jon Rubinstein on the first evening of Tech Con I had mentioned how Microsoft’s tools provide incredible developer productivity and I asked if Palm’s toolset provides something similar. Jon mentioned project Ares and encouraged me to try it out. More on that later.

Over lunch that last day of Tech Con, I mentioned in a conversation with my colleagues that I was going to develop an app that helps you keep track of store opening hours. After lunch I had a little bit of time before my flight back to California, so I rudely ignored my fellow travelers and started downloading and installing the “regular” Palm WebOS tools: Java, VirtualBox, Eclipse, the SDK toolset, Google Chrome and the Aptana Studio plugin for Eclipse. I didn’t start writing code right away. I had just finished installing stuff when it was time to get on the shuttle for the airport.

My next steps were to read up on the overview documentation that Palm provides at http://developer.palm.com and to start running the emulator and toolset. I’m no stranger to (D)HTML/CSS and JavaScript. One of my first projects at HP was developed almost entirely using that combination. Admittedly, that was quite some years ago. I’m a little surprised that someone would build a mobile platform based on technology that old, but I guess the rationale is sound: anyone who can develop a webpage can now develop mobile apps. (I’m not entirely sure I’d want just anyone who theoretically can do it to actually do it. Sorry. Little digression.) So, I’m no stranger to the technology, but I still needed to brush up. So I went off to www.w3schools.com to check out the JavaScript references (in particular the Date class docs) etc. Part of the journey also took me to a few articles at Linux Magazine (WebOS is based on Linux – another decades old technology stack, hmmmm – but then, so is the Windows Kernel and a bunch of other pieces of software) where some of the details around data persistence were explored. I knew that I’d have to store the data locally, since I couldn’t possibly support running a web/cloud service anywhere. Some other detours led me to the JSON website and the Prototype framework.

My first tentative steps were to get the app from the Linux Magazine articles up and running, which didn’t take too long. Then came experimenting with my “business logic”. Palm apps are nicely partitioned according to the Model – View – Controller software pattern, so trying out some “Model” approaches was worthwhile. During all this, I kept bouncing back and forth between the Linux Mag articles, the SDK documentation, Palm’s developer forums and the JavaScript documentation at w3schools.

After working with the TimePicker widget for a bit (store opening hours are central to the app, after all), I settled on using Date as the main “Model” for the app. Unfortunately JavaScript can’t store Date in the local persistence layer of WebOS. What can be persisted are object primitives (strings, integers, lists, arrays and such), and Date is not one of those. The persistence format in WebOS is JSON (JavaScript Object Notation), which is a string representation of a JavaScript object that the JavaScript interpreter can “rehydrate” by calling “eval()” on the string that’s retrieved from storage (or a web service call). Date objects don’t persist well, so I had to work out a way to “dehydrate” and “rehydrate” my Date-based data model. I’m sure there are better ways to do it than what I came up with, but my method is basically to “dehydrate” by calling Date.getTime() and storing that away. “Rehydration” is the reverse: construct a Date object from the stored getTime() value (which is the number of milliseconds since the “epoch”, Midnight on January 1, 1970).

After settling on the data model, I started some work on the business logic. I figured out the rules for determining a single day’s open/closed status and did debugging on that. This is where one of my frustrations with the toolset started to surface. Debugging is pretty painful on WebOS at first. It seemed that all I had at my disposal were “tracing” statements in combination with looking at log files in the emulator. To do that, I had to connect to the emulator running the app by using Putty (an SSH client that’s included in the toolset) to localhost port 5522. And every time I made a code change, I had to re-deploy the app, etc. It wasn’t until the end of my project that I discovered the semi-standalone log viewer from palm, hosted at http://ares.palm.com/AresLog and the corresponding debugger at http://ares.palm.com/AresDebug. The unfortunate thing, of course, is that these two only work if you have a live Internet connection. The other unfortunate thing is that my data model is an object that none of the tools know how to “Visualize”. By that I mean that even though AresDebug can show me my Date object, it can’t show me the various interesting “parts” like the Date, Month, Year or Day.

After making progress on the logic for one day of opening hours, I worked my way toward the logic for a whole week of opening hours. This meant starting to work with arrays of objects and that made the debugging situation worse. Now I had to trace a set of Date objects seven times in order to make headway. Seeing the log output from that was really messy.

In parallel to the business logic work, I started sketching out the UI flow and settled on four scenes/cards to use in creation/editing of store opening hour information. Most of these scenes were easy enough to come up with. The main problem was aligning items in list widgets so their placement was “pleasing to the eye”. That sometimes required padding and using tables in the HTML code along with general CSS tinkering. While using <div> elements with certain palm CSS class styles (“palm-group” in particular), I discovered that using a self-closing <div /> element could create issues with rendering the UI properly. I had to use opening <div> and closing </div> elements to get the correct rendering. Another thing I found a bit maddening was that I had to resort to padding in list rows to get items centered vertically. The style inheritance tree was just too much for me to wade through. I tried a couple of times, using the Palm Inspector, but it didn’t get me very far.

After most of the UI was settled, I had to finalize the business logic. This took the bulk of my development time, and was quite frustrating because of the difficulties of debugging/tracing/seeing traces using the Palm log tool via SSH. I ended up spending all of Memorial Day weekend on this (except for a few hours on Sunday where I got away to spend some quality time at a pool party). Memorial Day was another full working day where I thought I had finalized all the business logic…

Alas, I discovered in preparing my app for submission to the Palm site that there were still bugs lurking and that I needed to tinker a bit more with the UI. So I added a few images, twiddled icon sizes around, wrote up the required “marketing” text, etc. Each morning and evening I tested the app only to conclude that there were still calculation bugs.

Finally I convinced myself that it was time to formalize my testing efforts, so I put together a table on paper, sketching out various valid and invalid/tricky test data scenarios. I then coded these up in some “unit tests” (really just part of the app’s logic, but the tests only run if a certain flag is set in the startup code).

Other finishing touches included making the store opening hours definition less repetitive/labor intensive, adding a splash of color here and there, making it possible to delete the entire database and enabling two buttons in the UI based on conditions related to the store data the user enters: If a phone number is entered, enable calling up the dialer app to make a quick call to the store – if an address is entered, enable a button to take the user to a map of the store using the built-in mapping app. And with all those things in place, I finally submitted the app to the Palm catalog on June 4, 2010.

You’ll notice that I didn’t mention the Ares development tool yet. That’s because I didn’t use it much. Once I started on the path of using the SDK tools, I was unable to “round-trip” the app between Ares and the SDK toolset. I could upload the app just fine, but the App UI didn’t show up in the Ares environment. So perhaps I should have started out using Ares, but then I would have been limited to developing only while having a live Internet connection. Not something I find very comforting.

How much time did I spend on this adventure? Since I didn’t keep a log, I can only make rough estimates, but here’s the breakdown from memory:

Reading SDK docs
2 – 4 hours

Download and install tools
2 hours

Reading other articles
1 – 2 hours

Reading JavaScript docs
4 – 6 hours

Coding
6 – 8 hours

Debugging
30 – 40 hours

Refining UI, testing
8 hours

Preparing for submission
2 – 4 hours

So that’s somewhere between 55 and 74 hours. A lot of effort for a simple app? Probably. Worth the time, considering the value of the prize? Perhaps not. Great value in learning the ins and outs of a new platform and having some serious geek fun? Absolutely!!!

Why the big number on Debugging? This is where I get back to the productivity question/issue I posed to Jon Rubinstein. Debugging was so painful and time-intensive because the tools just didn’t provide what I needed. What I would have wanted was an environment that provides a coding and debugging experience that helps track down bugs in a matter of minutes. Variables should be easily inspected, breakpoints set / made conditional, etc. etc. The Palm Ares debugger provides some of this, but there is still lots of room for improvement.

All in all, it was great fun writing a WebOS app and learning about the platform. I highly recommend you do it yourself, if you are so inclined.

Listen to your hard drive’s S.M.A.R.T. status – part 3

February 13, 2011 12:17 pm

I’ve written about this topic a couple of times before. But it seems like another post is in order since my main box is now running Windows 7 and I’d like to share how Windows 7 has changed in the area of SMART monitoring.

I keep all my “data” on a separate physical hard drive so that in theory it’s easy to swap out the OS drive or upgrade it without too much fear of losing information. This also makes it easy to migrate the data to a bigger drive when I inevitably run out of space. Some time ago I did just that, switching to a 1 TB drive from a 500 GB model.

It had been running well for about a year (I think), when I looked at the SMART data and saw that the reallocated sector count was dangerously close to the limit value. I didn’t think I needed to worry about it quite yet, so I left it alone.

But a few days ago I got a call while at work: “The computer is saying something about a hard drive going bad, and I don’t know what to do.” Oh boy. So I dropped everything after finishing up a meeting and bought a replacement drive (1.5 TB this time), ready to deal with the worst.

As it turned out, things weren’t in too bad of a shape. Windows 7 itself seems to be doing a much better job at monitoring SMART status than Windows XP did:

Clip_6

Just for kicks, I started eventvwr.msc and looked at the System events. Sure enough, there were a couple of entries mentioning disk issues:

image

image

For more detail, I looked at SpeedFan’s output:

Clip_3

Yup, the reallocated sector count had reached its limit.

Since Windows 7 ships with the excellent Robocopy command line tool, I decided to use this to copy everything from the failing drive to the new one. I thought I could use a USB-to-SATA adapter I had lying around the house, but after some time I concluded the adapter must be flaky. From time to time the drive connected to it would act funny when looked at with Windows Explorer. Folders wouldn’t refresh when asked to and sometimes folders that were supposed to be on the drive didn’t show up in Windows Explorer. Also, the copy process seemed fishy when looked at with Process Explorer:

Clip_4

Looking at I/O Bytes History, I saw big initial spikes of traffic, then a weird drop-off, followed by a long period of inactivity between each file copy operation. Too bad I don’t remember when I bought that USB-to-SATA device, because it definitely needs to go back for a full refund or replacement.

Anyway, I ended up hooking the new drive up to a free internal SATA port inside the computer, and from then on the copy went quite smoothly. The I/O traffic pattern looked much more evenly distributed.

After finishing the copy, I checked the drive manufacturer’s website to see if the drive was still in warranty. Their online systems couldn’t tell me for some strange reason, even though I typed in the model and serial number correctly, and even the failure code that their test tool spits out. A quick call to their warranty department confirmed that it was still within warranty, and so I initiated the exchange for a fresh drive.

The final step in this was to erase the content of the old drive, just to be sure nobody could get to it, should the manufacturer’s promises of destroying the drive not come to pass. For that I used Eraser, a free tool that has many, many options for overwriting the entire drive with random data patterns, making it pretty much impossible to recover anything.

It’s always a bother when hard drives go bad, but sometimes it is possible to avert complete disaster. Windows 7 is much more proactive than its predecessor XP in terms of early detection of problems. This gives you time to move important data in time.

Of course, should a head crash happen, this would be useless, so I also have an alternate backup. No longer at Mozy, though. With my amount of data and their recent pricing changes, I decided to go with CrashPlan, partly because of their option to ship me a drive for the initial backup so I don’t have to wait for months to upload everything. The other part is that they still offer unlimited storage. And I need that.

Uninstalling a stubborn QuickTime/iTunes combination

December 24, 2010 3:42 pm

This is what I wanted to see:

image

Instead I got error messages, followed by a rollback of the uninstall I was in the middle of.

Why did I need to uninstall QuickTime and iTunes? Because after finally upgrading my last Windows XP machine to Windows 7, iTunes wouldn’t start properly.

I searched the web for a while to see if I could find good information about the problem, but all I found was useless, generic “use control panel to uninstall” stuff and google-spam-gamed links advertising some complete uninstaller tools.

So I decided to take matters in my own hands. I fired up an elevated command prompt and regedit and dug through the registry (HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\ Uninstall) to find the uninstall string for removing iTunes. I ran that, and – to my surprise – it worked! All I had to do now was uninstall QuickTime, so I found the uninstall string for that, and kicked it off. I got a warning about uninstalling my Pro Key and confirmed that I wanted to do that. Things seemed to progress nicely, but then the rollback happened. Ugh. So I fired off the uninstall once more, this time adding logging:

MsiExec.exe /I{E7004147-2CCA-431C-AA05-2AB166B9785D} /l*v log.txt

It failed again. Good, now I had a log of the failure. Digging though the log, I found this error:

DEBUG: Error 2769:  Custom Action RemoveQT7ProKey did not close 1 MSIHANDLEs.
The installer has encountered an unexpected error installing this package. This may indicate a problem with this package. The error code is 2769. The arguments are: RemoveQT7ProKey, 1,
Action ended 13:58:03: RemoveQT7ProKey. Return value 1.

“Okay, so if that action causes issues,” I thought, “let me see if I can remove it”. To do that, I looked back in the log for the cached MSI file that the uninstall uses:

MSI (c) (F0:B4) [13:57:50:043]: Package we’re running from ==> C:\Windows\Installer\100f740b.msi

I then changed the security descriptors on that MSI so I could modify it and used Orca to drop the row that invokes the custom action that attempts to remove the Pro Key:

MSI (s) (84:6C) [13:58:00:119]: Doing action: RemoveQT7ProKey

I saved the modified MSI, ran it again, and lo and behold – QuickTime uninstalled properly!

Windows Phone 7 – No “editable” TextBlock

October 16, 2010 5:11 pm

As I’m diving into Windows Phone 7 development and making notes for myself on how WP7 compares to WebOS, I’ve come across one little wrinkle that works really nicely in WebOS (out-of-the-box) and doesn’t work so well in WP7 (out-of-the-box).

I’m talking about a control (actually, a Widget in WebOS) that initially looks like a regular text label, but when you tap on it, it turns into a text box that lets you edit the contained text. WP7 does not have anything like this out-of-the-box. So I decided to create my own.

I made a UserControl that consists of a TextBlock and a TextBox. The TextBox is normally Collapsed (Hidden doesn’t exist on WP7, you’d have to use Opacity=”0″ instead). When the user taps on the TextBlock, it is collapsed and the TextBox is made visible. Once the TextBox loses focus, the reverse happens, and the text from the TextBox is transferred to the TextBlock. Since it can be useful to be able to style the TextBlock and to provide InputScope, I’ve also added a few DependencyProperties to enable that. The code is a little “smelly”, perhaps, because it could be refactored into a proper CustomControl, but what I have so far works well enough for me.

If you want to use it or just have a look, feel free to download the source code for TextBlockEditable.

A roundup of news about the new HP TouchSmart 310 and the HP TouchSmart 4.0 software

September 20, 2010 10:16 pm

[Update 2010-09-22: A few more unique mentions have come in; see links and quotes below marked [Update] ]

Only a little vanity post; a collection of links to stories and other potentially interesting tidbits.HP&#39;s new TouchSmart 310 all-in-one features a new design and updated TouchSmart software.

These were some of the first mentions of the HP TouchSmart 310 with HP TouchSmart 4.0 software, unveiled on September 20, 2010.

Most of these have no real reviews yet, they just “wordsmith” the press release or other people’s “wordsmithing”. But that won’t stop me from highlighting “good stuff”.

CNet: http://news.cnet.com/8301-17938_105-20016921-1.html

The new case is graceful enough, and the $699 starting price for its low-end AMD CPU and 20-inch display is fair, but the biggest news for this new all-in-one may lie in its software. [My emphasis]

First, HP has tweaked the main TouchSmart software interface to streamline the way you access and organize media and applications using touch. In addition to organizing applications in a carousel layout, now you can also "pin" apps and individual media files to a more dynamic background featuring various parallax-animated environments. HP says this design lets you organize your touch software in a more natural manner, akin to how you might organize a desk.

In addition to the new background, HP has also updated the specific touch applications to the TouchSmart suite, most impressively with a new Marvel Comics streaming service, from which you can buy touch versions of more than 8,000 titles from the Marvel library. That number dwarfs the 500 Marvel titles available from Apple’s iPad application. The Marvel app and the entire TouchSmart suite, dubbed TouchSmart 4.0, will also be available for download by owners of current TouchSmart all-in-ones.

Hot Hardware: http://hothardware.com/News/HP-Debuts-Omni-100-And-TouchSmart-310-AIO-PCs-Along-With-New-tm2-Notebook/

hp-310[1]

ZDNet “The Toy Box”: http://www.zdnet.com/blog/gadgetreviews/hp-rolls-out-omni-100-touchsmart-310-all-in-one-desktops-20-hd-widescreens/18143

VentureBeat: http://venturebeat.com/2010/09/20/hp-launches-fancy-touch-based-desktops-and-an-app-store-for-touch-apps/

The latest software transforms a user’s boring Windows desktop into a “magic canvas,” which appears to be an overlay on top of the computer screen. You swipe your hand across the display to move the transparent overlay. You can drag applications, music, photos, videos and other web content directly onto the overlay. HP refers to these objects as “magnets” since they are just like the magnets you put on your refrigerator with notes attached to them. You can pick multilayered wallpapers to bring the illusion of 3D depth perception to a screen. You can also browse through material via the carousel at the bottom of the screen — all with the touch of a finger.

You can use existing TouchSmart apps such as Twitter, Hulu, Netflix, Recipe Box and the HP Music Store powered by Rhapsody. All of those apps can be started and used via finger taps on the touchscreen. You can use the webcam to film a personalized video message and post it directly to your friend’s Facebook wall.

The HP TouchSmart Apps Center has a small collection of apps available now. You can access them via a TouchSmart Carousel. Some of the apps contain a lot of content, such as the Marvel Comics app and the Cartoon Network app. The Marvel app gives you access to more than 8,000 comics. You can tap on them and read them page by page on a a beautiful high-definition display. The Cartoon Network app offers news updates on shows and characters.

PC Magazine: http://www.pcmag.com/article2/0,2817,2369352,00.asp

The TouchSmart interface is much more advanced than the competition, including Sony, MSI, and Gateway.

TG Daily: http://www.tgdaily.com/hardware-brief/51618-hp-launches-new-much-cheaper-touchsmart

HP has rebuilt its TouchSmart software for the 310 model, making it easier to organize and play back media from the touchscreen, as well as adding enhanced everyday computer applications as well. When the first TouchSmart computer debuted, its touchscreen technology was more of a novelty than anything else. Since then, gadgets like the iPad have made touch more relevant and important than ever, and have shown everyone that it can be a powerful computing tool.

Also added with the new TouchSmart announcement is a deal between HP and Disney to offer digital Marvel comics. TouchSmart users will now be able to stream special versions of classic comics, and then literally thumb through them with on-screen controls. More than 8,000 Marvel titles are available, which HP says is the most extensive digital collection ever offered from any content partner.

HP is also launching a new "app store" interface for touchscreen programs and games, making it easier for developers and consumers to take advantage of the PC’s touch capabilities.

Existing TouchSmart users will also have access to this and the other enhancements being made for the 310, with the release of a sweeping software upgrade. TouchSmart 4.0 will be downloadable for anyone who owns a legacy TouchSmart computer from HP.

Softpedia: http://news.softpedia.com/news/HP-Releases-Three-New-TouchSmart-and-Omnio-PCs-157124.shtml

TechConnect: http://www.tcmagazine.com/tcm/news/hardware/30503/hp-intros-touchsmart-310-and-omni-100-all-one-pcs

Geeky Gadgets: http://www.geeky-gadgets.com/new-hp-touchsmart-310-only-699-20-09-2010/

Waleg: http://www.waleg.com/techgadgets/archives/020976.html

Electronista: http://www.electronista.com/articles/10/09/20/hp.intros.omni.100.touchsmart.310.all.in.one.pcs/

Digital Trends: http://www.digitaltrends.com/computing/hp-touchsmart-310-pc-offers-improved-touch-based-software/

IC Tech News: http://ic-technews.com/laptop/1493-hp-touchsmart-310-priced-at-price-just-699-a-complete-software-redesign

Chip Chick: http://www.chipchick.com/2010/09/hp-touchsmart-apps-center.html

Product Reviews: http://www.product-reviews.net/2010/09/20/new-hp-touchsmart-310-review-specs-and-release-date/

Financial Times: http://blogs.ft.com/techblog/2010/09/touchsmart/

Engadget: http://www.engadget.com/2010/09/20/hp-announces-touchsmart-310-and-omni100-all-in-one-pcs/ [Love all the trolling and spewing of prejudices on this one…]

SlashGear: http://www.slashgear.com/hp-touchsmart-310-omni100-and-touchsmart-tm2-get-official-20103191/

[Update]

GottaBeMobile: http://www.gottabemobile.com/2010/09/22/hp-touchsmart-software-gets-more-touchable/

The Touchsmart’s UI is much more fluid and touch applications are no longer required to run in full screen, offering a little breathing room.The Touchsmart’s UI is much more fluid and touch applications are no longer required to run in full screen, offering a little breathing room.

[…]

The new revision of the software looks like a big improvement compared to what’s on my TouchSmart 600xt, which my wife and I use as our bedroom PC.

eWeek (with Slideshow): http://www.eweek.com/c/a/Desktops-and-Notebooks/HP-Omni-TouchSmart-310-TouchSmart-tm2-Unveiled-175093/

Tom’s Hardware: http://www.tomshardware.com/news/TouchSmart-Omni-HP-All-in-Ones-AIO-touchscreen,11332.html

DesktopReview: http://www.desktopreview.com/default.asp?newsID=1222&Review=HP+TouchSmart+310+Multitouch+all-in-one+First+Look

HP has what appears to be an ingenious solution. After a program is launched, a couple of fingers swivelling across the screen automatically shrink the application into a cube and paste it onto the TouchSmart’s background. The background itself can then be scrolled through, just by touching it anywhere on the screen.

One really cool aspect of engineering the software like this is the parallax effect that HP added to the wallpaper. As you scroll through the desktop, items in the foreground move at a different rate relative to items in the background.

While we didn’t see it demonstrated, an HP rep also mentioned that the TouchSmart will ship with software to generate these movable backgrounds with pictures that customers take. The effect won’t be as strong as the ones included by HP, but being able to customize it even that much is a nice bonus.

Windows Experience Blog: http://windowsteamblog.com/windows/b/windowsexperience/archive/2010/09/21/hp-updates-their-touchsmart-software-amp-all-in-one-pc-lineup.aspx

To couple the new hardware, HP is revving their TouchSmart software to offer a number of new capabilities.  They’re saying that with it, the desktop transforms into a “Magic Canvas” where users can easily drag apps, and content – even web content – directly onto the desktop.  There’s also a new multi-layer wallpaper that gives the machine a lot of depth.  I haven’t had a chance to work with these new features directly, but I have seen a demo and it looks really nice.

[/Update]

A little promo video of the new TouchSmart 4.0 software:

 

Product Marketing Manager Ken Bosley presenting the TouchSmart 4.0 software on YouTube:

 

The HP Video channel with tutorials:

http://h30429.www3.hp.com/?fr_chl=ce319b479b9d330ec6ef5a60bd25d2567c423f97&rf=bm

 

For developers:

TouchSmart 4.0 SDK: http://www.touchsmartdevzone.com/download/3369/HP-TouchSmart-SDK-4.0-English/

And I may have some details to add myself if and when I find the time…

Windows Phone 7 Series – home-roll an offline installer

April 7, 2010 10:51 am

[Update 2010-08-01: The beta version of the phone tools comes with an offline installer ISO image (WPDTBeta_en.iso), so you no longer need these steps.]

[Update 2010-05-05: I originally wrote this for the CTP that worked with VS2010 RC. Now that an updated set of tools has been released to work with VS2010 RTM, the folder name has changed. It is now called 30319.31 as far as I can tell. That is likely to change again for future releases, so just be aware of that. The steps should still work.]

If you have several machines that you want to install the Windows Phone 7 Series developer tools on and don’t want to have to wait for the download on each machine, here’s a little tip for how you can make yourself an “offline” installer:

1. Start with a clean Win 7 machine.

2. Download the web installer (vm_web.exe) from Microsoft and save it to a folder of your choice (let’s say C:\WinPhone7). Start the install.

3. Let the download happen, but when the install itself starts, temporarily cancel it (you can let it finish after step 5).

4. Go to %Temp% using Windows Explorer.

5. Copy the folder 30128.39 to your folder of choice from step 2.

6. Create a Install_WP7_Tools.cmd file containing the following:

xcopy 30128.39 %temp%\30128.39 /I /E
vm_web.exe
pause

7. Copy the folder of choice to a USB storage device.

8. Use the Install_WP7_Tools.cmd file on your other systems. The tools should install and skip most of the downloads quickly.

If you don’t start with a clean Windows 7 machine, the files that the vm_web.exe tool collects in the 30128.39 folder may not contain all the files needed for the install, so you may see a few things extra get downloaded while using the .cmd file on other machines.

On my clean 64-bit Windows 7 machine, I got the following files as part of the toolset:

C:\WinPhone7\30128.39\1033\VM_EXP\Ixpvm.exe
C:\WinPhone7\30128.39\1033\VM_EXP\wcu\dotnetframework\dotNetFx40_Full_x86_x64.exe
C:\WinPhone7\30128.39\1033\VM_EXP\wcu\help\HelpSetup_x64.exe
C:\WinPhone7\30128.39\1033\VM_EXP\wcu\mtpack\NetFx_DTP.cab
C:\WinPhone7\30128.39\1033\VM_EXP\wcu\mtpack\NetFx_DTP.msi
C:\WinPhone7\30128.39\1033\VM_EXP\wcu\rdbg\vs_expbsln_x64_enu.cab
C:\WinPhone7\30128.39\1033\VM_EXP\wcu\rdbg\vs_expbsln_x64_enu.msi
C:\WinPhone7\30128.39\1033\VM_EXP\wcu\silverlight4\Silverlight.4.0_Developer.exe
C:\WinPhone7\30128.39\1033\VM_EXP\wcu\silverlight4\Silverlight4_Tools.exe
C:\WinPhone7\30128.39\1033\VM_EXP\wcu\silverlight4\silverlight_sdk.exe
C:\WinPhone7\30128.39\1033\VM_EXP\wcu\vcruntimes\x64\vc_runtime_x64.cab
C:\WinPhone7\30128.39\1033\VM_EXP\wcu\vcruntimes\x64\vc_runtime_x64.msi
C:\WinPhone7\30128.39\1033\VM_EXP\wcu\watson\dw20shared.msi
C:\WinPhone7\30128.39\1033\VM_EXP\wcu\windowsphone\sde_xde64-enu.cab
C:\WinPhone7\30128.39\1033\VM_EXP\wcu\windowsphone\sde_xde64-enu.msi
C:\WinPhone7\30128.39\1033\VM_EXP\wcu\windowsphone\vs_sdeprolightup-enu.cab
C:\WinPhone7\30128.39\1033\VM_EXP\wcu\windowsphone\vs_sdeprolightup-enu.msi
C:\WinPhone7\30128.39\1033\VM_EXP\wcu\windowsphone\WindowsPhoneDeveloperResources.msi
C:\WinPhone7\30128.39\1033\VM_EXP\wcu\windowsphone\WindowsPhoneExtensions.msi
C:\WinPhone7\30128.39\1033\VM_EXP\wcu\windowsphone\XNAGS40_setup.exe

A total of about 320 MB.

HP TouchSmart SDK 3.0 – Giveaways at PDC 09

November 17, 2009 9:00 am

To mark the release of the TouchSmart 3.0 SDK, HP has a goodie to give away at the Microsoft PDC 09: A super-slim 2 GB USB memory stick (embedded in a hard-plastic business card with a nice imprint). It contains the new SDK and a few documents about a software development partner program HP is starting.

If you see me at PDC, say hi, and I may be able to hand you one of these puppies. I only have a limited supply, though. 15 to be precise.

Check out the pictures:

IMG_3135

Front of the card

 

IMG_3136

Back of the card

 

IMG_3137

Back of the card with USB memory stick flipped open/out

 

IMG_3138 

Front of the card with USB memory stick flipped open/out

Stop SOPA