On this page
LinkedIn Group for Tablet Developers
An interesting chat with Scott Eckert of Motion Computing
Trap for young (or tired) players
Why are Microsoft holding SilverLight back?
Why are slates disappearing?
Is Loren writing a web based ink blogging tool?
Silverlight Ink SDK Sample Available on Microsoft Downloads
Loren Heiny, Ink, and Silverlight
Experimenting with recognition and Silverlight
Silverlight Released
Inside the PressureLevels application
Download the pressure levels utility
Little app to show off pressure levels
How about some ink enabled Silverlight controls?
Every form more than 600 pixels wide is a failure
How To: Create an Ink-Enabled Sidebar Gadget Using Silverlight
Tablet Meetup @ TechEd
Frank does Tablet @ TechEd
Three big events for the tablet PC recently
Inking on the web is a whole lot easier now
Wacom tablets big and small
Cool app to Explore Ink Analysis
My five to ten minutes at the .Net UG
Developing Tablet Apps on a Non-Tablet
More SideShow Gadgets from CES
The Windows Vista Developer Story: Mobility and Tablet PC Roadmap
Make your own on-screen keyboard.
Cool looking tablet game
Some upcoming webcast that may be of interest
Using InkCanvas
SideShow Gadgets explained
MSDN Webcast: Overview of Ultra-Mobile PC (UMPC) Development for Windows Vista
Article about Inking the Web
More on the Speech tutorial in Vista
My new ink application - for Vista only
Update to Tablet SDK
New Tablet Development BIog
Done and Dusted
Windows Live Writer
Practicing what I am Preaching
Christian Falch: looking for Ink Everywhere
Ink in Sidebar Gadgets, the problem
UMPC and Tablet PC Developer Contest
Lunch with a Microsoft Author
Code translations...
BlogPad back in business...
Mobilize your apps!
Turning off the Pen Input Panel Icon for a InkEdit Control
Anyone willing to help with BlogPad development?
Where is the Alpha going?
About to build the Alpha Build of BlogPad
Seven Habits of Highly Effective Programmers
Another BlogPad Test - with Categories
Test post from BlogPad
More Tablet Devleopment Focused Resources
Add Tablet PC Cred to Your Windows Forms Application
A (minor) Breakthrough
BlogPad back on the front burner
BlogPad on hold for a week or two
Time to get cranking on BlogPad
Will BlogPad Post as Ink?
BlogPad mentioned in OnTheRun with Tablet PCs and by Scoble
A visual Tour of BlogPad
Visual Studio Express Editions RTM - And FREE
Test Post from BlogPad
A non-developer's look at VB Express
Some progress on BlogPad
Starting on the path of TabletPC Development
Recent Posts on Technozone
This site
Calendar
<October 2008>
SunMonTueWedThuFriSat
2829301234
567891011
12131415161718
19202122232425
2627282930311
2345678
Archives
Categories
Microsoft MVP
Blogroll OPML
Disclaimer

Powered by: newtelligence dasBlog 2.0.7226.0

The opinions expressed herein are my own personal opinions and do not represent my employer's view in any way.

Send mail to the author(s) E-mail

Theme design by Craig Pringle

Based on the essence theme by Jelle Druyts

LinkedIn Group for Tablet Developers#

I was just doing an overdue Inbox cleanout when I came across a comment notification I got ages ago that I should of posted about before now.

Folks: if you are a TabletPC developer or user please join us in the Linkedin TabletPC Enthusiast group: http://www.linkedin.com/groups?gid=66744

This is an official Linkedin.com professional networking group. Sole purpose is to identify TabletPC developers and users and grow our community. No cost. See Linkedin.com for more information about how Linkedin.com and groups work.

Sounds good - I've signed up. If there is one thing we all need it is more people writing cool tablet applications!

Tuesday, October 07, 2008 9:00:28 PM (AUS Eastern Standard Time, UTC+10:00) #   
Comments [0]  | 

 

An interesting chat with Scott Eckert of Motion Computing#

This morning I was fortunate enough to have a one-on-one chat with Motion Computing's President and CEO, Scott Eckert.  Thanks for all those who posted comments and questions on my blog and on GottaBeMobile.  Rather than pose every question directly (as there were quite a few) I looked for the common themes in the comments and constructed questions from those. 

I met Scott in the foyer lounge of a Sydney Hotel.  We chatted for a couple of minutes about Sydney, the appalling weather and work, then got down to business.  He was pleased that I was taking notes on my LS800 at the meeting and allowed that he used one himself for two years.  This led nicely into my first question.  What follows is summary of my discussion with Scott.  This is not a verbatim transcript as I did not record the conversation.

