-
As I continue my work on learning / using Windows 7 as a platform for application development, I’ve (finally!) gone beyond the multi touch features that I’ve written about to date. I’ve done this for two reasons:
1) Writing a Windows 7 applications that ONLY features multi touch would be overlooking a whole host of other new features.
2) I’ve been asked to deliver multiple presentations on developing for Windows 7 in general (rather than specific only to the new multi touch capabilities). The first ‘batch’ of these presentations will run at TechEd Africa, in Duban from August 2 to August 5. I do expect to deliver many more as well (if you are a SoCal UG and would like me to speak on some aspect of Windows 7 client development, please send me a request and I’ll get your UG on my fall calendar now – I expect to make at least one, maybe two trips to NorCal as well this fall, so I’ll gladly take requests for NorCal UGs as well).
Here are the 3 sessions on Windows 7 client development that I am scheduled to deliver. They will be recorded as well.
To that end, I’ve expanded the scope of my studies. My primary resources are the following:
1) Channel9 MSDN videos on Windows 7 development. Most of these have been produced by corporate evangelist Yochay Kiriaty. Yochay’s blog has also proven to be a valuable resource. I’ve also been working with him directly.
2) TechEd US Windows Client developer presentations. As an attendee / staff, I am able to listen to all sessions online. I do believe that many of this session content will be made available to the general public via other deliveries.
3) Windows 7 Developer Kit – this includes not only code samples, but also Hands on Labs. I’ve also downloaded the current version of the .NET wrappers – called the Code Pack.
4) The MSDN Windows 7 Developer area. This aggregates nearly all Microsoft content that is being produced. I am also looking at the site ‘Build a Better App’ which includes tutorials and more.
So, I’ll be expanding the scope of this series to include more features in my Windows 7 application. The first feature that I’ll talk about is the enhanced Taskbar. Rather than list features and include screenshots, I simply made a short screencast.
In the Windows 7 Developer Toolkit (referenced above), there is a good hands on lab (with sample managed code) which takes you through the steps in working with the taskbar. These steps include the following options for your application:
1) Jumplist Integration – which includes file association registration, customization of common file dialogs and inserting custom items and/or categorizing those items in the jumplist.
2) Thumbnail customization via customization of Aero peek via thumbnail clipping or via a completely custom thumbnail view
3) Thumbnail display of overlay icons and/or progress bars.
There are many other resources to help you learn to code for the Windows 7 taskbar. Another good location is the section on this on MSDN.
As with the taskbar, I’ve also found quite a few interesting new features around search and libraries. I’ve made another screencast to showcase these features.
As with the taskbar customization, the Windows 7 Developer Kit includes a well-written hands on lab about implementing Libraries (called ShellLibraries in the wrappers).
The best resource I have found in implementing Federated Search is the whitepaper downloadable from us. This whitepaper does a good job explaining the OpenSearch standard (i.e. a compatible web service). It also includes step-by-step instructions for you to create an OSDX file.
Next up…the new Sensor API.
Happy coding!
-
Enjoy this short video shot by one of the attendees of the recent demofest at MS Irvine, CA. Woody Pewitt is demoing the MS Surface here. Thanks to Philippe Lewicki for the video.
-
My session is at SoCalCodeCamp at UCSD room 105 at 2:00 pm – I am looking forward to showing and telling a good number of my developer friends about the joy of multi touch application development in Windows 7 as I know it so far. I’ll post the deck in advance, as I normally do, so you can ask all those tough questions during and after my presentation.
In case you are wondering I do plan on returning to my ‘build a Win7 app’ blog series, ironically I am preparing content for three presentations on Windows 7 as well as working on my app, so I ask for a bit of patience…Also, I’ve had quite a few requests to record this first presentation, so I’ll try to get around to doing that next week as well.
Happy coding!
-
Here’s the deck from my prezo at SoCalCodeCamp in San Diego (UCSD) – enjoy! Examples included have the following availability – SmallBasic is a free download, Kodu is NOT available to the general public on the PC. Kodu will be released as an XBox 360 game soon.
-
Ah but this isn’t a simple consideration. As I’ve been digging in, getting ready to build my first Windows 7 multi touch application, I’ve found out just how much I have to learn! For starters I am by no means an expert in WPF (Windows Presentation Foundation) development. This is, of course, the core of any Windows application UX. Because I have done quite a bit of work in Silverlight, I thought I could use my work there as a basis for working in WPF. Well, that’s kind of right – both technologies do use XAML and I can work in either Expression Blend or Visual Studio, but, well, there’s a whole lot that is not common between the two. I found this great whitepaper on CodePlex on just that topic, i.e. ‘Microsoft Silverlight / WPF Comparison Whitepaper’ that I recommend you read if you have been working in Silverlight, but not WPF.
If you haven’t been working in either SL or WPF, then you’ll need to get some basics of WPF first. How you get that depends on how you like to learn. I usually start with a book, then watch some webcasts, then work on some hands-on-labs. By the time I get to the last one, I am usually messing around building stuff.
For a WPF book, I like ‘Programming WPF’ by Chris Sells and Ian Griffiths
There are quite a few short screencast-style videos on WPF on the Windows Client site. You’ll certainly want to see the one on how use XAML in WPF.
The Windows Client site also contains WPF hands on labs – for some you use Visual Studio, for others you use Expression Blend. Nothing beats actual coding for learning, does it?
Now, there are of course other ways to learn WPF, for example our own local RD and MVP Paul Sherriff will be presenting a series of FREE events around SoCal this summer and fall around WPF development. He also plans to host these events via the web for those of you who can’t make it to his live events (watch my blog for dates). Also, I’ve been featuring WPF developers on MSDN geekSpeak lately. This week (Wed – noon PST) we host Robert Altland from Neudesic on WPF Accessibility coding for example. It is only AFTER you have a basic understanding of WPF, that you can begin to think about how you are going to code your multi touch application.
One other possible consideration is whether you’ve done any programming on the MS-Surface API. I realize that a very small subset of developers have actually worked with this, however, if you have, then you’ll be interested to know that we announced that we intend to eventually aim for convergence between the touch APIs in the .NET framework 4.0 and those in the MS-Surface 2.0 (via a combination of wrappers and API re-work). Here are a couple of architectural diagrams to clarify – first is where we are now, i.e. Vista and MS Surface 1.0.
Next is the Windows 7 release. Of course, we’ve announced that October 22, 2009 will be the release date for this. You’ll note that we’ll be including the core Multi-Touch API in Windows 7.
After the Windows 7 release, we’ll be releasing both Visual Studio 2010 with .NET Framework 4.0 and also the MS Surface 2.0. You can see that WPF 4.0 will include Multi-Touch APIs and Controls. You’ll also note that the Surface SDK 2.0 will include an updated version of the Multi-Touch API and Controls.
If you wish to code multi touch applications for Windows 7 now, then you have two choices at present. The first is to use .NET framework 3.5 (on Visual Studio 2008) and wrappers that we provide that allow you to code ‘multi-touch-like capabilities’. The ‘good news’ about this solution is that you can use it now to get a jump start on Windows 7 application development. The ‘bad news’ is that the programming model for multi touch applications will change in the .NET framework 4.0. You can, of course get a beta of Visual Studio 2010 which includes the .NET framework 4.0, so if you wanted to, you could start working with the multi touch APIs in WPF 4.0 from the beta now.
Although there is some information out there on Windows 7 multi touch application development using .NET framework 4.0 – notably a series of multi touch videos on MSDN Channel 9, I am going to use the .NET framework 3.5 to create my first application. My primary reason is a practical one, that is, as I mentioned in a previous blog post, in addition to being an educational exercise, my intent with this first application is also practical – I want to actually use it at the next few WomenBuild events. To that end, the less beta software the better, right?
Now that I’ve decided which platform and development environment(s), I am FINALLY writing some code! Today I am working through the newly-released Windows 7 RC Training Kit for Developers (as well as hacking around in the other multi touch samples that I’ve got installed on this laptop).
The very first thing you’ll want to do is to verify that your hardware will supports multi touch. To do this you’ll need to use the Windows 7 Integration Library Sample (included in the training kit linked above) which includes some helper .dlls that allow you to write code that picks up stylus events.
To get started create a new Windows>WPF application project in your favorite language (I’ll be using C#) and add references to the two helper .dlls named Windows7.Multitouch and Windows7.Multitouch.WPF as shown below.
Next add a new item to your project, a WPF>Page, name it ‘MainWindow.xaml’, Then in your MainWindow constructor (in MainWindow.xaml.cs), add the code shown below (ending in .IsMultiTouchReady). Compile and run your project and, of course, you are looking for the window shown below.
if (Windows7.Multitouch.TouchHandler.DigitizerCapabilities.IsMultiTouchReady)
{
MessageBox.Show("Multitouch is available");
}
Whew – what a lot of preparation BEFORE coding. As this blog series continues, I’ll be digging into the details of coding to support multi touch applications.
I’m scheduled for two upcoming presentations on Windows 7 multi touch applications. One is this Friday morning, it is for Microsoft Certified Trainers only (at the MCT virtual summit). So, if you are a MCT and are reading this – join me Friday, June 19th at 9am PST. This session will also be recorded for all MCTs.
Monday, June 22 at 6:30 I am hosting a Windows 7 / Surface demo-fest for Designers at the Microsoft Irvine office. You must register if you wish to attend, send me mail via this blog if interested in attending and I’ll get you on the list.
Also, I’ll be presenting the ‘Windows 7 Multi Touch Application Development’ session at SoCalCodeCamp at UCSD in San Diego on Sat, June 27 (sometime in the afternoon, watch the site for the schedule) as well.
Last but not least, I’ll be at the Windows 7 Installfest at QuickStart Irvine this Thursday, from 1pm to 5pm. I’ll be there to install Windows 7 RC on my NEW 64-bit HP TouchSmart tx2 (thanks to Scott Kerfoot!). Up until this point, I have been working on a 32-bit version of the same machine.
-
My curiosity often takes me down new pathways. Just like a typical dev, after stating the business case, writing out the problem, writing the key use cases and ‘hiring’ a designer, I am ready to open up Visual Studio and start coding my first multi touch Windows 7 application, right? Nope, wrong – way wrong. So, I was reading the sample code that I’ve managed to find, or get the from the product team and I realized a little problem. Which turns out to be a really big thing. Just what exactly constitutes a touch gesture anyway? Coming from the simple world of mouse clicks, i.e. either it’s a single left click, a single right click, a double left click, etc…gestures have to be TRANSLATED in a way that will be intuitive and natural. Given my background and general interest in linguists and translation problems, I am, of course, now totally fascinated with understanding more.
Also, I’ve been studying a bit more on the details behind the different types of hardware that support AND on what is native to Window 7 and what I can choose to code. Well, well, before I write that code, I think it will be beneficial to share what I’ve learned with you, so here goes. First on the hardware side:
1. Capacitive touch – such as HP TouchSmart tx2, Dell Latitude XT, works by a finger (and it must be a finger, or, less commonly, a specialized stylus) touch disrupting an electrical field which covers the entire screen of the device, it can be single, dual or multi-touch supported – either built into the device or can be overlayed (N-Trig) – be aware that you may need to install additional drives to make maximum use of your hardware. This is the more expensive multi touch option.
2. Infrared touch – such as MS-Surface, HP TouchSmart, works by infrared field of light (usually built into the corners or the frame of the device), anything (i.e. any object) can disrupt that field, ‘touch’ is capture on or slightly above the surface of the device. NextWindow sells both overlays and integrated systems. Infrared is cheaper to scale is often used in over-sized wall displays.
Wikipedia on the topic ‘Touchscreen’ has a bit more detail if you are interested – here.
Next on the software side – I have found a key learning area is to take a look at what we’ve done with MS Surface. Yes, I know we are NOT here to talk about programming the Surface table, but let’s face it, those folks have a few years practice on this whole natural gesture thing and we shouldn’t just blow that off. To that end on my weekly geekSpeak show last week, we hosted developer Brad Cunningham from InterKnowlogy. On the show, he talked about the whole ‘move from clicks to touches’ application development migration and I really learned a bunch. During his presentation, Brad had a great suggestion to help end users to understand supported gestures. In a newly created application, his company is going to include an opening simulation to help those users understand how to use gestures when playing the game. Brad also talked about the paradigm shift from GUI to NUI (new user interface). He recommended the book ‘Designing Gestural Interfaces’ by Dan Saffer

Continuing this discussion, I am going to attempt to list levels of gestural support built into Windows 7 (and some pre-loaded applications). I will continue by listing the types of gestures that you can code. I will also translate some gestures to mouse actions. Brad made a great point when he noted the a finger isn’t as precise as a mouse pointer, so some actions that are relatively easily done with a mouse, such as drag and drop really don’t translate well from a usability standpoint to a touch-only device. Below is a starter list to translate touch gestures from mouse clicks (most of which Brad provided, I did add some other items from other documentation). I’d be really interested to hear any feedback you might have on this list as well!
| Touch Gesture(s) | Mouse Action(s) |
| Single finger tap | Mouse up, Mouse down (left click) |
| Double tap with single finger | Double left click |
| Flick single finger | Click and toss |
| Fling single finger, tap to stop | Click and toss to scroll, click to stop |
| Fling double finger, tap to stop | none |
| Press and hold with single finger, tap with second finger | Right click |
| Slide | Click and drag to scroll |
| Double finger pinch to shrink or drill in on a specific location | Roll the mouse wheel, but cannot select a specific area (of a photo for example) |
| Double finger spread to enlarge or drill out | Roll the mouse wheel |
| Single finger drag to move or drop | Click and drag |
| Multiple finger drag to move or drop | none |
Reading this list should start to give you an idea of the potential complexity around touch application architecture. Another interesting consideration is whether you will make any changes to your UI depending on whether a user interacts with a mouse or with touch. An example of how this has been implemented in Windows 7 is in the new jumplists (for an example look – here). If you invoke a jumplist with a mouse click, then the spacing between the items on the jumplist is narrower than if you’ve invoked that jumplist via touch. The thinking behind this is is that you need more space to be able to select jumplist items with your finger than with a mouse. If you aren’t familiar, a jumplist is a list of most commonly chosen ‘next’ items, invoked by right clicking an application in the taskbar. Below is an example from Windows Media Player.

Another consideration when creating touch enabled applications is understanding the core Windows 7 OS settings. There is a new applet in the Windows 7 Control Panel called ‘Pen and Touch’ that allows you to set up these core settings for touch. You’ll note that ‘Double-tap’ by default is set to be equivalent to a mouse double-click, and that ‘press and hold’ equals a mouse right-click, but also that these default settings are adjustable at the OS level.
It‘s probably time to take a look at touch in action. Below are a couple of short videos, in each I demonstrate a couple of touch enabled applications. Some applications ship with Windows 7 (Paint), other samples that you can get from either the Windows 7 SDK or the Windows 7 Touch Pack. First the lagoon screen saver:
The next demo video shows how built-in touch capabilities work with some applications on built in to Windows 7. I show IE8, the XPS Viewer and Paint as examples. Here I also mention the concepts of ‘good, better or best’ touch applications. I’ll explain this idea in more detail later in this blog post.
The last video shows some examples from the Windows 7 SDK samples of manually coded applications that support either single gestures or multi touch. For this last section, you can easily get the source code as well.
Now that you are as intrigued as I am (which I assume is true since you are STILL reading this long blog post!), let’s get to some architecture concepts. First thing to understand is the idea of ‘Good, Better or Best’ touch applications. Of course, the hardware capabilities must support whatever level you wish to implement. Here’s a chart to get us started.
| Type | Support | Built in Apps | Description |
| Good | built in | IE8 | single finger, simple select, scroll |
| Better | you code/WM_GESTURE | XPS Viewer | simple gesture, zoom, pan |
| Best | you code/WM_TOUCH | Paint | multi touch also possibly inertia |
One thing to be aware of is that I am talking here about coding with .NET 4.0. Some of these gestures can be captured using .NET 3.5, but not in exactly the same way. Even within .NET 4.0 there are variations between beta one and beta two, such as those around Windows 7 WM_Touch manipulations or raw gestures. For example beta one supports manipulations only, (which can be also be done in .NET 3.5 by working with stylus events), beta two can pick up raw gestures. As I’ve mentioned previously there are some managed wrappers available already. Also of note is that our teams are working on converging the Surface and .NET 4.0 codebases – for more detail see Channel9 videos on the basics of Window touch applications – here.
We’ve obviously got lots more to think about in the new world on touch based application programming. Hopefully this blog post has got you thinking. More detail as I start to work on my first application over the next few weeks…
-
Now that I’ve written a rough application spec, (see previous blog post), am I finally really to start coding? Nope, not yet. I want to mockup my UI and also to build my database. For the former task, I’ve decided to enlist an experienced designer. I am doing this for a couple of reasons. The first is practical. I, like most developers, am just not very skilled at designing UI. Second, I am curious as to learning more about how designers who have used competitive products will be able to use our design products. Third, I learned, as an architect, prior to joining Microsoft, that good UI results in quicker acceptance and better usability. Although I do plan to create the WomenBuild feedback capture application as an exercise for this blog, if I am going to actually build an application, then I might as well do it in a professional way – for both your benefit and mine. It is satisfying when the stuff we build actually gets used, isn’t it?
So, what information am I providing to my designer and in what format? Also, what preparation did she use to transition her creative skills to Microsoft’s tools and products? I’ll take the second question first. I am working with Glenda Hoffman, from Glenda Hoffman Design. She is an experienced web and print design professional. She’s been freelancing for well over 10 years now. She is very new to Microsoft’s products and tools. Glenda recently attended Mix09 to get an idea of just we have to offer and was impressed and intrigued. Like many designers she is kind of set in her ways. So it will be an interesting for challenge for both of us to see how productive Glenda can be working in the new world. To that end, she asked me, “What do I need? How do I learn quickly?”
Like most designers she does not own a PC and she prefers not to run a Microsoft OS on her MacBook. So, I got her set up with a copy of Virtual PC and Vista. In her VPC, I’ve installed Expression Blend 3 CTP. For real production work, I would not use a beta, but I do want to focus on latest and greatest in this series. In addition to watching the WPF sessions from Mix09 online, we found a series of free courses on Expression Blend on Lynda.com.
Also we are BOTH going to be listening in to the XAML-fest online learning series, that is running this week (June 1 through 5).
While I am working with Glenda on the UI mock-ups / initial design, I am also thinking about the back-end – that is the database. Can’t help that – I’m a plumber by nature. As I mentioned previously, I plan to use SQL Server 2008 Express with Advanced Services. I really like that this FREE edition includes both SQL Server Management Studio and SQL Server Reporting Services (which no longer requires a IIS install). Also as mentioned previously, I’d like to use some of the new features in SQL Server 2008, particularly the geo-spatial data types.
Over the next few days while she and I go back and forth on the UI and I work on the DB design, I’ll keep reading up on all of the Windows 7 features, just to make sure I completely understand what I have to pick from BEFORE I start coding. I’ll report back in a couple of days with the initial design and then FINALLY we’ll get into the Windows 7 APIs.
-
If you have been following this series then you are probably raring to open VS and get coding. I mean, c’mon, we are developers here and that’s what we do, right? Well, yes – eventually. But one last thing before we start that. We need to take a more comprehensive look at new features in Windows 7 and then think about how to apply those features to a particular business problem. For the purposes of this series, I am going to code an application that is designed to solve a real-world problem.
Most software is, of course, built in a multi-person environment. Having some kind of software development lifecycle process (and tools) is really critical to success, particularly as team size increases. It goes without saying that developing on a new platform is risky. As background I am actually a certified MSF trainer and have worked with a number of SDLs in practice – everything from CMMI to Agile. Tooling to support your chosen SDL is important as well. As some of my regular reader may know, I have volunteered for many years on an electronic medical system project being deployed nationally in Zambia – about 4 years our volunteer team procured Visual Studio Team System and I can say without question that the tooling in combination with the adoption of a SDL has improved the outcome of the development process.
Of course for this blog it’s just me coding so all this talk of SDLs and tooling might seem extraneous. I do feel it’s important to reiterate it here though. Using proven methods and tools reduces risk and improves project outcomes – it’s not something to skip in the real world. Since we are talking about the real world, do you have any idea of the failure rate of software projects? Failure is defined as both producing nothing or producing something that is not scope complete and/or is over budget. Given these parameters, the failure rate is an astounding 75%. Think about it, think hard. Would that be acceptable in any other industry? Promise me that you’ll select and use a SDL and quality tools BEFORE you start developing mission critical application on Windows 7.
To that end in our process, we’ll next take a more comprehensive look at new features in Windows 7. I am going to list features and briefly describe them here. I will post published whitepapers with more detail on each feature to one of my SkyDrive folder and link them here, so if you are interested in drilling down on a particular new feature, you can start with that whitepaper. Another good place to do to get an understand of new Windows 7 feature for developers are the videos on MSDN Channel 9 – go here.
I’ll list “Lynn’s top 10” new Windows 7 features in the order that I like them (it is my blog after all).
1) Touch-enabled applications – single touch, single gesture or multi-touch, also inertia detection – for inspiration grab the just-released Windows 7 Touch pack – here.
2) Sensor-aware applications – probably the most popular is the low light detector, there are endless possibilities though
3) Handwriting recognition with custom dictionaries – also Math recognition
4) Power usage monitoring and management
5) OS UI enhancements - Jumplists, ‘scenic’ (Office) ribbon, enhanced taskbar and gadgets
6) File management enhancements - Libraries, file (type) visualizations
7) Improved graphics – improved animation framework, High DPI support, high fidelity graphics with DirectX (via GPU manipulation)
8) Federated Search – including integration with OpenSearch
9) Device experience platform and improved biometric framework
10) Improved media platform – new formats, new devices and simpler programming
So what is my business scenario? What application will I build and why will I build it on Windows 7?
As some of you may know I work on many Women in Technology programs at Microsoft. One that is particularly near and dear to me is WomenBuild. It’s a new type of networking event for both men and women who wish to work on the problem of too few women in technology. Currently there is a painfully manual process that is part of WomenBuild and I am thinking that a Windows 7 application might be just the thing to take Women Build to the next level.
Here’s the business problem in plain English: WomenBuild currently uses manual (on paper) recording of attendee feedback after each round of building a model with LEGO bricks to represent his/her story in answer to the question being asked. This cumbersome process is inefficient and results in overhead, lack of feedback / post event follow up and is a general bottleneck.
Here’s the solution concept: Create a Windows 7 multi-touch application that allows WomenBuild participants to take photos of their models and to zoom in to highlight key areas of those models. Allow cropped models to be annotated with drawings and or text via touch. Allow verbal and/or text annotations as well. Capture all information to a relational database. Allow badge scanning to identify participants. Windows 7 features to be used – multi-touch, sensors (badge scanning), handwriting recognition, (possibly) custom library and file visualization (i.e. picture of model and caption). Oh, this isn’t a Windows 7 thing, but I do plan to use the new geospatial data types in SQL Server 2008 (yes, they are included as part of SQL Server Express). I am not really sure how I will capture and/or visualize those results, but I do think they will add business value, i.e. ‘WomenBuild participants in region A think x, y, z; while in region B, they think g, h, i.
That’s what I am going to build for Windows 7. What are you going to build? I’d be interested to hear more, comment via this blog or via the facebook group ‘Windows 7 Developers’.
-
Starting to develop for a new platform means some software setup, I’ll detail what I am using, list possible variants on my configuration and include links to everything so that you can get set up quickly and easily as well.
Software needed falls into three main categories – the platform (OS) itself, developer tools and then software development kits (SDKs) and samples. I will be as complete as is possible here, however, I am sure some of you reading are using cool tools or samples that I haven’t listed – please share what your are using via blog comments (I’ll cross-post your tips on the facebook group ‘Windows 7 Developers’ as well).
1. OS – download Windows 7 RC in either 32 bit or 64 bit. I am using a 32 bit version for testing. From the TechNet website, here are the minimum machine requirements:
1 GHz 32-bit or 64-bit processor, 1 GB of RAM, 16 GB of available disk space, Support for DirectX 9 graphics with 128 MB memory (to enable the Aero theme), DVD-R/W Drive. The file will come down as an .iso file. Use a utility to convert it to an installable format. Tip: if you happen to have another machine with Windows 7 already installed on it, the ability to convert .iso files to other formats is built-in to Windows 7 (see Geoff’s blog post for details).
2. Dev Tools – this will include some version / edition of Visual Studio and possibly some or all of the Expression Suite. I am using Visual Studio 2008 Professional Edition SP1 with the .NET Framework 3.5 SP1 (download the latter here). You could use any edition of Visual Studio 2008 or better, including the Express edition. You can also use a trial version of Visual Studio 2008 Professional for a limited testing period. Although I am NOT a designer by any means, I am going to work with the latest CTP of Expression Blend (3). If you aren’t familiar with Expression Blend, here’s an abbreviated product description:
“With Microsoft Expression Blend 3 Preview, you can create Windows Presentation Foundation (WPF) applications for the desktop and Microsoft Silverlight 3 applications for the web…(features include) import of both Adobe Photoshop (.psd) files and Adobe Illustrator (.ai) files directly into your projects, while retaining layers, shapes, text elements, and more for easy editing inside Expression Blend itself. (Note: Adobe live effects, blend modes, and the symbol sprayer are not supported); introduces support for WPF and Silverlight graphic effects; direct modification of C# or Visual Basic code files right inside the product, including IntelliSense (syntax completion), auto-formatting, brace matching, function summary writing, event handler creation, and more; also easy generation of sample data and expanded data-binding capabilities.”
Full list of Blend 3 features here. You can, of course, get the entire suite of Expression products (called Expression Studio), for more info – go here.
I am going to code in C# because, well I like this language. If you happen to be a VB.NET person, you can use SharpDevelop (or some other tool or IDE) to translate C# to VB.NET. To be honest my favorite language these days is actually F# (although I do also have a soft spot for Cobra), but I digress, so…it’s C# for this series.
Also, although a relational database certainly isn’t required for a Windows 7 application, I will use one. For simplicity, I’ll just use the free version of SQL Server 2008 (Express with Advanced Services – which includes SQL Management Studio and SQL Server Reporting Services) – download here. I do note however, that the advanced visualization possibilities of Windows 7 have really got me thinking about using other types of data sources, such as OLAP cubes or Data Mining Structures from SQL Server 2008 Enterprise (or Standard) Analysis Services. Again, for simplicity, I’ll just a relational database for this blog series.
3. SDKs and samples – this is key area for getting up to speed fast. You’ll want to get all this ‘stuff’ to get going, so let’s see what and why.
First you’ll need the correct SDK – for Windows 7 RC and .NET framework 3.5 SP 1 – get it here. So what’s in here? Tools and samples – lots of them.
Then you’ll want to grab the Windows API code pack for MS .NET framework – here. This .NET source code supports new Windows 7 developer features via managed code APIs including the following: Shell features, Direct 3D 11.0, and Sensor Platform APIs. More about the value of this download from this blog post.
Next you may want to get the DirectX SDK – here. This contains technical previews of advanced graphics such as Direct2D, DirectWrite, and DXGI 1.1, XNA Math (new!), audio and PIX improvements and new or updated samples.
The MSDN Code Gallery has an all-up page with links to get, among other things, the Sensor Development Kit for Windows 7. If you plan to integrate sensors into your application, then you probably want to download everything linked on this page – here.
Depending on the samples you choose to run, you may need to include the XNA Game Studio 3.0, as one or more of the Windows 7 application samples using sensors requires this – download here.
Note: If you choose to include coding to the new sensor API in your application (and your hardware doesn’t have sensors), then you’ll probably also want a test sensor board. Here’s a place where you can order from – here.
*Thanks to Michael T. Roth for ‘tech-checking’ this post. See us both demonstrating multi-touch Windows 7 applications this Saturday at BarCamp San Diego.
-
The first step in starting to develop on a new platform includes obtaining the software for that platform of course. Before I talk about software though, I am going to talk a bit about hardware. Because I want to develop an application using the multi-touch features of Windows 7, I will be using hardware that is enabled to support this feature. I am fortunate enough to be working with the the HP TouchSmart TX2 multi-touch enabled laptop. It’s a beauty, isn’t it? Here are the specs for this machine:
”In addition to the 1200x800 multi-touch capability, the 4.5-pound tx2 has 2.1GHz AMD Turion X2 processor, ATI Radeon HD 3200 Graphics, 8 GB RAM, 500 GB HDD (5400 RPM), Bluetooth, integrated webcam, 8x DVD burner, VGA out and a digital pen.”