--

Of the 12 comments posted on the two blogs (excluding the one about taking Scott hostage until he included ice cube makers - which we both took as a joke) fully 4 of them mentioned the LS800 directly and two others mentioned a desire for a smaller tablet.  When the LS range was dropped there were a lot of people who were very disappointed, myself included.  In my view Motion created and owned the Ultra Mobile category before the UMPC label even existed.   Given that there is an apparent market for these devices and that they were, and still are,  a device that really turned heads and got people interested in Tablets - why was it dropped?

In response Scott was pleased that I was crediting them with creating a category.  Their goal was to create a truly enterprise class UMPC and he felt that they had done well with that.  He also indicated that while the LS800 did enjoy some success in certain areas that it did not achieve the volumes needed to sustain it as an additional range.  That said the market for this type of device is still there and Motion is keeping an eye on it, there is ongoing R&D and as pen, touch and other technologies mature it is an area that they may re-enter.

Next I said that to me it seemed that sometimes Motion was focusing more on winning new customers than looking after their existing customer base.  Two examples I held up to support this.  The first was the inability to migrate accessories between ranges - such as the M-series range and the LE-series range.  The second was the relatively poor upgrade experience that Motion users had going to Vista. 

On the first point Scott pointed out that their ranges are expected to exist for about 3 years before being replaced by a new range.  They try to ensure consistency in the range, but in order to take advantage of rapidly advancing technology they won't necessarily have compatibility of peripherals between ranges. 

I suppose that this helps Motion evolve their products more quickly as they are not constraining a new range with the limitations of the old. 

Scott also pointed out that while accessories for previous ranges are not necessarily compatible, they are supported and spares are available long after the range stops shipping, which also helps to mitigate the issue for their enterprise customers.

On the second point Scott acknowledged that the Vista upgrade experience had not been all that smooth for end users.  They have learned from the feedback and hope to do it better next time.  He also pointed out that many of their enterprise accounts are still deploying XP based images on their Motion tablets.

There seems to be an increasing focus on verticals with the specialized range expanding and what I consider to be the general use/corporate range shrinking.  Is this going to be a trend that continues?

Motion are really highly focused on the verticals.  In fact when I was chatting to Scott this was very apparent long before I asked this question.  Scott told me that the way Motion look at it is that they have two primary verticals and three product ranges.  The vertical markets they are focused on are healthcare and field automation and the three product ranges can be applied to both of those.

This is not to say that there are not other niches and verticals that don't suit the Motion tablets.  Indeed some of the successful markets have come as something of a surprise to Motion.  The LS800 enjoyed quite a bit of success in the aviation market, and this was largely driven by a software partner who married up his software, the LS800 and a mounting solution and sold this as a bundle.

What other verticals interest you?

Motion's primary focus has always been people who need to use a computer while standing and walking. 

One of the questions that came up was around a slate for artists - any plans to enter that market?

Scott thought that the artist market was pretty well served today by the likes of the Wacom Cintiq which is not mobile, but it provides a much higher resolution and a better digitizer than what is available today in mobile devices.  There may not be too many mobile artists, but many of the ones that are out there are using the LE range devices today with success.

There were a couple of questions around multi-touch.  Motion was leading the market there - what happened?

The technology was very new and Motion just struggled to get it commercialized.  Touch, and the combination of touch and an active digitizer, is and will continue to be an important technology for future ranges.

(reading between the lines I take it there won't be one in the LE range, though I could be wrong.)

Motion also feels that for touch to really succeed it is critical that the applications are designed for and work well with touch.  This led nicely to my next question.

Again - from the questions posted is there any thought of entering the software market to help bring that about?

The short answer is that Motion is not looking to become a software house.  However Motion are already active in that space and they currently work with about 150 software partners in the vertical markets to help them write better applications.  It is better for Motion to have more partners and to work with them rather than compete against them.

This is where Scott talked about the aviation example and how a partner created a market for the LS800 and did really well in it.  Naturally Motion would like to find more partners like that, so for those of you reading this that write software - keep that in mind!

There are some general issues that most mobile users face, such as battery life and heat.  There are also some technologies that seem to be taking a long time to come to market, such as hybrid drives or that still carry a significant premium like solid state drives.  What do you see as the most important technologies coming.

Battery technology is really a chemical process, which means that adding capacity to batteries is not easy.  Motion have found it more fruitful to reduce the power consumption of the device and this is where they are investing.  This means both engineering better, more efficient hardware, adding technologies such as LED backlit displays and working with application developers to make the applications more efficient.

--

Some closing thoughts from me.  Scott is a genuinely nice guy and I really enjoyed my chat with him.  He is astute, passionate about his products and focused on the vertical markets and the Motion vision.  Motion are not merely aware of the bloggers, readers and commentors that make up the blogosphere.  They are not just listening to the conversations.  They are actively reaching out and engaging and I think that is a really good thing.  Thanks to Scott for taking the time to talk to me.

Wednesday, June 04, 2008 11:21:47 PM (AUS Eastern Standard Time, UTC+10:00) #   
Comments [0]  | 

 

Trap for young (or tired) players#

If you are looking at developing tablet applications (and before you ask - yes you should be...) then there is a little trap that you should be aware of.

If you want to make use of the Ink Analysis API and you are developing on a 64-bit machine then make sure you set the target CPU to x86.  The Ink Analysis assemblies only support 32-bit at this time. 

If you forget to do this then when you build or debug the project on an 64-bit machine then you will get an error like this:

System.BadImageFormatException was unhandled
  Message=" is not a valid Win32 application. (Exception from HRESULT: 0x800700C1)"
  Source="IACore"
  StackTrace:
       at System.Windows.Ink.AnalysisCore.RecognitionEngine..ctor(AnalysisWarningBaseCollection warnings)
       at System.Windows.Ink.AnalysisCore.RecognitionStage..ctor(AnalysisWarningBaseCollection warnings)
       at System.Windows.Ink.AnalysisCore.InkAnalyzerBase.CreateParserAndRegisterForEvents(Boolean reco)
       at System.Windows.Ink.AnalysisCore.InkAnalyzerBase.ForegroundAnalyzeInternal(ForegroundProcessingRecord record, AnalysisRegionBase dirty, AnalysisRegionBase originalDirtyRegion, Int32[] dirtyStrokesToAnalyze, AnalysisRegionBase dirtyRegionFromStrokesToAnalyze, AnalysisRegionBase regionOfRemovedStrokes)
       at System.Windows.Ink.AnalysisCore.InkAnalyzerBase.Analyze()
       at Microsoft.Ink.InkAnalyzer.Analyze()
       at InkBlogger.Form1.Button1_Click(Object sender, EventArgs e) in C:\Users\Craig Pringle\Documents\Visual Studio 2005\Projects\InkBlogger\InkBlogger\Form1.vb:line 21
       at System.Windows.Forms.Control.OnClick(EventArgs e)
       at System.Windows.Forms.Button.OnMouseUp(MouseEventArgs mevent)
       at System.Windows.Forms.Control.WmMouseUp(Message& m, MouseButtons button, Int32 clicks)
       at System.Windows.Forms.Control.WndProc(Message& m)
       at System.Windows.Forms.ButtonBase.WndProc(Message& m)
       at System.Windows.Forms.Button.WndProc(Message& m)
       at System.Windows.Forms.Control.ControlNativeWindow.WndProc(Message& m)
       at System.Windows.Forms.NativeWindow.DebuggableCallback(IntPtr hWnd, Int32 msg, IntPtr wparam, IntPtr lparam)
       at System.Windows.Forms.UnsafeNativeMethods.DispatchMessageW(MSG& msg)
       at System.Windows.Forms.Application.ComponentManager.System.Windows.Forms.UnsafeNativeMethods.IMsoComponentManager.FPushMessageLoop(Int32 dwComponentID, Int32 reason, Int32 pvLoopData)
       at System.Windows.Forms.Application.ThreadContext.RunMessageLoopInner(Int32 reason, ApplicationContext context)
       at System.Windows.Forms.Application.ThreadContext.RunMessageLoop(Int32 reason, ApplicationContext context)
       at Microsoft.VisualBasic.ApplicationServices.WindowsFormsApplicationBase.OnRun()
       at Microsoft.VisualBasic.ApplicationServices.WindowsFormsApplicationBase.DoApplicationModel()
       at Microsoft.VisualBasic.ApplicationServices.WindowsFormsApplicationBase.Run(String[] commandLine)
       at InkBlogger.My.MyApplication.Main(String[] Args) in 17d14f5c-a337-4978-8281-53493378c1071.vb:line 81
       at System.AppDomain._nExecuteAssembly(Assembly assembly, String[] args)
       at Microsoft.VisualStudio.HostingProcess.HostProc.RunUsersAssembly()
       at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state)
       at System.Threading.ThreadHelper.ThreadStart()