During Windows 7 ISV Incubation week, all teams worked with multi-touch enabled hardware, such as the HP TX2 laptop or the HP TouchSmart PC. I also see the Dell Latitude XT2, but at nearly $6k, it’s pretty pricey! There are also Windows 7 multi-touch monitors available, such as those from Albatron. Of course, multi-touch enabled hardware is in NO way required for Windows 7 development, but c’mon, it’s pretty cool.
Just to get you thinking about what is possible for touch applications, here’s a short video to show you the touch features in Windows 7.
Windows 7 Touch and Multitouch on HP TouchSmart PC from Gizmodo on Vimeo.
I’ll get into much more detail about developing multi-touch applications on Windows 7 as I continue through this series. I think it’s good to get an idea from the start of what is now possible though.
-
So, let’s talk here. When is the last time you developed a Windows application? Yeah, I thought so – me too actually. You’ve probably heard a bit about Windows 7 and might be thinking that it’s time for you to take a look at it. If you are the action-type, you can just download the release candidate now. However, before you willy-nilly install it on mission critical systems, be reminded of this little item from the FAQ:
Can I upgrade from the RC to the final version of Windows 7?
When you install the final version of Windows 7, you'll need to do a clean installation. So plan on backing up your data then reinstalling your applications and restoring your data.
Don’t say I didn’t warn you on that. RCs are for TESTING only. Ok, now that we’ve got that little item out of the way, just what are you looking for? What’s so compelling about Windows 7 for you developers anyway? Well you can read the complete list of features at ‘what’s new’, but I assume you are reading my blog because you want to know what I like, so here are my top three picks listed in order:
1) Multi-touch
2) Sensor API
3) Richer 3D Support
Recently I was a technology advisor at an interesting Microsoft event – Windows 7 ISV Developer Incubation Week held at the Microsoft office in Irvine, CA. During this week 5 teams of two to three .NET developers learned about Windows 7 features, then took an existing WinForms application and added code to take advantage of new features in Windows 7. Several interesting things happened:
1) All teams elected to include multi-touch (we provided them with devices that support multi-touch)
2) All teams actually completed a working prototype in 3 days (to be fair, some teams coded through the night as well)
3) One of the ‘winning’ teams consisted of two unemployed ASP.NET developers who created a multi-touch application prototype from scratch in 4 days. *Both developers of this team have got full-time coding jobs since the competition.
Take a look at what the teams came up with via these Channel 9 Videos.
1) Ingenium – home health care – used multi-touch and sensors
2) Quantellia – complex decision visualization – used multi-touch and advanced 3D support
3) Image Manipulation – used multi-touch and sensors
Cool stuff, huh? I think so. Interestingly on the last day of incubation week, we called in some judges to take a look at what had been built. These judges included venture capitalists, technical leaders (CIOs) and startup advisors. Of the five groups that participated, the three groups shown above ‘won’ various categories of the competition. In addition to being wowed by what everyone had accomplished, I went away from the week thinking, hmm…Windows 7 application development is something I need to pay attention to. So I’ve decided to start a summer blog series (with this post being the first in the series) to help those of you who are interested in creating your own Windows 7 applications find your way. I’ll tag all of these blog posts with ‘Win7DevSeries’ for easy following via RSS. I intend to take a how-to approach for those of us who have done mostly ASP.NET web development over the past few years, I’ll blog on how to get started, i.e. set up a test environment, what to download (SDK, samples, etc…), then take a stab at actually building something.
I’ve also started a facebook group named ‘Windows 7 Developers’ to share info, events, links, etc…join in!
Oh, and I suppose you might like to know when Windows 7 will be ‘done’ (RTM). We announced at TechEd that we are ‘on track for a holiday release.’
Happy coding.
-
On Saturday after TechEd, I attended the first-ever StepUp Career Conference for underserved high-school aged girls. This event was put on by the national StepUp non-profit, based in Los Angeles and was hosted at the Dermologica HQ in Carson, CA. On this day 30 girls and their professional mentors participated in a series of activities around career development. I was connected to this organization’s local lead, Alexa Brandt, by formerly LA-based do-gooder Sloane Berrent, because of my work with Microsoft’s Digigirlz program.
I loved attending and learned quite a bit about how their very effective professional mentor program runs. I enjoyed observing the activities and the girls seemed quite engaged all day. Below is a picture from a great activity, speed mentoring. During this mentees were encircled by mentors, music was played and when it stopped, girls asked professional women a series of questions. Dancing was encouraged, fun and learning was had by all! This was a very successful event and I intend to continue to work with this organization in Southern California.
Here’s the detailed agenda for the conference:
Agenda:
1. Mentor Check In, Debriefing and Refreshments (9:30-10) - Review event details with Senior Program Manager Alexa Brandt - Girls Arrive (10:00)
2. Welcome, Introduction of Mentor/Mentees and Ice Breakers (10-11)
3. Break into two groups – Successful Sisters & Working Women (swap after sessions)
Working Women: How to Become an Internship Queen by Lauren Berger www.internqueen.com (11:00 – 11:45)
a. What is an internship/part-time job. Why is it beneficial, why would you work for free? Where can you find an internship? Mentors share their internship experiences
b. Strengths with fun self-assessment tests
c. Interview tips and role playing
Successful Sisters: A Career Girl’s Keys To Success Led by Lisa Lee (11:00 – 11:45)
a. What is a Career, My Mission: What Do I Want to Do
b. My Plan: How Do I Make it Happen, Importance of Education, Time Management & Prioritization
c. Women’s History in the Workplace
d. Activity: Each pair will be given an item such as a cel phone, magazine, credit card, etc. The pairs will be asked to brainstorm as many careers and related skills that correlate with the product. The exercise is designed to get girls to look at everyday items in a new way and get them thinking about careers they may not have considered
4. Lunch and Trivia (12:30-1:15) Please sit with your mentee(s) during lunch
5. Career Speed Networking (1:15-1:40)
a. Inner/Outer Circle – all mentors will be in the “inner circle” in which they face out while girls will be on the outer circle, facing in. Music will be playing while everyone walks in a circle. When the music stops, girls will ask 2-3 career related questions to whichever mentor they stop in front of. We will play a handful of rounds.
6. Passport to Professions: Career Stations (1:40 – 2:25)
a. Mentors will be grouped together by industry. Each industry will have a table where you will sit. Girls will have a passport booklet. They have to find mentors that meet certain requirements such as find a woman that works with clients or patients. How does she work with different personality types?
b. If you meet the bill, chat with the girl and then stamp her passport
7. Closing Remarks and Gift Bags (2:25-2:30) - Girls turn in their passport for a Dermologica goody bag. Volunteers get bags too!
-
Happy to have led the Women in Technology event at TechEd last week. Asli Bilgin and I have been working with a team at Microsoft to build this event brand for a year now. Microsoft has hosted WomenBuild events across the US and Australia already and intends to host more in the future. (Take a look at the original video of the day Asli and I met and the day we got this idea – just for fun.)
The idea is to hold events which implement a type of speed group problem solving facilitated by table leaders and LEGO bricks. We’ve worked directly with the originator of the SeriousPlay concept, Robert Rasmussen to customize the implementation for WomenBuild. We were quite lucky to have Robert over from Denmark to act as lead facilitator for this event at TechEd.
At each event small groups of women and men who are interested in working on this problem (too few women working in technology) build models with LEGO bricks to answer directed questions around this issue. We have a Facebook group to share knowledge and to connect people who are interested in WomenBuild. At TechEd we had over 100 participants in WomenBuild 2.0. To get a sense of the event, take a look at the video below (thanks, again, to our friends at TechZulu for this one!):
So, what were the key learnings from WomenBuild 2.0? I’ve compiled the feedback (after building a model to represent their ideas around a specific question related to WiT), each participant then shares ‘their story’, and then writes down their key thoughts. Here’s what some of the participants had to say about these questions:
1) Why are you here? i.e. motivations for wanting to make change
Together we can improve the situation
To meet other technical women
Increase the visibility of women in technology (many people said this)
Want to get new ideas on how to solve this problem
My co-worker (a female) asked to attend
My graduating class in IT had too few women in it
2) What is essence of the problem?
Work/Life Balance – too much to do, especially if raising kids (many responses)
Different expectations “there is a mental wall – false expectations”, IT not seen as feminine, technology implemented via a ‘male vision’ (good old boys club), women feel alone or apart from the group of men at work in IT, women must work at least 2x as hard to prove their technical competence as men
Women don’t expect to have careers in IT, area not seen as attractive to women, it is not expected that women will do these jobs,
Women are not encouraged to be creative or to ‘take risks’, limits their ability to be effective at work
Women are isolated, feel alone, ‘only women in the room’
3) What actions could be taken to address this problem?
Educate girls about IT career possibilities – participate in DigiGirlz, level the playing field at an early age (many, many responses!)
Be more visible as women in IT, i.e. attend more IT events, public speaking, educate, act as role models, mentors
Act as a mentor to a girl (many mentioned younger family members or neighbors)
Train (enlighten) teachers and parents about gender bias in STEM education
Consciously attempt to ‘hear from’ everyone in the room, both men and women (at work)
Reward risk taking women at work, break or change the rules
Listen to my wife more closely (multiple responses!)
Accept part-time work from busy women, especially mothers
Ask my husband/boyfriend, etc…to take on more family responsibilities
Take time for me to learn, get certified, attend user groups, attend conferences, seek out a mentor
Engage girls in Green Development and Green IT
Bring Robotics to girls
What’s next for WomenBuild?
We are evaluating the first year and planning for year two roll out. We are attempting to sharpen the focus of the event to result in more actionable information. Were you there? Have you attended WomenBuild somewhere in the US? We’d love your feedback! (via this blog or our facebook group). We are also considering what we call *Build programs, i.e. GirlzBuild (for DigiGirlz), etc… We would also be interested in your thoughts on that.
Also, I must thank the 10 table facilitators who made WomenBuild 2.0 possible – Cidgem Patlak, Kim Schmidt, Cindy Palmer, Elisabeth Vanderveldt, Julie Lehrman, Jenny Nielsen, Karen Henderson, Dana (from Hynesite), Julie Yack, and Catherine Eibner.
-