Which is not all that helpful...

To correct this you just need to set the target CPU in your project properties to x86.  To do this...

  1. right click you project in project explorer and select properties
  2. click on the Compile tab
  3. click on the Advanced Compile Options... button
  4. Set the target CPU as shown below.

image

What am I developing, you ask?  Time will tell ;-)

Wednesday, February 20, 2008 9:45:02 PM (AUS Eastern Standard Time, UTC+10:00) #   
Comments [0]  | 

 

Why are Microsoft holding SilverLight back?#

Are they you ask?  I think so and, quite frankly, it really annoys me.

SilverLight is a platform that offers a lot of potential to the tablet community as it opens the door to real ink on the web.  It is also a direct competitor of Adobe flash.  Flash is well established and SilverLight is the new kid on the block. 

To gain real acceptance in the market Microsoft need to convince developers to choose SilverLight over Flash.  The more developers that are using it the more widely the browser plugin will be deployed. 

So why are Microsoft still using flash on their sites?  I've seen this on a couple of MS sites lately - but tonight it was on Zune.net.  I don't get it.

Sunday, November 11, 2007 7:06:43 PM (AUS Eastern Standard Time, UTC+10:00) #   
Comments [1]  | 

 

Why are slates disappearing?#

The Mobile Tech Roundup team and Warner Crocker over at GBM are asking where the slates have gone.

Its true. Relative to the whole tablet market, there are fewer slates around now than there were. When I say "relative to the whole market" I am referring to the new form factors such is UMPCs and the new entrants such as Dell.

But why are the slates disappearing?

More accurately what is preventing slate adoption growing as rapidly as their keyboarded cousins?

I'd put the answer in three parts.

  1. Fear. People are use to having a keyboard and giving one up (albeit part-time) scares some fairly savvy users.
  2. Pen-abled applications - or more accurately a lack of. We need more applications that either expose more functionality when run on a tablet or are written explicitly for the tablet.
  3. Natural language Input is just not there yet. Many working age people can type faster thanthey can write.  And that percentage is only increasing. Speech is a good alternative and works well, but it is fairly resource intensive, and many smaller devices such as UMPCs just can't hack it. Not to mention it is simply not possible to dictate to your PC in many situations. I'm inking this post on the train, can you imagine the irritated looks I would be getting if I were talking to myself?

That may sound pretty dire, but does it mean that slates will only be a niche player? I think not.

Why? Because the first two of those points are addressable now.

The fear factor can be addressed by education. Teach the market that you can use a computer without a keyboard. Teach them that if you dock a slate it works just like a "normal" PC. We call this education of the market "marketing" and it has been sorely lacking since the tablet was launched in 2002. It is time for Microsoft and OEMs, especially slate specialists like Motion, Tablet Kiosk and Electrovaya to lift their game.

On the second point there are some really good pen-abled apps out there, but we need to see more marketing from the companies that develop that software. It's a differentiator, promote that fact. But we need more, too, so as a community we need to educate developers and most importantly demand pen features in the apps we use now.

The third point will be eased as hardware performance improves, but will not be eliminated (lMO) any time soon. We need at least the next version of the Windows OS. We can't write off Apple here, either. Now that we have all seen the i-phone you can imagine that a Mac tablet would challenge the UI paradigms we operate in.

Tuesday, November 06, 2007 7:52:11 PM (AUS Eastern Standard Time, UTC+10:00) #   
Comments [2]  | 

 

Is Loren writing a web based ink blogging tool?#
Tuesday, October 09, 2007 6:03:06 PM (AUS Eastern Standard Time, UTC+10:00) #   
Comments [0]  | 

 

Silverlight Ink SDK Sample Available on Microsoft Downloads#

Gavin Gear points out a cool sample available on the Microsoft website that demonstrates using its on the web with silverlight.

There's a new sample live on downloads.microsoft.com that I wrote a while ago that demonstrates implementing ink support in Silverlight using a reusable class called "InkCanvas" - InkCanvas code was originally written by Sam George here at Microsoft. This sample implements reusable functionality similar to the InkCanvas element in WPF.

Here's the download link.

Tuesday, October 09, 2007 5:57:38 PM (AUS Eastern Standard Time, UTC+10:00) #   
Comments [0]  | 

 

Loren Heiny, Ink, and Silverlight#

 I love seeing a tablet developer getting a bit of recognition... no pun intended :)