Thursday was community party night at TechEd. In addition to the attendee party, we in SoCal were able to invite around 300 people from the local tech community (who weren’t registered to attend TechEd). It was really cool to see who turned out for our free food and drink, and then hung around for the social events, the Birds of a Feather informal tech sessions hosted by INETA, the women in tech event (more on that in the next blog post) and/or the speaker idol competition. Here were the activities:
The mix was really great. In particular, in addition to SoCal MVPs and MS community members, our local evangelism team reached out to invite SoCal tech luminaries from social media and those who use competitive products (i.e. Adobe, Google, etc…)
In general, I heard lots of good comments. Probably the best way is to look at highlights from the TweetStream – complete stream here.

-
People ask me ‘how do you keep up?’ Well, sometimes I don’t. I am horribly ‘behind’ in the world of Windows Mobile applications, development, etc…So I decided to spend a bit of time at TechEd trying to remedy that situation. First I attended the (in)famous Windows Mobile Smackdown session. If you’ve never seen one of these, catch the video or, better yet, attend live. The mobile team is well-known for their crazy all-demo and only-demo style. For this smackdown, they just showed one cool application after another.
Because I am so lame and only use the default applications on my (new) HTC mobile TouchPro phone, I felt like a complete loser after this session!

Tomorrow is ‘fix up my phone day’ BTW. Here are some apps I’ll be installing and links. Facebook – link here. Screens below. Also cool was a GestureTek soccer game – link. And Kinoma Play for rich media on the phone – link. Really I am just getting started though. I’ll blog more as I work on installing apps on my phone.




Also they announced the Windows Marketplace for Mobile store – check it out here.
Because I was having so much fun with the team, I crashed their party (at the Conga Room) that night as well.

It was really fun and informative. I met several local Windows Mobile MVPs and have invited them to create a mini-smackdown event at upcoming local BarCamps (next one is in San Diego on May 30 and 31 at the Intuit Building there). If you are like me, you’ll be amazed at the cool apps that are out there for your phone.
If you are still a bit behind on developing for this platform, check out this video from a TechEd session – linked here.