Via Gottabemobile:

If there is a developer out there more committed to getting Ink onto the web than Loren Heiny I’m not sure who it would be. Loren created a version of his SearchTip, using Siverlight, that allows a user to Ink a search query. Someone was watching and the SearchTip was recently mentioned in Microsoft’s Silverlight Showcase. Congrats, Loren!Silverlightsearchtip

Great stuff Loren!

Wednesday, October 03, 2007 6:42:22 AM (AUS Eastern Standard Time, UTC+10:00) #   
Comments [0]  | 

 

Experimenting with recognition and Silverlight#

 Loren Heiny has done something cool... again!

SilverlightSearchTIP

Remember the ole ActiveX-based inkable search tip I wrote awhile back which enabled you to search Google using handwritten queries? Well, now it has a cousin: a Silverlight-based version.

Check out the full post, then give the Silverlight Search Tip a whirl.

Monday, September 10, 2007 10:36:41 PM (AUS Eastern Standard Time, UTC+10:00) #   
Comments [2]  | 

 

Silverlight Released#

Silverlight 1.0 was RTW'd (released to Web) recently and is available for download here.

The 1.1 alpha was also refreshed. you con get both runtimes here.

what's the difference? Check the features matrix here.

Monday, September 10, 2007 10:16:21 PM (AUS Eastern Standard Time, UTC+10:00) #   
Comments [0]  | 

 

Inside the PressureLevels application#

Now that I have posted the PressureLevels utility I thought that I should give some insight into how it works - in case any real developers want to look into something similar. :)

While it is trivial to collect ink on a tablet using the controls provided by the Tablet SDK if you want more direct, low level access to stylus information then you need to use the Real Time Stylus API.  This is a pretty bare bones API that provides a stream of packets as the stylus moves around.  As a developer you can create a plug in that basically filters this information to just what you are interested and executes code every time on of those "events" fires.

I found this CoDe Magazine article by Marcus Egger to be very well written and extremely useful.

I have a class that contains this plug in that looks roughly like this:

Imports Microsoft.StylusInput

Public Class SimpleStylus
    Implements IStylusSyncPlugin
    Dim iLastPressure As Integer = 0

    Public ReadOnly Property DataInterest() _
    As DataInterestMask _
    Implements IStylusSyncPlugin.DataInterest
        Get
            Return DataInterestMask.Packets _
                Or DataInterestMask.StylusDown _
                Or DataInterestMask.StylusUp
        End Get
    End Property
    Private attachedControl As Form
    Public Sub New(ByVal form As Form)
        Me.attachedControl = form

    End Sub
    Public Sub Packets(ByVal s As RealTimeStylus, _
    ByVal data As PluginData.PacketsData) _
    Implements IStylusSyncPlugin.Packets
        Dim g As Graphics = _
           Me.attachedControl.CreateGraphics()
        Dim packetCounter As Integer
        For packetCounter = 0 To _
        data.Count - data.PacketPropertyCount _
        Step data.PacketPropertyCount
            Dim iX As Integer
            Dim iY As Integer
            Dim iPressure As Integer = 10
            iX = g.DpiX * data(packetCounter) / 2540
            iY = g.DpiY * data(packetCounter + 1) / 2540

            If data.PacketPropertyCount > 2 Then
                iPressure = data(packetCounter + 2)
            End If
            Console.WriteLine("P: " & iPressure & ", LP: " & iLastPressure)
            If iPressure < iLastPressure Then
                g.Clear(Form.DefaultBackColor)
            End If
            g.FillEllipse(Brushes.Black, _
                iX - iPressure, iY - iPressure, _
                iPressure * 2, iPressure * 2)
            iLastPressure = iPressure

        Next
    End Sub

    Public Sub StylusDown(ByVal sender As RealTimeStylus, _
    ByVal data As PluginData.StylusDownData) _
    Implements IStylusSyncPlugin.StylusDown
        Console.WriteLine("Stylus Down")
    End Sub

    Public Sub StylusUp(ByVal sender As RealTimeStylus, _
    ByVal data As PluginData.StylusUpData) _
    Implements IStylusSyncPlugin.StylusUp
        Console.WriteLine("Stylus Up")
        Dim g As Graphics = _
           Me.attachedControl.CreateGraphics()
        g.Clear(Form.DefaultBackColor)

    End Sub

    Public Sub CustomStylusDataAdded( _
    ByVal sender As RealTimeStylus, _
    ByVal data As PluginData.CustomStylusData) _
    Implements IStylusSyncPlugin.CustomStylusDataAdded
    End Sub

    Public Sub [Error](ByVal sender As RealTimeStylus, _
    ByVal data As PluginData.ErrorData) _
    Implements IStylusSyncPlugin.Error
    End Sub

    Public Sub InAirPackets(ByVal sender As RealTimeStylus, _
    ByVal data As PluginData.InAirPacketsData) _
    Implements IStylusSyncPlugin.InAirPackets
    End Sub
    Public Sub RealTimeStylusDisabled( _
ByVal sender As RealTimeStylus, _
ByVal data As PluginData.RealTimeStylusDisabledData) _
Implements IStylusSyncPlugin.RealTimeStylusDisabled
    End Sub
    Public Sub RealTimeStylusEnabled( _
ByVal sender As RealTimeStylus, _
ByVal data As PluginData.RealTimeStylusEnabledData) _
Implements IStylusSyncPlugin.RealTimeStylusEnabled
    End Sub

    Public Sub StylusButtonDown( _
    ByVal sender As RealTimeStylus, _
    ByVal data As PluginData.StylusButtonDownData) _
    Implements IStylusSyncPlugin.StylusButtonDown
    End Sub

    Public Sub StylusButtonUp(ByVal sender As RealTimeStylus, _
    ByVal data As PluginData.StylusButtonUpData) _
    Implements IStylusSyncPlugin.StylusButtonUp
    End Sub
    Public Sub StylusInRange(ByVal sender As RealTimeStylus, _
ByVal data As PluginData.StylusInRangeData) _
Implements IStylusSyncPlugin.StylusInRange
    End Sub

    Public Sub StylusOutOfRange(ByVal sender As RealTimeStylus, _
    ByVal data As PluginData.StylusOutOfRangeData) _
    Implements IStylusSyncPlugin.StylusOutOfRange
    End Sub
    Public Sub SystemGesture(ByVal sender As RealTimeStylus, _
ByVal data As PluginData.SystemGestureData) _
Implements IStylusSyncPlugin.SystemGesture
    End Sub
    Public Sub TabletAdded(ByVal sender As RealTimeStylus, _
ByVal data As PluginData.TabletAddedData) _
Implements IStylusSyncPlugin.TabletAdded
    End Sub

    Public Sub TabletRemoved(ByVal sender As RealTimeStylus, _
    ByVal data As PluginData.TabletRemovedData) _
    Implements IStylusSyncPlugin.TabletRemoved
    End Sub
End Class

In the data interest mask I state that I am interested in StylusDown, StylusUp and Packets events.   This means that every time the stylus comes into contact with the screen or is lifted from the screen the StylusDown and StylusUp subroutines respectively will run.  I use the Stylus up event to clear the drawing so that when you lift the pen you get a clean slate ('scuse the pun).

The workhorse is the packets subroutine. A packet is generated every time there is new data to send.  This will include at least an x and y coordinate and may include a pressure level.  What this routine does is convert the X and Y coordinates to screen coordinates (the digitizer has a much higher resolution than the display), and if there is a pressure level it converts that to the radius and draws a circle on the attached control (which is the main form you see when you run the app.

The other subroutines are just stubs that could be used if you edited the data interest mask.

On the main form I just use the load event to instantiate a RealTimeStylus object then add the SimpleStylus plugin in the class above and pass it the form itself as the attached control.  Here's the code for the main form.

Imports Microsoft.StylusInput

Public Class Form1
    Inherits System.Windows.Forms.Form
    Private rts As RealTimeStylus

    Private Sub Form1_Load _
             (ByVal sender As System.Object, ByVal e As System.EventArgs) _
             Handles MyBase.Load
        Me.rts = New RealTimeStylus(Me)
        Dim plugIn As New SimpleStylus(Me)
        Me.rts.SyncPluginCollection.Add(plugIn)
        Me.rts.Enabled = True
    End Sub
End Class

And that is really all there is to it.  Pretty cool that you can get access to such low-level information so fast, eh?

Tuesday, August 21, 2007 10:25:17 PM (AUS Eastern Standard Time, UTC+10:00) #   
Comments [0]  | 

 

Download the pressure levels utility#

I previously posted about a little utility that I was working on that shows off the pressure levels detected by all most active digitizer tablets.  (Rob Bushway pointed out in a comment that not all active digitzers present pressure information to the OS).

Well - I've not had much time do more work on the util but I have decided to release it as is for people to have a play with.

It was written against version 6.0 of the Microsoft.Ink assembly - so in theory it will require Vista.  I don't have any XP tablets to test it against but I would not expect it to work.

Basically you run it up and as you press down in the window a circle dynamically sizes around the tip of the pen - the radius is relative to the pressure level being recorded at the time. As pressure decreases I have to refresh the drawing area so you can see the new circle, which causes some flickering, but you can still see what is going on.  If you run it on a touch screen device or on a device without an active digitizer it will work, but it is not that interesting because these devices always return the same value for pressure (if at all).

Download the tool here - it is really just a toy with no real use, but any feedback is appreciated.  Guaranteed to provide minutes of entertainment or your money back.

Tuesday, August 21, 2007 9:59:16 PM (AUS Eastern Standard Time, UTC+10:00) #   
Comments [1]  | 

 

Little app to show off pressure levels#

One of the cool thingsabout active digitizersis that they arepressure aware. Thedigitizers in most Tablet PCs can detect256 levels of pressure,whereas some of theeternal ones artists usecan detect 512.

While I was at TechEd Australia I had a cool sideline conversation with a chap from Wacom. My colleague Lee was with me at the time and be asked this guy if they had any little utils that could be used to show off pressure awareness in tablets. The answer was no, but we all agreed that it was a cool idea. I foolishly opined that it would be easy to make one, hence volunteering.

I'm still tinkering and will release code soon, but I'm using the real the stylus API to detect the pressure levels and render a circle where the radius is relative to file pressure applied.

Still a bit rough but the Gif below might give you an idea of what it looks like.

PressureLevels

Monday, August 20, 2007 4:25:15 PM (AUS Eastern Standard Time, UTC+10:00) #   
Comments [2]  | 

 

How about some ink enabled Silverlight controls?#

Frank LaVigne points to a good collection of Silverlight controls he found recently:

I've been working a lot on WPF lately and with the new CTP's of Expression Blend, I've been starting to play around with Silverlight.

Much to my surprise (and perhaps horror) there aren't a lot of controls built into the Silverlight runtime. 

Fortunately, ComponentOne has been working on that and you can see what they've been up to in their labs.  Their control suite for Silverlight, called Sapphire contains the following:

  • textbox, masked textbox, numeric textbox
  • combobox
  • lists galore
  • layout controls: stackpanel, hyperpanel, etc.
  • date pickers
  • color picker, sliders, etc.
  • Much, much more

I wonder ... has anyone made ink enabled Silverlight Controls they are sharing??

Tuesday, August 14, 2007 5:38:35 PM (AUS Eastern Standard Time, UTC+10:00) #   
Comments [0]  | 

 

Every form more than 600 pixels wide is a failure#

One thing that really irks me is some bits of Vista just don't fit on a 800x600 screen in portrait mode.

See how the right side of the dialog is off the screen?

This is just poor design. The minimum supported resolution for Vista is 800x600. Vista includes tablet functionality. Tablet screens rotate.

If you are building Vista apps assume that screen resolutions will vary and make sure they are still readable at 600 wide. Good design would have the above form resize.

Wednesday, July 25, 2007 10:27:01 PM (AUS Eastern Standard Time, UTC+10:00) #   
Comments [1]  | 

 

How To: Create an Ink-Enabled Sidebar Gadget Using Silverlight#

While I was at TechEd in Orlando I sat in on a great session by  Dr Neil Roodyn on developing sidebar gadgets.  In his session Dr Neil reminded us all that SideBar gadgets are just mini HTML applications.  I had the thought that now that we have Siverlight with great ink support we could probably knock together some pretty cool gadgets that leverage Silverlight to provide ink functionality.

Now Gavin Gear not only confirms that this is so - he provides and example.  Pretty cool.

In this post, I’ll show you how to use Silverlight to create an inkable surface on a sidebar gadget.

Here’s the example running on my desktop:

 

Check out the full post here.

Saturday, June 16, 2007 10:34:06 PM (AUS Eastern Standard Time, UTC+10:00) #   
Comments [0]  | 

 

Tablet Meetup @ TechEd#

If you are @ TechEd 2007 in Orlando and you love, have, want or develop for tablet PC then we should catch up.

As it happens there is a Tablet Developer’s Birds of a Feather session going on at  Thursday, June 7, 2007 at 2:45 PM, in Room S331.This is being moderated by fellow Tablet MVP Frank LaVigne.  It further happens that there is a break right after this session.

Perfect! I'll be at the BOF session and my suggestion is that we meet outside room S331 at 4:00 PM for a little ink geekiness.

If you are interested then come along and look for me. I'm the guy with the shiny head holding an LS800.

Thursday, June 07, 2007 8:51:06 AM (AUS Eastern Standard Time, UTC+10:00) #   
Comments [0]  | 

 

Frank does Tablet @ TechEd#

Last year at TechEd in Boston I struggled to find much Tablet content. There was one session on getting started with mobile PC development that had some ink bits in it.

This year - sessions number one (after the keynote) is Tablet PC as a Smart Client Platform presented by Tablet MVP Frank La Vigne.

Frank covered:

  •  What is a tablet -stressed that tablet is a full PC and that they run the full version of the .net framework.
  •  Overview of tablet form factors.
  •  Some basic tablet usage demos including the TIP, handwriting personalisation is Vista, and ink in OneNote, PowerPoint and Outlook.
  •  Positioned tablets in the enterprise against other mobile devices
  •  Talked about the cost of manual solutions -"paper is expensive" :) Great quote!
  • Adding ink and reco support to a windows form via the ink collector object in the tablet SDK.
  •  Ink Analysis
  •  Cool demo of live blogging in ink, converted to text via ink analysis and posted live

All and all a great sessions - well done Frank!

Tuesday, June 05, 2007 3:57:32 AM (AUS Eastern Standard Time, UTC+10:00) #   
Comments [1]  | 

 

Three big events for the tablet PC recently#

Since arriving in Sydney I have been too busy getting set up and too disconnected to stay on top of my feeds. As a result I'm using some downtime on a flight (to TechEd. yeah baby!) to catch up on a backlog of things that I either have not gotten to yet or flagged to follow up and have not gotten back to.

As such I am reading about things that have happened in the last couple of weeks all at one. I've noticed a trio of events that are unrelated, but that I think speak volumes about the future of the tablet experience.

The first event was the release of the Gateway CX210X Tablet PC for only US $899.99 as reported by GottaBeMobile. While certainly no light weight this is an impressive entry level tablet at a very good price. Event 1: the entry level tablet price drops.

The next event that caught my eye - of course - was the announcement of Microsoft Surface.

Picture a surface that can recognize physical objects from a paintbrush to a cell phone and allows hands-on, direct control of content such as photos, music and maps. Today at the Wall Street Journal’s D: All Things Digital conference, Microsoft Corp. CEO Steve Ballmer will unveil Microsoft Surface™, the first in a new category of surface computing products from Microsoft that breaks down traditional barriers between people and technology. Surface turns an ordinary tabletop into a vibrant, dynamic surface that provides effortless interaction with all forms of digital content through natural gestures, touch and physical objects. Beginning at the end of this year, consumers will be able to interact with Surface in hotels, retail establishments, restaurants and public entertainment venues.

The intuitive user interface works without a traditional mouse or keyboard, allowing people to interact with content and information on their own or collaboratively with their friends and families, just like in the real world. Surface is a 30-inch display in a table-like form factor that small groups can use at the same time. From digital finger painting to a virtual concierge, Surface brings natural interaction to the digital world in a new and exciting way.

“With Surface, we are creating more intuitive ways for people to interact with technology,” Ballmer said. “We see this as a multibillion dollar category, and we envision a time when surface computing technologies will be pervasive, from tabletops and counters to the hallway mirror. Surface is the first step in realizing that vision.”

Undeniably cool. Also undeniably not a tablet. Make no mistake though, this is an important innovation and it is only a matter of time before multipoint touch technologies arrive in the mobile PC space.

The third event that struck me as really important was the release of the Google Gears beta. Kevin Tofel over at jkontherun provides the official Google description:

    • A local server, to cache and serve application resources (HTML, JavaScript, images, etc.) without needing to contact a server
    • A database, to store and access data from within the browser
    • A worker thread pool, to make web applications more responsive by performing expensive operations in the background

The exciting thing about Gears is that it offers another approach for developers to provide offline capability to their applications when they are running on occasionally connected mobile PCs. More tools will lead to more apps that are mobile friendly, and that will lead to more you can do when you are moving between pockets of connectivity.

In short these events portend a richer tablet and touch experience, more flexibility at a cheaper price. Bring it on!

Sunday, June 03, 2007 1:49:53 PM (AUS Eastern Standard Time, UTC+10:00) #   
Comments [0]  | 

 

Inking on the web is a whole lot easier now#

If any of you have tried to ink enable web applicaitons you will know that it has historically been far from