September 9 2010




 

Maarten's Blogs

The life of a Windows Mobile Developer and Windows Embedded Evangelist.

Search Blog Entries:

 
Friday, August 6, 2010
Silence and Windows Phone 7

It has been very silent on DotNETForDevices for the last eight months. No blogging and no Windows Mobile related videos. Of course there is a perfect excuse. Over the last few months I have been busy with Windows Phone 7 development. Not to develop that one killer application that I am still dreaming about, but to get familiar with this new platform and to talk about it during several local and international conferences. From day one I am excited about Windows Phone 7. The platform is definitely innovative and I like the new User Interface. For application developers there are some surprises. Your applications will be managed code (C#) only, although you can chose between two entirely different application types. The development tools are for free and all tools will be installed through one single download. The tools integrate into existing Visual Studio 2010 installations or make use of a specific Visual Studio 2010 Express Edition for Windows Phone.

Instead of writing large blog entries about Windows Phone 7, I’d rather show how to develop applications for the phone. Over the upcoming weeks I will record several videos that will be published on DotNETForDevices about Windows Phone 7 development. I am not sure which format to use. The videos might be released as a series to develop an entire application from scratch (just as I did last year for Windows Mobile application development) or as a collection of How-To videos, each covering one specific (smaller or larger) Windows Phone 7 development topic. Stay tuned!

PS: The Windows Mobile Application Development Series around DVDsMobile is temporary on hold, but once I have created ‘enough’ Windows Phone 7 development videos, I will continue with DVDsMobile as well.



   What is this?13:45 PM
Blog Ref URL:  http://www.dotnetfordevices.com/forum.html#388


Tuesday, December 22, 2009
Creating User Controls for Windows Mobile with full Designer Experience

One of the issues you might run into if you are creating your own User Controls for a Windows Mobile application is a poor designer experience in Visual Studio 2008. This will happen if you are making use of specific Windows CE or Windows Mobile functionality that is not supported on the desktop. The reason is that Visual Studio in designer mode does not have any knowledge about the target platform, so it needs to make use of functionality that is available on the development machine, and it will target the full .NET Framework. A typical example of poor designer experience occurs if your control is P/Invoking to a native Win32 API. In Windows CE, Win32 APIs usually live in different DLLs then their desktop counter parts. Take the following example of a User Control that wants to display a gradient background. The control is a GradientButton and it takes care of its own painting functionality:

Application with User Controls

When running on a device, a test application displays the button(s) and also a GradientLabel that is derived from the same GradientControl base class as expected. However, when creating the form you will not have a great designer experience, since the controls are not rendered the same way as they are on the device. Without doing anything, this will be the default designer experience:

User Controls in Designer Mode on a Form

Showing the User Controls as Visual Studio 2008 does is a pretty safe solution. Since User Controls might use (drawing) functionality that is exclusively available on the device, the decision of the Visual Studio is to just display a place holder for the control with the correct dimensions. Sometimes this might be sufficient, but what if you want to get a real WYSIWYG designer experience? By making use of designer attributes, which should be defined in a separate XMTA file (that defines designer attributes in XML), you can specify that your control is desktop compatible. What you are saying in that way is that you know for sure that Visual Studio’s designer should be able to render your User Control correctly. Adding <DesktopCompatible>true</DesktopCompatible> to my XMTA file (for both the GradientButton and GradientLabel) results in the following error message (one for each control on the form):

Error while opening a DesktopCompatible Control in Designer Mode

And, after acknowledging the error messages, in the following designer experience:

Bad Designer Mode Experience

This experience is worse than the original way the designer showed our form. The problem that we encounter in this particular situation is the way the User Controls are painted. To paint a control with a gradient background, we need to P/Invoke to the native GradientFill method, that is defined in the managed control library in the following way:

P/Invoke declaration for the GradientFill API

The problem however is that, even though Windows 7 (as target operating system for Visual Studio 2008) has a GradientFill API, it is not defined in a DLL called coredll.dll, but instead, it is defined in a DLL called Msimg32.dll. To force Visual Studio to make use the GradientFill API from the latter DLL, we can make use of conditional compilation. Suppose we would change the P/Invoke declaration to the following and make sure that DESIGN_MODE is set, we should have a great designer experience:

Conditional compilation in P/Invoke declaration

However, in this situation you need to make sure that you undefined DESIGN_MODE prior to deploy the User Controls to the device. If you forget to do this, you will get runtime errors when running your application that makes use of these controls on the device. To limit possible runtime or design time errors, what you can do is make use of a new Build Configuration in Visual Studio. That is exactly what I did for this Control Library. Using the Configuration Manager I created a new configuration called DesignMode that is based upon the original Debug Configuration. I made sure to set uncheck the Deploy checkboxes in this configuration, resulting in a DesignMode build that will never be deployed to the device.

A new configuration specifically for Designer Mode

Additionality, in the Project Properties of my Control Library I defined the conditional compilation symbol DESIGN_MODE only for the DesignMode configuration.

Defining DESIGN_MODE for the DesignMode configuration

Working with different configurations is great in this particular situation. Each time I want to open the form in designer mode, the first thing I am doing is changing to the DesignMode configuration. As a next step I rebuild my entire solution. After this, it is safe to open the form in the Visual Studio 2008 designer:

Designer Mode experience after modifications

Once I am done modifying the form, I make sure to close the designer window inside Visual Studio 2008 for that particular form, change the configuration to either Debug or Release, rebuild the entire solution and after that, deploy the modified application to a target device. As you can see, there are a few steps involved to get a relatively acceptable designer experience when working with non standard controls, but for me, these extra steps are definitely worth investing in. After all, taking these extra steps I will get a WYWIWYG experience prior to deploying my application to a device or to the device emulator.



   What is this?10:35 AM
Blog Ref URL:  http://www.dotnetfordevices.com/forum.html#387


Friday, November 27, 2009
Windows Mobile Application Development DVDsMobile Part 9 Available Now
If you want to learn how to create a full blown Windows Mobile Application from scratch using Visual Studio 2008 this is your chance. Over the upcoming months DotNETForDevices will show you how to create DVDsMobile, an application that stores a personal collection of DVD’s, can add DVD’s to a wish list, makes use of location awareness to find nearby DVD stores, makes use of a Web Service to quickly enter DVD information and consists of one single binary, being able to target multiple different Windows Mobile Devices. Besides an article and a growing number of downloadable videos, all source code will be made available for download at a later time, as well as a complete book, explaining the entire application and introducing best practices to develop applications for Windows Mobile Devices. Today, video number nine is available for download. In this video you will learn how to setup a DataGrid control in such a way that columns are adjusted depending on the column header width, scroll bars being visibile and display orientation mode of the device. This video, as well as all previous episodes in this series and additional documentation can be obtained by navigating here.

In the upcoming weeks, all source code that is created for DVDsMobile will be published as well. Complete documentation and additional videos will be published soon as well.



   What is this?19:55 PM
Blog Ref URL:  http://www.dotnetfordevices.com/forum.html#386


Thursday, November 19, 2009
Windows Mobile and Location Awareness through GPSID

In one of the developer forums on MSDN an interesting question was asked around using the GPS sample code that is shipped as part of the Windows Mobile 6 SDK. Running the sample code as is always worked fine for me when running the sample code inside Device Emulator and making use of FakeGPS. The developer that asked the question was however running on a real device and noticed that the application was sometimes hanging on application close down or on stopping GPS data retrieval. Since I am very passionate about location aware applications I wanted to find out what is going on here. The beauty of Windows Mobile Sample code is that all source code is available for you. Of course there are disclaimers that the code is provided “AS IS” with no warranties. I understand that and I respect that. Well, after examining the GPSSample I strongly recommend not to use this for study purposes. I probably should go one step further and also warn you against using this sample as a managed wrapper around the GPS Intermediate Driver inside your production code. I have shown location aware applications based upon the Microsoft.WindowsMobile.Samples.Location namespace in How-Do-I for Devices videos, in Webcasts and during conferences like Tech-Ed. And only now I realize that I was extremely lucky because my code samples did not crash while demonstrating them.

Let me try to explain the issues I found with this particular sample and how to create a quick and dirty fix for them. I will only concentrate on the issues I found so far, but given the nature of these issues I would not be surprised if there are more issues. First let me show you an edited version of the class diagram of the Microsoft.WindowsMobile.Sample.Location assembly. It looks pretty nice, straight forward and easy to use, as it should be to be a useful managed wrapper around a lot of native code (being the GPS Intermediate Driver implementation).

The class GpsPosition has a large number of properties that allow you to easily retrieve GPS readings like Latitude and Longitude. However, you can also see that it defines two public methods, one called GetSatellitesInView, the other called GetSatellitesInSolution. The latter is an interesting one, since it returns the number of satellites that are used to obtain our current position. This number is equal or smaller to the number of satellites in view. This number of satellites that are used to obtain our position depends on information that is passed in an array containing extended satellite information. This is where the first potential problems in the GPSSample code can be found.

Here is the original code that is available in the GpsPosition.cs source file:

Listing 1

As you can see, the method GetSatellitesInSolution calls the method GetSatellitesInView internally. Now imagine that the variable dwSatellitesInView in the method GetSatellitesInView is 0. That means that the return value of this method will be null. In itself this is fine, but GetSatellitesInSolution is using it and does not check for a null return value, but instead simply uses the variable called inViewSatellites. If a null was returns, this means we will get a NullReferenceException, which in the GPSSample will be reported to the user when new GPS readings are updated in the main form. Solving this problem involves two modifications, the first one being a check for null in the GetSatellitesInSolution method that can be found in the source file GpsPosition.cs:

Listing 2 

Since GetSatellitesInSolution can now return null as well, another modification should be made in the Form1.cs file of the GPSSample that makes use of this information. The UI of Form1 is updated inside this method with the highlighted code snippet causing the next potential problem:

Listing 3

Besides the potential problem the above code can cause, there is also a performance improvement possible. It is not necessary to call the position.GetSatellitesInView method (which is internally used in position.GetSatellitesInSolution). Instead, the property position.SatellitesInViewCount can be used that retrieves the same number that we want to display in the sample code. If you change the highlighted code into the following code, the easy problems are solved:

Listing 4

A more complex issue to solve:

Using the managed wrapper around the GPS Intermediate Driver you have the possibility to subscribe to LocationChanged and DeviceStateChanged events. If you subscribe to these events, your event handler will be called each time a change occurs in either location information (received from satellites) or device information (received from the connected GPS hardware). These changes are passed to your event handler(s) on a separate thread. This has a few consequences. The first one is that you cannot simply update UI Controls with the new readings that you can retrieve inside your event handler. If you take a look in the Form1.cs source file that is part of the GpsSample, you can see the following code snippet:

Listing 5

There is even some meaningful comment in this code snippet, because it is not allowed to update the UI immediately on any other thread then its creator. Instead, Control.Invoke is needed to update a UI control. Control.Invoke updates the UI control using the thread that created the UI control on behalf of the thread requesting the UI update. However, Control.Invoke is a synchronous method, it will block until the UI control is actually updated. Here is where our complex problem starts to appear. In order to understand the problem, we now have to take a look at the thread inside the source file Gps.cs that sets the events to inform any subscriber of new data being available. This is the thread responsible for that action:

Listing 6

In this code snippet I have highlighted a block containing the statement lock(this) which is a potential cause of hanging the sample application. During its lifetime, the thread that reads location information marks the entire GPS class as critical for the entire lifetime by calling lock(this). This means that this thread has exclusive access to everything that is defined in the class Gps, including the variables of type GpsPosition and GpsDeviceState that are passed as EventArgs when the event handlers inside Form1.cs are called.

The sample UI that is defined in Form1.cs tries to retrieve location information and device state information. In listing 4 you can see that, in order to display location information, a call to a method inside a GpsPosition object is made. Since this object is passed to us from inside the worker thread of listing 5, the thread wanting to retrieve that information (through Control.Invoke, being the main thread), will be blocked until the worker thread of listing 6 terminates. Well, guess what, the worker thread can only terminate when the user selects menu entries to Exit the application or to Stop GPS. This code can never execute, because our main thread is still waiting for the worker thread of listing 6 to terminate. This is a typical deadlock situation. Two different threads are waiting on each other, without any of them being able to release locked resources. The real problem is the fact that the worker thread of listing 6 contains lock(this) to protect variables. Even the MSDN documentation indicates this as something you should not do. In the sample everything in the class is locked, and probably only a few variables need to be protected against mutual access by different threads. Also, the lock is never released until the worker thread terminates, even though good practice is to protect variables against mutual access for a short a time as possible.

Since I don’t want to change too much code right now, I take a very pragmatic approach here (and in fact, you should do something similar if you are making use of the Microsoft.WindowsMobile.Samples.Location assembly with only the modifications as I described earlier in this blog entry implemented). Leaving the GPS.cs file as is (as most of possible), you can solve this deadlock situation by modifying the UI code. You already saw the two different locations where the screen is updated through an Invoke method (in listing 5). Since Control.Invoke works synchronously, the main thread will block until the thread that refreshes satellite readings will terminate. The problem is that this latter thread will only terminate when the main thread sets an event, which it can't do because it is blocked. And there is the deadlock situation. The quick and dirty solution to solve this problem is by modifying the code inside Form1.cs, not updating UI controls through Control.Invoke, but through Control.BeginInvoke, which is an asynchronous way of updating the UI control, not blocking the main thread. So if you modify the code inside Form1.cs to this, you have solved the potential deadlock situation, even though the Gps object is entirely locked by the data retrieval thread:

Listing 7

This should solve at least the most dramatic issues you might run into when playing with the GpsSample application, or (even worse) when using similar code inside your own (commercial) application. There are a few more issues with the sample code, for instance omitting to unsubscribe to event handlers. In this simple example this is not dramatic, but in a real application this might lead to managed memory leaks. All in all, I think it is time to completely revise the GpsSample and the Microsoft.WindowsMobile.Samples.Location assembly. Once the conference season is over for me on December 2nd and I don’t have to deliver presentations for a whole month at least, I will probably rewrite the entire sample and the managed wrappers and of course I will publish them, most likely both on DotNETForDevices and on Code Gallery.



   What is this?17:51 PM
Blog Ref URL:  http://www.dotnetfordevices.com/forum.html#385


Tuesday, November 17, 2009
Adjusting DataGrid Columns on a Windows Mobile Device

I ran into a few challenges when displaying a DataGrid control inside a Windows Mobile application. The DataGrid only contains two different columns. One of the columns must have a fixed length that is determined by the title of the column. The other column will have a variable width, depending on the display orientation mode of the device and also depending on the presence or absence of both a column header and a vertical ScrollBar. Also, the number of pixels occupied by column separators must be taken into consideration. To retrieve the width of the column header and the width of an individual column separator, a little bit of reflection is needed. The column header width is stored in a private instance variable of the DataGrid with the name v_cxDefaultRowHdrWidth. The width of one single column separator is stored in a private instance variable of the DataGrid with the name v_cxyDefaultResizePixel. Even though both values are stored in private instance variables of the DataGrid, you can retrieve them through reflection, as shown in the following code snippet:

To measure the size of one of the column headers dynamically, which is necessary because the application will be localized, it is possible to call out to MeasureString, a method that is exposed on the Graphics class. To set the correct width of this column, the following code snippet is used:

The code snippet shown above also adds two times the width of an individual column separator, since the column is surrounded by two different column separators. What I showed so far is relatively easy and straight forward. The real challenge came when trying to adjust the column width of the other column, depending on presence or absence of a ScrollBar. My original idea was to P/Invoke to the Win32 API GetSystemMetrics when a vertical ScrollBar is displayed in the DataGrid. To determine if a ScrollBar is present I used the following if statement:

It turned out that the if statement shown above is not the best approach. My idea was that a vertical scroll bar would be displayed automatically if the number of records visible in the DataGrid is smaller than the number of records available in the underlying BindingSource. This is usually the case, but I found out that a record in the DataGrid is considered visible, even if only a small part of it is visible in the DataGrid. Finding this out was purely coincidental. When testing the application with a database containing 10 records and changing the display orientation mode of the test device from portrait to landscape, it seemed that I had 10 records visible (so no need for a vertical ScrollBar). However, in reality there were only 9.5 records visible, meaning a vertical ScrollBar was displayed, and because I didn’t adjust properly for this, a horizontal ScrollBar was displayed as well. Solving this problem took a bit of thinking and a bit of interrogating DataGrid members. A DataGrid is a control container, being able to host other controls. Without adding additional controls myself, I found out that a DataGrid already owns to Controls, a horizontal and a vertical ScrollBar. After finding this out, the solution to my original problem all of a sudden became easy, and I also could get rid of the original way to measure the width of the vertical ScrollBar through P/Invoke. So instead of the previously displayed if statement, the code now has changed into the following:

With verticalDataGridScrollBarIdx defined as 1. Not only does this an accurate indication if the ScrollBar is visible, the performance of this particular piece of code is better as well, since there is no need to P/Invoke to a native Win32 API. Since the column with the fixed length is making use of reflection to determine the width, its width is only calculated once. This improves performance as well, especially since reflection, like P/Invoking to native code consists of ‘expensive’ operations as far as performance is concerned. A more complete sample snippet now looks like this:

And that is it. Knowing a bit more about the internal operation of the DataGrid, combined with a bit of thinking, just led to more efficient code that is working better as well.



   What is this?21:03 PM
Blog Ref URL:  http://www.dotnetfordevices.com/forum.html#384


Wednesday, October 21, 2009
Archived Windows Mobile Webcasts

It seems that there are almost no live MSDN Webcasts around Windows Mobile Application Development these days. Personally I would have liked to see at least one new Webcast as month, preferably even more. Since this is not the case, I like to point you out to a number of archived Webcasts that might be relevant for starting and experienced Windows Mobile developers. The following links all point to pages on the MSDN Code Gallery. If you are not familiar with this collection of sample code, these links might be a great starting point to start exploring sample code for all kinds of Microsoft technologies. If you are interested in Windows Mobile related sample code, and want to listen to the Webcasts that showed the sample code in action, just click on one of the following links:

Over the upcoming weeks I will make sure to publish more sample code of archived Webcasts. I hope to keep everybody who reads this blog excited about Windows Mobile Application development in this way. If you, like me, would like to see more MSDN Webcasts around Windows Mobile development topics, you might want to suggest so at one of the Windows Mobile Forums, which by the way are also a great location to ask all your questions around Windows Mobile Application Development.



   What is this?07:09 AM
Blog Ref URL:  http://www.dotnetfordevices.com/forum.html#383


Monday, September 28, 2009
Windows Mobile Application Development DVDsMobile Part 8 Available Now
If you want to learn how to create a full blown Windows Mobile Application from scratch using Visual Studio 2008 this is your chance. Over the upcoming months DotNETForDevices will show you how to create DVDsMobile, an application that stores a personal collection of DVD’s, can add DVD’s to a wish list, makes use of location awareness to find nearby DVD stores, makes use of a Web Service to quickly enter DVD information and consists of one single binary, being able to target multiple different Windows Mobile Devices. Besides an article and a growing number of downloadable videos, all source code will be made available for download at a later time, as well as a complete book, explaining the entire application and introducing best practices to develop applications for Windows Mobile Devices. Today, video number eight is available for download. In this video you will learn how to re-synchronize an entire table of a database making use of the Synchronization Services for ADO.NET. This is necessary in those situations where the server is not able to use the synchronization history because clean-up code has been executed on the server prior to synchronize the client data with the server. This video, as well as all previous episodes in this series and additional documentation can be obtained by navigating here.

   What is this?08:44 AM
Blog Ref URL:  http://www.dotnetfordevices.com/forum.html#382


Wednesday, September 23, 2009
Great book about Data Synchronization

Enterprise Data Synchronization with Microsoft SQL Server 2008 and SQL Server Compact 3.5 by Rob Tiffany

This book is a must read for every developer who deals with storing data on Windows Mobile devices and who has the need to synchronize that data with a server. Realistically speaking, the majority of applications on Mobile Devices deal with some form of data synchronization. Tiffany starts by identifying some of the challenges and taking a look at one of the best occasionally connected applications (Microsoft Outlook) available on the market. The book focuses on Merge Replication, a Microsoft-supported technology to efficiently synchronize data between one or more servers and multiple clients. Tiffany starts by explaining the architecture of Merge Replication and he introduces a number of scenarios where Data Synchronization is essential.

In his book, Tiffany introduces a hypothetical company to explain all details about setting up a large distributed application. Each chapter in the book explains a particular subsystem. By making use of virtualization, it is possible for the reader to take Tiffany’s example, experiment with it and built upon it. In this way, this book gets you real hands-on information that is very valuable for your day-to-day work. Tiffany starts the example by talking about securing the data and limiting the amount of users that are allowed to share / synchronize data. After covering security and showing you hands-on examples, a realistic database is introduced that will be used throughout the remainder of the book. The next important step that is described in full detail is how to configure the server correctly to distribute data amongst clients. Throughout the explanation of properly configuring different subsystems, the author also gives a number of great performance tips that are for a large part based on his own experience working with large databases for enterprise organizations. Since Merge Replication makes use of IIS to actually sends data from servers to clients vv, Tiffany also discusses proper configuration of IIS intensively, again accompanied by numerous tips to get the best performance for your system. In the last chapters of the book, you will actually learn how to setup subscriber code in order to synchronize data with the client devices. The book really focuses on how to synchronize data between servers and clients, not so much on how to present data on client devices. This particular topic is covered in many other publications, both online and in print.

The approach, Tiffany takes for this book is efficient, pleasant to read, and allows you to learn to setup secure synchronization between a server database and a large number of clients, each caching data locally until they have a network connection to efficiently synchronize data back and forth. Thanks to the pleasant, to-the-point writing style and the step-by-step approach to setup Merge Replication, this book is very valuable to everybody who wants to synchronize data with mobile devices. After working through the entire book and re-creating all steps that Tiffany explains in the book, you should be able to efficiently and safely synchronize data between a server and a large number of clients yourself.



   What is this?08:51 AM
Blog Ref URL:  http://www.dotnetfordevices.com/forum.html#381


Wednesday, September 9, 2009
Windows Mobile Application Development DVDsMobile Part 7 Available Now
If you want to learn how to create a full blown Windows Mobile Application from scratch using Visual Studio 2008 this is your chance. Over the upcoming months DotNETForDevices will show you how to create DVDsMobile, an application that stores a personal collection of DVD’s, can add DVD’s to a wish list, makes use of location awareness to find nearby DVD stores, makes use of a Web Service to quickly enter DVD information and consists of one single binary, being able to target multiple different Windows Mobile Devices. Besides an article and a growing number of downloadable videos, all source code will be made available for download at a later time, as well as a complete book, explaining the entire application and introducing best practices to develop applications for Windows Mobile Devices. Today, video number six is available for download. In this video you will learn how to display data that is stored in the local database on a Windows Mobile Device inside a DataGrid control by making use of a SqlCeResultSet. This video, as well as all previous episodes in this series and additional documentation can be obtained by navigating here.

   What is this?11:35 AM
Blog Ref URL:  http://www.dotnetfordevices.com/forum.html#380


Tuesday, September 8, 2009
DVDsMobile Part 6 Available Now
If you want to learn how to create a full blown Windows Mobile Application from scratch using Visual Studio 2008 this is your chance. Over the upcoming months DotNETForDevices will show you how to create DVDsMobile, an application that stores a personal collection of DVD’s, can add DVD’s to a wish list, makes use of location awareness to find nearby DVD stores, makes use of a Web Service to quickly enter DVD information and consists of one single binary, being able to target multiple different Windows Mobile Devices. Besides an article and a growing number of downloadable videos, all source code will be made available for download at a later time, as well as a complete book, explaining the entire application and introducing best practices to develop applications for Windows Mobile Devices. Today, video number six is available for download. In this video you will learn how to synchronize data between a server and a Windows Mobile Device. You will also learn how to make use of the State & Notification Broker to determine if the device currently has a data connection, necessary to synchronize data back and forth between a server and the device. All videos and additional documentation can be obtained by navigating here.

   What is this?15:54 PM
Blog Ref URL:  http://www.dotnetfordevices.com/forum.html#379


Monday, September 7, 2009
Fast Starting Managed Applications for Windows Mobile Devices

The title of this blog entry is perhaps a little misleading. Everybody who has developed Managed Applications for Windows Mobile Devices knows that it takes some time until the application is up and running. Amongst others, this is caused by the fact that the Common Language Runtime (CLR) needs to be initialized, assemblies need to be loaded and, in order to execute, quite a few methods need to be JIT’d. This simple managed application takes a little over a second to start.

A native application, written in C++, will start much faster. In fact, it only takes about 10% of the time to start a comparable simple managed application. So what if you would be able to combine the starting speed of a native application with the developer productivity of a managed application? This new article on DotNETForDevices explains how to use a Native Windows Mobile Application that programmatically starts a Managed Windows Mobile Application. The Native Application can for instance display a splash screen to the user while the Managed Application is starting in the background. The article not only explains this approach in detail, it also comes with a complete downloadable sample.



   What is this?15:45 PM
Blog Ref URL:  http://www.dotnetfordevices.com/forum.html#378


Wednesday, August 19, 2009
DVDsMobile Part 5 Available Now
If you want to learn how to create a full blown Windows Mobile Application from scratch using Visual Studio 2008 this is your chance. Over the upcoming months DotNETForDevices will show you how to create DVDsMobile, an application that stores a personal collection of DVD’s, can add DVD’s to a wish list, makes use of location awareness to find nearby DVD stores, makes use of a Web Service to quickly enter DVD information and consists of one single binary, being able to target multiple different Windows Mobile Devices. Besides an article and a growing number of downloadable videos, all source code will be made available for download at a later stage, as well as a complete book, explaining the entire application and introducing best practices to develop applications for Windows Mobile Devices. Today, video number five is available for download. In this video you will learn how to setup Synchronization Services for ADO.NET to synchronize data between a server and Windows Mobile devices. All videos and additional documentation can be obtained by navigating here.

   What is this?16:50 PM
Blog Ref URL:  http://www.dotnetfordevices.com/forum.html#377


Friday, August 7, 2009
Windows Mobile 65 Gestures in Managed Code

One of the interesting new features available for Windows Mobile 6.5 Devices is native support for gestures. In the Windows Mobile 6.5 documentation, gestures are defined as “short, directional movements over a control or object on the screen”.  The functionality to make use of Windows Mobile 6.5 Gestures is implemented in a static native library. This means that this functionality is not immediately available for Managed Application Developers.

To make this functionality available for Managed Developers, DotNETForDevices is happy to announce the immediate availability of a whitepaper and sample code to use Windows Mobile 6.5 Gestures in managed code.

The sample code combines the GestureAPISamples that are shipped as part of the Windows Mobile 6.5 DTK, with identical functionality, but of course entirely executing in managed code.

You can download the whitepaper from this location:

The sample code is available at the same location:

The source code of the GestureHelper Type Library is absolutely royalty free. Take the code, play with it and modify it to meet your own requirements. However, the source code is shipped as is. You will be using the code at your own risk. 



   What is this?17:30 PM
Blog Ref URL:  http://www.dotnetfordevices.com/forum.html#376


Thursday, July 2, 2009
Scrolling Large Images on Windows Mobile Devices

In preparation for my attempt to provide a managed solution for one of the Windows Mobile 6.5 DTK samples I needed a simple solution to scroll a large picture inside a managed application. My first attempt, painting the image directly on the Main Form and creating Scroll Bars manually, is working but rather complex. It involves changing the style of the Main Form, which after all is a Window, by P/Invoking SetWindowLong to add Scroll Bars to the form, making use of the SetScrollInfo and GetScrollInfo APIs to initialize the Scroll Bars properly and to retrieve the current position of the Scroll Bars. Besides that, it also involves dealing with Scroll Bar messages and calling the ScrollWindowEx API, not the most P/Invoke friendly API in the world. However, there is a much simpler solution, making use of a PictureBox control.

Large Bitmap displayed in a PictureBox on a Form

In this picture, you will see an ordinary Windows Form with a PictureBox on it and two menu entries that simulate programmatically scrolling of the picture (something I need for one of the Windows Mobile 6.5 DTK Gesture samples).

Initializing and Resizing a PictureBox Control hosted on a Form

During application initialization, the PictureBox is initialized with a Bitmap, and its size is adjusted to hold the entire Bitmap. You need to make sure that the Docking property of the PictureBox is set to DockStyle.None. As you can see in the first figure, fully functional Scroll Bars are displayed to be able to scroll through the picture. To programmatically scroll through the picture, it is possible to make use of a number of Windows Messages, as shown in the first code snippet.

The Bitmap scrolled to the right through Windows Messages

The important thing here is that the Scroll Bars are not reachable through the PictureBox, but through the Main Form, so the Windows Messages are in fact being sent to the Main Form. Since the Main Form has scrolling logic implemented (because the Scroll Bars do react upon user input), it is also safe to send WM_HSCROLL and WM_VSCROLL messages to it programmatically. The performance is pretty good and it hardly takes any code in this way. This is the complete code for this simple example (assuming you have a Bitmap available as a resource):

Scrolling a Bitmap using Windows Messages

Something similar can be done by displaying a Bitmap inside a Panel Control, but in that case you are responsible for painting the image yourself, a bit more work with no real added value.



   What is this?18:45 PM
Blog Ref URL:  http://www.dotnetfordevices.com/forum.html#375


Tuesday, June 23, 2009
Windows Mobile 6.5 Gestures

Since many people blogged about the availability of the Windows Mobile 6.5 Developer Toolkit (DTK), I will not bore you with repeating that information. However, if you downloaded this toolkit you might be a bit disappointed by the current lack of documentation. I am sure that Microsoft will document all new functionality at a later time, but right now you might have to dig into sample source code to understand what new functionality is available. The Windows Mobile 6.5 Professional DTK ships with 3 different samples that show you how to make use of gestures. A useful definition of gestures is found in the Windows 7 documentation on MSDN: “A gesture is a quick movement of one or more fingers on a screen that the computer interprets as a command, rather than as a mouse movement, writing, or drawing”. Since Windows Mobile 6 devices do not support multi-touch, the quick movement of more fingers on a screen is irrelevant for this discussion.

The sample code provided in this blog entry is a work in progress. Right now, you will find a managed wrapper around the Gesture API’s that has enough functionality to rebuild the GestureMetricsSample that is part of the Windows Mobile 6.5 DTK. In additional blog entries I will show you how to implement the other native gesture samples in managed code as well. This could lead to a useful wrapper around the Gesture API’s for Windows Mobile 6.5, although I can’t give you guarantees at this moment.

About the implementation

To make use of Gestures inside your Windows Mobile 6.5 application you get a number of API’s that are defined in the header file gesture.h. These API’s can be used to get information about Gestures. Since there is no documentation about these API’s available at this moment I simply tried to translate the native sample without worrying too much about the functionality that those API’s provide. Besides the Gesture API’s, you will also need to act on an additional Windows message being WM_GESTURE. If you look up WM_GESTURE on MSDN you will find preliminary documentation about this Windows message. However, this documentation is for Windows 7 and after taking a look at the documentation, it seems that the functionality of the WM_GESTURE message used in Windows Mobile 6.5 is similar but differs in details. Using the Visual Studio 2008 debugger, it turns out that each mouse message that we receive inside a Windows Mobile 6.5 application is followed by one or more WM_GESTURE messages. You can process these WM_GESTURE messages and, depending on the parameters passed to the WM_GESTURE message, retrieve information about the Gesture using the Gesture API’s.

To make use of Gestures inside a managed application there are a few challenges to overcome. First off, the Gesture APIs are not published in a DLL, so simply P/Invoking to those API’s is not an option inside managed code. Secondly, you need to process WM_GESTURE messages, and those messages don’t have corresponding event handlers inside managed assemblies. This is understandable, because the WM 6.5 DTK does not contain additional managed assemblies. In fact, if you take a look at the header files and libraries that are part of the Window Mobile 6.5 DTK, you will see that there are only a few new files available, as indicated by the following two pictures.

Additional Gesture Library

New Header Files for Gestures

The fact that Gesture functionality is made available through a static library means that we cannot simply P/Invoke to the Gesture APIs. So I have decided to create my own DLL in native code that acts as a wrapper around the Gesture APIs. This allows me to P/Invoke to my own native DLL which in turn can call Gesture APIs that are published in a static library. This wrapper DLL has (amongst others) the following functions available:

Gesture API Wrapper DLL

These functions either call Gesture API’s immediately or do some translation before returning to a caller. For instance, if you want to get Gesture information, screen coordinates are used to retrieve locations where gestures begin or end. Since I am interested in working with client coordinates, or in other words, being only interested in activity inside my own client area, I translate screen coordinates into client coordinates before returning information to a caller.

Besides the Gesture APIs, you also need to process WM_GESTURE messages. This is a bit trickier if you want to process those messages inside a managed application. Here, the MessageWindow class, which is defined in the Microsoft.WindowsCE.Forms namespace, comes in handy. In the sample code that is available at the end of this blog entry, you can see that I am making use of good old Win32 sub classing to get my hands to the Windows procedure of the application that I want to make use of Gestures. Since I want to process WM_GESTURE messages inside a managed application, simply sub classing a Windows Form is not sufficient. I also need to pass the WM_GESTURE messages to my managed application. This is something that can be done using a MessageWindows class. If you take a look at the native code that is responsible for sub classing the managed form, you will see that it also stores a second Windows handle, the one that is provided by the MessageWindow. By just catching WM_GESTURE messages in the sub classed Window procedure and immediately sending them to the MessageWindow, I can now process those messages in a managed application. All other messages are just passed on to the original Windows procedure.

Subclassing a Window

To get WM_GESTURE messages inside my managed application, the first thing I am doing is calling the SubclassForm function, from inside a managed class that derives from MessageWindow.

Handling WM_GESTURE messages in managed code

As you can see, I am passing both the handle to the form for which I want to make use of gestures as well as the handle to the MessageWindow. Since my native wrapper immediately sends each WM_GESTURE message to the (hidden) MessageWindow, I can now take action on those messages inside managed code by overriding the MessageWindow WndProc. To get gesture information to the form I am simply raising a number of events.

Inside my (main) form in my managed application I can now simply act on events each time gesture information is received.

Using Gesture information inside a Form

The sample code that is available for download contains all functionality described in this blog entry. The source code is not fully documented and might change while I start working on making the other WM 6.5 DTK samples available as managed code samples. Also, this blog entry does not entirely document the things I did in order to get this sample working. However, this blog entry together with the sample code should get you in a direction to start using Windows Mobile 6.5 Gestures inside a managed application yourself. Over the next few weeks I will publish more information about this topic, which might lead to a full whitepaper to be published on DotNETForDevices in the end.

Download the Windows Mobile 6.5 Managed GestureMetrics sample here.

NOTE: In order to run the sample code you must have Visual Studio 2008 Professional or better installed on your development system, together with the Windows Mobile 6 Professional SDK and the Windows Mobile 6.5 Professional Developer Toolkit.



   What is this?15:53 PM
Blog Ref URL:  http://www.dotnetfordevices.com/forum.html#374


Thursday, June 18, 2009
DVDsMobile Part 4 Available Now
If you want to learn how to create a full blown Windows Mobile Application from scratch using Visual Studio 2008 this is your chance. Over the upcoming months DotNETForDevices will show you how to create DVDsMobile, an application that stores a personal collection of DVD’s, can add DVD’s to a wish list, makes use of location awareness to find nearby DVD stores, makes use of a Web Service to quickly enter DVD information and consists of one single binary, being able to target multiple different Windows Mobile Devices. Besides an article and a growing number of downloadable videos, all source code will be made available for download at a later stage, as well as a complete book, explaining the entire application and introducing best practices to develop applications for Windows Mobile Devices. Today, video number four is available for download. It even contains a blooper, because Blue-Ray should really have been called Blu-ray. In this video you will learn how to create a SQL Server 2005 Express database to store a collection of DVDs. The database will live on a server, and will be used to create a local data store on the device in the next part of this series, making use of ADO.NET Sync Services and SQL Server Compact Edition. All videos and additional documentation can be obtained by navigating here.

   What is this?11:00 AM
Blog Ref URL:  http://www.dotnetfordevices.com/forum.html#372


Monday, June 1, 2009
Location Aware Application Development for Windows Mobile Devices
DotNETForDevices just published a new whitepaper that explains you how to create location aware applications for Windows Mobile Devices. The main focus of this whitepaper is how to retrieve your current position as latitude / longitude reading, making use of either GPS hardware through the GPS Intermediate Driver or making use of Cell Tower Lookup through the Radio Interface Layer. If you are interested in adding location awareness to your own applications, you can download the article and accompanying sample code for free at this link: Creating Location Aware Applications for Windows Mobile Devices.

   What is this?09:27 AM
Blog Ref URL:  http://www.dotnetfordevices.com/forum.html#371


Wednesday, May 27, 2009
New Windows Mobile Development Video Available
If you want to learn how to create a full blown Windows Mobile Application from scratch using Visual Studio 2008 this is your chance. Over the upcoming months DotNETForDevices will show you how to create DVDsMobile, an application that stores a personal collection of DVD’s, can add DVD’s to a wish list, makes use of location awareness to find nearby DVD stores, makes use of a Web Service to quickly enter DVD information and consists of one single binary, being able to target multiple different Windows Mobile Devices. Besides an article and a growing number of downloadable videos, all source code will be made available for download at a later stage, as well as a complete book, explaining the entire application and introducing best practices to develop applications for Windows Mobile Devices. Today, the third video is available for download. In this video you will learn how to test a Windows Mobile application on a broad range of Device Emulators by cradling them by making use of Device Emulator Manager. All videos and additional documentation can be obtained by navigating here.

   What is this?00:20 AM
Blog Ref URL:  http://www.dotnetfordevices.com/forum.html#370


Monday, May 25, 2009
RampUp for Windows Mobile Update

As the author of the RampUp track for Windows Mobile I received some feedback from people who are studying the material. The first piece of feedback was about our focus on managed application development. Currently we are indeed focusing only on managed development using either Visual Basic.NET or C#. If you feel the need for a track on Windows Mobile native application development using C or C++ as well, just let me know. If enough people are interested in developing native applications for Windows Mobile devices I will pass the feedback on to the RampUp content owners who might decide to extend the Windows Mobile track with an additional native development module.

The second piece of feedback I received today was around connecting a Device Emulator through either Active Sync (Windows XP) or the Windows Mobile Device Center (Windows Vista). In order to do so, you need to make sure that DMA (Direct Memory Access) is selected as connection mechanism. The following picture shows you how to set this up for the Windows Mobile Device Center:

With the connections set properly, Device Emulator should be able to cradle, using either Windows Mobile Device Center or Active Sync.

If you have additional feedback, don’t hesitate to let me know. It may take a day or two, but I will reply to your feedback.

Maarten Struys



   What is this?21:44 PM
Blog Ref URL:  http://www.dotnetfordevices.com/forum.html#369


Tuesday, May 19, 2009
Windows Mobile Getting Started Video now available in HiFi
For those of you who already downloaded the video around developing your first Windows Mobile Application there is some good news. The video is now available with better audio quality. From now on all videos I will publish will be hosted on My Space, allowing larger individual files. It does mean that you will be linked to another server, and have to come back yourself to DotNETForDevices after downloading a video. This is just a minor painpoint and hopefully worth it, because the quality of material is much better. For those of you who have not had a chance to look at the video, and of course for those of you who want to get started developing your first Windows Mobile Application using Visual Studio 2008, make sure to download the Getting Started With Windows Mobile Video

   What is this?20:29 PM
Blog Ref URL:  http://www.dotnetfordevices.com/forum.html#366


DVDsMobile Part 2 Available Now
If you want to learn how to create a full blown Windows Mobile Application from scratch using Visual Studio 2008 this is your chance. Over the upcoming months DotNETForDevices will show you how to create DVDsMobile, an application that stores a personal collection of DVD’s, can add DVD’s to a wish list, makes use of location awareness to find nearby DVD stores, makes use of a Web Service to quickly enter DVD information and consists of one single binary, being able to target multiple different Windows Mobile Devices. Besides an article and a growing number of downloadable videos, all source code will be made available for download at a later stage, as well as a complete book, explaining the entire application and introducing best practices to develop applications for Windows Mobile Devices. Today, the second video is available for download. In this video you will see how to create one single binary that targets both Windows Mobile 6 Standard and Windows Mobile 6 Professional Devices. The application does not have much functionality yet, but is localized and targets multiple devices. All videos and additional documentation can be obtained by navigating here.

   What is this?17:26 PM
Blog Ref URL:  http://www.dotnetfordevices.com/forum.html#365


Tuesday, May 19, 2009
Windows Mobile Getting Started Video now available in HiFi
For those of you who already downloaded the video around developing your first Windows Mobile Application there is some good news. The video is now available with better audio quality. From now on all videos I will publish will be hosted on My Space, allowing larger individual files. It does mean that you will be linked to another server, and have to come back yourself to DotNETForDevices after downloading a video. This is just a minor painpoint and hopefully worth it, because the quality of material is much better. For those of you who have not had a chance to look at the video, and of course for those of you who want to get started developing your first Windows Mobile Application using Visual Studio 2008, make sure to download the Getting Started With Windows Mobile Video

   What is this?20:29 PM
Blog Ref URL:  http://www.dotnetfordevices.com/forum.html#366


DVDsMobile Part 2 Available Now
If you want to learn how to create a full blown Windows Mobile Application from scratch using Visual Studio 2008 this is your chance. Over the upcoming months DotNETForDevices will show you how to create DVDsMobile, an application that stores a personal collection of DVD’s, can add DVD’s to a wish list, makes use of location awareness to find nearby DVD stores, makes use of a Web Service to quickly enter DVD information and consists of one single binary, being able to target multiple different Windows Mobile Devices. Besides an article and a growing number of downloadable videos, all source code will be made available for download at a later stage, as well as a complete book, explaining the entire application and introducing best practices to develop applications for Windows Mobile Devices. Today, the second video is available for download. In this video you will see how to create one single binary that targets both Windows Mobile 6 Standard and Windows Mobile 6 Professional Devices. The application does not have much functionality yet, but is localized and targets multiple devices. All videos and additional documentation can be obtained by navigating here.

   What is this?17:26 PM
Blog Ref URL:  http://www.dotnetfordevices.com/forum.html#365


Saturday, May 16, 2009
RampUp for Windows Mobile is available right now
What kind of blog entry do you prefer? One that is just giving you the fact that RampUp, a great free training initiative from Microsoft released a Windows Mobile Track: If so, take a look at this Microsoft owned blog entry. Or do you perhaps, like me, appreciate a link to exactly the same information with a reference to the creator of the material. In that case, you should check out this Microsoft owned blog entry. I know I prefer the latter one, maybe in this particular case because I created the content, but in general, I think credit should be given to those folks who deserve it. BTW: I read some feedback from one person telling us that it is kind of disappointing that the Windows Mobile RampUp content is focusing on managed code only. I hear your comment and appreciate your feedback. If there is an opportunity, I would love to create one or two additional tracks covering native development for Windows Mobile Devices as well.

   What is this?00:02 AM
Blog Ref URL:  http://www.dotnetfordevices.com/forum.html#364


Monday, May 11, 2009
Tech-Ed 2009 USA is about to start

This year we once again have a very nice line-up of Windows Mobile Sessions at Tech-Ed. If you happen to be in Los Angeles to attend the largest Microsoft Developer and IT-Pro conference, make sure to attend as much Windows Mobile Sessions as you can. Not only will you learn a lot, you also have the opportunity to win cool stuff. Here is an overview of all the sessions we have prepared for you. If you want to know more about location aware application development for Windows Mobile devices, not only through GPS, but also through Cell Tower ID and IP address lookup, we will have an appointment tomorrow, Tuesday May 12 at 8.30 AM in room 511. Here is a sneak preview of the demos I will share with you:

As you hopefully can see, the demo application can retrieve location information from either Cell, IP address or GPS. It also has the possibility to display a variety of Virtual Earth maps, not inside a browser but just inside a PictureBox. Finally the appliation allows to update status information on social networks, finds nearby places of interest through Live Search and adds location information to pictures taken with the device camera. Curious? Tomorrow I will explain all the details of this application and more.



   What is this?07:30 AM
Blog Ref URL:  http://www.dotnetfordevices.com/forum.html#363


Saturday, May 2, 2009
Displaying Virtual Earth Maps on Windows Mobile Devices

With only a few lines of code you will be able to display a Virtual Earth Map inside a PictureBox control on a Windows Mobile Device. In the past I have shown how to display VE Maps inside a Browser control, with the disadvantage that you see the map loading. At one time I even used multiple Browser controls, switching the Visible property on the DocumentCompleted event being fired. Well, all of this is not necessary. You can just retrieve Virtual Earth Maps and show them inside a PictureBox once they are available. Besides setting up your Virtual Earth request, only a few lines of code are needed to do the trick:

MapUriResponse mapUriResponse = imageryService.GetMapUri(mapUriRequest);

 

HttpWebRequest request =

    (HttpWebRequest)WebRequest.Create(mapUriResponse.Uri);

HttpWebResponse response = (HttpWebResponse)request.GetResponse();

Image img = new Bitmap(response.GetResponseStream());

response.Close();

 

 

More details will follow right after Tech-Ed USA in two weeks or so.



   What is this?07:38 AM
Blog Ref URL:  http://www.dotnetfordevices.com/forum.html#362


Thursday, April 30, 2009
Three lines of code to make your Windows Mobile Virtual Earth Experience Awesome!

If you want to know more about having a great viewing experience of Virtual Earth Maps on Windows Mobile Devices, you basically only need three lines of code. Curious? Just wait until after Tech-Ed 2009 USA. I will reveal the details to you in a few weeks.

 

MapUriResponse mapUriResponse = imageryService.GetMapUri(mapUriRequest);

 

HttpWebRequest request = (HttpWebRequest)WebRequest.Create(

     mapUriResponse.Uri);

HttpWebResponse response = (HttpWebResponse)request.GetResponse();



   What is this?23:59 PM
Blog Ref URL:  http://www.dotnetfordevices.com/forum.html#361


Monday, April 27, 2009
DVDsMobile Kickoff

If you want to learn how to create a full blown Windows Mobile Application from scratch using Visual Studio 2008 this is your chance. Over the upcoming months DotNETForDevices will show you how to create DVDsMobile, an application that stores a personal collection of DVD’s, can add DVD’s to a wish list, makes use of location awareness to find nearby DVD stores, makes use of a Web Service to quickly enter DVD information and consists of one single binary, being able to target multiple different Windows Mobile Devices. Besides an article and a growing number of downloadable videos, all source code will be made available for download at a later stage, as well as a complete book, explaining the entire application and introducing best practices to develop applications for Windows Mobile Devices. Today, the first video is available for download. In this video you will see how to create an initial Windows Mobile 6 Standard application using C#. The application does not have much functionality yet, but is localized. Check out this new DotNETForDevices initiative at this link.



   What is this?23:49 PM
Blog Ref URL:  http://www.dotnetfordevices.com/forum.html#360


Friday, April 24, 2009
Webcast follow up with links, sample code and more

Thanks to everybody who attended my last MSDN Webcast yesterday. Even though it was a 90 minute webcast, we were running a bit out of time in the end. Hopefully you still got a lot out of this webcast. It feels bad to say goodbye to MSDN Webcasts, at the same time it feels great that this webcast is listed as one of the top five on-demand webcasts, at least right now. If you missed it, it is available for on-demand viewing now. Just click at this link.

I am looking for alternative hosting possibilities to continue presenting live for everybody who is interested in Windows Mobile Application Development. Until I have an alternative live streaming solution available, I will at least make sure to overflow you with downloadable videos in the upcoming weeks / months.

As promised, here is some follow-up for the Webcast. Here you can download the Windows Mobile 6 SDKs. One of the questions yesterday was around using Accelerometer functionality inside your own managed applications. You can take a look at Peter Nowak’s blog for more information. Also, if you are interested in the sample code that I showed you yesterday, you can download all samples by just clicking here.

If you are all excited about developing applications for Windows Mobile devices I strongly recommend you to also take a look at the 24 Hours of Windows Mobile Application Development Webcast series. This series covers lots of different topics around developing applications for Windows Mobile devices, mainly in managed code. Microsoft Windows Mobile Team: thank you very much for creating this fantastic series of Webcasts for all of us.



   What is this?22:22 PM
Blog Ref URL:  http://www.dotnetfordevices.com/forum.html#359


Wednesday, April 22, 2009
An interesting observation using strongly typed SqlCeResultSets

While developing some training material around Windows Mobile application development using Visual Studio 2008 I found an interesting issue. Those of you who have used strongly typed DataSets probably know that Visual Studio has excellent support in creating those DataSets for you. If you let Visual Studio 2008 generate strongly typed SqlCeResultSets you get similar support, although a bit limited. In one area, designer support does not really help you and it might even take some time finding out what the problem is. Here is my scenario. I want to create a Master – Detail view using strongly typed SqlCeResultSets, using the Orders and Order Details tables of the Northwind Database. The first steps are fine. Start by creating a new DataSource and change the Custom Tool in the Properties Window to generate a SqlCeResultSet (MSResultSetGenerator) instead of a DataSet (MSDataSetGenerator).
 
Dragging and dropping a DataGrid from the Data Sources Window works as expected. The DataGrid is created, together with a BindingSource and the DataGrid is populated. Unlike DataSets, being in memory representations of the underlying DataSource that also maintain relations between tables, SqlCeResultSets are scrollable cursors that work directly on tables in the database. Therefore, the DataGrid can actually show the underlying data, even in designer mode.  It also means that you need to provide some code yourself to create the relationship between the master and details table.

However, when dragging and dropping detailed information from the Order Details table gave some surprising results. Even though we are working on a completely different table, it tries to make use of the same BindingSource that was created for the Orders table as you can see below. This of course will lead to runtime exceptions, since fields in the Order Details table are not defined in the Orders table.

The remedy is simple but involves some work on your side. You have to create a new BindingSource yourself and set its DataSource property to the Order_DetailsResultSet and only then drag and drop UI controls from the Order Details table to the form.

Now Visual Studio will ask you what BindingSource to use and you can specify the just created BindingSource. This time, things are fine.

My question though, why is it so hard to do this as part of the designer? It can’t be rocket science, right? I think that Visual Studio 2008 is a fantastic development environment, but little issues like this one are very annoying. To me it almost seems that SqlCeResultSets are second class citizens compared to DataSets, even though they have huge advantages for Windows Mobile developers, targeting devices with limited resources. I guess the answer has to do something with the fact that DataSets exist from day one when we started talking about managed applications for the desktop as well. So the question really is different. Are device developers second class citizens for Microsoft that need to sort out these kinds of little issues themselves? I personally would rather have no designer support at all instead of something that is working in one situation but not in another situation.



   What is this?11:45 AM
Blog Ref URL:  http://www.dotnetfordevices.com/forum.html#358


Saturday, April 18, 2009
My last MSDN Webcast

Hopefully you will join me on Thursday April 23 at 18.00 GMT for what could very well be my last MSDN Webcast ever. In this Webcast titled Overview of Developing Windows Mobile Applications using Visual Studio 2008, you will learn everything there is to know to start developing applications for Windows Mobile 6 devices. You will get an overview of the development tools, information on where to download additional tools you need and of course you will see lots of demos, both in Visual Basic.NET and in Visual C#. Make sure to signup, because seats are limited.

This Webcast concludes a long history of me presenting MSDN Webcasts. Over the last 5+ years I presented around 20  - 30 Webcasts annually. However, my latest suggestions for extending the 24 Hours of Windows Mobile Application Development series did not even get a reply from Microsoft. I believe there is a lot of great information in this series, but a number of essential topics have not been covered. What about Internationalization? What about application deployment? What about developing Web based applications for Windows Mobile devices? The list goes on and on. As a matter of facts, I think this series should be extended to a 48 part series, but it is all quiet on the Western Front. To illustrate this, here is something I spotted yesterday when looking at the MSDN home page.

I hope this was an incident and that the Windows Mobile Team will continue to provide us ordinary developers with information on how to develop applications for Windows Mobile Devices. If not, I guess DotNETForDevices might become the site to visit. I will continue sharing Windows Mobile Application Development knowledge with you, using all multimedia capabilities I have available. First appointment: Thursday April 23 at 18.00 GMT. Future appointments: Check out DotNETForDevices on a daily basis.



   What is this?12:23 PM
Blog Ref URL:  http://www.dotnetfordevices.com/forum.html#357


Tuesday, April 14, 2009
Meet me between May 11 and May 15 at TechEd USA

If you happen to be in Los Angeles, CA between May 11 and May 15 to attend TechEd USA 2009 we have a great opportunity to meet in person. I will be working at the Windows Mobile Booth for at least a few hours each day. I also invite you to my breakout session at TechEd USA. If you want to know more about developing Location Aware Windows Mobile applications and if you want to learn how to make use of the Virtual Earth Web Services to retrieve mapping information, you will just have the change. Search in your session catalog for session WMB301. Here are the details of the session which is scheduled for May 12 at 8.30 AM:

WMB301: Creating Location-Aware Applications for Windows Mobile Devices

More and more Windows Mobile powered devices ship with integrated global positioning system (GPS) hardware. Since Windows Mobile devices are typically used on the road, it makes a lot of sense to add location awareness to your applications. In the upcoming future, Maarten Struys foresees location-aware applications moving beyond traditional navigation software. Adding location awareness to all kinds of social networking applications could be the next big thing for Windows Mobile devices. In this sample-filled session, Maarten shows you how you can make use of the GPS Intermediate Driver to retrieve GPS information from inside managed applications. Learn how to use the FakeGPS utility to test location-enabled applications without needing access to a physical GPS device and also learn how to feed FakeGPS with your own recorded location information. Of course, you will also see a real location-aware application, based on the Microsoft Virtual Earth Web Service, on a Windows Mobile Device in action.

I am looking forward to meeting you at TechEd 2009.



   What is this?11:20 AM
Blog Ref URL:  http://www.dotnetfordevices.com/forum.html#356


Start Developing Windows Mobile Applications
Before creating a full blown Windows Mobile Application step by step and sharing each and every step I take with the world, it is important to have some basic knowledge about developing applications for Windows Mobile Devices. That is the reason why I just published a video on creating your first Windows Mobile 6 Application using Visual Studio 2008. You will not only learn how to develop an application that targets a Windows Mobile Professional Device, but you will also learn how to install SDKs and how to use the Device Emulator to run and debug your application. Thanks to the emulator you don't even need a physical Windows Mobile Device to get you started developing great and exciting applications for the Windows Mobile Platform.

   What is this?10:47 AM
Blog Ref URL:  http://www.dotnetfordevices.com/forum.html#355


Tuesday, April 14, 2009
Meet me between May 11 and May 15 at TechEd USA

If you happen to be in Los Angeles, CA between May 11 and May 15 to attend TechEd USA 2009 we have a great opportunity to meet in person. I will be working at the Windows Mobile Booth for at least a few hours each day. I also invite you to my breakout session at TechEd USA. If you want to know more about developing Location Aware Windows Mobile applications and if you want to learn how to make use of the Virtual Earth Web Services to retrieve mapping information, you will just have the change. Search in your session catalog for session WMB301. Here are the details of the session which is scheduled for May 12 at 8.30 AM:

WMB301: Creating Location-Aware Applications for Windows Mobile Devices

More and more Windows Mobile powered devices ship with integrated global positioning system (GPS) hardware. Since Windows Mobile devices are typically used on the road, it makes a lot of sense to add location awareness to your applications. In the upcoming future, Maarten Struys foresees location-aware applications moving beyond traditional navigation software. Adding location awareness to all kinds of social networking applications could be the next big thing for Windows Mobile devices. In this sample-filled session, Maarten shows you how you can make use of the GPS Intermediate Driver to retrieve GPS information from inside managed applications. Learn how to use the FakeGPS utility to test location-enabled applications without needing access to a physical GPS device and also learn how to feed FakeGPS with your own recorded location information. Of course, you will also see a real location-aware application, based on the Microsoft Virtual Earth Web Service, on a Windows Mobile Device in action.

I am looking forward to meeting you at TechEd 2009.



   What is this?11:20 AM
Blog Ref URL:  http://www.dotnetfordevices.com/forum.html#356


Start Developing Windows Mobile Applications
Before creating a full blown Windows Mobile Application step by step and sharing each and every step I take with the world, it is important to have some basic knowledge about developing applications for Windows Mobile Devices. That is the reason why I just published a video on creating your first Windows Mobile 6 Application using Visual Studio 2008. You will not only learn how to develop an application that targets a Windows Mobile Professional Device, but you will also learn how to install SDKs and how to use the Device Emulator to run and debug your application. Thanks to the emulator you don't even need a physical Windows Mobile Device to get you started developing great and exciting applications for the Windows Mobile Platform.

   What is this?10:47 AM
Blog Ref URL:  http://www.dotnetfordevices.com/forum.html#355


Wednesday, April 8, 2009
Moving beyond MSDN Webcasts

For everybody who knows me a little bit and has followed me over the last years, it must be clear that I am passionate about MSDN Webcasts and that I really like to present Webcasts on a broad range of topics, preferably live, either alone or with one or more co-presenters. However, those Webcasts run typically for 60 minutes, and besides my own series around creating a Windows Mobile Line-of-Business application, back in 2006, we were never really focusing on creating a complete application from scratch and guiding you through the entire application. That is the reason why I will start a new initiative within a few days. Unfortunately this is not going to be a live event, since I am hosting it on DotNETForDevices, where I don’t have the possibility to present live for you. However, thanks to the great work of the folks at TechSmith, I do have the possibility to create a series of videos for you, using Camtasia, in which I will create a Windows Mobile application step-by-step, showing you each and every statement that I am adding to my project and also explaining to you how the application works and informing you about pitfalls and lacks in documentation for Windows Mobile developers.

The application I am planning to develop is an application I wanted to have for a long time. I have a huge DVD collection, and sometimes, when shopping at a store I am wondering if I already have a particular DVD or not. Having my Windows Mobile Device always with me, wouldn’t it be great to have an application that shows all the DVD’s I currently own. Especially if that application is also capable of showing which DVD’s I definitely want to purchase. In that way, I can make sure that I will buy those DVD’s I really want to have, but also making sure that I am not accidentally purchasing a DVD that is already in my collection.

Since I have a variety of Windows Mobile Devices I want to make sure that the application is running on devices with and without touch screens and that the transition from one device to another is seamless. I also want to have the possibility to synchronize my DVD collection with a back-end server, in this case a database on my development machine that was created by SQL Server 2005 Express Edition. On my Windows Mobile Device I like to have a local data cache as well, for which I will use SQL Server 2005 Compact Edition version 3.5. And of course I want to make use of the latest version of the .NET Compact Framework, being version 3.5. I will use Visual Studio 2008 to develop the application and I will make use of Sync Services for ADO.NET to synchronize my local client database with the back-end server (being my development machine). Since I am living in The Netherlands and also have a number of localized Windows Mobile Devices, I also want to make sure that the application is localized.

While developing this application, I will tell you more about using DataSets, SqlCeResultSets and perhaps one or two other methods to efficiently access the local data store on the device.

To ease entering new DVD’s and adding DVD’s to my personal wish list, I will make use of a Web Service. The application will also be location aware, for instance to find a store near my current location where I can purchase DVD’s. Last but not least, for my existing collection of DVD’s I will also make use of a built-in camera on my Windows Mobile Device to take a picture of inlays of existing DVD’s.

Last but not least, I will also create both a Device CAB Installer and a Desktop Installer to deploy the application to the device, optionally deploying the .NET Compact Framework 3.5 and SQL Server CE 3.5 to the device as well.

It might take quite some time to develop the entire application, but if you will join me during this series, not only will you learn more about developing a full blown application for Windows Mobile devices, you will also learn what I like about developing managed applications for Windows Mobile devices, but also about my pain points and issues that are coming up while I am developing this application. Besides the videos that will be published on DotNETForDevices, you also have the chance to download all source code and make use of it in your own application. And all for free! So hopefully you will join me over the next few months. I have an idea about this application right now, but I don’t have a clue what it will look like in the end or if it can be created at all. Are you as curious about the end-result as I am? Well, make sure to regularly check back at my blog to find more news about DVDsMobile.

For more information about Windows Mobile Development check this out:



   What is this?20:27 PM
Blog Ref URL:  http://www.dotnetfordevices.com/forum.html#354


Tuesday, October 14, 2008
New Windows Mobile Application Development Webcast coming up
Tomorrow, Wednesday October 15, 2008, I will present another webcast in our 24 hour series of webcasts around developing applications for Windows Mobile Devices. The webcast starts at 10 AM PST, or 7 PM CET if you are living in the same part of the world as I do. During this webcast we are going to discuss interoperability between managed and native code. We will do so by showing you lots of sample code, including simple and complex P/Invokes and how to use existing COM objects inside your managed application. Please hurry up registering for this webcast, because seats are limited. You can register by clicking here.

   What is this?23:57 PM
Blog Ref URL:  http://www.dotnetfordevices.com/forum.html#353


Tuesday, September 9, 2008
24 Hours of Windows Mobile Development Part 2

Tomorrow, September 10, 2008, we will continue our MSDN Webcast series around developing managed applications for Windows Mobile Devices. During this Webcast, Constanze Roman and I will show you how you can use the Device Emulator to its full extend. You will find out how you can use Device Emulator to run your single application on multiple devices, we will show you how to use Device Emulator in combination with Cellular Emulator to test cellular connections and how to set different security scenarios to Device Emulator to closely mimic real world devices. Make sure to sign up at this link, because seats are limited. Oh, by the way, tomorrow's webcast starts at 10.00 AM PST, as will all other webcasts in this series.



   What is this?22:17 PM
Blog Ref URL:  http://www.dotnetfordevices.com/forum.html#352


Wednesday, September 3, 2008
24 Hours of Windows Mobile Application Development

Tomorrow, September 3, 2008, we will start a brand new MSDN Webcast series around developing managed applications for Windows Mobile Devices. Several of the best speakers will contribute to this series over the upcoming months. We are working hard to get all titles in place, but I am glad to inform you that we kick off tomorrow with an introduction to Windows Mobile Development. Make sure to sign up at this link, because seats are limited. Oh, by the way, tomorrow's webcast starts at 10.00 AM PST, as will all other webcasts in this series.



   What is this?00:13 AM
Blog Ref URL:  http://www.dotnetfordevices.com/forum.html#351


Thursday, August 7, 2008
Thanks to everybody for watching our TechEd online Panel Discussion
If you already watched our TechEd online panel discussion I want to thank you very much for doing so. If not, you still have a chance to listen to Paul Yao, Neil Roodyn, Andy Wigley, Constanze Roman and myself. Simply click on this link: Windows Mobile Application Development. So far we have the best watched content. With your help we can stay on the number 1 position, because after all, Windows Mobile Development simply rocks! 

   What is this?05:15 AM
Blog Ref URL:  http://www.dotnetfordevices.com/forum.html#350


Windows Mobile Development Step by step screencasts.

Hopefully this is going to be good news for you, especially for those of you who want to start developing applications for Windows Mobile Devices. Starting September 1 I will try to publish one Windows Mobile developer video / day, weekends excluded, beginning with some very basic information, but over the months more complex topics will be covered as well. During the series you will also learn more about both the C# and Visual Basic.NET programming languages. Here is the preliminary agenda for the first two weeks.

 

September 1 – Introduction in Windows Mobile Device Development.

September 2 – Different types of Windows Mobile Devices

September 3 – What tools do you need to develop Windows Mobile Applications.

September 4 – Different types of Windows Mobile Devices

September 5 - My first Windows Mobile Application (from here onwards all sample code will be available for download, in some cases including full documentation).

September 8 – Events and event handlers

September 9 – Event driven application development

September 10 – Buttons and Labels

September 11 – Text boxes and the Input panel

September  12 - The Status Bar

 

Hopefully you will check my blog at www.dotnetfordevices.com regularly starting September 1st when I will take up this new challenge to deliver one Windows Mobile Device Development video / day until the end of the year, with the exception of conference weeks when I have speaking obligations.



   What is this?01:27 AM
Blog Ref URL:  http://www.dotnetfordevices.com/forum.html#349


Thursday, August 7, 2008
Thanks to everybody for watching our TechEd online Panel Discussion
If you already watched our TechEd online panel discussion I want to thank you very much for doing so. If not, you still have a chance to listen to Paul Yao, Neil Roodyn, Andy Wigley, Constanze Roman and myself. Simply click on this link: Windows Mobile Application Development. So far we have the best watched content. With your help we can stay on the number 1 position, because after all, Windows Mobile Development simply rocks! 

   What is this?05:15 AM
Blog Ref URL:  http://www.dotnetfordevices.com/forum.html#350


Windows Mobile Development Step by step screencasts.

Hopefully this is going to be good news for you, especially for those of you who want to start developing applications for Windows Mobile Devices. Starting September 1 I will try to publish one Windows Mobile developer video / day, weekends excluded, beginning with some very basic information, but over the months more complex topics will be covered as well. During the series you will also learn more about both the C# and Visual Basic.NET programming languages. Here is the preliminary agenda for the first two weeks.

 

September 1 – Introduction in Windows Mobile Device Development.

September 2 – Different types of Windows Mobile Devices

September 3 – What tools do you need to develop Windows Mobile Applications.

September 4 – Different types of Windows Mobile Devices

September 5 - My first Windows Mobile Application (from here onwards all sample code will be available for download, in some cases including full documentation).

September 8 – Events and event handlers

September 9 – Event driven application development

September 10 – Buttons and Labels

September 11 – Text boxes and the Input panel

September  12 - The Status Bar

 

Hopefully you will check my blog at www.dotnetfordevices.com regularly starting September 1st when I will take up this new challenge to deliver one Windows Mobile Device Development video / day until the end of the year, with the exception of conference weeks when I have speaking obligations.



   What is this?01:27 AM
Blog Ref URL:  http://www.dotnetfordevices.com/forum.html#349


Saturday, August 2, 2008
TechEd EMEA 2008 Developers

You might think it is still a long time until November 10 but time is flying. Between November 10 and November 14 the place for you to be is Barcelona in Spain. For 5 whole days you have the chance to learn everything there is to know around Microsoft technologies for software developers. You can select sessions from 15 different technical tracks, including of course Windows Mobile and Windows Embedded tracks. With over 4000 attendees expected, this is a huge event focussed towards developers. You can choose from over 200 breakout sessions, over 90 interactive sessions and learn about new technologies by running a large number of different self-paced hands on labs. It might still seem far away, but November is approaching fast. Make sure to be part of TechEd EMEA Developers 2008 by registering here. If you want to find out more about this event you can check the official TechEd EMEA 2008 Developers Web Site. For one thing, I am looking forward to meeting you in person in Barcelona, either at one of the Windows Embedded / Windows Mobile booths or during one of my three or four scheduled sessions during this year's TechEd EMEA.



   What is this?13:35 PM
Blog Ref URL:  http://www.dotnetfordevices.com/forum.html#348


Wednesday, July 30, 2008
If you missed our Windows Mobile Location Awareness Webcast
Here is the opportunity to view it offline. You will learn a lot about the GPS Intermediate Driver that adds a level of abstraction between your application and physical GPS hardware on your Windows Mobile Device. You will also see Constanze Roman building an electronic compass application for a Windows Mobile device and you will find out how to test this application using FakeGPS. For quick access to this webcast, simply click here and start watching. However, after watching the webcast make sure to visit the Windows Mobile Developer Center on MSDN for more information about developing application for Windows Mobile Devices, but also make sure to visit our Webcast Host for this particular webcast:  AT&T's devCentral for all their resources around developing for Mobile Devices.

   What is this?22:02 PM
Blog Ref URL:  http://www.dotnetfordevices.com/forum.html#347


Friday, July 25, 2008
Thank you for attending our Windows Mobile Location Awareness Webcast
Constanze and I want to thank everybody who attended our Webcast on developing Windows Mobile Location Aware applications this morning. It was fantastic to have such a large crowd joining us. Hopefully we were able to excite you and get you started developing your own location aware applications. This AT&T hosted webcast will be available for offline viewing, probably sometime next week. As soon as I have a link available to watch the recording, I'll make sure to publish it on my blog. For right now, as promised, here is all sample code we used in today's webcast.

   What is this?12:00 PM
Blog Ref URL:  http://www.dotnetfordevices.com/forum.html#346


Wednesday, July 23, 2008
Thanks for attending our Unit Testing for Devices Webcast

I want to thank everybody who attended our Webcast on Unit Testing for Devices this morning. Hopefully we were able to convince you that Unit Testing is not only cool, but also really helps you to create higher quality software. As promised, here is all sample code we used in today's webcast. And don't forget to meet Constanze and me again during our next Webcast, hosted by AT&T. Our next appointment is Friday July 25th at 10.00 AM PTS. Just make sure to register here.



   What is this?14:45 PM
Blog Ref URL:  http://www.dotnetfordevices.com/forum.html#345


Wednesday, July 16, 2008
Windows Mobile 6 Advanced Location Awareness Development Techniques
Sometimes things are really moving fast. Just a few minutes ago I created a shameless plug on DotNETForDevices to get you interested in a Webcast Constanze Roman and I are presenting around location aware applications, telling you the registration link would be available later. Well guess what: here is the registration link to register for this webcast. You better hurry to register, since seats for the live event are limited. Make sure to register as soon as possible at this link: https://events.livemeeting.com/831/12371/reg.aspx

   What is this?01:21 AM
Blog Ref URL:  http://www.dotnetfordevices.com/forum.html#344


Do you want to know what this application is all about?

Before even showing you a screen dump of the application I am going to talk about, I want to make sure that you check your calendars and I hope you all have time available to meet Constanze Roman and myself on July 25th at 10.00 AM PST when we will present an AT&T Webcast around location aware applications for Windows Mobile Devices. Hopefully you will be able to join us. Constanze gave me a UI mockup for an electronic compass with some additional information, and she promised to do some live coding during our webcast to turn this into a working electronic compass for Windows Mobile devices, making use of the GPS Intermediate Driver. It looks like I have the 'honor' to test her application, making use of FakeGPS.

Besides showing how to create an application like this, there will be more cool content during this AT&T Webcast. Constanze will show us how to use a little native application to record GPS data for test purposes, and I will show you how to not only test Constanze's application, but I will also show you how the GPS Intermediate Driver allows you to run multiple applications that all need GPS data simultaneously. As soon as we have a registration link for this webcast, I will make it available through this blog.



   What is this?00:38 AM
Blog Ref URL:  http://www.dotnetfordevices.com/forum.html#343


Wednesday, July 16, 2008
Windows Mobile 6 Advanced Location Awareness Development Techniques
Sometimes things are really moving fast. Just a few minutes ago I created a shameless plug on DotNETForDevices to get you interested in a Webcast Constanze Roman and I are presenting around location aware applications, telling you the registration link would be available later. Well guess what: here is the registration link to register for this webcast. You better hurry to register, since seats for the live event are limited. Make sure to register as soon as possible at this link: https://events.livemeeting.com/831/12371/reg.aspx

   What is this?01:21 AM
Blog Ref URL:  http://www.dotnetfordevices.com/forum.html#344


Do you want to know what this application is all about?

Before even showing you a screen dump of the application I am going to talk about, I want to make sure that you check your calendars and I hope you all have time available to meet Constanze Roman and myself on July 25th at 10.00 AM PST when we will present an AT&T Webcast around location aware applications for Windows Mobile Devices. Hopefully you will be able to join us. Constanze gave me a UI mockup for an electronic compass with some additional information, and she promised to do some live coding during our webcast to turn this into a working electronic compass for Windows Mobile devices, making use of the GPS Intermediate Driver. It looks like I have the 'honor' to test her application, making use of FakeGPS.

Besides showing how to create an application like this, there will be more cool content during this AT&T Webcast. Constanze will show us how to use a little native application to record GPS data for test purposes, and I will show you how to not only test Constanze's application, but I will also show you how the GPS Intermediate Driver allows you to run multiple applications that all need GPS data simultaneously. As soon as we have a registration link for this webcast, I will make it available through this blog.



   What is this?00:38 AM
Blog Ref URL:  http://www.dotnetfordevices.com/forum.html#343


Tuesday, July 8, 2008
Windows Mobile Application Development Panel Discussion on TechEd Online

Here is a unique chance for you to actually see a few of our Windows Mobile experts in a discussion around Windows Mobile Application Development. Lots of topics are covered, like our own personal opinions about native versus managed applications, making use of the Device Emulator, using the remote tools etc. You definitely don't want to miss this discussion. The only bad thing about this video, it is hard to watch myself, I think I look silly, so if you just want to have a laugh, you should definitely watch the video as well. 



   What is this?22:31 PM
Blog Ref URL:  http://www.dotnetfordevices.com/forum.html#342


Mark your calendar for this MSDN Webcast

On July 23rd at 10 AM PST, Constanze Roman and I will present an MSDN Webcast covering Unit Testing for Devices, live from Redmond. This Webcast is based upon the talk I gave during TechEd USA 2008, but it does contain new material and brand new demos. You will learn how to create Unit Tests for Devices using Visual Studio 2008, how to run those unit tests, how to debug your unit tests and how to automate Unit Testing by executing your tests from a command prompt. Of course this webcast will be loaded samples and you have the opportunity to get all your questions answered if you join us during this live event. Make sure to register online today, because the number of seats is limited.  



   What is this?15:16 PM
Blog Ref URL:  http://www.dotnetfordevices.com/forum.html#341


Tuesday, July 8, 2008
Windows Mobile Application Development Panel Discussion on TechEd Online

Here is a unique chance for you to actually see a few of our Windows Mobile experts in a discussion around Windows Mobile Application Development. Lots of topics are covered, like our own personal opinions about native versus managed applications, making use of the Device Emulator, using the remote tools etc. You definitely don't want to miss this discussion. The only bad thing about this video, it is hard to watch myself, I think I look silly, so if you just want to have a laugh, you should definitely watch the video as well. 



   What is this?22:31 PM
Blog Ref URL:  http://www.dotnetfordevices.com/forum.html#342


Mark your calendar for this MSDN Webcast

On July 23rd at 10 AM PST, Constanze Roman and I will present an MSDN Webcast covering Unit Testing for Devices, live from Redmond. This Webcast is based upon the talk I gave during TechEd USA 2008, but it does contain new material and brand new demos. You will learn how to create Unit Tests for Devices using Visual Studio 2008, how to run those unit tests, how to debug your unit tests and how to automate Unit Testing by executing your tests from a command prompt. Of course this webcast will be loaded samples and you have the opportunity to get all your questions answered if you join us during this live event. Make sure to register online today, because the number of seats is limited.  



   What is this?15:16 PM
Blog Ref URL:  http://www.dotnetfordevices.com/forum.html#341


Monday, July 7, 2008
Learning to develop applications for Windows Mobile Devices

Right now this still sounds as a very ambitious project, but after a little vacation break coming up soon, this could be the next real thing. I am already in the planning stage to create a lot of free sample videos on how to create applications for Windows Mobile Devices. There are still some challenges of hosting them on my blog, unless I will make the media files available for download only. But I am also looking into making them available to you immediately by making use of the great multi-media capabilities of Silverlight. Apart from the way this content will be delivered, you can expect tons of information and samples around creating your first Windows Mobile application, making use of location awareness, using WCF, incorporating LINQ and many, many other topics. I hope you will revisit this blog frequently. I will try to make it the best resource to create Windows Mobile Applications by showing you lots of sample code, delivering one video each day during the September / October time frame. Of course, all sample source code will be available for download as well, together with complete documentation of the samples.



   What is this?00:25 AM
Blog Ref URL:  http://www.dotnetfordevices.com/forum.html#340


Friday, June 27, 2008
Are you interested in Windows Mobile Devices?
If you are a Windows Mobile software developer or if you are simply owning a Windows Mobile Device, you might want to check out this cool refreshed website, formally known as the Windows Mobile Owner Circle, but now present under its new name Windows Mobile TotalAccess. This website is going to be your one stop shop to find information about Windows Mobile Devices, but also to find applications for Windows Mobile devices. Even better, there are free applications available for download on Windows Mobile TotalAccess as well. Make sure to visit the site right now and add it to your favorites.

   What is this?13:24 PM
Blog Ref URL:  http://www.dotnetfordevices.com/forum.html#339


Tuesday, June 17, 2008
A cool initiative
I just read the latest MSDN flash newsletter that amongst others contains information about a Give Camp in Ann Arbor, MI. The idea is that all kinds of people in the software industry in this local community donate a weekend of their time to create custom software for non profit organizations and charities. I just love this idea. I would really like for us, Windows Mobile / Windows Embedded Developers to have such an initiative as well. How about creating a Virtual Give Camp around our technologies. I am sure there are lots of charities that would welcome the use of Windows Mobile Devices, installed with custom software. Of course with a virtual event, you miss the fun part of physically getting together and socialize, besides creating software. However, it still feels good to use our skills not only to make a living, but to do something extra. We might even be able to get device manufacturs excited to donate a few devices for the same charity. Anybody interested in something like this? Just send me an email and let's find out if we can get something like this started. Unfortunately it is not feasible for me to fly to Ann Arbor, MI for just a weekend, otherwise I would have definitely donated my time. If you happen to be in the area around July 11, make sure to give them your help. 

   What is this?11:36 AM
Blog Ref URL:  http://www.dotnetfordevices.com/forum.html#338


Friday, June 6, 2008
TechEd 2008 round up

Thanks everybody who attended my 3 sessions over the last week. During each of my sessions I have promised to make the sample source code available. I make you an even better deal. The slide decks I used for the sessions in the yellow TLC classroom are not available online on the TechEd site, so you can download them from here as well.

The first session I presented was all around using the .NET Compact Framework 3.5 PowerToys. You can click on this link to download the slide deck. The sample code I showed you might be of interest when using the PowerToys, but you can also just simply use it to find out about performance on a particular device. The sample code is available through this link.

The second session I presented was a breakout session, which means the slide deck is on the TechEd site, so it won’t be available for download here. However, if you are interested in the demo code, including the unit test project inside the solution, you can download that sample code here.

Finally my last session was again a TLC session on the State & Notification Broker. The slide deck is available for download by clicking on this link. If you want to have the sample code as well, just click on this link.

I hope you had a great TechEd. Our next TechEd appointment will be in Los Angeles in May 2009.



   What is this?17:47 PM
Blog Ref URL:  http://www.dotnetfordevices.com/forum.html#337


Thursday, June 5, 2008
Running Smart Device Unit Tests from the Command Line

First off I like to thank everybody who attended my session at TechEd yesterday on Unit Testing for Devices. I surely hope you had as much fun listening to me as I had presenting to you. I promised to follow up on one of the great questions that were asked during the session.

Can you run Smart Device Unit Tests from a command line?

Yesterday I was not 100% sure when answering this question, as I told everybody. To be complete certain, the best thing to do is just give it a try, so that is what I did. Here are my results, of course just for a very simple type library for which I created some unit tests.

Let me explain the steps you need to take in order to run your Smart Device Unit Tests from a command line.

  • Open a Visual Studio 2008 command prompt. In this way you have all necessary environment variables setup correctly.
  • Navigate to the directory where your unit test binaries are stored.
  • Use mstest.exe to start your Unit Tests

You need to pass some specific parameters to mstest in order for Smart Device Unit tests to execute. It is mandatory to pass a runconfig option to specify a test run configuration file. The test run configuration file contains amongst others the target on which to run the tests. If you let Visual Studio 2008 create your unit tests, it will automatically generate a test run configuration file, that can be opened from inside Solution Explorer.

Inside the test run configuration file, you need to make sure that your Host is setup as Smart Device and that you are targeting the right platform and a particular device belonging to that platform.

The test run configuration file is stored in the root directory of your solution. For ease of use, I simply copied that particular file to the directory where my unit test binaries are stored. After this step I simply executed my unit tests from a command line, using the following command:

Mstest /runconfig:SmartDeviceTestRun.testrunConfig /Testcontainer:CalculatorLibTests.dll

Executing this command connects to the device that is specified in the test run configuration file. If the device is an emulator, the emulator will even be started for you. The tests will run on the device / emulator and the test results are returned to the development machine. You can specify a file to store the test results in, or simply show the results in the command prompt.

I will make sure to create a video in the very near future to show this in action. Just check out the Windows Mobile Development Center for availability of that video over the upcoming 3 to 6 weeks.



   What is this?09:40 AM
Blog Ref URL:  http://www.dotnetfordevices.com/forum.html#336


Wednesday, June 4, 2008
Sample code for the last part of our Webcast series

To begin with, I want to thank everybody who joined us today during our MSDN Webcast that came to you Live from Orlando. For me it was definitely thrilling to be able to co-present with Webcast rockstars like Constanze Roman and Jim Wilson, and actually be in the same room with these legends. As we promised during the webcast, we have some sample code available. I am pretty sure that Jim will make his sample code available through his blog. Constanze gave me permission to make her sample code available through my blog. If you joined us today, you probably will remember that Constanze showed us a little native application to record raw NMEA data. You can download that sample by clicking here, together with her upgraded version of her location aware application, including retrieving MapPoint maps. However, you need to get your own MapPoint developer account in order to run this sample. To obtain a MapPoint developer account you can click here. Finally, my source code, all about performance of .NET CF applications, can be downloaded here.

I feel sad that this webcast series is over right now. At the same time I feel priviledged that Constanze and Jim allowed me to be part of this webcast series. I surely hope they keep up the great work and come up with ideas for cool future Windows Mobile related webcasts. I definitely will sign up to listen to them. I hope you do as well!



   What is this?23:12 PM
Blog Ref URL:  http://www.dotnetfordevices.com/forum.html#335


Sunday, June 1, 2008
Late Breaking News around our next Webcast

I am pretty sure that everybody who frequently reads this blog must know that we are in the midst of presenting a webcast series around developing for Windows Mobile in preparation for Tech-Ed. Since we scheduled this webcast series at the latest moment possible, there has been some confustion about the number of episodes in the series, and for our upcoming last part, also about the technical level of the webcast and about the content of this particular webcast. Here are the things I know for sure today. Constanze, Jim and I will present together, live from Tech-Ed, on Wednesday June 4 at 10.00 AM PST. The intended duration of this webcast is one hour, but if you have attended previous webcasts from Jim and from me, you know they might run over at least 15 minutes. This time I know for a fact though that both Constanze and I will be running away from the webcast at 11.15 AM, if necessary leavning Jim all alone with all of you, since we both have Tech-Ed breakout sessions scheduled at 2.45 PM EST, which, after doing the math corresponds with 11.45 AM PST.

What I also know for a fact is that this is going to be the most 'improvising' Webcast I have ever (co-)presented. What I don't know yet is the location from where we will be presenting. Is it going to be a nice and quiet conference room with only the three of us present in the room? I hope it will be something different. I would really like to present from the exhibition floor at one of the booths, with many people attending us online, but also many people attending us in Orlando. It will be noisier that way, but definitely much more fun as well.

What I know for a fact as well is that the description of this webcast series is not entirely accurate. Don't get angry if some of the announced demos will not be shown, but entirely different demos instead.

What I definitely know for a fact is that this is going to be a fun webcast, hopefully not only for us presenting it, but also for you attending, be it live in Orlando or live somewhere else around the world. The only thing I will ask you at this moment is to please make sure to reserve your seats by clicking this link. As always, the number of seats is limited and I would hate it if you would not be able to join us, because of a sold out house.



   What is this?15:40 PM
Blog Ref URL:  http://www.dotnetfordevices.com/forum.html#334


Tuesday, May 27, 2008
Our latest webcast samples are available now for download

Once again thank you all for attending our Webcast on Windows Mobile development just a few hours ago. As promised, you can download all sample code we showed during the webcast here. Just click on this link to download my sample code. This sample is partly inspired by the Windows Mobile LOB Accelerator 2008, a very cool example, shipping with complete source code + documentation. Using this sample, I had my own webcast sample up and running in just a few minutes, so you should take advantage of this great example as well.

Constanze was kind enough to make her sample code available as well. You can find her location awareness sample by clicking on this link. In order for both our samples to run properly, you need the Windows Mobile 6 Professional SDK installed on your development system.

Don't forget to join Jim Wilson tomorrow for the next part of our Webcast Series, where he is going to talk about Mobile Data Strategies and Synchronization. Your next appointment will be on May 28 at 10.00 PST. You can register here to attend this webcast live.

Finally, since there was some confusion about the exact number of webcasts in this series, there will be a part 5, being broadcasted live from TechEd. It looks like Jim, Constanze and I will meet there to all present a part of this webcast in which we will round up the series, definitely show some cool demos and talk about why like to develop applications for Windows Mobile Devices. Make sure to register for this last webcast which will air on Wednesday June 4, once again at 10.00 AM PST. One final note on our last webcast. It is currently listed on MSDN as a level 100 webcast. That is definitely not true, it will be at least a level 200 webcast.



   What is this?22:56 PM
Blog Ref URL:  http://www.dotnetfordevices.com/forum.html#333


Sunday, May 25, 2008
Our next webcast appointment is this Tuesday
This upcoming Tuesday, Constanze and I are presenting part 3 of our Webcast series around Windows Mobile Application Development. You can use the series to get ready for TechEd, but of course also to just learn more about developing applications for Windows Mobile Devices. During this webcast we will show you lots of coding demo's, around using Pocket Outlook data inside your own application, making use of the GPS Intermediate Driver and FakeGPS to add and test location awareness inside your own application and a little sample on how to use phone functionality from within your own application. Hopefully we can meet all of you live during our Webcast. Don't forget to register, since the number of seats is limited.

   What is this?22:25 PM
Blog Ref URL:  http://www.dotnetfordevices.com/forum.html#332


Microsoft Netherlands DevDays

First I like to thank all of you who attended one or both of my sessions at the Microsoft Netherlands DevDays yesterday. I know that the second session was sort of advanced, showing lots of code samples that you maybe did not completely get. The good news is that we are right now thinking about creating a whole series of webcasts, videos and whitepapers for beginning WM developers on MSDN. Just check out the blogs of my friends Constanze and Jim. I am sure that they will give you more information about this when it becomes available. I also promised all of you to make my sample code available. As a separate bonus, I will also provide links to download my slide decks for both presentations.

Download my first slide deck

Download my first sample application (+ a few more samples I didn't have time to talk about during the presentation).

Download my second slide deck

Download all sample code for the second talk

Remember, the "FeatureManager" I spoke about during the presentations is a work in progress. I will make more code available when I have it.



   What is this?01:42 AM
Blog Ref URL:  http://www.dotnetfordevices.com/forum.html#330


Sunday, May 25, 2008
Our next webcast appointment is this Tuesday
This upcoming Tuesday, Constanze and I are presenting part 3 of our Webcast series around Windows Mobile Application Development. You can use the series to get ready for TechEd, but of course also to just learn more about developing applications for Windows Mobile Devices. During this webcast we will show you lots of coding demo's, around using Pocket Outlook data inside your own application, making use of the GPS Intermediate Driver and FakeGPS to add and test location awareness inside your own application and a little sample on how to use phone functionality from within your own application. Hopefully we can meet all of you live during our Webcast. Don't forget to register, since the number of seats is limited.

   What is this?22:25 PM
Blog Ref URL:  http://www.dotnetfordevices.com/forum.html#332


Microsoft Netherlands DevDays

First I like to thank all of you who attended one or both of my sessions at the Microsoft Netherlands DevDays yesterday. I know that the second session was sort of advanced, showing lots of code samples that you maybe did not completely get. The good news is that we are right now thinking about creating a whole series of webcasts, videos and whitepapers for beginning WM developers on MSDN. Just check out the blogs of my friends Constanze and Jim. I am sure that they will give you more information about this when it becomes available. I also promised all of you to make my sample code available. As a separate bonus, I will also provide links to download my slide decks for both presentations.

Download my first slide deck

Download my first sample application (+ a few more samples I didn't have time to talk about during the presentation).

Download my second slide deck

Download all sample code for the second talk

Remember, the "FeatureManager" I spoke about during the presentations is a work in progress. I will make more code available when I have it.



   What is this?01:42 AM
Blog Ref URL:  http://www.dotnetfordevices.com/forum.html#330


Wednesday, May 21, 2008
If you are a Dutch Device Developer we can meet in person this Friday

I just found out that we have an opportunity meeting face to face if you are attending the Microsoft Netherlands DevDays this Friday. Unfortunately I will only be around on Friday, but I will deliver two different presentations on Friday. The first one is all about getting started developing Windows Mobile appilcations. Our appointment for this talk is at 9.15 AM in Room A of the RAI conference centre on the first floor. Our next appointment, when I will talk about advanced Windows Mobile application Development is in the same room, but at 3 PM. During the lunch break, between noon and 1.30 PM I will be around though to answer all your hard questions around Windows Mobile Development during the Sharing Visions (in other words 'Ask the Experts') session on the Ground Floor of the RAI conference centre near booth 2.09. I am looking forward to meeting many of you and being able to speak Dutch again for a while.



   What is this?00:24 AM
Blog Ref URL:  http://www.dotnetfordevices.com/forum.html#329


Tuesday, May 20, 2008
Good news
My previous blog entry is no longer relevant, because all webcasts can be downloaded again from MSDN. Make sure to download ours as the first one today. Once again, you can find it here.

   What is this?10:58 AM
Blog Ref URL:  http://www.dotnetfordevices.com/forum.html#328


Monday, May 19, 2008
Getting your hands on the on-demand version of our Webcast

Right now we are having some issues with some servers that make it temporarily impossible for you to download the webcast Constanze and I presented last week. I can assure you that everybody is working hard to solve the issues. If you are experiencing problems right now viewing our webcast offline or downloading it, make sure to check back a few times. Hopefully the problem is solved by the end of the day. Once the servers are up and running again, you should be able to view the on-demand version of this first of a five part webcast series in preparation for TechEd here.



   What is this?21:40 PM
Blog Ref URL:  http://www.dotnetfordevices.com/forum.html#327


Friday, May 16, 2008
Webcast sample code for download

First let met thank everybody who attended our MSDN Webcast on Developing applications for Windows Mobile Devices. With such a late announcement of the series it was great to see so many of you shoing up. Also, let me thank everybody who helped us advertising this Webcast. Without your help we would not have that many people joining us live, so once again a big thank you. Finally, a special thank you to you, Constanze for letting me co-present with you!

If you are interested in today's sample code, you can download it here. Remember you need Visual Studio 2008 to open the sample code, play with it and modify it. 

Today was only the beginning of a 5 part series around Windows Mobile development to get you up to speed to get the most out of Tech*Ed. We started very simple, but in the upcoming parts of the series we will raise the bar. Our next appointment is Wednesday May 21st at 10.00 AM PST, when Jim Wilson will be talking about how to develop your first Real Windows Mobile 6 application. Here is Jim's abstract:

Developing Windows Mobile 6 applications with the Microsoft .NET Compact Framework allows you to take advantage of your existing desktop developer skills and enables you to begin developing mobile applications quickly. Although you may be familiar with many aspects of the .NET Compact Framework, mobile software development requires additional considerations such as designing a user interface for small displays, adapting the user interface to different device form factors, and avoiding unnecessary battery consumption. In this webcast, we address how you can handle these issues and demonstrate how you can test your application with the Windows Mobile Device Emulator before you deploy your application to the first device.

Make sure you register following this link, because seats are limited!



   What is this?12:40 PM
Blog Ref URL:  http://www.dotnetfordevices.com/forum.html#326


Monday, May 12, 2008
Act fast and mark your calendars!

This is on a really short notice, but hopefully you can join us this upcoming Friday for the first part of a series of webcasts around Windows Mobile Development. This is a perfect preparation to get the most out of the Windows Mobile sessions at Tech∙Ed, but also if you are not attending Tech∙Ed, there is more than enough to take away from the series. On Friday May 16, Constanze Roman and I will kick off with part one, titled:

Preparing for Tech∙Ed: Developing Applications for Windows Mobile Devices.

During this webcast you will get a high-level introduction in developing your own managed applications for Windows Mobile devices. Learn about the development tools, witness a live coding demonstration to create applications for Windows Mobile 6 devices using C# and Microsoft Visual Basic .NET, and become familiar in using the Device Emulator to test your applications.

Please join Constanze and me on May 16 at 11.00 PST when we will be presenting live from Redmond! Don’t forget to register and reserve your seat at this link. Space is limited! We hope to find many of you online to listen in and ask those tough questions at the end of the webcast.

Part 2 of this series will be presented by Jim Wilson. As soon as I have the details of Jim's webcast I post them here immediately, so make sure to check back regularly.



   What is this?17:55 PM
Blog Ref URL:  http://www.dotnetfordevices.com/forum.html#325


Thursday, May 8, 2008
Stop the presses

It looks like we are going to have lots of things going on in the upcoming weeks. We are not entirely sure of all details like registration links right now, but we will be presenting a whole bunch of webcastsover the upcoming weeks. It looks that we are having at least four more webcasts coming up to prepare you, as a Windows Mobile developer, ideally for TechEd. Of course, I would definitely like to invite everybody else, not just Windows Mobile developers, to attend our webcasts and our sessions at TechEd. Once you find out about our cool devices, either by Jim, Constanze, me or our other great speakers around Windows Mobile we have available for you at TechEd, I am sure you can't wait to develop your first application targetting these cool devices as well! And of course all of us will take booth duty time to talk one on one with you as well at TechEd! OK, time to focus. This is some very preliminary information, but it looks like our Webcast schedule to prepare ideally for TechEd to learn more about application development for Windows Mobile devices looks like this (and again, some details might still change and I inform you about registration links as soon as I have them):

Session 1 - May 16 presented by Constanze and Maarten at 11am PT - - Introduction to Windows Mobile Application Development

Session 2 - May 21, presented by Jim at 10am PT - May 16 - Developing your first real Windows Mobile 6 application

Session 3 -May 27, presented by Constanze and Maarten at 10am PT - Using Device Capabilities and Device Functionality

 

Session 4 - May 28, presentedy by Jim at 10am PT - Mobile Data Strageties: SQL Server Comact, XML, LINQ and Synchronization

 

This surely looks like an interesting series of webcasts. I hope may of you can join us live. Make sure to check our blogs! Constanze, Jim and myself will give you registration links on our blogs once we have them available.

 



   What is this?04:11 AM
Blog Ref URL:  http://www.dotnetfordevices.com/forum.html#324


New features for NETCF developers

My good friend Constanze just blogged about this very cool video that Paul Yao (yet another friend and MVP buddy) has created for WE-DIG, being the Windows Embedded Developers Interest Group. Before I even start talking about Paul's great video, make sure to add Constanze's blog to your RSS feeds, because she will inform you the minute she knows about things going on in the Windows Mobile and Windows Embedded space. The title on channel 9 and in Constanze's weblog might be a little misleading (sorry Constanze, sorry Paul, but you have so much more to offer, so let me be your PR guy for just a second), because Paul not only talks about new things available in the .NET CF 3.5. For me personally it is was even more interesting to learn about some features that are available in C# 3.0 that I was not aware off!I On a personal note: I feel so distinct from my friends at WE-DIG right now. I know they have a meeting tonight in Redmond, and here I am, living over 10 hours of flying in some small town called Alphen aan den Rijn in The Netherlands. Guys, I would have loved to eat some of the world's best pizza with you and joining you listening to Paul’s presentation and have some great discussions afterwards. Hopefully there is another oppurtunity to meet with all of you in the near future. The good news however is that all of us, being the rest of the world, can still enjoy and learn from Paul’s talk. Just go to Channel 9 and learn more about C# 3.0, LINQ and the .NET Compact Framework 3.5. I guess we have to do without pizza's though!



   What is this?00:38 AM
Blog Ref URL:  http://www.dotnetfordevices.com/forum.html#323


Thursday, May 8, 2008
Stop the presses

It looks like we are going to have lots of things going on in the upcoming weeks. We are not entirely sure of all details like registration links right now, but we will be presenting a whole bunch of webcastsover the upcoming weeks. It looks that we are having at least four more webcasts coming up to prepare you, as a Windows Mobile developer, ideally for TechEd. Of course, I would definitely like to invite everybody else, not just Windows Mobile developers, to attend our webcasts and our sessions at TechEd. Once you find out about our cool devices, either by Jim, Constanze, me or our other great speakers around Windows Mobile we have available for you at TechEd, I am sure you can't wait to develop your first application targetting these cool devices as well! And of course all of us will take booth duty time to talk one on one with you as well at TechEd! OK, time to focus. This is some very preliminary information, but it looks like our Webcast schedule to prepare ideally for TechEd to learn more about application development for Windows Mobile devices looks like this (and again, some details might still change and I inform you about registration links as soon as I have them):

Session 1 - May 16 presented by Constanze and Maarten at 11am PT - - Introduction to Windows Mobile Application Development

Session 2 - May 21, presented by Jim at 10am PT - May 16 - Developing your first real Windows Mobile 6 application

Session 3 -May 27, presented by Constanze and Maarten at 10am PT - Using Device Capabilities and Device Functionality

 

Session 4 - May 28, presentedy by Jim at 10am PT - Mobile Data Strageties: SQL Server Comact, XML, LINQ and Synchronization

 

This surely looks like an interesting series of webcasts. I hope may of you can join us live. Make sure to check our blogs! Constanze, Jim and myself will give you registration links on our blogs once we have them available.

 



   What is this?04:11 AM
Blog Ref URL:  http://www.dotnetfordevices.com/forum.html#324


New features for NETCF developers

My good friend Constanze just blogged about this very cool video that Paul Yao (yet another friend and MVP buddy) has created for WE-DIG, being the Windows Embedded Developers Interest Group. Before I even start talking about Paul's great video, make sure to add Constanze's blog to your RSS feeds, because she will inform you the minute she knows about things going on in the Windows Mobile and Windows Embedded space. The title on channel 9 and in Constanze's weblog might be a little misleading (sorry Constanze, sorry Paul, but you have so much more to offer, so let me be your PR guy for just a second), because Paul not only talks about new things available in the .NET CF 3.5. For me personally it is was even more interesting to learn about some features that are available in C# 3.0 that I was not aware off!I On a personal note: I feel so distinct from my friends at WE-DIG right now. I know they have a meeting tonight in Redmond, and here I am, living over 10 hours of flying in some small town called Alphen aan den Rijn in The Netherlands. Guys, I would have loved to eat some of the world's best pizza with you and joining you listening to Paul’s presentation and have some great discussions afterwards. Hopefully there is another oppurtunity to meet with all of you in the near future. The good news however is that all of us, being the rest of the world, can still enjoy and learn from Paul’s talk. Just go to Channel 9 and learn more about C# 3.0, LINQ and the .NET Compact Framework 3.5. I guess we have to do without pizza's though!



   What is this?00:38 AM
Blog Ref URL:  http://www.dotnetfordevices.com/forum.html#323


Thursday, May 1, 2008
Feeling like a genius

After wasting way too much time trying, feeling desperate, getting tons of grey hairs and interpreting a totally misleading error message, I finally got a VB.NET sample for my next How-Do-I video working. The fun started with getting access to command line parameters. My first stupid attempt was to simply pass the command line parameters to the constructor (or in VB.NET terminology, the New subroutine) without doing anything else. The error message I got from the compiler was at least interesting. It told me I had an error at line 0 in Form Designer auto generated code. Of course there is not even a line 0 in any file, because the source code editor starts counting with one. The message itself was pretty misleading as well, at least to me:

 Error 1'MainForm' is a type in 'MyApplication' and cannot be used as an expression

C:\HDI-CreateProcBasedSplashScr-VB\MyApplication\MainForm.Designer.vb         0              0

MyApplication

In C#, it is not that hard to process command line parameters. You simply modify the Main function in Program.cs. In VB.NET I did not even see a Program.vb file, so it took me a while to finally try and add an overloaded Main subroutine to my MainForm.vb class, just like this:

    Public Shared Sub main(ByVal args As String())

        Dim launchWindowName As String = String.Empty

        If (args.Count = 1) Then

            launchWindowName = args(0)

        End If

        Application.Run(New MainForm(launchWindowName))

    End Sub

That helped a lot! All my other challenges had to do with being unfamiliar with the syntax of VB.NET

At some point in my code I needed a switch statement, well, at least in C#. I had no clue how to do this in VB.NET. After a little research I found this wonderful website that saved my day. If you need to manually translate source code from C# to VB.NET, instead of using one of the great automatic translators, this VB.NET – C# comparison webpage might be your life saver as well.

All in all, it took me way too long to translate a little sample application from C# into VB.NET. At least now I know for sure! Even though I feel like a genius, I am simply not smart enough to start coding in VB.NET. I guess I will be stuck with C# forever.



   What is this?13:21 PM
Blog Ref URL:  http://www.dotnetfordevices.com/forum.html#322


Monday, April 21, 2008
Trying Windows CE is now easier than ever before

The fact that you are looking at this Weblog entry makes it likely that you have heard about Windows CE. However, maybe you have never had the chance to play with this Operating System. Even though the development tools are not that expensive, the investment might be a little too much for students or hobbyist developers. And what if you have the tools available? Windows Embedded CE ships with a great emulator, but it is so much nicer to actually run your new OS Design on real target hardware. From now on you can do so, thanks to the SPARK Initiative. SPARK Your Imagination offers a kit that combines Windows Embedded CE 6.0 R2, Visual Studio 2005 Professional, and an embedded device. Check it out and start developing those cool embedded systems powered by Windows Embedded CE.



   What is this?13:07 PM
Blog Ref URL:  http://www.dotnetfordevices.com/forum.html#321


Add this to your favorites

It seems that the Windows Mobile Developer Center home page on MSDN is slowly but surely showing us more information and relevant links to developer articles, videos, webcasts and blog entries. This is a good think, so make sure to add it to your favorites. After all, you can’t read enough about developing for Windows Mobile devices, right?



   What is this?11:09 AM
Blog Ref URL:  http://www.dotnetfordevices.com/forum.html#320


Monday, April 21, 2008
Trying Windows CE is now easier than ever before

The fact that you are looking at this Weblog entry makes it likely that you have heard about Windows CE. However, maybe you have never had the chance to play with this Operating System. Even though the development tools are not that expensive, the investment might be a little too much for students or hobbyist developers. And what if you have the tools available? Windows Embedded CE ships with a great emulator, but it is so much nicer to actually run your new OS Design on real target hardware. From now on you can do so, thanks to the SPARK Initiative. SPARK Your Imagination offers a kit that combines Windows Embedded CE 6.0 R2, Visual Studio 2005 Professional, and an embedded device. Check it out and start developing those cool embedded systems powered by Windows Embedded CE.



   What is this?13:07 PM
Blog Ref URL:  http://www.dotnetfordevices.com/forum.html#321


Add this to your favorites

It seems that the Windows Mobile Developer Center home page on MSDN is slowly but surely showing us more information and relevant links to developer articles, videos, webcasts and blog entries. This is a good think, so make sure to add it to your favorites. After all, you can’t read enough about developing for Windows Mobile devices, right?



   What is this?11:09 AM
Blog Ref URL:  http://www.dotnetfordevices.com/forum.html#320


Wednesday, April 9, 2008
Webcast sample code available for download

Thank you all for attending our MSDN Webcast on Creating Location-Aware Applications for Windows Mobile Devices. If you were not able to attend, you can still take a look at the on-demand version of this webcast. As promised, the sample code that I used during the webcast is available for download. Hopefully this inspires you to create your own location aware applications for Windows Mobile Devices.



   What is this?23:13 PM
Blog Ref URL:  http://www.dotnetfordevices.com/forum.html#319


I am ready to fly to Redmond

Even though I still have to present a webcast on location aware applications, I am already busy with flying to the US one more time. First off, getting some heat in Phoenix, AZ, but traveling onwards to rainy Seattle / Redmond on Sunday for the MVP Summit. To have at least have a next episode of my weekly column available by Sunday, I simply looked up some information about Windows CE at an online encyclopedia. You should definitely check my weekly column next week Sunday or Monday. I will not reveal anything else right now. However, I could not believe what I read. Hopefully this was an incident, but I will look for more articles I can judge, to simply verify the content of online encyclopedias. I might move back to those old fashioned written encyclopedias if I can't rely on the content of the online versions.



   What is this?01:03 AM
Blog Ref URL:  http://www.dotnetfordevices.com/forum.html#318


Wednesday, April 9, 2008
Webcast sample code available for download

Thank you all for attending our MSDN Webcast on Creating Location-Aware Applications for Windows Mobile Devices. If you were not able to attend, you can still take a look at the on-demand version of this webcast. As promised, the sample code that I used during the webcast is available for download. Hopefully this inspires you to create your own location aware applications for Windows Mobile Devices.



   What is this?23:13 PM
Blog Ref URL:  http://www.dotnetfordevices.com/forum.html#319


I am ready to fly to Redmond

Even though I still have to present a webcast on location aware applications, I am already busy with flying to the US one more time. First off, getting some heat in Phoenix, AZ, but traveling onwards to rainy Seattle / Redmond on Sunday for the MVP Summit. To have at least have a next episode of my weekly column available by Sunday, I simply looked up some information about Windows CE at an online encyclopedia. You should definitely check my weekly column next week Sunday or Monday. I will not reveal anything else right now. However, I could not believe what I read. Hopefully this was an incident, but I will look for more articles I can judge, to simply verify the content of online encyclopedias. I might move back to those old fashioned written encyclopedias if I can't rely on the content of the online versions.



   What is this?01:03 AM
Blog Ref URL:  http://www.dotnetfordevices.com/forum.html#318


Sunday, April 6, 2008
Windows Mobile 6.1 emulator images available for download

Here is your first chance to take a good look at Windows Mobile 6.1 functionality. Brand new emulator images are available for download, allowing you to run your applications on a Windows Mobile 6.1 Standard or Professional device, well, at least on the emulator. You can use the emulators from inside Visual Studio 2005 and Visual Studio 2008, but they can also run stand-alone. With the 6.1 emulator images available, there is no reason not to start developing applications targetting Windows Mobile 6.1 devices. 



   What is this?22:31 PM
Blog Ref URL:  http://www.dotnetfordevices.com/forum.html#317


Writing Windows Mobile Location Aware Applications

If you have a Windows Mobile device that has integrated GPS hardware, you can get much more out of your applications by making them location aware. If you want to know more about this, make sure to attend my MSDN Webcast this Wednesday at 11.00 AM PST. Here is the official description:

More and more Windows Mobile powered devices ship with integrated global positioning system (GPS) hardware. Since Windows Mobile devices are typically used on the road, it makes a lot of sense to add location awareness to your applications. In this MSDN webcast, Maarten Struys shows you how you can make use of the GPS Intermediate Driver to access GPS information from inside managed applications. Learn how to use the FakeGPS utility to test location-enabled applications without needing access to a physical GPS device. Of course, in this session, you also see a location-aware application on a device using real GPS data. 



   What is this?22:28 PM
Blog Ref URL:  http://www.dotnetfordevices.com/forum.html#316


Sunday, April 6, 2008
Windows Mobile 6.1 emulator images available for download

Here is your first chance to take a good look at Windows Mobile 6.1 functionality. Brand new emulator images are available for download, allowing you to run your applications on a Windows Mobile 6.1 Standard or Professional device, well, at least on the emulator. You can use the emulators from inside Visual Studio 2005 and Visual Studio 2008, but they can also run stand-alone. With the 6.1 emulator images available, there is no reason not to start developing applications targetting Windows Mobile 6.1 devices. 



   What is this?22:31 PM
Blog Ref URL:  http://www.dotnetfordevices.com/forum.html#317


Writing Windows Mobile Location Aware Applications

If you have a Windows Mobile device that has integrated GPS hardware, you can get much more out of your applications by making them location aware. If you want to know more about this, make sure to attend my MSDN Webcast this Wednesday at 11.00 AM PST. Here is the official description:

More and more Windows Mobile powered devices ship with integrated global positioning system (GPS) hardware. Since Windows Mobile devices are typically used on the road, it makes a lot of sense to add location awareness to your applications. In this MSDN webcast, Maarten Struys shows you how you can make use of the GPS Intermediate Driver to access GPS information from inside managed applications. Learn how to use the FakeGPS utility to test location-enabled applications without needing access to a physical GPS device. Of course, in this session, you also see a location-aware application on a device using real GPS data. 



   What is this?22:28 PM
Blog Ref URL:  http://www.dotnetfordevices.com/forum.html#316


Saturday, March 29, 2008
Just if you are interested

If you want to take a look at previous presentations and webcasts I have presented, you can simply take a look at my MVP profile. I know that some folks of my own company are interested in this. The only content I have not listed here, since this would be way too much, are the 'How-Do-I" videos I have created over the last few months.



   What is this?02:14 AM
Blog Ref URL:  http://www.dotnetfordevices.com/forum.html#315


My next webcast
Mark your calendars to meet me on April 9 at 11.00 AM PST for a brand new MSDN Webcast around  Creating Location Aware Applications for Windows Mobile Devices. During this level 300 Webcast we will discuss how to make use of the GPS Intermediate Driver to easily access GPS data from inside a .NET Compact Framework application. You will learn how you can use FakeGPS, an application that allows you to test location aware applications without even having a GPS receiver available. You will see FakeGPS in action inside an application that we will create during the webcast. Also, if the Demo Gods are with me, you will see that same application running on a real device with a built-in GPS receiver. If I get the entire demo working before April 9th, you might even find out how we can incorporate GPS data and the current position of a device using Virtual Earth. Adding location awareness adds lots of cool possibilities to your applications. During the Webcast I probably will talk you through some high level scenarios that fully utitilize location awareness. Since this is a level 300 session, you will not only see a bunch of slides, but a big part of this webcast will contain a live coding demonstration. Hurry and make sure you get your seat reserved by clicking this link. After all, I think we can only have 1000 folks attending the live Webcast. Allright, I got carried away here. If we only would have 1000 people joining us for a Windows Mobile Webcast. I will keep on dreaming for now, but one day this will happen, I am sure about that. Seriously though. If you want to attend this MSDN Webcast, just make sure to sign up. After all, Webcasts are completely free and you get the chance to ask your questions and even get answers during the live event. Hope to see you all on April 9th. 

   What is this?01:23 AM
Blog Ref URL:  http://www.dotnetfordevices.com/forum.html#314


Saturday, March 29, 2008
Just if you are interested

If you want to take a look at previous presentations and webcasts I have presented, you can simply take a look at my MVP profile. I know that some folks of my own company are interested in this. The only content I have not listed here, since this would be way too much, are the 'How-Do-I" videos I have created over the last few months.



   What is this?02:14 AM
Blog Ref URL:  http://www.dotnetfordevices.com/forum.html#315


My next webcast
Mark your calendars to meet me on April 9 at 11.00 AM PST for a brand new MSDN Webcast around  Creating Location Aware Applications for Windows Mobile Devices. During this level 300 Webcast we will discuss how to make use of the GPS Intermediate Driver to easily access GPS data from inside a .NET Compact Framework application. You will learn how you can use FakeGPS, an application that allows you to test location aware applications without even having a GPS receiver available. You will see FakeGPS in action inside an application that we will create during the webcast. Also, if the Demo Gods are with me, you will see that same application running on a real device with a built-in GPS receiver. If I get the entire demo working before April 9th, you might even find out how we can incorporate GPS data and the current position of a device using Virtual Earth. Adding location awareness adds lots of cool possibilities to your applications. During the Webcast I probably will talk you through some high level scenarios that fully utitilize location awareness. Since this is a level 300 session, you will not only see a bunch of slides, but a big part of this webcast will contain a live coding demonstration. Hurry and make sure you get your seat reserved by clicking this link. After all, I think we can only have 1000 folks attending the live Webcast. Allright, I got carried away here. If we only would have 1000 people joining us for a Windows Mobile Webcast. I will keep on dreaming for now, but one day this will happen, I am sure about that. Seriously though. If you want to attend this MSDN Webcast, just make sure to sign up. After all, Webcasts are completely free and you get the chance to ask your questions and even get answers during the live event. Hope to see you all on April 9th. 

   What is this?01:23 AM
Blog Ref URL:  http://www.dotnetfordevices.com/forum.html#314


Sunday, March 23, 2008
Why is the MSDN Interactive Webcast Calendar so hard to find?
MSDN has this great little MSDN Interactive Webcast Calendar, with which you can select the upcoming live Webcasts you want to attend. However, if you go to the MSDN Events and Webcast site, there is no link to the Interactive Webcast Calendar. The only way I found it, is to search for previously recorded Webcasts, since those contain a link to this cool little calendar. How hard can it be to add a link to the Interactive Webcast Calendar on the main MSDN Events and Webcast site? By the way, here is a link to the calendar.

   What is this?19:26 PM
Blog Ref URL:  http://www.dotnetfordevices.com/forum.html#313


The 2008 Spring Conference Season is about to start

The upcoming weeks promise to be very busy again. We are about to start the 2008 conference season, meaning lots of preparations for presentations and the possibility to earn lots of frequent flyer miles once again. My first stop will be Seatlle/Redmond between April 13 - April 18 for the MVP Summit. Next stop will be Amsterdam for the Microsoft Dutch DevDays on May 22, May 23 to deliver two presentations on Windows Mobile Application Development. Immediately afterwards, we have TechEd Orlando between June 3 - June 6 where I will present three different talks about Windows Mobile Application Developement. In between, on April 9 I will present an MSDN Webcast on Location Aware applications for Windows Mobile Devices. We are also still talking to AT&T to do more webcasts. Besides that, I also have an obligation to create a How-Do-I for Devices video every two weeks, with the upcoming 3 episodes all around creating splash screens. So it looks like the upcoming weeks are going to be very busy again. In between, I also have a Windows Embedded CE 6.0 training scheduled, a Windows Embedded Promotional event in Holland and last, but not least, judging the second round for the Windows Embedded track in the Imagine Cup. Besides that, I have to put in 40 hours / week for my company (PTS Software) as well. So if I am running a little late in answering emails, you just found out about my excuse. Honestly, there are so many more things I want to do. Why are there only 24 hours in one single day? With all technology available, we need to do something about that.



   What is this?18:57 PM
Blog Ref URL:  http://www.dotnetfordevices.com/forum.html#312


Sunday, March 23, 2008
Why is the MSDN Interactive Webcast Calendar so hard to find?
MSDN has this great little MSDN Interactive Webcast Calendar, with which you can select the upcoming live Webcasts you want to attend. However, if you go to the MSDN Events and Webcast site, there is no link to the Interactive Webcast Calendar. The only way I found it, is to search for previously recorded Webcasts, since those contain a link to this cool little calendar. How hard can it be to add a link to the Interactive Webcast Calendar on the main MSDN Events and Webcast site? By the way, here is a link to the calendar.

   What is this?19:26 PM
Blog Ref URL:  http://www.dotnetfordevices.com/forum.html#313


The 2008 Spring Conference Season is about to start

The upcoming weeks promise to be very busy again. We are about to start the 2008 conference season, meaning lots of preparations for presentations and the possibility to earn lots of frequent flyer miles once again. My first stop will be Seatlle/Redmond between April 13 - April 18 for the MVP Summit. Next stop will be Amsterdam for the Microsoft Dutch DevDays on May 22, May 23 to deliver two presentations on Windows Mobile Application Development. Immediately afterwards, we have TechEd Orlando between June 3 - June 6 where I will present three different talks about Windows Mobile Application Developement. In between, on April 9 I will present an MSDN Webcast on Location Aware applications for Windows Mobile Devices. We are also still talking to AT&T to do more webcasts. Besides that, I also have an obligation to create a How-Do-I for Devices video every two weeks, with the upcoming 3 episodes all around creating splash screens. So it looks like the upcoming weeks are going to be very busy again. In between, I also have a Windows Embedded CE 6.0 training scheduled, a Windows Embedded Promotional event in Holland and last, but not least, judging the second round for the Windows Embedded track in the Imagine Cup. Besides that, I have to put in 40 hours / week for my company (PTS Software) as well. So if I am running a little late in answering emails, you just found out about my excuse. Honestly, there are so many more things I want to do. Why are there only 24 hours in one single day? With all technology available, we need to do something about that.



   What is this?18:57 PM
Blog Ref URL:  http://www.dotnetfordevices.com/forum.html#312


Tuesday, March 18, 2008
Windows Mobile Line of Business Solution Accelerator 2008

If you are interested in developing Windows Mobile LOB applications, you should definitely check this out. Microsoft has created a Windows Mobile Line of Business Accelerator, a sample LOB application that is created with Visual Studio 2008.This very cool sample application comes with source code and gives you lots of inside information about the latest technologies that are availabe to create occasionally connected applications for smart devices. The sample application comes with full source code and is fully functional. Just to get you excited, here is a sample screen shot (it may look simple, but hey, this will run on any Windows Mobile device).

Here is also an impression of the code, including tons of inline documentation:

If you are serious about developing Windows Mobile LOB applications, make sure to download this sample and use it as your headstart.

Making a shameless plug, here are some of the features that this LOB Accelerator has in stock for you.

Delivering new innovations and development best practices to the Windows Mobile platform with Visual Studio 2008, the .NET Compact Framework 3.5, SQL Server Compact 3.5, a working Supply Chain application, over 5,000 lines of commented code plus over a hundred pages of helpful documentation.
Adapt your App :: Create a single binary that runs unchanged on Windows Mobile Standard or Pro, Portrait or Landscape, Rectangle or Square. No more wasting time building separate executables to accommodate different screen sizes or input methods.
Sync Services for ADO.NET :: Synchronize your data between SQL Server 2008 and SQL Server Compact 3.5 using the new Sync Framework. Keep all your occasionally-connected mobile workers on the same page.
Windows Communication Foundation (WCF) Store and Forward ::Reliably push messages to servers or other devices via Exchange Server 2007. Programmatically notify peer devices that they have new orders waiting for them and need to sync.
MapPoint :: Guide delivery drivers to their customers via either the shortest or quickest route. Integrated mapping means you’ll never get lost again.
LINQ :: Use the new Language Integrated Query to filter results from Generic Object Collections. Query both your objects and XML using a familiar, SQL-like syntax to boost developer productivity.
Custom Controls :: Capture signatures and dazzle your end-users with 3D and Alpha-blended controls that alter their behavior depending on the platform they’re running on.
Managed Stored Procedures and Triggers :: The pluggable data layer allows you to say goodbye to compiling Dynamic SQL inside your code and fires events to react to INSERT, UPDATE, and DELETE operations.
Notifications and Online Help :: Formerly only supported on Pro, say hello to Popup Notifications and Online Help on Standard. Popup Notifications, also known as “toast,” display an HTML message and then disappear after a pre-determined amount of time. Using Online Help on every screen reduces your applicationtraining costs.
Language Switching and Localization :: Change Language/Regional Settings inside your app and watch text and Online Help speak a different language. Don’t wait until your application is finished to realize that it needs to be world-ready.
Time to Market :: Stop reinventing the wheel and use this Accelerator as the foundation for your next Windows Mobile development effort. If you don’t want to use the whole thing, pick and choose the components that are the best fit for your project.

Thank's, Constanze, for passing this info to me.



   What is this?01:25 AM
Blog Ref URL:  http://www.dotnetfordevices.com/forum.html#311


Saturday, March 15, 2008
A new cool weblog to check out
Looking at the statistics of DotNETForDevices, I found out that folks reach me through blogs of Loke Uei Tan, Rob Tiffany, Mike Hall and many others. However, I don't see any link from this person. She has just started a great Windows Mobile blog, so make sure you check out Constanze's blog regularly as well.

   What is this?00:52 AM
Blog Ref URL:  http://www.dotnetfordevices.com/forum.html#309


Following up on the VS2008 Launch

Last week during the IT HerOlympics in Nieuwegein, Netherlands, we had a great audience during the Windows Mobile Sessions. It was quite interesting to see that many attendees did not consider themselves experienced application developers for Windows Mobile devices, so I guess we had lots of potential great developers in the audience. All in all, the whole IT HerOlympics event was well organized and a pleasure to attend. In my opinion it is great to have an official launch of a number of important new products, amongst with Visual Studio 2008, accompanied with a number of technical presentations on how to use those new products. Last week I promised to make the sample code for my two talks available, so here they are. The first sample is very simple, containing a calculator class that can be used to experiment with Unit Testing for Devices. The second example is a little more complicated, since it uses both SQL Server Compact 3.5, LINQ for Devices and some other new things. During both presentations I also introduced the audience to the .NET Compact Framework 3.5 Power Toys. This collection of diagnostic tools is really priceless for everybody that wants to create the most performant managed applications for Windows Mobile devices.

Download the Unit Tests for Devices Chalk Talk Sample code.

Download the Windows Mobile Application Development Sample code.

Get the .NET Compact Framework 3.5 Power Toys.

This was my first experience, speaking at a local Microsoft Netherlands event. Without any doubts I can say that I had a great time, being part of the IT HerOlympics, and I can't wait for the Microsoft Netherlands DevDays to start. Looking at the speaker list, we will meet again, that is, if you will join me again, I am already scheduled.

 



   What is this?00:01 AM
Blog Ref URL:  http://www.dotnetfordevices.com/forum.html#308


Saturday, March 15, 2008
A new cool weblog to check out
Looking at the statistics of DotNETForDevices, I found out that folks reach me through blogs of Loke Uei Tan, Rob Tiffany, Mike Hall and many others. However, I don't see any link from this person. She has just started a great Windows Mobile blog, so make sure you check out Constanze's blog regularly as well.

   What is this?00:52 AM
Blog Ref URL:  http://www.dotnetfordevices.com/forum.html#309


Following up on the VS2008 Launch

Last week during the IT HerOlympics in Nieuwegein, Netherlands, we had a great audience during the Windows Mobile Sessions. It was quite interesting to see that many attendees did not consider themselves experienced application developers for Windows Mobile devices, so I guess we had lots of potential great developers in the audience. All in all, the whole IT HerOlympics event was well organized and a pleasure to attend. In my opinion it is great to have an official launch of a number of important new products, amongst with Visual Studio 2008, accompanied with a number of technical presentations on how to use those new products. Last week I promised to make the sample code for my two talks available, so here they are. The first sample is very simple, containing a calculator class that can be used to experiment with Unit Testing for Devices. The second example is a little more complicated, since it uses both SQL Server Compact 3.5, LINQ for Devices and some other new things. During both presentations I also introduced the audience to the .NET Compact Framework 3.5 Power Toys. This collection of diagnostic tools is really priceless for everybody that wants to create the most performant managed applications for Windows Mobile devices.

Download the Unit Tests for Devices Chalk Talk Sample code.

Download the Windows Mobile Application Development Sample code.

Get the .NET Compact Framework 3.5 Power Toys.

This was my first experience, speaking at a local Microsoft Netherlands event. Without any doubts I can say that I had a great time, being part of the IT HerOlympics, and I can't wait for the Microsoft Netherlands DevDays to start. Looking at the speaker list, we will meet again, that is, if you will join me again, I am already scheduled.

 



   What is this?00:01 AM
Blog Ref URL:  http://www.dotnetfordevices.com/forum.html#308


Friday, March 14, 2008
New How-To Video published

It is sort of interesting that my friend Constanze had to blog about this first (and you should check out her blog to find tons of interesting things about Windows Mobile Devices and Windows Mobile Device application development). Anyway, we have just published a brand new video that explains the impact of finalizers on your Windows Mobile Managed applications. Make sure to watch this video and hopefully you get the message that Disposing of objects that have that functionality enabled makes sense. If you want to study the behavior of your own managed types, make also sure to download the .NET CF 3.5 Power Toys to get tools to help you analyze finalization issues.



   What is this?02:16 AM
Blog Ref URL:  http://www.dotnetfordevices.com/forum.html#307


Thursday, March 6, 2008
Updating UI Controls inside multiple threads

Are you developing managed smart device applications that make use of multiple threads? Have you ever noticed unexpected behavior in such applications when trying to update user interface controls on a thread that did not create the UI control? Have you maybe even experienced deadlock situations when you are trying to update UI controls using the Control.Invoke method? To solve this mystery, we have just published the following how-to video to properly update UI Controls in multithreaded applications. Even though you might think that this information is not relevant for you, you might think twice. Guess what happens if you create a timer object from the System.Threading namespace. Well, in fact, your timer method will run on a separate thread, meaning you will have to pay special attention on updating UI controls on your timer method. So make sure to don't miss this video.



   What is this?00:20 AM
Blog Ref URL:  http://www.dotnetfordevices.com/forum.html#306


Tuesday, March 4, 2008
It has been silent but I promise to change that

The last few months have been extremely busy with no time to blog or even write a weekly column about Windows Mobile Development, but hopefully this will change for the better starting now. Traditionally, January and February are typical months to think about abstracts for presentations, make plans for the upcoming year and get some 'real' work done as well. Well, planning for Tech*Ed USA is done, and for the first time ever I feel very excited to present a few sessions at some local Dutch Microsoft events as well. First off, this Thursday I will be part of the IT-HerOlympics in Nieuwegein - Netherlands to deliver two sessions about Windows Mobile Development using Visual Studio 2008. Also, we have a great line up at the Dutch Microsoft DevDays on May 22 and May 23, where I will speak about Windows Mobile development too. During this event, we have some great international speakers attending as well. I do believe this is the first time ever we will have sessions around Windows Embedded Operating Systems and around Windows Mobile, so this is a real breakthrough. I will give you more information as soon as it is available. Many, many things have happened over the last few months. Please check out Jim WIlson's and my How-To video series for devices. If you want to meet us together in person, your best option so far will be Tech-Ed Developer 2008 in Orlando. I will give three different, Windows Mobile related presentations at this biggest Microsoft Developer Conference, but I am also pretty sure that Jim is going to be there as well. We also presented a MSDN webcasts series around Visual Studio 2008 for Device Developers, with Jim's latest contribution around LINQ for Devices. Hopefully before Tech*Ed, although no official announcement yet, my good friend Constanze Kratel, myself and maybe some other folks will create a whitepaper / video / demo / webcast / Tech*Ed (?????) presentation around creating Windows Mobile Line-of-Business applications, specifically targetting Windows Mobile 6 devices and Visual Studio 2008. Hopefully we have more announcements pretty soon. Check out Constanze's blog or mine frequently for more news around this latest initiative to make you better and more productive Windows Mobile Developers. 



   What is this?00:54 AM
Blog Ref URL:  http://www.dotnetfordevices.com/forum.html#305


Thursday, January 24, 2008
My first video is now available on MSDN
This is kind of a cool moment. I have been working on a number of videos on how to use Visual Studio 2008, specifically targeted towards device developers. Jim Wilson already did a ton of videos, but from now on we alternate. One week a new video by Jim is published, the other week one of mine. It feels great to be on the MSDN Home Page (well, at least for something like a week). My first video is all around how to create and terminate multithreaded .NET CF 3.5 applications. Hurry to the MSDN Home Page to find it today. Once it is removed there, you will still be able to find it, together with all other ‘How Do I’ videos on our MSDN Windows Mobile area.

   What is this?09:44 AM
Blog Ref URL:  http://www.dotnetfordevices.com/forum.html#304


Thursday, November 29, 2007
Join me tomorrow for a Windows Mobile Webcast
It seems we made it to the Microsoft Mobile Developer Center landing page on MSDN. Since this happens to be the case, let me quickly invite you to join us for a Webcast around Location Awareness and communication capabilities of Windows Mobile Devices. This webcast will be hosted by AT&T and it is all around Windows Mobile Application Development. We will talk about how to get the most out of GPS and location aware applications. I will talk about testing those applications using FakeGPS to test your GPS enabled application, I will also show you a real-world location aware application and I will talk about the State & Notification Broker and intercepting Text Messages using the Windows Mobile 6 Managed API's. There is a lot of stuff we will cover during this webcast. Simply make sure to reserve your seat and join us on November 29 at 11.00 AM PST. Oh, you can sign up here.

   What is this?00:11 AM
Blog Ref URL:  http://www.dotnetfordevices.com/forum.html#303


Wednesday, November 28, 2007
How Do I video series

It has been quiet for a while on DotNETForDevices. As always there was this perfect excuse of being way too busy. Last week for instance I was in Poland to teach a Windows Mobile training to a bright group of very cool developers. However, all traveling is done for at least a whole whopping three weeks right now. So hopefully I have some time to update this website. Something I wanted to do for a long time is recording a number of videos, targeting Windows Mobile application developers. Thanks to Jim Wilson and the excellent production staff at DTS I just got the chance to participate in the ‘How-do-I’ video series for device developers. Jim  has created lots of these videos in the last couple of months. Right now I am joining him for the upcoming videos. One week you will see a video created by Jim, the other week one by me, covering different topics, but they all have to do with developing applications in managed code for Windows Mobile devices. Since Visual Studio 2008 is released, I will use this brand new development environment to show you a couple of things around developing smart device applications. The cool thing about these videos is that they are limited to one single topic and that we show you how to create a number of applications or use cool features of the .NET Compact Framework from scratch, with easy ways for you to reproduce our code or make use of the downloadable source code in each and every video. However, since we will only cover managed applications with this video series, and since I am totally inspired by the Windows Mobile training I taught last week around native development, I thought it would be cool to create a number of videos around native application development for Windows Mobile devices as well. Just give me one or two weeks and the first video will appear on DotNETForDevices. Last thing I need to say about this topic. Thank you very much, my good friends at TechSmith for allowing me to use your great products to produce these videos. Hopefully you will visit them as well whenever you need to produce videos for either developer education or maybe to just create wonderful help content for the end users of your applications.



   What is this?23:48 PM
Blog Ref URL:  http://www.dotnetfordevices.com/forum.html#302


Monday, November 12, 2007
Are you ready for another MSDN Webcast

If you want to hear me speak immediately after traveling for over 15 hours from Phoenix via Los Angeles and Paris to Amsterdam, you have to join us on Thursday November 15 for part two of our Visual Studio 2008 webcast series for Windows Mobile Device Developers. If I can keep my eyes open, we will talk about Device Emulator 3.0 in this particular webcast. You will find out about using Device Emulator to test your applications for multiple form factors. You will also learn how to control Device Emulator Peripherals, how to programmatically control Device Emulator Manager and how to configure Emulator Instances. Just follow the links to sign up for individual Webcasts.

·         15-November-2007: What's New for Device Developers in Device Emulator 3.0

·         12-December-2007: Windows Communications Framework and mobile devices

·         09-January-2008: Unit Testing for Devices

·         13-February-2008: Language Integrated Query ( LINQ ) for Devices

Hopefully you will be able to join us during each of these Webcasts. To make the story complete, Jim Wilson is presenting the December and February Webcast, I’ll take care of the November and the January Webcasts.



   What is this?08:24 AM
Blog Ref URL:  http://www.dotnetfordevices.com/forum.html#301


Mobile Connections - Decks and Sample Code

Thanks to everyone who attended either of my sessions at Mobile Connections. There have been a few changes in some slides and some of the samples. If you are interested in the latest versions of the decks and the sample code, you can download them here.

1.       WMM306 - Programming with State & Notification Broker in Windows Mobile 6

·         Download Slide Deck

·         Download Sample Code

2.       WMW311 – Testing, Debugging and Diagnosing Mobile Applications with Visual Studio 2008

·         Download Slide Deck

·         Download Sample Code

3.       WMW409 – Incorporating COM Objects into your .NET Compact Framework Application

·         Download Slide Deck

·         Download Sample Code

4.       WMW410 - .NET Compact Framework Asynchronous Programming Techniques

·         Download Slide Deck

·         Download Sample Code

If you have questions around these presentations, you will find an email address in each of the slide decks that you can use to ask questions. I’ll try to answer your questions as soon as possible. Once again, thanks to everyone who was in Las Vegas for Mobile Connections and selected one or more of my sessions to attend. I hope you had a great conference and I am looking forward to seeing you back at next year’s Mobile Connections Fall.


   What is this?07:55 AM
Blog Ref URL:  http://www.dotnetfordevices.com/forum.html#300


Monday, November 12, 2007
Are you ready for another MSDN Webcast

If you want to hear me speak immediately after traveling for over 15 hours from Phoenix via Los Angeles and Paris to Amsterdam, you have to join us on Thursday November 15 for part two of our Visual Studio 2008 webcast series for Windows Mobile Device Developers. If I can keep my eyes open, we will talk about Device Emulator 3.0 in this particular webcast. You will find out about using Device Emulator to test your applications for multiple form factors. You will also learn how to control Device Emulator Peripherals, how to programmatically control Device Emulator Manager and how to configure Emulator Instances. Just follow the links to sign up for individual Webcasts.

·         15-November-2007: What's New for Device Developers in Device Emulator 3.0

·         12-December-2007: Windows Communications Framework and mobile devices

·         09-January-2008: Unit Testing for Devices

·         13-February-2008: Language Integrated Query ( LINQ ) for Devices

Hopefully you will be able to join us during each of these Webcasts. To make the story complete, Jim Wilson is presenting the December and February Webcast, I’ll take care of the November and the January Webcasts.



   What is this?08:24 AM
Blog Ref URL:  http://www.dotnetfordevices.com/forum.html#301


Mobile Connections - Decks and Sample Code

Thanks to everyone who attended either of my sessions at Mobile Connections. There have been a few changes in some slides and some of the samples. If you are interested in the latest versions of the decks and the sample code, you can download them here.

1.       WMM306 - Programming with State & Notification Broker in Windows Mobile 6

·         Download Slide Deck

·         Download Sample Code

2.       WMW311 – Testing, Debugging and Diagnosing Mobile Applications with Visual Studio 2008

·         Download Slide Deck

·         Download Sample Code

3.       WMW409 – Incorporating COM Objects into your .NET Compact Framework Application

·         Download Slide Deck

·         Download Sample Code

4.       WMW410 - .NET Compact Framework Asynchronous Programming Techniques

·         Download Slide Deck

·         Download Sample Code

If you have questions around these presentations, you will find an email address in each of the slide decks that you can use to ask questions. I’ll try to answer your questions as soon as possible. Once again, thanks to everyone who was in Las Vegas for Mobile Connections and selected one or more of my sessions to attend. I hope you had a great conference and I am looking forward to seeing you back at next year’s Mobile Connections Fall.


   What is this?07:55 AM
Blog Ref URL:  http://www.dotnetfordevices.com/forum.html#300


Saturday, October 13, 2007
Windows Embedded CE 6.0 R2 Launch Event

Did you ever want to participate in a launch event of a great new Operating System? Here is your chance! On November 15 you can join Kevin Dallas when he is going to unveil the latest version of the Windows Embedded CE 6.0 Operating System, called Windows Embedded CE 6.0 R2. If you don't want to travel to Yokohama, Japan to meet Kevin live, you can still attend the launch event by registering online, since we are making this launch event available as a webcast. I, for one person, will attend the virtual launch event. Not only because Amsterdam is far away from Yokohama, but also because I will present yet another webcast on that same date around Device Emulator 3.0. If you are in the Pacific Time Zone, you probably want to block the entire morning of November 15 in your schedule. First to meet Kevin at 9 PST, immediately followed by my webcast at 11 PST. Here are the links to sign up for both events:

 

Windows Embedded CE 6.0 Launch Event

MSDN Webcast covering Device Emulator 3.0



   What is this?01:18 AM
Blog Ref URL:  http://www.dotnetfordevices.com/forum.html#299


The next Visual Studio 2008 for Device Developers Webcast

In part two of our five part series around Visual Studio 2008 for Device Developers you have to stick with me. Even though both Jim and I really enjoyed presenting together, we will from now on cover one particular topic around Visual Studio 2008 for Device Developers individually. You can attend the next episode of this series live on November 15, 2007 at 11.00 PST. Please not that this Mobility Webcast will be aired on Thursday instead of Wednesday. I don't even want to talk about it, but I will be flying home from the Mobile Connections Conference on November 14. Since there is not yet any possibility to present a live MSDN Webcast in the air at an altitude of 33.000 feet, we had to delay this particular webcast for one day. However, this is an unique opportunity for everybody to listen to me at a time that I will be very tired. I am flying from Phoenix via Los Angeles and Paris back to Amsterdam. The journey starts on November 14 at around noon PST and ends on November 15, again around noon CET. Since I usually don't sleep on airplanes and this is a long flight, I'll probably be awake for some 36 hours when we begin the Webcast. A perfect chance to see me trying to get Device Emulator 3.0 working, although I promise I will run on a faster machine, compared to the one I used during yesterday's webcast.

Here is the abstract for the November 15 webcast:

With the new version of the Microsoft Visual Studio development system, device developers can make use of the many new features to develop applications for Windows Mobile powered devices. In this webcast, learn about the new enhancements to Device Emulator 3.0. See how the Device Emulator allows you to target multiple devices with different form factors during testing of your application. We also show you how to configure the Device Emulator using the Device Emulator Manager to meet your specific device requirements. Finally you will find out how to customize your own emulators and how you can programmatically control emulators. Please join us to learn everything you want to know about Device Emulator 3.0.

Make sure to sign up in advance and reserve your seat here!

The other webcasts in this series around Visual Studio 2008 will cover the following topics:

  • Windows Communications Framework and mobile devices on December 12, 2007 at 11.00 PST
  • Unit Testing for Devices on January 9, 2008 at 11.00 PST
  • LINQ for Mobile Devices on February 13, 2008 at 11.00 PST.

Jim will be your presenter on WCF and LINQ, I will talk you through DE 3.0 and Unit Testing. I really hope that we get a great number of attendees for each of these webcasts, just like we had during our Introduction of Visual Studio 2008 for Device Developers on October 10.



   What is this?00:39 AM
Blog Ref URL:  http://www.dotnetfordevices.com/forum.html#298


Saturday, October 13, 2007
Windows Embedded CE 6.0 R2 Launch Event

Did you ever want to participate in a launch event of a great new Operating System? Here is your chance! On November 15 you can join Kevin Dallas when he is going to unveil the latest version of the Windows Embedded CE 6.0 Operating System, called Windows Embedded CE 6.0 R2. If you don't want to travel to Yokohama, Japan to meet Kevin live, you can still attend the launch event by registering online, since we are making this launch event available as a webcast. I, for one person, will attend the virtual launch event. Not only because Amsterdam is far away from Yokohama, but also because I will present yet another webcast on that same date around Device Emulator 3.0. If you are in the Pacific Time Zone, you probably want to block the entire morning of November 15 in your schedule. First to meet Kevin at 9 PST, immediately followed by my webcast at 11 PST. Here are the links to sign up for both events:

 

Windows Embedded CE 6.0 Launch Event

MSDN Webcast covering Device Emulator 3.0



   What is this?01:18 AM
Blog Ref URL:  http://www.dotnetfordevices.com/forum.html#299


The next Visual Studio 2008 for Device Developers Webcast

In part two of our five part series around Visual Studio 2008 for Device Developers you have to stick with me. Even though both Jim and I really enjoyed presenting together, we will from now on cover one particular topic around Visual Studio 2008 for Device Developers individually. You can attend the next episode of this series live on November 15, 2007 at 11.00 PST. Please not that this Mobility Webcast will be aired on Thursday instead of Wednesday. I don't even want to talk about it, but I will be flying home from the Mobile Connections Conference on November 14. Since there is not yet any possibility to present a live MSDN Webcast in the air at an altitude of 33.000 feet, we had to delay this particular webcast for one day. However, this is an unique opportunity for everybody to listen to me at a time that I will be very tired. I am flying from Phoenix via Los Angeles and Paris back to Amsterdam. The journey starts on November 14 at around noon PST and ends on November 15, again around noon CET. Since I usually don't sleep on airplanes and this is a long flight, I'll probably be awake for some 36 hours when we begin the Webcast. A perfect chance to see me trying to get Device Emulator 3.0 working, although I promise I will run on a faster machine, compared to the one I used during yesterday's webcast.

Here is the abstract for the November 15 webcast:

With the new version of the Microsoft Visual Studio development system, device developers can make use of the many new features to develop applications for Windows Mobile powered devices. In this webcast, learn about the new enhancements to Device Emulator 3.0. See how the Device Emulator allows you to target multiple devices with different form factors during testing of your application. We also show you how to configure the Device Emulator using the Device Emulator Manager to meet your specific device requirements. Finally you will find out how to customize your own emulators and how you can programmatically control emulators. Please join us to learn everything you want to know about Device Emulator 3.0.

Make sure to sign up in advance and reserve your seat here!

The other webcasts in this series around Visual Studio 2008 will cover the following topics:

  • Windows Communications Framework and mobile devices on December 12, 2007 at 11.00 PST
  • Unit Testing for Devices on January 9, 2008 at 11.00 PST
  • LINQ for Mobile Devices on February 13, 2008 at 11.00 PST.

Jim will be your presenter on WCF and LINQ, I will talk you through DE 3.0 and Unit Testing. I really hope that we get a great number of attendees for each of these webcasts, just like we had during our Introduction of Visual Studio 2008 for Device Developers on October 10.



   What is this?00:39 AM
Blog Ref URL:  http://www.dotnetfordevices.com/forum.html#298


Wednesday, October 10, 2007
What is new for device developers in Visual Studio 2008

Thanks to everybody who attended our webcast today. Hopefully you are as excited as we are with the new features that device developers will get with Visual Studio 2008. If you did not have the opportunity to join us live, you will be able to still watch it on-demand or download the entire webcast. You can download the demo code for Unit Testing and CLR Profiling here. If you want the LINQ sample code, you can download it from Jim's blog.

In order to run the demo code, you need to have Visual Studio 2008 installed on your machine. You can either download a VPC image containing Visual Studio 2008 beta 2, or download Visual Studio 2008 beta 2 to install it on your own machine.

If you want to take a look at the CLR Profiler, you also need to download and install the .NET CF 3.5 Power Tools.

Finally, if you want to target Windows Mobile 6 devices you need to download and install the Windows Mobile 6 Professional SDK and / or the Windows Mobile 6 Standard SDK.

Remember that this was just the first of a five part webcast series around Visual Studio 2008. Each of the upcoming months we will cover a particular topic and talk about it in detail. Here is the schedule:

  • What's new for device developers in Device Emulator 3.0 on November 15, 2007 at 11.00 PST
  • Windows Communications Framework and mobile devices on December 12, 2007 at 11.00 PST
  • Unit Testing for Devices on January 9, 2008 at 11.00 PST
  • LINQ for Mobile Devices on February 13, 2008 at 11.00 PST.

Jim will be your presenter on WCF and LINQ, I will talk you through DE 3.0 and Unit Testing. Please share this information with all your friends, co-workers and everybody else you think needs to know about device development. Hopefully we will meet you again during these upcoming webcasts.



   What is this?23:23 PM
Blog Ref URL:  http://www.dotnetfordevices.com/forum.html#297


Wednesday, September 12, 2007
A new series around Visual Studio 2008 for Mobile Developers

If you want to learn more about Visual Studio 2008 and if you want to find out how Jim Wilson and I will be co presenting a MSDN Webcast, even though we are physically around 4500 miles apart from each other, you should definitely join us for the first part of a five part Webcast series around developing Windows Mobile applications using Visual Studio 2008. The first part of this series is a high level introduction of Visual Studio 2008. After this introduction you can join us separately to learn more about the following topics:

  • LINQ (too hard of a topic for me, so Jim will present this one)
  • Device Emulator 3.0 (ah well, I already did a couple of sessions at conferences around DE 3.0, so this is on I will present)
  • WCF for Windows Mobile Devices (something I would love to know more about, but Jim definitely knows more about WCF than I, so guess who will be presenting this episode)
  • Unit Testing for Devices (ok, I will talk about this very cool topic at several conferences around the world and hey, I believe in Unit Tests, so you have to deal with me during this episode).

The order in which we will present the 4 remaining episodes will be published soon on MSDN. Right now the most important thing for you to remember is to meet either Jim or I between October 2007 and February 2008, one Webcast / month, to get you started using Visual Studio 2008 to get allow you to build the best ever applications for Windows Mobile devices. Hopefully lots of you will register to join us for our first Webcast around Visual Studio 2008 on October 10! At the same time, I really hope that we get your attention to join us during the remaining 4 parts of this Webcast series as well. Please share this information with anyone you might think would be interested in developing software for Windows Mobile Devices using Visual Studio 2008. Let's try to fill the LiveMeeting Room with at least 500 attendees, OK?



   What is this?02:11 AM
Blog Ref URL:  http://www.dotnetfordevices.com/forum.html#296


Thursday, July 12, 2007
Sample code for the Webcast on Diagnostic Tools for the NETCF

First I want to thank everybody who joined me during the live MSDN Webcast around Improving Application Performance using Diagnostic Tools in the .NET Compact Framework. Also I want to welcome everybody who listened to the on-demand recording of this Webcast. Even though we only had one hour to discuss the tools, I hope you appreciate the tools we introduced and that you will start using both Remote Performance Monitor and the CLR Profiler. At days like this, when I am struggling to finish the Webcast more or less in time I really wish there would be a chance for us to discuss some topics much more in depth. I am pretty sure I could have talked at least 4 hours just about performance topics for managed applications and about the tools we provide to help you find your performance bottlenecks. So here is my promise to everybody. I will try to find out if we can run a series around this topic or perhaps schedule a Webcast later this year that runs for more than one hour. Some folks asked me already to provide some sample code. I guess it doesn't make sense for you to have all sample code that I showed in this Webcast, but you can find the little sample application that I used to show you how to measure performance on a particular device here.

This sample application simply measures how long it takes to call a method on an object and how long it takes to call a virtual method. Also it shows you the difference between accessing instance variables on a type directly versus using properties or even virtual properties. Running the sample application you will get a feeling how expensive P/Invoking will be on your particular target device and you will find out about the difference between using String or StringBuilder. If you take a look at this application's source code, you will see that this application is easy to modify or extend to measure performance in some specific areas you might be interested in.

Even though we have some great tools to study memory allocation in managed applications, like CLR Profiler (which comes with Visual Studio 2008) and Remote Performance Monitor, I can imagine that you want to know more about typical performance issues you might have with your application. That is where the little sample application you can download might be of assistance to you.

A bit off topic and yet still talking about Webcasts. When writing this down I even realize that we have not even submitted abstracts for this upcoming series, but I am pretty sure we will get these Webcasts to you. My good friend Jim Wilson and I will help you getting the most out of the new features that Visual Studio 2008 brings to you as a device developer. The dates have not been set yet, we still have to write abstracts for each and every Webcast, but, as an early announcement, here are the things we like to discuss with you. During the September 07 - January 08 time frame we are planning these Webcasts around Visual Studio 2008:

September 07 - A high level introduction of Visual Studio 2008 for device developers. This is going to be a unique chance to hear Jim and I co-hosting a Webcast.

October 07 - What's new in Device Emulator 3.0, you have to stick with me for this one.

November 07 - Windows Communication Foundation on Windows Mobile Devices. Since this is a much harder topic to cover, Jim volunteered to present this one.

December 07 - Unit Testing on Windows Mobile Devices. This is something available out of the box, so simple enough for me to present

January 08 - LINQ or Language INtegrated Queries if you wish. Again, a tough topic so we leave that with Jim.

Of course, this is still very early information about upcoming Webcasts. The topics might change and the actual dates might change. Just check out the MSDN Interactive Webcast Calendar to learn more about the exact dates and times of this Webcast Series. However, I wanted to make sure that you know about things coming up during the second half of this year. If there are topics around Visual Studio 2008 that you are missing or that you want to hear more about, please don't hesitate to send me an email. After all, we are still in the planning phase of these Webcasts and we want to make sure that everybody gets the most out of these Webcasts. Hey, if you have cool idea's we might even extend the series further so please, overflow my Inbox with suggestions.



   What is this?00:56 AM
Blog Ref URL:  http://www.dotnetfordevices.com/forum.html#295


Sunday, July 1, 2007
MSDN Webcast around Improving Application Performance Using Diagnostic Tools in dotNETCF
On Wednesday July 11th we are discussing Improving Application Performance using Diagnostig Tools in the dotNetCF in one of our Windows Mobile related MSDN Webcasts. Even though a number of tools, like the Remote Performance Monitor, are already available for the Compact Framework 2.0, we will focus entirely on Visual Studio 2008 during this Webcast. I will show you how to setup your device and use Remote Performance Monitor, but also how to make use of the brand new CLR Profiler that finally is available as well for device developers in Visual Studio 2008. This Webcast will be sort of a challenge, since I will be running all the demos using Visual Studio 2008 inside a Virtual PC. Hopefully I can find a machine with enough processing power to achieve this. If you want to know if this works out, or better still, if you want to learn more about our Diagnostic Tools, make sure to mark July 11th in your calendar. We will have a one hour appointment, starting at 11.00 AM PST.

   What is this?23:49 PM
Blog Ref URL:  http://www.dotnetfordevices.com/forum.html#294


Thursday, June 28, 2007
MEDC and Starbucks

This seems like a weird title but from my point of view it is not. Yesterday we finished the MEDC tour around the world. Even though I was only part of MEDC Las Vegas and MEDC Europe it was absolutely fantastic to be part of these events. Personal highlights for me were the amount of attendees joining my asynchronous talk at MEDC Las Vegas, over 150 attendees. Another highlight was the packed room at MEDC Europe when we were discussing how to build Windows Mobile® Applications that Seamlessly Run on Any Device. Speaking in a packed room is of course every presenter's dream. It was also very, very cool to be able to meet people in person who only knew me from MSDN Webcasts so far. On the downside, it seems that ILL203, the instructor led lab titled "Introduction to Building Line-Of-Business (LOB) Applications on Windows Mobile®" was doomed. At MEDC Las Vegas, Jim Wilson, who created this ILL, could only start the lab after a significant delay because the instructor PC was not working properly. In order to overcome this problem I at least made sure a dozen times that the presenter machine was working in Berlin. Well, it did work, but 10 minutes before starting the session I found out that we did not have lab manuals for the attendees. Thank goodness I brought my own lab manual, otherwise we probably had no alternative than cancelling the session. As it turned out, we worked through a big part of the lab, although I had to slow down quite a bit, not only explaining folks what we were doing, but also typing really, really slowly to give everybody a chance to keep up with the lab. Besides that, my 5 talks at MEDC Europe went fine, except for one other little incident. While talking about Windows Live Services on Windows Mobile Devices, I lost my Internet connection in the last quarter of the presentation. Normally that would not hurt me at all, but this time, talking about Live Services, being connected was essential. Unfortunately, everybody who joined me during this talk, missed the demonstration of "Live Search for mobile". If you are still interested in this great smart client application, simply browse to this url on your mobile device: http://wls.live.com, install the software and simply be blown away. The rest of my talks didn't rely on either print-outs of manuals or Internet connectivity, so all demos, even the Orcas demos, simply worked.

OK, you might now wonder what this has to do with Starbucks. Well, the fact that I was so awake and being able to talk, even during early morning sessions at MEDC Europe, was because there were enough Starbucks in Berlin to get me the tripple espresso I need to get started. I also noticed that many folks asked about the first Starbucks in Holland open to the general public. I knew it was somewhere at Schiphol Airport but while traveling to Berlin I finaly found it. If you are at Schiphol Airport and if you are in the A .. D gate area, you will find it. This area is mainly used for European flights. I will use these pictures as proof. Just look between the D and the C gate and you find the first Dutch Starbucks open for everybody.

Since I am usually taking Inter Continental flights there is only one wish for me, and I am sure for many other folks. There should be a second Starbucks at Schiphol Airport for folks departing from the E .. G gates. I have not spotted one there, but in August I will fly back to the US, hopefully I will find one then in that area as well.



   What is this?01:49 AM
Blog Ref URL:  http://www.dotnetfordevices.com/forum.html#293


Saturday, June 23, 2007
My MEDC Europe demos are done

MEDC Europe is almost here. I guess we are all ready to fly to Berlin and give each and every attendee the most out of this conference. It is a little after midnight here right now on Saturday June 23th and finally all my demos are done. The only thing I am hoping for right now is that the demo gods are with me and that I can show all folks attending my sessions some cool demos, some of which we didn't even show at MEDC USA. Especially around Windows Live Services on Mobile Devices and around Device Emulator 3.0 there is some cool stuff to watch. Well, actually, that is true for my talk on Building Windows Mobile© Applications that Seamlessly Run on Any Device as well.

In the device emulator session I will focus on using different emulators to test your applications on lots of devices, but also on new Visual Studio 2008 features for Device Emulator 3.0. You will learn how to configure and start emulators, and the Cellular Emulator will be completely demystified for you.

In the running on any device talk we will show you how to create applications that can run on any device as the title suggests, but also how you can get the most out of specific features for particular devices, yet creating maintainable code.

And the Windows Live Services talk will have lots of demo's, explaining you how to deal with RSS feeds, how to use URL encoding and how to create a mashup, first showing the original demo Jim Wilson and I ended with during our Windows Live on Windows Mobile Devices webcast series, but also showing you how the Windows Live Team created a Live Search version for Windows Mobile (and, if you attend my presentation you have to admit that they used some of our initial webcast idea's).

Anyway, the demo's are done, the talks are prepared, so there is no excuse anymore. Hopefully I will meet many folks at MEDC Europe. The conference will be a blast and you have tons of opportunities to talk one on one, not only with me, but also with the great rockstar speakers that will be presenting during MEDC Europe.

Oh, for those who are attending, but really for everybody, I'll publish the sample code on my blog right after the conference.



   What is this?00:58 AM
Blog Ref URL:  http://www.dotnetfordevices.com/forum.html#292


Tuesday, June 19, 2007
Targeting Multiple BSPs

With Windows Embedded CE 6.0 it is possible to create an OS Design that targets multiple Board Support Packages. You might wonder when this comes handy. Take for instance this scenario. I am developing an OS Design for the eBox 2300. During my initial tests I am only interested to verify that I have all the functionality I need in my OS Design. In those cases it is very handy to target a second BSP, in this case the emulator. When building the OS Design you simply specify for which target you are building, initially in my case that will be the emulator. To test the OS Design I simply boot it into the emulator, not having to worry about connecting to the target, but simply using DMA transport to download the image to the emulator. Once I am happy with my OS Design I start building it for the actual hardware. As an added advantage, you can start creating your OS Design prior to having hardware available. Simply target the emulator initially and add the BSP for your target hardware to your OS design once your hardware and BSP are available.



   What is this?23:43 PM
Blog Ref URL:  http://www.dotnetfordevices.com/forum.html#291


One last entry about Tech Ed

Let me begin with thanking everybody who attended my session around diagnostic tools in the Compact Framework. If you were not able to attend there is a second chance. Make sure to sign up for our upcoming MSDN Webcast around the same topic. The other thing I want to mention here is that Tech Ed is not only a great conference to learn about existing and cool new Microsoft technologies. Tech Ed is also the place to make new friends. This was definitely true for me this year. As an example, I had a great meeting with Mick Lohan. Mick is from Ireland and I am sure I will be in touch with him again in the future. Gosh, I even went the extra mile and wrote a Windows Mobile application especially for Mick. If you want to have proof about this cool application, just check out Mick's blog.



   What is this?01:13 AM
Blog Ref URL:  http://www.dotnetfordevices.com/forum.html#290


Tuesday, June 19, 2007
Targeting Multiple BSPs

With Windows Embedded CE 6.0 it is possible to create an OS Design that targets multiple Board Support Packages. You might wonder when this comes handy. Take for instance this scenario. I am developing an OS Design for the eBox 2300. During my initial tests I am only interested to verify that I have all the functionality I need in my OS Design. In those cases it is very handy to target a second BSP, in this case the emulator. When building the OS Design you simply specify for which target you are building, initially in my case that will be the emulator. To test the OS Design I simply boot it into the emulator, not having to worry about connecting to the target, but simply using DMA transport to download the image to the emulator. Once I am happy with my OS Design I start building it for the actual hardware. As an added advantage, you can start creating your OS Design prior to having hardware available. Simply target the emulator initially and add the BSP for your target hardware to your OS design once your hardware and BSP are available.



   What is this?23:43 PM
Blog Ref URL:  http://www.dotnetfordevices.com/forum.html#291


One last entry about Tech Ed

Let me begin with thanking everybody who attended my session around diagnostic tools in the Compact Framework. If you were not able to attend there is a second chance. Make sure to sign up for our upcoming MSDN Webcast around the same topic. The other thing I want to mention here is that Tech Ed is not only a great conference to learn about existing and cool new Microsoft technologies. Tech Ed is also the place to make new friends. This was definitely true for me this year. As an example, I had a great meeting with Mick Lohan. Mick is from Ireland and I am sure I will be in touch with him again in the future. Gosh, I even went the extra mile and wrote a Windows Mobile application especially for Mick. If you want to have proof about this cool application, just check out Mick's blog.



   What is this?01:13 AM
Blog Ref URL:  http://www.dotnetfordevices.com/forum.html#290


Monday, June 18, 2007
Improving Application Performance using the NETCF Diagnostic Tools
In a few weeks time you have the chance to learn more about the diagnostic tools that are available to improve the performance of your managed smart device applications. Not only will we discuss the diagnostic tools that are available today when you are developing .NET Compact Framework 2.0 applications, but we will also take a look at the diagnostic tools that ship with Visual Studio 2008. If you want to learn more about Remote Performance Monitor, all kinds of logging tools or the brand new CLR Profiler for the .NET Compact Framework 3.5, make sure to join me on July 11 at 11.00 AM PST for one hour at this MSDN Webcast. Spaces are limited, so you better sign up fast.

   What is this?07:57 AM
Blog Ref URL:  http://www.dotnetfordevices.com/forum.html#289


Wednesday, June 6, 2007
New article on MSDN

I wonder how I could have missed this. I have been waiting a while for this article to be publihsed. All of a sudden it is available on MSDN. If you want to know everything there is to know to write .NET Compact Framework 2.0 applications that are compatible with .NET Compact Framework 1.0 applications you should check out this article. It might give you some great ideas about maintaining one single code base while targetting two different versions of the .NET Compact Framework



   What is this?18:51 PM
Blog Ref URL:  http://www.dotnetfordevices.com/forum.html#288


Wednesday, May 9, 2007
The ofone is here
Since this video made it to youtube, I guess it is safe to share it with the world right now. Watch it and you simply go "ooooooooooo". I can't wait to have the physical device in my hands.

   What is this?22:35 PM
Blog Ref URL:  http://www.dotnetfordevices.com/forum.html#287


Thursday, May 3, 2007
Day TWO at MEDC

There is not too much to tell for me about the second day at MEDC. My talk about asynchronous programming techniques was scheduled at 3.45 PM, so I basically spent all day rehearsing until that time. The presentation went fine. My biggest concern was running out of time, but I managed to cover all content in exactly 75 minutes, well perhaps I rushed over the last topic a little bit. Looking at the feedback, but also at the reactions of the attendees during the talk, I have the feeling that most of the people in the room were pleased with that talk. I am thinking about rerunning it as a webcast. One of the interesting feedback items was that some attendees want a more advanced multithreading talk. I guess this will not happen this year, but I have heard your comments and hey, next year there is another MEDC. Perhaps at that time we should schedule a level 400 session about multithreading and also incorporate the .NET Compact Framework 3.5 in that talk. In case you are interested, you can download the samples of this talk.



   What is this?16:58 PM
Blog Ref URL:  http://www.dotnetfordevices.com/forum.html#286


Wednesday, May 2, 2007
Day ONE at MEDC

This week MEDC, the Windows Mobile and Embedded Developer Conference is held in Las Vegas. With around 1500 attendees joining us here, this is going to be a great event. So far we already had the keynote session by Robbie Bach. In a great attempt to highlight different form factors that Windows Mobile developers have to deal with, he introduced the "O-Phone", a device with a round form factor. In fact, this of course was a joke, but one that was done very well. The device was shown on a video which I hopefully can get my hands on at some time. You can read the script of Robbie's keynote here. If you want to hear Robbie Bach himself and other people at MEDC you should just check this out. During the breakout sessions, Orcas, the next version of Visual Studio, got lots of coverage. Of course together with the .NET Compact Framework 3.5 which ships together with Visual Studio Orcas. Mark Prentice has a blog entry that nicely describes some of the new features of the .NET Compact Framework 3.5. I strongly encourage you to download this new exciting version of Visual Studio. Hey, the good news is that you can even download it as a Virtual PC image, so you don't have to be afraid of installing beta software on a production machine.

With all of these exciting new technologies being covered at MEDC 2007, I feel sort of a loser, talking about things that are avaible today in the .NET Compact Framework 2.0. The only thing left to do for me is spice my talk up with enough jokes so attendees might feel that our current technology is cool as well. Especially of course since we are covering asynchronous programming techniques for the .NET Compact Framework in my talk. It is all about multithreading, but hey, there are some added bonusses. If you want to learn about how to add asynchronous support to your own classes you should definitely attend my session at MEDC on Wednesday May 2nd at 3.45 PM (if you happen to be at MEDC). I am sure we will cover this material later on in one or more webcasts as well, but hey, this is the chance for you to meet me in person and discuss all those things you want to know about multithreading but never dared asking.

This sort of sums up my first day at MEDC 2007. There is much more to talk about but I need to get ready for that presentation that is due in less than 15 hours.



   What is this?07:50 AM
Blog Ref URL:  http://www.dotnetfordevices.com/forum.html#285


Wednesday, April 18, 2007
Meeting in person

In the upcoming months, there are tons of opportunities to meet you all in person. Just make sure to attend either Tech Ed, MEDC or MEDC Europe. During Tech Ed I will present one session in the Windows Mobile track. Here is the session description:

Improving the Performance of your Application using Diagnostic Tools in the .NET Compact Framework

This session will discuss how you can improve the performance of your .NET Compact Framework application by using the diagnostic tools that are included with the Compact Framework. We will also discuss what are the typical issues that your application might be affected by and how to detect and overcome them to deliver a snappier and better user experience. We will also cover the new improved diagnostic and performance analysis tools that will ship with the .NET Compact Framework v 3.5.

Right now it looks like this session is scheduled on June 7th at 4.30 PM. This means there is no excuse not to attend this session. Even though the Tech Ed party is on June 6th at Universal Studios, my session is late enough for you to make it back to the conference center.

During MEDC I will present the following (and of course coolest of all) session:

NET Compact Framework Asynchronous Programming Techniques

You will learn more about the following when attending this session: The .NET Compact Framework 2.0 offers a range of capabilities to use asynchronous programming techniques inside your managed application. Even though the complexity of your application will slightly increase, making use of multiple threads inside your application will help give your end-user a better overall experience by maintaining responsive user interfaces. You will learn how to properly start and terminate threads, how to update user interface controls inside multiple threads and how to call web services asynchronously. After attending this sample filled presentation, multithreading is completely demystified and you will feel confident to develop multithreaded applications.

Right now, this session is scheduled on May 2nd at 3.45 PM. I can even give you the room we are meeting: Veronese 2404-05-06 in the wonderful Venetian Hotel in Las Vegas.

Finally I will (co)present a ton of sessions during MEDC Europe in Berlin, Germany. For now I will just give you the session titles. More details will follow soon.

APP316 - Windows Live Services on Windows Mobile
APP306 - What's New in Device Emulator 3.0
ILL203 - Introduction to Building Line-Of-Business (LOB) Applications on Windows Mobile
APP303 - Adapt Your App: Building Windows Mobile© Applications that Seamlessly Run on Any Device
APP212 - Panel Discussion: Windows Mobile© Application Development

Further more I am also very excited to be part of Mobile Connections Fall in Las Vegas again this year. More details about my sessions during this great event will follow later.

Last but not least! Please don't forget our MSDN Webcasts. Rob Tiffany, Jim Wilson and I will try to deliver you some great content during MSDN Webcasts as well. My next Webcast is scheduled on May 9th at 11 AM PST will cover An Overview of Device Emulator 2.0. Here is the Webcast description:

The Windows Mobile 6 software development kit (SDK) ships with a new Microsoft Device Emulator. In addition to being much faster than its predecessor, Microsoft Device Emulator version 2.0 has many new capabilities to emulate different device states, including the ability to emulate running on batteries. Being a true Advanced RISC Machine (ARM) emulator, the Device Emulator 2.0 runs the same code as real devices. You can use a separate Cellular Emulator with the Device Emulator to test different communications scenarios. Join this example-filled webcast as we take an in-depth look at using the Device Emulator version 2.0 during application development. We explore how to cradle the emulator, run the emulator on battery power, and use the emulator to test the phone capabilities of your application.

I guess everybody is up to date again with my speaking engagements for the near future right now. As soon as I have more details (for instance session numbers and times for MEDC Europe I will make sure to blog those as well).


 



   What is this?00:33 AM
Blog Ref URL:  http://www.dotnetfordevices.com/forum.html#284


Tuesday, April 3, 2007
How cool that RPM is working under Windows Vista
Last week I spent some time trying to get the Remote Performance Monitor working under Windows Vista. Since I don not own a Windows Mobile 6.0 device yet, I tried running this very cool tool on the emulator. It turned out that this was a mistake. First off, I blamed Windows Vista for the problems I had (I even almost decided to switch back to Windows XP), but it turns out that RPM works wonderful under Windows Vista with a real device. To get this running, it is important to install the .NET Compact Framework 2.0 SP2, but then it works like a charm. RPM is a very nice tool, allowing you to monitor the behavior of your application in real-time. You can get information about the number of objects you have allocated, about the Garbage Collector activity, and tons of other .NET CF performance counters. What is even cooler is that you can use perfmon to get a real nice view of the counters you are interested in. There is a lot of information to share about RPM and how it can help you increase the performance of your managed device application and the amount of memory you are allocating in your application. Steven Pratschner has some great blog entries that you definitely should look at if you are beginning to look at RPM. If you want to know more about the .NET CF performance counters, which are with us for a long time already, make sure to visit David Kline’s blog. Oh, when you are done with your performance improvements, make sure to disable the performance counters on your device, since they will influence the actual performance of your running managed applications. Right now I am busy preparing a session for Tech*Ed 2007 in Orlando that, amongst others, will cover RPM. So, if you want to learn more about this great tool, make sure to register for Tech*Ed. We have a 75 minute session covering this and other device performance topics and, even better, a 2 hour time slot right after the session to discuss your particular performance issues, more or less on a one-to-one base.

   What is this?00:08 AM
Blog Ref URL:  http://www.dotnetfordevices.com/forum.html#283


Friday, March 30, 2007
Device Emulator 2.0

This is the topic we are hopefully going to discuss during my next MSDN Webcast. Right now it is scheduled somewhere in the second week of May, meaning I will present live from Phoenix, AZ. The advantage of that is that I will at least be awake, since presenting MSDN Webcasts from The Netherlands (where I spent some time as well), always means that I will be speaking in the evening or worse case, even at night. Anyway, the new Device Emulator 2.0 that ships with the Windows Mobile 6.0 SDK has an interesting side effect. Today I was testing lots of my demo's for MEDC 2007 in Las Vegas. It turned out that almost everytime I was targetting the emulator, it was gone, even though I didn't deliberately close it. Well, finally I found out what was causing this. During my Webcast on the Windows Mobile 6.0 State & Notification Broker I switched the emulator for my last demonstration to run on batteries. The emulator is so smart now that it puts itself into sleep when it is not being used for some time. That is exactly what was happening to me. After two minutes or so, my emulator switched to standby mode, since it assumed it was running on batteries. The net result: each time I deployed a new version of an application, the emulator needed to restore itself. This is some great functionality, if you are really testing for it. However, if you just want the emulator to be available, make sure that you deselect running on battery power. If you don't have a clue what I am talking about, that would be a great reason to come and join me for the Webcast about the Device Emulator. When more details are availabe, I will share them with you.



   What is this?01:12 AM
Blog Ref URL:  http://www.dotnetfordevices.com/forum.html#282


Wednesday, March 28, 2007
A wish comes true.
There are at least three things that Mike Hall and I have in common. We both like Windows Embedded Operating Systems, we talk about Windows Embedded solutions enthousiastically and we both share a passion for Starbucks. Finally, after waiting for many, many years, the first public Starbucks will open soon at Schiphol airport. It is exclusively available for travelers, because it is located at the secure area behind customs. Finally I have another great excuse to fly more often, preferably to the USA where I can enjoy more of my favourite drinks. Hopefully my company will buy this excuse. I can't wait to have my favourite tripple espresso or mocha frappuccino before taking a flight. Honestly, I can't wait for them to really start opening in several Dutch cities. I for one would be willing to drive 30 minutes to get my favourite drink, especially if they also sell those great blue berry muffins. The opening of the first public Starbucks in Holland even made national newspapers, so this is something big for us. Something I didn't even know, there is already one Starbucks in Holland. It is however located in the Nike HQ in Hilversum and exclusively available to Nike employees. I should have known this earlier, instead of tearing my hair out while developing Windows Embedded solutions, I would have considered a carrreer in sport shoes. It is unbelievable it took Starbucks so long to finally open a Dutch location. After all, we are a coffee drinking nation and the Starbucks European distribution center is located in The Netherlands. So Mike, next time you fly to Europe, there is an important reason to take the direct North West flight from Seattle to Amsterdam. After arriving, the first thing you can do is visit the Schiphol Starbucks, whatever your final European destination will be. My next flight is on April 27th. Hopefully they have opened by that time. If not, my next flight is on June 3rd. Either way, I'll make sure to post some pictures of this Dutch Starbucks to proof that this is not just wishfull thinking.

   What is this?01:32 AM
Blog Ref URL:  http://www.dotnetfordevices.com/forum.html#281


Thursday, March 22, 2007
Webcast sample code

For those folks that attended my MSDN Webcast on the Windows Mobile 6.0 State and Notification Broker, but also for all of you who tuned in to the on-demand version of the Webcast, you can download the all samples right here.

Sample Code

If you want to more information about the Windows Mobile 5.0 and Windows Mobile 6.0 State & Notification Broker you should definitely read these excellent articles, written by Jim Wilson.

The State and Notifications Broker Part 1

The State and Notifications Broker Part 2

Jim even promised to write a third part on this topic, which already indicates that yesterday's webcast is only an introduction about this cool technology.

 



   What is this?09:08 AM
Blog Ref URL:  http://www.dotnetfordevices.com/forum.html#280


Tuesday, March 20, 2007
My next Webcast on Wednesday

Even though I am a little late with this announcement we are running an MSDN Webcast about the Windows Mobile 6 and to be honest Windows Mobile 5 State and Notification Broker. As aways my samples will be extremely simple but hopefully they give you enough informaton to use the Windows Mobile 6 State and Notification Broker yourself. The Webcast is scheduled for Wednesday March 21st at 11.00 PST. Even though the USA changed to DST one and a half weeks ago, you hopefully will be able to meet us live during this Webcast. Let me make sure to have the time right by passing you the time in GMT as well, which is 6.00 PM GMT. During this Webcast, I will demonstrate the new Windows Mobile 6.0 emulator for the first time, unfortunatly only limited to using the State and Notification broker. However, Jim Wilson and I will speak this Thursday about a Webcasts series about covering Windows Mobile 6.0 in depth that will be aired in May. So here is a unique chance for all of you. If you want to know more about particular Windows Mobile 6.0 related topics, make sure to drop either Jim or me an email before Thursday, and we might consider taking your suggestion into a Webcast. At the same time, if you have a chance to attend MEDC 2007 in Las Vegas, you will have the chance to meet Jim and me in person. For those folks living in Europe, make sure to attend MEDC Europe and I will definitely have time to speak to you 1-on-1.



   What is this?02:55 AM
Blog Ref URL:  http://www.dotnetfordevices.com/forum.html#279


My Zune compared to Commodore Devices

Before I run into problems let me make it absolutely clear that I love my brand new Zune. As a matter of facts I replaced my G3 iPod with it and I am very happy with the Zune. Since I have written some more or less negative comments about sharing our knowledge regarding Windows CE - see my column here - and had to explain to some folks why I wrote that column, I am very careful with my criticism. However, I personally do believe in freedom of press, so I write down my feelings anyway. Again, I love my Zune, but in the last few weeks I ran into some problems. First off, all the audio files I downloaded from the Zune Marketplace have paused several times when playing them on the device. The remarkable thing about this is that only I ran into problems every second tune. This has been discussed online and it turns out that the Zune is playing the files properly when leaving the backlight on continuously. Even though this seems a cool work around, it is not really working for me. I am using my Zune most of the time when flying between Europe and the USA (usually a 10+ hour flight since I mostly visit the Westcoast). Having the backlight on reduces my batery capacity from the expected 12 hours to only 5 hours, so I am left with 5+ hours without music. Luckily I still have a few other MP3 devices, so I can live with this "problem" for the time being, although I hope that the Zune folks will release V1.3 of the firmware soon to solve this problem. Today however, I found another problem. I have been on the road with my Zune for two weeks and when I tried to synchronize it again tonight, the Zune software on my desktop computer thought that I did not have any content on my Zune device. This is pretty bad, since I had it filled with almost 30 GB of video and audio files. The only option left for me was erasing all data on the Zune and resyncing everything again. This is not really acceptable, since it takes over an hour to sync everything back up to the device. This brings me to a product Commodre is about to release, the Commodore Gravel In-Pocket. My Company, PTS Software, has been involved in creating the application software for this cool new device and we have also been working on making the underlying Windows CE (5.0) platform stable. Today I talked to one of my co-workers who thought it was a little too early to bring the In-Pocket device to market. Even though I want devices to be in perfect shape, I now have the opinion that shipping with a functional, but not error free device is acceptable. It seems that consumer electronics products don't have to be perfect at the time of release. Even though I hate that idea, I have similar experiences with Zune, but also with Windows Vista. The Zune does not correctly playback content I have downloaded from the Marketplace, the Zune I own has some problems with synchronizing to my library and hey, don't get me started on Windows Vista. I have had lots of problems getting Windows Vista to run Visual Studio 2005 before SP1 was officially released. Let me repeat the beginning of this blog entry. I am totally happy with my Zune. The sound quality is superior to any other multi-media device that I have been using so far, yes, including devices that starts with i-.... (as in "Hello, I am an i-.....). I am also completely happy with Windows Vista as my new desktop Operating System, but it seems that both products were released just a few months too soon to get rid of all problems. After experiencing this, I think it is perfectly reasonable to release the Commodore Gravel In-Pocket one of these days (unfortunately only in a few countries in Europe right now). Hey guys, go for it!!!! However, funny enough, we don't seem to have problems like these with the release of Windows Embedded CE 6.0 and with the release of Windows Mobile 6.0. Should I just be gracefull to be partly involved with these products? I don't really know. I think both Zune and Gravel In-Pocket are cool devices. So, Zune folks @ Microsoft, if you want to know more about my experiences with your device, I'll be glad to give you more information about my particular problems and assist you helping to find solutions for these problems. Just drop me an email. At the same time .... Hey friends at Commodore. If you run into simular or different problems, just ping me and I would be happy to assist you guys as well. Talking about Commodore devices .... It would be great if I could get one or two loaner device (just talking about In-Pocket here). I know your schedule does not yet include a US release, but some folks at Microsoft, but definitely also MEDC Las Vegas attendees would be thrilled to see your device in action. Can I take a couple of devices with me when I am heading out to Vegas for MEDC?



   What is this?02:38 AM
Blog Ref URL:  http://www.dotnetfordevices.com/forum.html#278


Tuesday, March 20, 2007
My next Webcast on Wednesday

Even though I am a little late with this announcement we are running an MSDN Webcast about the Windows Mobile 6 and to be honest Windows Mobile 5 State and Notification Broker. As aways my samples will be extremely simple but hopefully they give you enough informaton to use the Windows Mobile 6 State and Notification Broker yourself. The Webcast is scheduled for Wednesday March 21st at 11.00 PST. Even though the USA changed to DST one and a half weeks ago, you hopefully will be able to meet us live during this Webcast. Let me make sure to have the time right by passing you the time in GMT as well, which is 6.00 PM GMT. During this Webcast, I will demonstrate the new Windows Mobile 6.0 emulator for the first time, unfortunatly only limited to using the State and Notification broker. However, Jim Wilson and I will speak this Thursday about a Webcasts series about covering Windows Mobile 6.0 in depth that will be aired in May. So here is a unique chance for all of you. If you want to know more about particular Windows Mobile 6.0 related topics, make sure to drop either Jim or me an email before Thursday, and we might consider taking your suggestion into a Webcast. At the same time, if you have a chance to attend MEDC 2007 in Las Vegas, you will have the chance to meet Jim and me in person. For those folks living in Europe, make sure to attend MEDC Europe and I will definitely have time to speak to you 1-on-1.



   What is this?02:55 AM
Blog Ref URL:  http://www.dotnetfordevices.com/forum.html#279


My Zune compared to Commodore Devices

Before I run into problems let me make it absolutely clear that I love my brand new Zune. As a matter of facts I replaced my G3 iPod with it and I am very happy with the Zune. Since I have written some more or less negative comments about sharing our knowledge regarding Windows CE - see my column here - and had to explain to some folks why I wrote that column, I am very careful with my criticism. However, I personally do believe in freedom of press, so I write down my feelings anyway. Again, I love my Zune, but in the last few weeks I ran into some problems. First off, all the audio files I downloaded from the Zune Marketplace have paused several times when playing them on the device. The remarkable thing about this is that only I ran into problems every second tune. This has been discussed online and it turns out that the Zune is playing the files properly when leaving the backlight on continuously. Even though this seems a cool work around, it is not really working for me. I am using my Zune most of the time when flying between Europe and the USA (usually a 10+ hour flight since I mostly visit the Westcoast). Having the backlight on reduces my batery capacity from the expected 12 hours to only 5 hours, so I am left with 5+ hours without music. Luckily I still have a few other MP3 devices, so I can live with this "problem" for the time being, although I hope that the Zune folks will release V1.3 of the firmware soon to solve this problem. Today however, I found another problem. I have been on the road with my Zune for two weeks and when I tried to synchronize it again tonight, the Zune software on my desktop computer thought that I did not have any content on my Zune device. This is pretty bad, since I had it filled with almost 30 GB of video and audio files. The only option left for me was erasing all data on the Zune and resyncing everything again. This is not really acceptable, since it takes over an hour to sync everything back up to the device. This brings me to a product Commodre is about to release, the Commodore Gravel In-Pocket. My Company, PTS Software, has been involved in creating the application software for this cool new device and we have also been working on making the underlying Windows CE (5.0) platform stable. Today I talked to one of my co-workers who thought it was a little too early to bring the In-Pocket device to market. Even though I want devices to be in perfect shape, I now have the opinion that shipping with a functional, but not error free device is acceptable. It seems that consumer electronics products don't have to be perfect at the time of release. Even though I hate that idea, I have similar experiences with Zune, but also with Windows Vista. The Zune does not correctly playback content I have downloaded from the Marketplace, the Zune I own has some problems with synchronizing to my library and hey, don't get me started on Windows Vista. I have had lots of problems getting Windows Vista to run Visual Studio 2005 before SP1 was officially released. Let me repeat the beginning of this blog entry. I am totally happy with my Zune. The sound quality is superior to any other multi-media device that I have been using so far, yes, including devices that starts with i-.... (as in "Hello, I am an i-.....). I am also completely happy with Windows Vista as my new desktop Operating System, but it seems that both products were released just a few months too soon to get rid of all problems. After experiencing this, I think it is perfectly reasonable to release the Commodore Gravel In-Pocket one of these days (unfortunately only in a few countries in Europe right now). Hey guys, go for it!!!! However, funny enough, we don't seem to have problems like these with the release of Windows Embedded CE 6.0 and with the release of Windows Mobile 6.0. Should I just be gracefull to be partly involved with these products? I don't really know. I think both Zune and Gravel In-Pocket are cool devices. So, Zune folks @ Microsoft, if you want to know more about my experiences with your device, I'll be glad to give you more information about my particular problems and assist you helping to find solutions for these problems. Just drop me an email. At the same time .... Hey friends at Commodore. If you run into simular or different problems, just ping me and I would be happy to assist you guys as well. Talking about Commodore devices .... It would be great if I could get one or two loaner device (just talking about In-Pocket here). I know your schedule does not yet include a US release, but some folks at Microsoft, but definitely also MEDC Las Vegas attendees would be thrilled to see your device in action. Can I take a couple of devices with me when I am heading out to Vegas for MEDC?



   What is this?02:38 AM
Blog Ref URL:  http://www.dotnetfordevices.com/forum.html#278


Thursday, March 8, 2007
Meeting in person during several conferences

Hopefully many of you out there are able to make it either to MEDC 2007 in Las Vegas or to TechEd 2007 in Orlando. During both events I will be speaking on different topics. Since I will be delivering one talk at each event, there will be a lot of time to discuss Windows Embedded and Windows Mobile Development in general on a one-to-one basis if you are interested. Perhaps we could even take one of Mike Hall's original idea's and get together for a geek breakfast, lunch or dinner during one or more conference days. No agenda but talking about developing for embedded and mobile devices, basically talking about anything you want. Maybe a few informal get togethers will increase the value of conferences for all of us. After all, getting to know each other personally and doing a bit of human networking is a perk that we will get for free attending developer conferences. We might even get Mike to find a proper meeting point, in that case undoubtfully close to the nearest Starbucks. In case you want to know, I will present a session around .NET Compact Framework Asynchronous Programming Techniques at MEDC and a session around Improving Application Performance using Diagnostic Tools in the .NET Compact Framework at Tech-Ed. Over the upcoming weeks I will share more details on both sessions with you. Finally, something you definitely don't want to miss out on either, if you are joining us for Tech-Ed in Orlando, is Jim Wilson's pre-conference session on Windows Mobile.



   What is this?01:50 AM
Blog Ref URL:  http://www.dotnetfordevices.com/forum.html#277


Wednesday, February 21, 2007
Finally made it to the top 10

Today I was looking for some archieved webcasts and I came accross the top 10 of highest rated webcasts. On number 10 of the list I saw a webcast with a familiar title. This is the first time one of my webcasts ended up in the Webcast top 10, a list with almost as much authority as the Billboard 100. Of course this information changes week after week, so you'd better hurry to take a look. The very cool part about this is that a Windows Mobile webcast is listed in the top 10. If you didn't have the chance yet, you can listen to this particular webcast about Windows Live on Windows Mobile devices here. Since this is part of a series I hope you will also check out the other parts. After all, tuning in to my webcasts only gets you familiar with the plumbing. To really appreciate the power of Windows Live Services on Windows Mobile devices you should definitely check out parts 3 and 4 in which Jim Wilson ties everything together and even ends up with a really handy little application which, I admit, I downloaded immediately after his webcast and I am actually using it on my Windows Mobile device. You can find Jim's sample application, titled "Doing an MSN Web Search and Finding & Updating a contact's phone number with MSN Search" at this location. To find liks to all parts of the Windows Live on Windows Mobile series, simply click here.



   What is this?08:23 AM
Blog Ref URL:  http://www.dotnetfordevices.com/forum.html#276


Saturday, February 10, 2007
Zune really rocks
Two weeks ago I got the Home AV accessory pack by mail. I wrote earlier about the Zune in one of my weekly columns, but the added value of this AV accessory pack is tremendous. For the last week or so, I have been listening on my home stereo system to my Zune. It is just too cool to choose between hundreds of albums without the need to change CD’s or so. Especially when the sound quality is close enough to the original CD’s, and believe me, I have some comparison material. Tonight for the first time I tried to use the Home AV accessory pack to watch some video. I did store the video in a reasonable quality, but only at 15 frames / second. The result when watching this material on TV is just incredible. It is at least similar to a reasonable VHS video tape. Of course I know that we all are using hard disk recorders to watch recorded TV shows right now, and that their quality is better than a reasonable VHS tape. But hey, displaying video contents from a Zune on a TV is something different. After all, the Zune is a small portable device and I simply love the quality when watching its contents on my TV. I only should experiment encoding DVD’s in higher quality on the Zune. I assume I will even be happier when watching that material. The only downside I have so far. Right now I have around 2500 songs on my Zune and around 70 TV shows. I am really struggling for hard drive capacity, since I would like an additional number of songs and TV shows stored on the device. Right now (and unfortunately only available in the USA), the Zune has a 30 GB hard drive. I can’t wait for one with at least twice as much storage space.  When we have more storage capacity (and perhaps a little better quality in Video display), my dreams will become true. I only need a good amplifier, a nice wide screen TV set and a Zune. That should be enough to watch video’s, listen to music and even listen to radio (because the Zune contains a radio tuner as well).

   What is this?00:32 AM
Blog Ref URL:  http://www.dotnetfordevices.com/forum.html#275


Wednesday, February 7, 2007
One development environment for all your work

In preparation for a session at a local Dutch event I decided to run a demo using Visual Studio 2005 to develop a Windows application, a Smartphone application, a PocketPC application, a .NET Micro Framework application, all of course in managed code and to build a Windows Embedded CE 6.0 OS design together with a native application to run on my newly created Windows Embedded CE 6.0 OS as well. The idea is to start Visual Studio 2005 once, never leave this development tool and achieve all of the above. During the first rehearsal today this turned out to be a very convincing demo. Right now I am even wondering if I should write a small article about the experience on DotNETForDevices. Being able to target many different platforms does of course not mean that you don’t need specific skills for each of them. After all, when developing a Windows application, who cares about processor usage, performance and memory consumption? Well, to be honest, you should! Your users will simply like your application better if you take all these topics into consideration. However, they become much more critical when developing a Windows Mobile application. With slower processors, designing for performance is much more important. With a frequently occurring low memory situation, you should make sure to consume as little memory as possible. And with devices running on batteries, you’d better leave the processor alone unless you absolutely have to use it. All of the above can be applied as well for .NET Micro Framework applications, although there is a difference. Those applications should typically run with even less memory available. Creating a Windows Embedded 6.0 OS Design is something completely different. Not only do you probably need great programming skills. You also need to be familiar with Windows Embedded CE 6.0 as an operating system. You need to know which modules and components to add to your OS design. You might need to develop your own Board Support Package and, more likely, you might need to develop one or more device drivers. To create native applications, you of course also need to know the C or C++ programming language. This is something I have not even touched in this little entry. You not only have lots of different targets you can reach with Visual Studio 2005, you can also choose between languages like Visual Basic.NET, C#, J#, managed C++ and native C++. Of course not every language is applicable for each platform, but Visual Studio 2005 has it all. Going back to the demo, I will target 5 different platforms, make use of 3 different programming languages and 3 different versions of the Common Language Runtime for those managed applications I show. Pretty impressive, right? There is only one more thing on my wish list. I also want to create a managed application using XAML with some C# code to react on fired events. There is only one small problem. Tomorrow I need to get some basic XAML skills to at least create a cool button inside a WPF application. When the button is clicked I want to show a simple message box, coded in C#. Ah well, I have a day left. That should be enough to get sort of familiar with XAML, right?



   What is this?00:48 AM
Blog Ref URL:  http://www.dotnetfordevices.com/forum.html#274


Friday, February 2, 2007
Another MSDN Webcast in the make
I am not even sure what date we are picking for it. This is a perfect reason for all of you to regularly check back to the fantastic Webcast calendar, which funny enough seems hard to find for me these days. Not to worry, you can find it here: http://www.microsoft.com/events/webcasts/calendar/MonthView.aspx. Of course I’ll let you know when the date and time are set. It will probably either be around the end of February or the beginning of March, Hey, I need some time to prepare! I want to talk about the State & Notification Broker, which is part of the Windows Mobile Managed API’s. The idea so far is to inform you about getting easy access to over 100 different hardware and system states like network connectivity, battery power and so on, all consistently reachable by managed code. You will also learn how to extend the State & Notification Broker by adding your own user defined states. Like always, there will be a lot of sample code in this Webcast. The idea is to show you how to use the State & Notification Broker to make your applications really smart. You will learn how to react on state changes in your device. You will also learn how to start your application automatically when a particular system state changes. Finally, as a bonus you will find out how to capture SMS messages inside your own Windows Mobile application. Check back to this blog and / or to the Webcast calendar to find out about the date and time to attend the live Webcast. The really cool part of attending a live Webcast is that you ask me those tough questions you always wanted to ask but never had a chance to do so. Oh, something else, but also very important. If you like to know more about developing for Windows CE or Windows Mobile devices (using either native or managed code), or if you have another great idea for a Webcast, make sure to let us know. It is nothing scary and absolutely not hard to do. Just submit your ideas to Bryan here at: http://blogs.msdn.com/msdnwebcasts/contact.aspx. Of course you can also email your suggestions to me and I make sure to pass them on to the MSDN Webcast team.

   What is this?00:13 AM
Blog Ref URL:  http://www.dotnetfordevices.com/forum.html#273


Monday, January 29, 2007
Small is beautiful
This little sentence can be found on the home page of the .NET Micro Framework. This smallest version of the different .NET environments offers a rich managed code environment to low cost hardware with a minimum number of requirements. It runs in 256 KB RAM and needs only 512 KB of flash memory. A number of ARM7 and ARM9 based processors are supported and it does not need an MMU. It is a pretty cool environment that does not need an underlying operating system. Applications and device drivers can be developed in C# using Visual Studio 2005. The .NET Micro Framework even comes with an emulator to allow for software testing before the target hardware is even available. The emulator gives you also a great chance to experiment with the .NET Micro Framework. Today I was discussing usability of the .NET Micro Framework with one of my co-workers for a project using very small intelligent devices. The only catch here is that each device must be able to communicate with surrounding devices and an individual device might only have 4 KB of RAM. So I totally agree, small is beautiful. Since the .NET Micro Framework is currently available in beta and will hopefully be released soon I started wondering if the team currently working inside Microsoft on the .NET Micro Framework becomes available soon. I think I have a new assignment for you all. Given the restrictions of the hardware I mentioned earlier I can’t wait for the .NET Nano Framework to be released. It should contain a reasonable subset of the functionality of the full .NET Framework (let’s say 98%), should of course have hard real-time behavior and besides C# I also would like to be able to program in Visual Basic.NET. Needing a reasonable amount of memory for both my applications and device drivers it seems reasonable to have 10 bytes available for the CLR. Of course it would be nice to have a full implementation for WPF as well, so we can create fancy Vista like user interfaces. Hey this can’t be too hard, right? After all, hardware is getting smaller and smaller by the day. So it is only reasonable to expect this from software as well. One last question remains. When can I have the first beta bit? Pretty soon I guess. After all, it only can be a -1- or a -0-. If you tell me what it should be I might even be able to implement it myself.

   What is this?21:43 PM
Blog Ref URL:  http://www.dotnetfordevices.com/forum.html#272


Sunday, January 28, 2007
Usually I am not very critical towards Microsoft but this time I had to

I am totally against Microsoft bashing but this time I at least had to say something I really do not like. Just in case you missed it, but also because I assume more people read my blog than my weekly columns, take a look here and do not hesitate to share your feelings with me.



   What is this?01:05 AM
Blog Ref URL:  http://www.dotnetfordevices.com/forum.html#271


Saturday, January 27, 2007
Are you looking for a Windows Embedded CE 6.0 training

In that case there is no reason to look any further. Last week I attended the Windows Embedded CE 6.0 train-the-trainer training in Redmond and I am ready to go. The official Windows Embedded CE 6.0 training material gives you a great introduction around this new version of Windows CE. During an intensive, 5 day training you will learn about the Operating System Features, about the Tools for Platform Development, about the Operating System Internals and about the Operating System Components, all in a nice overview with lots of labs to practice. After that things get serious when we dig into the Build System, Board Support Packages, Developing Device Drivers, Customizing an OS Design, Application Development and Testing. After attending this training you should be familiar with all the tools you need to develop your own Windows Embedded CE 6.0 based solution and it should be possible for you to get a head start with developing a succesful product. When you are living in the Benelux countries we could get you a training like within one of two weeks if you wish. If you live in other parts of the world, don't hesitate to contact me anyway. Perhaps you know me from Webcasts, MEDC's, Embedded World Conferences or other events. If you think you can keep up with me for a week or so, just drop me an email. I am willing to travel around the world to educate you and your company. Oh, here is the proof that I am really qualified to teach this training.

Simply contact me directly or send an email to my company. I can't wait to get you up and running, developing great embedded systems using Windows Embedded CE 6.0



   What is this?00:43 AM
Blog Ref URL:  http://www.dotnetfordevices.com/forum.html#270


Friday, January 19, 2007
In case you missed it
You should definitely go ahead and listen to the Webcast that Jim Wilson presented yesterday about using Windows Live Services on Windows Mobile devices. Jim tied all the separate pieces together that I introduced over the last two weeks. Watching his Webcast will definitely help you creating great applications that utilize Windows Live Services. You will find out how easy it is to take an RSS feed and create a typed DataSet from it that you can easily use inside your own rich client application. Even though we target the Webcast series to Windows Mobile devices, after all, that is the area we both are heavily involved in currently, all the information presented also applies to notebook and desktop machines. Watch Jim's Webcast and you will get a good idea on the future of application development. If you want to have an even better experience, you should try and attend the last part of this Webcast series live. Doing so you have the opportunity to ask all those hard questions as well. Simply sign up here for an appointment with Jim on Thursday January 25th at 12.00 PM PST. 

   What is this?11:30 AM
Blog Ref URL:  http://www.dotnetfordevices.com/forum.html#269


Thursday, January 18, 2007
Windows Embedded CE 6.0 training

This week a whole bunch of teachers is getting together to learn more about the brand new Windows Embedded CE 6.0 training. This training is ideal for developers who want to start using Windows Embedded CE 6.0. After a week of intensive training you know a lot about features of the operating system, you know how to create your own OS design, you get a feeling for what is needed to create a Board Support Package and you will learn how to create device drivers for Windows Embedded CE 6.0. Of course it is impossible to become an expert after only one week of training, but this training offers you a great starting point to begin developing Windows CE based solutions. Here you can find information about companies who can provide this training for you. However, if you are living in the Benelux and if you are interested in taking this training, don't hesitate to send me an email. For those folks that are already using Windows CE 5.0 and are interested in the differences between Windows CE 5.0 and Windows Embedded CE 6.0 I am currently looking at the possibilities to provide you with a one or two day refresh course, covering the differences between the two versions of the operating system and introducting you to Platform Builder 6.0 which very nicely integrates in Visual Studio 2005. In case you think that it is fun to attend a train-the-trainer training, you better think twice and take a look what we had to go through. For those folks living in Europe: The white stuff that is covering the ground is called snow. Something very rarely seen these days. Thank you Mike for making this picture available to the world.



   What is this?17:50 PM
Blog Ref URL:  http://www.dotnetfordevices.com/forum.html#268


Monday, January 15, 2007
Windows Live on Windows Mobile Webcast sample code

Over the last two weeks I presented two MSND Webcasts on using Windows Live Services on Windows Mobile devices. Using Windows Live Services you get a lot of processing power behind the palms of your hand operating your Windows Mobile Device. These Webcasts are part of a 4 part series titled “Introducing Windows Live Services on Mobile Devices”. In episode 1 you can learn how to access Web Services inside a .NET Compact Framework application. As you can see, this is very easy using managed code. Simply add a Web Reference to the Web Service you want to communicate with and it seems that you are simply using managed classes on your device. You might not even be aware of the fact that you are calling out to a service over the Internet. That is, unless you don’t have connectivity. When no connectivity is available you will get exceptions. Even when you are connected you might run into some performance issues, since you don’t have a clue how long it will take until you get results back from a Web Service. Since part 1 of the Webcast series is simply an introduction on calling Web Services, there is not much discussion about device connectivity and performance. If you want to learn more about device connectivity, you can find a number of excellent resources following these links:

State & Notification Broker in Windows Mobile 5.0

Monitor Clients and respond to change

 

In episode 2 of the Webcast Series you can learn how to take RSS feeds from Websites (including Windows Live Services) and take those feeds inside your own application for further processing. Using the presented techniques, you can make use of data, returned from Websites without the need to access those Websites inside a browser. With a little creativity and some work I will leave to you, you can create a whole family of brand new applications, combining the power of a rich client application on your Windows Mobile device with the power of Web servers, feeding your application with data you are interested in.

Both Webcast episodes have sample code available. If you are interested in the sample code you can download it here.

Sample code for part 1 of the series.

Sample code for part 2 of the series.

Don't forget to attend part 3 of the series as well when Jim Wilson discusses how to combine data from WIndows Live services with your own business data in a mobile line-of-business application. Make sure you mark this Webcast in your calendar and sign up here. Jim will present this Webcast live on January 18 at 12.00 PM PST.

 



   What is this?04:09 AM
Blog Ref URL:  http://www.dotnetfordevices.com/forum.html#267


Saturday, January 6, 2007
Finding Webcasts in a glance

Here is something definitely worth looking at. Perhaps you browse regularly through the list of upcoming MSDN Webcasts. There are quite a few Webcasts each and every day. Therefore it is not the best experience to browse through a long list of titles. You might easily miss one you are interested in. The Webcast Calendar is great to assist you looking for those Webcasts that really help you do your work better. Make sure to give it a try and sign up for lots of Webcasts. After all, attending them is totally free. Better yet, if you are living in the USA and attend one or more live Webcasts in the upcoming few months, you might even win a Microsoft Zune 30 GB digital media player.  



   What is this?20:06 PM
Blog Ref URL:  http://www.dotnetfordevices.com/forum.html#266


Windows Live Services on Windows Mobile Devices Webcast

January feels like Windows Live Services on Mobile Devices month. Especially if you take a look at the four part Webcast series that Jim Wilson and I are presenting each Thursday at 12 PM PST. On January 11 the second part of this series covers using Windows Live QnA. More general this Webcast shows you how to use RSS feeds inside Windows Mobile Devices. If you have not done so yet, you can sign up here for this Webcast titled “MSDN Webcast: Introducing Windows Live Services on Mobile Devices (Part 2 of 4): Consuming RSS-Based Services”. I am looking forward to see you this Thursday.



   What is this?20:02 PM
Blog Ref URL:  http://www.dotnetfordevices.com/forum.html#265


Saturday, January 6, 2007
Finding Webcasts in a glance

Here is something definitely worth looking at. Perhaps you browse regularly through the list of upcoming MSDN Webcasts. There are quite a few Webcasts each and every day. Therefore it is not the best experience to browse through a long list of titles. You might easily miss one you are interested in. The Webcast Calendar is great to assist you looking for those Webcasts that really help you do your work better. Make sure to give it a try and sign up for lots of Webcasts. After all, attending them is totally free. Better yet, if you are living in the USA and attend one or more live Webcasts in the upcoming few months, you might even win a Microsoft Zune 30 GB digital media player.  



   What is this?20:06 PM
Blog Ref URL:  http://www.dotnetfordevices.com/forum.html#266


Windows Live Services on Windows Mobile Devices Webcast

January feels like Windows Live Services on Mobile Devices month. Especially if you take a look at the four part Webcast series that Jim Wilson and I are presenting each Thursday at 12 PM PST. On January 11 the second part of this series covers using Windows Live QnA. More general this Webcast shows you how to use RSS feeds inside Windows Mobile Devices. If you have not done so yet, you can sign up here for this Webcast titled “MSDN Webcast: Introducing Windows Live Services on Mobile Devices (Part 2 of 4): Consuming RSS-Based Services”. I am looking forward to see you this Thursday.



   What is this?20:02 PM
Blog Ref URL:  http://www.dotnetfordevices.com/forum.html#265


Thursday, January 4, 2007
What if you are bored today

Maybe you just started working again after a nice Holiday break or perhaps you are still enjoying that Holiday break.  You might even have looked at the MSDN Webcast site to find out if you could learn something new. Today there is not too much choice and this is sort of a short notice, but hey. What about learning something cool about Windows Live in combination with Windows Mobile Devices? Today we are kicking off a four part Webcast series on using Windows Live Services on Windows Mobile Devices. We are still a good 3 hours away from the start of this Webcast so there is plenty of time to sign up and join me. If you do, hopefully you like the content and get curious for the next 3 parts of the series. I’ll inform you about the contents of the next part of the series later this week.



   What is this?17:31 PM
Blog Ref URL:  http://www.dotnetfordevices.com/forum.html#264


The MEDC 2007 Website is up
Just when I added a link to MEDC2007 in my previous blog entry I noticed that the site is now completely up and running. It contains great information about the Windows Mobile and Embedded Conference itself. You can already get an idea what to expect, especially if you are a newcomer to this conference. Veterans of course know what to expect, but it is great to see that we again have a SumoBot competition, receptions, parties and oh yes, some of the best technical content available that will be delivered by undoubtfully a pretty good lineup of speakers. You can already register for the event. Really, if I were you I wouldn’t wait too long with registering. Even though the Venetian is a large place, I am pretty sure it will be a very popular place to be as well between April 30th and May 4th.

   What is this?17:12 PM
Blog Ref URL:  http://www.dotnetfordevices.com/forum.html#263


Welcome 2007
First let me wish all of you a very good 2007. Hopefully this year will get you everything you are expecting, both personal and professionally. I guess this is a year of changes for many people. I assume many people will change there operating system from XP to Vista. Maybe you even change your favourite portable media player to whatever you are using to Zune. And maybe you have decided to attend lots of MSDN Webcasts and MEDC 2007. If the latter is true, we will definitely have a chance to meet, be it in person or via the Internet. I am definitely looking forward to that.

   What is this?16:50 PM
Blog Ref URL:  http://www.dotnetfordevices.com/forum.html#262


Thursday, January 4, 2007
What if you are bored today

Maybe you just started working again after a nice Holiday break or perhaps you are still enjoying that Holiday break.  You might even have looked at the MSDN Webcast site to find out if you could learn something new. Today there is not too much choice and this is sort of a short notice, but hey. What about learning something cool about Windows Live in combination with Windows Mobile Devices? Today we are kicking off a four part Webcast series on using Windows Live Services on Windows Mobile Devices. We are still a good 3 hours away from the start of this Webcast so there is plenty of time to sign up and join me. If you do, hopefully you like the content and get curious for the next 3 parts of the series. I’ll inform you about the contents of the next part of the series later this week.



   What is this?17:31 PM
Blog Ref URL:  http://www.dotnetfordevices.com/forum.html#264


The MEDC 2007 Website is up
Just when I added a link to MEDC2007 in my previous blog entry I noticed that the site is now completely up and running. It contains great information about the Windows Mobile and Embedded Conference itself. You can already get an idea what to expect, especially if you are a newcomer to this conference. Veterans of course know what to expect, but it is great to see that we again have a SumoBot competition, receptions, parties and oh yes, some of the best technical content available that will be delivered by undoubtfully a pretty good lineup of speakers. You can already register for the event. Really, if I were you I wouldn’t wait too long with registering. Even though the Venetian is a large place, I am pretty sure it will be a very popular place to be as well between April 30th and May 4th.

   What is this?17:12 PM
Blog Ref URL:  http://www.dotnetfordevices.com/forum.html#263


Welcome 2007
First let me wish all of you a very good 2007. Hopefully this year will get you everything you are expecting, both personal and professionally. I guess this is a year of changes for many people. I assume many people will change there operating system from XP to Vista. Maybe you even change your favourite portable media player to whatever you are using to Zune. And maybe you have decided to attend lots of MSDN Webcasts and MEDC 2007. If the latter is true, we will definitely have a chance to meet, be it in person or via the Internet. I am definitely looking forward to that.

   What is this?16:50 PM
Blog Ref URL:  http://www.dotnetfordevices.com/forum.html#262


Thursday, January 4, 2007
What if you are bored today

Maybe you just started working again after a nice Holiday break or perhaps you are still enjoying that Holiday break.  You might even have looked at the MSDN Webcast site to find out if you could learn something new. Today there is not too much choice and this is sort of a short notice, but hey. What about learning something cool about Windows Live in combination with Windows Mobile Devices? Today we are kicking off a four part Webcast series on using Windows Live Services on Windows Mobile Devices. We are still a good 3 hours away from the start of this Webcast so there is plenty of time to sign up and join me. If you do, hopefully you like the content and get curious for the next 3 parts of the series. I’ll inform you about the contents of the next part of the series later this week.



   What is this?17:31 PM
Blog Ref URL:  http://www.dotnetfordevices.com/forum.html#264


The MEDC 2007 Website is up
Just when I added a link to MEDC2007 in my previous blog entry I noticed that the site is now completely up and running. It contains great information about the Windows Mobile and Embedded Conference itself. You can already get an idea what to expect, especially if you are a newcomer to this conference. Veterans of course know what to expect, but it is great to see that we again have a SumoBot competition, receptions, parties and oh yes, some of the best technical content available that will be delivered by undoubtfully a pretty good lineup of speakers. You can already register for the event. Really, if I were you I wouldn’t wait too long with registering. Even though the Venetian is a large place, I am pretty sure it will be a very popular place to be as well between April 30th and May 4th.

   What is this?17:12 PM
Blog Ref URL:  http://www.dotnetfordevices.com/forum.html#263


Welcome 2007
First let me wish all of you a very good 2007. Hopefully this year will get you everything you are expecting, both personal and professionally. I guess this is a year of changes for many people. I assume many people will change there operating system from XP to Vista. Maybe you even change your favourite portable media player to whatever you are using to Zune. And maybe you have decided to attend lots of MSDN Webcasts and MEDC 2007. If the latter is true, we will definitely have a chance to meet, be it in person or via the Internet. I am definitely looking forward to that.

   What is this?16:50 PM
Blog Ref URL:  http://www.dotnetfordevices.com/forum.html#262


Friday, December 29, 2006
Another Webcast coming up
Just before the old year turns into a new one, I want to inform you about a Webcast series, Jim Wilson and I will present about incorporating Windows Live Services on Windows Mobile Devices. We will talk about this topic in a 4-part series. In the first episode I will talk about the basics of using Windows Live Services. In the second episode I will talk about using RSS feeds to get the most out of some of the Windows Live Services. After that, Jim takes it beyond basics. He will explain how to use Windows Live Services inside smart client applications that will run on Windows Mobile devices. You can't afford to miss this opportunity to learn more about Windows Live Services on Windows Mobile Devices, so hopefully you join us every Thursday in January at 12.00 PM Pacific Time. Make sure to reserve your seat!

   What is this?01:50 AM
Blog Ref URL:  http://www.dotnetfordevices.com/forum.html#261


Even though I am not tagged

I just read Mike Hall's blog entry on 5 things you didn't know about him (BTW he was tagged by Daniel Moth). I like the idea, so I will volunteer to tell you 5 things you didn't know about me.

1 - Similar to Mike Hall, I have been turned down for a job at Microsoft. As a matter of facts, I have been turned down several times. In my opinion with a lame excuse. What I have been told so far is that I am more valuable towards Microsoft being a non-Microsoft employee. I have to admit that I applied for jobs locally. Since I am a freelance journalist and working at a software company (PTS) and being a non-paid Windows Embedded Evangelist I guess they have a point. However, I will be in Redmond again between January 14 and January 19. Who knows, maybe opinions have been changed and I might work for them somewhere during 2007.

2 - I love to show and teach people about typical "hello, world" applications, preferably coming up with multithreaded solutions in the .NET Compact Framework.

3 - My biggest ambition is in being a radio presenter. I got a chance at a Dutch radio station but I blew it.

4 - Since this is close to #3 it should be on fourth place. I would love to be a professional MSDN Webcaster. Right now I am just an amateur at this, but if you want to hear me talking and explaining some of the things you need to think about when incorporating Windows Live Services on Mobile devices, you should check this link.

5 - I do strongly believe that Windows Embedded CE could be the biggest OS for Microsoft. Not only think about Windows Mobile Devices, but also think about the potential in embedded systems in industrial automation. Am I the only person to believe this? Sometimes it feels like that! If they (being Microsoft) only realized what a great OS they have available for this market. Spent some marketing dollars on us, please!

Having said all that, thank you all for your support during my webcasts and MEDC / TechEd / Local events / Mobile Connection Sessions. Hopefully I will be back with more things to talk about in 2007. Having said that, I wish everybody a Happy New Year. Hopefully your dreams will become true in 2007.



   What is this?01:34 AM
Blog Ref URL:  http://www.dotnetfordevices.com/forum.html#260


Friday, December 29, 2006
Another Webcast coming up
Just before the old year turns into a new one, I want to inform you about a Webcast series, Jim Wilson and I will present about incorporating Windows Live Services on Windows Mobile Devices. We will talk about this topic in a 4-part series. In the first episode I will talk about the basics of using Windows Live Services. In the second episode I will talk about using RSS feeds to get the most out of some of the Windows Live Services. After that, Jim takes it beyond basics. He will explain how to use Windows Live Services inside smart client applications that will run on Windows Mobile devices. You can't afford to miss this opportunity to learn more about Windows Live Services on Windows Mobile Devices, so hopefully you join us every Thursday in January at 12.00 PM Pacific Time. Make sure to reserve your seat!

   What is this?01:50 AM
Blog Ref URL:  http://www.dotnetfordevices.com/forum.html#261


Even though I am not tagged

I just read Mike Hall's blog entry on 5 things you didn't know about him (BTW he was tagged by Daniel Moth). I like the idea, so I will volunteer to tell you 5 things you didn't know about me.

1 - Similar to Mike Hall, I have been turned down for a job at Microsoft. As a matter of facts, I have been turned down several times. In my opinion with a lame excuse. What I have been told so far is that I am more valuable towards Microsoft being a non-Microsoft employee. I have to admit that I applied for jobs locally. Since I am a freelance journalist and working at a software company (PTS) and being a non-paid Windows Embedded Evangelist I guess they have a point. However, I will be in Redmond again between January 14 and January 19. Who knows, maybe opinions have been changed and I might work for them somewhere during 2007.

2 - I love to show and teach people about typical "hello, world" applications, preferably coming up with multithreaded solutions in the .NET Compact Framework.

3 - My biggest ambition is in being a radio presenter. I got a chance at a Dutch radio station but I blew it.

4 - Since this is close to #3 it should be on fourth place. I would love to be a professional MSDN Webcaster. Right now I am just an amateur at this, but if you want to hear me talking and explaining some of the things you need to think about when incorporating Windows Live Services on Mobile devices, you should check this link.

5 - I do strongly believe that Windows Embedded CE could be the biggest OS for Microsoft. Not only think about Windows Mobile Devices, but also think about the potential in embedded systems in industrial automation. Am I the only person to believe this? Sometimes it feels like that! If they (being Microsoft) only realized what a great OS they have available for this market. Spent some marketing dollars on us, please!

Having said all that, thank you all for your support during my webcasts and MEDC / TechEd / Local events / Mobile Connection Sessions. Hopefully I will be back with more things to talk about in 2007. Having said that, I wish everybody a Happy New Year. Hopefully your dreams will become true in 2007.



   What is this?01:34 AM
Blog Ref URL:  http://www.dotnetfordevices.com/forum.html#260


Friday, December 8, 2006
StatusBar and Docking Controls

Docking and Anchoring controls really helps to create a Windows Mobile Application that looks good both in Landscape and Portrait mode. In preparation for a Webcast series Jim Wilson and I will present in January 2007 I came accross something interesting though. I am working on a relatively simple application to show how to call out to the Windows Live Expo Service, storing results in a DataGrid. The DataGrid is Docked to Full to occupy the entire client area of my form. At one moment I decided to add a StatusBar to the form to be able to show some additional information. This is what my application looked like after adding the StatusBar:

As you can see this screen does not look that good, because it seems that the StatusBar is displayed on top of the DataGrid. For instance, where is the down arrow of the scroll bar? Even though the DataGrid is docked to fill up the screen it seems to have no knowledge of a StatusBar being present. This behavior can easily be solved by changing the order into which the UI controls were added to the form. In the above picture I already had a DataGrid and I decided to add a StatusBar at a later moment. Look at the difference of first adding a StatusBar to the form, followed by a DataGrid.

So this problem was easy to solve by simply changing the order in which you add controls to the screen. I wish all my problems were so easy to solve.



   What is this?10:08 AM
Blog Ref URL:  http://www.dotnetfordevices.com/forum.html#259


Monday, November 20, 2006
Last Minute Webcast announcement

Sorry for the short notice. It was uncertain until this weekend, but this coming Wednesday, the day before Thanksgiving, I will be hosting a Webcast titled .NET Compact Framework Asynchronous Programming Techniques for Windows Mobile Devices. During the Webcast we will shortly revisit the concept of multithreaded application development but then move on to asynchronously calling out to Web Services and the consequences this might have for your application (both the positive and the negative). Hopefully you will join me between 11.00 AM PST and noon for this webcast. You can sign up here.



   What is this?22:06 PM
Blog Ref URL:  http://www.dotnetfordevices.com/forum.html#258


More RoadAssistance Code available
If you are interested in the source code for the RoadAssistance webcast series in Visual Basic.NET that we ran between January and March of this year, it is finally partly available. Hopefully all sample code will be available before the end of this year, but at least you can now go ahead and study the code in your own favorite language. The accompanying documentation is also transfered to include Visual Basic.NET snippets. Hopefully you have fun with this sample code. Oh yes, all the webcasts are still available for on demand viewing or for download. Just follow the links of each webcast title on the download page.

   What is this?21:55 PM
Blog Ref URL:  http://www.dotnetfordevices.com/forum.html#257


Monday, November 20, 2006
Last Minute Webcast announcement

Sorry for the short notice. It was uncertain until this weekend, but this coming Wednesday, the day before Thanksgiving, I will be hosting a Webcast titled .NET Compact Framework Asynchronous Programming Techniques for Windows Mobile Devices. During the Webcast we will shortly revisit the concept of multithreaded application development but then move on to asynchronously calling out to Web Services and the consequences this might have for your application (both the positive and the negative). Hopefully you will join me between 11.00 AM PST and noon for this webcast. You can sign up here.



   What is this?22:06 PM
Blog Ref URL:  http://www.dotnetfordevices.com/forum.html#258


More RoadAssistance Code available
If you are interested in the source code for the RoadAssistance webcast series in Visual Basic.NET that we ran between January and March of this year, it is finally partly available. Hopefully all sample code will be available before the end of this year, but at least you can now go ahead and study the code in your own favorite language. The accompanying documentation is also transfered to include Visual Basic.NET snippets. Hopefully you have fun with this sample code. Oh yes, all the webcasts are still available for on demand viewing or for download. Just follow the links of each webcast title on the download page.

   What is this?21:55 PM
Blog Ref URL:  http://www.dotnetfordevices.com/forum.html#257


Friday, October 20, 2006
Problems when setting breakpoints inside Visual Studio 2005 for WM 5.0

This took me some time to figure out. When I was debugging an application that I will use as sample application during the Post Conference session at the Mobile Connections Conference I tried to set a breakpoint inside Visual Studio 2005. I got an error message telling me the following: "The breakpoint will not currently be hit. The specified module has not been loaded". At first I didn't have a clue what was going on, until I suddenly remembered that I had a clean installation of Visual Studio 2005 and probably a device that already was equiped with the .NET CF 2.0 SP1. Just thinking for a second it became clear that my device contained a newer version of the .NET CF, causing debugging problems. Well, the solution (after a few wasted hours) was simple. Simply install the .NET CF 2.0 Service Pack 1 Patch (which will conveniently install to each version of Visual Studio that supports Smart Device Development). After installing this update on my development machine I was able to debug my application again. Are you getting similar problems? Make sure you download the patch, it will save you a lot of time, time that I wasted today!



   What is this?01:27 AM
Blog Ref URL:  http://www.dotnetfordevices.com/forum.html#256


Monday, October 16, 2006
Virtual Labs are COOL

Even if you don't have Visual Studio installed you are now able to get a feeling of how to develop Smart Device Applications by taking one of these Virtual Labs. I strongly recommend you doing so. You will learn a lot and also have a lot of fun. If you have specific questions about the multithreaded lab or the COM Interop lab, just send me an email to maartenATdotnetfordevices.com (just replace AT by @ and I will get your email). The reason why I am telling you this? First of all, Virtual Labs are really cool. Second, I recognize a lot of the virtual labs around multithreading and COM. It almost seems that they are identical to my MEDC hands-on labs. Just make sure that you send me all those questions that you still have after taking the labs. Thanks Jim, for all the work you have undoubtfully done to get these labs up and running.



   What is this?01:20 AM
Blog Ref URL:  http://www.dotnetfordevices.com/forum.html#255


Monday, October 9, 2006
Differences between Windows Mobile and Windows CE

If it is unclear to you what the differences and the relations are between Windows Mobile and Windows CE you should read this blog entry from Mike Hall. That should explain it once and forever. Working frequently with multi-threaded applications I love Mike's example of a Windows CE powered multi-threaded device: a sewing machine, which by the way really exists.



   What is this?06:42 AM
Blog Ref URL:  http://www.dotnetfordevices.com/forum.html#254


Sunday, October 8, 2006
Mobile Connections is around the corner

Hopefully you will be able to join us for the Mobile Connections conference between November 6 and November 9 in Las Vegas. If you really want to get all out of this conference make sure to attend one of the post conference sessions on November 10 as well. During this week, we will take over Las Vegas. During this conference we have a unique chance to meet in person. Of course no offense but I would love it if you would come and check out my sessions at Mobile Connections, but hey, check out the detailed schedule, because the conference organizers have assembled a great line-up of top speakers. Ok, let me just give you the dates and times for my sessions at Mobile Connections.

Wednesday November 8 at 2.15 PM I will be speaking about .NET Compact Framework Asynchronous Programming Techniques for Windows Mobile Devices. Just check out session MMD401 for lots of cool stuff around multithreading, of course packed with demo's.

Thursday November 9 at 8 AM I hope to meet you on my session about Incorporating COM Objects into your .NET Compact Framework 2.0 Application. For this session you have to check out MMD402. Of course this session will be filled with demo's as well.

Last but not least, I will be presenting a post conference session on November 10 between 9 AM and 4 PM. During this session, titled Creating a Windows Mobile 5.0 Line of Business Application we will create a complete application from scratch. During the session you will see lots of sample code and you will get some great tips and tricks on using SQL Everywhere, calling out to Web Services, creating Splash Screens on a separate worker thread, using the WM 5.0 Managed API's to capture SMS messages, dealing with different form factors on WM 5.0 devices and lots more. Of course you will go home with the complete sample code for this post conference session.

I am looking forward to meeting many of you mobile developers in Las Vegas next month.



   What is this?20:37 PM
Blog Ref URL:  http://www.dotnetfordevices.com/forum.html#253


Tuesday, August 29, 2006
Multithreaded Webcast Companion
Last week I presented an MSDN Webcast on Developing Multithreading applications using the .NET CF 2.0. The Webcast is still available for on-demand listening and for download. You can get it here. The samples that I used in the Webcast are available for download as well. Last but not least, if you want to read more about .NET CF 2.0 multithreaded applications, MSDN is your best friend. Take a look at this article for more background information and look at this article for the MEDC 2006 hands-on lab on multithreading. I hope you have fun with this material.

   What is this?08:10 AM
Blog Ref URL:  http://www.dotnetfordevices.com/forum.html#252


Tuesday, August 22, 2006
Join me for some Multithreading Fun

It has been way too long since the last update on DotNETForDevices, but from now on you will again find regular blog entries, weekly columns and maybe even a few code samples here. Just in case you are not aware of our next upcoming MSDN Webcast on Multithreaded Application Development using the .NET CF 2.0, I decided to write this small plug. We will start at the basics, explore why multithreading is useful, how to develop a multithreaded application. We also explore how to properly terminate a multithreaded application and if there is time left, we discuss a number of synchronization classes that are available for multithreaded applications. Don't wait too long deciding if you want to join us, because the webcast will "air" in less than 24 hours from now. Hopefully we'll meet tomorrow, August 23 at 11.00 AM PST for one hour of multithreading fun. Oh, no slide deck this time, just me talking and coding and of course hopefully you absorbing the information and asking questions. Make sure to sign up here and we will see each other tomorrow.



   What is this?21:38 PM
Blog Ref URL:  http://www.dotnetfordevices.com/forum.html#251


Tuesday, July 11, 2006
RoadAssistance sample code easier to find
All C# sample code and documentation for the MSDN Webcast series on creating a Windows Mobile Line of Business Application is now easy to find on a location that makes a little more sense. Hopefully all VB.NET Sample code will follow somewhere in August (gotta have a break first).

   What is this?07:58 AM
Blog Ref URL:  http://www.dotnetfordevices.com/forum.html#250


Saturday, July 8, 2006
More samples going to be available

For those of you who attended my latest webcast on creating a Windows Mobile Line of Business application, I will make sure to have the demos available for download somewhere over the weekend. Let me take the opportunity to share this info with you as well. Over the next few weeks, I guess we are starting in August, we are running a “best of MEDC” series of MSDN webcasts. I will be presenting two of those, one code only webcast on multithreading using the .NET CF 2.0 and another one on COM interoperability. Whenever I have more details about this series, I'll be happy to share those with you. I am about to take a vacation break, but right now I am also thinking what to do in the second half of this year. Besides more webcasts and conferences like the Mobile Connections Conference in Las Vegas, later this year (make sure to sign up for this conference, since it is going to be very cool with some of the best speakers around), I am thinking about doing a number of mini presentations. They will be available for download right here at my blog. Think about small 5 to 10 minute video demonstrations, available as downloads that run in Media Player, on the following topics:

·         Developing your first Windows Mobile 5.0 application

·         A series around the Windows Mobile 5.0 Managed API’s

o   Using WM 5.0 forms

o   How to make a phone call inside your own application

o   State & Notification broker fully explained

o   Capturing SMS messages inside your own application

o   Accessing Pocket Outlook functionality

·         A series around multithreading

o   The need for multithreading applications

o   How to properly start and terminate multiple threads

o   Synchronization options

o   Updating UI controls inside multiple threads

o   Why you want to use ThreadPool class functionality

·         Performance issues you have to deal with

o   Creating efficient and fast running applications for mobile devices

o   Understanding the Garbage Collector

o   Looking at the differences between DataSets and SqlCeResultSets

o   Tips & Trips to get the most out of SQL Server Everywhere

·         Object Oriented Development

o   Using Form Inheritance within the .NET CF 2.0

o   Extending the functionality of SqlCeResultSets

This little summary contains just a few items that I feel are worth speaking about. Simply counting the bullets, this should be enough to get us through the end of this year. If you like this idea, have some feedback or if you have other topics you want to explore in small demo’s (not webcasts, but video’s explaining you how to deal with different Windows Mobile 5.0 or Windows CE (5.0 or 6.0) related topics, just drop me an email at maarten@dotnetfordevices.com. I would love to hear your feedback on this plan.


   What is this?01:27 AM
Blog Ref URL:  http://www.dotnetfordevices.com/forum.html#249


Friday, June 23, 2006
If you want to try Windows Vista, don not use my first approach
I was so eager installing Windows Vista on an existing machine that I decided to run it in a Virtual PC. I had not even looked if Virtual PC was supported and after a long, long installation time, I indeed got Windows Vista running. Having said that, it was totally unusable to test drive this new operating system for the first time. First off, installing took a little less than 24 (!) hours. Of course I also installed Office 2007 immediately after installing Windows Vista. Starting and using Microsoft Word was a complete pain. The system was continuously informing me that it was not responding. After a few minutes or so I was able to type another few sentences, after which the same not responding message appeared again. So today I decided to install Windows Vista simply on a separate partition on my not too fast PC. What a difference this made. Installation took a little less than 45 minutes. The whole installation procedure was fine and simple. When I didn’t think ahead and tried to install Windows Vista on a removable disk, hooked up by USB at first, I got a nice warning, informing me that it was unlikely that Windows Vista could boot from this drive. Using a partition on a fixed hard drive in my system made Windows Vista work like a charm though. Right now I am typing this blog entry using Word 2007. It is fast, it looks beautiful and it is definitely user friendly. So far I found only one little problem, actually a problem that is not Windows Vista’s fault. I am using a Bluetooth mouse and keyboard. The recommendations for the keyboard are to give it an automatic passkey. That is what I did under Windows XP. When I installed Vista, I had to add these Bluetooth devices again for Windows Vista. Of course, following the manual I again gave the keyboard an automatic passkey. This was different from the Windows XP passkey for the keyboard, so when I booted into Windows XP, all of a sudden my keyboard was not working. The solution was very, very simple. Instead of using an automatic passkey, provide one yourself (identical on both Windows XP and Windows Vista). It looks like it is time to seriously start testing Windows Vista right now. My first impressions, not running inside a Virtual PC are very positive. Honestly, I can’t wait another six months or so to have a release version available. I want to use this product (and Office 2007 as well) on a daily basis starting today. So far these brand new products bring fun back into my computing life.

   What is this?17:27 PM
Blog Ref URL:  http://www.dotnetfordevices.com/forum.html#248


Thursday, June 22, 2006
Another Webcast coming up

In the future, whenever you see this cool Webcast guy appearing in my blog, you will know that I am about to present yet another MSDN Webcast. It is scary to see the resemblance between this little guy and myself when presenting. It is like looking in the mirror. Anyway, on July 5th at 18.00 GMT (which is 11 AM PST), we are yet again going to talk about creating a Windows Mobile Line-Of-Business application. As a full sample we simply take the RoadAssistance application that we developed over the first three months of this year. All source code + documentation for that particular application is available for download. Since this is a level 200 session, and it is running for only one hour, it is impossible to show the entire application in detail. Therefore this session will be more of an overview of the tools you have available to create a Windows Mobile LOB application using managed code only. As always, we will spice the talk up with a few demo's, after all, they are the most fun to watch and to do. You will see how easy it is to make use of SQL Server Mobile (I should remember to call this SQL Server Everywhere from now on), how to get the most out of Windows Mobile 5.0 devices making use of the Windows Mobile 5.0 managed API's and how to use at least one new cool extension from Microsoft's Patterns & Practises team to deal with different devices, form factors, screen resolutions and screen orientations. Hopefully you are curious enough to reserve a seat. At the end of the Webcast you hopefully have the feeling that you can create entire LOB applications that will run on a Windows Mobile device. I am looking forward to meeting you all via the Internet. To reserve your seat for this presentation today, click here. Oh yes, as a brand new service I will make the sample source code available for download right after the Webcast here on DotNETForDevices. See you on July 5th. 



   What is this?12:25 PM
Blog Ref URL:  http://www.dotnetfordevices.com/forum.html#247


Wednesday, June 21, 2006
RoadAssistance VB.NET version
If you are waiting for the next version of the RoadAssistance application we used in the 13 part MSDN Webcast series from earlier this year you have to be a little more patient. Yesterday, when finishing part 10 of the series in VB.NET I ran into a problem that has been in the VB.NET version since episode 6. It turns out that, as far as I can see so far, identical code to update records in a SQL Mobile table using a SqlCeResultSet runs fine in C# but gives frequent database corruption errors when running in VB.NET. So far I have not found the real problem, but not using the CqlCeResultSet in VB.NET, or limiting the amount of database updates seems to solve the problem. Before releasing episode 10 I first need to figure out what is going on in my VB.NET code. Eventually all episodes of RoadAssistance will be translated in VB.NET, it will just take a little longer. If you ran into similar problems, using a SqlCeResultSet inside a VB.NET application and get database corruption errors, would you mind sharing those errors with me?

   What is this?20:44 PM
Blog Ref URL:  http://www.dotnetfordevices.com/forum.html#246


Tuesday, June 20, 2006
Creating a Windows Mobile Line Of Business Application - The sample code

Between January and March of this year I presented this 13 part MSDN Webcast series on creating a Windows Mobile Line-Of-Business application. You can still listen to the on-demand presentations, but many people are also interested in the sample code and documentation. Since it is taking us some time to publish all downloads on MSDN, I finally decided to make all sample source code + documentation available here on DotNETForDevices as well.

Part 1 of 13: Introduction (Level 200)

RoadAssistance source code - C# 

Part 2 of 13: The .NET Compact Framework (Level 200)

RoadAssistance source code - C#

Additional samples - C#

Part 3 of 13: Windows Mobile 5.0 (Level 200)

Hands-on document

RoadAssistance source code Initial - C#

RoadAssistance source code Final - C# 

Additional samples (Windows Mobile 5.0 API's) - C#

Part 4 of 13: Dealing with Data (Level 200)

Hands-on document

RoadAssistance source code Initial - C#

RoadAssistance source code Final - C# 

Part 5 of 13: Dealing with Data cont. (Level 300)

Hands-on document

RoadAssistance source code Initial - C#

RoadAssistance source code Final - C#

RoadAssistance Database Script

Part 6 of 13: The User Interface (Level 300)

Hands-on document

RoadAssistance source code Initial - C#

RoadAssistance source code Final - C# 

Part 7 of 13: Adding Functionality to the Application (Level 300)

Hands-on document

RoadAssistance source code Initial - C#

RoadAssistance source code Final - C# 

Part 8 of 13: State / Notification Broker and Message Interception (Level 300)

Hands-on document

RoadAssistance source code Initial - C#

RoadAssistance source code Final - C# 

Part 9 of 13: Using Web Services (Level 300)

Hands-on document

RoadAssistance source code Initial - C#

RoadAssistance source code Final - C# 

Part 10 of 13: Accessing Pocket Outlook Data (Level 300)

Hands-on document

RoadAssistance source code Initial - C#

RoadAssistance source code Final - C# 

Part 11 of 13: Targeting Multiple Devices (Level 300)

Hands-on document

RoadAssistance source code Initial - C#

RoadAssistance source code Final - C# 

Part 12 of 13: Application Deployment and Security (Level 300)

Hands-on document

RoadAssistance source code Initial - C#

RoadAssistance source code Final - C# 

Part 13 of 13: Registry Access, Testing and Series wrap-up (Level 300)

Hands-on document

RoadAssistance source code Initial - C#

RoadAssistance source code Final - C# 

From part 3 of the series onwards, you find two different zip files with source code. The first one is the initial solution, in other words, the source code as it is at the beginning of the particular webcast. You can use the hands-on document to create the final solution of that particular episode yourself, or simply download the final solution as well.



   What is this?12:08 PM
Blog Ref URL:  http://www.dotnetfordevices.com/forum.html#245


Friday, June 16, 2006
TechEd 2006 Live Update with The last blog entry from TechEd
As always, on one hand TechEd was a long and exhausting week with lots of new things to learn. On the other hand, it is sad that TechEd 2006 is history already, especially because it will be a while before I am off to my next conference. The next one is most likely Mobile Connections in Las Vegas. What am I going to do, almost five months without a conference to speak at or to attend? Looking back to TechEd, my personal highlights were a number of presentations around Windows Presentation Foundation (WPF). Even though all presenters gave warnings not to overdo User Interfaces for the next generation of applications that will run on Windows Vista, the cool effects you can create using WPF are simply amazing. This is the first blog entry that I actually wrote in Word 2007 on a Windows Vista Virtual PC image, being uploaded to DotNETForDevices using IE7. So I have moved entirely to beta software for the time being. The most important reason is that both at TechEd and at WinHEC I have definitely fallen in love with Windows Vista. I still don’t like the name, but I like the product itself very much. Of course there was much more going on at TechEd. There was the usual split between presentations for IT Pros and Developers and there were a lot of presentations around mobility. It becomes clear that mobile computing is definitely arriving in the main stream right now. Even though there were a few transportation problems to get everybody in time to the conference center each and every day, my overall impression of this year’s TechEd is absolutely positive. If you couldn’t make it this year, you definitely should try to join us next year when TechEd will be held in New Orleans. Besides all technical content, the TechEd party was an absolute blast. They had the band Train performing just for TechEd attendees, what a great concert and what a memory, driving to Fenway Park in school busses, with the whole Boston Police Department blocking all traffic for us. It felt like royalty. This is it for TechEd 2006. From now on you can expect again Windows CE / Windows Mobile related blog entries, as well as entries around my first experiences playing around with WPF.

   What is this?22:25 PM
Blog Ref URL:  http://www.dotnetfordevices.com/forum.html#244


Thursday, June 15, 2006
TechEd 2006 Live Update: The Future of Mobility
This entry will be relatively short, because I am blogging from a mobile device with a small keyboard. However, Ellen Daley's lunch was interesting enough to spent some words about. As a researcher for Forrester Research, she has looked into the future for mobile computing. According to Daley, mobile computing is only at its beginning and will grow tremendously in the upcoming 20 years. Right now it looks like more and more companies are planning to use mobile devices in one form or another. Yet the number one killer application is sill voice, in other words using the device as a phone, email is becomming more popular, but this is definitely true for line of business applications as well. Daley explained that the Blackberry is the number 1 device for email only applications, but that Windows Mobile is the platform of choice for enterprise organizations. Partly because of Windows compatibility, but also because of a wide variety of devices available on the market. According to Daley, this is only the beginning. She also expects tremendous growth in connected embedded devices. To finish with my own words: it seems that the future for Windows CE is bright and shining. This will not only benefit Microsoft, but of course also the device manufacturers and software companies specializing in Windows CE / Windows Mobile.

   What is this?21:20 PM
Blog Ref URL:  http://www.dotnetfordevices.com/forum.html#243


Wednesday, June 14, 2006
Live from TechEd 2006: Windows Vista System Performance Enhancements
Being a mobile and embedded developer, it is sometimes still a lot of fun to see what is going on with other products. One of those is of course hard to miss here at TechEd. There are lots of sessions around Windows Vista, both for developers and for IT Pro's. Things I am particularly interested in for any Windows Operating System have quite often to do with performance. So the talk about Windows Vista Performance Enhancements was a logical one to pick. In this wonderful talk, Matt Ayers explained in a very clear way how memory management has been changed for Windows Vista. He started off by explaining why Windows XP has some issues with performance. It turns out that memory management in Windows XP is all based upon trying to efficiently use a relatively little amount of physical memory in a system. To do so, frequent swaps to hard disks are made. Of course, today, most machines have lots of physical memory, and hard disks are more and more becoming bottlenecks in our systems. In Windows Vista, memory management has changed entirely. Memory management in Windows Vista is called SuperFetch. It is all about monitoring the behavior of a user, and trying to preload applications that a user wants to use. For instance, if I always start Microsoft Outlook at 9 in the morning on workdays when arriving at the office, SuperFetch will make sure that Outlook is already loaded for me, just before I want to start it myself. SuperFetch is pretty smart about monitoring, so it will keep track of different activities during different hours of the day, distinguishes between weekdays and weekends, and so on. Even though this will greatly help performance, the disk is still a slowing down factor. To overcome that, another new cool technology is introduced in Windows Vista. With ReadyBoost it is possible to add a memory key to your system and use it as an additional read cache. Since reading from flash memory is at least 10 times faster than randomly reading data from a disk drive, this will further boost performance. They even have thought about the fact that memory keys might be removed in a live system, then they simply fall back to reading from disk. Oh, the read cach on flash memory will be stored in pages only and the data will be encrypted. Therefore there is no way that somebody stealing a memory key might see what you were doing, what applications you were using and what data you were retrieving from a hard drive. The last thing Ayers talked about is again something brand new. ReadyDrive is a brand new type of hard disk, equiped with some additional flash memory that can act as a write cache. In doing so, writing data to disks will speed up dramatically, again helping overall performance. For mobile computers there is another big advantage. If disk writes are first stored in flash memory, there is no need to keep the disk spinning all the time. This means that power consumption for laptops will be less. Right now the idea is that ReadyDrive can in its first version save between 15 and 30 minutes of battery power. On laptops that typically last one or two hours on batteries that is quite a significant amount of time. Since the disk is not continuously spinning and the disk head not continuously seeking, the life time of the disk itself will also increase. All in all, performance in Windows Vista, especially using all these new technologies, should really be better than performance in Windows XP. Especially since it is also possible to assign I/O priorities to applications, allowing indexing or defragmentation applications to run on lower priorities, giving the end user that is working with other applications a much better experience. I can't wait to have a Windows Vista release candidate (which will probably be a while), to turn my slow Windows XP laptop back into a high flying, fast Windows Vista machine.

   What is this?18:24 PM
Blog Ref URL:  http://www.dotnetfordevices.com/forum.html#242


Live from TechEd 2006: Are you using Consolas yet

This time I will not give you highlights of presentations, but instead, a cool new font to make your life as developer using Visual Studio 2005 better. I guess I should read more developer related blogs, because I only learned about Consolas here at TechEd. Consolas is a ClearType font, so make sure to have ClearType enabled. It is meant to replace the Courier font inside Visual Studio. When you install the font, it will automatically become the default font for Visual Studio 2005. Just in case you are wondering what it looks like:

Hopefully you get an idea what this new font looks like, even though the picture is very small. For me, Consolas will make the time that I am spending in Visual Studio more enjoyable. If you think so too, download Consolas here.



   What is this?03:27 AM
Blog Ref URL:  http://www.dotnetfordevices.com/forum.html#241


Wednesday, June 14, 2006
Live from TechEd 2006: Windows Vista System Performance Enhancements
Being a mobile and embedded developer, it is sometimes still a lot of fun to see what is going on with other products. One of those is of course hard to miss here at TechEd. There are lots of sessions around Windows Vista, both for developers and for IT Pro's. Things I am particularly interested in for any Windows Operating System have quite often to do with performance. So the talk about Windows Vista Performance Enhancements was a logical one to pick. In this wonderful talk, Matt Ayers explained in a very clear way how memory management has been changed for Windows Vista. He started off by explaining why Windows XP has some issues with performance. It turns out that memory management in Windows XP is all based upon trying to efficiently use a relatively little amount of physical memory in a system. To do so, frequent swaps to hard disks are made. Of course, today, most machines have lots of physical memory, and hard disks are more and more becoming bottlenecks in our systems. In Windows Vista, memory management has changed entirely. Memory management in Windows Vista is called SuperFetch. It is all about monitoring the behavior of a user, and trying to preload applications that a user wants to use. For instance, if I always start Microsoft Outlook at 9 in the morning on workdays when arriving at the office, SuperFetch will make sure that Outlook is already loaded for me, just before I want to start it myself. SuperFetch is pretty smart about monitoring, so it will keep track of different activities during different hours of the day, distinguishes between weekdays and weekends, and so on. Even though this will greatly help performance, the disk is still a slowing down factor. To overcome that, another new cool technology is introduced in Windows Vista. With ReadyBoost it is possible to add a memory key to your system and use it as an additional read cache. Since reading from flash memory is at least 10 times faster than randomly reading data from a disk drive, this will further boost performance. They even have thought about the fact that memory keys might be removed in a live system, then they simply fall back to reading from disk. Oh, the read cach on flash memory will be stored in pages only and the data will be encrypted. Therefore there is no way that somebody stealing a memory key might see what you were doing, what applications you were using and what data you were retrieving from a hard drive. The last thing Ayers talked about is again something brand new. ReadyDrive is a brand new type of hard disk, equiped with some additional flash memory that can act as a write cache. In doing so, writing data to disks will speed up dramatically, again helping overall performance. For mobile computers there is another big advantage. If disk writes are first stored in flash memory, there is no need to keep the disk spinning all the time. This means that power consumption for laptops will be less. Right now the idea is that ReadyDrive can in its first version save between 15 and 30 minutes of battery power. On laptops that typically last one or two hours on batteries that is quite a significant amount of time. Since the disk is not continuously spinning and the disk head not continuously seeking, the life time of the disk itself will also increase. All in all, performance in Windows Vista, especially using all these new technologies, should really be better than performance in Windows XP. Especially since it is also possible to assign I/O priorities to applications, allowing indexing or defragmentation applications to run on lower priorities, giving the end user that is working with other applications a much better experience. I can't wait to have a Windows Vista release candidate (which will probably be a while), to turn my slow Windows XP laptop back into a high flying, fast Windows Vista machine.

   What is this?18:24 PM
Blog Ref URL:  http://www.dotnetfordevices.com/forum.html#242


Live from TechEd 2006: Are you using Consolas yet

This time I will not give you highlights of presentations, but instead, a cool new font to make your life as developer using Visual Studio 2005 better. I guess I should read more developer related blogs, because I only learned about Consolas here at TechEd. Consolas is a ClearType font, so make sure to have ClearType enabled. It is meant to replace the Courier font inside Visual Studio. When you install the font, it will automatically become the default font for Visual Studio 2005. Just in case you are wondering what it looks like:

Hopefully you get an idea what this new font looks like, even though the picture is very small. For me, Consolas will make the time that I am spending in Visual Studio more enjoyable. If you think so too, download Consolas here.



   What is this?03:27 AM
Blog Ref URL:  http://www.dotnetfordevices.com/forum.html#241


Tuesday, June 13, 2006
TechEd 2006 Live Update: Windows Vista Kernel changes

As always, it was fun to attend a session presented by Mark Russinovich and David Solomon. These guys are funny and they know a lot about the internals of each Microsoft Windows NT based operating system, including Windows Vista. I wish I had enough time to explore Windows CE to such a level as they do with desktop and server based operating systems. According to Russinovich and Solomon, the Windows Vista kernel is changed quite a bit, and all those changes are good. The operating system is much more secure and really allows applications to run without administrator privileges. For application compatibility the Windows folder and parts of the system registry are virtualized. If an application decides to write files to the Windows folder, in fact those files are written to a different private location for a particular user. Of course they immediately spotted a problem with that. Suppose an application is writing foo.txt to the Windows folder. In fact it will be stored somewhere else and even though it seems the file exists, trying to open it with Notepad results in a “file not found” message. The reason for that is that Notepad is currently unaware of the virtualization of the Windows folder. Since Windows Vista is still in beta, problems like this are likely to be solved before RTM. Most dramatic changes are in support for playing multi-media files. In Windows Vista this will all happen without glitches, thanks to the fact that an application needing to play streaming files can reserve an amount of processor bandwidth. The remaining bandwidth will then be shared by other processes in the system, giving a great experience of playing multimedia files. Something similar is happening to the IO system. Today, when for instance your hard drive is indexed to allow faster searches, the disk is spinning continuously and the indexing algorithm more or less runs on the same priority as everything else in the system. In Vista this will change. Activities like indexing will, defragmenting etc. will run on a very low priority. The work will still be done although it might take a little longer, but the overall performance of Windows Vista, thus the end user experience, will be improved a lot. These are just a few samples of all kinds of kernel improvements. When I finally have Windows Vista beta2 installed I definitely will try to cover more of the product. Right now I am inspired to dig as deep as Russinovich and Solomon did in the Windows CE 6.0 kernel. Who knows, it might even result in a number of blog entries.



   What is this?15:35 PM
Blog Ref URL:  http://www.dotnetfordevices.com/forum.html#240


Monday, June 12, 2006
Live from TechEd 2006: The Patterns and Practices team found their way to Mobile Devices

I should have blogged about this weeks earlier, but it was cool to see that Patterns and Practises is strongly present here at TechEd 2006 in Boston. Ed Jezerski and Eugenio Pace gave two talks today on their Patterns and Practices for Windows Mobile 5.0 Application Architecture work. The first talk was targeted towards developers with lots of sample code. The software factory they introduced here at TechEd is based on similar work for the desktop to create smart client applications, yet it is developed with the limitations of Windows Mobile devices in mind. Particularly interesting are their connection monitoring block and the DynamicResolution control. The connection monitoring block allows you to choose between different connections, set properties for costs of the connection and reliability of the connection and so on. In case you can choose between different connections you can make sure to always for instance have select the cheapest connection available. The DynamicResolution control allows for easy dealing with different form factors and screen orientations on devices, without the need to duplicate code or do other work yourself. Their second talk was sort of a high level architectural overview of the Windows Mobile Software Factory. This talk was less interesting than the first one, probably because they gave all the good things already away in the first talk. The people responsible for scheduling sessions at TechEd should have changed the order of these two presentations, than it would have been perfect. Since this cool material is now available from P&P, I guess there is no escape possible. Yes, as soon as I have finished translating the Windows Mobile LOB application that we used during the 13 part MSDN Webcast series earlier this year into Visual Basic.NET, I will yet make another translation or mainly do a re-design of that same application, incorporating the work of the Patterns & Practices team.



   What is this?22:53 PM
Blog Ref URL:  http://www.dotnetfordevices.com/forum.html#239


Finally, blogging again: Live from TechEd
It has been a long time since I last blogged or even wrote a column for DotNETForDevices, but hey, I am back this week, live from Boston for TechEd 2006. Last week we had a blast at MEDC Europe, this week I sort of feel useless. This is the first conference in a while where, so far, I am just attending, a weird feeling to begin with. More about feelings. Gosh, I will never let Windows CE and Windows Mobile down, but after the first session I attended this morning, an introduction on Windows Presentation Foundation, I feel sort of a loser. What great stuff these Windows XP / Windows Vista / Windows 2003 Server folks have. Robert Relyea gave a great intro on WPF, if you want to know more about this cool stuff to create great user interfaces that will blow everybody away, make sure to check out his blog and, since all this cool new stuff is available in beta right now, start playing with it. I know for sure that I will. And of course, yes, I want to have all this new functionality on my Windows Mobile device as well. Talking about mobility. This TechEd has quite a few sessions on Windows Mobile, right now the Patterns and Practises session on their Windows Mobile Baseline Architecture Toolkit is about to begin. This will be a great chance to meet some of the folks I have had conference calls with over the last 2 or 3 months or so. More about this session will definitely follow later.

   What is this?16:39 PM
Blog Ref URL:  http://www.dotnetfordevices.com/forum.html#238


Monday, June 12, 2006
Live from TechEd 2006: The Patterns and Practices team found their way to Mobile Devices

I should have blogged about this weeks earlier, but it was cool to see that Patterns and Practises is strongly present here at TechEd 2006 in Boston. Ed Jezerski and Eugenio Pace gave two talks today on their Patterns and Practices for Windows Mobile 5.0 Application Architecture work. The first talk was targeted towards developers with lots of sample code. The software factory they introduced here at TechEd is based on similar work for the desktop to create smart client applications, yet it is developed with the limitations of Windows Mobile devices in mind. Particularly interesting are their connection monitoring block and the DynamicResolution control. The connection monitoring block allows you to choose between different connections, set properties for costs of the connection and reliability of the connection and so on. In case you can choose between different connections you can make sure to always for instance have select the cheapest connection available. The DynamicResolution control allows for easy dealing with different form factors and screen orientations on devices, without the need to duplicate code or do other work yourself. Their second talk was sort of a high level architectural overview of the Windows Mobile Software Factory. This talk was less interesting than the first one, probably because they gave all the good things already away in the first talk. The people responsible for scheduling sessions at TechEd should have changed the order of these two presentations, than it would have been perfect. Since this cool material is now available from P&P, I guess there is no escape possible. Yes, as soon as I have finished translating the Windows Mobile LOB application that we used during the 13 part MSDN Webcast series earlier this year into Visual Basic.NET, I will yet make another translation or mainly do a re-design of that same application, incorporating the work of the Patterns & Practices team.



   What is this?22:53 PM
Blog Ref URL:  http://www.dotnetfordevices.com/forum.html#239


Finally, blogging again: Live from TechEd
It has been a long time since I last blogged or even wrote a column for DotNETForDevices, but hey, I am back this week, live from Boston for TechEd 2006. Last week we had a blast at MEDC Europe, this week I sort of feel useless. This is the first conference in a while where, so far, I am just attending, a weird feeling to begin with. More about feelings. Gosh, I will never let Windows CE and Windows Mobile down, but after the first session I attended this morning, an introduction on Windows Presentation Foundation, I feel sort of a loser. What great stuff these Windows XP / Windows Vista / Windows 2003 Server folks have. Robert Relyea gave a great intro on WPF, if you want to know more about this cool stuff to create great user interfaces that will blow everybody away, make sure to check out his blog and, since all this cool new stuff is available in beta right now, start playing with it. I know for sure that I will. And of course, yes, I want to have all this new functionality on my Windows Mobile device as well. Talking about mobility. This TechEd has quite a few sessions on Windows Mobile, right now the Patterns and Practises session on their Windows Mobile Baseline Architecture Toolkit is about to begin. This will be a great chance to meet some of the folks I have had conference calls with over the last 2 or 3 months or so. More about this session will definitely follow later.

   What is this?16:39 PM
Blog Ref URL:  http://www.dotnetfordevices.com/forum.html#238


Friday, March 17, 2006
Creating a Windows Mobile Line-Of-Business Application, now in Visual Basic.NET as well
First off, let me thank everybody who is attending our 13 part series on creating a Windows Mobile Line-Of-Business application week after week. For those of you who are interested in the sample code in Visual Basic.NET I do have some good news. Right now, source code in Visual Basic.NET is available for the first three episodes of the series. We will publish the sample code in Visual Basic.NET on MSDN in the not too far away future, but for those of you who can't wait to get access to the source code in Visual Basic.NET, just send me an email and I'll make sure to mail you the sample code that is available so far. I will keep you informed about availability of more Visual Basic.NET source code through this blog.

   What is this?23:49 PM
Blog Ref URL:  http://www.dotnetfordevices.com/forum.html#237


Wednesday, February 8, 2006
Issue with the sample code of part 6 of my webcast series

When you attended part 6 of our MSDN Webcast series on how to create a Windows Mobile line of business application and you try the sample code yourself, you might run into a problem. Here is the deal. If you run the solution that you will find under the folder 20060208\RoadAssistance.final as it is, you will run the sample code without the RoadAssistance.dbf file deployed to the device. This is fine if you had a previous version of RoadAssistance running on your device or on the emulator, but if not, you will get an exception. To solve this problem, you should take a look at the properties of the RoadAssistance.dbf file in solution explorer where you will see that the "Copy to output directory" property is set to "do not copy". This was for me to not overwrite my database with an empty one for the live demonstration. If you change this to "Copy if newer", the RoadAssistance database will be deployed to your device together with the application and it should run fine then.



   What is this?22:46 PM
Blog Ref URL:  http://www.dotnetfordevices.com/forum.html#236


Monday, January 9, 2006
A Webcast series you should not miss

Last week was the kick-off, but there are still 12 episodes to go. During a 13 part MSDN Webcast series you can learn how to develop a line-of-business application that will run on a Windows Mobile 5.0 device. During the series we will create a full functioning sample application. To demonstrate the capabilities of Windows Mobile Devices and the current suite of development tools like Visual Studio 2005 and SQL Server 2005 Mobile Edition, you will get a step-by-step introduction to create the following line-of-business sample application:

 

RoadAssistance: An emergency car repair application for a fictitious emergency road service (like AAA). The application will typically run on a Windows Mobile device and assists a repair person that is on the road. The application can be used to

 

  • Lookup member information (finding out if members are entitled to receive emergency repair service) using SQL Mobile 5.0
  • Register new members (in case somebody needs the service and decides to become a member of the organization)
  • Create a damage report (using pre-defined strings as much as possible to limit the amount of data entry on site)
  • Keep track of working hours of the service engineer (distinguish between driving hours and actual repairing hours)
  • Lookup local body / repair shops in Contact Information in case a problem can not be solved on the road
  • Use telephony / SMS to setup an appointment with a local body / repair shop
  • Receive assistance calls (automatically triggering the application to become active, so details can be filled out) or alternatively, receive an SMS message with assistance details (which can be auto-filled in the application)
  • Use MapPoint webservice in combination with location API’s to find the fastest route to the stranded car
  • Prepare invoice information for the customer (to be processed by the back-end server)

On Wednesday January 11th, you can attend the second part of this Webcast series at 11.00 AM PST. In this particular Webcast we will introduce the .NET Compact Framework 2.0. Here is the abstract:

 

Creating a Windows Mobile LOB application – The .NET Compact Framework

 

In a series of 13 MSDN Webcasts you will learn how to create a line of business application that will run on a Windows Mobile device. In this second part of the series you will get an introduction to the .NET Compact Framework 2.0, that ships with Visual Studio 2005. You will learn about functionality available in the .NET CF 2.0 and how to deploy it to a device. You will get a high level overview of the capabilities of the .NET CF 2.0, specifically targeted to the RoadAssistance application that is developed throughout this Webcast series.

 

Simply sign up by clicking the link. Hopefully we meet on Wednesday.


   What is this?22:39 PM
Blog Ref URL:  http://www.dotnetfordevices.com/forum.html#235


Thursday, December 29, 2005
New Year resolutions around Windows Mobile?

Of course I don't know about your New Year's resolutions, but since you are reading this blog just before the beginning of a brand new year, there is a chance that you want to develop applications for Windows Mobile devices. This might just be your lucky day. With Windows Mobile 5.0 device out on the market, and with Visual Studio 2005 as well as SQL Server 2005 Mobile Edition released last month, it is time to get serious about creating Line of Business applications for these powerful devices.

During a 13-part Webcast series between January 2006 and March 2006 you have the chance to step-by-step learn how to develop a complete Windows Mobile LOB application. Attending the series you will get familiar with

  • creating a managed Windows Mobile 5.0 Pocket PC / SmartPhone application using Visual Studio 2005 and the .NET Compact Framework 2.0
  • making use of SQL Server 2005 Mobile on the device
  • synchronizing data between a back-end server and a device
  • using asynchronous methods and multithreading for better user experiences
  • consuming Web Services on the device
  • using Windows Mobile  5.0 managed API’s for notifications; accessing Outlook Mobile; making phone calls; sending and receiving SMS messages; capturing pictures with a built-in camera

Our first appointment will be on Wednesday January 4th, 2006 at 18.00 GMT. Seats are limited so make sure to sign-up now.



   What is this?17:25 PM
Blog Ref URL:  http://www.dotnetfordevices.com/forum.html#234


Thursday, December 1, 2005
More Webcasts

Even though these webcasts are primarily targeted to Microsoft US partners, there is a ton of information in the series that will benefit all Windows Mobile developers. It is kind of funny that a guy from The Netherlands is involved in this series, so I have decided to share this information with the rest of the world as well. If you want to know all about developing line-of-business applications using Windows Mobile 5.0 devices, using the .NET Compact Framework 2.0 and SQL Server 2005 Mobile Edition, make sure to attend these webcasts that will be aired between December 12 and December 15. Each webcast will start at 3 PM PST (which will be midnight for me, but I’ll make sure to be wide awake). In four separate Webcasts we will inform you about these topics:

 

  1. 1. Business Reasons for building Windows Mobile applications
    2. Introduction to VS 2005 for Devices and SQL Server 2005 Mobile Edition
    3. Service Orientated Architecture and Windows Mobile
  2. 1. Exploring and explaining the most important namespaces (both CF 2.0 and WM 5.0)
    2. Creating and using a SQL Server Mobile database (using VS 2005).
    3. Discuss the difference between DataSets and SqlCeResultSets
    4. Synchronization with the back office
  3. 1. Introduction to Windows Mobile 5.0 Devices
    2. Dealing with persistent storage on Windows Mobile 5.0 Devices
    3. Exploring the capabilities of Windows Mobile 5.0 devices, e.g. Capturing SMS messages, make phone calls, use notification API’s
  4. 1. Porting PocketPC applications to a SmartPhone
    2. Using COM Interop to incorporate existing COM components
    3. Demo of a sample Line-Of-Business application
    4. Use Camera / Phone API’s from within managed code
    5. Round-up of the series.

To sign up for these webcasts, simply click the following links:

 

ISV Touchdown Web Seminar: Introducing Windows Mobile and the .NET Compact Framework

ISV Touchdown Web Seminar: Architecting Windows Mobile Solutions with SQL Server

ISV Touchdown Web Seminar: Windows Mobile 5.0 API’s  to Build Line of Business Applications

ISV Touchdown Web Seminar: Porting and Interop in Windows Mobile 5.0

I am honored to co-present the series with Rodney Bowen-Wright, who is a Microsoft ISV DE Manager, based in San Francisco. This series is also a great introduction to a 13 part series that is scheduled between January 2006 and March 2006 in which we will be talking about developing a line-of-business application for Windows Mobile 5.0 devices. More details about that series will follow shortly.



   What is this?02:19 AM
Blog Ref URL:  http://www.dotnetfordevices.com/forum.html#233


Monday, November 7, 2005
What's new in C# 2.0 for mobile device developers?

If you want to know more about new C# 2.0 features that can be used when developing managed applications for Windows Mobile devices, don't forget to tune in today to our MSDN Webcast covering this topic. Please note that this Webcast will be aired one hour earlier than my usual time slot, so we begin already at 10 AM PST, which is 18.00 GMT. Hopefully we meet in a few hours.

If you want to learn more about Visual Studio 2005 and SQL Server (Mobile Edition) 2005, you can find tons of interesting Webcasts by simply clicking on the picture.



   What is this?07:32 AM
Blog Ref URL:  http://www.dotnetfordevices.com/forum.html#232


Tuesday, November 1, 2005
The risk of not knowing what you are doing

In preparation for a MSDN Webcast series which will cover creating a Windows Mobile 5.0 Line-of-Business application I ran into an interesting problem due to auto-generated code. Let me first tell you that the auto-generated code itself does not contain errors. It is cool to make use of code that is generated for you because it saves lots of work. However, if you don’t completely know what code is generated, you can spent some significant time debugging code and trying to understand what is going on. That is exactly what happened to me today. For the application I am developing, I am using a DataSet that is filled by a SQL Mobile database. The DataSet contains one single table, an exact representation of the underlying table in the SQL Mobile database. Visual Studio 2005 has this cool feature that you can automatically generate some forms that can display and edit this data using the DataSet as you can hopefully see in the picture.

 

 

The problem I ran into has to do with the fact that the datagrid (shown in the picture) is not the main form in the application, but this form is displayed when the user clicks a button on a main form. Here the problems began. Showing data and adding new data worked fine initially. However, when the form containing the datagrid was closed and reopened again it was not possible anymore to add new data to the DataSet. This looked like a complete mystery, but studying the auto-generated code showed that adding new data is achieved in an “EditViewDialog” that is autogenerated and that makes use of a singleton pattern, expecting a DataSource during initialization. To make the code of the application nice and clean (trying to limit memory use) I decided to create a new instance of the form containing the datagrid, each time the user decides to view or add data to the particular table. Creating a new instance of that form also meant creating a new instance of a DataSource, with the underlying edit form still having another instantiation of the DataSource (to be specific, the original DataSource that was passed to that form when the singleton was created). This caused an inconsistency in DataSource objects. For the user this meant that it was not possible to add new data to the database, except for the first time. The solution to this problem turned out to be very simple, after a few hours of debugging and trying to understand what was going on. Instead of instantiating new forms containing the datagrid control, I kept one single instance of this form available in the main form. This solved the problem. The point I am trying to make here is that auto generated code can save you a lot of work, but you still have to understand what is going on under the covers. I guess that distinguishes a great developer (all of you) from an average or ordinary developer (apparently me).

There are many other things to learn about SQL Server 2005 (Mobile Edition) and Visual Studio 2005. This month you have a great opportunity to attend a large number of live MSDN Webcasts around these products. Take a look here, pick the Webcasts you are interested in and make sure to attend them live.



   What is this?00:14 AM
Blog Ref URL:  http://www.dotnetfordevices.com/forum.html#231


Monday, October 24, 2005
Announcing Launch 2005!

Around the launch of Microsoft Visual Studio 2005, Microsoft SQL Server 2005, and Microsoft BizTalk Server 2006 on November 7, 2005, we are running 90 different webcasts in the month November around these new products. This is a great opportunity for you to learn a lot about all these great new releases. Simply click on the image for more details:



   What is this?21:49 PM
Blog Ref URL:  http://www.dotnetfordevices.com/forum.html#230


Monday, October 17, 2005
Upcoming Webcasts

Here is the line-up for a number of upcoming MSDN Webcasts. I really hope you will join one of these that we are running for the release of Visual Studio 2005.

  • Use Multithreading to Create Better Responding Smart Client Applications
    Do you often find yourself looking for ways to improve the performance of your smart client applications? With the processing power available in today's personal computers, it makes sense to consider whether splitting up your application into multiple threads will improve performance. In this demonstration-loaded webcast, we show you how to create multithreaded applications using functionality that is provided in the Microsoft .NET Framework. Learn how to properly create and terminate threads, and how to update user interface controls properly from inside worker threads. Find out how to choose between Thread and Thread Pool objects, and learn when it is necessary to synchronize multiple threads with each other.
  • What's New for Multithreaded Applications in the .NET Compact Framework 2.0?
    Version 2.0 of the Microsoft .NET Compact Framework offers more functionality out of the box to help you develop managed, multithreaded applications. This webcast examines the differences between version 1.0 and version 2.0 of the .NET Compact Framework with a focus on multithreaded capabilities. Learn how to properly create and terminate threads, use synchronization objects effectively, and update user interface controls asynchronously from inside worker threads. This webcast has many code samples that will give you a head start when you develop multithreaded applications for mobile and embedded devices using Microsoft Visual Studio 2005 and the .NET Compact Framework version 2.0.
  • Using C# 2.0 Language Features in .NET Compact Framework 2.0 Applications
    You can create code that performs better and is more readable, compact, and type safe by using the new features of the Microsoft Visual C# development tool that are available in Microsoft Visual Studio 2005. This webcast explores the features you can use in your managed Microsoft .NET Compact Framework 2.0 applications. Using a sample multithreaded application, we will explore the possibility of using anonymous methods, delegate inference, generics, and iterators. This webcast is loaded with samples and is a "must" for every software developer who creates applications for Microsoft Windows CE devices and wants to prepare for the next version of Visual Studio.

These are the ones I will be presenting in a few weeks. Hopefully we'll meet during one or more of these webcasts. Here are two more recommendations. Jim Wilson will be presenting two webcasts on Windows Mobile 5.0 in November as well. If you have heard Jim speaking you know that you "must attend" these webcasts. If you never had the chance to hear Jim speaking you definitely should check out these webcasts:

  • Introduction to the New Managed APIs in Windows Mobile 5.0
    This webcast introduces the new managed application programming interfaces (APIs) in Microsoft Windows Mobile 5.0. Step-by-step demonstrations show you how to improve on an existing application by making use of these new interfaces. Tune in to learn how to use these APIs to simplify your existing code or extend your existing applications to make use of the many new capabilities in Windows Mobile 5.0.
  • Introduction to the New Native APIs in Windows Mobile 5.0
    This webcast provides an introduction to the new native application programming interfaces (APIs) in Microsoft Windows Mobile 5.0. See demonstrations that walk you through improving on an existing application by making use of these new interfaces. Discover how to use these APIs to simplify your existing code or extend your existing applications to make use of the many new capabilities in Windows Mobile 5.0.

Hopefully we will meet during these or other MSDN Webcasts.



   What is this?01:40 AM
Blog Ref URL:  http://www.dotnetfordevices.com/forum.html#229


Wednesday, October 12, 2005
New MSDN Articles

If you want to know more about COM Interop in version 2.0 of the .NET Compact Framework, make sure to check out this MSDN article: Using COM Interop in the .NET Compact Framework 2.0. Of course it wouldn't hurt me if you rate the article high enough :-). Together with this whitepaper, there is also a self-paced hands-on-lab on the same subject available: Incorporating COM Objects into your .NET Compact Framework 2.0 Application. This HOL gives you step by step instructions of how to use COM inside a managed device application. If the samples of this HOL look familiar after reading the whitepaper as well, you understand it wouldn't hurt me either to rate this article high enough as well :-). Happy reading and programming!



   What is this?23:05 PM
Blog Ref URL:  http://www.dotnetfordevices.com/forum.html#228


Sunday, October 9, 2005
Mark your calendars!

That is, if you are interested in something new we are trying to do during an upcoming MSDN webcast. This upcoming Wednesday (October 12, 11.00 AM PST) we are taking a little different approach during a live MSDN webcast. The topic is “Incorporating COM Objects into Your .NET Compact Framework 2.0 Application”. Make sure to sign up following the link. This webcast will have less Powerpoint slides and more code samples. As a matter of facts, it will mostly be an instructor led hands-on-lab. Since we only have an hour, we can’t finish an entire lab, so we will show you some highlights, but the very cool part of this webcast is that the lab will be available online, hopefully by the time of the webcast. This means that you can read along through the manual, perhaps even run the lab together with me. We will have to find out how this all works, but at least you have the possibility to run the lab at your own pace after the webcast as well. I’ll get you the link to the lab as soon as it is live, hopefully before the webcast on this blog, otherwise during the webcast. Since we have only one hour, these are the topics we are going to cover:

 

  • Using an existing COM object in a .NET CF 1.0 application (no live coding but you will get an idea how hard this is to achieve)
  • Using an existing COM object in a .NET CF 2.0 application (no coding of the COM object, only using it, although the lab manual guides you through creating the COM object itself as well)
  • Using Pocket Outlook functionality in a .NET CF 2.0 application (heavily making use of COM Interoperability)
  • Using Windows Mobile 5.0 managed API’s to access Pocket Outlook (to make it really easy to use Pocket Outlook functionality in your own application)

The last item is probably optional, since I don’t have a clue yet how fast time will run out on us, doing a whole bunch of live coding. Since this is something new, I am starting to feel nervous already, so this is your chance! Come and join this webcast, meet a nervous speaker and hopefully learn a whole bunch of cool things you can do with the .NET Compact Framework 2.0 and with the Windows Mobile 5.0 managed API’s. We will make use of the latest version of Visual Studio 2005 currently available (RC1) which is a first and last time as well. By the time my next webcast is due I expect to run the released version, no longer in a Virtual PC, but on the real thing, with the capability to actually deploy sample code on real devices. Oh, in case you are wondering who is talking to you, just take a look here. Thank you George for the cool plug.



   What is this?12:29 PM
Blog Ref URL:  http://www.dotnetfordevices.com/forum.html#227


Friday, September 2, 2005
Webcasting live from PDC

It's just around the corner so if you are attending PDC you better start planning what you are doing on Wednesday September 14 at 11.00 AM. You have the chance to attend our Windows Mobile Webcast in person when you are in Los Angeles. The webcast is titled "Using Managed API’s for Windows Mobile 5.0 Devices". During this webcast, as always filled with demos, you can learn how to get access to Pocket Outlook data items like Contacts, Tasks and Appointments inside your managed application, how to intercept SMS messages and much much more. More details on the location will definitely be published on the MSDN Webcasts Weblog and of course also here on DotNETForDevices. Oh, this is a definite "must read". Thank you for this great plug, Bryan.

 



   What is this?00:17 AM
Blog Ref URL:  http://www.dotnetfordevices.com/forum.html#226


Monday, August 22, 2005
Two Webcasts coming up

The upcoming week is once again "multithreading" week for me. I am especially excited about the upcoming Webcast on August 26, when we are going to talk about multithreaded application development to create better responding smart client applications. Even though this will be sort of an introduction into multithreading, it is very cool to target the full .NET Framework this time instead of the .NET Compact Framework. I wonder how many times I will make the mistake in the presentation to talk about .NET CF instead of the full framework. However, multithreading will become more and more relevant for .NET Framework developers, especially with the arrival of multicore processors, that can truly benefit from multithreaded applications. Also, in the area of smart clients, multithreading sometimes will make sense, for instance to create better respondig UI's and also for connectivity strategies. I hope you will be able to join us on August 26 at 1 PM PST (that is 21.00 GMT).

The next one is a few days later, on August 31, when we are talking about new features for multithreaded applications in the .NET Compact Framework 2.0. This Webcast is one in the series of best MEDC talks, but even if you were at MEDC earlier this year, you might still get a few new things out of this webcast. So we should setup another appointment to meet, that is August 31 at 11 AM PST (19.00 GMT).

Oh yes, you will not be bored with PowerPoint slides only, during both Webcasts you will see lots of demonstrations, and as always, the sample code is available to you on request.



   What is this?23:00 PM
Blog Ref URL:  http://www.dotnetfordevices.com/forum.html#225


Thursday, July 28, 2005
A Webcast beyond the .NET Compact Framework

So far I had a few doubts about the exact date, but right now the date is set. Perfect timing, given the fact that there is an article in the August 2005 MSDN Magazine on multithreading. On August 26 we are going to talk about multithreading for the full .NET Framework. Don't let the "smart client application" part of the Webcast title scare you. Basically this Webcast will be an introduction to multithreading application development, not too difficult being a level 200 presentation. Here is the abstract as listed on the MSDN website:

Do you often find yourself looking for ways to improve the performance of your smart client applications? With the processing power available in today's personal computers, it makes sense to consider whether splitting up your application into multiple threads will improve performance. In this demonstration-loaded webcast, we show you how to create multithreaded applications using functionality that is provided in the Microsoft .NET Framework. Learn how to properly create and terminate threads, and how to update user interface controls properly from inside worker threads. Find out how to choose between Thread and Thread Pool objects, and learn when it is necessary to synchronize multiple threads with each other. 

 

For sure, there will be a lot of sample code in the Webcast, and of course you can get your hands dirty on the sample code after the Webcast. The samples will be amazingly simple, but hopefully they show you a lot of pittfalls you have to deal with when developing multithreaded applications. Multithreading adds complexity to every application, but I am hoping that this Webcast will help demistify this topic. Make sure to sign up for the Webcast. Hopefully I will 'see' you on August 26.

 



   What is this?01:19 AM
Blog Ref URL:  http://www.dotnetfordevices.com/forum.html#224


Friday, July 8, 2005
Check out the MSDN home page

Sometimes the MSDN staff really knows how to make me feel good. After a lot of work initally and reviewing afterwards my whitepaper on multithreading is online on MSDN. Of course I bragged about that already earlier this week. However, it is particulary cool that the article made the MSDN home page, so check it out on MSDN's home page while it's there.



   What is this?10:10 AM
Blog Ref URL:  http://www.dotnetfordevices.com/forum.html#223


Wednesday, July 6, 2005
Check out this article on multithreading applications for the .NET CF

If you check out MSDN you will find a brand new article on developing multithreaded applications for the .NET Compact Framework. The article explains a lot of basics you need to think about when you are making use of multithreading. Right now, the article is written around version 1.0 of the .NET Compact Framework. Even though the .NET Compact Framework version 2.0 has richer support for multithreaded applications, a lot of the content of this article will still be valid. So even if you are considering using the .NET CF 2.0 (and you should), you might still benefit from reading this article. Oh, and don't be shy, evaluate the article as well. If you like it, please let the MSDN folks know, but also if you don't like it. Your feedback will help the people that are responsible for putting content on MSDN to get the best content on there. Of course it doesn't hurt me if the scores are on the higher side, but I definitely leave that up to you.



   What is this?18:40 PM
Blog Ref URL:  http://www.dotnetfordevices.com/forum.html#222


Friday, July 1, 2005
Just in case you missed it

Last Tuesday we had a Microsoft Executive Circle Webcast on multithreaded application development for mobile devices. Because it has been way too busy over the last few weeks I did not have the chance to announce the Webcast on this blog. However, if you are a business decision maker and want to find out what multithreading is all about and what your possibilities are to develop multithreaded applications for Windows Mobile devices with the .NET Compact Framework, you can still listen to the webcast. Simply follow this link.



   What is this?20:38 PM
Blog Ref URL:  http://www.dotnetfordevices.com/forum.html#221


Friday, June 10, 2005
TechEd 2005 is history

Since DotNETForDevices mainly targets mobile and embedded device development it makes most sense to summarize TechEd in this area. The mobility track during TechEd was a little limited, but the quality of the presentations was very high. Things to especially look out for are the presentations of Steven Pratschner about memory management for the .NET CF and about performance of managed applications. These presentations contain lots of valuable information and in my opinion should be a "must attend or watch" to get most out of your managed applications. Understanding these topics will allow you to create much better performing applications, sometimes by applying only minor changes to applications. Another great presentation was the one by Lary Lieberman titled "Power tips and tricks for mobile device developers". Especially if you are working a lot with the emulator (and who isn't?) this presentation contains lots of valuable information. If you want to know what different options are available for data storage on mobile devices you need to check Ginny Gaughey's session, which covered this topic very thorough, including a number of performance aspects for a number of available options. If you couldn't make it to TechEd and still are interested in these sessions, there is a great offer to purchase the conference DVD for $195. This might look like a lot of money, but it really is not. This DVD will contain speaker audio, linked with the Powerpoint slide decks of all presentations, which means hundreds of hours of technical content that will help you do your work better. Absolutely something to consider.

 

Presentations I liked best at TechEd were Anders Hejlsberg's talk on C# 2.0, Jeffrey Richter's talk on CLR internals, in which Jeffrey managed to explain the working of the Garbage Collector in 1 minute and 3 seconds (all the time he had left in his presentation), and Don Box during a lunch session, mainly talking about … Don Box.

 

My one single favorite quote from all the presentations I attended: "The C# compiler is a liar", by Jeffrey Richter. I might write more about this in the upcoming column on DotNETForDevices.



   What is this?18:51 PM
Blog Ref URL:  http://www.dotnetfordevices.com/forum.html#220


Thursday, June 9, 2005
KillerApp in action

Unbelievable but true. I have had questions about my great SmartPhone application, so I have decided to share the source code of v1 of the application on the blog. As you can see, it not only contains some cool functionality, but the entire application also fits completely inside the edit window of Visual Studio 2005. Now that is some clear and easy to maintain code. Oh, to proof that it really runs I have also included a screen dump of my brand new Windows Mobile 5.0 powered Smartphone.

KillerApp source in Visual Studio 2005

KillerApp running in a WM 5.0 Smartphone (emulator)



   What is this?18:16 PM
Blog Ref URL:  http://www.dotnetfordevices.com/forum.html#219


What's wrong here?

I thought I had it all figured. Working at TechEd in Orlando would be the big breakthrough. Since I have booth duties at the Microsoft Windows Mobile booth in the exhibition area I thought this would be a great opportunity to introduce my latest and greatest killer application for Smartphone. What a chance! Around 11.000 people would be able to see this wonderful application. And even better, I can show how to create the application using Visual Studio 2005 on the fly. Of course that does not mean that the application is simple. It is just a great opportunity for everybody to see a developer in action. Since cooler Smartphones become available by the day, probably really boosted thanks to the arrival of Windows Mobile 5.0 I thought it would be best to target Smartphones. So my initial thought was to create an application that would run when the device is switched on. It would sort of contain a nice welcome message to the owner of the device. So after switching the device on, you could see this message: “Hello, world!”. I even asked a number of friends to beta test this application for me. It turned out nobody found an error in it, so I was very excited. The fact that I was using Visual Studio 2005 must have helped that no errors showed up during beta testing. After all, Visual Studio 2005 has very cool integrated test possibilities, so I even wrote my own unit tests. Maybe it also helped that the entire application consists only of one line of code that I had to enter myself:

 

MessageBox.Show(“Hello, World!”);

 

You can probably see that I am desperate here. I am even giving away my intellectual property. I wonder if I am not charging enough for this application, after all, serious applications are expensive and I am only charging $100 for this cool application. After some thoughts, I decided to start all over from the beginning. After all, my target device is a Smartphone, so maybe it would be necessary to make the application a little smarter as well. So I thought about a way to create a real personal message for the user. So I created a little extension to the application that first asks for the user’s name after which the user would be greeted by the phone with his or her own name. And I started an advertising this new product, telling everybody that this cool application with much more functionality than v1 would be sold for the same price. It didn’t work either. Back to the drawing board. So in my last version I thought I really needed to be modern and use some XML to store the user’s name permanently. This time it is only necessary to enter your name once and every time you switch on the phone it greets you with a nice personal message, for instance “Hello, Maarten!”.  Well, to end this developer nightmare story. I stopped investing in this project. Total sales so far: 0. It turns out that Smartphones are really smart. When I got my hands on some devices here at TechEd it turned out that all this personal information is already available in the phone. Thanks a lot, Microsoft! Now I have to think of a completely new killer application, or maybe I should think about a change in my career. Anyway, I have learned my lesson. I will not talk about my killer application at TechEd anymore. What I really like to talk about though is how you can be very productive in creating Windows Mobile 5.0 applications, using Visual Studio 2005 and the .NET Compact Framework 2.0. So hopefully we have a chance to talk about this in the Mobile Cabana (booth #10 in the Cabana area). I’ll be there tomorrow afternoon from noon until the conference ends. Please come by and ask those tough questions.



   What is this?08:06 AM
Blog Ref URL:  http://www.dotnetfordevices.com/forum.html#218


Thursday, June 9, 2005
KillerApp in action

Unbelievable but true. I have had questions about my great SmartPhone application, so I have decided to share the source code of v1 of the application on the blog. As you can see, it not only contains some cool functionality, but the entire application also fits completely inside the edit window of Visual Studio 2005. Now that is some clear and easy to maintain code. Oh, to proof that it really runs I have also included a screen dump of my brand new Windows Mobile 5.0 powered Smartphone.

KillerApp source in Visual Studio 2005

KillerApp running in a WM 5.0 Smartphone (emulator)



   What is this?18:16 PM
Blog Ref URL:  http://www.dotnetfordevices.com/forum.html#219


What's wrong here?

I thought I had it all figured. Working at TechEd in Orlando would be the big breakthrough. Since I have booth duties at the Microsoft Windows Mobile booth in the exhibition area I thought this would be a great opportunity to introduce my latest and greatest killer application for Smartphone. What a chance! Around 11.000 people would be able to see this wonderful application. And even better, I can show how to create the application using Visual Studio 2005 on the fly. Of course that does not mean that the application is simple. It is just a great opportunity for everybody to see a developer in action. Since cooler Smartphones become available by the day, probably really boosted thanks to the arrival of Windows Mobile 5.0 I thought it would be best to target Smartphones. So my initial thought was to create an application that would run when the device is switched on. It would sort of contain a nice welcome message to the owner of the device. So after switching the device on, you could see this message: “Hello, world!”. I even asked a number of friends to beta test this application for me. It turned out nobody found an error in it, so I was very excited. The fact that I was using Visual Studio 2005 must have helped that no errors showed up during beta testing. After all, Visual Studio 2005 has very cool integrated test possibilities, so I even wrote my own unit tests. Maybe it also helped that the entire application consists only of one line of code that I had to enter myself:

 

MessageBox.Show(“Hello, World!”);

 

You can probably see that I am desperate here. I am even giving away my intellectual property. I wonder if I am not charging enough for this application, after all, serious applications are expensive and I am only charging $100 for this cool application. After some thoughts, I decided to start all over from the beginning. After all, my target device is a Smartphone, so maybe it would be necessary to make the application a little smarter as well. So I thought about a way to create a real personal message for the user. So I created a little extension to the application that first asks for the user’s name after which the user would be greeted by the phone with his or her own name. And I started an advertising this new product, telling everybody that this cool application with much more functionality than v1 would be sold for the same price. It didn’t work either. Back to the drawing board. So in my last version I thought I really needed to be modern and use some XML to store the user’s name permanently. This time it is only necessary to enter your name once and every time you switch on the phone it greets you with a nice personal message, for instance “Hello, Maarten!”.  Well, to end this developer nightmare story. I stopped investing in this project. Total sales so far: 0. It turns out that Smartphones are really smart. When I got my hands on some devices here at TechEd it turned out that all this personal information is already available in the phone. Thanks a lot, Microsoft! Now I have to think of a completely new killer application, or maybe I should think about a change in my career. Anyway, I have learned my lesson. I will not talk about my killer application at TechEd anymore. What I really like to talk about though is how you can be very productive in creating Windows Mobile 5.0 applications, using Visual Studio 2005 and the .NET Compact Framework 2.0. So hopefully we have a chance to talk about this in the Mobile Cabana (booth #10 in the Cabana area). I’ll be there tomorrow afternoon from noon until the conference ends. Please come by and ask those tough questions.



   What is this?08:06 AM
Blog Ref URL:  http://www.dotnetfordevices.com/forum.html#218


Wednesday, June 8, 2005
Boston, be prepared!
This is not really the latest news, since it has been known for a few days already. I just forgot to mention it, but next year, TechEd will be held in Boston between June 11 and June 16. How about that for a cool place? So far, the TechEd organizers have had great skills to pick a number of towns in the USA that I really like: New Orleans, Orlando, San Diego and next year Boston. Of course for the upcoming years I do have some other wishes as well. What about Phoenix, Denver, Washington and Chicago. I don't even know if there have been TechEd's at those towns before, but I hope they keep this in mind.

   What is this?22:45 PM
Blog Ref URL:  http://www.dotnetfordevices.com/forum.html#217


TechEd Podcasts
TechEd is hard work for every one attending. Really, it is not easy to pick out your most favourite sessions out of hundreds of them. Since this is such a large conference, it also means lots of walking in between sessions to move to another room. I always wonder why it is that everybody has to move to an entire part of the conference after each session. Hopefully the RFID tags that each attendee has got will (completely anonymous of course) help planning walking traffic for next year's TechEd. So TechEd is a lot of hard work for everybody. It is Wednesday right now, only two more days left, but looking at other people and the way I feel, we are all getting a little tired. Information overflow? Too much walking? Too hard to decide what session to attend? Who knows? But TechEd is much more. It is not only a conference where lots of geeks that like Microsoft products get together. TechEd is also a lot of fun. The best way to judge that when you are not attending is by watching a number of Podcasts that Mike Hall and his team are recording during the show. I just watched a couple of them. They definitely show what TechEd is all about. Not only an event where IT pros and developers can learn a lot. TechEd is also a lot of fun. Take a look at the Podcasts and you know what I am talking about. You can find links to all of them on Mike's blog.

   What is this?22:30 PM
Blog Ref URL:  http://www.dotnetfordevices.com/forum.html#216


Webcasts? Ok, but Podcasts?
The nice thing about webcasts is that, even as a speaker you stay anonymous. How different is that for Podcasts? I'm not sure if I like this, being "attacked" by Mike Hall. On the other hand, now at least you can find out who that "managed multithreading webcast person" is, if you watch this podcast long enough. Just wait until you hear the guy with the funny accent.

   What is this?21:48 PM
Blog Ref URL:  http://www.dotnetfordevices.com/forum.html#215


Wednesday, June 8, 2005
Boston, be prepared!
This is not really the latest news, since it has been known for a few days already. I just forgot to mention it, but next year, TechEd will be held in Boston between June 11 and June 16. How about that for a cool place? So far, the TechEd organizers have had great skills to pick a number of towns in the USA that I really like: New Orleans, Orlando, San Diego and next year Boston. Of course for the upcoming years I do have some other wishes as well. What about Phoenix, Denver, Washington and Chicago. I don't even know if there have been TechEd's at those towns before, but I hope they keep this in mind.

   What is this?22:45 PM
Blog Ref URL:  http://www.dotnetfordevices.com/forum.html#217


TechEd Podcasts
TechEd is hard work for every one attending. Really, it is not easy to pick out your most favourite sessions out of hundreds of them. Since this is such a large conference, it also means lots of walking in between sessions to move to another room. I always wonder why it is that everybody has to move to an entire part of the conference after each session. Hopefully the RFID tags that each attendee has got will (completely anonymous of course) help planning walking traffic for next year's TechEd. So TechEd is a lot of hard work for everybody. It is Wednesday right now, only two more days left, but looking at other people and the way I feel, we are all getting a little tired. Information overflow? Too much walking? Too hard to decide what session to attend? Who knows? But TechEd is much more. It is not only a conference where lots of geeks that like Microsoft products get together. TechEd is also a lot of fun. The best way to judge that when you are not attending is by watching a number of Podcasts that Mike Hall and his team are recording during the show. I just watched a couple of them. They definitely show what TechEd is all about. Not only an event where IT pros and developers can learn a lot. TechEd is also a lot of fun. Take a look at the Podcasts and you know what I am talking about. You can find links to all of them on Mike's blog.

   What is this?22:30 PM
Blog Ref URL:  http://www.dotnetfordevices.com/forum.html#216


Webcasts? Ok, but Podcasts?
The nice thing about webcasts is that, even as a speaker you stay anonymous. How different is that for Podcasts? I'm not sure if I like this, being "attacked" by Mike Hall. On the other hand, now at least you can find out who that "managed multithreading webcast person" is, if you watch this podcast long enough. Just wait until you hear the guy with the funny accent.

   What is this?21:48 PM
Blog Ref URL:  http://www.dotnetfordevices.com/forum.html#215


Wednesday, June 8, 2005
Boston, be prepared!
This is not really the latest news, since it has been known for a few days already. I just forgot to mention it, but next year, TechEd will be held in Boston between June 11 and June 16. How about that for a cool place? So far, the TechEd organizers have had great skills to pick a number of towns in the USA that I really like: New Orleans, Orlando, San Diego and next year Boston. Of course for the upcoming years I do have some other wishes as well. What about Phoenix, Denver, Washington and Chicago. I don't even know if there have been TechEd's at those towns before, but I hope they keep this in mind.

   What is this?22:45 PM
Blog Ref URL:  http://www.dotnetfordevices.com/forum.html#217


TechEd Podcasts
TechEd is hard work for every one attending. Really, it is not easy to pick out your most favourite sessions out of hundreds of them. Since this is such a large conference, it also means lots of walking in between sessions to move to another room. I always wonder why it is that everybody has to move to an entire part of the conference after each session. Hopefully the RFID tags that each attendee has got will (completely anonymous of course) help planning walking traffic for next year's TechEd. So TechEd is a lot of hard work for everybody. It is Wednesday right now, only two more days left, but looking at other people and the way I feel, we are all getting a little tired. Information overflow? Too much walking? Too hard to decide what session to attend? Who knows? But TechEd is much more. It is not only a conference where lots of geeks that like Microsoft products get together. TechEd is also a lot of fun. The best way to judge that when you are not attending is by watching a number of Podcasts that Mike Hall and his team are recording during the show. I just watched a couple of them. They definitely show what TechEd is all about. Not only an event where IT pros and developers can learn a lot. TechEd is also a lot of fun. Take a look at the Podcasts and you know what I am talking about. You can find links to all of them on Mike's blog.

   What is this?22:30 PM
Blog Ref URL:  http://www.dotnetfordevices.com/forum.html#216


Webcasts? Ok, but Podcasts?
The nice thing about webcasts is that, even as a speaker you stay anonymous. How different is that for Podcasts? I'm not sure if I like this, being "attacked" by Mike Hall. On the other hand, now at least you can find out who that "managed multithreading webcast person" is, if you watch this podcast long enough. Just wait until you hear the guy with the funny accent.

   What is this?21:48 PM
Blog Ref URL:  http://www.dotnetfordevices.com/forum.html#215


Tuesday, June 7, 2005
Is managed C++ becoming a C# competitor?

After attending Kate Gregory's presentation at TechEd on Visual C++ and .NET I surely get that feeling. Mixing native and managed C++ becomes very easy. It is even possible to use Windows Forms and MFC intermixed. Compared to managed Visual C++ as we know it from Visual Studio.NET 2003, using keywords with way too many underscores, the language is now a first class citizen in Visual Studio 2005. Somehow it looks a lot like C#, but of course you have cool things like pointers to play with. It is definitely worth giving C++ in managed .NET environments a second change, although I probably stick with C#. That is just a personal choice of course by somebody who fell in love with C# a long time ago.



   What is this?12:00 PM
Blog Ref URL:  http://www.dotnetfordevices.com/forum.html#214


Visual Studio 2005 is officially launched in the week of November 7

During his TechEd keynote, Paul Flessner announced the launch of Visual Studio 2005 and SQL Server 2005. The products will be released world wide in the week of November 7, making sure you can use them during the Holiday season. Of course that is only a little joke, after all, you should not wait for the launch, but start using Visual Studio 2005 Beta 2 today. However, it is good news for all those companies and individuals that were waiting for a release date, that no more guesses are needed. Together with Visual Studio 2005, both SQL Server 2005 and BizTalk Server 2006 will be released as well.



   What is this?09:55 AM
Blog Ref URL:  http://www.dotnetfordevices.com/forum.html#213


Tuesday, June 7, 2005
Is managed C++ becoming a C# competitor?

After attending Kate Gregory's presentation at TechEd on Visual C++ and .NET I surely get that feeling. Mixing native and managed C++ becomes very easy. It is even possible to use Windows Forms and MFC intermixed. Compared to managed Visual C++ as we know it from Visual Studio.NET 2003, using keywords with way too many underscores, the language is now a first class citizen in Visual Studio 2005. Somehow it looks a lot like C#, but of course you have cool things like pointers to play with. It is definitely worth giving C++ in managed .NET environments a second change, although I probably stick with C#. That is just a personal choice of course by somebody who fell in love with C# a long time ago.



   What is this?12:00 PM
Blog Ref URL:  http://www.dotnetfordevices.com/forum.html#214


Visual Studio 2005 is officially launched in the week of November 7

During his TechEd keynote, Paul Flessner announced the launch of Visual Studio 2005 and SQL Server 2005. The products will be released world wide in the week of November 7, making sure you can use them during the Holiday season. Of course that is only a little joke, after all, you should not wait for the launch, but start using Visual Studio 2005 Beta 2 today. However, it is good news for all those companies and individuals that were waiting for a release date, that no more guesses are needed. Together with Visual Studio 2005, both SQL Server 2005 and BizTalk Server 2006 will be released as well.



   What is this?09:55 AM
Blog Ref URL:  http://www.dotnetfordevices.com/forum.html#213


Monday, June 6, 2005
Anders Hejlsberg on Generics

A C# enthusiast like myself must of course take the change to listen to Anders Hejlsberg, talking about C# 2.0. Especially his explanation of generics is very clear. Generics are a new feature for which the CLR had to be modified, meaning that generics are not exclusive to C# 2.0. All other new C# 2.0 features like Anonymous methods; Nullable types; Iterators and Partial types are simply language features, exclusively available to C#.

 

Back to generics though: Look at generics as types that allow adding type parameters to them. This makes as much sense as the fact that methods can accept parameters. Generics can easily boost performance with minimal changes. Look for instance at the current collection classes like an array. In the current collection classes, the only way to store data is to store that data as objects. The problem is that strong type information is lost with that. That is where generics help out. Generics allow for strongly typed collections.

 

The compiler just adds metadata for type information. During runtime the type argument is taken, using the JIT compiler to substitute <T> for a real type. This means that generics add a little overhead during JITting, but this is outweighed by the fact that boxing / unboxing is no longer needing for value types.

 

Another little bit of overhead is caused by the fact that generics are instantiated during run-time, not during compile-time. They are checked at declaration, not during instantiation. However, using generic collections gives some nice performance improvement, especially when used in combination with collections for value types.



   What is this?16:30 PM
Blog Ref URL:  http://www.dotnetfordevices.com/forum.html#212


A role for mobile devices during the TechEd Keynote

It was great to see a prominent presence of mobile devices during Steve Ballmer's keynote at TechEd. Mike Hall showed a cool demo, focused on securing mobile devices. Thinking about it, this makes a lot of sense. Take a look at this fact: thousands of devices are accidentally left in taxis. Security of device is therefore extremely important. With Windows Mobile 5.0 it is possible to delete all information on a device remotely  (remote device wipe). It is also possible to, for instance only allow 3 logons on a device after which a device wipes itself clean. These features are very important, because it makes it much harder for somebody who is not supposed to, to get access to sensitive information. In a broader perspective though. Is this an indication? During a TechEd keynote we are used to hearing information about Visual Studio and Windows (client and server) operating systems. However, a prominent place and a nice demonstration around mobile devices? Look where we came from! It truly feels like mobile computing is taken very serious at Microsoft. If only embedded computing would follow, I for one would be a happy person.



   What is this?11:02 AM
Blog Ref URL:  http://www.dotnetfordevices.com/forum.html#211


Webcasts from TechEd
 

Of course it is possible to write about lots of TechEd sessions on this blog. There is certainly added value to that, because it also allows to add some personal opinions to all the information that is presented at TechEd in Orlando. However, there is another very cool option for everybody to witness what is going on here. This year there a number of sessions are live broadcasted as Webcasts. Steve Ballmer gave a lot of information in his keynote, using his own typical passionate way to present. Only describing the things Ballmer talked about does not entirely cover the TechEd feeling though. Therefore it is very cool that you can experience that for yourself. Thanks to the MSDN Webcast team it is possible to get the real TechEd feeling and join a cool keynote presentation. Especially since all the fun parts are included in the Webcast as well. And it is so easy to do. Steve Ballmer's keynote presentation is available as on-demand Webcast so you can listen to it whenever you like to. Go ahead and try it by clicking here. But there is much more from TechEd. Take a look at this list. If you like this way of receiving information (and why wouldn't you), make sure to check out the MSDN Webcast site frequently. On average around 200 Webcasts are delivered each month. The good news is that they are all free and that you can attend them live (with the possibility to ask questions) or listen to them on your demand.



   What is this?10:30 AM
Blog Ref URL:  http://www.dotnetfordevices.com/forum.html#209


Monday, June 6, 2005
Anders Hejlsberg on Generics

A C# enthusiast like myself must of course take the change to listen to Anders Hejlsberg, talking about C# 2.0. Especially his explanation of generics is very clear. Generics are a new feature for which the CLR had to be modified, meaning that generics are not exclusive to C# 2.0. All other new C# 2.0 features like Anonymous methods; Nullable types; Iterators and Partial types are simply language features, exclusively available to C#.

 

Back to generics though: Look at generics as types that allow adding type parameters to them. This makes as much sense as the fact that methods can accept parameters. Generics can easily boost performance with minimal changes. Look for instance at the current collection classes like an array. In the current collection classes, the only way to store data is to store that data as objects. The problem is that strong type information is lost with that. That is where generics help out. Generics allow for strongly typed collections.

 

The compiler just adds metadata for type information. During runtime the type argument is taken, using the JIT compiler to substitute <T> for a real type. This means that generics add a little overhead during JITting, but this is outweighed by the fact that boxing / unboxing is no longer needing for value types.

 

Another little bit of overhead is caused by the fact that generics are instantiated during run-time, not during compile-time. They are checked at declaration, not during instantiation. However, using generic collections gives some nice performance improvement, especially when used in combination with collections for value types.



   What is this?16:30 PM
Blog Ref URL:  http://www.dotnetfordevices.com/forum.html#212


A role for mobile devices during the TechEd Keynote

It was great to see a prominent presence of mobile devices during Steve Ballmer's keynote at TechEd. Mike Hall showed a cool demo, focused on securing mobile devices. Thinking about it, this makes a lot of sense. Take a look at this fact: thousands of devices are accidentally left in taxis. Security of device is therefore extremely important. With Windows Mobile 5.0 it is possible to delete all information on a device remotely  (remote device wipe). It is also possible to, for instance only allow 3 logons on a device after which a device wipes itself clean. These features are very important, because it makes it much harder for somebody who is not supposed to, to get access to sensitive information. In a broader perspective though. Is this an indication? During a TechEd keynote we are used to hearing information about Visual Studio and Windows (client and server) operating systems. However, a prominent place and a nice demonstration around mobile devices? Look where we came from! It truly feels like mobile computing is taken very serious at Microsoft. If only embedded computing would follow, I for one would be a happy person.



   What is this?11:02 AM
Blog Ref URL:  http://www.dotnetfordevices.com/forum.html#211


Webcasts from TechEd
 

Of course it is possible to write about lots of TechEd sessions on this blog. There is certainly added value to that, because it also allows to add some personal opinions to all the information that is presented at TechEd in Orlando. However, there is another very cool option for everybody to witness what is going on here. This year there a number of sessions are live broadcasted as Webcasts. Steve Ballmer gave a lot of information in his keynote, using his own typical passionate way to present. Only describing the things Ballmer talked about does not entirely cover the TechEd feeling though. Therefore it is very cool that you can experience that for yourself. Thanks to the MSDN Webcast team it is possible to get the real TechEd feeling and join a cool keynote presentation. Especially since all the fun parts are included in the Webcast as well. And it is so easy to do. Steve Ballmer's keynote presentation is available as on-demand Webcast so you can listen to it whenever you like to. Go ahead and try it by clicking here. But there is much more from TechEd. Take a look at this list. If you like this way of receiving information (and why wouldn't you), make sure to check out the MSDN Webcast site frequently. On average around 200 Webcasts are delivered each month. The good news is that they are all free and that you can attend them live (with the possibility to ask questions) or listen to them on your demand.



   What is this?10:30 AM
Blog Ref URL:  http://www.dotnetfordevices.com/forum.html#209


Monday, June 6, 2005
Anders Hejlsberg on Generics

A C# enthusiast like myself must of course take the change to listen to Anders Hejlsberg, talking about C# 2.0. Especially his explanation of generics is very clear. Generics are a new feature for which the CLR had to be modified, meaning that generics are not exclusive to C# 2.0. All other new C# 2.0 features like Anonymous methods; Nullable types; Iterators and Partial types are simply language features, exclusively available to C#.

 

Back to generics though: Look at generics as types that allow adding type parameters to them. This makes as much sense as the fact that methods can accept parameters. Generics can easily boost performance with minimal changes. Look for instance at the current collection classes like an array. In the current collection classes, the only way to store data is to store that data as objects. The problem is that strong type information is lost with that. That is where generics help out. Generics allow for strongly typed collections.

 

The compiler just adds metadata for type information. During runtime the type argument is taken, using the JIT compiler to substitute <T> for a real type. This means that generics add a little overhead during JITting, but this is outweighed by the fact that boxing / unboxing is no longer needing for value types.

 

Another little bit of overhead is caused by the fact that generics are instantiated during run-time, not during compile-time. They are checked at declaration, not during instantiation. However, using generic collections gives some nice performance improvement, especially when used in combination with collections for value types.



   What is this?16:30 PM
Blog Ref URL:  http://www.dotnetfordevices.com/forum.html#212


A role for mobile devices during the TechEd Keynote

It was great to see a prominent presence of mobile devices during Steve Ballmer's keynote at TechEd. Mike Hall showed a cool demo, focused on securing mobile devices. Thinking about it, this makes a lot of sense. Take a look at this fact: thousands of devices are accidentally left in taxis. Security of device is therefore extremely important. With Windows Mobile 5.0 it is possible to delete all information on a device remotely  (remote device wipe). It is also possible to, for instance only allow 3 logons on a device after which a device wipes itself clean. These features are very important, because it makes it much harder for somebody who is not supposed to, to get access to sensitive information. In a broader perspective though. Is this an indication? During a TechEd keynote we are used to hearing information about Visual Studio and Windows (client and server) operating systems. However, a prominent place and a nice demonstration around mobile devices? Look where we came from! It truly feels like mobile computing is taken very serious at Microsoft. If only embedded computing would follow, I for one would be a happy person.



   What is this?11:02 AM
Blog Ref URL:  http://www.dotnetfordevices.com/forum.html#211


Webcasts from TechEd
 

Of course it is possible to write about lots of TechEd sessions on this blog. There is certainly added value to that, because it also allows to add some personal opinions to all the information that is presented at TechEd in Orlando. However, there is another very cool option for everybody to witness what is going on here. This year there a number of sessions are live broadcasted as Webcasts. Steve Ballmer gave a lot of information in his keynote, using his own typical passionate way to present. Only describing the things Ballmer talked about does not entirely cover the TechEd feeling though. Therefore it is very cool that you can experience that for yourself. Thanks to the MSDN Webcast team it is possible to get the real TechEd feeling and join a cool keynote presentation. Especially since all the fun parts are included in the Webcast as well. And it is so easy to do. Steve Ballmer's keynote presentation is available as on-demand Webcast so you can listen to it whenever you like to. Go ahead and try it by clicking here. But there is much more from TechEd. Take a look at this list. If you like this way of receiving information (and why wouldn't you), make sure to check out the MSDN Webcast site frequently. On average around 200 Webcasts are delivered each month. The good news is that they are all free and that you can attend them live (with the possibility to ask questions) or listen to them on your demand.



   What is this?10:30 AM
Blog Ref URL:  http://www.dotnetfordevices.com/forum.html#209


Sunday, June 5, 2005
TechEd 2005 about to start

It feels like early in the morning, yet it is only relative early in the evening. It must mean I am in a different time zone again. It was tough to stand the hot and humid weather outside, but the conference center where TechEd is held is nice and cool. Two other words come immediately in mind as well. Huge and busy. Even on Sunday afternoon, the day of the pre-conference, there are many people gathered around the conference area. Of course tomorrow is going to be extremely interesting with Steve Ballmer's keynote. I am not doubting the content of the keynote itself, and of course I'll try to give more information about that tomorrow. What I am wondering right now is how around 12.000 people, who all want to be at the conference center at the same time, get there. That must be a logistic nightmare. There are ten different bus routes connecting all official TechEd hotels to the conference center. They are running continuously throughout the conference, but for a keynote, everybody wants to travel at the same time. The keynote starts at 9 AM, but I will try to make sure to catch a bus at around 7 AM. That will be the beginning of a long working day that runs until 9 PM. It is also the beginning of a packed conference. In between attending sessions, working at the mobile booth, working at the mobile Cabana to answer technical questions, going to a number of parties and attending a number of meetings I hope to have enough time left over to get some entries to the blog as well. There is only one way to find out. Come back frequently.



   What is this?21:56 PM
Blog Ref URL:  http://www.dotnetfordevices.com/forum.html#208


Saturday, June 4, 2005
No badge arrived

 

After reading some cool Tech*Ed blogs I started to get nervous. I registered rather late for Tech*Ed and I didn't receive a badge yet. Since I am flying from Amsterdam to Orlando early tomorrow morning there is no way I will get my badge by mail. Can I still get in? Will there be a chance to talk to as much attendees as possible? I guess you have to wait until Monday when I find out, and definitely blog about it.



   What is this?01:55 AM
Blog Ref URL:  http://www.dotnetfordevices.com/forum.html#207


It's TechEd Time!

I am super excited to fly to Orlando for TechEd 2005. The content of the conference is going to be great! Of course, with 11.000 people attending it will be hard to talk to each of you individually, but I do hope to have a chance to meet as much people as possible. Make sure to hang out in the MBL Cabana on June 8 between 5 PM and 7 PM, or on June 10 between 12 PM and 4 PM. I am sure we have a whiteboard available so we can discuss cool things like the .NET CF 2.0, Windows Mobile 5.0 and OpenNETCF.org's Smart Device Framework. I'll make sure to have a laptop with me, containing the latest beta of Visual Studio 2005, so let's meet at the Cabana and please, ask all the tough questions.

If you can't make it to the Cabana's there is another great way to meet each other. I'll be in the Windows Mobile Pavillion on June 7 between 3 PM and 5 PM and also on June 9 between 1 PM and 5 PM.

If even that is not working, make sure to hang around at the nearest Starbucks during times I am not in the Cabana's or the Pavillion. I might actually attend some sessions, but in between I'll definitely make sure to get enough tripple espresso's. I would love to meet all 11.000 of you, but realistically .... If you are developing applications for Windows Mobile devices using the .NET CF I really hope we have a chance to meet.



   What is this?01:47 AM
Blog Ref URL:  http://www.dotnetfordevices.com/forum.html#206


Saturday, June 4, 2005
No badge arrived

 

After reading some cool Tech*Ed blogs I started to get nervous. I registered rather late for Tech*Ed and I didn't receive a badge yet. Since I am flying from Amsterdam to Orlando early tomorrow morning there is no way I will get my badge by mail. Can I still get in? Will there be a chance to talk to as much attendees as possible? I guess you have to wait until Monday when I find out, and definitely blog about it.



   What is this?01:55 AM
Blog Ref URL:  http://www.dotnetfordevices.com/forum.html#207


It's TechEd Time!

I am super excited to fly to Orlando for TechEd 2005. The content of the conference is going to be great! Of course, with 11.000 people attending it will be hard to talk to each of you individually, but I do hope to have a chance to meet as much people as possible. Make sure to hang out in the MBL Cabana on June 8 between 5 PM and 7 PM, or on June 10 between 12 PM and 4 PM. I am sure we have a whiteboard available so we can discuss cool things like the .NET CF 2.0, Windows Mobile 5.0 and OpenNETCF.org's Smart Device Framework. I'll make sure to have a laptop with me, containing the latest beta of Visual Studio 2005, so let's meet at the Cabana and please, ask all the tough questions.

If you can't make it to the Cabana's there is another great way to meet each other. I'll be in the Windows Mobile Pavillion on June 7 between 3 PM and 5 PM and also on June 9 between 1 PM and 5 PM.

If even that is not working, make sure to hang around at the nearest Starbucks during times I am not in the Cabana's or the Pavillion. I might actually attend some sessions, but in between I'll definitely make sure to get enough tripple espresso's. I would love to meet all 11.000 of you, but realistically .... If you are developing applications for Windows Mobile devices using the .NET CF I really hope we have a chance to meet.



   What is this?01:47 AM
Blog Ref URL:  http://www.dotnetfordevices.com/forum.html#206


Friday, June 3, 2005
A Rock Star? Me?

Sometimes a dream comes true. I always wanted to be on stage in front of a large audience. Rocking away and making sure that everybody has a good time. It looks like Georgeo Pulikkathara has recognized that. Seriously though. I completely agree with Georgeo that MSDN Webcasts rock. Each and every day you can choose between a great number of MSDN Webcasts, all talking about some of the coolest Microsoft technologies and explaining them in detail. Better yet, they are free to attend. Investing one hour of your time, you will gain a lot of knowledge, making you a better and more productive developer or IT professional. And of course we are not afraid to show you the latest and greatest technology. Even if products are still in beta, like Visual Studio 2005. You can witness yourself that these products actually work. Not convinced yet? Try it out, take a look at the MSDN Webcast schedule and pick a topic you are interested in. No time during the live Webcast? No problem! They are recorded so you can even watch them later at your own convenience. For instance, do you want to know what’s new for Mobile and Embedded developers in version 2.0 of the C# programming language? Take the invitation and listen to this Webcast. There is really no excuse! Start learning new cool things by regularly tuning in to MSDN Webcasts. Yes, I completely agree with Georgeo.

 

MSDN Webcasts Rock!



   What is this?12:01 PM
Blog Ref URL:  http://www.dotnetfordevices.com/forum.html#205


Friday, May 27, 2005
A shameless Webcast plug
It is still a few days away, but on Wednesday June 1st we'll be exploring new C# language features that you can use when you are planning to develop applications for Windows CE 5.0 devices and Windows Mobile devices with Visual Studio 2005 in combination with the .NET Compact Framework 2.0. In an MSDN Webcast that starts at 11.00 AM PST we will explore cool new features like anonymous methods, delegate inference, generics and iterators. Of course we also look shortly to new features available in Visual Basic.NET. Visual Studio 2005 is currently available in a beta 2 version. Being still in beta does not mean that we don't show samples. In fact, we will show you a lot of samples that hopefully will help you understand the basics of a number of new features of C#. You will be investing one hour of your time, but after attending this Webcast you should be ready to use a lot of new features that come with Visual Studio 2005 right out of the box. I am looking forward to meeting you on Wednesday, so please sign up by clicking on the link in this blog entry.

   What is this?00:20 AM
Blog Ref URL:  http://www.dotnetfordevices.com/forum.html#204


Sunday, May 22, 2005
A must read for (future) Windows Mobile 5.0 developers
Jim Wilson wrote a great article about Windows Mobile 5.0 for developers. This is a must read for every body who is even only thinking about developing for Windows Mobile 5.0 devices. Even if you are not thinking about developing for Windows Mobile 5.0 you should still read the article, but be warned … you might change your mind!

   What is this?09:43 AM
Blog Ref URL:  http://www.dotnetfordevices.com/forum.html#203


Saturday, May 14, 2005
Webcasting from TechEd?
This is going to be so cool if it will really happen. We are talking about delivering a Webcast on multithreading, live from Tech*Ed. The idea is to take the managed multithreading Webcasts we did over the last couple of months that were specifically targeted to Windows CE powered devices, modify them and target desktop developers. There is an important reason to do so. Because of the fact that multi-core processors are finding their way to the desktop, it is important for desktop developers to know all about multithreading. After all, with more than one processor in the system, an application can truly benefit from the hardware when it is divided into multiple threads. Because of the fact that multithreaded applications are harder to write, it is important to get a thorough understanding of the basics of multithreading. We might even talk about ways to change current applications into multithreading applications for certain scenario’s. If more details are known I of course let you know on the blog.

   What is this?00:04 AM
Blog Ref URL:  http://www.dotnetfordevices.com/forum.html#202


Another Webcast coming up
Even though it will be a few weeks, mark your calendars already for the next Webcast, covering multithreading application development for Windows CE powered devices. This time we will take a little different approach, looking exclusively at Visual Studio 2005 and the .NET Compact Framework 2.0. However, we will even take it one step further by talking about ways to incorporate new C# and VB.NET language features in your (multithreaded) applications. When you attend the Webcast you will find out all there is to know about using generics to easily update UI controls in a generic fashion. We will also discuss anonymous methods and iterators and how they can be of use to you.

   What is this?00:02 AM
Blog Ref URL:  http://www.dotnetfordevices.com/forum.html#201


Saturday, May 14, 2005
Webcasting from TechEd?
This is going to be so cool if it will really happen. We are talking about delivering a Webcast on multithreading, live from Tech*Ed. The idea is to take the managed multithreading Webcasts we did over the last couple of months that were specifically targeted to Windows CE powered devices, modify them and target desktop developers. There is an important reason to do so. Because of the fact that multi-core processors are finding their way to the desktop, it is important for desktop developers to know all about multithreading. After all, with more than one processor in the system, an application can truly benefit from the hardware when it is divided into multiple threads. Because of the fact that multithreaded applications are harder to write, it is important to get a thorough understanding of the basics of multithreading. We might even talk about ways to change current applications into multithreading applications for certain scenario’s. If more details are known I of course let you know on the blog.

   What is this?00:04 AM
Blog Ref URL:  http://www.dotnetfordevices.com/forum.html#202


Another Webcast coming up
Even though it will be a few weeks, mark your calendars already for the next Webcast, covering multithreading application development for Windows CE powered devices. This time we will take a little different approach, looking exclusively at Visual Studio 2005 and the .NET Compact Framework 2.0. However, we will even take it one step further by talking about ways to incorporate new C# and VB.NET language features in your (multithreaded) applications. When you attend the Webcast you will find out all there is to know about using generics to easily update UI controls in a generic fashion. We will also discuss anonymous methods and iterators and how they can be of use to you.

   What is this?00:02 AM
Blog Ref URL:  http://www.dotnetfordevices.com/forum.html#201


Friday, May 13, 2005
MEDC 2005

Unfortunately this year’s MEDC is over again. I have the feeling though that this conference was a great success. We had a great number of people attending this conference, which was wonderful to see. To my opinion the content was well put together, although there could have been a little more attention for real-time and Platform Builder related sessions. Obviously all speakers gave their best effort to make this a very good, technical conference. Looking at the number of attendees in sessions, even during unpopular hours like 8 AM or the last session of the conference, that worked out pretty well. Mike Hall posted a cool picture on his blog, showing the whiteboard in the speaker room with the top 10 list of best evaluated sessions. I have to that picture on this blog as well, because it will be a nice memory.

 

The real competition at MEDC

 

The big news at MEDC this year was the announcement on Windows Mobile 5.0, the next version of PocketPC and SmartPhone devices. During demonstrations it  became clear that this new version of the platform takes mobile computing a big step further. There are lots of productivity improvements, the UI is going to look much cooler and I especially like the presence of soft keys on PocketPC’s, making the devices much easier to use. Hopefully lots of manufacturers will release cool Windows Mobile 5.0 devices soon. I also really hope that the manufacturers offer upgrade programs for those devices that meet the Windows Mobile 5.0 requirements.

 

The other big thing at MEDC was the all overall presence of Visual Studio 2005. Even though the product is not released yet (everybody was running Beta 2), this product rocks! This is by far the best development environment Microsoft is going to release this year. I especially like the fact that we now will have one single development environment to develop both managed and native applications for devices. On top of it, the new versions of Visual Basic.NET and C# offer much more functionality, including my current personal favourite: generics.

 

I hope that the demo gods were with all speakers. Demo’s during the sessions that I have attended looked good and did really work. During other conferences that has sometimes been different in the past. Thinking back about that, I must have been the only speaker that desperately wanted one demonstration to fail. During my multithreading talk I wanted to show an application hang-up due to updating UI controls from a worker thread. The little project I used for that hung the application continuously until an hour before my talk. At that time it was running smoothly. Luckily I could get it hanging again during the talk by removing an extra sleep. Listening to the reactions in the room, I think the audience appreciated my statement that Visual Studio 2005, beta 2 is simply too good. Even applications you want to fail seem to run fine. I really guess I am complaining about this.

  

Today, the first day after the conference, I find myself starting to think about content for next year already. By that time there are of course Windows Mobile 5.0 devices out on the market. By that time Visual Studio 2005 is released as well, so who knows what we will be talking about then. Even though I don’t like getting older I can’t wait to be at the next MEDC. It is just wonderful to have so many people around, sharing my excitement about Windows CE and Windows CE related products.

  

Even though they are on a much smaller scale, I really hope that MEDC’s around the world will get great attention as well and that they will benefit attendees.



   What is this?23:56 PM
Blog Ref URL:  http://www.dotnetfordevices.com/forum.html#200


Monday, May 9, 2005
Las Vegas, here I am
I have finally arrived in this crazy "Disney World" for adults, aka Las Vegas. Even though it is way past midnight local time here, this town is still full of people. Don't they ever sleep? Tomorrow is going to be a busy day, in preparation of Wednesday's talk on new features for managed multithreaded applications in the .NET CF 2.0. Basically, all demo's are prepared, but I have to create my special "showtime" project. This is something important, trying to find the right mix between actually creating applications and not boring attendees with too much bad typing from my side. Hopefully the demo's are as exciting as I believe they are. Now there is one thing left to do: Keep my fingers crossed that Visual Studio 2005 Beta 2 will be good to me. In preparation of the demo's, during last week, everything went fine, but on stage it is allways different. I feel that MEDC 2005 is not really a gamble but a safe bet that it will be a great conference. However, for me personally the Demo Gods are the biggest challenge or gamble if you wish. Will they be with me on Wednesday? Continue reading my blog and you will find out all about it.

   What is this?01:50 AM
Blog Ref URL:  http://www.dotnetfordevices.com/forum.html#199


Wednesday, April 27, 2005
Should we pay more attention to multithreading applications?

Inspired by AMD’s Richard A. Brunner’s presentation at WinHEC about programming for multi-core technology I wonder if we need to pay more attention to multithreading application development. Not just for mobile and embedded developers but for desktop developers as well. The reason is that to utilize multi-core processors most, applications need to be converted to make use of multithreading. According to Brunner, most desktop applications are single threaded right now and desktop developers do not have experience with multithreaded application development. Since multithreading adds complexity to an application, this is an area we certainly need to give attention to. Coming from an embedded background, multithreading feels like a natural way of life. Who could have ever thought that desktop developers could benefit from embedded developers? It seems that this is the right time for that.



   What is this?01:53 AM
Blog Ref URL:  http://www.dotnetfordevices.com/forum.html#198


Monday, April 25, 2005
I'd better make sure to have code reviewed before showing it
What was I thinking a long time ago? I showed a little code snippet to retrieve the available memory on a Windows CE device and / or a CF card, using the GetDiskFreeEx API. It turns out that about the only correct thing in the snippet was the declaration to properly P/Invoke into the API. The API returns pointers to large, unsigned integers and in the code snippet I converted them to integers. Thanks to Renee Teunissen the code snippet is now modified and takes ulongs in managed code. What can I say? I guess I am getting too old for this industry, having to deal with storage devices of over 2 GB.

   What is this?14:51 PM
Blog Ref URL:  http://www.dotnetfordevices.com/forum.html#197


Friday, April 8, 2005
A few thoughts on updating controls inside worker threads: generics are fun

The things you are about to read are for use with the .NET Compact Framework 2.0, but this is pretty cool stuff. Everybody who has written managed multithreaded applications is probably aware of the fact that you should not update user controls on worker threads, but on the thread that created (thus owns) the particular control. In version 1.0 of the Compact Framework there is limited Control.Invoke support. It is for instance not possible to pass parameters to the Invoke method, so to be able to still pass data to it, the thing to do is make use of instance variables. If you take a look at the following code snippet containing a worker thread that wants to update both a StatusBar and a ListBox control, that is exactly what we are doing (creation and activation of the worker thread is omitted in the code snippet).

 

    public class Form1 : Form
    {
        private string statusBarText;
        private string listBoxText;
 
        private void WorkerThread ()
        {
            statusBarText = "WorkerThread active";
            this.Invoke(new EventHandler(UpdateStatusBarCF1));
            while (!workerThreadDone)
            {
                if (!workerThreadDone)
                {
                    listBoxText = "CF1 - " + DateTime.Now.ToLongTimeString();
                    this.Invoke(new EventHandler(UpdateListBoxCF1));
                    Thread.Sleep(1000);
                }
            }
 
            Thread.Sleep(2000);
            statusBarText = "WorkerThread terminated!";
            this.Invoke(new EventHandler(UpdateStatusBarCF1));
        }
 
        private void UpdateStatusBarCF1(object sender, EventArgs e)
        {
            statusBar1.Text = statusBarText;
        }
 
        private void UpdateListBoxCF1(object sender, EventArgs e)
        {
            listBox1.Items.Add(listBoxText);
            listBox1.SelectedIndex = listBox1.Items.Count-1;
        }
    }

 

Because of the fact that Control.Invoke is synchronous, you also must be sure that the thread owning the control can execute, otherwise you might reach deadlock situations.

 

In version 2.0 of the .NET Compact Framework there is another overloaded Invoke method available that accepts parameters. Making use of this particular Invoke method, the previous code snippet can be changed into the following:

 

    public partial class Form1 : Form
    {
        private Thread workerThread;
        private bool workerThreadDone;
        private delegate void UpdateListBox(string listBoxEntry);
        private delegate void UpdateStatusBar(string statusBarText);
 
        private void WorkerThread()
        {
            UpdateListBox listBoxUpdater = UpdateListBoxCF2;
            UpdateStatusBar statusBarUpdater = UpdateStatusBarCF2;
 
            this.Invoke(statusBarUpdater, new object[] {"WorkerThread active"});
 
            while (!workerThreadDone)
            {
                if (!workerThreadDone)
                {
                    this.Invoke(listBoxUpdater, 
                        new object[] { "CF2 - " + DateTime.Now.ToLongTimeString() });
                    Thread.Sleep(1000);
                }
            }
            Thread.Sleep(2000);
            this.BeginInvoke(statusBarUpdater, 
                new object[] { "WorkerThread terminated!" });
        }
 
        private void UpdateStatusBarCF2(string statusBarInfo)
        {
            statusBar1.Text = statusBarInfo;
        }
 
        private void UpdateListBoxCF2(string listBoxEntry)
        {
            listBox1.Items.Add(listBoxEntry);
            listBox1.SelectedIndex = listBox1.Items.Count - 1;
        }
 
    }

 

Besides the fact that you can now pass parameters, there is also an asynchronous method to update controls on behalf of worker threads: Control.BeginInvoke. This can prevent against potential deadlock situations. Are you still with me? In that case we should move on. In managed applications using the .NET Compact Framework 2.0 you can also make use of new language features of C#. Let’s take a look at generics and how generics can make it easier to update controls from inside worker threads. If you look at the previous code snippet, we declared two separate delegates, one to update a ListBox, another one to update a StatusBar, both accepting string parameters. If we would sometimes also want to pass other types to be displayed in these controls we would probably end up declaring even more delegates. Suppose we would want to pass a separate DateTime object to the ListBox, we would begin to declare the following delegates:

 

        private delegate void UpdateListBox(string listBoxEntry);
        private delegate void UpdateListBoxDT(DateTime dt);
        private delegate void UpdateStatusBar(string statusBarText);

 

You would at least have to come up with different names for the different delegates and you would have to declare them all. The worker thread would now look something like this:

 

        private void WorkerThreadCF2()
        {
            UpdateListBox listBoxUpdater = UpdateListBoxCF2;
            UpdateListBoxDT listBoxUpdaterDT = UpdateListBoxCF2;
            UpdateStatusBar statusBarUpdater = UpdateStatusBarCF2;
 
            this.Invoke(statusBarUpdater, new object[] {"WorkerThreadCF2 active"});
 
            while (!workerThreadCF2Done)
            {
                if (!workerThreadCF2Done)
                {
                    this.Invoke(listBoxUpdater, new object[] { "CF2 - " });
                    this.Invoke(listBoxUpdaterDT, new object[] { DateTime.Now });
                    Thread.Sleep(1000);
                }
            }
            Thread.Sleep(2000);
            this.BeginInvoke(statusBarUpdater, 
                new object[] { "WorkerThreadCF2 terminated!" });
        }

 

You would of course always have to be aware to use the correct updater for a particular data type to be passed to Control.Invoke, otherwise you would get an exception. The update methods themselves still look the same (although we’ve added a new UpdateListBoxCF2 method, accepting a DateTime object). Thanks to polymorphism it is not necessary to come up with another name for the extra UpdateListBoxCF2 method.

 

        private void UpdateStatusBarCF2(string statusBarInfo)
        {
            statusBar1.Text = statusBarInfo;
        }
 
        private void UpdateListBoxCF2(string listBoxEntry)
        {
            listBox1.Items.Add(listBoxEntry);
            listBox1.SelectedIndex = listBox1.Items.Count - 1;
        }
 
        private void UpdateListBoxCF2(DateTime listBoxEntry)
        {
            listBox1.Items.Add(listBoxEntry.ToLongTimeString());
            listBox1.SelectedIndex = listBox1.Items.Count - 1;
        }

 

Since the different for updating the ListBox only differ in type it is probably possible to use a generic delegate instead of two specific delegates. Looking at the declaration of the delegates, we now would end up with something like this:

 

        private delegate void UpdateListBox<T>( T listValue);
        private delegate void UpdateStatusBar(string statusBarText);

 

To use the generic delegate, we have to alter the worker thread slightly:

 

        private void WorkerThreadCF2()
        {
            UpdateListBox<string> listBoxUpdater = UpdateListBoxCF2;
            UpdateListBox<DateTime> listBoxUpdaterDT = UpdateListBoxCF2;
            UpdateStatusBar statusBarUpdater = UpdateStatusBarCF2;
 
            this.Invoke(statusBarUpdater, new object[] {"WorkerThreadCF2 active"});
 
            while (!workerThreadCF2Done)
            {
                if (!workerThreadCF2Done)
                {
                    this.Invoke(listBoxUpdater, new object[] { "CF2 - " });
                    this.Invoke(listBoxUpdaterDT, new object[] { DateTime.Now });
                    Thread.Sleep(1000);
                }
            }
            Thread.Sleep(2000);
            this.BeginInvoke(statusBarUpdater, 
                new object[] { "WorkerThreadCF2 terminated!" });
        }

 

The different update functions themselves remain unchanged. Now if you are still with me, think about the delegates we are now declaring. Basically they might differ in parameter type to pass and they might differ in Control that needs to be updated. Since Control is a type itself, we can even extend this one step further and make one generic ControlUpdater delegate that takes a Control type and a parameter type. This would result in something like this:

 

        private delegate void UpdateControl<T, U>(T controlToUpdate, U parameterType);

 

Of course, the worker thread needs again some slight modifications:

 

        private void WorkerThreadCF2()
        {
            UpdateControl<ListBox, string> listBoxUpdater = UpdateListBoxCF2;
            UpdateControl<ListBox, DateTime> listBoxUpdaterDT = UpdateListBoxCF2;
            UpdateControl<StatusBar, string> statusBarUpdater = UpdateStatusBarCF2;
 
 
            this.Invoke(statusBarUpdater,
                new object[] {statusBar1, "WorkerThreadCF2 active"});
 
            while (!workerThreadCF2Done)
            {
                if (!workerThreadCF2Done)
                {
                    this.Invoke(listBoxUpdater, 
                        new object[] {listBox1, "CF2 - " });
                    this.Invoke(listBoxUpdaterDT, new object[] {listBox1, DateTime.Now });
                    Thread.Sleep(1000);
                }
            }
            Thread.Sleep(2000);
            this.BeginInvoke(statusBarUpdater, 
                new object[] {statusBar1, "WorkerThreadCF2 terminated!" });
        }

 

Because of the fact that the update methods now take two parameters they need some modification as well:

 

        private void UpdateStatusBarCF2(StatusBar sb, string statusBarInfo)
        {
            sb.Text = statusBarInfo;
        }
 
        private void UpdateListBoxCF2(ListBox lb, string listBoxEntry)
        {
            lb.Items.Add(listBoxEntry);
            lb.SelectedIndex = listBox1.Items.Count - 1;
        }
 
        private void UpdateListBoxCF2(ListBox lb, DateTime listBoxEntry)
        {
            lb.Items.Add(listBoxEntry.ToLongTimeString());
            lb.SelectedIndex = listBox1.Items.Count - 1;
        }

 

Now if you often only want to update the Text property of a control, you could even generalize an update method for that. Let’s say we want to change both the Text property of the StatusBar and of a Button. We could change the UpdateStatusBarCF2 method simply into the following method:

 

        private void UpdateControlText(Control ctrl, string newText)
        {
            ctrl.Text = newText;
        }

 

Using this last method from inside the worker thread would look like this:

 

        private void WorkerThreadCF2()
        {
            UpdateControl<ListBox, string> listBoxUpdater = UpdateListBoxCF2;
            UpdateControl<ListBox, DateTime> listBoxUpdaterDT = UpdateListBoxCF2;
            UpdateControl<Control, string> controlTextUpdater = UpdateControlText;
 
 
            this.Invoke(controlTextUpdater,
                new object[] {button1, "Terminate worker thread"});
 
            this.Invoke(controlTextUpdater,
                new object[] {statusBar1, "WorkerThreadCF2 active"});
 
            ……….
        }

 

Of course all of this is not really rocket science, but it is pretty cool to play a little with generics and see how they can be of use for you. I am pretty sure that updating controls inside worker threads could even be made easier and more generic when thinking about this longer. So at least I hope you agree with me that it is pretty exciting to explore possibilities that we will get with Visual Studio 2005 and the .NET Compact Framework 2.0.



   What is this?20:48 PM
Blog Ref URL:  http://www.dotnetfordevices.com/forum.html#196


Monday, March 21, 2005
Search phrases on DotNETForDevices

Yes, I know. I have promised a new article on the series on multithreading on DotNETForDevices and it is not there yet. I also committed myself to add blog entries with a higher frequency, but you are not seeing that yet. The reason for that is simple. Besides regular work, all my spare time these week is put into writing a whitepaper on multithreading that might be published on MSDN in the near future and on preparations for MEDC 2005 in Las Vegas. Looking at the search keywords on DotNETForDevices that were recorded over the last 3 weeks, it seems that many people asked about multithreaded application development and about real-time behavior of the .NET Compact Framework. Well, if you are interested in the first topic, multithreaded application, I really hope you can make it to MEDC 2005. It looks like we get quite some coverage there. The preliminary agenda lists these sessions amongst others:

 

Developing Multithreaded Applications with the .NET Compact Framework 2.0

Track(s): Developing Client Applications

Speaker(s): Maarten Struys

 

What's New for Multithreaded Applications in the .NET Compact Framework 2.0?

Track(s): Developing Client Applications

Speaker(s): Maarten Struys

 

If you are already familiar with writing multithreaded applications, What’s new for Multithreaded Applications in the .NET CF 2.0 gives you a comparison between how we need to write multithreaded apps today and how much easier it will become tomorrow when we can use the .NET CF 2.0. You’ll be amazed!

 

If you want to learn writing multithreaded applications you definitely might try to come to the session called “Developing Multithreaded Applications with the .NET CF 2.0”. This session, even though it is level 300, introduces the concept of multithreaded application development and shows the relation between multithreaded managed applications and the underlying Windows CE Operating System. Having those sessions on the agenda simply means more work, but hey, I am not complaining. These are the things I love to work on.

 

You can also experience writing MT Apps with the .NET CF 2.0 yourself, since we will also have a hands-on-lab available that walks you through many things you need to know when you are moving to multithreaded application development. And this is only one small topic. I strongly encourage you to take a look at the MEDC 2005 agenda, because there are tons of interesting sessions available, both for Windows Mobile, Windows CE and Windows XP Embedded developers. This is simply a conference you can’t afford to miss.

 

Oh, and of course I hope to meet many of you in person in Las Vegas.

 

Another topic that seems to get many questions is real-time behavior of the .NET Compact Framework. It is still a little early (and unfortunately not a topic on MEDC 2005, although Nat Frampton will do a number of presentations on real-time application development), but we are finalizing an updated version of the MSDN article on real-time behavior of the .NET Compact Framework. This time it will include version 2.0 of the .NET Compact Framework and even a managed Interrupt Service Thread. It will be a few weeks before the whitepaper will be published (either on MSDN or on DotNETForDevices), but so far the results are pretty impressive (as is the new application, thanks to my co-worker and buddy Michel Verhagen). Simply stay tuned over the next few weeks for more information about that as well.



   What is this?01:04 AM
Blog Ref URL:  http://www.dotnetfordevices.com/forum.html#195


Sunday, February 27, 2005
ThreadPool threads and System.Threading.Timer objects and updating UI controls.

I expected to run into problems when updating UI controls without using Control.Invoke when using ThreadPool threads. In the preparation of a white paper on threading this turned out to be true. What I did not expect at first (but seems logical after thinking it true) is the fact that you also have to be careful when updating UI controls from within a delegate that is invoked by System.Threading.Timer objects. After some thinking this of course made complete sense because System.Threading.Timer makes use of ThreadPool to create a thread that invokes our delegate everytime the timer expires. This also means that there are issues when terminating the application before the System.Threading.Timer has been stopped. In stead of continuing to run the associated worker thread, in this case, an exception will be thrown. So always make sure to stop System.Threading.Timer objects (and all other ThreadPool threads) before closing an application. Of course this can be done either explicitly or by making use of the Closing event that is invoked when the main form is about to be closed.

 

Now you might wonder why not use a System.Windows.Forms.Timer object instead. Surely, you don’t need to worry about using Control.Invoke or about properly stopping the timer before the application is closed. This is all thanks to the fact that System.Windows.Forms.Timer objects do not create a separate thread, but instead they are abstractions of the WM_TIMER message. That also shows their limitations. Whenever the thread creating System.Windows.Form.Timer objects is busy doing other things, timer ticks might be lost, because there will only be at most one WM_TIMER message pending in the Windows CE message queue. So if you want guaranteed ticks, generated by a timer you have to use System.Threading.Timer. However, keep in mind that you need special attention to update UI controls and to properly terminate the application.


   What is this?00:31 AM
Blog Ref URL:  http://www.dotnetfordevices.com/forum.html#194


Friday, February 25, 2005
Embedded World 2005 thoughts

During Embedded World 2005 in Nuremberg there were some remarkable things to notice. Let me share them with you.

 

First off, I saw many booths where companies showed solutions both for Linux and for Windows CE, sometimes Windows XP Embedded as well. Since there are a few more embedded and / or real-time operating systems around I am starting to wonder if companies mainly chose between Linux on one side and Windows Embedded on the other side. Looking at hardware manufacturers (from small to large) this certainly seems to be the case. Funny enough I notice this in my own day to day work as well. Lots of talks I am having with customers is about exactly that same topic.

 

Working at the Microsoft booth for 3 days, another thing was noticeable. Last year during Embedded World 2004 we had many people visiting the booth that seemed to be entirely new to Windows Embedded operating systems. Quite a few people had not even heard of Windows XP Embedded or Windows CE. This time that was different as well. A lot of people I talked to over the last few days are creating Windows Embedded solutions and had detailed questions. Of course those are a little harder to answer but more fun at the same time. Given the amount of people that specifically asked for evaluation kits I am confident that we will see a nice growth in the momentum over the next few months.

 

The third thing had to do with the .NET Compact Framework. Around lunch time each day I gave a short presentation on new features of the .NET CF v2.0. I was pleasantly surprised by the amount of people that came to listen to that presentation. So far I have often thought that most people using the .NET CF were targeting either SmartPhone or PocketPC, but I now learned that people are using the .NET CF in embedded solutions as well. With version 2 of the CF the numbers will simply rise. Immediate feedback from attendees showed that people are particularly happy with the following:

 

·         Better interoperability with native code

·         COM interop

·         Creating mixed programming language solutions (combining C++ for hard real-time behavior with managed code for UI work)

·         Much more managed controls available

·         Only needing one development environment to develop applications for Windows CE powered devices

·         Managed access to serial ports

·         Visual Studio 2005 as a development environment with much better intellisense and a much richer form designer capabilities

 

Oh, the most asked question after the presentation: When will Visual Studio 2005 be available. Of course one I could not give a true date for yet. However, for me all signs are clear that Visual Studio 2005 will become a big hit once it is released.



   What is this?10:15 AM
Blog Ref URL:  http://www.dotnetfordevices.com/forum.html#193


Saturday, February 19, 2005
At least it is interesting to take a look at Windows XP Embedded as well
Hmmm, I do understand if you take a look at this blog entry with mixed feelings. If you are a Windows CE developer (like me), you might wonder what I am talking about. Well, let me explain a little better what I am talking about. Next week, during the Embedded World 2005 conference + exhibition I am mainly responsible to show Windows CE 5.0, but there is always a chance that people might come by and want to talk about Windows XP Embedded. So I prepared a demonstration, somewhat similar to what Mike Hall explained in his Get Embedded Column (Going Virtual), already a while ago. I have to admit that the results are pretty impressive. Within one hour I had a Windows XP Embedded image running inside a Virtual PC, not only that, I have the feeling I sort of understand the development cycle. After first running the Target Analyzer Probe and importing the results inside Component Designer (being part of the Windows XP Embedded tools) I was able to boot the newly, tailor made, operating system in my Virtual PC. To be able to start running in an embedded device, Windows XP Embedded sort of needs to do an installation. This is more or less exactly the same thing that needs to be done when installing Windows XP on a generic PC. The only difference is that the name of the action is different. Initially booting the Windows XP image invokes the "First Boot Agent". This is more or less the same thing that happens when you install Windows XP on a new PC. All hardware devices are installed, the registry is setup, together with a few more things (but only those settings and drivers will be installed for the particular XP Embedded image we have created). After another reboot I had my Windows XP Embedded Image running, as a matter of facts in less than one hour. Compared to Windows CE this is a pretty impressive result. So .... if run time licences are not that relevant to you and if you are restricted to PC like architectures you might want to take a look at Windows XP Embedded. Perhaps it is the "other" embedded operating system that you should seriously look at. As long as you don't need hard real-time behavior and you are running on PC based hardware this might be a serious alternative for you. Even though I still like Windows CE better (but that is just because it is a hard real-time OS with small footprint and is not restricted to PC hardware), Windows XP Embedded might be a great alternative for you. Even better: it might just be the operating system you are waiting for.

   What is this?02:13 AM
Blog Ref URL:  http://www.dotnetfordevices.com/forum.html#192


Thursday, February 17, 2005
And yet another Webcast in the making

Mark your calendars already, because on April 13 we are most likely going to talk about new multithreading features in the .NET Compact Framework 2.0 during another MSDN Webcast. For right now this is the presentation abstract:

Version 2.0 of the .NET Compact Framework offers more functionality out of the box to develop managed multithreaded applications. In this session we show the differences between version 1.0 and version 2.0 of the .NET Compact Framework with focus on multithreaded capabilities. You will learn how to properly create / terminate threads. You will learn to effectively use synchronization objects. You will find out how to asynchronously update UI controls from inside worker threads. The session will be loaded with code samples to give you a head start to develop multithreaded applications for mobile and embedded devices using Visual Studio 2005 and the .NET Compact Framework version 2.0.

Note that the date and the content might still change, because this is a very early announcement. However, I will keep you up to date. Information about the starting time of the Webcast will follow later.



   What is this?23:01 PM
Blog Ref URL:  http://www.dotnetfordevices.com/forum.html#191


Tuesday, February 8, 2005
Stop the presses! Your unique chance to learn about interoperability in the .NET CF v2

This is kind of a short notice, both for you and for me. However, on Thursday February 10th it is time for a renewed cooperation between Alex Feinman and me, when we are hosting an MSDN Webcast on Native Code Interoperability in the .NET Compact Framework 2.0.

You've heard about .NET Framework, but do you really know what it can do for you in the area of interoperability? Join this webcast to learn about the interoperability features of the Microsoft .NET Framework, how it can enable developers to continue using traditional Active Server Pages, Component Object Model applications, and Microsoft Win32 DLLs, making it easier to choose if and when to migrate existing managed code to .NET.

 

Make sure to reserve your seat and hopefully we will meet you on February 10th, 18:00 GMT, that is 10:00 AM PST or 19:00 CET. This surely is going to be an exciting event with speakers on both sides of the world.



   What is this?22:03 PM
Blog Ref URL:  http://www.dotnetfordevices.com/forum.html#190


Thursday, February 3, 2005
The next Webcast on Multithreading is geting closer

There is still some work to do. Since MSDN Webcasts are now limited to one hour instead of 90 minutes, my samples seem way too long and too time consuming. Here is what we are going to cover during the February 9th Webcast: 

There are a number of possibilities to synchronize threads in multithreaded applications. Have you ever wondered which synchronization class you should use for a particular scenario? In the Microsoft .NET Compact Framework you can chose between Monitor, Mutex, AutoResetEvent, ManualResetEvent and Interlocked classes. During this webcast we will explain the differences between these classes, when to use them and we'll give you some real-life scenarios for using the different classes. Ideally webcast attendees should be familiar with multithreading. If this topic is new for you, we advise you to first take a look at this on-demand Webcast: "Learn to Develop Great Multithreaded Applications using the .NET Compact Framework.

Make sure to reserve your seat and hopefully I meet you on February 9th, 19:00 GMT, that is 11:00 AM PST or 20:00 CET. As always you can request the sample code after the Webcast. If there is time enough I will try to prepare an accompanying document for those of you who are interested in the sample code as well.



   What is this?22:43 PM
Blog Ref URL:  http://www.dotnetfordevices.com/forum.html#189


Wednesday, February 2, 2005
This blog is not really receiving much entries right now
But there are a few reasons for that. First off I am in the midst of moving to another house which really keeps me occupied. Besides that, there are a few other time consuming activities. One of them is being heavily involved in some beta testing. I can't really share details of the product under test right now, but in the future I am confident that will be different. Besides that, there are a number of other activities that keep me occupied. A number of Webcasts desperately need preparation. Writing abstracts for a number of upcoming conferences is another task that consumes a lot of time. I am in the midst of writing a whitepaper on multithreading (which hopefully in the near future will be published somewhere. If nothing else, it will be published here on DotNETForDevices). Last but not least, there is also regular work to do. All in all it might be a few weeks before you can expect frequent updates with technical content of my blog again, but just make sure you check back regulary.

   What is this?00:46 AM
Blog Ref URL:  http://www.dotnetfordevices.com/forum.html#188


Blogging history
Right now it seems that there are a lot of blog entries already available for February, but most of them are dated way back in 2004. Even though it is cool to look back into history this was not what the blog was meant to do. We are aware of the problem, but it might take a few more days to fix it. In the mean time I will try to add a couple of recent blog entries, at least to keep you busy.

   What is this?00:40 AM
Blog Ref URL:  http://www.dotnetfordevices.com/forum.html#187


Wednesday, February 2, 2005
This blog is not really receiving much entries right now
But there are a few reasons for that. First off I am in the midst of moving to another house which really keeps me occupied. Besides that, there are a few other time consuming activities. One of them is being heavily involved in some beta testing. I can't really share details of the product under test right now, but in the future I am confident that will be different. Besides that, there are a number of other activities that keep me occupied. A number of Webcasts desperately need preparation. Writing abstracts for a number of upcoming conferences is another task that consumes a lot of time. I am in the midst of writing a whitepaper on multithreading (which hopefully in the near future will be published somewhere. If nothing else, it will be published here on DotNETForDevices). Last but not least, there is also regular work to do. All in all it might be a few weeks before you can expect frequent updates with technical content of my blog again, but just make sure you check back regulary.

   What is this?00:46 AM
Blog Ref URL:  http://www.dotnetfordevices.com/forum.html#188


Blogging history
Right now it seems that there are a lot of blog entries already available for February, but most of them are dated way back in 2004. Even though it is cool to look back into history this was not what the blog was meant to do. We are aware of the problem, but it might take a few more days to fix it. In the mean time I will try to add a couple of recent blog entries, at least to keep you busy.

   What is this?00:40 AM
Blog Ref URL:  http://www.dotnetfordevices.com/forum.html#187


Thursday, January 20, 2005
Another MSDN Webcast on multithreading

If you want to know more about synchronization between different threads in a .NET Compact Framework application I hope to meet you during an upcoming MSDN Webcast on February 9 at 11.00 AM Pacific Standard Time or 8.00 PM Central European Time. Registration information can be found here: http://msevents.microsoft.com/cui/WebCastEventDetails.aspx?EventID=1032267567&Culture=en-US



   What is this?23:25 PM
Blog Ref URL:  http://www.dotnetfordevices.com/forum.html#186


Monday, January 17, 2005
OpenNETCF

It really was interesting to browse over the statistics of DotNETForDevices and see OpenNETCF as one of the most requested search items. Just in case any of this blog readers want to know more about OpenNETCF, just make sure to go to our website at www.opennetcf.org. Just in case you are already familiar with OpenNETCF, make sure to visit the site today as well, since now you can make a donation as Neil so nicely pointed out in his blog:

"Help us help you" -- That's the angle we're taking with a new campaign which will hopefully generate enough revenue to cover our running costs and any other expenses we may incur.

So, if you think we have provided something of value in the SDF (or maybe you just love me for the HTC imaging library I wrote last year) then, please, we urge you to make a donation, no matter how large or small, and help keep OpenNETCF.org up and running.

Browsing to OpenNETCF.org, you will find a PayPal Donate button, just in case you feel the urge to "Help us help you".



   What is this?00:25 AM
Blog Ref URL:  http://www.dotnetfordevices.com/forum.html#185


Thursday, December 23, 2004
An intriguing blog entry

You probably know that Mike Hall is technical product manager in the Embedded Devices Group. Therefore a blog entry with this “inviting” title is a must read:

I will NEVER use Windows CE or Windows XP Embedded !!!

You have to promise me one thing: Don’t just quote or read this title, but read the entire blog entry. You will find out that it makes a lot of sense.



   What is this?07:33 AM
Blog Ref URL:  http://www.dotnetfordevices.com/forum.html#184


Sunday, December 12, 2004
Click Once functionality
That's what one gets for preparing a demonstration on Smart Client Applications. One of the important concepts (at least for desktop and laptop machines) is the future possibility of ClickOnce deployment. With this technology we have a very simple deployment strategy possible. Everytime the application is started we can for instance when we are connected to a network take a look at a server (or a website) to find out if a new version of our application exists. If so, we can either download it automatically or allow the user to download / refuse the updated version. For my demonstration that is due this Friday, I of course want to demonstrate the cool capability. Since I am using a laptop with rather limited resources for all my talks and demonstrations I once again had to install Visual Studio 2005, beta 1 inside a VPC 2004 on the laptop. To keep the system as performant as possible I decided to install as little as possible of VS 2005. Well, that was a mistake. When I tried to publish my newly created application I did not get an error, but no publish wizard either. I didn't have a clue what was going wrong. The solution? Very simple. Just reinstall VS 2005 again, but now with default options. After that I tried using the publish wizard again and it was working great. This was some good luck I think. I definitely would not want VS 2005 on my production machine yet, so a VPC is great to install the product on. Not because VS 2005 would be bad, but I just don't like to have beta products on my production machine (as nobody should). Since my company only has limited possibilities to invest in machines, VPC 2004 is very helpfull. I guess I just should not try to install the absolute minimum (in my opinion) of beta products. Sorry, Microsoft. I am not even sure what I was doing here, so I can't even submit a bug report. I simply have a tight deadline to make, so my success this time has priority over Microsoft's :-). The take away from this entry? Either install products using the default options if you need them for talks, otherwise, please play with non-default installations and report the problems. I guess the later is more usefull, so I promise that I will dig into this (potential) problem a little further when I have more time.

   What is this?22:44 PM
Blog Ref URL:  http://www.dotnetfordevices.com/forum.html#183


Friday, December 10, 2004
Don Box on giving good presentations
I want to be a good speaker myself, so it would have been better not giving this away. At the same time it is good to listen to and great entertainment. As long as you promise not to learn something from it :-). Just listen to the things Don Box talks about on Channel 9 but don't take anything away from it.

   What is this?07:36 AM
Blog Ref URL:  http://www.dotnetfordevices.com/forum.html#182


Smart Clients

Don’t be mistaken. A smart client has nothing to do with a smart device. At the same time, a smart client can run on a smart device. Right now, at least my beta version of VS 2005 does not have support for OneClick deployment for smart devices (I don’t even know if this is something that will be supported, although it would be pretty cool). At the same time, a smart client is an application that shares the best of thin client applications and rich client applications. In other words, a smart client combines the best of a web based application with the best of a rich ‘PC or device’ application. One of the things that make a client smart is the fact that it is aware of being connected or disconnected. For an upcoming presentation I am preparing a demo that shows a ‘smart client on smart device’ scenario. For this scenario, it is absolutely necessary to know if the device is connected to the Internet or not. Instead of re-inventing the wheel and coding a lot myself, I took a look at the functionality that my buddies at OpenNETCF have provided in the Smart Device Framework. It turns out that the OpenNETCF.Net namespace has exactly the functionality that I need. Using the ConnectionManager class I can find out easily if the application on the device is connected or not. It is just a simple matter of adding a few event handlers that keep track of the connection state of the device. In the scenario for my demonstration I simply store some names and addresses of people or organizations. If not connected, the user has to provide all address details. If connected, the user only has to supply name, address and zip code and all other address details are filled out by a web service. The sample application becomes even richer by showing a map of the location the address is at, using the MapPoint web service. Even though this is just a simple example, I am confident that it will show the strength of a smart client application. My definition of a smart client is the following (which I am sure I’ve read somewhere else as well): A smart client combines the strength of a web application with the richness of a rich client application. In the demonstration this is exactly what is happening. Data entry and retrieval is as user friendly as you can expect from a rich client. At the same time, the application gets a lot more functionality when it can incorporate web services (automatically filling in address details and showing location maps). All in all, smart clients are fun to experiment with. They are new, so there are lots of areas’s to investigate, helping to make smart clients as smart as they can get. Oh, one of the points I was trying to make here: Don’t try to re-invent the wheel. Using some functionality of OpenNETCF.org’s Smart Device Framework saved me a lot of time. You might feel the same, so check it out. Another point I want to make: ClickOnce is a great deployment scenario for the desktop in v2 of the .NET Framework. I hope we, smart device developers, will get similar functionality soon as well.



   What is this?01:25 AM
Blog Ref URL:  http://www.dotnetfordevices.com/forum.html#181


Friday, December 10, 2004
Don Box on giving good presentations
I want to be a good speaker myself, so it would have been better not giving this away. At the same time it is good to listen to and great entertainment. As long as you promise not to learn something from it :-). Just listen to the things Don Box talks about on Channel 9 but don't take anything away from it.

   What is this?07:36 AM
Blog Ref URL:  http://www.dotnetfordevices.com/forum.html#182


Smart Clients

Don’t be mistaken. A smart client has nothing to do with a smart device. At the same time, a smart client can run on a smart device. Right now, at least my beta version of VS 2005 does not have support for OneClick deployment for smart devices (I don’t even know if this is something that will be supported, although it would be pretty cool). At the same time, a smart client is an application that shares the best of thin client applications and rich client applications. In other words, a smart client combines the best of a web based application with the best of a rich ‘PC or device’ application. One of the things that make a client smart is the fact that it is aware of being connected or disconnected. For an upcoming presentation I am preparing a demo that shows a ‘smart client on smart device’ scenario. For this scenario, it is absolutely necessary to know if the device is connected to the Internet or not. Instead of re-inventing the wheel and coding a lot myself, I took a look at the functionality that my buddies at OpenNETCF have provided in the Smart Device Framework. It turns out that the OpenNETCF.Net namespace has exactly the functionality that I need. Using the ConnectionManager class I can find out easily if the application on the device is connected or not. It is just a simple matter of adding a few event handlers that keep track of the connection state of the device. In the scenario for my demonstration I simply store some names and addresses of people or organizations. If not connected, the user has to provide all address details. If connected, the user only has to supply name, address and zip code and all other address details are filled out by a web service. The sample application becomes even richer by showing a map of the location the address is at, using the MapPoint web service. Even though this is just a simple example, I am confident that it will show the strength of a smart client application. My definition of a smart client is the following (which I am sure I’ve read somewhere else as well): A smart client combines the strength of a web application with the richness of a rich client application. In the demonstration this is exactly what is happening. Data entry and retrieval is as user friendly as you can expect from a rich client. At the same time, the application gets a lot more functionality when it can incorporate web services (automatically filling in address details and showing location maps). All in all, smart clients are fun to experiment with. They are new, so there are lots of areas’s to investigate, helping to make smart clients as smart as they can get. Oh, one of the points I was trying to make here: Don’t try to re-invent the wheel. Using some functionality of OpenNETCF.org’s Smart Device Framework saved me a lot of time. You might feel the same, so check it out. Another point I want to make: ClickOnce is a great deployment scenario for the desktop in v2 of the .NET Framework. I hope we, smart device developers, will get similar functionality soon as well.



   What is this?01:25 AM
Blog Ref URL:  http://www.dotnetfordevices.com/forum.html#181


Tuesday, December 7, 2004
A question for you
Since last week's Webcast on multithreaded applications for the .NET CF I've had many reactions by email. Not only for requests of the demo code, but also with requests for future Webcasts. What I would love to know is if there are any .NET CF related topics that you might be interested in. The more people that react with a particular topic, the bigger the chance that we might create a Webcast around that topic. Any idea's. Please send me an email.

   What is this?21:30 PM
Blog Ref URL:  http://www.dotnetfordevices.com/forum.html#180


Friday, December 3, 2004
Multithreading application exploration to be continued

Just in case you missed our last MSDN Webcast on creating great multithreading applications with the .NET Compact Framework, the recording is now online. If you listened to the Webcast and are interested in all sample code you can still send me an email requesting for it.

Right now it looks like there will be another Webcast about multithreading .NET CF applications. The schedule is set for February 9th, 2005 when we will most like dig deeper into synchronization objects and thread priorities. When there is more information about this Webcast I'll make sure to post it on the blog.



   What is this?23:16 PM
Blog Ref URL:  http://www.dotnetfordevices.com/forum.html#179


Wednesday, December 1, 2004
Join me for an MSDN Webcast?

Make sure to tune in today, December 1st between 11.00 AM PST (= GMT -8) and 12.30 PM PST (=GMT -8), for the following MSDN Webcast:

Learn to Develop Great Multithreaded Applications Using the .NET Compact Framework

Have you ever wondered how to properly create and terminate threads? Are you familiar with the challenges of updating user interface controls from inside worker threads? Are you unsure what synchronization objects to use at different times in multithreaded applications? Have you ever wondered what thread safety means? In this demonstration-loaded webcast, we will cover these key topics and show you the proper way to create great managed multithreaded applications in either Microsoft® Visual C#® or Visual Basic® .NET. Each demonstration will begin with an example of the wrong way to write multithreaded applications, examining a number of potential problems you might run into and how you can avoid them.

During the Webcast we keep our demonstrations as simple as possible, yet very relevant for everyone who needs to deal with multithreaded applications. After the Webcasts, all source code and a description of each individual demonstration will be available for you to further experiment with.



   What is this?11:23 AM
Blog Ref URL:  http://www.dotnetfordevices.com/forum.html#178


Friday, November 26, 2004
Rapid screen updates
The techniques, as described in the MSDN article on writing mobile games using the .NET Compact Framework are very useful for non gaming applications as well. That is what I just found out during work on the next version of the "real-time behavior of the .NET Compact Framework" article. This time we will go much further than we did in the original article. This time we are taking the experiment much further. We are in the midst of rewriting the entire application, both in native and in managed code. We will retrieve much more performance information from the system, the UI will respond much better and all test runs are now executed on a Windows CE 5.0 image. It is very likely that we will create the possibility to switch between using a managed device driver and a device driver written in native code get data from the signal generator we are using to feed the system with interrupts. Hopefully we can also present comparisons between v1 andv2 of the CF, that might give indications on the possible performance improvements we might expect from CF v2 once it is released. Besides data that we also measured in the previous article, like ISR-IST latencies, we will also measure screen update frequencies (that are depending on the efficiency of the UI code, but also on the frequence with which we feed the system with interrupts). Once our work is done and the article is re-written you probably will not reconize a thing from the previous article. Hopefully we can present some exciting results in the end (I am especially curious what kind of results we get when using a managed driver). And everything accompanied by simpler, easier to understand code (at least, that is our goal). Moving back to the beginning of this blog. Since we are incorporating application responsiveness as well, it becomes extremely important to get our UI updates as efficient as possible. It seems very feasible to use some of the same techniques presented in the above mentioned article. For instance, we are using an offline bitmap right now to draw results in and simply move the bitmap contents to the client area of the screen whenever a screen update is required. Even though our target device will be a single board computer, testing some of the UI parts on a PocketPC showed some pretty exciting results already. Just keep tuned to the blog. It will be a couple of weeks, perhaps even months before you can expect the next version of our article. Until actual publication I will share some of the things we find, run into, have questions about etc. on the blog.

   What is this?23:52 PM
Blog Ref URL:  http://www.dotnetfordevices.com/forum.html#177


Thursday, November 25, 2004
WaitForSingleObject

In preparation for my next MSDN Webcast I was working on some samples. Since it is cool to be able to show samples in both VB.NET and C# I wanted to have all samples available in both languages. Usually converting from one to the other is not too hard to do, even without one of the existing software language converters. With the last sample, using OpenNETCF.org's Smart Device Framework I ran into problems with OpenNETCF.Win32.Core.WaitForSingleObject. This API is not CLS compliant. It expects a timeout value, declared as an UInt32 parameter. The return value of the function is of type OpenNETCF.Win32.Core.Wait (an enum). To be able to use WaitForSingleObject, some creativity was needed. To begin with, automatic conversion from an Int32 to an UInt32 is not possible, so this function call failed:

        WaitForSingleObject(myWin32Event, 1000)

The second problem I ran into is that I wanted to use WaitForSingleObject inside a while loop. The function is returning an enum value, indicating why the function returned. The idea behind waiting for an event is to be able to immediately break out of a while loop inside a worker thread. Since I couldn't compare the returned value to an expected value. To be able to do so, another conversion was necessary, converting the returned enum value to an Int32. Here is the working result:

    Private Sub MyWorkerThread()

        While System.Convert.ToInt32( _

                WaitForSingleObject(myWin32Event, UInt32.Parse("1000"))) <> 0

 

            listBoxEntry = DateTime.Now.ToLongTimeString() + " - " + _

                          workerThread.Name + " state = " + _

                          workerThread.State.ToString()

            Me.Invoke(New EventHandler(AddressOf AddListBoxEntry))

 

        End While

        Thread.Sleep(10000)

    End Sub

This is one of those cases where C# really is easier. Of course it has to do with the fact that the WaitForSingleObject API is not CLS Compliant in the Smart Device Framework, but it is kind of nice to show people that C# is actually easier to use than VB.NET. Forgive me, I simply love C#.

    private void WorkerThread()

    {

      while (Core.WaitForSingleObject(myWin32Event, 1000)

        != Core.Wait.Object)

      {

        listBoxEntry = DateTime.Now.ToLongTimeString() +

          " - " + workerThread.Name + " state = " +

          workerThread.State.ToString();

        this.Invoke(new EventHandler(AddListBoxEntry));

      }

      Thread.Sleep(10000);

    }



   What is this?15:25 PM
Blog Ref URL:  http://www.dotnetfordevices.com/forum.html#176


Tuesday, November 23, 2004
Real-time behavior of the .NET Compact Framework

This story started exactly two years ago. At that time we wanted to find out if it was possible to create a managed application that, in combination with a native IST, showed hard real-time behavior. We were curious about the influence of the Garbage Collector and the JITter and came to some cool conclusions that you can read about in this article.

With the recent release of Windows CE 5.0 it was time to at least create an update of the original application to find out how it would run with the newest version of the Windows CE Operating System. Even though it will be some time before the results are published in an update of the original article the first look at results today were promising, not really a surprise, taking the Windows CE 5.0 evalutation of Dedicated Systems in mind. I am not yet sure if there will be an update for this article using v1 of the .NET CF. We might as well wait until we have a good build of v2 of the .NET CF available and run the entire test on v2 (that will be released with Visual Studio 2005).

Moving on, right now we are also looking at moving as much functionality as possible to managed code, including the Interrupt Service Thread we are using. Running that thread inside the original managed application shows some effects that we were more or less expecting. Even if the IST is running at priority 0, all managed threads seem to be blocked when Garbage Collection occurs, which makes this first attempt probably unusable. We have a couple of more creative idea's to get better behavior. Probably I will share those with you at a later stage. Given the fact that our test applications keeps track of all kinds of timing information, it is also pretty interesting to be able to see the costs in time of different types of Garbage Collections. Another thing that we seem to be able to measure (or at least give some rough timing information about) is the cost of P/Invokes. We need more time to study the results and do many, many more tests, but it seems that these real-time experiments will result in a couple of articles over the upcoming months. We are trying to keep track of as many test run results as possible and in a later stage repeat these runs with v2 of the .NET Compact Framework. In that way we can also compare performance of v1 and v2. All in all there are enough things to be excited about and to work on. This story surely will be continued in the (near) future. Make sure to check back frequently to the blog, because I will give regular updates about our work on it.



   What is this?22:01 PM
Blog Ref URL:  http://www.dotnetfordevices.com/forum.html#175


Friday, November 19, 2004
An appointment coming up

If you are up to digging into multi-threading using the .NET Compact Framework, make sure to join us during this MSDN Webcast on December 1st, 11.00 AM PST (or 7.00 PM GMT if you wish). The explanation on MSDN tells you exactly what to expect, but just in case you didn’t click through right now, this is what we will talking about:

Have you ever wondered how to properly create and terminate threads? Are you familiar with the challenges of updating user interface controls from inside worker threads? Are you unsure what synchronization objects to use at different times in multithreaded applications? Have you ever wondered what thread safety means? In this demonstration-loaded webcast, we will cover these key topics and show you the proper way to create great managed multithreaded applications in either Microsoft® Visual C#® or Visual Basic® .NET. Each demonstration will begin with an example of the wrong way to write multithreaded applications, examining a number of potential problems you might run into and how you can avoid them.  

I’ll make sure to have all sample code available for everybody who is interested after the webcast. If there is time enough I will also try to prepare a little document in which all samples are explained. To receive all of that there is only one thing you need to do. Join me on December 1st. I am looking forward to meet all of you online.



   What is this?22:37 PM
Blog Ref URL:  http://www.dotnetfordevices.com/forum.html#174


Thursday, November 18, 2004
Here's a scary thought

I was wondering why, all of a sudden, I got questions by email about the "Receiving SMS Messages inside a Managed Application" article. It is no surprise that people have questions about the sample code, after all, being a mix of both native and managed code it is somewhat complex to build the sample. The interesting question for me was why all of a sudden the questions appeared today and yesterday. After all, the article has been online for a while already. Well, it turns a link to the article is right now available on the MSDN home page. I already had the idea that the MSDN Website is visited frequently, but this is sort of unofficial proof for it. Keep on mailing me if you have questions about the article or about the sample code. It might be a few days before I can answer you, but I will do everything I can to get you up and running in case you have problems building the sample code. Hopefully everybody who looked at the article found some more interesting articles under the mobile & embedded section of the MSDN library.



   What is this?07:23 AM
Blog Ref URL:  http://www.dotnetfordevices.com/forum.html#173


Wednesday, November 17, 2004
Thoughts about Control.Invoke

Today I was preparing some samples for an upcoming article for a local magazine on managed multi-threaded applications. I thought it would be cool to start with a single threaded application, that performs a lengthy operation in a button’s click event handler and show how to improve the user experience by using a separate worker thread to execute the lengthy operation. The first steps were very simple, moving the contents of the button’s click event handler to a separate thread and creating that thread when the button is clicked. In code something it looks like this:

    private void button1_Click(object sender, System.EventArgs e)

    {

      Thread workerThread = new Thread(new ThreadStart(WorkerThread));

      workerThread.Start();

    }

 

    private void WorkerThread()

    {

      Thread.Sleep(10000);

    }

Then I decided to expand the sample a little bit, preventing a user from terminating the application when the worker thread is still running. Using OpenNETCF.org’s Smart Device Framework this would have been easy, since the ThreadEx method contains an IsAlive property, just like the full .NET Framework. Of course, using a bool variable it was not that hard to implement something like this myself:

    private void button1_Click(object sender, System.EventArgs e)

    {

      Thread workerThread = new Thread(new ThreadStart(WorkerThread));

      workerThread.Start();

    }

 

    private void WorkerThread()

    {

      workerThreadIsAlive = true;

      Thread.Sleep(10000);

      workerThreadIsAlive = false;

    }

 

    private void Form1_Closing(object sender, System.ComponentModel.CancelEventArgs e)

    {

      if (workerThreadIsAlive)

      {

        MessageBox.Show("Please wait until the application is done processing");

        e.Cancel = true;

      }

    }

The last thing I wanted to do was disabling a button when the worker thread is active and re-enabling that button again when the worker thread is done. This is something that can easily be done by adding an event handler that gets called when the worker thread terminates. My first attempt worked but is potentially unsafe, because the event handler is executed on the worker thread and I am updating a UI control within that event handler.

    public event EventHandler WorkerThreadDone;

 

    protected virtual void OnWorkerThreadDone(EventArgs e)

    {

      if (WorkerThreadDone != null)

        WorkerThreadDone(this,e);

    }

 

    private void button1_Click(object sender, System.EventArgs e)

    {

      button1.Enabled = false;

      this.WorkerThreadDone +=new EventHandler(Form1_WorkerThreadDone);

      Thread workerThread = new Thread(new ThreadStart(WorkerThread));

      workerThread.Start();

    }

 

    private void WorkerThread()

    {

      Thread.CurrentThread.Priority = ThreadPriority.AboveNormal;

      workerThreadIsAlive = true;

      Thread.Sleep(10000);

      OnWorkerThreadDone(EventArgs.Empty);

      workerThreadIsAlive = false;

    }

 

    private void Form1_WorkerThreadDone(object sender, System.EventArgs e)

    {

      button1.Enabled = true;

      this.WorkerThreadDone -= new EventHandler(Form1_WorkerThreadDone);

    }

To solve this potential problem I decided to use Control.Invoke inside the event handler to guarantee that the UI update would run on the main thread (that created the control). Looking at my code it was time to think again. Here I was writing an event handler that actually used another event handler to be passed to Control.Invoke to actually update the control.

    public event EventHandler WorkerThreadDone;

 

    protected virtual void OnWorkerThreadDone(EventArgs e)

    {

      if (WorkerThreadDone != null)

        WorkerThreadDone(this,e);

    }

 

    private void button1_Click(object sender, System.EventArgs e)

    {

      button1.Enabled = false;

      this.WorkerThreadDone +=new EventHandler(Form1_WorkerThreadDone);

      Thread workerThread = new Thread(new ThreadStart(WorkerThread));

      workerThread.Start();

    }

 

    private void WorkerThread()

    {

      workerThreadIsAlive = true;

      Thread.Sleep(10000);

      OnWorkerThreadDone(EventArgs.Empty);

      workerThreadIsAlive = false;

    }

 

    private void Form1_WorkerThreadDone(object sender, System.EventArgs e)

    {

      this.Invoke(new EventHandler(ReEnableButton));

      this.WorkerThreadDone -= new EventHandler(Form1_WorkerThreadDone);

    }

 

    private void ReEnableButton(object sender, EventArgs e)

    {

      button1.Enabled = true;

    }

Using two separate event handlers sounded pretty dumb, but it triggered my thoughts. What if the original event handler would be called via Control.Invoke. In that case, the original event handler would run inside the main thread and I could get rid of the second event handler. This is the final code snippet. Putting a breakpoint inside the event handler and viewing Thread.CurrentThread inside the Visual Studio.NET 2003 command window showed that indeed the event handler was now running within the main thread.

    public event EventHandler WorkerThreadDone;

 

    protected virtual void OnWorkerThreadDone(EventArgs e)

    {

      if (WorkerThreadDone != null)

        this.Invoke(WorkerThreadDone);

    }

 

    private void button1_Click(object sender, System.EventArgs e)

    {

      button1.Enabled = false;

      this.WorkerThreadDone +=new EventHandler(Form1_WorkerThreadDone);

      Thread workerThread = new Thread(new ThreadStart(WorkerThread));

      workerThread.Start();

    }

 

    private void WorkerThread()

    {

      workerThreadIsAlive = true;

      Thread.Sleep(10000);

      OnWorkerThreadDone(EventArgs.Empty);

      workerThreadIsAlive = false;

    }

 

    private void Form1_Closing(object sender, System.ComponentModel.CancelEventArgs e)

    {

      if (workerThreadIsAlive)

      {

        MessageBox.Show("Please wait until the application is done processing");

        e.Cancel = true;

      }

    }

 

    private void Form1_WorkerThreadDone(object sender, System.EventArgs e)

    {

      button1.Enabled = true;

      this.WorkerThreadDone -= new EventHandler(Form1_WorkerThreadDone);

    }

This is a perfect example of the fact that it is still important to think about what is going on inside a system, even though great development environments like Visual Studio.NET 2003 try to do the thinking for us. Using my brains for a short while got me a simpler, better responding and easier to maintain application.



   What is this?21:28 PM
Blog Ref URL:  http://www.dotnetfordevices.com/forum.html#172


Sunday, November 14, 2004
Accuracy in reporting

This is not the first time I am paying attention to things that “so-called” journalists are writing in computer magazines. Sometimes you can read remarkable “facts” in articles. Like this one in the Dutch computer magazine “Computable”. Since the magazine is in Dutch I translated a few sentences from an article about Windows XP Embedded. The article was all about Service Pack 2 for Windows XP Embedded. In the article, the author mentioned point-of-sale systems. Amongst others, the article announced Windows XP Embedded for Point of Service (to be available in the first half of 2005). Here is a translated quote from the article:

Annalists estimate that between 40 and 70 percent of all electronic point-of-sale systems runs a Microsoft operating system. For a large part they run older Windows versions like ‘real-time’ Windows CE and MS-DOS.

A journalist that would know at least something about this subject would at least know that MS-DOS is not an older Windows version. The same journalist would also know that Windows CE is not an older Windows version. It is a modern operating system of which version 5.0 has been released recently. Journalism is a wonderful profession, but it would be great if people who inform a more or less general audience at least know what they are writing about. When writing about embedded systems, at least here in Holland, too often so called journalists write absolute nonsense. Hopefully this will change in the future. Perhaps computer magazines need more input from the industry, preventing them against their own journalists. I’d be happy to provide information about Microsoft embedded products, so drop me an email and we will talk about it.



   What is this?17:44 PM
Blog Ref URL:  http://www.dotnetfordevices.com/forum.html#171


Monday, November 8, 2004
A good thing to see
Hey, Jono, thanks for pointing people to the SMS article. If somebody reading this wants to know more about managed code development for smart devices like PocketPC and SmartPhone (not necessarly about receiving SMS messages), just make sure you tell Jonathan Wells about it. You can also directly contact me if you want some particular topic to be discussed. We'll all try to satisfy your guestions.

   What is this?00:39 AM
Blog Ref URL:  http://www.dotnetfordevices.com/forum.html#170


Friday, November 5, 2004
A PC Magazine article you should not miss
Will the newly announced browser war be as important as the one that was fought a couple of years ago? According to this PC Magazine article it might be. It surely looks like we are at the edge of some interesting developments. Hopefully technology will benefit from increased competition. After all, in that case we might all be winners. Oh, and by the way: What about browser enabled devices? I realize you have to read the article for this blog entry to make sense.

   What is this?16:23 PM
Blog Ref URL:  http://www.dotnetfordevices.com/forum.html#169


Tuesday, November 2, 2004
Election day here.

Of course the US elections are covered all over the world. This morning I read a comment in the Scottsdale Tribune that tells it all:

After observing the candidates' behavior over this campaign, and researching their records and statements, there appears to be only one conclusion: The outcome of this election will tell us whether the majority of people of America are as smart as John Kerry believes they are or as dumb as George Bush hopes they are.

Even though I am not a US citizen I am sure I am going to miss all the election attention after today. It was fun to watch and listen to the campaign. Too bad it is all over after today. Or is it? If it is going to be a repeat from 4 years ago we probably have many weeks or months ahead of us with wonderful news. Given the number of lawyers that are assembled in the so called swing states this is exactly what might happen. Anyway, I guess this is about the last I will say about the US elections. From tomorrow on I will probably blog again about exciting software.


   What is this?18:08 PM
Blog Ref URL:  http://www.dotnetfordevices.com/forum.html#168


A drive through - How convenient!

In Holland we are still getting used to Starbucks. I mean, there is not one within at most 50 feet from where you are yet. Over the years though it was so wonderful to see them appear anywhere. During my first visit to the USA, back in 1977, the only coffee I could get was sort of a light brown watery coloured liquid that vaguely tasted like milk.

Therefore my first visit to Starbucks was shocking. They offered real coffee in a nice surrounding. It was not the cheapest place to get your coffee, but later I understood that this was all about “The Experience”. People are willing to pay a little more (or actually a lot more) for there coffee if it is served in a nice place, if there are lots of specialty drinks available, and if you have a wireless access point conveniently close by. So far so good, the experience is even taken further now by offering a satellite radio station, at least, if I understand it correct.

But what about my latest experience? Going to a Starbucks that actually has a drive through facility. The entire experience all of a sudden becomes irrelevant. All of a sudden it is back to basics. All that counts is the quality of the drink. Yet I love it. My first Starbucks drive though experience was great. I could get a great tasting triple espresso and didn’t have to wait too long for it to be ready. I could take it back to my friend’s home here in Phoenix. I could drink it right away, and there was no need going through the trouble of making my own coffee. Now that is an experience that counts. That is an experience I am ready to pay a dollar or two for.

I wonder if there would be a demand for Dutch junk food with an added experience as well in this country. In that case I probably would leave my brilliant software career for what it is and start making a lot of money. If I only knew how. Sigghh.



   What is this?17:56 PM
Blog Ref URL:  http://www.dotnetfordevices.com/forum.html#167


Tuesday, November 2, 2004
Election day here.

Of course the US elections are covered all over the world. This morning I read a comment in the Scottsdale Tribune that tells it all:

After observing the candidates' behavior over this campaign, and researching their records and statements, there appears to be only one conclusion: The outcome of this election will tell us whether the majority of people of America are as smart as John Kerry believes they are or as dumb as George Bush hopes they are.

Even though I am not a US citizen I am sure I am going to miss all the election attention after today. It was fun to watch and listen to the campaign. Too bad it is all over after today. Or is it? If it is going to be a repeat from 4 years ago we probably have many weeks or months ahead of us with wonderful news. Given the number of lawyers that are assembled in the so called swing states this is exactly what might happen. Anyway, I guess this is about the last I will say about the US elections. From tomorrow on I will probably blog again about exciting software.


   What is this?18:08 PM
Blog Ref URL:  http://www.dotnetfordevices.com/forum.html#168


A drive through - How convenient!

In Holland we are still getting used to Starbucks. I mean, there is not one within at most 50 feet from where you are yet. Over the years though it was so wonderful to see them appear anywhere. During my first visit to the USA, back in 1977, the only coffee I could get was sort of a light brown watery coloured liquid that vaguely tasted like milk.

Therefore my first visit to Starbucks was shocking. They offered real coffee in a nice surrounding. It was not the cheapest place to get your coffee, but later I understood that this was all about “The Experience”. People are willing to pay a little more (or actually a lot more) for there coffee if it is served in a nice place, if there are lots of specialty drinks available, and if you have a wireless access point conveniently close by. So far so good, the experience is even taken further now by offering a satellite radio station, at least, if I understand it correct.

But what about my latest experience? Going to a Starbucks that actually has a drive through facility. The entire experience all of a sudden becomes irrelevant. All of a sudden it is back to basics. All that counts is the quality of the drink. Yet I love it. My first Starbucks drive though experience was great. I could get a great tasting triple espresso and didn’t have to wait too long for it to be ready. I could take it back to my friend’s home here in Phoenix. I could drink it right away, and there was no need going through the trouble of making my own coffee. Now that is an experience that counts. That is an experience I am ready to pay a dollar or two for.

I wonder if there would be a demand for Dutch junk food with an added experience as well in this country. In that case I probably would leave my brilliant software career for what it is and start making a lot of money. If I only knew how. Sigghh.



   What is this?17:56 PM
Blog Ref URL:  http://www.dotnetfordevices.com/forum.html#167


Saturday, October 30, 2004
Being in Redmond: Contagious?
It almost seems so. It feels like I picked up a habbit from Mike Hall. If you read his blog on a regular base you know that Mike always looks for Starbucks, all over the world. I totally agree with him that a local Starbucks should be available always within 50 feet or so, anywhere! Sipping a tripple espresso from Starbucks is a sure treat for me. At the same time I always have this other craving. Looking for good, new Thai restaurants. This week I was lucky to find another one. They seem to have quite a few here in the Pacific Northwest, which is a good thing. Anyway, if you are near Redmond, WA, make sure to find downtown and check out Thai Ginger. It's worth it!

   What is this?05:38 AM
Blog Ref URL:  http://www.dotnetfordevices.com/forum.html#166


Friday, October 29, 2004
So it can rain in Seattle

Right now I am on my 10th or so visit to Seattle. So far during all those times, staying there between one and three weeks each, I have never seen rain here, even though everybody is talking about rain. Well, today I found out that it does really rain here. Well, rain? It was something else than we are used to in Holland. It was like a little drizzle, but indeed it lasted for the whole day. Friends of me living here were almost glad it rained today, so they could finally come up with some proof, not with stories alone. Well, they should stay for a week or so in Holland and they would find out what rain really is. However, I am glad that it is not possible to react on my blog. I guess I would be drowned in reactions from people living in this part of the world.



   What is this?07:10 AM
Blog Ref URL:  http://www.dotnetfordevices.com/forum.html#165


Linux vs Windows

Here's a good read if you are in that hard decision making process to either choose Windows or Linux. It may look biased at first but I strongly recommend to read this executive email by Steve Ballmer anyway.



   What is this?02:54 AM
Blog Ref URL:  http://www.dotnetfordevices.com/forum.html#164


Friday, October 29, 2004
So it can rain in Seattle

Right now I am on my 10th or so visit to Seattle. So far during all those times, staying there between one and three weeks each, I have never seen rain here, even though everybody is talking about rain. Well, today I found out that it does really rain here. Well, rain? It was something else than we are used to in Holland. It was like a little drizzle, but indeed it lasted for the whole day. Friends of me living here were almost glad it rained today, so they could finally come up with some proof, not with stories alone. Well, they should stay for a week or so in Holland and they would find out what rain really is. However, I am glad that it is not possible to react on my blog. I guess I would be drowned in reactions from people living in this part of the world.



   What is this?07:10 AM
Blog Ref URL:  http://www.dotnetfordevices.com/forum.html#165


Linux vs Windows

Here's a good read if you are in that hard decision making process to either choose Windows or Linux. It may look biased at first but I strongly recommend to read this executive email by Steve Ballmer anyway.



   What is this?02:54 AM
Blog Ref URL:  http://www.dotnetfordevices.com/forum.html#164


Monday, October 25, 2004
Platform Builder and managed applications (3)

I promised to come back with the results of creating a managed WinForms application using Platform Builder. Well, this turned out much easier than I thought it would be at first. It certainly did not take a 3 hour flight to figure this out, just a couple of minutes. The only thing that was missing to build a WinForm application were a number of references to the Managed Code tab under project settings. Adding these references did the trick:

$(_MANAGED_FRAMEWORK_DIR)\system.drawing.dll;
$(_MANAGED_FRAMEWORK_DIR)\system.windows.forms.dll;
$(_MANAGED_FRAMEWORK_DIR)\system.data.dll

Besides that I changed the target type under the general tab of project settings to Managed Windows Executable. That was all there was to create a managed WinForms application in C#. Having figured it out so fast meant I could spent the entire flight from Phoenix to Seattle listening to some cool music on my iPod. Make sure to check the article on managed code development using Platform Builder as well, since it contains all the details.



   What is this?06:38 AM
Blog Ref URL:  http://www.dotnetfordevices.com/forum.html#163


Saturday, October 23, 2004
Platform Builder and managed applications (2)

Still being intrigued by this topic I tried to compile a little Visual Basic.NET console application using Platform Builder. Thanks to a more or less vague error message it became clear that Visual Basic.NET projects are not supported inside Platform Builder 5.0.

BUILD: [Thrd:Sequence:Type  ] Message
BUILD: [00:0000000000:PROGC ] Checking for \WINCE500\sdk\bin\i386\srccheck.exe.
BUILD: [00:0000000001:PROGC ] SrcCheck exit code: 0 (dec).
BUILD: [00:0000000002:PROGC ] Compile and Link for x86.
BUILD: [00:0000000003:PROGC ] Computing include file dependencies:
BUILD: [00:0000000004:PROGC ] Checking for SDK include directory: D:\WINCE500\sdk\ce\inc.
BUILD: [00:0000000005:PROGC ] Scan \WINCE500\PBWorkspaces\MyPlatform\MyManagedVBApp\
BUILD: [00:0000000006:WARNN ] \WINCE500\PBWorkspaces\MyPlatform\MyManagedVBApp\: Missing source file: MyManagedVBApp.vb.
BUILD: [00:0000000007:ERRORE] \WINCE500\PBWorkspaces\MyPlatform\MyManagedVBApp\: Invalid entry in sources file: MyManagedVBApp.vb.
BUILD: [00:0000000008:PROGC ]                      Files      Warnings      Errors
BUILD: [00:0000000009:PROGC ] Midl                     0             0           0
BUILD: [00:0000000010:PROGC ] Resource                 0             0           0
BUILD: [00:0000000011:PROGC ] Message                  0             0           0
BUILD: [00:0000000012:PROGC ] Precomp Header           0             0           0
BUILD: [00:0000000013:PROGC ] C/Cpp/Cxx                0             0           0
BUILD: [00:0000000014:PROGC ] Assembler                0             0           0
BUILD: [00:0000000015:PROGC ] Static Libraries         0             0           0
BUILD: [00:0000000016:PROGC ] Dll's                    0             0           0
BUILD: [00:0000000017:PROGC ] Exe's                    0             0           0
BUILD: [00:0000000018:PROGC ] Resx                     0             0           0
BUILD: [00:0000000019:PROGC ] Csharp Targets           0             0           0
BUILD: [00:0000000020:PROGC ] Other                    0             0           1
BUILD: [00:0000000021:PROGC ]
BUILD: [00:0000000022:PROGC ] Total                    0             0           1
BUILD: [00:0000000023:PROGC ]
BUILD: [00:0000000024:PROGC ] 0 Warnings,  1 Errors

I especially like the Invalid entry in sources file error. The source file was there, and simply renaming it to MyManagedVBApp.cs (and modifying the sources file accordingly) gave me totally different results, syntax errors because now the build system thought it was dealing with a C# file. The build summary made it clear as well that only Csharp targetrs are supported.

To absolutely make sure that only C# projects are supported I also looked at the makefile that is used to generate projects. The makefile can be found under $(_MAKEENVROOT)\makefile.def, but I warn you: don't do this at home!! This file is rather complicated. I found out that indeed only C# is supported. In an optimistic mood I was thinking for one second or so to add support for VB.NET to makefile.def, but knowing my own intellectual limitations :-) I decided not to do that. This is about 1 % of the contents of that makefile and it is already hard to understand what's going on.

$(MANAGED_TARGET):  $(SOURCES)
    @echo BUILD_MARKER:CSC_COMPILE_START Csharp Compile $(MANAGED_TARGET)
    @echo /nostdlib+
    @echo /noconfig
    @echo CSC_DEBUG_CMD_LINE:                  $(CSC_DEBUG_CMD_LINE)
    @echo CSC_DEBUG_DEFINE_CMD_LINE:           $(CSC_DEBUG_DEFINE_CMD_LINE)
    @echo CSC_UNDER_OS_DEFINE_CMD_LINE:        $(CSC_UNDER_OS_DEFINE_CMD_LINE)
 @echo CSC_OPTIMIZE_CMD_LINE:               $(CSC_OPTIMIZE_CMD_LINE)
    @echo UNSAFE_CMD_LINE:                     $(UNSAFE_CMD_LINE)
    @echo DOC_CMD_LINE:                        $(DOC_CMD_LINE)
    @echo MANAGED_TARGET_TYPE_CMD_LINE:        $(MANAGED_TARGET_TYPE_CMD_LINE)
    @echo CSC_DEFINES_CMD_LINE:                $(CSC_DEFINES_CMD_LINE)
    @echo MANAGED_REFERENCES_CMD_LINE:         $(MANAGED_REFERENCES_CMD_LINE)
    @echo MANAGED_ADDMODULES_CMD_LINE:         $(MANAGED_ADDMODULES_CMD_LINE)
    @echo MANAGED_LINKRESOURCES_CMD_LINE:      $(MANAGED_LINKRESOURCES_CMD_LINE)
    @echo MANAGED_RESOURCES_CMD_LINE:          $(MANAGED_RESOURCES_CMD_LINE)
    @echo MANAGED_WIN32ICONS_CMD_LINE:         $(MANAGED_WIN32ICONS_CMD_LINE)
    @echo MANAGED_WIN32RESOURCES_CMD_LINE:     $(MANAGED_WIN32RESOURCES_CMD_LINE)
    @echo MANAGED_RESX_RESOURCES_CMD_LINE:     $(MANAGED_RESX_RESOURCES_CMD_LINE)
    @echo MANAGED_RESX_LINKRESOURCES_CMD_LINE: $(MANAGED_RESX_LINKRESOURCES_CMD_LINE)
 @echo MANAGED_OS_VERSION_CMD_LINE:          $(MANAGED_OS_VERSION_CMD_LINE)
    @echo /out:$(MANAGED_TARGET) $(SOURCES)
    $(CSC) /noconfig @<<
/nostdlib+
$(CSC_DEBUG_CMD_LINE)
$(CSC_DEBUG_DEFINE_CMD_LINE)
$(CSC_UNDER_OS_DEFINE_CMD_LINE)
$(CSC_OPTIMIZE_CMD_LINE)
$(UNSAFE_CMD_LINE)
$(DOC_CMD_LINE)
$(MANAGED_TARGET_TYPE_CMD_LINE)
$(CSC_DEFINES_CMD_LINE)
$(MANAGED_REFERENCES_CMD_LINE)
$(MANAGED_ADDMODULES_CMD_LINE)
$(MANAGED_LINKRESOURCES_CMD_LINE)
$(MANAGED_RESOURCES_CMD_LINE)
$(MANAGED_WIN32ICONS_CMD_LINE)
$(MANAGED_WIN32RESOURCES_CMD_LINE)
$(MANAGED_RESX_RESOURCES_CMD_LINE)
$(MANAGED_RESX_LINKRESOURCES_CMD_LINE)
/out:$(MANAGED_TARGET) $(SOURCES) $(MANAGED_OS_VERSION_CMD_LINE)
<<NOKEEP
!  IF "TARGETTYPE" != "MANAGED_MODULE"
!    IF "$(_TGTOS)" == "CE"
#    Sign the assembly with a strong name if required.
     $(MANAGED_DELAYSIGN_COMMAND)
!    ENDIF
!  ENDIF
!  IF "TARGETTYPE" != "MANAGED_MODULE"
!    IF "$(BUILD_SIGN)" == "1"
    signbin $(MANAGED_TARGET)
!    ENDIF
!  ENDIF
!  IF "$(WINCEREL)" == "1"
      -$(__COPYCMD) $(MANAGED_TARGET) $(_FLATRELEASEDIR)
      -$(__COPYCMD) $(MANAGED_TARGET_PDB) $(_FLATRELEASEDIR)
!  ENDIF
    @echo BUILD_MARKER:CSC_COMPILE_END

!ENDIF

I surely am not ready to break the Windows CE build system right now, but perhaps one day I might try to add support for VB.NET. I am sure it would at least give me a tremendous understanding of the build system in PB 5.0 and let's face it, the worst that can happen is having to reinstall PB 5.0. Not something that would happen for the first time.

So VB.NET is out for the moment. Don't get me wrong, I don't need VB.NET support in PB. Having a C++ background my managed language of choice is C#, but I was just curious to find out what is possible inside PB.

There is only one more thing to do right now. Getting a full blown, managed, multi-threaded WinForms application build by PB and running that application without problems on a Windows CE target. Since I have a 3 hour flight from Phoenix, AZ to Seattle, WA tomorrow, that is going to be a great time to get that working. After that I will go back to my original idea of adding debug zones to a managed application. Just stay tuned.



   What is this?18:39 PM
Blog Ref URL:  http://www.dotnetfordevices.com/forum.html#162


Platform Builder and managed applications
If you want to find out how to create managed applications using Platform Builder don't miss this article. Right now I've only shown how to create a managed console application, written in C#. The article will be extended with WinForms applications as well. You might wonder what the use of all of this is. For this moment I consider this fun, simply investigating the possibilities that Platform Builder 5.0 offers. To create real life managed applications I will stay with Visual Studio. If for nothing else, I have not found a form designer within Platform Builder and I am pretty sure it is not there. To be honest, I am wondering why there is even support for managed projects inside Platform Builder.

   What is this?17:18 PM
Blog Ref URL:  http://www.dotnetfordevices.com/forum.html#161


Managed Applications inside Platform Builder 5.0
Once again it was worthwhile simply exploring through a development environment. In preparation for a class I will attend next week I was just looking through Platform Builder 5.0, creating a simple platform and adding a number of native applications to it. Looking at the different project settings I was intrigued by a managed code tab. Would it be possible to add managed code projects to a Platform Builder workspace? Right now this would be extremely helpful to me, because I am on the road and I only have Whidbey installed on my laptop. However, I also want to experiment a little with .NET CF v1 applications, because I was thinking about how cool it might be to use Windows CE debug zones inside a managed application. To play a little I wanted to have a managed application, add it to a Platform Builder and see if I could get debug zones working, you know, with a little P/Invoke or so. Since I only had Whidbey installed and didn’t want to install a beta v2 of the .NET CF on my Windows CE Platform I decided to wait a while before starting this experiment. With the possibility to create managed applications and compile them with Platform Builder I got new possibilities all of a sudden to create .NET CF v1 applications. First step of course is to find out if this is working. I can tell you already it is possible to create managed applications with Platform Builder 5.0, at least written in C#. I have to check if VB.NET is working as well. It takes a few steps to setup a managed project properly, although most of them are documented well in the PB documentation. I have decided to write a little article about this possibility though. When the article is done I will publish it on DotNETForDevices and inform you about its existence through the blog.

   What is this?00:35 AM
Blog Ref URL:  http://www.dotnetfordevices.com/forum.html#160


Saturday, October 23, 2004
Platform Builder and managed applications (2)

Still being intrigued by this topic I tried to compile a little Visual Basic.NET console application using Platform Builder. Thanks to a more or less vague error message it became clear that Visual Basic.NET projects are not supported inside Platform Builder 5.0.

BUILD: [Thrd:Sequence:Type  ] Message
BUILD: [00:0000000000:PROGC ] Checking for \WINCE500\sdk\bin\i386\srccheck.exe.
BUILD: [00:0000000001:PROGC ] SrcCheck exit code: 0 (dec).
BUILD: [00:0000000002:PROGC ] Compile and Link for x86.
BUILD: [00:0000000003:PROGC ] Computing include file dependencies:
BUILD: [00:0000000004:PROGC ] Checking for SDK include directory: D:\WINCE500\sdk\ce\inc.
BUILD: [00:0000000005:PROGC ] Scan \WINCE500\PBWorkspaces\MyPlatform\MyManagedVBApp\
BUILD: [00:0000000006:WARNN ] \WINCE500\PBWorkspaces\MyPlatform\MyManagedVBApp\: Missing source file: MyManagedVBApp.vb.
BUILD: [00:0000000007:ERRORE] \WINCE500\PBWorkspaces\MyPlatform\MyManagedVBApp\: Invalid entry in sources file: MyManagedVBApp.vb.
BUILD: [00:0000000008:PROGC ]                      Files      Warnings      Errors
BUILD: [00:0000000009:PROGC ] Midl                     0             0           0
BUILD: [00:0000000010:PROGC ] Resource                 0             0           0
BUILD: [00:0000000011:PROGC ] Message                  0             0           0
BUILD: [00:0000000012:PROGC ] Precomp Header           0             0           0
BUILD: [00:0000000013:PROGC ] C/Cpp/Cxx                0             0           0
BUILD: [00:0000000014:PROGC ] Assembler                0             0           0
BUILD: [00:0000000015:PROGC ] Static Libraries         0             0           0
BUILD: [00:0000000016:PROGC ] Dll's                    0             0           0
BUILD: [00:0000000017:PROGC ] Exe's                    0             0           0
BUILD: [00:0000000018:PROGC ] Resx                     0             0           0
BUILD: [00:0000000019:PROGC ] Csharp Targets           0             0           0
BUILD: [00:0000000020:PROGC ] Other                    0             0           1
BUILD: [00:0000000021:PROGC ]
BUILD: [00:0000000022:PROGC ] Total                    0             0           1
BUILD: [00:0000000023:PROGC ]
BUILD: [00:0000000024:PROGC ] 0 Warnings,  1 Errors

I especially like the Invalid entry in sources file error. The source file was there, and simply renaming it to MyManagedVBApp.cs (and modifying the sources file accordingly) gave me totally different results, syntax errors because now the build system thought it was dealing with a C# file. The build summary made it clear as well that only Csharp targetrs are supported.

To absolutely make sure that only C# projects are supported I also looked at the makefile that is used to generate projects. The makefile can be found under $(_MAKEENVROOT)\makefile.def, but I warn you: don't do this at home!! This file is rather complicated. I found out that indeed only C# is supported. In an optimistic mood I was thinking for one second or so to add support for VB.NET to makefile.def, but knowing my own intellectual limitations :-) I decided not to do that. This is about 1 % of the contents of that makefile and it is already hard to understand what's going on.

$(MANAGED_TARGET):  $(SOURCES)
    @echo BUILD_MARKER:CSC_COMPILE_START Csharp Compile $(MANAGED_TARGET)
    @echo /nostdlib+
    @echo /noconfig
    @echo CSC_DEBUG_CMD_LINE:                  $(CSC_DEBUG_CMD_LINE)
    @echo CSC_DEBUG_DEFINE_CMD_LINE:           $(CSC_DEBUG_DEFINE_CMD_LINE)
    @echo CSC_UNDER_OS_DEFINE_CMD_LINE:        $(CSC_UNDER_OS_DEFINE_CMD_LINE)
 @echo CSC_OPTIMIZE_CMD_LINE:               $(CSC_OPTIMIZE_CMD_LINE)
    @echo UNSAFE_CMD_LINE:                     $(UNSAFE_CMD_LINE)
    @echo DOC_CMD_LINE:                        $(DOC_CMD_LINE)
    @echo MANAGED_TARGET_TYPE_CMD_LINE:        $(MANAGED_TARGET_TYPE_CMD_LINE)
    @echo CSC_DEFINES_CMD_LINE:                $(CSC_DEFINES_CMD_LINE)
    @echo MANAGED_REFERENCES_CMD_LINE:         $(MANAGED_REFERENCES_CMD_LINE)
    @echo MANAGED_ADDMODULES_CMD_LINE:         $(MANAGED_ADDMODULES_CMD_LINE)
    @echo MANAGED_LINKRESOURCES_CMD_LINE:      $(MANAGED_LINKRESOURCES_CMD_LINE)
    @echo MANAGED_RESOURCES_CMD_LINE:          $(MANAGED_RESOURCES_CMD_LINE)
    @echo MANAGED_WIN32ICONS_CMD_LINE:         $(MANAGED_WIN32ICONS_CMD_LINE)
    @echo MANAGED_WIN32RESOURCES_CMD_LINE:     $(MANAGED_WIN32RESOURCES_CMD_LINE)
    @echo MANAGED_RESX_RESOURCES_CMD_LINE:     $(MANAGED_RESX_RESOURCES_CMD_LINE)
    @echo MANAGED_RESX_LINKRESOURCES_CMD_LINE: $(MANAGED_RESX_LINKRESOURCES_CMD_LINE)
 @echo MANAGED_OS_VERSION_CMD_LINE:          $(MANAGED_OS_VERSION_CMD_LINE)
    @echo /out:$(MANAGED_TARGET) $(SOURCES)
    $(CSC) /noconfig @<<
/nostdlib+
$(CSC_DEBUG_CMD_LINE)
$(CSC_DEBUG_DEFINE_CMD_LINE)
$(CSC_UNDER_OS_DEFINE_CMD_LINE)
$(CSC_OPTIMIZE_CMD_LINE)
$(UNSAFE_CMD_LINE)
$(DOC_CMD_LINE)
$(MANAGED_TARGET_TYPE_CMD_LINE)
$(CSC_DEFINES_CMD_LINE)
$(MANAGED_REFERENCES_CMD_LINE)
$(MANAGED_ADDMODULES_CMD_LINE)
$(MANAGED_LINKRESOURCES_CMD_LINE)
$(MANAGED_RESOURCES_CMD_LINE)
$(MANAGED_WIN32ICONS_CMD_LINE)
$(MANAGED_WIN32RESOURCES_CMD_LINE)
$(MANAGED_RESX_RESOURCES_CMD_LINE)
$(MANAGED_RESX_LINKRESOURCES_CMD_LINE)
/out:$(MANAGED_TARGET) $(SOURCES) $(MANAGED_OS_VERSION_CMD_LINE)
<<NOKEEP
!  IF "TARGETTYPE" != "MANAGED_MODULE"
!    IF "$(_TGTOS)" == "CE"
#    Sign the assembly with a strong name if required.
     $(MANAGED_DELAYSIGN_COMMAND)
!    ENDIF
!  ENDIF
!  IF "TARGETTYPE" != "MANAGED_MODULE"
!    IF "$(BUILD_SIGN)" == "1"
    signbin $(MANAGED_TARGET)
!    ENDIF
!  ENDIF
!  IF "$(WINCEREL)" == "1"
      -$(__COPYCMD) $(MANAGED_TARGET) $(_FLATRELEASEDIR)
      -$(__COPYCMD) $(MANAGED_TARGET_PDB) $(_FLATRELEASEDIR)
!  ENDIF
    @echo BUILD_MARKER:CSC_COMPILE_END

!ENDIF

I surely am not ready to break the Windows CE build system right now, but perhaps one day I might try to add support for VB.NET. I am sure it would at least give me a tremendous understanding of the build system in PB 5.0 and let's face it, the worst that can happen is having to reinstall PB 5.0. Not something that would happen for the first time.

So VB.NET is out for the moment. Don't get me wrong, I don't need VB.NET support in PB. Having a C++ background my managed language of choice is C#, but I was just curious to find out what is possible inside PB.

There is only one more thing to do right now. Getting a full blown, managed, multi-threaded WinForms application build by PB and running that application without problems on a Windows CE target. Since I have a 3 hour flight from Phoenix, AZ to Seattle, WA tomorrow, that is going to be a great time to get that working. After that I will go back to my original idea of adding debug zones to a managed application. Just stay tuned.



   What is this?18:39 PM
Blog Ref URL:  http://www.dotnetfordevices.com/forum.html#162


Platform Builder and managed applications
If you want to find out how to create managed applications using Platform Builder don't miss this article. Right now I've only shown how to create a managed console application, written in C#. The article will be extended with WinForms applications as well. You might wonder what the use of all of this is. For this moment I consider this fun, simply investigating the possibilities that Platform Builder 5.0 offers. To create real life managed applications I will stay with Visual Studio. If for nothing else, I have not found a form designer within Platform Builder and I am pretty sure it is not there. To be honest, I am wondering why there is even support for managed projects inside Platform Builder.

   What is this?17:18 PM
Blog Ref URL:  http://www.dotnetfordevices.com/forum.html#161


Managed Applications inside Platform Builder 5.0
Once again it was worthwhile simply exploring through a development environment. In preparation for a class I will attend next week I was just looking through Platform Builder 5.0, creating a simple platform and adding a number of native applications to it. Looking at the different project settings I was intrigued by a managed code tab. Would it be possible to add managed code projects to a Platform Builder workspace? Right now this would be extremely helpful to me, because I am on the road and I only have Whidbey installed on my laptop. However, I also want to experiment a little with .NET CF v1 applications, because I was thinking about how cool it might be to use Windows CE debug zones inside a managed application. To play a little I wanted to have a managed application, add it to a Platform Builder and see if I could get debug zones working, you know, with a little P/Invoke or so. Since I only had Whidbey installed and didn’t want to install a beta v2 of the .NET CF on my Windows CE Platform I decided to wait a while before starting this experiment. With the possibility to create managed applications and compile them with Platform Builder I got new possibilities all of a sudden to create .NET CF v1 applications. First step of course is to find out if this is working. I can tell you already it is possible to create managed applications with Platform Builder 5.0, at least written in C#. I have to check if VB.NET is working as well. It takes a few steps to setup a managed project properly, although most of them are documented well in the PB documentation. I have decided to write a little article about this possibility though. When the article is done I will publish it on DotNETForDevices and inform you about its existence through the blog.

   What is this?00:35 AM
Blog Ref URL:  http://www.dotnetfordevices.com/forum.html#160


Saturday, October 23, 2004
Platform Builder and managed applications (2)

Still being intrigued by this topic I tried to compile a little Visual Basic.NET console application using Platform Builder. Thanks to a more or less vague error message it became clear that Visual Basic.NET projects are not supported inside Platform Builder 5.0.

BUILD: [Thrd:Sequence:Type  ] Message
BUILD: [00:0000000000:PROGC ] Checking for \WINCE500\sdk\bin\i386\srccheck.exe.
BUILD: [00:0000000001:PROGC ] SrcCheck exit code: 0 (dec).
BUILD: [00:0000000002:PROGC ] Compile and Link for x86.
BUILD: [00:0000000003:PROGC ] Computing include file dependencies:
BUILD: [00:0000000004:PROGC ] Checking for SDK include directory: D:\WINCE500\sdk\ce\inc.
BUILD: [00:0000000005:PROGC ] Scan \WINCE500\PBWorkspaces\MyPlatform\MyManagedVBApp\
BUILD: [00:0000000006:WARNN ] \WINCE500\PBWorkspaces\MyPlatform\MyManagedVBApp\: Missing source file: MyManagedVBApp.vb.
BUILD: [00:0000000007:ERRORE] \WINCE500\PBWorkspaces\MyPlatform\MyManagedVBApp\: Invalid entry in sources file: MyManagedVBApp.vb.
BUILD: [00:0000000008:PROGC ]                      Files      Warnings      Errors
BUILD: [00:0000000009:PROGC ] Midl                     0             0           0
BUILD: [00:0000000010:PROGC ] Resource                 0             0           0
BUILD: [00:0000000011:PROGC ] Message                  0             0           0
BUILD: [00:0000000012:PROGC ] Precomp Header           0             0           0
BUILD: [00:0000000013:PROGC ] C/Cpp/Cxx                0             0           0
BUILD: [00:0000000014:PROGC ] Assembler                0             0           0
BUILD: [00:0000000015:PROGC ] Static Libraries         0             0           0
BUILD: [00:0000000016:PROGC ] Dll's                    0             0           0
BUILD: [00:0000000017:PROGC ] Exe's                    0             0           0
BUILD: [00:0000000018:PROGC ] Resx                     0             0           0
BUILD: [00:0000000019:PROGC ] Csharp Targets           0             0           0
BUILD: [00:0000000020:PROGC ] Other                    0             0           1
BUILD: [00:0000000021:PROGC ]
BUILD: [00:0000000022:PROGC ] Total                    0             0           1
BUILD: [00:0000000023:PROGC ]
BUILD: [00:0000000024:PROGC ] 0 Warnings,  1 Errors

I especially like the Invalid entry in sources file error. The source file was there, and simply renaming it to MyManagedVBApp.cs (and modifying the sources file accordingly) gave me totally different results, syntax errors because now the build system thought it was dealing with a C# file. The build summary made it clear as well that only Csharp targetrs are supported.

To absolutely make sure that only C# projects are supported I also looked at the makefile that is used to generate projects. The makefile can be found under $(_MAKEENVROOT)\makefile.def, but I warn you: don't do this at home!! This file is rather complicated. I found out that indeed only C# is supported. In an optimistic mood I was thinking for one second or so to add support for VB.NET to makefile.def, but knowing my own intellectual limitations :-) I decided not to do that. This is about 1 % of the contents of that makefile and it is already hard to understand what's going on.

$(MANAGED_TARGET):  $(SOURCES)
    @echo BUILD_MARKER:CSC_COMPILE_START Csharp Compile $(MANAGED_TARGET)
    @echo /nostdlib+
    @echo /noconfig
    @echo CSC_DEBUG_CMD_LINE:                  $(CSC_DEBUG_CMD_LINE)
    @echo CSC_DEBUG_DEFINE_CMD_LINE:           $(CSC_DEBUG_DEFINE_CMD_LINE)
    @echo CSC_UNDER_OS_DEFINE_CMD_LINE:        $(CSC_UNDER_OS_DEFINE_CMD_LINE)
 @echo CSC_OPTIMIZE_CMD_LINE:               $(CSC_OPTIMIZE_CMD_LINE)
    @echo UNSAFE_CMD_LINE:                     $(UNSAFE_CMD_LINE)
    @echo DOC_CMD_LINE:                        $(DOC_CMD_LINE)
    @echo MANAGED_TARGET_TYPE_CMD_LINE:        $(MANAGED_TARGET_TYPE_CMD_LINE)
    @echo CSC_DEFINES_CMD_LINE:                $(CSC_DEFINES_CMD_LINE)
    @echo MANAGED_REFERENCES_CMD_LINE:         $(MANAGED_REFERENCES_CMD_LINE)
    @echo MANAGED_ADDMODULES_CMD_LINE:         $(MANAGED_ADDMODULES_CMD_LINE)
    @echo MANAGED_LINKRESOURCES_CMD_LINE:      $(MANAGED_LINKRESOURCES_CMD_LINE)
    @echo MANAGED_RESOURCES_CMD_LINE:          $(MANAGED_RESOURCES_CMD_LINE)
    @echo MANAGED_WIN32ICONS_CMD_LINE:         $(MANAGED_WIN32ICONS_CMD_LINE)
    @echo MANAGED_WIN32RESOURCES_CMD_LINE:     $(MANAGED_WIN32RESOURCES_CMD_LINE)
    @echo MANAGED_RESX_RESOURCES_CMD_LINE:     $(MANAGED_RESX_RESOURCES_CMD_LINE)
    @echo MANAGED_RESX_LINKRESOURCES_CMD_LINE: $(MANAGED_RESX_LINKRESOURCES_CMD_LINE)
 @echo MANAGED_OS_VERSION_CMD_LINE:          $(MANAGED_OS_VERSION_CMD_LINE)
    @echo /out:$(MANAGED_TARGET) $(SOURCES)
    $(CSC) /noconfig @<<
/nostdlib+
$(CSC_DEBUG_CMD_LINE)
$(CSC_DEBUG_DEFINE_CMD_LINE)
$(CSC_UNDER_OS_DEFINE_CMD_LINE)
$(CSC_OPTIMIZE_CMD_LINE)
$(UNSAFE_CMD_LINE)
$(DOC_CMD_LINE)
$(MANAGED_TARGET_TYPE_CMD_LINE)
$(CSC_DEFINES_CMD_LINE)
$(MANAGED_REFERENCES_CMD_LINE)
$(MANAGED_ADDMODULES_CMD_LINE)
$(MANAGED_LINKRESOURCES_CMD_LINE)
$(MANAGED_RESOURCES_CMD_LINE)
$(MANAGED_WIN32ICONS_CMD_LINE)
$(MANAGED_WIN32RESOURCES_CMD_LINE)
$(MANAGED_RESX_RESOURCES_CMD_LINE)
$(MANAGED_RESX_LINKRESOURCES_CMD_LINE)
/out:$(MANAGED_TARGET) $(SOURCES) $(MANAGED_OS_VERSION_CMD_LINE)
<<NOKEEP
!  IF "TARGETTYPE" != "MANAGED_MODULE"
!    IF "$(_TGTOS)" == "CE"
#    Sign the assembly with a strong name if required.
     $(MANAGED_DELAYSIGN_COMMAND)
!    ENDIF
!  ENDIF
!  IF "TARGETTYPE" != "MANAGED_MODULE"
!    IF "$(BUILD_SIGN)" == "1"
    signbin $(MANAGED_TARGET)
!    ENDIF
!  ENDIF
!  IF "$(WINCEREL)" == "1"
      -$(__COPYCMD) $(MANAGED_TARGET) $(_FLATRELEASEDIR)
      -$(__COPYCMD) $(MANAGED_TARGET_PDB) $(_FLATRELEASEDIR)
!  ENDIF
    @echo BUILD_MARKER:CSC_COMPILE_END

!ENDIF

I surely am not ready to break the Windows CE build system right now, but perhaps one day I might try to add support for VB.NET. I am sure it would at least give me a tremendous understanding of the build system in PB 5.0 and let's face it, the worst that can happen is having to reinstall PB 5.0. Not something that would happen for the first time.

So VB.NET is out for the moment. Don't get me wrong, I don't need VB.NET support in PB. Having a C++ background my managed language of choice is C#, but I was just curious to find out what is possible inside PB.

There is only one more thing to do right now. Getting a full blown, managed, multi-threaded WinForms application build by PB and running that application without problems on a Windows CE target. Since I have a 3 hour flight from Phoenix, AZ to Seattle, WA tomorrow, that is going to be a great time to get that working. After that I will go back to my original idea of adding debug zones to a managed application. Just stay tuned.



   What is this?18:39 PM
Blog Ref URL:  http://www.dotnetfordevices.com/forum.html#162


Platform Builder and managed applications
If you want to find out how to create managed applications using Platform Builder don't miss this article. Right now I've only shown how to create a managed console application, written in C#. The article will be extended with WinForms applications as well. You might wonder what the use of all of this is. For this moment I consider this fun, simply investigating the possibilities that Platform Builder 5.0 offers. To create real life managed applications I will stay with Visual Studio. If for nothing else, I have not found a form designer within Platform Builder and I am pretty sure it is not there. To be honest, I am wondering why there is even support for managed projects inside Platform Builder.

   What is this?17:18 PM
Blog Ref URL:  http://www.dotnetfordevices.com/forum.html#161


Managed Applications inside Platform Builder 5.0
Once again it was worthwhile simply exploring through a development environment. In preparation for a class I will attend next week I was just looking through Platform Builder 5.0, creating a simple platform and adding a number of native applications to it. Looking at the different project settings I was intrigued by a managed code tab. Would it be possible to add managed code projects to a Platform Builder workspace? Right now this would be extremely helpful to me, because I am on the road and I only have Whidbey installed on my laptop. However, I also want to experiment a little with .NET CF v1 applications, because I was thinking about how cool it might be to use Windows CE debug zones inside a managed application. To play a little I wanted to have a managed application, add it to a Platform Builder and see if I could get debug zones working, you know, with a little P/Invoke or so. Since I only had Whidbey installed and didn’t want to install a beta v2 of the .NET CF on my Windows CE Platform I decided to wait a while before starting this experiment. With the possibility to create managed applications and compile them with Platform Builder I got new possibilities all of a sudden to create .NET CF v1 applications. First step of course is to find out if this is working. I can tell you already it is possible to create managed applications with Platform Builder 5.0, at least written in C#. I have to check if VB.NET is working as well. It takes a few steps to setup a managed project properly, although most of them are documented well in the PB documentation. I have decided to write a little article about this possibility though. When the article is done I will publish it on DotNETForDevices and inform you about its existence through the blog.

   What is this?00:35 AM
Blog Ref URL:  http://www.dotnetfordevices.com/forum.html#160


Thursday, October 21, 2004
Weird blogging times
Or at least so you might think. It all has to do with the fact that I am living on Pacific Time until November 5 and the blog entry time stamps are still on Central European Time. So don't worry, I really get enough sleep time but 9 hours later then you, fellow Europeans.

   What is this?00:55 AM
Blog Ref URL:  http://www.dotnetfordevices.com/forum.html#159


Windows CE 5.0 Tutorials
Just in case you have not seen them, these tutorials are well worth watching. From a rather high level introduction down to all kinds of details on building Windows CE 5.0 images and using the tools that ship with Platform Builder, this is a great source of information. Even if you are not using Platform Builder on a daily basis or even if you only write applications that run on the Windows CE 5.0 operating system, I still recommend you to watch these tutorials. At least it gives you a better understanding of the operating system and with that can help you create better applications.

   What is this?00:50 AM
Blog Ref URL:  http://www.dotnetfordevices.com/forum.html#158


Thursday, October 21, 2004
Weird blogging times
Or at least so you might think. It all has to do with the fact that I am living on Pacific Time until November 5 and the blog entry time stamps are still on Central European Time. So don't worry, I really get enough sleep time but 9 hours later then you, fellow Europeans.

   What is this?00:55 AM
Blog Ref URL:  http://www.dotnetfordevices.com/forum.html#159


Windows CE 5.0 Tutorials
Just in case you have not seen them, these tutorials are well worth watching. From a rather high level introduction down to all kinds of details on building Windows CE 5.0 images and using the tools that ship with Platform Builder, this is a great source of information. Even if you are not using Platform Builder on a daily basis or even if you only write applications that run on the Windows CE 5.0 operating system, I still recommend you to watch these tutorials. At least it gives you a better understanding of the operating system and with that can help you create better applications.

   What is this?00:50 AM
Blog Ref URL:  http://www.dotnetfordevices.com/forum.html#158


Saturday, October 16, 2004
Some cool resources
This probably has to do with my preparation for a Windows CE 5.0 training. Regardless of that however, hopefully you already know that there is a ton of information available on how to create a Windows CE 5.0 image. Simply take a look here, I'm sure you can benefit from this as well.

   What is this?00:17 AM
Blog Ref URL:  http://www.dotnetfordevices.com/forum.html#157


The Demo Gods were with me

Of course I should really wonder if you are interested in this information, but on the other hand, this is my blog, right? Anyway, during both presentations I had yesterday the demo gods were really with me. It even gave me a weird feeling, nothing went wrong. Especially demonstrating Visual Studio 2005 beta 1, targetting a beta version of Windows Mobile 2003 SE was exciting. All in all, the demonstration was effective, much better than it was during my practise run on Wednesday night when I had several crashes. There's only one little problem. I am running presentations and demo's on a laptop that is like 6 months old. At that time it was more or less state of the art. However, when I tried to show both the Windows XP Embedded tools and Windows CE 5.0 Platform Builder it was sort of humiliating. I had to do a couple of little dances to entertain the audience, since my laptop was so unbelievably slow. Of course I am only writing this hoping somebody at my company (PTS Software) is reading this. I need a new, faster laptop. Besides that, I need a SmartPhone. Not only to be used as a phone, also as an email reader and as a cool target device to run coding samples on. I know, this is mean (although I asked people during both talks yesterday to complain about the speed of my hardware in their evaluations as well). These days it seems that I am trying anything to get equiped with better (= faster + more advanced) hardware.



   What is this?00:06 AM
Blog Ref URL:  http://www.dotnetfordevices.com/forum.html#156


Saturday, October 16, 2004
Some cool resources
This probably has to do with my preparation for a Windows CE 5.0 training. Regardless of that however, hopefully you already know that there is a ton of information available on how to create a Windows CE 5.0 image. Simply take a look here, I'm sure you can benefit from this as well.

   What is this?00:17 AM
Blog Ref URL:  http://www.dotnetfordevices.com/forum.html#157


The Demo Gods were with me

Of course I should really wonder if you are interested in this information, but on the other hand, this is my blog, right? Anyway, during both presentations I had yesterday the demo gods were really with me. It even gave me a weird feeling, nothing went wrong. Especially demonstrating Visual Studio 2005 beta 1, targetting a beta version of Windows Mobile 2003 SE was exciting. All in all, the demonstration was effective, much better than it was during my practise run on Wednesday night when I had several crashes. There's only one little problem. I am running presentations and demo's on a laptop that is like 6 months old. At that time it was more or less state of the art. However, when I tried to show both the Windows XP Embedded tools and Windows CE 5.0 Platform Builder it was sort of humiliating. I had to do a couple of little dances to entertain the audience, since my laptop was so unbelievably slow. Of course I am only writing this hoping somebody at my company (PTS Software) is reading this. I need a new, faster laptop. Besides that, I need a SmartPhone. Not only to be used as a phone, also as an email reader and as a cool target device to run coding samples on. I know, this is mean (although I asked people during both talks yesterday to complain about the speed of my hardware in their evaluations as well). These days it seems that I am trying anything to get equiped with better (= faster + more advanced) hardware.



   What is this?00:06 AM
Blog Ref URL:  http://www.dotnetfordevices.com/forum.html#156


Thursday, October 14, 2004
A day of presentations

Today can be described best as a day of talking and driving. This morning I will talk about Windows XP Embedded and about Windows CE 5.0. This is going to be a challenge, because I always like to show development tools, preferably build something in front of an audience. Given the time it takes to create a Windows XP Embedded image and given the time it takes to create a Windows CE image that is unfortunately not going to be possible. I have a slot of 45 minutes, so it will be an overview of both products and an overview of the tools. Yesterday at least I prepared some images, so what I will do is show the tools, walk through some wizards and after that immediately show the end result. Hopefully people don't get the impression that it is incredibly simple to create tailor made versions of these operating systems. The tools are great but you still have to know what you are doing, a message that I can hopefully pass to the people attending the Advantech Solution Day.

This afternoon will be different. I have an hour to talk about smart device development with Visual Studio 2005. This talk will be held at the Microsoft Netherlands office on an Embedded Windows seminar, organized by Getronics and Microsoft. Within an hour it should be possible to take a look at some of the cool new features that are available with VS 2005. It should also be possible to create a little application from scratch. I am not even sure what my application is going to look like when talking, but the idea is to create a C# application in a solution and add a VB.NET DLL to the same solution as well as a C++ DLL. That should give a good overview of using multiple languages, being able to develop software using all these languages from within one single development environment and show some of the debug features. I will use a PocketPC 2003 SE (beta version) as a target machine. Unfortunately the target is running beta software, mainly thanks to HP who decided not to provide SE upgrades for older PocketPC's (and after all, mine is already 9!!! months old so I guess they have a point). You should not be disturbed by my sarcastic remarks there, however that is the way I feel about the upgrade policy of some device vendors. The only thing I am hoping for right now is that the demo gods are with me and that we will have some fun today, talking about some great development tools. Well, of course I am hoping for a little more as well. A large audience at both events.



   What is this?07:11 AM
Blog Ref URL:  http://www.dotnetfordevices.com/forum.html#155


Thursday, October 7, 2004
Take a .NET assessment!

You can take a free skills assessment right now and find out how much you know about Visual Studio.NET. You can select either VB.NET or C# as programming language of choice. Once you select an assessment you get a number of questions that needs to be answered in a certain amount of time. Unfortunately I can't share my scores with you, because I got this beautiful screen when moving from question 2 to question 3.

This might have been caused by ordinary server problems, on the other hand and on a lighter tone, perhaps the developers of the site should have taken an assessment too, prior to creating the site. Seriously though. I am sure this is just a temporary problem. I really welcome this possibility. This is a great way to find out what knowledge you currently have and in what areas you have a need for education to become a better developer in the end.



   What is this?23:29 PM
Blog Ref URL:  http://www.dotnetfordevices.com/forum.html#154


The IMailRuleClient article is on MSDN
Good news for those folks that were asking about the upcoming article. As a matter of facts it is the most used search phrase on DotNETForDevices, but it is here. The IMailRuleClient article has just been published on MSDN. Even though the topic is not the easiest one I hope that you can benefit from it and get your managed SMS receiving applications up and running soon.

   What is this?23:07 PM
Blog Ref URL:  http://www.dotnetfordevices.com/forum.html#153


Thursday, October 7, 2004
Take a .NET assessment!

You can take a free skills assessment right now and find out how much you know about Visual Studio.NET. You can select either VB.NET or C# as programming language of choice. Once you select an assessment you get a number of questions that needs to be answered in a certain amount of time. Unfortunately I can't share my scores with you, because I got this beautiful screen when moving from question 2 to question 3.

This might have been caused by ordinary server problems, on the other hand and on a lighter tone, perhaps the developers of the site should have taken an assessment too, prior to creating the site. Seriously though. I am sure this is just a temporary problem. I really welcome this possibility. This is a great way to find out what knowledge you currently have and in what areas you have a need for education to become a better developer in the end.



   What is this?23:29 PM
Blog Ref URL:  http://www.dotnetfordevices.com/forum.html#154


The IMailRuleClient article is on MSDN
Good news for those folks that were asking about the upcoming article. As a matter of facts it is the most used search phrase on DotNETForDevices, but it is here. The IMailRuleClient article has just been published on MSDN. Even though the topic is not the easiest one I hope that you can benefit from it and get your managed SMS receiving applications up and running soon.

   What is this?23:07 PM
Blog Ref URL:  http://www.dotnetfordevices.com/forum.html#153


Wednesday, October 6, 2004
Playing with fire

Next week I have a commitment for two different presentations about Windows CE, for which I promised to show some managed code development using Visual Studio 2005 beta 1. So far I have been running VS 2005 in a Virtual PC on my desktop system and I am quite impressed by it. Even the performance is acceptable, although it takes a relatively long time to deploy to the emulator. However, I am not complaining too much about that. After all, what can you expect? A Virtual device running inside a Virtual PC running on top of a desktop system that is full of activity at the same time. When I tried the same *trick* on my laptop computer in preparation of the presentations it became clear quickly that you can't have enough memory. Typically something my laptop is lacking. I got bored soon, having to wait for over a minute to start Visual Studio 2005, and I am not even talking about the time it took to boot the emulator and deploy an application to it. Because I don't want to give the audience a wrong impression about performance I just decided on a beautiful Wednesday evening to make Visual Studio 2005 my only development environment on the laptop. Forget about running inside a Virtual PC. This baby now gets the chance to run on the real thing. Of course I am feeling a little nervous about it right now. After all, this is beta software. At the same time this gives me so much more opportunities to play with Visual Studio 2005, after all, on the road I don't have anything else anymore. That also means more chances to blog about great experiences and lesser experiences.

To be continued.



   What is this?17:34 PM
Blog Ref URL:  http://www.dotnetfordevices.com/forum.html#152


Friday, October 1, 2004
Are you ready to become a TopCoder?

Recently a friend pointed me to the TopCoder website. Amongst other things, the side provides an arena for coding contests, which you can compete in once you have signed up as a member. As I understand, in a contest you have to complete one or more programming programs of different levels of difficulty in a limited time. I have not tried it yet, although that will happen soon. It looks like it is possible to write your code entries in C#, VB(.NET?), C++ and Java. Besides the contest area there are also possibilities to submit whitepapers, to submit designs and solutions for particular projects and even get paid for it.

Right now they have like 44000 members, so it is a shame that somebody had to point me to this site. My only cheap excuse is that I was way to busy over the last couple of weeks.

The site looks interesting. The only thing I am missing is a mobility area targetting the .NET Compact Framework. Maybe one of the sponsors listed on TopCoder should think about a specific competition for mobile devices.



   What is this?19:24 PM
Blog Ref URL:  http://www.dotnetfordevices.com/forum.html#151


Wednesday, September 29, 2004
A video to watch
Probably many other bloggers pointed readers to this Channel 9 video, but it is absolutely worth seeing. Ori Amiga gives a guided tour around the Visual Studio for Devices team. This is reality TV at its best. What's very cool about it is the proof that VSD is developed by real people, passionate about their work but absolutely real people. Watching this sort of behind the scene video at least makes me appreciate products even better. Really a must see video.

   What is this?22:42 PM
Blog Ref URL:  http://www.dotnetfordevices.com/forum.html#150


Moving back in time for one week
Today I got a cool unexpected surprise via email. It was feedback on the MSDN WebCast on multithreading that we "aired" last week. In itself, WebCasts are a lot of fun to present, but feedback like I got immediately after the WebCast, but also again today, is a very nice perk. Just in case you are interested in multithreading but missed the WebCast, you can still listen to it. Also, if you are interested in real-time behavior of the .NET Compact Framework, make sure to listen to this recorded MSDN WebCast.

   What is this?21:53 PM
Blog Ref URL:  http://www.dotnetfordevices.com/forum.html#149


OpenNETCF Smart Device Framework is awards finalist!
Today the news was good. I just got pointed to the PocketPC Magazine Best Software Awards 2004. The OpenNETCF Smart Device Framework is finalist in the .NET Developer Packages catagory. If you are curious and want to check out the Smart Device Framework for yourself, make sure to visit the OpenNETCF.org website where you can download it, including sources, for free.

   What is this?21:43 PM
Blog Ref URL:  http://www.dotnetfordevices.com/forum.html#148


Wednesday, September 29, 2004
A video to watch
Probably many other bloggers pointed readers to this Channel 9 video, but it is absolutely worth seeing. Ori Amiga gives a guided tour around the Visual Studio for Devices team. This is reality TV at its best. What's very cool about it is the proof that VSD is developed by real people, passionate about their work but absolutely real people. Watching this sort of behind the scene video at least makes me appreciate products even better. Really a must see video.

   What is this?22:42 PM
Blog Ref URL:  http://www.dotnetfordevices.com/forum.html#150


Moving back in time for one week
Today I got a cool unexpected surprise via email. It was feedback on the MSDN WebCast on multithreading that we "aired" last week. In itself, WebCasts are a lot of fun to present, but feedback like I got immediately after the WebCast, but also again today, is a very nice perk. Just in case you are interested in multithreading but missed the WebCast, you can still listen to it. Also, if you are interested in real-time behavior of the .NET Compact Framework, make sure to listen to this recorded MSDN WebCast.

   What is this?21:53 PM
Blog Ref URL:  http://www.dotnetfordevices.com/forum.html#149


OpenNETCF Smart Device Framework is awards finalist!
Today the news was good. I just got pointed to the PocketPC Magazine Best Software Awards 2004. The OpenNETCF Smart Device Framework is finalist in the .NET Developer Packages catagory. If you are curious and want to check out the Smart Device Framework for yourself, make sure to visit the OpenNETCF.org website where you can download it, including sources, for free.

   What is this?21:43 PM
Blog Ref URL:  http://www.dotnetfordevices.com/forum.html#148


Wednesday, September 29, 2004
A video to watch
Probably many other bloggers pointed readers to this Channel 9 video, but it is absolutely worth seeing. Ori Amiga gives a guided tour around the Visual Studio for Devices team. This is reality TV at its best. What's very cool about it is the proof that VSD is developed by real people, passionate about their work but absolutely real people. Watching this sort of behind the scene video at least makes me appreciate products even better. Really a must see video.

   What is this?22:42 PM
Blog Ref URL:  http://www.dotnetfordevices.com/forum.html#150


Moving back in time for one week
Today I got a cool unexpected surprise via email. It was feedback on the MSDN WebCast on multithreading that we "aired" last week. In itself, WebCasts are a lot of fun to present, but feedback like I got immediately after the WebCast, but also again today, is a very nice perk. Just in case you are interested in multithreading but missed the WebCast, you can still listen to it. Also, if you are interested in real-time behavior of the .NET Compact Framework, make sure to listen to this recorded MSDN WebCast.

   What is this?21:53 PM
Blog Ref URL:  http://www.dotnetfordevices.com/forum.html#149


OpenNETCF Smart Device Framework is awards finalist!
Today the news was good. I just got pointed to the PocketPC Magazine Best Software Awards 2004. The OpenNETCF Smart Device Framework is finalist in the .NET Developer Packages catagory. If you are curious and want to check out the Smart Device Framework for yourself, make sure to visit the OpenNETCF.org website where you can download it, including sources, for free.

   What is this?21:43 PM
Blog Ref URL:  http://www.dotnetfordevices.com/forum.html#148


Saturday, September 25, 2004
The next MSDN WebCast on multithreading is scheduled

It will be a while, but on December 1st we are going to dig a little deeper into multithreaded applications. Starting at 11.00 AM (Pacific Standard Time) we will talk about the following items:

Learn to develop great multithreaded .NET Compact Framework applications

Do you like to know how to create multithreaded applications in either C# or Visual Basic.NET? Have you ever wondered how to properly create and terminate threads? Do you have problems updating User Interface controls from inside worker threads? Are you unsure what synchronization objects to use at different times in multithreaded applications? Have you ever wondered what thread safety means? If you answer “yes” or “I’m not sure” to any of these questions you should consider joining our MSDN WebCast on learning to develop great multithreaded .NET Compact Framework applications. This demonstration loaded WebCast not only shows you the proper way to create great multithreaded applications. We start each demonstration with the wrong way to write multithreaded applications and we will show you a number of potential problems you might run into. Be prepared for demonstrations that hang up a Windows CE device, with the opportunity to learn from commonly made mistakes. Of course we also explain the theory behind managed multithreaded applications.

Of course, as usual, I will give you more information when we get closer to the actual date of the WebCast and if I run into interesting issues while preparing demo's I'll keep you up to date as well.

Make sure to visit the WebCast schedule at MSDN frequently, because there are many interesting topics to tune in to. Here are a few .NET CF related that I will try to attend:

What's new in the Compact Framework 2.0, presented by Paul Yao on October 19th.

Tips and Tricks for the .NET Compact Framework, presented by Assaf Kezurer on October 28th.

 



   What is this?11:53 AM
Blog Ref URL:  http://www.dotnetfordevices.com/forum.html#147


Friday, September 24, 2004
Unfortunately another WebCast is history, but there will be more in the (near) future.

If you didn't have the chance to join us yesterday evening to participate in the MSDN WebCast on multithreaded managed applications, there will be an opportunity later to listen to the recorded version of this event. Right now, the recording is not yet available, but it should be up on MSDN in a couple of days. I will publish the link on this blog once it is available. If anybody is interested in the source code of the demo's we used during the WebCast, don't hesitate but just send me an email at maarten@dotnetfordevices.com and I will return the sample code to you as soon as possible. As a little bonus I will also send you a complete hands-on lab on using OpenNETCF.org's Smart Device Framework.

Of course I will keep all of you up to date with more MSDN WebCasts. Just make sure to visit my blog regularly.



   What is this?00:13 AM
Blog Ref URL:  http://www.dotnetfordevices.com/forum.html#146


Wednesday, September 15, 2004
Visual Studio 2005 makes life much simpler

Digging a little further in the problem of updating UI controls while waiting for a thread to terminatie, using Thread.Join, which actually is available in the .NET Compact Framework version 2.0, it became clear that life will become much simpler. It is still necessary to know what you are doing of course, as my first mistake probably makes clear. In version 2.0 of the .NET Compact Framework we have the possibility to asynchronously update UI controls using BeginInvoke / EndInvoke. At least, that is how I at first interpreted it. In general, this is a correct assumption, but EndInvoke blocks until the asynchronous operation actually has finished. Since I only want to add a simple string in a ListBox, informing the user what my worker threads are doing, there is no need to know when the asynchronous operation is finished. By simply calling BeginInvoke to update the ListBox, the worker thread immediately continues running and the update of the UI control can be postponed until there is a possibility to do so. That is exactly what happens in this attempt to update a UI control while already executing a Thread.Join to find out if a worker thread has finished. The actual UI updates are postponed until the main thread returns from the Join, but then all necessary updates are still executed (in the context of the main thread). This is exactly the behavior I wanted to have, so another great reason for me to switch to Visual Studio 2005 as soon as possible. One minor detail, this great development environment has to be released of course, so please, Microsoft, hurry up!

 

Something else you can see in this little code snippet in which I show the way to asynchronously update UI controls is the fact that Invoke and BeginInvoke accept parameters, unlike Invoke in version 1.0 of the .NET Compact Framework. I am not mentioning all other great things that Visual Studio 2005 will bring to us. The whole experience is just phenomenal. If you have a chance, get your hands to a beta copy and experience it for yourself. You will love it!

 

private void TheThread()

{

  AddListBoxEntry(threadName + ": STARTED");

  while (!ready)

  {

    AddListBoxEntry(threadName + ": SLEEPING");

    Thread.Sleep(sleepTime);

    AddListBoxEntry(threadName + ": AWAKE");

 

    if (!ready)

    {

      // simulate some processing using a little dummy while loop

      int currentTicks = System.Environment.TickCount + processingTime;

      while (System.Environment.TickCount < currentTicks)

      {

        ;

      }

    }

  }

  AddListBoxEntry(threadName + ": TERMINATED");

}

 

 

private void AddListBoxEntry(String listBoxEntry)

{

  parent.BeginInvoke(parent.addListItemDelegate,

    new Object[] { listBoxEntry });

}

 



   What is this?22:34 PM
Blog Ref URL:  http://www.dotnetfordevices.com/forum.html#145


ThreadEx.Join and Control.Invoke

It is very cool that we have a Join method in the OpenNETCF.org Smart Device Framework. It gives you a way to find out that a worker thread has really terminated. However, you have to be very careful if your worker thread needs to update UI controls. As probably everybody knows by now, updating UI controls from a worker thread should be done using Control.Invoke. Not doing so might result in unexpected hang-ups of your system. However, when you are waiting for a thread to terminate, using ThreadEx.Join and that thread still wants to update the UI, you will reach a deadlock situation. I’ve written about that earlier, search for this blog entry: Why multithreading adds a whole lot of complexity. Today I was experimenting a little more with this in the following scenario. I have two worker threads, one running on a high priority, one on a low priority. They both frequently update the UI. When I terminate the low priority thread, simply by setting a flag and waiting for the thread to be terminated using ThreadEx.Join, things work fine as long as no UI updates are performed from the low priority worker thread when the termination flag has been set.

 

This is relatively easy to achieve, not resulting in the nicest code, but it works.

 

private void LowPrioThread()

{

  lowPrioLBEntry = "LowPrio started";

  this.Invoke(lowPrioListBoxUpdater);

 

  while (! lowPrioThreadDone)

  {

    Core.WaitForSingleObject(hEvent, lowPrioThreadSleepTime);

    if (! lowPrioThreadDone)

    {

      lowPrioLBEntry = "LowPrio processing";

      if (! lowPrioThreadDone)

      {

        this.Invoke(lowPrioListBoxUpdater);

      }

      long ticksToTerminate = System.Environment.TickCount + lowPrioThreadProcessTime;

      while (System.Environment.TickCount < ticksToTerminate)

      {

        ;

      }

      lowPrioLBEntry = "LowPrio done processing";

      if (! lowPrioThreadDone)

      {

        this.Invoke(lowPrioListBoxUpdater);

      }

    }

  }

}

 

In a little test application I also have a similar thread running on high priority. When terminating the low priority thread while it is inside the inner while loop (simulating a long processing time), the main thread will perform a ThreadEx.Join, immediately after indicating that the low priority thread needs to terminate.

The side effect right now is that the high priority thread (which can become running while the low priority thread is in running state), executes one single this.Invoke, but then blocks until the lower priority thread is done executing, because the main thread can not execute the Invoke call on behalf of the high priority thread, thanks to the fact that it is blocked in the Join method.

 

This sample is probably not representative for a real-world application, the only warning I want to give here is to be careful with updating UI controls from worker threads. Even though we have Control.Invoke it still might lead to unexpected results.

 

I wonder how this works in Visual Studio 2005 and the .NET Compact Framework v2. We have the possibility to use the asynchronous version of Control.Invoke (using BeginInvoke / EndInvoke). My educated guess is that the UI is still only updated after the Join method returns, but will the high priority thread continue to execute? I guess I have something to do tonight while watching TV. To be continued.



   What is this?18:15 PM
Blog Ref URL:  http://www.dotnetfordevices.com/forum.html#144


Wednesday, September 15, 2004
Visual Studio 2005 makes life much simpler

Digging a little further in the problem of updating UI controls while waiting for a thread to terminatie, using Thread.Join, which actually is available in the .NET Compact Framework version 2.0, it became clear that life will become much simpler. It is still necessary to know what you are doing of course, as my first mistake probably makes clear. In version 2.0 of the .NET Compact Framework we have the possibility to asynchronously update UI controls using BeginInvoke / EndInvoke. At least, that is how I at first interpreted it. In general, this is a correct assumption, but EndInvoke blocks until the asynchronous operation actually has finished. Since I only want to add a simple string in a ListBox, informing the user what my worker threads are doing, there is no need to know when the asynchronous operation is finished. By simply calling BeginInvoke to update the ListBox, the worker thread immediately continues running and the update of the UI control can be postponed until there is a possibility to do so. That is exactly what happens in this attempt to update a UI control while already executing a Thread.Join to find out if a worker thread has finished. The actual UI updates are postponed until the main thread returns from the Join, but then all necessary updates are still executed (in the context of the main thread). This is exactly the behavior I wanted to have, so another great reason for me to switch to Visual Studio 2005 as soon as possible. One minor detail, this great development environment has to be released of course, so please, Microsoft, hurry up!

 

Something else you can see in this little code snippet in which I show the way to asynchronously update UI controls is the fact that Invoke and BeginInvoke accept parameters, unlike Invoke in version 1.0 of the .NET Compact Framework. I am not mentioning all other great things that Visual Studio 2005 will bring to us. The whole experience is just phenomenal. If you have a chance, get your hands to a beta copy and experience it for yourself. You will love it!

 

private void TheThread()

{

  AddListBoxEntry(threadName + ": STARTED");

  while (!ready)

  {

    AddListBoxEntry(threadName + ": SLEEPING");

    Thread.Sleep(sleepTime);

    AddListBoxEntry(threadName + ": AWAKE");

 

    if (!ready)

    {

      // simulate some processing using a little dummy while loop

      int currentTicks = System.Environment.TickCount + processingTime;

      while (System.Environment.TickCount < currentTicks)

      {

        ;

      }

    }

  }

  AddListBoxEntry(threadName + ": TERMINATED");

}

 

 

private void AddListBoxEntry(String listBoxEntry)

{

  parent.BeginInvoke(parent.addListItemDelegate,

    new Object[] { listBoxEntry });

}

 



   What is this?22:34 PM
Blog Ref URL:  http://www.dotnetfordevices.com/forum.html#145


ThreadEx.Join and Control.Invoke

It is very cool that we have a Join method in the OpenNETCF.org Smart Device Framework. It gives you a way to find out that a worker thread has really terminated. However, you have to be very careful if your worker thread needs to update UI controls. As probably everybody knows by now, updating UI controls from a worker thread should be done using Control.Invoke. Not doing so might result in unexpected hang-ups of your system. However, when you are waiting for a thread to terminate, using ThreadEx.Join and that thread still wants to update the UI, you will reach a deadlock situation. I’ve written about that earlier, search for this blog entry: Why multithreading adds a whole lot of complexity. Today I was experimenting a little more with this in the following scenario. I have two worker threads, one running on a high priority, one on a low priority. They both frequently update the UI. When I terminate the low priority thread, simply by setting a flag and waiting for the thread to be terminated using ThreadEx.Join, things work fine as long as no UI updates are performed from the low priority worker thread when the termination flag has been set.

 

This is relatively easy to achieve, not resulting in the nicest code, but it works.

 

private void LowPrioThread()

{

  lowPrioLBEntry = "LowPrio started";

  this.Invoke(lowPrioListBoxUpdater);

 

  while (! lowPrioThreadDone)

  {

    Core.WaitForSingleObject(hEvent, lowPrioThreadSleepTime);

    if (! lowPrioThreadDone)

    {

      lowPrioLBEntry = "LowPrio processing";

      if (! lowPrioThreadDone)

      {

        this.Invoke(lowPrioListBoxUpdater);

      }

      long ticksToTerminate = System.Environment.TickCount + lowPrioThreadProcessTime;

      while (System.Environment.TickCount < ticksToTerminate)

      {

        ;

      }

      lowPrioLBEntry = "LowPrio done processing";

      if (! lowPrioThreadDone)

      {

        this.Invoke(lowPrioListBoxUpdater);

      }

    }

  }

}

 

In a little test application I also have a similar thread running on high priority. When terminating the low priority thread while it is inside the inner while loop (simulating a long processing time), the main thread will perform a ThreadEx.Join, immediately after indicating that the low priority thread needs to terminate.

The side effect right now is that the high priority thread (which can become running while the low priority thread is in running state), executes one single this.Invoke, but then blocks until the lower priority thread is done executing, because the main thread can not execute the Invoke call on behalf of the high priority thread, thanks to the fact that it is blocked in the Join method.

 

This sample is probably not representative for a real-world application, the only warning I want to give here is to be careful with updating UI controls from worker threads. Even though we have Control.Invoke it still might lead to unexpected results.

 

I wonder how this works in Visual Studio 2005 and the .NET Compact Framework v2. We have the possibility to use the asynchronous version of Control.Invoke (using BeginInvoke / EndInvoke). My educated guess is that the UI is still only updated after the Join method returns, but will the high priority thread continue to execute? I guess I have something to do tonight while watching TV. To be continued.



   What is this?18:15 PM
Blog Ref URL:  http://www.dotnetfordevices.com/forum.html#144


Tuesday, September 14, 2004
ThreadPool and consistent performance

As is often the case, to get a better understanding for the way things work it is great to write some little test applications. That is exactly what I am doing right now to clarify the creation and use of multi-threaded applications for the .NET Compact Framework. I will use these little applications as demonstrations for the upcoming Webcast on the .NET Compact Framework and multi-threading. During one of the demo’s I will show the difference between using threads from the ThreadPool and creating worker threads using the Thread class. ThreadPool has its limitations (but so does Thread in the .NET CF). Unfortunately it is not possible to remove threads from the ThreadPool or to set priorities to ThreadPool threads. One of the things I didn’t realize is the fact that the ThreadPool threads are created when ThreadPool is instanced for the first time. This is clearly described in the documentation, but once again it turned out that I didn’t take time to carefully read it. However, it surely pays off to read documentation. The first time I executed a little loop into which I simply created and destroyed 200 threads using ThreadPool it took about 7500 msec, running in a Windows CE emulator. The second and next times the same operation took only like 80 msec. Of course I soon realized that the first time took longer because of thread creation. The point I want to make is that it important when writing real applications to realize what is going on inside the system. Simply instancing ThreadPool during application initialization could be a useful technique to have consistent application performance once the application is initialized. As always I just found out that it is useful to give presentations, host Webcasts and teach classes. At least one person learns from them and understands the operation of the .NET Compact Framework better and better. Yes, me!



   What is this?17:04 PM
Blog Ref URL:  http://www.dotnetfordevices.com/forum.html#143


Thursday, September 9, 2004
Windows CE Emulator on Windows XP SP2
When I looked through the statistics of DotNETForDevices, yes, one of my favourite activities, I noticed that one of the top listed search phrases was the title of this blog entry. I only can guess that there is some fear out there to run the Windows CE Emulator on a development system with SP2 installed. My experiences with SP2 so far are simply good. Everything is running as it is supposed to, including Visual Studio.NET 2003 and the Windows CE Emulator. I am using this combination frequently right now for the preparation of some (hopefully) cool demo's that I will show during my upcoming webcast. The webcast will be run from this very machine so even if you don't believe me on my word, make sure to tune in to this MSDN Webcast on September 22nd to see it all working with your own eyes. I promise that I will write an entry whenever I run into problems.

   What is this?17:40 PM
Blog Ref URL:  http://www.dotnetfordevices.com/forum.html#142


Tuesday, September 7, 2004
Windows Media Player 10
You might think this has nothing to do with (mobile) devices, since Windows Media Player 10 is a desktop product. However, it is a great product to download and install on your desktop, and you will definitely benefit from it if you have a PocketPC or Smartphone on which you store media content. Using Windows Media Player 10 it is extremely easy to synchronize content with your mobile device. I just installed the product today and I really like it. Besides easy synchronization the look and feel of Media Player 10 is very good as well. This is one of those free products that is a definite "must have". If it only could synchronize mp3 content with an iPod as well it would have been perfect. Unfortunately this is not possible so I still use two different media players. ITunes exlusively to sync content with my iPod, Media Player 10 to play music on my PC and to sync with my PocketPC (on which I also store music in case I travel without my iPod, to work for instance).

   What is this?22:46 PM
Blog Ref URL:  http://www.dotnetfordevices.com/forum.html#141


Monday, September 6, 2004
Do not try this at home :-) (yet)

In preparation for the upcoming Webcast on managed multi-threaded applications I wrote a little sample application. For a longer time I have been wondering if it would be possible to P/Invoke to CeSetThreadPriority to give a managed worker thread a high priority, for instance priority 0, being the highest priority available in Windows CE. Today I finally tried this and, at least on the emulator, it seems that it is possible to give a managed worker thread a real-time priority. I have not yet studied the entire behavior of the system, but retrieving the priority of the worker thread indicates it is indeed running on priority 0. The effect on the emulator is that it is impossible to terminate the test application and that it is impossible to active other applications. It really seems that the worker thread is running on a real-time priority. I have to dig deeper into this, running a test on real hardware as well, but right now I am just wondering what the consequences of this unexpected possibility are. Is this behavior by design? Is this something I should not have done? What are the consequences for a managed application environment? The last and perhaps most interesting question I have at this moment is the following. Will this allow me to write ISR's (or at least IST's) safely in managed code? All of a sudden it seems that there is more to write about the real-time behavior of the .NET Compact Framework. Too bad I am overloaded with the preparation of a number of presentations and writing an article for a Dutch magazine right now. This little experiment just cries for some thorough follow up. Hopefully I will find the time pretty soon to dig into this a little deeper.



   What is this?16:44 PM
Blog Ref URL:  http://www.dotnetfordevices.com/forum.html#140


Saturday, August 28, 2004
Running with SP2
So far this was a painless action. It took me a good hour to install SP2 and my system is up and running again. Besides the security center that is shown when logging on, the system looks the same as it was before installing SP2. All devices are still recognised and the first applications I tried are working fine as well. This experience is a pretty good one, especially compared to a few of the earlier betas of SP2. After reading lots of publications over the last few days I needed some guts to actually install SP2, but I'm happy I decided to install it. As long as it lasts I feel that I am working from a secure system now. Of course I need some time to entirely test my system and run a couple of applications but so far things are looking good. Up to the next machine on which I will install SP2. After that I probably install it on my virtual PC, dedicated towards beta testing as well, to make sure that beta products will run properly with SP2.

   What is this?00:28 AM
Blog Ref URL:  http://www.dotnetfordevices.com/forum.html#139


Friday, August 27, 2004
The next time hopefully I am blogging from a system with SP2 installed
Tomorrow sounds like a great day to give the just released SP2 for Windows XP a try. I am ready to install it, yet a little frightened. Ah well, if I am blogging again tomorrow night it all works with no problems. If not, well, we'll see when I will be blogging again then. Installing XP SP2 is also a great excuse to finally make another backup of my system (something that is useful anyway). I'll keep you posted on my experiences.

   What is this?18:07 PM
Blog Ref URL:  http://www.dotnetfordevices.com/forum.html#138


And somebody else can't live without an iPod anymore ...
... yes, me! The advantage of taking a vacation trip to the USA is to purchase cool devices like the iPod at good prices with the Dollar being so cheap against the Euro. So now I am busy filling up 40 GBytes with music. There is something on my wishlist though. With the possibility to upgrade the device's firmware I can't wait for Apple to also allow playback of WMA files. That will save me storing both mp3's and WMA's on my system. Integration with Media Player would be something I would like as well. Hopefully this will not just remain wishfull thinking. Oh yes, I am already thinking about a next trip to the USA to take a Portable Media Center home with me :-).

   What is this?18:01 PM
Blog Ref URL:  http://www.dotnetfordevices.com/forum.html#137


Blogging is turning into a serious art

After reading this article it becomes clear that blogging might be the next money generator. I was surprised to see that Google will offer a percentage of adds revenue for those blogs that allow AdSense adds on their blog. Something that started as perhaps a exhibitionist’s tool now turns into a money generating activity. Of course only for those blogs that allow adds. Given the independent opinion that I share with you on DotNETForDevices this blog will remain add-free. There is something cool in this whole new way of making money though. Adds will only appear when they are potentially viewed by an audience. This in short means that blogs are not just write only pieces of information. The arrival of adds is the best proof that blogs are actually read. This for sure feels good and gives me extra information to pick up the pace and start blogging on a more regular base again.



   What is this?17:59 PM
Blog Ref URL:  http://www.dotnetfordevices.com/forum.html#136


Friday, August 27, 2004
The next time hopefully I am blogging from a system with SP2 installed
Tomorrow sounds like a great day to give the just released SP2 for Windows XP a try. I am ready to install it, yet a little frightened. Ah well, if I am blogging again tomorrow night it all works with no problems. If not, well, we'll see when I will be blogging again then. Installing XP SP2 is also a great excuse to finally make another backup of my system (something that is useful anyway). I'll keep you posted on my experiences.

   What is this?18:07 PM
Blog Ref URL:  http://www.dotnetfordevices.com/forum.html#138


And somebody else can't live without an iPod anymore ...
... yes, me! The advantage of taking a vacation trip to the USA is to purchase cool devices like the iPod at good prices with the Dollar being so cheap against the Euro. So now I am busy filling up 40 GBytes with music. There is something on my wishlist though. With the possibility to upgrade the device's firmware I can't wait for Apple to also allow playback of WMA files. That will save me storing both mp3's and WMA's on my system. Integration with Media Player would be something I would like as well. Hopefully this will not just remain wishfull thinking. Oh yes, I am already thinking about a next trip to the USA to take a Portable Media Center home with me :-).

   What is this?18:01 PM
Blog Ref URL:  http://www.dotnetfordevices.com/forum.html#137


Blogging is turning into a serious art

After reading this article it becomes clear that blogging might be the next money generator. I was surprised to see that Google will offer a percentage of adds revenue for those blogs that allow AdSense adds on their blog. Something that started as perhaps a exhibitionist’s tool now turns into a money generating activity. Of course only for those blogs that allow adds. Given the independent opinion that I share with you on DotNETForDevices this blog will remain add-free. There is something cool in this whole new way of making money though. Adds will only appear when they are potentially viewed by an audience. This in short means that blogs are not just write only pieces of information. The arrival of adds is the best proof that blogs are actually read. This for sure feels good and gives me extra information to pick up the pace and start blogging on a more regular base again.



   What is this?17:59 PM
Blog Ref URL:  http://www.dotnetfordevices.com/forum.html#136


Friday, August 27, 2004
The next time hopefully I am blogging from a system with SP2 installed
Tomorrow sounds like a great day to give the just released SP2 for Windows XP a try. I am ready to install it, yet a little frightened. Ah well, if I am blogging again tomorrow night it all works with no problems. If not, well, we'll see when I will be blogging again then. Installing XP SP2 is also a great excuse to finally make another backup of my system (something that is useful anyway). I'll keep you posted on my experiences.

   What is this?18:07 PM
Blog Ref URL:  http://www.dotnetfordevices.com/forum.html#138


And somebody else can't live without an iPod anymore ...
... yes, me! The advantage of taking a vacation trip to the USA is to purchase cool devices like the iPod at good prices with the Dollar being so cheap against the Euro. So now I am busy filling up 40 GBytes with music. There is something on my wishlist though. With the possibility to upgrade the device's firmware I can't wait for Apple to also allow playback of WMA files. That will save me storing both mp3's and WMA's on my system. Integration with Media Player would be something I would like as well. Hopefully this will not just remain wishfull thinking. Oh yes, I am already thinking about a next trip to the USA to take a Portable Media Center home with me :-).

   What is this?18:01 PM
Blog Ref URL:  http://www.dotnetfordevices.com/forum.html#137


Blogging is turning into a serious art

After reading this article it becomes clear that blogging might be the next money generator. I was surprised to see that Google will offer a percentage of adds revenue for those blogs that allow AdSense adds on their blog. Something that started as perhaps a exhibitionist’s tool now turns into a money generating activity. Of course only for those blogs that allow adds. Given the independent opinion that I share with you on DotNETForDevices this blog will remain add-free. There is something cool in this whole new way of making money though. Adds will only appear when they are potentially viewed by an audience. This in short means that blogs are not just write only pieces of information. The arrival of adds is the best proof that blogs are actually read. This for sure feels good and gives me extra information to pick up the pace and start blogging on a more regular base again.



   What is this?17:59 PM
Blog Ref URL:  http://www.dotnetfordevices.com/forum.html#136


Monday, August 23, 2004
Upcoming Webcast
It is still a few weeks away, but on September 22nd I will be hosting another MSDN Webcast. This time the subject will be multi-threading for managed application. Right now I am starting with preparations for the Webcast, and I am thinking right now about the development environment. Probably I will show the demo's using Visual Studio.NET 2003, although it is tempting to use Visual Studio 2005. Perhaps it will be a combination of both. The idea is to talk about the theory of multi-threaded applications and to show a simple, yet full blown multi-threaded application from scratch. Hopefully you, as a reader of this blog, will mark September 22nd, 11.00 AM PST, in your calendar. If you want to have more information you can take a look here.

   What is this?16:58 PM
Blog Ref URL:  http://www.dotnetfordevices.com/forum.html#135


Friday, July 30, 2004
What I like about Visual Studio 2005 (so far)

In shock I realized that it is already a week ago since the last blog update. I even promised to start a series of articles about Visual Studio 2005 and I was hoping to make a solid start with that during this week. Well, everything turned out different, as usual. We had some challenges with a vanilla X86 Windows CE.NET 4.1 device that is supposed to ship this week. This consumed most of my time over the week, so the articles and my ongoing exploration of Visual Studio 2005 are delayed until after my vacation. Yes, I will leave you for the bigger part of the upcoming two weeks. Anyway, after playing for a short while with Visual Studio 2005 here are my highlights so far:

  • The new class designer
  • Improved Intellisense
  • The new PocketPC emulator
  • Designer mode with true WYSIWYG

Area's I definitely want to take a look at in the (near) future are:

  • Custom Controls
  • P/Invoke & COM Interop
  • Native code development with Visual Studio 2005

I am sure there are many more area's I want to take a look at. I am not yet sure if I am going to take a laptop on vacation. If so, you might read more in the next two weeks. If not I am sure that I am packed with energy to explore new possibilities with Visual Studio 2005 in two weeks.



   What is this?14:30 PM
Blog Ref URL:  http://www.dotnetfordevices.com/forum.html#134


Friday, July 23, 2004
Another Webcast in the planning

Even though it is still a bit premature, there is a big chance that I am hosting another Webcast on MSDN at the end of September or the beginning of October. The subject of this Webcast will be multi-threading managed applications. During the Webcast we will build a multi-threaded application from scratch, using both Visual Studio.NET 2003 and OpenNETCF.org's Smart Device Framework. We will also take a look at Visual Studio 2005 Beta 1 in combination with the .NET Compact Framework version 2.0. The idea is to build a multi-threaded application that shows you what multi-threading is all about. We will take a look at creating / starting / terminating threads, we will also discuss how to update UI controls from inside worker threads, take a look at thread synchronization and give some tips and tricks to prevent (potential) deadlocks in the system. As soon as I have more details I will share them with you in this blog. If there are any specific things you want to know more about in relation to multi-threaded applications make sure to send me an email. There is always a chance that your particular topic will be covered in the Webcast.



   What is this?22:21 PM
Blog Ref URL:  http://www.dotnetfordevices.com/forum.html#133


Wednesday, July 21, 2004
Why multithreading adds a whole lot of complexity

Today, in preparation for a little article, I was playing a little bit with a multithreaded application, written in C# with Visual Studio 2005 Beta 1. One of the very cool things is that we can now pass parameters to Control.Invoke to update a control from inside a worker thread. This is not possible in the current version of the .NET Compact Framework. Another cool thing is the fact that the Thread class now contains a Join method that allows a thread to wait for termination of a worker thread by joining it.

 

I wrote a very simple application for a PocketPC in which worker threads of different priorities simulate processing and pass their current state via Invoke to a ListBox. Using Invoke basically means that a method, called inside a worker thread is executed by the owning thread of a particular control on behalf of the worker thread. This mechanism is necessary because updating a control directly from inside a worker thread is an unsafe operation that might lead to unexpected hanging of the system.

 

The fact that Invoke updates a Control on behalf of a worker thread, while it executes inside the owning thread of the control led to an unexpected result in my little test application. The worker thread I was using is very simple and looks like this in pseudo code:

 

UpdateListbox (“thread started”);

while (! ready)

{

    UpdateListbox (“thread asleep”);

    Sleep (n milliseconds);

    UpdateListbox (“thread processing”);

    if (! ready)

        Process (n milliseconds);

}

UpdateListbox (“thread terminated”);

 

The worker thread is started and stopped by the user. Only after I tested the functionality of the worker thread I added the method UpdateListbox. This method uses Control.Invoke to update the ListBox in the only form of the application. Terminating the worker thread is a very simple operation, executed inside a button event handler:

 

workerThread.Ready = true;

workerThread.Join();

 

This little code snippet takes care of terminating the worker thread, because it will fall through the while loop. The main thread waits for the worker thread to be terminated by blocking in the Join function.

 

Adding the UpdateListbox method now caused a deadlock situation. Here is what happened. When the worker thread needs to terminate the main thread sets ready to true and immediately blocks in Join. The worker thread still needs to UpdateListbox, but the main thread is already blocked in the Join method. This means that the worker thread can never finish and the main thread will not be able to continue processing because of that. A perfect example of a deadlock situation.

 

For right now I made a quick and dirty patch, testing the ready flag inside UpdateListbox before the delegate to update the ListBox is called. The sample is now working, but still not entirely. I will have to think about a fool proof solution, for which I probably need a proper synchronization mechanism like the Monitor class.

 

The fact that even this simple example already has many potential problems inspired me to suggest hosting a MSDN Webcast later this year, focused entirely on managed multithreaded application. In this WebCast, if I will get a time slot for it, we will mainly focus on the basics of multithreaded applications. Perhaps at a later stage we can even move on to much more advanced topics regarding multithreading applications.



   What is this?16:14 PM
Blog Ref URL:  http://www.dotnetfordevices.com/forum.html#132


A cool offer by Chris and Neil
Next week Chris and Neil are hosting a Webcast about OpenNETCF.org's Smart Device Framework. Neil came up with a very cool offer. If you are using the Smart Device Framework for your applications you can send in a screen shot and / or company logo. During the Webcast Chris and Neil will give a quick showcase of the cool things you are doing with the SDF today. What a way to get free publicity, especially since the Webcast will be available offline after the actual event on the MSDN website as well.

   What is this?07:37 AM
Blog Ref URL:  http://www.dotnetfordevices.com/forum.html#131


Wednesday, July 21, 2004
Why multithreading adds a whole lot of complexity

Today, in preparation for a little article, I was playing a little bit with a multithreaded application, written in C# with Visual Studio 2005 Beta 1. One of the very cool things is that we can now pass parameters to Control.Invoke to update a control from inside a worker thread. This is not possible in the current version of the .NET Compact Framework. Another cool thing is the fact that the Thread class now contains a Join method that allows a thread to wait for termination of a worker thread by joining it.

 

I wrote a very simple application for a PocketPC in which worker threads of different priorities simulate processing and pass their current state via Invoke to a ListBox. Using Invoke basically means that a method, called inside a worker thread is executed by the owning thread of a particular control on behalf of the worker thread. This mechanism is necessary because updating a control directly from inside a worker thread is an unsafe operation that might lead to unexpected hanging of the system.

 

The fact that Invoke updates a Control on behalf of a worker thread, while it executes inside the owning thread of the control led to an unexpected result in my little test application. The worker thread I was using is very simple and looks like this in pseudo code:

 

UpdateListbox (“thread started”);

while (! ready)

{

    UpdateListbox (“thread asleep”);

    Sleep (n milliseconds);

    UpdateListbox (“thread processing”);

    if (! ready)

        Process (n milliseconds);

}

UpdateListbox (“thread terminated”);

 

The worker thread is started and stopped by the user. Only after I tested the functionality of the worker thread I added the method UpdateListbox. This method uses Control.Invoke to update the ListBox in the only form of the application. Terminating the worker thread is a very simple operation, executed inside a button event handler:

 

workerThread.Ready = true;

workerThread.Join();

 

This little code snippet takes care of terminating the worker thread, because it will fall through the while loop. The main thread waits for the worker thread to be terminated by blocking in the Join function.

 

Adding the UpdateListbox method now caused a deadlock situation. Here is what happened. When the worker thread needs to terminate the main thread sets ready to true and immediately blocks in Join. The worker thread still needs to UpdateListbox, but the main thread is already blocked in the Join method. This means that the worker thread can never finish and the main thread will not be able to continue processing because of that. A perfect example of a deadlock situation.

 

For right now I made a quick and dirty patch, testing the ready flag inside UpdateListbox before the delegate to update the ListBox is called. The sample is now working, but still not entirely. I will have to think about a fool proof solution, for which I probably need a proper synchronization mechanism like the Monitor class.

 

The fact that even this simple example already has many potential problems inspired me to suggest hosting a MSDN Webcast later this year, focused entirely on managed multithreaded application. In this WebCast, if I will get a time slot for it, we will mainly focus on the basics of multithreaded applications. Perhaps at a later stage we can even move on to much more advanced topics regarding multithreading applications.



   What is this?16:14 PM
Blog Ref URL:  http://www.dotnetfordevices.com/forum.html#132


A cool offer by Chris and Neil
Next week Chris and Neil are hosting a Webcast about OpenNETCF.org's Smart Device Framework. Neil came up with a very cool offer. If you are using the Smart Device Framework for your applications you can send in a screen shot and / or company logo. During the Webcast Chris and Neil will give a quick showcase of the cool things you are doing with the SDF today. What a way to get free publicity, especially since the Webcast will be available offline after the actual event on the MSDN website as well.

   What is this?07:37 AM
Blog Ref URL:  http://www.dotnetfordevices.com/forum.html#131


Monday, July 19, 2004
And then all of a sudden it is way too busy

Of course with no complains, just stating a fact, but I promised to have the first of a series of articles on Whidbey development available on DotNETForDevices rather soon. It almost feels like the days between the last entry in my blog, announcing that and today just went by in a flash. This has all to do with the fact that many people in this little country where I live in (The Netherlands) are on a vacation break, at the same time we have more simultaneous Windows CE related projects than ever. All of course with very tight deadlines. All these projects keep me sort of busy without the possibility to dig deeper into Visual Studio 2005. The article will definitely come, but it might be a few more days before it is out on the site.

In the mean time, make sure to do some coding yourself as well. Even though it has been mentioned a number of times in the blog and recently in the column, make sure to work on some cool managed code to be entered in the OpenNETCF Coding Competition. A great way to share your cool code with us, and who knows with the world, and you can win cool prices with your entry as well.



   What is this?22:17 PM
Blog Ref URL:  http://www.dotnetfordevices.com/forum.html#130


Wednesday, July 14, 2004
Announcing a Whidbey for Devices series of articles
Sometimes I simply can't find the time to blog, yet I am excited about a new idea that just came up today. I am thinking about doing a number of short articles, many of which with code samples, to share my experiences using Visual Studio 2005 Beta 1 with the community. Probably articles will arrive at irregular times. I want to give you a complete feeling of things that are working easy, things I had a hard time figuring out and just share some idea's with everybody. The first article in the make will deal with a little PocketPC application that shows how to do multi-threading. The application will host two different worker threads that will run at different times with different priorities. Even though there is some code involved, the sample code should be easy enough to understand what multi-threaded applications are all about. When the article is done you can see how to properly terminate worker threads, how to update UI controls from within a worker thread, how to dynamically update a ListBox from inside worker threads and how to store / retrieve information from a file. The application still needs a little work, the article has yet to be written but I have an outline pretty clear in my head already. Probably a lot of what will be covered is more targetted towards beginners, but at least I hope it will be a nice read once the article is available on DotNETForDevices. Just look at this blog entry as a little teaser and check back frequently. This (hopefully first) article (of a series) should be online sometime next week.

   What is this?22:31 PM
Blog Ref URL:  http://www.dotnetfordevices.com/forum.html#129


Tuesday, July 13, 2004
First Annual OpenNETCF Coding Competition
Although I really don't want to link too often to other blogs there are of course exceptions. Especially in those cases where the world needs to know about something and where it does not really make sense repeating an entire entry. This is one of those moments, especially if you develop managed code for devices. I am very excited that OpenNETCF has announced its first annual coding competition. There are cool prices to win and I can't wait to see all those wonderful entries to the competition coming in. You get the chance to create a great application with great tools like the .NET Compact Framework and OpenNETCF.org's Smart Device Framework, the latter even with the brand new version 1.2 that is soon to be released. You should really take a look as soon as possible at Chris' blog where you can find all the details of the code competition. Read it, get thrilled and start coding!!

   What is this?20:28 PM
Blog Ref URL:  http://www.dotnetfordevices.com/forum.html#128


Monday, July 12, 2004
Visual Studio 2005 on my laptop as well
So now I have Visual Studio 2005 with me everywhere I go, well, at least to those places where I bring my laptop computer. Today I had a whole new, cool installation experience. Of course I am installing VS 2005 on my laptop inside a Virtual PC 2004 as well. Half way during installation my work day was over, so I decided to do a little experiment. I simply turned off the Virtual PC, saving its state. I was really curious how this installation would continue after starting the Virtual PC again. To my surprise the system just continued installing. No errors, no complaints, simply continuing installing. The first application I tried was running fine as well. Of course it was another simple "Hello World" application, but this was a very cool experience. I would not have expected this to work properly and yet it did. I guess our tools are really getting mature and I am excited about that.

   What is this?21:32 PM
Blog Ref URL:  http://www.dotnetfordevices.com/forum.html#127


Saturday, July 10, 2004
Our WebCast is available on MSDN right now
Just in cast you missed the live WebCast on July 7 about the real-time behavior of the .NET Compact Framework, it is recorded and you can play it back at this URL: http://msevents.microsoft.com/CUI/EventDetail.aspx?EventID=1032255690&Culture=en-US. We are not only showing the real-time behavior of the .NET CF, but also give you an overview of the different development tools for Windows CE 5.0. We also show you a little live coding in which we take a look at a small managed application.

   What is this?14:06 PM
Blog Ref URL:  http://www.dotnetfordevices.com/forum.html#126


Friday, July 9, 2004
You can take it with you
The title of this blog entry is actually the title of a monthly MSDN column, written by Jim Wilson. The column is not only a fun read, but gives you a lot of information about developing for mobile devices as well. If you are developing software for mobile devices you definitely should take a look at You can take it with you. I am sure you will take something away from the column.

   What is this?17:33 PM
Blog Ref URL:  http://www.dotnetfordevices.com/forum.html#125


Visual Studio 2005 absolutely rocks!

Last night I finally had the chance to install beta 1 of Visual Studio 2005 and my first impressions are overwhelming. What a great product! I already read several other entries by fellow bloggers and it is interesting to see how we all pick out different things that we like. There is simply so much good stuff to investigate. The best development environment ever? After my first short impression I am confident that this will be it, once the final bits are being released. First and very cool is of course the fact that we are able to run Visual Studio 2005 in a Virtual PC, including the brand new PocketPC 2003 emulator. It simply ran without problems once I made sure the Virtual PC got enough memory assigned. I have configured my VCP to use 512 MB of RAM and VS 2005 runs like a dream in this environment.

A feature I really liked during installing is the scoped setup of MSDN help. Using this option, help files are installed based on the features chosen during the installation of Visual Studio 2005. It shortens the installation time and hopefully still has all information relevant to me available. If this really is true is something time will tell. I will have to use help extensively to give more information about that. Being a *real* developer, right after installation is not the best time to browse through help files. First thing to do is finding out if it is possible to create an application.

Hello Visual Studio 2005

Yes, the picture shows an extremely simple application, but as always the proper way to start is a “Hello, world” application. The first thing I noticed and really love is the use of partial classes. This is new since the latest drop of Visual Studio 2005. It is very nice to have all generated code hidden from me, so I can concentrate easier on my own code. I also like the way the separate EntryPoint class. I never thought it made sense to have the application entry point more or less hidden inside one of the forms. The document outline window might be a useful feature as well, especially if you have controls that are covered by other controls. It just gives me an easy way to select a control, and set particular properties for it.

After my initial impression I just want to give the Visual Studio development team a big compliment for creating a wonderful development environment and the Visual Studio for Devices team + .NET CF team a similar compliment for allowing us to create native applications for devices inside Visual Studio 2005 and for giving us much more functionality than we had with v1 of the .NET Compact Framework. At the same time, the OpenNETCF.org Smart Device Framework functionality does not seem to become obsolete, another thing that makes me really happy. We can greatly work side by side and make the experience for device developers a very, very good one.



   What is this?17:02 PM
Blog Ref URL:  http://www.dotnetfordevices.com/forum.html#124


Friday, July 9, 2004
You can take it with you
The title of this blog entry is actually the title of a monthly MSDN column, written by Jim Wilson. The column is not only a fun read, but gives you a lot of information about developing for mobile devices as well. If you are developing software for mobile devices you definitely should take a look at You can take it with you. I am sure you will take something away from the column.

   What is this?17:33 PM
Blog Ref URL:  http://www.dotnetfordevices.com/forum.html#125


Visual Studio 2005 absolutely rocks!

Last night I finally had the chance to install beta 1 of Visual Studio 2005 and my first impressions are overwhelming. What a great product! I already read several other entries by fellow bloggers and it is interesting to see how we all pick out different things that we like. There is simply so much good stuff to investigate. The best development environment ever? After my first short impression I am confident that this will be it, once the final bits are being released. First and very cool is of course the fact that we are able to run Visual Studio 2005 in a Virtual PC, including the brand new PocketPC 2003 emulator. It simply ran without problems once I made sure the Virtual PC got enough memory assigned. I have configured my VCP to use 512 MB of RAM and VS 2005 runs like a dream in this environment.

A feature I really liked during installing is the scoped setup of MSDN help. Using this option, help files are installed based on the features chosen during the installation of Visual Studio 2005. It shortens the installation time and hopefully still has all information relevant to me available. If this really is true is something time will tell. I will have to use help extensively to give more information about that. Being a *real* developer, right after installation is not the best time to browse through help files. First thing to do is finding out if it is possible to create an application.

Hello Visual Studio 2005

Yes, the picture shows an extremely simple application, but as always the proper way to start is a “Hello, world” application. The first thing I noticed and really love is the use of partial classes. This is new since the latest drop of Visual Studio 2005. It is very nice to have all generated code hidden from me, so I can concentrate easier on my own code. I also like the way the separate EntryPoint class. I never thought it made sense to have the application entry point more or less hidden inside one of the forms. The document outline window might be a useful feature as well, especially if you have controls that are covered by other controls. It just gives me an easy way to select a control, and set particular properties for it.

After my initial impression I just want to give the Visual Studio development team a big compliment for creating a wonderful development environment and the Visual Studio for Devices team + .NET CF team a similar compliment for allowing us to create native applications for devices inside Visual Studio 2005 and for giving us much more functionality than we had with v1 of the .NET Compact Framework. At the same time, the OpenNETCF.org Smart Device Framework functionality does not seem to become obsolete, another thing that makes me really happy. We can greatly work side by side and make the experience for device developers a very, very good one.



   What is this?17:02 PM
Blog Ref URL:  http://www.dotnetfordevices.com/forum.html#124


Thursday, July 8, 2004
Vacation is about to come
Another big milestone is history already. Tonight we had the Webcast on the real-time behavior of the .NET Compact Framework with a nice audience. I hope the people listening in on the Webcast had as much fun listening as I had presenting. This was truly fun to do. Unfortunately we were not able to show a live demonstration of our system running real-time code in combination with a managed User Interface. Just before the Webcast we ran into some problems when we were trying to show the UI of our test system using the ActiveSync Remote Display. This is something to really dig into, right now I can't give much details of the problems we faced, but they sure need some investigation. So the audience had to do with us talking and showing slides and a few code samples only. Presenting a Webcast is absolutely fun to do. I surely hope that the organizers were happy with us and that this was the beginning of a series of Webcasts. I certainly am ready to move on with this. The Webcast will be available online in about 72 hours in case you missed it. I'll let everybody know when the link to the Webcast is available. 

   What is this?00:25 AM
Blog Ref URL:  http://www.dotnetfordevices.com/forum.html#123


Wednesday, July 7, 2004
T - 5 and counting
You might wonder why, but we are now about 5 hours away from the Webcast on the real-time behavior of the .NET Compact Framework. I just checked the Webcast tools and everything seems to be running. Luckily Microsoft's LiveMeeting is easy to use, so I guess this will not be a fight with the tools. It is going to be interesting to sit here are an empty desk and talk to people, hopefully in the same excited way as we would have done with a room filled with people. This feels more like a radio broadcast, one of my ambitions and dreams to hopefully become true at one time as well. Anyway, we have some pretty cool content for tonight. Next step is to get our demonstration working on the presenter machine and we are ready to go. I might keep everybody informed here later today about the progress we make in preparations, otherwise I guess that you have to tune in to tonight's Webcast to see the results. We hope to meet everybody who is reading this tonight at this location.

   What is this?14:28 PM
Blog Ref URL:  http://www.dotnetfordevices.com/forum.html#122


Visual Studio 2005 Beta 1
Inspired by the excitement of many other people I can't wait to get beta 1 of Visual Studio 2005 installed on my system. I got the full product downloaded overnight, so actually I am ready to install it right now, if it was not for the Webcast that is sort of coming in between. Yesterday I started joking to Michel that we should actually try and run our real-time .NET Compact Framework demo's not only on the latest build of Windows CE 5.0, but also with v2 of the Compact Framework, getting rid entirely of the .NET acronym in product names. Of course it is still a little too ambitious to use Visual Studio 2005 beta 1 to recreate our demonstration. We will definitely do so, but probably later this month / year. In the meantime, once I do get started installing Visual Studio 2005 beta 1 I will make sure to inform you about my experiences, not only on the installation process but also on actually using the product. The latter probably being the more useful information.

   What is this?09:33 AM
Blog Ref URL:  http://www.dotnetfordevices.com/forum.html#121


Wednesday, July 7, 2004
T - 5 and counting
You might wonder why, but we are now about 5 hours away from the Webcast on the real-time behavior of the .NET Compact Framework. I just checked the Webcast tools and everything seems to be running. Luckily Microsoft's LiveMeeting is easy to use, so I guess this will not be a fight with the tools. It is going to be interesting to sit here are an empty desk and talk to people, hopefully in the same excited way as we would have done with a room filled with people. This feels more like a radio broadcast, one of my ambitions and dreams to hopefully become true at one time as well. Anyway, we have some pretty cool content for tonight. Next step is to get our demonstration working on the presenter machine and we are ready to go. I might keep everybody informed here later today about the progress we make in preparations, otherwise I guess that you have to tune in to tonight's Webcast to see the results. We hope to meet everybody who is reading this tonight at this location.

   What is this?14:28 PM
Blog Ref URL:  http://www.dotnetfordevices.com/forum.html#122


Visual Studio 2005 Beta 1
Inspired by the excitement of many other people I can't wait to get beta 1 of Visual Studio 2005 installed on my system. I got the full product downloaded overnight, so actually I am ready to install it right now, if it was not for the Webcast that is sort of coming in between. Yesterday I started joking to Michel that we should actually try and run our real-time .NET Compact Framework demo's not only on the latest build of Windows CE 5.0, but also with v2 of the Compact Framework, getting rid entirely of the .NET acronym in product names. Of course it is still a little too ambitious to use Visual Studio 2005 beta 1 to recreate our demonstration. We will definitely do so, but probably later this month / year. In the meantime, once I do get started installing Visual Studio 2005 beta 1 I will make sure to inform you about my experiences, not only on the installation process but also on actually using the product. The latter probably being the more useful information.

   What is this?09:33 AM
Blog Ref URL:  http://www.dotnetfordevices.com/forum.html#121


Sunday, July 4, 2004
Hello Amsterdam

Tech*Ed Europe is history again, so it was safe to return to Amsterdam. Sometimes traveling is just not fun. Today was such a day, actually it all started yesterday. The flight from San Diego to Minneapolis was actually pretty good; they even served a tasty breakfast onboard of that flight. After a 4 hour wait in Minneapolis the *fun* started. The plane we would take to fly home had mechanical problems. Each hour the staff made an announcement on the status of the flight, giving not much more information than telling us that they would come back with more information in another hour.

The algorithm they program the staff in Minneapolis with looks something like this:

while (airplane in maintenance &&
           
another hour passed by)
{
    make an announcement giving absolutely
        no information whatsoever
}

Being a member of this airline’s frequent flyer program they booked me to  another flight to Amsterdam. They were even making sure that my luggage would actually travel with me. Of course when I arrived in Amsterdam my luggage was lost. I still wonder where and how. Somehow I don’t trust the luggage handling in Amsterdam right now. The flight I arrived with didn’t even show up on the luggage belts, so I guess the system was simply messed up in Amsterdam. Now how hard can it be to put a couple of suitcases on the right luggage belt and display correct flight information above it. This surely doesn’t sound like rocket science to me.

Of course, in a situation where lots of people were transferred unexpected from one flight to another, and probably also in general, mistakes can be made, or even luggage handling software can contain bugs. But what I totally dislike about this whole situation is the way the staff at the airport is dealing with these problems. After a long 8 hour flight, staying up almost entirely during the night, I simply want one easy answer (yes or no). Did my luggage make it? Instead of answering with yes or no, the staff insisted on waiting 10 more minutes before coming back to get more information. It simply seems that the staff, real people, are programmed with the following algorithm.

while (traveler does not have luggage yet)
{
    ask them to wait 10 minutes
}

In between the 10 minute intervals nothing seems to happen. After running through this while loop 6 times it was enough for me. After filling out a long form they promised to deliver my luggage when it would arrive.

Oh, I got a phone call from the airline a few hours later. They located my suitcases and I will have them back tomorrow evening. That is great news. I am sure the luggage stayed on the original flight I was supposed to take. Why? The phone call came remarkably soon after the original plane, delayed due to maintenance, landed at Schiphol Airport.



   What is this?22:31 PM
Blog Ref URL:  http://www.dotnetfordevices.com/forum.html#120


Saturday, July 3, 2004
Goodbye San Diego

It's that time again. Flying back after a great conference. It always leaves me a bit empty. Even though the Embedded DevCon already finished on Thursday I would have wanted it to continue. It would have been great to have the possibility of sharing even more information amongst all those embedded developers. Overall the Embedded DevCon was a good conference with great content. As promised, the technical level went beyond previous embedded DevCon's. To me that makes perfect sense. At the beginning of the year there have been a number of Windows Embedded Events all over the world. These free one day seminars gave a great introduction on both Windows CE and Windows XP Embedded. After the pre-conference here at the Embedded DevCon it was time to dig in deep, and that is exactly what everybody here could do. I am glad that there were a number of presentations that covered developing managed code using the .NET Compact Framework. Over time I am sure that more developers will start using either C# or Visual Basic.NET for their solutions. It does not mean that we will entirely abandon C and C++. After all, those languages are needed for driver development and hard real-time functionality. For other types of work I strongly recommend you to at least take a look at managed code. It will give you better programmer productivity and some great development tools. I am curious to see who is already using managed code in embedded devices and who believes that embedded development should be done in either C or C++. Unfortunately I don't have the opportunity to start a poll on DotNETForDevices right now, but if anybody else has hosted a similar webpoll I would be interested to know about it.

Hopefully we will see an Embedded DevCon in Europe this year as well. And for my future dreams I would love to see the Embedded DevCon and the Mobile DevCon be combined next year. Even though I am one of the people continously explaining that PocketPC != Windows CE, it would be cool to have all the device folks together at one single conference.

Right now it is time to sit in airplanes for the next 12 or so hours. Too bad I am flying back the day before July 4th. It would have been nice to experience that day here in the USA. For anybody who does I hope you have a great Independence Day.



   What is this?15:32 PM
Blog Ref URL:  http://www.dotnetfordevices.com/forum.html#119


Friday, July 2, 2004
Unfortunately it is all over again.

What probably is the last US conference for me this year is history. I just had a blast having the chance to go to so many conferences this year, and actually speak at a couple of them. This tastes sweet and I want to have more of it. Our session yesterday at the Embedded DevCon on the real time behavior of the .NET Compact Framework went great. We had a very good time presenting this material, and, given the size of the audience, this was a subject that people are interested in. As a matter of facts, we got questions to perhaps expand our experiments, get more done in managed code and report back to the community. There are a couple of things I am curious about, looking at the combination of real-time functionality and managed code, so this story will be continued!

The demo gods were absolutely with us. Everything worked as it was supposed to work. That is really a miracle, especially if you take a look at the electronics we were using. Doesn't this look fragile? Totally different then the nice Windows CE boxes, some other presenters had with them.

Doesn't this look fragile?

Right now I am thinking I "need" a low cost, nice little X86 based box myself. It would be great to have a box to be able to experiment more with Windows CE. Unfortunately I can't afford to buy one right now, but if any hardware vendor is interested in donating a box, please get in touch with me. In return you will get an entry on DotNETForDevices. Big deal you might think, but the site attracts more visitors day after day. On average we are now at around 100 visitors a day during weekdays. Think about the advantage a hardware vendor would have. Having a nice little CE box would alow me doing more experiments, meaning more hopefully great content on the site and your name mentioned frequently being the provider of the hardware. Of course this has nothing to do anymore with the Embedded DevCon. I will return later with more information on the conference, but for now I am just daydreaming about a Windows CE box. Interested? Just send me an email.



   What is this?18:37 PM
Blog Ref URL:  http://www.dotnetfordevices.com/forum.html#118


Thursday, July 1, 2004
Here's a blog you need to add to your list of favourites

If you haven't done so that is. Just take a look at David McNamee's blog. Not just because he referenced mine and he mentioned me as a speaker for the Embedded DevCon (hey man, thank you!), but just because he has great content in his blog.

Let me just make a personal confession here. It took me like 6 years of dreaming, being an attendee at many large US conferences, before I finally could speak at one. This is something I wanted so much and this year it all happened, first during MDC, after that totally unexpected with an informal and unannounced talk at TechEd and now with even 3 talks during the Embedded DevCon. Right now I know how easily you can get addicted to this, so be warned! At the same time it is a huge motivation to become better at this. Even though all evaluations so far turned out to be pretty good I am now dreaming of the "perfect" presentation. I have sort of a handycap to overcome, trying to be as fluent in speaking English as I am in speaking Dutch. At least that gives me a goal for the upcoming months. Especially since my idea of deep technical presentations is somewhere along the line with Mike Hall, Doug Boling, Paul Yao, Nat Frampton and Chris Tacke. A good techical presentation should not be boring, should not contain marketing sh*t, should be highly entertaining and should make people thrilled to actually start using the products we are talking about. Sometimes this is a hard job, especially since we geeks often are not the most natural speakers (hey, I am talking for myself now, not for the speakers I mentioned in this entry). However, trying to reach that level is hugely satisfying and I would love it if people take away the important parts of a presentation and yet are saying to each other that they had a great time while attending the talk.

Hopefully you read this entry to the end, so I have the opportunity for a shameless plug. If you happen to have time on Wednesday July 7 between 11.00 AM and 12.30 PM Pacific Time, make sure to tune in to MSDN to join us for a WebCast on the real time behavior of the .NET Compact Framework.



   What is this?17:46 PM
Blog Ref URL:  http://www.dotnetfordevices.com/forum.html#117


We are good to go
Today is the moment of truth for the .NET CF in real-time presentation. All the equipment was working yesterday night during rehearsal and our run through went pretty much smooth as well. Hopefully the right english words will come out of my mouth again during the session this afternoon. Being the last session I wonder if we have any audience, but if so I am sure we are going to present some great content to the people there, which they actually can use in real life applications. I am definitely looking forward to this presentation, especially since it is the last one for now right here in the USA. Since there are no more conferences scheduled in the near future it might be the last one for this year here in this huge country. Hopefully I am as thrilled writing about the presentation tomorrow as I am today. Also I hope that I will be back soon in this country with more cool presentations, preferably at even larger conferences. It is time to make a step onwards, so if any of the Microsoft event organizers is reading this, make sure to get in touch with me for .NET CF presentations, especially in the area where managed code and embedded devices meet each other. Or of course to help us make the OpenNETCF Smart Device Framework known accross the world.

   What is this?17:23 PM
Blog Ref URL:  http://www.dotnetfordevices.com/forum.html#116


Sumobots are a lot of fun!
Yesterday evening, at the Embedded DevCon party they set up a Sumobot competition. Giving his enthusiasm, it must have been Mike Hall who thought of this competition. Attendees were asked to join the competition. They were equiped with a Sumobot kit which had to be assembled first. According to Mike Hall that should take a 12 year old about 30 minutes, but I've seen people working way longer on them during this conference. Of course I can laugh about it because I didn't join the competition. It probably would have taken me two days to assemble one, given my great skills with everything hardware related. After the initial assembly it was up to the contenders to modify the hardware a bit (or sneak a little as I would call it) and write a smart algorithm for the sumobot to find it's opponent and try to kick him off the field. It was fun to see how some people concentrated just on hardware, trying to make stealth bots etc. while others were really trying to write smart algorithms. Well, it came all down to last nights competition, which many attendees were looking at during the party. We just had a blast watching those little demons fighting each others. I have to say that I regret not taking part in the competition. Michel kept bugging me to join up as a team, but I stood firm. This time I was wrong. I can't wait to see if there is a Dutch competition for this, otherwise we should start one. Perhaps with universy teams and software companies to start off with.

   What is this?17:20 PM
Blog Ref URL:  http://www.dotnetfordevices.com/forum.html#115


That's it for the hand on labs

The embedded DevCon gets to its last day already. Teaching hands on labs proved to be a lot of fun, so hopefully I get another chance at another conference. At the same time they are really hard to do. I took a look at the evaluations, and I have to agree with the overal comments. People thought the presentation was great and the content was wonderful, but that the pace was a little (sometimes even way too) high. I guess that immediately touches the essence of a hands on lab. Being an experienced .NET CF developer it took me like 20 minutes to finish the labs but of course I should have run a trial with developers with no or almost no .NET CF experience. Next time, when there will be a second chance and when there will be more time for preparation that is exactly what we are going to do. At the same time people loved the content and suggested having it available as a self paced lab. I am not sure where we are legally in this matter, but I will try to find out if we can make this material available for download on the OpenNETCF website. Hopefully it will give developers some good material to get a head start with developing managed applications for devices, using the .NET CF and the Smart Device Framework.



   What is this?17:02 PM
Blog Ref URL:  http://www.dotnetfordevices.com/forum.html#114


Thursday, July 1, 2004
Here's a blog you need to add to your list of favourites

If you haven't done so that is. Just take a look at David McNamee's blog. Not just because he referenced mine and he mentioned me as a speaker for the Embedded DevCon (hey man, thank you!), but just because he has great content in his blog.

Let me just make a personal confession here. It took me like 6 years of dreaming, being an attendee at many large US conferences, before I finally could speak at one. This is something I wanted so much and this year it all happened, first during MDC, after that totally unexpected with an informal and unannounced talk at TechEd and now with even 3 talks during the Embedded DevCon. Right now I know how easily you can get addicted to this, so be warned! At the same time it is a huge motivation to become better at this. Even though all evaluations so far turned out to be pretty good I am now dreaming of the "perfect" presentation. I have sort of a handycap to overcome, trying to be as fluent in speaking English as I am in speaking Dutch. At least that gives me a goal for the upcoming months. Especially since my idea of deep technical presentations is somewhere along the line with Mike Hall, Doug Boling, Paul Yao, Nat Frampton and Chris Tacke. A good techical presentation should not be boring, should not contain marketing sh*t, should be highly entertaining and should make people thrilled to actually start using the products we are talking about. Sometimes this is a hard job, especially since we geeks often are not the most natural speakers (hey, I am talking for myself now, not for the speakers I mentioned in this entry). However, trying to reach that level is hugely satisfying and I would love it if people take away the important parts of a presentation and yet are saying to each other that they had a great time while attending the talk.

Hopefully you read this entry to the end, so I have the opportunity for a shameless plug. If you happen to have time on Wednesday July 7 between 11.00 AM and 12.30 PM Pacific Time, make sure to tune in to MSDN to join us for a WebCast on the real time behavior of the .NET Compact Framework.



   What is this?17:46 PM
Blog Ref URL:  http://www.dotnetfordevices.com/forum.html#117


We are good to go
Today is the moment of truth for the .NET CF in real-time presentation. All the equipment was working yesterday night during rehearsal and our run through went pretty much smooth as well. Hopefully the right english words will come out of my mouth again during the session this afternoon. Being the last session I wonder if we have any audience, but if so I am sure we are going to present some great content to the people there, which they actually can use in real life applications. I am definitely looking forward to this presentation, especially since it is the last one for now right here in the USA. Since there are no more conferences scheduled in the near future it might be the last one for this year here in this huge country. Hopefully I am as thrilled writing about the presentation tomorrow as I am today. Also I hope that I will be back soon in this country with more cool presentations, preferably at even larger conferences. It is time to make a step onwards, so if any of the Microsoft event organizers is reading this, make sure to get in touch with me for .NET CF presentations, especially in the area where managed code and embedded devices meet each other. Or of course to help us make the OpenNETCF Smart Device Framework known accross the world.

   What is this?17:23 PM
Blog Ref URL:  http://www.dotnetfordevices.com/forum.html#116


Sumobots are a lot of fun!
Yesterday evening, at the Embedded DevCon party they set up a Sumobot competition. Giving his enthusiasm, it must have been Mike Hall who thought of this competition. Attendees were asked to join the competition. They were equiped with a Sumobot kit which had to be assembled first. According to Mike Hall that should take a 12 year old about 30 minutes, but I've seen people working way longer on them during this conference. Of course I can laugh about it because I didn't join the competition. It probably would have taken me two days to assemble one, given my great skills with everything hardware related. After the initial assembly it was up to the contenders to modify the hardware a bit (or sneak a little as I would call it) and write a smart algorithm for the sumobot to find it's opponent and try to kick him off the field. It was fun to see how some people concentrated just on hardware, trying to make stealth bots etc. while others were really trying to write smart algorithms. Well, it came all down to last nights competition, which many attendees were looking at during the party. We just had a blast watching those little demons fighting each others. I have to say that I regret not taking part in the competition. Michel kept bugging me to join up as a team, but I stood firm. This time I was wrong. I can't wait to see if there is a Dutch competition for this, otherwise we should start one. Perhaps with universy teams and software companies to start off with.

   What is this?17:20 PM
Blog Ref URL:  http://www.dotnetfordevices.com/forum.html#115


That's it for the hand on labs

The embedded DevCon gets to its last day already. Teaching hands on labs proved to be a lot of fun, so hopefully I get another chance at another conference. At the same time they are really hard to do. I took a look at the evaluations, and I have to agree with the overal comments. People thought the presentation was great and the content was wonderful, but that the pace was a little (sometimes even way too) high. I guess that immediately touches the essence of a hands on lab. Being an experienced .NET CF developer it took me like 20 minutes to finish the labs but of course I should have run a trial with developers with no or almost no .NET CF experience. Next time, when there will be a second chance and when there will be more time for preparation that is exactly what we are going to do. At the same time people loved the content and suggested having it available as a self paced lab. I am not sure where we are legally in this matter, but I will try to find out if we can make this material available for download on the OpenNETCF website. Hopefully it will give developers some good material to get a head start with developing managed applications for devices, using the .NET CF and the Smart Device Framework.



   What is this?17:02 PM
Blog Ref URL:  http://www.dotnetfordevices.com/forum.html#114


Thursday, July 1, 2004
Here's a blog you need to add to your list of favourites

If you haven't done so that is. Just take a look at David McNamee's blog. Not just because he referenced mine and he mentioned me as a speaker for the Embedded DevCon (hey man, thank you!), but just because he has great content in his blog.

Let me just make a personal confession here. It took me like 6 years of dreaming, being an attendee at many large US conferences, before I finally could speak at one. This is something I wanted so much and this year it all happened, first during MDC, after that totally unexpected with an informal and unannounced talk at TechEd and now with even 3 talks during the Embedded DevCon. Right now I know how easily you can get addicted to this, so be warned! At the same time it is a huge motivation to become better at this. Even though all evaluations so far turned out to be pretty good I am now dreaming of the "perfect" presentation. I have sort of a handycap to overcome, trying to be as fluent in speaking English as I am in speaking Dutch. At least that gives me a goal for the upcoming months. Especially since my idea of deep technical presentations is somewhere along the line with Mike Hall, Doug Boling, Paul Yao, Nat Frampton and Chris Tacke. A good techical presentation should not be boring, should not contain marketing sh*t, should be highly entertaining and should make people thrilled to actually start using the products we are talking about. Sometimes this is a hard job, especially since we geeks often are not the most natural speakers (hey, I am talking for myself now, not for the speakers I mentioned in this entry). However, trying to reach that level is hugely satisfying and I would love it if people take away the important parts of a presentation and yet are saying to each other that they had a great time while attending the talk.

Hopefully you read this entry to the end, so I have the opportunity for a shameless plug. If you happen to have time on Wednesday July 7 between 11.00 AM and 12.30 PM Pacific Time, make sure to tune in to MSDN to join us for a WebCast on the real time behavior of the .NET Compact Framework.



   What is this?17:46 PM
Blog Ref URL:  http://www.dotnetfordevices.com/forum.html#117


We are good to go
Today is the moment of truth for the .NET CF in real-time presentation. All the equipment was working yesterday night during rehearsal and our run through went pretty much smooth as well. Hopefully the right english words will come out of my mouth again during the session this afternoon. Being the last session I wonder if we have any audience, but if so I am sure we are going to present some great content to the people there, which they actually can use in real life applications. I am definitely looking forward to this presentation, especially since it is the last one for now right here in the USA. Since there are no more conferences scheduled in the near future it might be the last one for this year here in this huge country. Hopefully I am as thrilled writing about the presentation tomorrow as I am today. Also I hope that I will be back soon in this country with more cool presentations, preferably at even larger conferences. It is time to make a step onwards, so if any of the Microsoft event organizers is reading this, make sure to get in touch with me for .NET CF presentations, especially in the area where managed code and embedded devices meet each other. Or of course to help us make the OpenNETCF Smart Device Framework known accross the world.

   What is this?17:23 PM
Blog Ref URL:  http://www.dotnetfordevices.com/forum.html#116


Sumobots are a lot of fun!
Yesterday evening, at the Embedded DevCon party they set up a Sumobot competition. Giving his enthusiasm, it must have been Mike Hall who thought of this competition. Attendees were asked to join the competition. They were equiped with a Sumobot kit which had to be assembled first. According to Mike Hall that should take a 12 year old about 30 minutes, but I've seen people working way longer on them during this conference. Of course I can laugh about it because I didn't join the competition. It probably would have taken me two days to assemble one, given my great skills with everything hardware related. After the initial assembly it was up to the contenders to modify the hardware a bit (or sneak a little as I would call it) and write a smart algorithm for the sumobot to find it's opponent and try to kick him off the field. It was fun to see how some people concentrated just on hardware, trying to make stealth bots etc. while others were really trying to write smart algorithms. Well, it came all down to last nights competition, which many attendees were looking at during the party. We just had a blast watching those little demons fighting each others. I have to say that I regret not taking part in the competition. Michel kept bugging me to join up as a team, but I stood firm. This time I was wrong. I can't wait to see if there is a Dutch competition for this, otherwise we should start one. Perhaps with universy teams and software companies to start off with.

   What is this?17:20 PM
Blog Ref URL:  http://www.dotnetfordevices.com/forum.html#115


That's it for the hand on labs

The embedded DevCon gets to its last day already. Teaching hands on labs proved to be a lot of fun, so hopefully I get another chance at another conference. At the same time they are really hard to do. I took a look at the evaluations, and I have to agree with the overal comments. People thought the presentation was great and the content was wonderful, but that the pace was a little (sometimes even way too) high. I guess that immediately touches the essence of a hands on lab. Being an experienced .NET CF developer it took me like 20 minutes to finish the labs but of course I should have run a trial with developers with no or almost no .NET CF experience. Next time, when there will be a second chance and when there will be more time for preparation that is exactly what we are going to do. At the same time people loved the content and suggested having it available as a self paced lab. I am not sure where we are legally in this matter, but I will try to find out if we can make this material available for download on the OpenNETCF website. Hopefully it will give developers some good material to get a head start with developing managed applications for devices, using the .NET CF and the Smart Device Framework.



   What is this?17:02 PM
Blog Ref URL:  http://www.dotnetfordevices.com/forum.html#114


Thursday, July 1, 2004
Here's a blog you need to add to your list of favourites

If you haven't done so that is. Just take a look at David McNamee's blog. Not just because he referenced mine and he mentioned me as a speaker for the Embedded DevCon (hey man, thank you!), but just because he has great content in his blog.

Let me just make a personal confession here. It took me like 6 years of dreaming, being an attendee at many large US conferences, before I finally could speak at one. This is something I wanted so much and this year it all happened, first during MDC, after that totally unexpected with an informal and unannounced talk at TechEd and now with even 3 talks during the Embedded DevCon. Right now I know how easily you can get addicted to this, so be warned! At the same time it is a huge motivation to become better at this. Even though all evaluations so far turned out to be pretty good I am now dreaming of the "perfect" presentation. I have sort of a handycap to overcome, trying to be as fluent in speaking English as I am in speaking Dutch. At least that gives me a goal for the upcoming months. Especially since my idea of deep technical presentations is somewhere along the line with Mike Hall, Doug Boling, Paul Yao, Nat Frampton and Chris Tacke. A good techical presentation should not be boring, should not contain marketing sh*t, should be highly entertaining and should make people thrilled to actually start using the products we are talking about. Sometimes this is a hard job, especially since we geeks often are not the most natural speakers (hey, I am talking for myself now, not for the speakers I mentioned in this entry). However, trying to reach that level is hugely satisfying and I would love it if people take away the important parts of a presentation and yet are saying to each other that they had a great time while attending the talk.

Hopefully you read this entry to the end, so I have the opportunity for a shameless plug. If you happen to have time on Wednesday July 7 between 11.00 AM and 12.30 PM Pacific Time, make sure to tune in to MSDN to join us for a WebCast on the real time behavior of the .NET Compact Framework.



   What is this?17:46 PM
Blog Ref URL:  http://www.dotnetfordevices.com/forum.html#117


We are good to go
Today is the moment of truth for the .NET CF in real-time presentation. All the equipment was working yesterday night during rehearsal and our run through went pretty much smooth as well. Hopefully the right english words will come out of my mouth again during the session this afternoon. Being the last session I wonder if we have any audience, but if so I am sure we are going to present some great content to the people there, which they actually can use in real life applications. I am definitely looking forward to this presentation, especially since it is the last one for now right here in the USA. Since there are no more conferences scheduled in the near future it might be the last one for this year here in this huge country. Hopefully I am as thrilled writing about the presentation tomorrow as I am today. Also I hope that I will be back soon in this country with more cool presentations, preferably at even larger conferences. It is time to make a step onwards, so if any of the Microsoft event organizers is reading this, make sure to get in touch with me for .NET CF presentations, especially in the area where managed code and embedded devices meet each other. Or of course to help us make the OpenNETCF Smart Device Framework known accross the world.

   What is this?17:23 PM
Blog Ref URL:  http://www.dotnetfordevices.com/forum.html#116


Sumobots are a lot of fun!
Yesterday evening, at the Embedded DevCon party they set up a Sumobot competition. Giving his enthusiasm, it must have been Mike Hall who thought of this competition. Attendees were asked to join the competition. They were equiped with a Sumobot kit which had to be assembled first. According to Mike Hall that should take a 12 year old about 30 minutes, but I've seen people working way longer on them during this conference. Of course I can laugh about it because I didn't join the competition. It probably would have taken me two days to assemble one, given my great skills with everything hardware related. After the initial assembly it was up to the contenders to modify the hardware a bit (or sneak a little as I would call it) and write a smart algorithm for the sumobot to find it's opponent and try to kick him off the field. It was fun to see how some people concentrated just on hardware, trying to make stealth bots etc. while others were really trying to write smart algorithms. Well, it came all down to last nights competition, which many attendees were looking at during the party. We just had a blast watching those little demons fighting each others. I have to say that I regret not taking part in the competition. Michel kept bugging me to join up as a team, but I stood firm. This time I was wrong. I can't wait to see if there is a Dutch competition for this, otherwise we should start one. Perhaps with universy teams and software companies to start off with.

   What is this?17:20 PM
Blog Ref URL:  http://www.dotnetfordevices.com/forum.html#115


That's it for the hand on labs

The embedded DevCon gets to its last day already. Teaching hands on labs proved to be a lot of fun, so hopefully I get another chance at another conference. At the same time they are really hard to do. I took a look at the evaluations, and I have to agree with the overal comments. People thought the presentation was great and the content was wonderful, but that the pace was a little (sometimes even way too) high. I guess that immediately touches the essence of a hands on lab. Being an experienced .NET CF developer it took me like 20 minutes to finish the labs but of course I should have run a trial with developers with no or almost no .NET CF experience. Next time, when there will be a second chance and when there will be more time for preparation that is exactly what we are going to do. At the same time people loved the content and suggested having it available as a self paced lab. I am not sure where we are legally in this matter, but I will try to find out if we can make this material available for download on the OpenNETCF website. Hopefully it will give developers some good material to get a head start with developing managed applications for devices, using the .NET CF and the Smart Device Framework.



   What is this?17:02 PM
Blog Ref URL:  http://www.dotnetfordevices.com/forum.html#114


Wednesday, June 30, 2004
Did my column really help?

This is probably wishfull thinking but I like to keep on dreaming. A couple of weeks ago I wrote this column. Look what's happening right now! Today I read a press release by AMD and BSQUARE. Here is a clip from it:

BSQUARE and AMD Provide Free Source Code for Microsoft Windows CE Board Support Packages

Probably the column did not really make the difference, but at least this is a good step towards the right direction to get Windows CE easier adopted in the embedded community.



   What is this?19:16 PM
Blog Ref URL:  http://www.dotnetfordevices.com/forum.html#113


The first OpenNETCF hands on lab is history already

Today at the embedded DevCon we held the first hands on lab covering the OpenNETCF Smart Device Framework. I am happy that we were able to fit two different applications into the lab, to give attendees a head start using the SDF. Of course, with different people attending the pace was a little too high for some, too slow for others and luckily about right for the remaining people. Basically the labs went pretty well, no major disasters at least, except for my presenter PC freezing at one moment. Special thanks need to go to Jim Wilson and Chris Tacke for helping out as proctors during the lab. The attendees got the chance to create a simple  Hello World application, but of course different, with a little more functionality, since this is OpenNETCF stuff. The second application was a full multi threaded application. Not only could everybody see how multithreading is done in the .NET CF in combination with the SDF. The application we used is also a great starting point to study the behavior of multithreaded apps and different priorities, events and so on. I am actually thinking about puplishing self paced versions of the lab exercises to the OpenNETCF website to give people a head start when they want to begin using the Smart Device Framework.



   What is this?03:49 AM
Blog Ref URL:  http://www.dotnetfordevices.com/forum.html#112


Wednesday, June 30, 2004
Did my column really help?

This is probably wishfull thinking but I like to keep on dreaming. A couple of weeks ago I wrote this column. Look what's happening right now! Today I read a press release by AMD and BSQUARE. Here is a clip from it:

BSQUARE and AMD Provide Free Source Code for Microsoft Windows CE Board Support Packages

Probably the column did not really make the difference, but at least this is a good step towards the right direction to get Windows CE easier adopted in the embedded community.



   What is this?19:16 PM
Blog Ref URL:  http://www.dotnetfordevices.com/forum.html#113


The first OpenNETCF hands on lab is history already

Today at the embedded DevCon we held the first hands on lab covering the OpenNETCF Smart Device Framework. I am happy that we were able to fit two different applications into the lab, to give attendees a head start using the SDF. Of course, with different people attending the pace was a little too high for some, too slow for others and luckily about right for the remaining people. Basically the labs went pretty well, no major disasters at least, except for my presenter PC freezing at one moment. Special thanks need to go to Jim Wilson and Chris Tacke for helping out as proctors during the lab. The attendees got the chance to create a simple  Hello World application, but of course different, with a little more functionality, since this is OpenNETCF stuff. The second application was a full multi threaded application. Not only could everybody see how multithreading is done in the .NET CF in combination with the SDF. The application we used is also a great starting point to study the behavior of multithreaded apps and different priorities, events and so on. I am actually thinking about puplishing self paced versions of the lab exercises to the OpenNETCF website to give people a head start when they want to begin using the Smart Device Framework.



   What is this?03:49 AM
Blog Ref URL:  http://www.dotnetfordevices.com/forum.html#112


Tuesday, June 29, 2004
And here we are, less than 50 minutes before our first hands on lab

Not the perfect time to find an error in one of the lab exercises, but that is life I guess. Actually it is not so much of an error, more a "feature" of the emulator. We are running a multi-threading exercise during the lab, and to simulate processing in a worker thread I used a little while loop that is just checking the current time against a preset expiration time.

The while loop actually looks like this:

DateTime terminateTime = DataTime.Now.AddMilliseconds
       (
(double)LowPrioThreadProcessTime);

while (DateTime.Now.Ticks < terminateTime.Ticks)
{
   
;
}

The problem we are running into is that the emulator sometimes returns a wrong value for DateTime.Now. It might even return a negative value meaning the worker thread would run forever. Of course there is a simple solution to it, but it got my heart rate up when I saw some "unexpected" behavior.

Here is the solution to solve this problem. Remember, this is only necessary on the emulator, running on a device DateTime just works fine.

long terminateTicks = Environment.TickCount + 
      
LowPrioThreadProcessTime;

while (Environment.TickCount < terminateTicks)
{
   
;
}



   What is this?19:24 PM
Blog Ref URL:  http://www.dotnetfordevices.com/forum.html#111


We made the headlines (again)

Today I was pleasantly surprised by an email I got from one of my co-workers. It turns out that our approach to do hard real-time in combination with the .NET CF was covered in a Dutch computer magazine called Computable. This is a weekly magazine, read by around 85.000 developers, so we got some pretty good attention. Are we turning into (Dutch) celebreties now? To be honest, I would not really mind. I realize that not everybody who visits this blog can read Dutch, but at least you can see what Dutch looks like. For people who can read it, it is sort of an explanation on what Michel and I are actually doing in San Diego on Thursday at the Microsoft Embedded DevCon.

Clip from the Dutch magazine Computable



   What is this?00:39 AM
Blog Ref URL:  http://www.dotnetfordevices.com/forum.html#110


The Embedded DevCon has started

Today is the official start of the Embedded DevCon with two pre-conference sessions. During the morning there was a Windows XP Embedded introduction, followed this afternoon by a Windows CE introduction. In this way attendees have the opportunity to at least get a little familiar with both OS’s before the real thing starts tomorrow. I didn’t sit in at the introduction sessions, but it was cool to see that the introduction was actually held in the lab rooms, so everybody had a development system in front of them with the chance to try things out along with the speakers. I got a glimpse of the afternoon session where Doug Boling was enthusiastically talking about Windows CE in a way that only Doug can. It was good to see that two lab rooms were pretty much filled. It got me thinking however. A few weeks ago, Tech*Ed was held at the same conference centre and the place was packed. There were over 10.000 people attending. If you compare that to the scale of the Embedded DevCon it becomes very clear that this is a different conference. The conference centre seems empty. I am just hoping that more people will actually come to the conference from tomorrow on. Of course we are a small group, compared to the desktop people, but I would love to see lots of people attending the Embedded DevCon as well. The lab rooms look pretty cool, packed with development machines and I was very pleased to see the OpenNETCF Smart Device Framework installed on all machines. I did a quick run through the OpenNETCF hands-on-lab that we will present tomorrow and Wednesday. It seems that everything is working fine. The only big challenge will be to fit the lab in the scheduled time. I guess we should be as little picky about UI stuff as possible and really concentrate on the cool stuff like ApplicationEx and ThreadEx. No matter what will happen it will be necessary to present everything in a very high pace. Of course you can read about the first lab sometime tomorrow.



   What is this?00:25 AM
Blog Ref URL:  http://www.dotnetfordevices.com/forum.html#109


Tuesday, June 29, 2004
And here we are, less than 50 minutes before our first hands on lab

Not the perfect time to find an error in one of the lab exercises, but that is life I guess. Actually it is not so much of an error, more a "feature" of the emulator. We are running a multi-threading exercise during the lab, and to simulate processing in a worker thread I used a little while loop that is just checking the current time against a preset expiration time.

The while loop actually looks like this:

DateTime terminateTime = DataTime.Now.AddMilliseconds
       (
(double)LowPrioThreadProcessTime);

while (DateTime.Now.Ticks < terminateTime.Ticks)
{
   
;
}

The problem we are running into is that the emulator sometimes returns a wrong value for DateTime.Now. It might even return a negative value meaning the worker thread would run forever. Of course there is a simple solution to it, but it got my heart rate up when I saw some "unexpected" behavior.

Here is the solution to solve this problem. Remember, this is only necessary on the emulator, running on a device DateTime just works fine.

long terminateTicks = Environment.TickCount + 
      
LowPrioThreadProcessTime;

while (Environment.TickCount < terminateTicks)
{
   
;
}



   What is this?19:24 PM
Blog Ref URL:  http://www.dotnetfordevices.com/forum.html#111


We made the headlines (again)

Today I was pleasantly surprised by an email I got from one of my co-workers. It turns out that our approach to do hard real-time in combination with the .NET CF was covered in a Dutch computer magazine called Computable. This is a weekly magazine, read by around 85.000 developers, so we got some pretty good attention. Are we turning into (Dutch) celebreties now? To be honest, I would not really mind. I realize that not everybody who visits this blog can read Dutch, but at least you can see what Dutch looks like. For people who can read it, it is sort of an explanation on what Michel and I are actually doing in San Diego on Thursday at the Microsoft Embedded DevCon.

Clip from the Dutch magazine Computable



   What is this?00:39 AM
Blog Ref URL:  http://www.dotnetfordevices.com/forum.html#110


The Embedded DevCon has started

Today is the official start of the Embedded DevCon with two pre-conference sessions. During the morning there was a Windows XP Embedded introduction, followed this afternoon by a Windows CE introduction. In this way attendees have the opportunity to at least get a little familiar with both OS’s before the real thing starts tomorrow. I didn’t sit in at the introduction sessions, but it was cool to see that the introduction was actually held in the lab rooms, so everybody had a development system in front of them with the chance to try things out along with the speakers. I got a glimpse of the afternoon session where Doug Boling was enthusiastically talking about Windows CE in a way that only Doug can. It was good to see that two lab rooms were pretty much filled. It got me thinking however. A few weeks ago, Tech*Ed was held at the same conference centre and the place was packed. There were over 10.000 people attending. If you compare that to the scale of the Embedded DevCon it becomes very clear that this is a different conference. The conference centre seems empty. I am just hoping that more people will actually come to the conference from tomorrow on. Of course we are a small group, compared to the desktop people, but I would love to see lots of people attending the Embedded DevCon as well. The lab rooms look pretty cool, packed with development machines and I was very pleased to see the OpenNETCF Smart Device Framework installed on all machines. I did a quick run through the OpenNETCF hands-on-lab that we will present tomorrow and Wednesday. It seems that everything is working fine. The only big challenge will be to fit the lab in the scheduled time. I guess we should be as little picky about UI stuff as possible and really concentrate on the cool stuff like ApplicationEx and ThreadEx. No matter what will happen it will be necessary to present everything in a very high pace. Of course you can read about the first lab sometime tomorrow.



   What is this?00:25 AM
Blog Ref URL:  http://www.dotnetfordevices.com/forum.html#109


Tuesday, June 29, 2004
And here we are, less than 50 minutes before our first hands on lab

Not the perfect time to find an error in one of the lab exercises, but that is life I guess. Actually it is not so much of an error, more a "feature" of the emulator. We are running a multi-threading exercise during the lab, and to simulate processing in a worker thread I used a little while loop that is just checking the current time against a preset expiration time.

The while loop actually looks like this:

DateTime terminateTime = DataTime.Now.AddMilliseconds
       (
(double)LowPrioThreadProcessTime);

while (DateTime.Now.Ticks < terminateTime.Ticks)
{
   
;
}

The problem we are running into is that the emulator sometimes returns a wrong value for DateTime.Now. It might even return a negative value meaning the worker thread would run forever. Of course there is a simple solution to it, but it got my heart rate up when I saw some "unexpected" behavior.

Here is the solution to solve this problem. Remember, this is only necessary on the emulator, running on a device DateTime just works fine.

long terminateTicks = Environment.TickCount + 
      
LowPrioThreadProcessTime;

while (Environment.TickCount < terminateTicks)
{
   
;
}



   What is this?19:24 PM
Blog Ref URL:  http://www.dotnetfordevices.com/forum.html#111


We made the headlines (again)

Today I was pleasantly surprised by an email I got from one of my co-workers. It turns out that our approach to do hard real-time in combination with the .NET CF was covered in a Dutch computer magazine called Computable. This is a weekly magazine, read by around 85.000 developers, so we got some pretty good attention. Are we turning into (Dutch) celebreties now? To be honest, I would not really mind. I realize that not everybody who visits this blog can read Dutch, but at least you can see what Dutch looks like. For people who can read it, it is sort of an explanation on what Michel and I are actually doing in San Diego on Thursday at the Microsoft Embedded DevCon.

Clip from the Dutch magazine Computable



   What is this?00:39 AM
Blog Ref URL:  http://www.dotnetfordevices.com/forum.html#110


The Embedded DevCon has started

Today is the official start of the Embedded DevCon with two pre-conference sessions. During the morning there was a Windows XP Embedded introduction, followed this afternoon by a Windows CE introduction. In this way attendees have the opportunity to at least get a little familiar with both OS’s before the real thing starts tomorrow. I didn’t sit in at the introduction sessions, but it was cool to see that the introduction was actually held in the lab rooms, so everybody had a development system in front of them with the chance to try things out along with the speakers. I got a glimpse of the afternoon session where Doug Boling was enthusiastically talking about Windows CE in a way that only Doug can. It was good to see that two lab rooms were pretty much filled. It got me thinking however. A few weeks ago, Tech*Ed was held at the same conference centre and the place was packed. There were over 10.000 people attending. If you compare that to the scale of the Embedded DevCon it becomes very clear that this is a different conference. The conference centre seems empty. I am just hoping that more people will actually come to the conference from tomorrow on. Of course we are a small group, compared to the desktop people, but I would love to see lots of people attending the Embedded DevCon as well. The lab rooms look pretty cool, packed with development machines and I was very pleased to see the OpenNETCF Smart Device Framework installed on all machines. I did a quick run through the OpenNETCF hands-on-lab that we will present tomorrow and Wednesday. It seems that everything is working fine. The only big challenge will be to fit the lab in the scheduled time. I guess we should be as little picky about UI stuff as possible and really concentrate on the cool stuff like ApplicationEx and ThreadEx. No matter what will happen it will be necessary to present everything in a very high pace. Of course you can read about the first lab sometime tomorrow.



   What is this?00:25 AM
Blog Ref URL:  http://www.dotnetfordevices.com/forum.html#109


Sunday, June 27, 2004
San Diego, here we are

After a long day of flying I finally made it to San Diego, nicely in time for the Embedded DevCon. Even the flight case with all the demo stuff for the real-time .NET CF presentation made it in one piece. Tomorrow is the day of truth. I wonder if all equipment is still working, especially when you think about how airlines are dealing with luggage. If everything is working as it is supposed to be, tomorrow will be a nice and relaxing day. If not, I guess it is time for panic. Well, maybe just a little panic. After all, the real-time .NET CF presentation is only on Thursday, so in the worst case it should still be possible to get some other hardware and measuring equipment, but let’s hope that is not necessary. I'll keep you informed. Oh, even though I am in San Diego right now, the blog entry timestamp is still in Centreal European Time.



   What is this?06:01 AM
Blog Ref URL:  http://www.dotnetfordevices.com/forum.html#108


Thursday, June 24, 2004
Are you Interested in how to build a Windows CE 5.0 operating system?
You should definitely check out Channel9 then, where Mike Hall shows you how to build a Windows CE operating system in just a couple of minutes. Besides the fact that this demo gives you a glimpse of the powerful Platform Builder development environment, it also shows the strength of Channel9. This is no over produced video that is shown, but simply a video that could have been shot with almost no preparations. In my opinion showing footage like this makes demo's extremely powerful. I for one would not mind seeing more of this stuff appearing on Channel9, or even co-operating by providing my own content.

   What is this?09:58 AM
Blog Ref URL:  http://www.dotnetfordevices.com/forum.html#107


Wednesday, June 23, 2004
And now even with an RSS feed
Should I explain more? At least now you can sign up and find out when new entries are available in the blog. We are still testing, so over the next few days don't be alarmed if things are not behaving exactly as you would expect them to.

   What is this?19:00 PM
Blog Ref URL:  http://www.dotnetfordevices.com/forum.html#106


Tuesday, June 22, 2004
They gave me one too soon (or did I drop it too soon)
My cellphone needed replacement, dropping it on concrete from a height of around 3 feet was a bad idea after all. This happened a couple of weeks ago, at that time there was no sign that the provider we are using at the company would offer Smartphones. Yesterday I found out that they now have the Motorola MPx200 available. I am starting to wonder what I need to do with my current, brand new cell phone of a brand that starts with an "N". Would it survive dropping on concrete from the same height? Should I make a co-worker happy with it? Or should I wait until I am lucky enough at a conference to win a MPx200?

   What is this?08:33 AM
Blog Ref URL:  http://www.dotnetfordevices.com/forum.html#105


Monday, June 21, 2004
Official announcement of the .NET CF Real-Time Webcast
Today I just finished the slide deck, and I also found an announcement on MSDN about the Webcast that Michel Verhagen and I are hosting from the nice surroundings of our Dutch office. We will cover some pretty cool stuff, since we are taking a look at the real-time behavior of the .NET Compact Framework. We are very excited to present this content to a world-wide audience. Make sure to register early for this event because we only have limited seating. Date and time of our appointment are: July 7, 11.00 AM - 12.30 PM PST.

Staying with Webcasts, there is another one you don't want to miss. Chris Tacke and Neil Cowburn will talk about the OpenNETCF.org Smart Device Framework and how to use it to prepare for the next version of the .NET Compact Framework today. Make sure to sign up for this Webcast as well. Date and time: July 28, 11.00 AM - 12.30 PM PST. 


   What is this?15:16 PM
Blog Ref URL:  http://www.dotnetfordevices.com/forum.html#104


Thursday, June 17, 2004
A few words about ThreadEx

When I was preparing the hands on lab on OpenNETCF’s Smart Device Framework I decided to add a managed multi-threaded application. An important reason to do so is the fact that multi-threading is often used in embedded solutions. The functionality of the Thread class in the .NET Compact Framework is somewhat limited, although definitely workable. So I started off creating this application that contains two worker threads that simulate some processing and both write a line of text in a ListBox each time they are running. In itself this little application has several interesting things to look at. It gives the possibility to see the influence of different thread priorities, shows what happens when a low priority thread and a high priority thread are waiting simultaneously on the same event. It also shows how to update a UI control from a worker thread using the Control.Invoke method. So far so good. However, when I wanted to terminate the threads, my first approach was not the brightest. A frequently asked question in the .NET CF newsgroup is what to do to terminate a thread, since the Thread class in the .NET CF does not have an Abort method. Actually, the lack of an Abort method is a good thing, because Abort in the full .NET Framework immediately terminates a thread when it is called, without cleaning up resources. A good pattern in the .NET Compact Framework to properly terminate a thread is to make use of a boolean variable that is checked each time the thread loops around. To be able to inform the main thread about termination of a worker thread, it is for instance possible to use a Mutex. It is good practice to wait for a worker thread to be terminate, because an application can not be closed if it still owns threads that are active. If you don’t want to deal with synchronization objects like Mutexes, the OpenNETCF Smart Device Framework can help you out. ThreadEx makes it really easy to wait inside a main thread for a worker thread to terminate. The Join method is available for that sole purpose. Oh, ThreadEx also contains an Abort method, but you should promise me right away not to use it. It is bad practice, so even though it is there, forget about it.

I truly believe in small code samples with as little overhead as possible to actually understand what is going on in an application. You can take a look at this code snippet for some multi-threading sample code, you might have guessed it, this snippet is about the things I just described.



   What is this?12:12 PM
Blog Ref URL:  http://www.dotnetfordevices.com/forum.html#101


Wednesday, June 16, 2004
They did it again!

There are days that I am pleasantly surprised by Microsoft, specifically by the Mobile and Embedded Devices Group. Let me try to explain that. Over the last almost 20 years I've been working with Microsoft Windows. Indeed I started back in the old days of personal computing with Windows 1.0. Don't we have a celebration to expect in one year? If I remember well, Windows 1.0 was released in 1985, so 2005 should be a year for a big party.

 

During several milestones there were reasons for pleasant surprises. Using Windows 3.11 was a delight over all previous versions. The arrival of Windows 95 was positively shocking. On the Windows NT side I was happy with NT 4.0 and Windows 2000 but especially with Windows XP. Having said all of this I also had the idea about Microsoft being a large organization and I never thought about the people behind all these products. Yes, sometimes it was possible to meet a few of them at conferences, but they always were far away from me.

 

That started to change when I became involved with Windows CE, back in 1997. I remember I had a lot of explaining to do at the company I worked for at that moment. They were wondering why somebody would want to invest time in a new operating system, especially because it was not too easy to creating a Windows CE image for specific hardware using the so beloved Embedded ToolKit. The arrival of Platform Builder with Windows CE 3.0, the first hard-real time version of the OS, made life a little easier. When Windows CE 5.0 will be released you will see a number of changes in Platform Builder, changes that are good because Platform Builder has undergone a lot of improvement. The OS has gained a lot of functionality since it first release. People who read my columns may know that I sometimes try to tease the world, including Microsoft, by explaining that Windows CE is not only a great operating system for devices like Pocket PC’s and Smartphones. It is a great operating system for all kinds of embedded devices. My background is in industrial computing and yes, we assist building devices that are running Windows CE. Even though I believed that Windows CE would become very popular in the embedded world after the release of version 3.0 of the operating system, here in the Netherlands at least we had a slow start. Actually I have had frequent conversations in the company I work for right now if we needed to continue educating our own staff on Windows CE, publish lots of articles in Dutch magazines about it and do lots of presentations about it. Finally things are coming together, the situation is changing. Here in Holland we are very slowly getting out of harder economic times. All of a sudden we see an increased interest in Microsoft Embedded Operating Systems, not just Windows CE but Windows XP Embedded as well. I like to think about this as the top of the iceberg. To be honest, at the beginning of 2004 I gave myself one more year working almost fulltime evangelizing Windows CE and Windows XP Embedded. Without success it would have been my last year doing so. It looks like it is a mission completed by this time already, and we are only half way through the year. Things are really coming together. In my opinion this would be the time to put in some marketing $$$. Talking to a lot of (potential) customers it is great to see that they are looking to Windows CE as a serious alternative over other embedded operating systems. Three or four years ago people started laughing when I talked about Windows CE. That time is history now. The operating system is evaluated seriously by many companies right now.

 

One of the really cool parts about being involved with Windows Embedded Products is the communication with Microsoft folks. Surely it helps being an eMVP, but even prior to being recognized as eMVP it was clear that here were real people at work, creating a whole new operating system and a whole new set of tools. These people share my passion for embedded computing. These people are very excited about the products they create. On top of all, they are listening to feedback. They are listening to you and me. For me this definitely is a great bonus of working in this area.

 

Moving back to pleasant surprises then. Everybody who had a chance to get a copy of the Community Technology Preview May 2004 of Visual Studio 2005, will be pleasantly surprised by that product. During Tech*Ed San Diego I already wrote that Microsoft developers showed there enthusiasm for this latest version of Visual Studio, even though the release date is still far away. After installing it, I definitely share that enthusiasm. Without going into details, this is going to be the best development environment ever. However, don’t just wait for it. The current toolset is very good as well. Begin developing for (embedded) devices TODAY.

 

That brings me to another pleasant surprise, but especially for those of you who are not yet familiar with OpenNETCF.org. Everybody that develops software for Windows Mobile powered devices or for generic Windows CE devices using the .NET Compact Framework should take a look at the OpenNETCF Smart Device Framework. This framework extends the functionality of the .NET Compact Framework, and lots of the features that will be available in the next version of the .NET CF are ready for you to use today using the Smart Device Framework. Better still, it comes for free and you can download all the source code as well, so you can look how we did things but also modify sources for your own specific use.

 

Right now you may wonder why I am writing this blog entry. Well, they did it again. When I read my email this morning I was pleasantly surprised, yet at the same time in shock. Reading the Microsoft Embedded DevWire - June 2004 Edition I noticed that they feature this blog as technical blog of the month. I thought it might be cool to give you some background on my own history in computing and my feelings towards Windows Embedded operating systems. If you are in San Diego for the Embedded DevCon, less then two weeks from now, I look forward to meeting you in person. For right now I hope you will return to this blog, better still to DotNETForDevices in general. In the near future I will make sure that RSS feeds will be added to the sight. Now it’s back to work again. I have an article to finish.



   What is this?09:04 AM
Blog Ref URL:  http://www.dotnetfordevices.com/forum.html#100


Tuesday, June 15, 2004
I am so ready for a break ...
... but it is not going to happen soon. Over the weekend finally the OpenNETCF Smart Device Framework hands on lab script for the Embedded DevCon was done. Well, we still need to test drive it to catch all crazy typos and mistakes I undoubtfully made in it. The final slide deck for the .NET CF real time talk at the same Embedded DevCon in San Diego is finished as well. The only thing we need to do for that talk is run a number tests on our Windows CE demo machine. I was beginning to look forward to a couple of relaxing, easy going days. Well, I should have known better. The minute the last slide deck was done I found an email with a todo list and a number of deadlines for an upcoming Webcast. Just in case you didn't know yet, we are presenting a Webcast from the Netherlands on July 7, 11.00 AM PST on real-time behavior of the .NET Compact Framework. This is going to be my first Webcast ever, so there is also a training session scheduled. I honestly welcome that, but it means more time to spend on something I had not counted in yet. To top it all off, I also got notification yesterday that the IMailRuleClient article I have been working on in the past will likely make it to MSDN. Since many people emailed me already with questions about that article, it seems there is a demand for it. Of course I don't want to let all those people wait too long, so this is something with a reasonable high priority as well. To finish the entire article will probably take another day or so. Just in case you think that is all I need to tell you that you are wrong. Another deadline is coming up soon as well. Microsoft Netherlands asked me to write an article on embedded development using Windows CE and the .NET Compact Framework in there .NET Magazine, which is distributed amongst 50,000 developers here in The Netherlands. I still have to start this article, but an idea is shaping. This is a great opportunity to make developers here familiar with the OpenNETCF Smart Device Framework, so I guess I cover the SDF in an embedded development article. More and more this seems like life in the fast lane. I am not complaining, because all of these are actually things I love to do. The problem is that the economy here is slowly but surely taking off again. That means that it gets busier and busier in my daytime job as well. Right now I am just counting the days until August 1st. That is when my real break for vacation starts. This one time I am hoping that my life in the fast lane helps me to get there soon. Of course all of this is not that interesting. I just wanted to share my life as an embedded developer, Windows Embedded Product manager, presenter, teacher and writer with you. Think twice before you say aloud that you have the same ambition. All of this stuff is great but sometimes a little hectic. Oh yes, all of these activities also means less time to spend on the newsgroups, answering questions from people, but I will be back there soon.

   What is this?08:16 AM
Blog Ref URL:  http://www.dotnetfordevices.com/forum.html#99


Friday, June 11, 2004
Embedded DevCon presentation dates / times now available
Everybody who is attending the Embedded DevCon can now find the complete schedule online. Of course I am only plugging a few sessions right here, but there is a lot of great content during the conference.

For all attendees a must visit is CEA-HOL3, an instructor led hands on lab on the OpenNETCF Smart Device Framework with instructors Alex Feinman and myself. This session is scheduled on the first day, Tuesday June 29, right after the opening keynote at 11.00 AM. In case you can't make it, this session will be repeated on Wednesday June 30, starting at 2.45 PM.

Just in case you thought about leaving early on the last day of the conference I strongly advice you not to do so. During the very last time slot of the conference on Thursday July 1st at 3.15 PM there will be a talk about the real-time behaviour of the .NET Compact Framework. Speakers for this presentation are Michel Verhagen and me again.

We are all excited about the Embedded DevCon and I am really looking forward to see many people there. Please say hi to us in San Diego if you have a chance.


   What is this?10:00 AM
Blog Ref URL:  http://www.dotnetfordevices.com/forum.html#98


Tuesday, June 8, 2004
Hands on lab instead of presentation
Or actually, a bit of a combination of both. The OpenNETCF presentation Alex and I thought we would give at the Embedded Developers Conference in San Diego turns out to be a instructor led hands on lab. I love these kinds of things, especially knowing about them 3 weeks before the conference starts with an entire lab script to be made. The good news is that attendees can really get some hands-on experience with the OpenNETCF Smart Device Framework. The other good news is that we are now hosting two sessions, since there is a repeat session for the lab as well. There is more good news. Since this is not going to be a self-paced lab, we can at least spent some time talking about the Smart Device Framework and its coolness as well. Actually there is even more good news, but now I am digging for it. We might be able to publish the lab exercises as self-paced lab on the OpenNETCF.org website. I will definitely talk about that with the owners of the Embedded DevCon. In that way we can provide more people with a head start for using the Smart Device Framework. There are also a couple of things on the downside though. Since a whole lab script has to be finished before June 17 it will probably mean working day (yes I have a daytime job also) and night (the script has to be finished one way or the other). There is more bad news of course. I am not sure what the capacity of the labs is, but there will probably be less people having the chance to get familiar with the Smart Device Framework than there would have been if this was a presentation. Right now I am setting the goal higher, trying to get both a presentation and the labs, but I wonder if that is actually going to happen. Anyway, thanks to this unexpected preparation for the lab I am already geared up for the Embedded DevCon, even though it is still 3 weeks away from now. Oh, and then there is also the talk Michel and I are going to give on real-time behavior of the .NET Compact Framework. This looks like it is going to be pretty exciting as well, since we are planning to use the latest drop of the Windows CE 5.0 bits for our talk, in combination with the .NET Compact Framework 1.0 SP2. Hopefully we will meet some of the people reading this in person in San Diego. Don't forget to drop by and say hi to us if you happen to be in San Diego for the Embedded DevCon.

   What is this?22:02 PM
Blog Ref URL:  http://www.dotnetfordevices.com/forum.html#97


Saturday, June 5, 2004
Do you think that Windows CE is identical to PocketPC?
In that case you are definitely not alone, but it is not true. Windows CE is an embedded operating system with hard real-time capabilities. It can be found in many different devices, one of which happens to be PocketPC. You should really take a look at this article to read about Windows CE in action in other devices than PocketPC's. The article even shows you how to create a version of Windows CE for a headless device.

   What is this?23:16 PM
Blog Ref URL:  http://www.dotnetfordevices.com/forum.html#96


Friday, June 4, 2004
Chris Anderson in Holland
Somehow, this sounds so recognizable. A conference in Holland, not knowing where to go, when to talk, fighting jetlag etc. Actually I do know the SDGN (Software Developers Group Netherlands), organizing the conference Chris is talking about. They are pretty cool, they even have one of my articles published, unfortunately you have to read Dutch to fully appreciate it. I am sure this conference was a blast, but you should read Chris' story about it. If nothing else it will make you laugh.

   What is this?16:52 PM
Blog Ref URL:  http://www.dotnetfordevices.com/forum.html#95


Channel 9 - Where will it go?
I already wrote about Channel9 two months ago, when it was really just starting. I have not really visited it since then, because of all kinds of time occupying activities like working and traveling. Just before the weekend I had an hour to kill so I decided to take a look at Channel9. I really wonder where this site will take us to, but it is fun to take a look and browse over it, although I would love to see more content on it. I was really happy to see that our own OpenNETCF.org Wiki actually has a link on the Channel9 Wiki page.

   What is this?16:35 PM
Blog Ref URL:  http://www.dotnetfordevices.com/forum.html#94


Friday, June 4, 2004
Chris Anderson in Holland
Somehow, this sounds so recognizable. A conference in Holland, not knowing where to go, when to talk, fighting jetlag etc. Actually I do know the SDGN (Software Developers Group Netherlands), organizing the conference Chris is talking about. They are pretty cool, they even have one of my articles published, unfortunately you have to read Dutch to fully appreciate it. I am sure this conference was a blast, but you should read Chris' story about it. If nothing else it will make you laugh.

   What is this?16:52 PM
Blog Ref URL:  http://www.dotnetfordevices.com/forum.html#95


Channel 9 - Where will it go?
I already wrote about Channel9 two months ago, when it was really just starting. I have not really visited it since then, because of all kinds of time occupying activities like working and traveling. Just before the weekend I had an hour to kill so I decided to take a look at Channel9. I really wonder where this site will take us to, but it is fun to take a look and browse over it, although I would love to see more content on it. I was really happy to see that our own OpenNETCF.org Wiki actually has a link on the Channel9 Wiki page.

   What is this?16:35 PM
Blog Ref URL:  http://www.dotnetfordevices.com/forum.html#94


Saturday, May 29, 2004
Tech*Ed 2004 is history
And then all of a sudden the conference is over. As always I am left with a weird feeling. Surely I learned a lot, while writing this I am installing the newest Visual Studio 2005 drop on my laptop, ignoring the warnings that this should not be done on a production machine. So far so good, during installation it gave me one error message telling it failed installing, but after rebooting it smoothly continued installing as if nothing had happened. Of course I still have to wait to find out and see if it is really working. Back to Tech*Ed. These large scale conferences simply end to sudden. The last day is already a day that many people are flying out during the day. It is manditory to wear your badge each and every moment, but the last hour nobody seems to care anymore. Then after the final presentation it is just done, everybody is expected to get out of the conference centre and move on with their own lives. It is exactly this that gives me a weird feeling. The whole week we have been treated to new and cool things, parties, receptions and so on. And all of a sudden it is over. It seems there is no formal ending to the conference. As always I am thinking that it would be very cool to have one final general session. Sort of a wrapup of the week. An official ending. A clear indication by which everybody knows that it is over and feel good about it. I wonder if I am the only person thinking like this, but I surely would like that. Next year Tech*Ed moves on to Orlando. It will be held in the beginning of June. This Tech*Ed was busy already, but with all the cool products that are expected in the first half of 2005 it would not surprise me if Tech*Ed 2005 will even be bigger. I for one am already looking forward to that event.

   What is this?23:09 PM
Blog Ref URL:  http://www.dotnetfordevices.com/forum.html#93


Friday, May 28, 2004
The OpenNETCF.org Tech*Ed talk is already history
The talk about OpenNETCF.org's Smart Device Framework version 1.1 went pretty well today. Even though there was not too much publicity about the talk there were still like 20 really interested attendees. We had people there that had not heard of the Smart Device Framework and I am sure those people were so excited that they are going to give SDF a try. The funniest question I got was why we don't make our product available for the full .NET Framework as well. The person asking it was especially referring to our P/Invoke helpers. I believe we will get European and Asian attention as well. I talked to one person from Korea that loved the things I was showing and he will make people in his country aware of it. Same is true for an attendee who came from Italy. Not unexpected, but a real crowd pleaser is the SmartList. People here at Tech*Ed just love that wonderful control. On a personal note I hope that this presentation got the attention of Microsoft staff as well, although they were not there. Many of the .NET CF folks are already back in Redmond, but I do hope to get one or two official presentations during next year's Tech*Ed in Orlando. I guess I start working on that as soon as I am back home on Sunday.

   What is this?04:00 AM
Blog Ref URL:  http://www.dotnetfordevices.com/forum.html#92


Wednesday, May 26, 2004
OpenNETCF talk at Tech*Ed on Thursday
The talk about OpenNETCF's Smart Device Framework version 1.1 at TechEd will be held on Thursday at 3.15 PM. It is pretty exiting stuff we are going to cover! If you are attending Tech*Ed, make sure to come by! BTW: I am blogging this on a Pocket PC using the wonderful Update Wizard that SpiralFX provided me with.

   What is this?23:00 PM
Blog Ref URL:  http://www.dotnetfordevices.com/forum.html#91


Tuesday, May 25, 2004
OpenNETCF talk at Tech*Ed
The time is yet unknown but we are going to do a presentation at this year's Tech*Ed in San Diego. It is either going to be Wednesday or Thursday The presentation will be an updated repeat of the MDC session that Alex and I gave earlier this year.

   What is this?23:44 PM
Blog Ref URL:  http://www.dotnetfordevices.com/forum.html#90


Don Box Rocks!

One of the funniest presentations at Tech*Ed was given on the first day. Don Box teamed up with Seth Demsey, Ori Amiga and Kevin Collins to give an overview of smart device development today and tomorrow. These guys didn’t need PowerPoint slides, different versions of Visual Studio and SQL Server were enough. First of, the server guy Box, aka plumber according to his own words, showed that he can actually program for devices with a little support from the device guys. Despite the fact that .NET Rocks, he still remains a COM person which was proofed when he showed his underwear to the audience, almost designer boxer shorts covered with little COM objects. This presentation was totally unstructured but a lot of fun to attend and a convincing advertisement for the cool way in which it is possible to actually program for PocketPC’s and Smartphones. During one of their demo’s they made use of Visual Basic.NET. It looks like this language is especially modified for Don Box, given this code snippet:

 

Public Class Form1

    '{

    Inherits System.Windows.Forms.Form ';

    Friend WithEvents Button1 As System.Windows.Forms.Button ';

    Friend WithEvents MainMenu1 As System.Windows.Forms.MainMenu ;'

    Private Shared METHOD_BUFFERED As Int32 = 0 ';

    Private Shared FILE_ANY_ACCESS As Int32 = 0 ';

    Private Shared FILE_DEVICE_HAL As Int32 = &H101 ';



   What is this?14:30 PM
Blog Ref URL:  http://www.dotnetfordevices.com/forum.html#89


OpenNETCF coverage at Tech*Ed
This really comes unexpected, but there might be a chance to do an informal presenation about OpenNETCF.org's Smart Device Framework during this year's Tech*Ed. During the first day we already had a great plug by Jono (Jonathan Wells) and he was excited about my offer to do a talk about the Smart Device Framework during one of the still open mobile & embedded slots of the so called Cabana sessions. No fancy PowerPoint slides but drilling down, showing code and have an interactive session with anybody who wants to hear it. Hopefully it will be possible to do this talk. Jono suggested to do it towards the end of the conference so we could plug that particular presentation during several other presentations. I am not sure if it is going to happen but I am pretty excited about it already. Of course I will inform you here if and when the talk is going to happen.

   What is this?07:16 AM
Blog Ref URL:  http://www.dotnetfordevices.com/forum.html#88


Tuesday, May 25, 2004
OpenNETCF talk at Tech*Ed
The time is yet unknown but we are going to do a presentation at this year's Tech*Ed in San Diego. It is either going to be Wednesday or Thursday The presentation will be an updated repeat of the MDC session that Alex and I gave earlier this year.

   What is this?23:44 PM
Blog Ref URL:  http://www.dotnetfordevices.com/forum.html#90


Don Box Rocks!

One of the funniest presentations at Tech*Ed was given on the first day. Don Box teamed up with Seth Demsey, Ori Amiga and Kevin Collins to give an overview of smart device development today and tomorrow. These guys didn’t need PowerPoint slides, different versions of Visual Studio and SQL Server were enough. First of, the server guy Box, aka plumber according to his own words, showed that he can actually program for devices with a little support from the device guys. Despite the fact that .NET Rocks, he still remains a COM person which was proofed when he showed his underwear to the audience, almost designer boxer shorts covered with little COM objects. This presentation was totally unstructured but a lot of fun to attend and a convincing advertisement for the cool way in which it is possible to actually program for PocketPC’s and Smartphones. During one of their demo’s they made use of Visual Basic.NET. It looks like this language is especially modified for Don Box, given this code snippet:

 

Public Class Form1

    '{

    Inherits System.Windows.Forms.Form ';

    Friend WithEvents Button1 As System.Windows.Forms.Button ';

    Friend WithEvents MainMenu1 As System.Windows.Forms.MainMenu ;'

    Private Shared METHOD_BUFFERED As Int32 = 0 ';

    Private Shared FILE_ANY_ACCESS As Int32 = 0 ';

    Private Shared FILE_DEVICE_HAL As Int32 = &H101 ';



   What is this?14:30 PM
Blog Ref URL:  http://www.dotnetfordevices.com/forum.html#89


OpenNETCF coverage at Tech*Ed
This really comes unexpected, but there might be a chance to do an informal presenation about OpenNETCF.org's Smart Device Framework during this year's Tech*Ed. During the first day we already had a great plug by Jono (Jonathan Wells) and he was excited about my offer to do a talk about the Smart Device Framework during one of the still open mobile & embedded slots of the so called Cabana sessions. No fancy PowerPoint slides but drilling down, showing code and have an interactive session with anybody who wants to hear it. Hopefully it will be possible to do this talk. Jono suggested to do it towards the end of the conference so we could plug that particular presentation during several other presentations. I am not sure if it is going to happen but I am pretty excited about it already. Of course I will inform you here if and when the talk is going to happen.

   What is this?07:16 AM
Blog Ref URL:  http://www.dotnetfordevices.com/forum.html#88


Tuesday, May 25, 2004
OpenNETCF talk at Tech*Ed
The time is yet unknown but we are going to do a presentation at this year's Tech*Ed in San Diego. It is either going to be Wednesday or Thursday The presentation will be an updated repeat of the MDC session that Alex and I gave earlier this year.

   What is this?23:44 PM
Blog Ref URL:  http://www.dotnetfordevices.com/forum.html#90


Don Box Rocks!

One of the funniest presentations at Tech*Ed was given on the first day. Don Box teamed up with Seth Demsey, Ori Amiga and Kevin Collins to give an overview of smart device development today and tomorrow. These guys didn’t need PowerPoint slides, different versions of Visual Studio and SQL Server were enough. First of, the server guy Box, aka plumber according to his own words, showed that he can actually program for devices with a little support from the device guys. Despite the fact that .NET Rocks, he still remains a COM person which was proofed when he showed his underwear to the audience, almost designer boxer shorts covered with little COM objects. This presentation was totally unstructured but a lot of fun to attend and a convincing advertisement for the cool way in which it is possible to actually program for PocketPC’s and Smartphones. During one of their demo’s they made use of Visual Basic.NET. It looks like this language is especially modified for Don Box, given this code snippet:

 

Public Class Form1

    '{

    Inherits System.Windows.Forms.Form ';

    Friend WithEvents Button1 As System.Windows.Forms.Button ';

    Friend WithEvents MainMenu1 As System.Windows.Forms.MainMenu ;'

    Private Shared METHOD_BUFFERED As Int32 = 0 ';

    Private Shared FILE_ANY_ACCESS As Int32 = 0 ';

    Private Shared FILE_DEVICE_HAL As Int32 = &H101 ';



   What is this?14:30 PM
Blog Ref URL:  http://www.dotnetfordevices.com/forum.html#89


OpenNETCF coverage at Tech*Ed
This really comes unexpected, but there might be a chance to do an informal presenation about OpenNETCF.org's Smart Device Framework during this year's Tech*Ed. During the first day we already had a great plug by Jono (Jonathan Wells) and he was excited about my offer to do a talk about the Smart Device Framework during one of the still open mobile & embedded slots of the so called Cabana sessions. No fancy PowerPoint slides but drilling down, showing code and have an interactive session with anybody who wants to hear it. Hopefully it will be possible to do this talk. Jono suggested to do it towards the end of the conference so we could plug that particular presentation during several other presentations. I am not sure if it is going to happen but I am pretty excited about it already. Of course I will inform you here if and when the talk is going to happen.

   What is this?07:16 AM
Blog Ref URL:  http://www.dotnetfordevices.com/forum.html#88


Sunday, May 23, 2004
When is this science fiction becoming reality?
Here is a great read for everybody who loves smart devices, but who wants devices smarter then today. Seth Demsey has some good thoughts about them, and he is really close to the place where smart devices can become smarter, especially if they need to be programmed in managed code.

   What is this?03:09 AM
Blog Ref URL:  http://www.dotnetfordevices.com/forum.html#87


An old fashioned modem is still useful - sometimes at least
When I got my brand new laptop I was wondering why it was lacking a serial port, infrared and bluetooth and at the same time had a 56k modem integrated. Yet it is a fast and reasonably state of the art machine. Instead of an integrated modem I'd rather had any or all of the three lacking connection options that I just mentioned. After all, I've not used a dial-up modem for the last two years or so. Well, until today that is. Right now I am in the middle of killing time in the NWA Worldclub lounge in Minneapolis. They have a pretty cool "business centre" here, but no wireless or wired network. However they do have phones with free local calls on each desk. I just had to look if the phone cable could be detached from the phone and if I could use my modem to actually dial-up to my local US Internet Provider. Since I am blogging right now from the lounge I can tell you that it works like a charm. I guess today is my lucky day. First of all the Upgrade Gods were with me, both transatlantic and domestic. Second I can actually kill my waiting time online thanks to the modem that luckily is installed in my labtop. I'd better start working on a column that needs to be published later today.

   What is this?02:13 AM
Blog Ref URL:  http://www.dotnetfordevices.com/forum.html#86


Sunday, May 23, 2004
When is this science fiction becoming reality?
Here is a great read for everybody who loves smart devices, but who wants devices smarter then today. Seth Demsey has some good thoughts about them, and he is really close to the place where smart devices can become smarter, especially if they need to be programmed in managed code.

   What is this?03:09 AM
Blog Ref URL:  http://www.dotnetfordevices.com/forum.html#87


An old fashioned modem is still useful - sometimes at least
When I got my brand new laptop I was wondering why it was lacking a serial port, infrared and bluetooth and at the same time had a 56k modem integrated. Yet it is a fast and reasonably state of the art machine. Instead of an integrated modem I'd rather had any or all of the three lacking connection options that I just mentioned. After all, I've not used a dial-up modem for the last two years or so. Well, until today that is. Right now I am in the middle of killing time in the NWA Worldclub lounge in Minneapolis. They have a pretty cool "business centre" here, but no wireless or wired network. However they do have phones with free local calls on each desk. I just had to look if the phone cable could be detached from the phone and if I could use my modem to actually dial-up to my local US Internet Provider. Since I am blogging right now from the lounge I can tell you that it works like a charm. I guess today is my lucky day. First of all the Upgrade Gods were with me, both transatlantic and domestic. Second I can actually kill my waiting time online thanks to the modem that luckily is installed in my labtop. I'd better start working on a column that needs to be published later today.

   What is this?02:13 AM
Blog Ref URL:  http://www.dotnetfordevices.com/forum.html#86


Saturday, May 22, 2004
Tech*Ed, here I come
Today will be a long day. Right now it is 8.30 AM CET and I just packed my suitcase. I am flying a decent airline, but with the cheapest ticket available, and of courseI am paying a price for that. It will not be before midnight PST that I arrive in San Diego. This means that the entire travel time, home to hotel, is going to be over 24 hours, 6 of which I can spend in the NWA Worldclub Lounge in Minneapolist because there is a 6 hour wait between the flight from Amsterdam and the connection flight to San Diego. I wonder if one day, tomorrow, will be enough to overcome jetlag, especially after such a packed day as today. The good news about traveling for such a long time. I can work on a few things I usually have no time for. This time I am going to dig into SQL Server CE. I know the basics after a couple of hours of playing, so now it is time to go beyond basics. All in all this is a good preparation for the demo booth at Tech*Ed, where I can be found a couple of hours each day to talk to attendees and probably do a few demo's as well.

Talking about Tech*Ed. This conference seems to get bigger and bigger each and every year. This year's Tech*Ed is sold out. During some time slots there are 32(!!) parallel sessions. You can imagine this is a real challenge to pick the coolest presentation, since often there are 2 or 3 (or 10) that really look interesting.

If there is time enough over the upcoming week I will make sure to blog regulary from Tech*Ed and I also make sure to publish some background articles. All of course here on DotNETForDevices so stay tuned.


   What is this?08:34 AM
Blog Ref URL:  http://www.dotnetfordevices.com/forum.html#85


Thursday, May 20, 2004
Not lost yet, it must be my VS.NET / emulator environment
Earlier this week I wrote about P/Invoking into a simple DLL, continuously getting MissingMethod exceptions. Well, it must have to do with the emulator or with my Visual Studio.NET 2003 installation. I know it worked before, but I have had a few other problems with the development environment. It turns out when I run the same application on a device (even with a Mobile 2003 SE beta installed) the application runs fine and P/Invokes nicely to the DLL. Oh, yes, I made sure that the target processor for the emulator was correct. I guess it is time to repair Visual Studio.NET 2003.

   What is this?10:55 AM
Blog Ref URL:  http://www.dotnetfordevices.com/forum.html#84


Wednesday, May 19, 2004
Hosting a webcast
Things are moving rapidly right now. Not only is this the year of speaking on large US Microsoft developer conferences, but it looks like we are going to host a webcast somewhere in july as well. The subject will be the real-time behavior of the .NET Compact Framework. The content will be based on this article. This article took us a long time to write, especially investigation time, but it has been very good to us. As soon as I know more details I'll make sure to post them here.

   What is this?10:58 AM
Blog Ref URL:  http://www.dotnetfordevices.com/forum.html#83


Tuesday, May 18, 2004
Am I losing it?

Today I ran into the weirdest problem, the bad thing is I can't remember having had this same problem before. I just needed to test some P/Invokes to native functions. To begin with I created a very simple DLL, something like this:

#include "stdafx.h"
#include "SimpleDLL.h"

BOOL APIENTRY DllMain( HANDLE hModule,
                       DWORD  ul_reason_for_call,
                       LPVOID lpReserved )
{
    switch (ul_reason_for_call) {
        case DLL_PROCESS_ATTACH:
        case DLL_THREAD_ATTACH:
        case DLL_THREAD_DETACH:
        case DLL_PROCESS_DETACH:
            break;
    }
    return TRUE;
}

SIMPLEDLL_API void ShowMessageBox(void)
{
    MessageBox(NULL, _T("Native messagebox"), NULL, MB_OK);
}

The header file is trivial as well:

#ifdef SIMPLEDLL_EXPORTS
#define SIMPLEDLL_API __declspec(dllexport)
#else
#define SIMPLEDLL_API __declspec(dllimport)
#endif

extern "C" SIMPLEDLL_API void ShowMessageBox(void);

Finally dumpbin shows the ShowMessageBox function to be exported properly without name mangling. So far so good. Until I try to P/Invoke from a managed application. Oh, all was running inside the Windows CE emulator during testing. With this managed code I get a missing method exception.

using System;
using System.Drawing;
using System.Collections;
using System.Windows.Forms;
using System.Data;
using System.Runtime.InteropServices;

namespace UseSimpleDLL
{
   
public class Form1 : System.Windows.Forms.Form
   
{
       
private System.Windows.Forms.Button button1;
       
        [DllImport("SimpleDLL.dll")]
       
private static extern void ShowMessageBox();

        public Form1()
       
{
           
InitializeComponent();
       
}

       
protected override void Dispose( bool disposing )
       
{
           
base.Dispose( disposing );
       
}

       
private void InitializeComponent()
        {
           
this.button1 = new System.Windows.Forms.Button();
           
this.button1.Location = new System.Drawing.Point(16, 24);
           
this.button1.Size = new System.Drawing.Size(184, 32);
           
this.button1.Text = "Show native MessageBox";
           
this.button1.Click +=
                new System.EventHandler(this
.button1_Click);

           
this.ClientSize = new System.Drawing.Size(442, 248);
           
this.Controls.Add(this.button1);
           
this.Text = "Form1";
       
}

       
static void Main()
       
{
           
Application.Run(new Form1());
       
}

       
private void button1_Click(object sender, System.EventArgs e)
       
{
           
ShowMessageBox();
       
}
   
}
}

Using LoadLibrary, it turns out that the DLL can not be loaded. I don't have a clue what's going on right now. I guess I will try a real device tomorrow to test the same DLL. Hopefully I can figure something out, because actually I didn't need a simple P/Invoke, but this was just the prelude to a rather complex P/Invoke and I don't have any progress so far. To be continued....



   What is this?23:33 PM
Blog Ref URL:  http://www.dotnetfordevices.com/forum.html#82


OpenNETCF.org Smart Device Framework version 1.1 is here
This is already sort of old news, since v1.1 of OpenNETCF.org's Smart Device Framework is downloadable since yesterday. You really should check out this new version of the already famous Smart Device Framework, because we've added some pretty cool stuff.

   What is this?22:46 PM
Blog Ref URL:  http://www.dotnetfordevices.com/forum.html#81


Tuesday, May 18, 2004
Am I losing it?

Today I ran into the weirdest problem, the bad thing is I can't remember having had this same problem before. I just needed to test some P/Invokes to native functions. To begin with I created a very simple DLL, something like this:

#include "stdafx.h"
#include "SimpleDLL.h"

BOOL APIENTRY DllMain( HANDLE hModule,
                       DWORD  ul_reason_for_call,
                       LPVOID lpReserved )
{
    switch (ul_reason_for_call) {
        case DLL_PROCESS_ATTACH:
        case DLL_THREAD_ATTACH:
        case DLL_THREAD_DETACH:
        case DLL_PROCESS_DETACH:
            break;
    }
    return TRUE;
}

SIMPLEDLL_API void ShowMessageBox(void)
{
    MessageBox(NULL, _T("Native messagebox"), NULL, MB_OK);
}

The header file is trivial as well:

#ifdef SIMPLEDLL_EXPORTS
#define SIMPLEDLL_API __declspec(dllexport)
#else
#define SIMPLEDLL_API __declspec(dllimport)
#endif

extern "C" SIMPLEDLL_API void ShowMessageBox(void);

Finally dumpbin shows the ShowMessageBox function to be exported properly without name mangling. So far so good. Until I try to P/Invoke from a managed application. Oh, all was running inside the Windows CE emulator during testing. With this managed code I get a missing method exception.

using System;
using System.Drawing;
using System.Collections;
using System.Windows.Forms;
using System.Data;
using System.Runtime.InteropServices;

namespace UseSimpleDLL
{
   
public class Form1 : System.Windows.Forms.Form
   
{
       
private System.Windows.Forms.Button button1;
       
        [DllImport("SimpleDLL.dll")]
       
private static extern void ShowMessageBox();

        public Form1()
       
{
           
InitializeComponent();
       
}

       
protected override void Dispose( bool disposing )
       
{
           
base.Dispose( disposing );
       
}

       
private void InitializeComponent()
        {
           
this.button1 = new System.Windows.Forms.Button();
           
this.button1.Location = new System.Drawing.Point(16, 24);
           
this.button1.Size = new System.Drawing.Size(184, 32);
           
this.button1.Text = "Show native MessageBox";
           
this.button1.Click +=
                new System.EventHandler(this
.button1_Click);

           
this.ClientSize = new System.Drawing.Size(442, 248);
           
this.Controls.Add(this.button1);
           
this.Text = "Form1";
       
}

       
static void Main()
       
{
           
Application.Run(new Form1());
       
}

       
private void button1_Click(object sender, System.EventArgs e)
       
{
           
ShowMessageBox();
       
}
   
}
}

Using LoadLibrary, it turns out that the DLL can not be loaded. I don't have a clue what's going on right now. I guess I will try a real device tomorrow to test the same DLL. Hopefully I can figure something out, because actually I didn't need a simple P/Invoke, but this was just the prelude to a rather complex P/Invoke and I don't have any progress so far. To be continued....



   What is this?23:33 PM
Blog Ref URL:  http://www.dotnetfordevices.com/forum.html#82


OpenNETCF.org Smart Device Framework version 1.1 is here
This is already sort of old news, since v1.1 of OpenNETCF.org's Smart Device Framework is downloadable since yesterday. You really should check out this new version of the already famous Smart Device Framework, because we've added some pretty cool stuff.

   What is this?22:46 PM
Blog Ref URL:  http://www.dotnetfordevices.com/forum.html#81


Sunday, May 16, 2004
Another challenge coming up - Speaking at the Embedded DevCon 2004

Today I received an email from Michelle that it is really going to happen. After some initial problems submitting the abstracts and getting the news back from Microsoft that the abstracts have been accepted it now is a done deal. Not only one, but a whole whopping TWO presentations during the Embedded DevCon 2004 in San Diego. The first one will partly be a repeat session from MDC 2004. For it I am teaming up again with Alex Feinman and really looking forward to it. The title of the presentation remains the same but the content will be updated to contain information on the latest release of the OpenNETCF.org Smart Device Framework. Version 1.1 is not yet available, but hopefully it will be ready for download somewhere this week and we definitely are going to talk about it. The official title of the presentation is:

Developing real-world smart device applications with Visual Studio.NET 2003, .NET CF and OpenNETCF’s Smart Device Framework.

The second presentation is going to be fun as well. For that presentation I will be teaming up with Michel Verhagen. We are going to talk about real-time capabilities of the .NET Compact Framework, and of course not only talking about it, but showing the audience a demo on a single board computer and lots of code. We are probably going to use Windows CE 5.0 as an operating system and most like the .NET CF v1, although ... Maybe I should get in touch with Microsoft to see if v2 is ready for a tough demonstration like this one. It sounds appealing. Just in case you can make it to San Diego, the title of this presentation is:

Microsoft’s .NET Compact Framework in real-time solutions.

I can already promise that you can learn a lot during both presentations, but that they will definitely be fun to attend as well. Not only because of the funny accents of the three speakers, but also because my two co-speakers are not only smart but also funny guys. I'll keep you up to date of the progress we are making with the presentations.



   What is this?17:16 PM
Blog Ref URL:  http://www.dotnetfordevices.com/forum.html#80


Saturday, May 8, 2004
OpenNETCF.org reachable again
It looks like the problems with the domain registrar are solved. OpenNETCF.org is back on the web so you can ask questions in our forums, browse our samples and download the Smart Device Framework again.

   What is this?08:13 AM
Blog Ref URL:  http://www.dotnetfordevices.com/forum.html#79


Managed thread priority
Here is a thought. Managed applications can P/Invoke back into native code. One of the API's you can P/Invoke to is CESetThreadPriority with which you can basically set all 256 Windows CE priorities, including 0 (meaning real-time priority). A thread with priority 0 runs until completion and will not be preempted by other threads. Does that mean that I can get a managed thread running on priority 0? If so, what would that mean for JITter and GC? This is definitely something to at least try out. Yes, it would be against good coding practises, but does this mean that I could, let's say, create a managed IST? This will be continued after I played a little bit around with it.

   What is this?04:33 AM
Blog Ref URL:  http://www.dotnetfordevices.com/forum.html#78


Thai restaurant in Seattle
This is probably mainly for my own interest, but I just found another cool Thai restaurant. This time in Seattle. When you are in Seattle, make sure to check out Jai Thai Belltown at 2132 1st Avenue. Not only great food, but reasonably priced and a nice atmosphere. If I only would have had a Burger King for breakfast on walking distance from the Hilton this stay for WinHEC 2004 would have been perfect. Luckily SeaTac has one, so before flying back I can at least eat one decent breakfast (well, it is my favourite after all, a number 1 with no cheese and medium hash browns).

   What is this?04:29 AM
Blog Ref URL:  http://www.dotnetfordevices.com/forum.html#77


Saturday, May 8, 2004
OpenNETCF.org reachable again
It looks like the problems with the domain registrar are solved. OpenNETCF.org is back on the web so you can ask questions in our forums, browse our samples and download the Smart Device Framework again.

   What is this?08:13 AM
Blog Ref URL:  http://www.dotnetfordevices.com/forum.html#79


Managed thread priority
Here is a thought. Managed applications can P/Invoke back into native code. One of the API's you can P/Invoke to is CESetThreadPriority with which you can basically set all 256 Windows CE priorities, including 0 (meaning real-time priority). A thread with priority 0 runs until completion and will not be preempted by other threads. Does that mean that I can get a managed thread running on priority 0? If so, what would that mean for JITter and GC? This is definitely something to at least try out. Yes, it would be against good coding practises, but does this mean that I could, let's say, create a managed IST? This will be continued after I played a little bit around with it.

   What is this?04:33 AM
Blog Ref URL:  http://www.dotnetfordevices.com/forum.html#78


Thai restaurant in Seattle
This is probably mainly for my own interest, but I just found another cool Thai restaurant. This time in Seattle. When you are in Seattle, make sure to check out Jai Thai Belltown at 2132 1st Avenue. Not only great food, but reasonably priced and a nice atmosphere. If I only would have had a Burger King for breakfast on walking distance from the Hilton this stay for WinHEC 2004 would have been perfect. Luckily SeaTac has one, so before flying back I can at least eat one decent breakfast (well, it is my favourite after all, a number 1 with no cheese and medium hash browns).

   What is this?04:29 AM
Blog Ref URL:  http://www.dotnetfordevices.com/forum.html#77


Saturday, May 8, 2004
OpenNETCF.org reachable again
It looks like the problems with the domain registrar are solved. OpenNETCF.org is back on the web so you can ask questions in our forums, browse our samples and download the Smart Device Framework again.

   What is this?08:13 AM
Blog Ref URL:  http://www.dotnetfordevices.com/forum.html#79


Managed thread priority
Here is a thought. Managed applications can P/Invoke back into native code. One of the API's you can P/Invoke to is CESetThreadPriority with which you can basically set all 256 Windows CE priorities, including 0 (meaning real-time priority). A thread with priority 0 runs until completion and will not be preempted by other threads. Does that mean that I can get a managed thread running on priority 0? If so, what would that mean for JITter and GC? This is definitely something to at least try out. Yes, it would be against good coding practises, but does this mean that I could, let's say, create a managed IST? This will be continued after I played a little bit around with it.

   What is this?04:33 AM
Blog Ref URL:  http://www.dotnetfordevices.com/forum.html#78


Thai restaurant in Seattle
This is probably mainly for my own interest, but I just found another cool Thai restaurant. This time in Seattle. When you are in Seattle, make sure to check out Jai Thai Belltown at 2132 1st Avenue. Not only great food, but reasonably priced and a nice atmosphere. If I only would have had a Burger King for breakfast on walking distance from the Hilton this stay for WinHEC 2004 would have been perfect. Luckily SeaTac has one, so before flying back I can at least eat one decent breakfast (well, it is my favourite after all, a number 1 with no cheese and medium hash browns).

   What is this?04:29 AM
Blog Ref URL:  http://www.dotnetfordevices.com/forum.html#77


Friday, May 7, 2004
Where did opennetcf.org go?
People are actually missing us, since the site has not been reacheable for a couple of days now. No, really, it was no trick from our side to find out if we are popular. As a matter of facts it is causing us lots of trouble and some of us lots of sorting out. It probably will delay the release of v1.1 of the Smart Device Framework as well, but hopefully not too much.

Here is a quote from Neil that exactly describes what is going on:

There's a problem with the domain registrar which we are using. We're working as fast as we can with several parties to get back online ASAP.

We feel your pain. Trust me, it hurts.

For people who need to download the Smart Device Framework, Peter Foot has been so kind to make it available here. Once you are there make sure to visit InTheHand as well for some really cool products for PocketPC's.

Hopefully the inconvenience of having to miss OpenNETCF.org online will not last must longer. Not only for downloads and forums, but you also miss all the good things that are published in the OpenNETCF blogs.


   What is this?03:37 AM
Blog Ref URL:  http://www.dotnetfordevices.com/forum.html#76


The official name for Windows XP SP2 is known
Where are the days when Microsoft was creative with names of new products? I still love these names: Windows Mobile 2003 Second Edition software for PocketPC and Windows Mobile 2003 Second Edition software for Smartphones. The storage space of these names is actually larger than the size of the entire software products (yes, Windows CE is all Unicode), but there must have been a creative genious coming up with these names. Well, it is all different for Windows XP. Today during WinHEC I heard that the official name for Windows XP Service Pack 2 will actually be: Windows XP Service Pack 2. Why not something like: Windows XP software for current Windows XP machines that makes them actually much more secure and reliable without adding too much new functionality. If this doesn't get me a job at Microsoft's marketing department I don't know what will.

   What is this?00:02 AM
Blog Ref URL:  http://www.dotnetfordevices.com/forum.html#75


Friday, May 7, 2004
Where did opennetcf.org go?
People are actually missing us, since the site has not been reacheable for a couple of days now. No, really, it was no trick from our side to find out if we are popular. As a matter of facts it is causing us lots of trouble and some of us lots of sorting out. It probably will delay the release of v1.1 of the Smart Device Framework as well, but hopefully not too much.

Here is a quote from Neil that exactly describes what is going on:

There's a problem with the domain registrar which we are using. We're working as fast as we can with several parties to get back online ASAP.

We feel your pain. Trust me, it hurts.

For people who need to download the Smart Device Framework, Peter Foot has been so kind to make it available here. Once you are there make sure to visit InTheHand as well for some really cool products for PocketPC's.

Hopefully the inconvenience of having to miss OpenNETCF.org online will not last must longer. Not only for downloads and forums, but you also miss all the good things that are published in the OpenNETCF blogs.


   What is this?03:37 AM
Blog Ref URL:  http://www.dotnetfordevices.com/forum.html#76


The official name for Windows XP SP2 is known
Where are the days when Microsoft was creative with names of new products? I still love these names: Windows Mobile 2003 Second Edition software for PocketPC and Windows Mobile 2003 Second Edition software for Smartphones. The storage space of these names is actually larger than the size of the entire software products (yes, Windows CE is all Unicode), but there must have been a creative genious coming up with these names. Well, it is all different for Windows XP. Today during WinHEC I heard that the official name for Windows XP Service Pack 2 will actually be: Windows XP Service Pack 2. Why not something like: Windows XP software for current Windows XP machines that makes them actually much more secure and reliable without adding too much new functionality. If this doesn't get me a job at Microsoft's marketing department I don't know what will.

   What is this?00:02 AM
Blog Ref URL:  http://www.dotnetfordevices.com/forum.html#75


Thursday, May 6, 2004
PocketPC's in space
Now here is something I have to share with the world. I already trust my PocketPC to the extreme, but it is also going where not many have gone before so far. Take a look at this:

PALO ALTO, Calif. - May 6, 2004 HP today announced that HP iPAQ Pocket PCs are being used in space by the Expedition 9 astronaut and cosmonaut crew aboard the International Space Station Soyuz 8 space craft. The iPAQ h5550 and accompanying accessories were launched on April 19, exactly four years after the introduction of the first iPAQ Pocket PC.

The iPAQs will be used as mobile productivity tools to record daily crew procedures, write personal memos and check e-mail and calendars. The space crew will also be able to listen to music, view photos from home and read e-books, allowing them to have some of the comforts of home on their journey. The devices will remain aboard the space station and be reconfigured for each new crew. For the next flight, two additional iPAQs are expected to launch to the station for a total of four iPAQs.

I wonder if they were able to synchronize the devices with ActiveSync, something that is often hard, even here on the Earth.



   What is this?21:55 PM
Blog Ref URL:  http://www.dotnetfordevices.com/forum.html#74


Wednesday, May 5, 2004
Where are all those Longhorn talks?
This was something of a surprise, attending this years' WinHEC. I would have expected tons and tons of presentations focussing completely on Longhorn, but that is not the case. Sure, there are a couple of Longhorn talks, but there is much more going on. Surprisingly enough there are quite a few talks on Windows CE. It just looks like WinHEC is moving from a PC hardware only conference to a hardware conference that also covers all kinds of devices. Right now I am sitting in an interesting talk about Web Services for devices, see today's WinHEC update for more info on that. Back to the sort of lack of Longhorn presentations then. Could it be that Steven Vaughan-Nichols has a point. You should take a look and judge for yourself.


   What is this?19:26 PM
Blog Ref URL:  http://www.dotnetfordevices.com/forum.html#73


Thursday, April 29, 2004
Receiving SMS messages in a managed application
Thanks to a sample in the PocketPC 2003 and SmartPhone 2003 SDK's that shows the usage of IMailRuleClient it was possible to receive SMS messages inside a managed application without them appearing in the Inbox or without them showing a bubble notification. I will publish the details of how to do this soon in an article, not sure where it is going to be published yet, but of course I will let you know.

   What is this?23:55 PM
Blog Ref URL:  http://www.dotnetfordevices.com/forum.html#72


Tuesday, April 27, 2004
Showing the SIP on other forms than the main form
This is something that comes up every now and then in the newsgroups. When you create a Compact Framework PocketPC application the first form automatically shows the icon for the SIP. However, when you create more forms they don't show the SIP. To make the SIP visible on those forms just add a new (empty) MainMenu to them.

   What is this?09:21 AM
Blog Ref URL:  http://www.dotnetfordevices.com/forum.html#71


Friday, April 23, 2004
Do you want to use the same C++ Compiler Don Box is using?
You better take a look here immediately. Of course I disagree with Don about adding Emacs since my own favourite editor was, is and remains to be Notepad.

   What is this?00:14 AM
Blog Ref URL:  http://www.dotnetfordevices.com/forum.html#69


Saturday, April 17, 2004
Sending SMS messages without using any device
Yesterday I started looking at IMailRuleClient to intercept SMS messages on a PocketPC Phone Edition or SmartPhone device. Eventually I want to intercept SMS messages and send them to a managed application. A good start to actually get going is installing the mapirule example that can be found in the PocketPC 2003 and SmartPhone 2003 SDK. To build the example, a COM object that implements IMailRuleClient embedded Visual C++ 4.0 is required. The sample actually intercepts SMS messages that contain "xxx". To be able to use this COM object from managed code I decided to try and use a callback mechanism using a MessageWindow, in which the COM object sends a message to the managed application everytime a particular SMS message is received. The work is not entirely done yet, but I can actually install and register the COM object from within a managed application and store the Window handle of the main form in the DLL containing the COM object. Next step was to actually test the functionality of the mapirule COM object. Since my SmartPhone devkit only works in the USA, not here in Europe I can not test on an actual device (testing would get expensive as well, with probably many SMS messages to send to the device). Luckily today I bumbed into a very cool article on MSDN. It is possible to use the PocketPC 2003 Phone Edition and use its virtual radio to receive SMS messages that can actually be send from the desktop of a development machine. In this way I can test the full functionality of my little managed application, making use of IMailRuleClient without the need to actually have a device. Everybody in need of testing all kinds of call events (SMS messages and phone calls) on devices will have advantage of this article and the code sample that comes with it. In my opinion a sure must to take a look at. I am sure that I will come back with a sample (code snippet or another entry in my weblog) on how to use IMailRuleClient from managed code in a pragmatic way.

   What is this?23:14 PM
Blog Ref URL:  http://www.dotnetfordevices.com/forum.html#68


Chris on open source
You should really read what Chris Tacke has to say about open source: http://blog.opennetcf.org/ctacke/PermaLink.aspx/be920c5e-7266-4c34-ba41-c0296a452a98. I wonder if Microsoft is listening. I also wonder what OpenNETCF would be right now when it would not only be our spare time to develop cool stuff. Oh, and sponsering OpenNETCF would not have to be as expensive as buying Sun's friendship.

   What is this?00:25 AM
Blog Ref URL:  http://www.dotnetfordevices.com/forum.html#67


Saturday, April 17, 2004
Sending SMS messages without using any device
Yesterday I started looking at IMailRuleClient to intercept SMS messages on a PocketPC Phone Edition or SmartPhone device. Eventually I want to intercept SMS messages and send them to a managed application. A good start to actually get going is installing the mapirule example that can be found in the PocketPC 2003 and SmartPhone 2003 SDK. To build the example, a COM object that implements IMailRuleClient embedded Visual C++ 4.0 is required. The sample actually intercepts SMS messages that contain "xxx". To be able to use this COM object from managed code I decided to try and use a callback mechanism using a MessageWindow, in which the COM object sends a message to the managed application everytime a particular SMS message is received. The work is not entirely done yet, but I can actually install and register the COM object from within a managed application and store the Window handle of the main form in the DLL containing the COM object. Next step was to actually test the functionality of the mapirule COM object. Since my SmartPhone devkit only works in the USA, not here in Europe I can not test on an actual device (testing would get expensive as well, with probably many SMS messages to send to the device). Luckily today I bumbed into a very cool article on MSDN. It is possible to use the PocketPC 2003 Phone Edition and use its virtual radio to receive SMS messages that can actually be send from the desktop of a development machine. In this way I can test the full functionality of my little managed application, making use of IMailRuleClient without the need to actually have a device. Everybody in need of testing all kinds of call events (SMS messages and phone calls) on devices will have advantage of this article and the code sample that comes with it. In my opinion a sure must to take a look at. I am sure that I will come back with a sample (code snippet or another entry in my weblog) on how to use IMailRuleClient from managed code in a pragmatic way.

   What is this?23:14 PM
Blog Ref URL:  http://www.dotnetfordevices.com/forum.html#68


Chris on open source
You should really read what Chris Tacke has to say about open source: http://blog.opennetcf.org/ctacke/PermaLink.aspx/be920c5e-7266-4c34-ba41-c0296a452a98. I wonder if Microsoft is listening. I also wonder what OpenNETCF would be right now when it would not only be our spare time to develop cool stuff. Oh, and sponsering OpenNETCF would not have to be as expensive as buying Sun's friendship.

   What is this?00:25 AM
Blog Ref URL:  http://www.dotnetfordevices.com/forum.html#67


Saturday, April 10, 2004
Being tired of listening
Probably I can't believe what I said when I look back to this entry a couple of weeks from now, but I am just tired of listening. Right now I am looking back at a packed week in Seattle. This week has been continuously filled with meetings, presentations, more presentations, fancy dinners and finally more presentations. There is only so much I can absorb in one single week and right now it feels almost like more than I can handle. Right now there is one more thing to do. Flying back to Amsterdam. I am not looking forward to that. It will mean getting up (again) at 5.45, going to the airport, flying to Minneapolis, waiting for 5 hours and on to Amsterdam. Finally on Sunday morning at 9 this packed trip is over. It still seems so far away. Actually at that time there is still some work to do. I need to write the next column for DotNETForDevices, the site you are on right now. I also need to resubmit an abstract for the Embedded DevCon that will be held later this year in San Diego. The original abstract was somehow lost after I submitted it. Of course I always stay on my good practise of not making backup copies of those abstracts so I have to write it again. I will just keep my fingers crossed that I will actually get a presentation at the Embedded DevCon after going through so much trouble. After all this work it is time to take off for two days. I am going to try to really take two days off, not even touching a computer. I wonder if that will work. Right now I am just looking forward to sitting on the sofa, listening to some music and catching up on sleep. After two days off it will be time to get back to the usual routine of working. However, three weeks from now I will return to Seattle for WinHEC. At least it will be less packed during that week, so hopefully I have some time to actually do some sight seeing there.

   What is this?06:36 AM
Blog Ref URL:  http://www.dotnetfordevices.com/forum.html#66


Thursday, April 8, 2004
The MVP Summit is already history ...
... but it is easy to summarize: I had a blast. Unfortunately there is not much more I can tell about it, because all the content was under NDA but I feel priviliged that I could be part of this. Something else that was very cool was actually meeting the OpenNETCF gang in person during our first official meeting last Sunday. Again, there is not much to say about that, afterall we don't want to give our cool idea's away. However I can assure you that you will here from us over the upcoming months (just like you did for a year already). Actually, we are becoming quite ambitious. Neil has set the first goal, not an easy one but doable: OpenNETCF being mentioned in a keynote during next year's Summit. Chris immediately went one step further: OpenNETCF should present a keynote two years from now. Since I have this feeling that we can take over the world soon I like to add the following: The MVP Summit will be renamed into the OpenNETCF.org Summit three years from now. Looking at all the people wearing OpenNETCF stickers on their nametags during this Summit this must be possible. We only missed out on one occasion. We should have handed Steve B an OpenNETCF sticker. Right now it is too late for that, but you will hear from us, no doubt about that!

   What is this?08:33 AM
Blog Ref URL:  http://www.dotnetfordevices.com/forum.html#65


Wednesday, April 7, 2004
Taking blogging to a whole new dimension
You should check Channel 9. Right now in Seattle (where I am for the week) it requires more bandwith than I have, but this is potentially a great community builder. Make sure to visit Channel 9, think about how cool it is and participate!

   What is this?08:29 AM
Blog Ref URL:  http://www.dotnetfordevices.com/forum.html#64


The .NET CF has its own homepage now.
Check it out at http://msdn.microsoft.com/mobility/prodtechinfo/devtools/netcf/default.aspx. Make sure to bookmark this page because it is a must for every CF developer. This page is your one stop shop for articles, case studies, downloads and the wonderful FAQ that should give everybody a head start.

   What is this?07:59 AM
Blog Ref URL:  http://www.dotnetfordevices.com/forum.html#63


Wednesday, April 7, 2004
Taking blogging to a whole new dimension
You should check Channel 9. Right now in Seattle (where I am for the week) it requires more bandwith than I have, but this is potentially a great community builder. Make sure to visit Channel 9, think about how cool it is and participate!

   What is this?08:29 AM
Blog Ref URL:  http://www.dotnetfordevices.com/forum.html#64


The .NET CF has its own homepage now.
Check it out at http://msdn.microsoft.com/mobility/prodtechinfo/devtools/netcf/default.aspx. Make sure to bookmark this page because it is a must for every CF developer. This page is your one stop shop for articles, case studies, downloads and the wonderful FAQ that should give everybody a head start.

   What is this?07:59 AM
Blog Ref URL:  http://www.dotnetfordevices.com/forum.html#63


Sunday, April 4, 2004
Back in the States, this time in Seattle
Because this is the location where the 2004 MVP Summit is held. After a long day of travelling I just checked in in the W Hotel, Seattle. It looks like we are getting a real treat, this hotel is nice! Hopefully it will not be too hard to deal with jetlag (I hope I am still used to Pacific time actually). The fun part of flying back to Holland in between is dealing with two different weekends in which Daylight Saving Time begins. Last week DST started in Europe, this weekend in the USA. So now I am still dealing with a time difference of 10 hours, tomorrow it will "only" be 9 hours. I have a completely filled week ahead of me, probably lots of topics will be under NDA, so don't be surprised if there will be not too much activity in my blog.

   What is this?07:42 AM
Blog Ref URL:  http://www.dotnetfordevices.com/forum.html#62


Thursday, April 1, 2004
It seems it was true
Luckily I've got some pictures from last week's MDC. The memories are sweet, now even sweeter.





   What is this?10:56 AM
Blog Ref URL:  http://www.dotnetfordevices.com/forum.html#61


Saturday, March 27, 2004
MDC is over ...
... but we had a whole lot of fun. Thank you Alex for teaming up with me! The OpenNETCF presentation was definitely a succes, listening to reactions and looking at the evaluations. Just before we were on there was a little crisis to overcome, that really helped my nerves. I have used my laptop without problems during the whole week and of course three minutes before the presentation the machine froze. I had to power down the hard way and after restarting (we were now 1 minute before the talk) the machine seemed to be up and running again. However, the demonstration Gods were not with me, because when I was about to show my first demonstration, it turned out that all OpenNETCF controls had disappeared from the Visual Studio.NET toolbox. Luckily Alex had his system up and running and hooked up to the beamer as well, so we could quickly change machines and I could actually do my demonstration. This was a valuable lesson. Never go on stage with only one laptop! The rest of the presentation actually went fine, I could even say "Windows Mobile 2003 Second Edition" without stuttering, which gave me cheers from the audience when I started complaining about ridiculous product names. The second part of the demonstration ran fine from my machine, so I could show some cool stuff runing on a PocketPC emulator, powered by "Windows Mobile 2003 Second Edition" in landscape mode. Yes, OpenNETCF.org is ready for "Windows Mobile 2003 Second Edition" devices as this screenshot shows.

Cool UI possibilities with the Smart Device Framework


Take a look at our ListBoxEx control Different foreground colors, different fonts, different font sizes, italics, underlining and that is only a portion of the things possible with this cool control. Also take a look at our ButtonEx. Different colors for borders, background, forground and much more to offer. And take a look at the possibilities of our ApplicationEx class. Intercepting messages before they arrive in the form. The demonstration Alex prepared ran absolutely wonderful. Intermec was so nice to provide us with a cool device on which Alex had created a real-world application. A library system. We could do our little gig with me coming in to lend a book and Alex playing the librarian. That guy is really good. He made use of OpenNETCF.org’s ApplicationEx message filtering capabilities to create a User Interface for those cases where people would have lost their stylus, something that happens to all of us all the time. In my opinion he has created a killer application: At least to kill the stylus manufacturers. Luckily this joke was appealing to the audience. It so much helps when people are actually laughing about your jokes. After a look in some of Alex’ cool code and some more general information on OpenNETCF.org the time was already over. At the end there were some good questions from the audience and we got some great feedback. This is what I have been waiting for the last 6 or so years. Unfortunately this presentation is history already. Hopefully enough Microsoft people were in the room and hopefully they give me another change to speak at one of their conferences. This is so cool. I want to do this more frequent!!!! Guys, are you listening (or better reading this). I really hope to be in this same situation again soon. Be it at MDC Europe, or better at MDC’s world wide or be it at the upcoming Embedded DevCon. I don’t really care. I just want to speak. Better still. I need to speak!! This stuff is addictive!!! I really want to finish by saying thanks to everybody who made this possible. Thank you Microsoft for allowing us to speak at MDC. Thank you Ronald van der Putten (Intermec) for trusting us with one of your cool devices. Thank you OpenNETCF.org for giving us the possibility to speak about a super cool topic. And last but not least, thank you to my new friend Alex Feinman for making this a wonderful presentation.


   What is this?06:22 AM
Blog Ref URL:  http://www.dotnetfordevices.com/forum.html#59


Windows Mobile 2003 Second Edition
This week at MDC I bought a brand new HP 4150 PocketPC. A pretty cool device with both BlueTooth and 802.11 integrated. The WiFi part of it even works! At MDC HP offered to flash the device with the brand new Windows Mobile 2003 Second Edition software. It took a lot of hesitation and some guts to actually upgrade my brand new device, after all, Windows Mobile 2003 Second Edition is still in beta. Finally I made the decision to upgrade the device. To do so I had to sign a paper that I would lose warranty and making clear this is beta software. Talking about being scared. Anyway, I signed those papers, had my device flashed and it is SUPERCOOL. Changing from landscape to portrait mode is very useful. It took some guts but I am glad I decided to go for this.

   What is this?05:12 AM
Blog Ref URL:  http://www.dotnetfordevices.com/forum.html#60


Saturday, March 27, 2004
MDC is over ...
... but we had a whole lot of fun. Thank you Alex for teaming up with me! The OpenNETCF presentation was definitely a succes, listening to reactions and looking at the evaluations. Just before we were on there was a little crisis to overcome, that really helped my nerves. I have used my laptop without problems during the whole week and of course three minutes before the presentation the machine froze. I had to power down the hard way and after restarting (we were now 1 minute before the talk) the machine seemed to be up and running again. However, the demonstration Gods were not with me, because when I was about to show my first demonstration, it turned out that all OpenNETCF controls had disappeared from the Visual Studio.NET toolbox. Luckily Alex had his system up and running and hooked up to the beamer as well, so we could quickly change machines and I could actually do my demonstration. This was a valuable lesson. Never go on stage with only one laptop! The rest of the presentation actually went fine, I could even say "Windows Mobile 2003 Second Edition" without stuttering, which gave me cheers from the audience when I started complaining about ridiculous product names. The second part of the demonstration ran fine from my machine, so I could show some cool stuff runing on a PocketPC emulator, powered by "Windows Mobile 2003 Second Edition" in landscape mode. Yes, OpenNETCF.org is ready for "Windows Mobile 2003 Second Edition" devices as this screenshot shows.

Cool UI possibilities with the Smart Device Framework


Take a look at our ListBoxEx control Different foreground colors, different fonts, different font sizes, italics, underlining and that is only a portion of the things possible with this cool control. Also take a look at our ButtonEx. Different colors for borders, background, forground and much more to offer. And take a look at the possibilities of our ApplicationEx class. Intercepting messages before they arrive in the form. The demonstration Alex prepared ran absolutely wonderful. Intermec was so nice to provide us with a cool device on which Alex had created a real-world application. A library system. We could do our little gig with me coming in to lend a book and Alex playing the librarian. That guy is really good. He made use of OpenNETCF.org’s ApplicationEx message filtering capabilities to create a User Interface for those cases where people would have lost their stylus, something that happens to all of us all the time. In my opinion he has created a killer application: At least to kill the stylus manufacturers. Luckily this joke was appealing to the audience. It so much helps when people are actually laughing about your jokes. After a look in some of Alex’ cool code and some more general information on OpenNETCF.org the time was already over. At the end there were some good questions from the audience and we got some great feedback. This is what I have been waiting for the last 6 or so years. Unfortunately this presentation is history already. Hopefully enough Microsoft people were in the room and hopefully they give me another change to speak at one of their conferences. This is so cool. I want to do this more frequent!!!! Guys, are you listening (or better reading this). I really hope to be in this same situation again soon. Be it at MDC Europe, or better at MDC’s world wide or be it at the upcoming Embedded DevCon. I don’t really care. I just want to speak. Better still. I need to speak!! This stuff is addictive!!! I really want to finish by saying thanks to everybody who made this possible. Thank you Microsoft for allowing us to speak at MDC. Thank you Ronald van der Putten (Intermec) for trusting us with one of your cool devices. Thank you OpenNETCF.org for giving us the possibility to speak about a super cool topic. And last but not least, thank you to my new friend Alex Feinman for making this a wonderful presentation.


   What is this?06:22 AM
Blog Ref URL:  http://www.dotnetfordevices.com/forum.html#59


Windows Mobile 2003 Second Edition
This week at MDC I bought a brand new HP 4150 PocketPC. A pretty cool device with both BlueTooth and 802.11 integrated. The WiFi part of it even works! At MDC HP offered to flash the device with the brand new Windows Mobile 2003 Second Edition software. It took a lot of hesitation and some guts to actually upgrade my brand new device, after all, Windows Mobile 2003 Second Edition is still in beta. Finally I made the decision to upgrade the device. To do so I had to sign a paper that I would lose warranty and making clear this is beta software. Talking about being scared. Anyway, I signed those papers, had my device flashed and it is SUPERCOOL. Changing from landscape to portrait mode is very useful. It took some guts but I am glad I decided to go for this.

   What is this?05:12 AM
Blog Ref URL:  http://www.dotnetfordevices.com/forum.html#60


Thursday, March 25, 2004
Waiting way too long
MDC is only at its first day, but it is mainly waiting until Friday for me. I truly believe we are ready for the OpenNETCF presentation. Many people already told us they want to come to our presentation, thinking about that is nerve breaking, although I am not too nervous (yet). If only the first few sentences work, just like a month ago in Nuremberg, Germany we should be allright. Preparations for me have been better then ever before. Well, just two more days, less then 48 hours. Tomorrow we will try to schedule a final rehearsal. There is simply too much content to cover and too little time. The duration of presentations is only one hour, probably way too short. If we only can beat Douglas Boling and Ori Amiga. Well, of course that is wishfull thinking, after all, if so we would be the best speakers around at MDC. And both Alex and I don't have English as our first language. However, it will work being a team. We already found a mutual interest. Getting tripple shots of espresso at Starbucks. Well heck, just one and a half days more hanging around in the speaker lounge (I'd better take advantage of this privilege) and we are on. Most important thing is to have fun though. I hope I remember that when I am actually on stage. After all, when will there be a next chance to speak at one of these conferences. I am writing the last line with the knowledge that another abstract, for WinHEC 2004 has just been turned down. So now it is a matter of going for it and making the WinHEC organizers realize they made a mistake. Or did they?

   What is this?09:07 AM
Blog Ref URL:  http://www.dotnetfordevices.com/forum.html#58


OpenNETCF.org press release on Microsoft's website
Yes, we made it to the PressPass area of Microsoft's website. It gives me a great feeling that our press release is actually available there. Thanks to everybody who contributed to make this a great press release.

   What is this?07:37 AM
Blog Ref URL:  http://www.dotnetfordevices.com/forum.html#57


Thursday, March 25, 2004
Waiting way too long
MDC is only at its first day, but it is mainly waiting until Friday for me. I truly believe we are ready for the OpenNETCF presentation. Many people already told us they want to come to our presentation, thinking about that is nerve breaking, although I am not too nervous (yet). If only the first few sentences work, just like a month ago in Nuremberg, Germany we should be allright. Preparations for me have been better then ever before. Well, just two more days, less then 48 hours. Tomorrow we will try to schedule a final rehearsal. There is simply too much content to cover and too little time. The duration of presentations is only one hour, probably way too short. If we only can beat Douglas Boling and Ori Amiga. Well, of course that is wishfull thinking, after all, if so we would be the best speakers around at MDC. And both Alex and I don't have English as our first language. However, it will work being a team. We already found a mutual interest. Getting tripple shots of espresso at Starbucks. Well heck, just one and a half days more hanging around in the speaker lounge (I'd better take advantage of this privilege) and we are on. Most important thing is to have fun though. I hope I remember that when I am actually on stage. After all, when will there be a next chance to speak at one of these conferences. I am writing the last line with the knowledge that another abstract, for WinHEC 2004 has just been turned down. So now it is a matter of going for it and making the WinHEC organizers realize they made a mistake. Or did they?

   What is this?09:07 AM
Blog Ref URL:  http://www.dotnetfordevices.com/forum.html#58


OpenNETCF.org press release on Microsoft's website
Yes, we made it to the PressPass area of Microsoft's website. It gives me a great feeling that our press release is actually available there. Thanks to everybody who contributed to make this a great press release.

   What is this?07:37 AM
Blog Ref URL:  http://www.dotnetfordevices.com/forum.html#57


Tuesday, March 23, 2004
Build failed with 0 errors, 0 warnings
Today the weirdest thing happened. Actually, I have read something similar a few days ago on the Compact Framework newsgroup. A simple VS.NET project was building fine when I decided to add log file functionality, using File.AppendText in combination with a StreamWriter. To be able to use the File and StreamWriter classes also a reference to System.IO needed to be added to the project. After compilation, visual studio told me it had errors, to be precise: 0 errors and 0 warnings but I still got an error message. The application deployed fine to the device and seemed to work. Of course this is something suspect and I would not want to ship an application that build in this way. After creating an exactly similar project I didn't have this problem. A little investigation showed that the references part of the csdproj file was messed up in the original file. The bad part is that I could not reproduce this problem, so I still don't know what caused it. However, to get the project working again I created a new, empty project and added all existing files to it and compilation worked fine again. A partly unsatisfactory solution, but at least I was capable to continue working.

   What is this?17:16 PM
Blog Ref URL:  http://www.dotnetfordevices.com/forum.html#56


MySpy application gets into shape
The application I talked about earlier to do as a demonstration during MDC is getting into shape. While practicing today I managed to limited it to a little over 5 minutes, starting a project from scratch, ending with a PocketPC application that shows all messages that are posted to itself in a ListBox. It even filters out Paint, ListBox and Mouse messages if you are not interested in seeing those. Hopefully everybody seeing the demo can appreciate the power of the Smart Device Framework in combination with the .NET Compact Framework. Also once again I am thankful for the fact that Visual Studio.NET can store code snippets in the toolbox. Without that wonderful feature for presenters I would not be able to do a full blown demo in about 5 minutes, giving my typing speed and the amount of errors I am making while typing. Right now I am waiting for action. Luckily things are starting tomorrow with a briefing on the labs that Mike Fossmire so nicely signed me up for. That really means working, starting on Wednesday. But who am I to complain? I found a great Thai restaurant on walking distance from my hotel, so when I am not working or scanning newsgroups I probably can be reached there. The place is called Cha Am Thai Restaurant on 701 Folsom Street. A great lunch for only $7.87. There is hardly anything else to desire.

   What is this?01:47 AM
Blog Ref URL:  http://www.dotnetfordevices.com/forum.html#55


Tuesday, March 23, 2004
Build failed with 0 errors, 0 warnings
Today the weirdest thing happened. Actually, I have read something similar a few days ago on the Compact Framework newsgroup. A simple VS.NET project was building fine when I decided to add log file functionality, using File.AppendText in combination with a StreamWriter. To be able to use the File and StreamWriter classes also a reference to System.IO needed to be added to the project. After compilation, visual studio told me it had errors, to be precise: 0 errors and 0 warnings but I still got an error message. The application deployed fine to the device and seemed to work. Of course this is something suspect and I would not want to ship an application that build in this way. After creating an exactly similar project I didn't have this problem. A little investigation showed that the references part of the csdproj file was messed up in the original file. The bad part is that I could not reproduce this problem, so I still don't know what caused it. However, to get the project working again I created a new, empty project and added all existing files to it and compilation worked fine again. A partly unsatisfactory solution, but at least I was capable to continue working.

   What is this?17:16 PM
Blog Ref URL:  http://www.dotnetfordevices.com/forum.html#56


MySpy application gets into shape
The application I talked about earlier to do as a demonstration during MDC is getting into shape. While practicing today I managed to limited it to a little over 5 minutes, starting a project from scratch, ending with a PocketPC application that shows all messages that are posted to itself in a ListBox. It even filters out Paint, ListBox and Mouse messages if you are not interested in seeing those. Hopefully everybody seeing the demo can appreciate the power of the Smart Device Framework in combination with the .NET Compact Framework. Also once again I am thankful for the fact that Visual Studio.NET can store code snippets in the toolbox. Without that wonderful feature for presenters I would not be able to do a full blown demo in about 5 minutes, giving my typing speed and the amount of errors I am making while typing. Right now I am waiting for action. Luckily things are starting tomorrow with a briefing on the labs that Mike Fossmire so nicely signed me up for. That really means working, starting on Wednesday. But who am I to complain? I found a great Thai restaurant on walking distance from my hotel, so when I am not working or scanning newsgroups I probably can be reached there. The place is called Cha Am Thai Restaurant on 701 Folsom Street. A great lunch for only $7.87. There is hardly anything else to desire.

   What is this?01:47 AM
Blog Ref URL:  http://www.dotnetfordevices.com/forum.html#55


Sunday, March 21, 2004
Time for a celebration
Actually it turns out that I am already two days late with this. Two days ago the birthday of the .NET Compact Framework was celebrated, as Jonathan so nicely describes. Congratulations Compact Framework. I am sure that you will be really mature once you reach v2.

   What is this?05:33 AM
Blog Ref URL:  http://www.dotnetfordevices.com/forum.html#54


Arrived in San Francisco
After a nice 11 hour flight I am finally in San Francisco. Even though it feels like it is 1.34 AM it is only 4.34 PM. That's what you get for a nine hour time difference. To make things really confusing I stick with Central European Time for updates on the blog. If the weather is a sign for our upcoming presentation it is going to be great. It is a wonderful sunny day here with temperatures of around 72 degrees. During this week I will be reporting live from MDC, so you should check out the article section as well as the blog for any other things that will not make it into articles. Now it  is time for some "real" Burger King, Taco Bell or other wonderful junk food.

   What is this?01:39 AM
Blog Ref URL:  http://www.dotnetfordevices.com/forum.html#53


Sunday, March 21, 2004
Time for a celebration
Actually it turns out that I am already two days late with this. Two days ago the birthday of the .NET Compact Framework was celebrated, as Jonathan so nicely describes. Congratulations Compact Framework. I am sure that you will be really mature once you reach v2.

   What is this?05:33 AM
Blog Ref URL:  http://www.dotnetfordevices.com/forum.html#54


Arrived in San Francisco
After a nice 11 hour flight I am finally in San Francisco. Even though it feels like it is 1.34 AM it is only 4.34 PM. That's what you get for a nine hour time difference. To make things really confusing I stick with Central European Time for updates on the blog. If the weather is a sign for our upcoming presentation it is going to be great. It is a wonderful sunny day here with temperatures of around 72 degrees. During this week I will be reporting live from MDC, so you should check out the article section as well as the blog for any other things that will not make it into articles. Now it  is time for some "real" Burger King, Taco Bell or other wonderful junk food.

   What is this?01:39 AM
Blog Ref URL:  http://www.dotnetfordevices.com/forum.html#53


Friday, March 19, 2004
One more week and counting down
This is probably the billionth time I am mentioning MDC. If you read this blog on a regular basis you must know that I am pretty excited about it. The slide deck is done and gone. Now it is time to get some demo-code to work. Since Alex is doing our large, astonishing demonstration, he gave me the chance to do a little demo as well. This time I will try to move beyond “Hello, world!” What I’d like to do is write something a little more challenging. Since this has to be coded live on stage it should still be simple and above all, not too much typing should be involved. Luckily we are using the .NET Compact Framework in combination with the OpenNETCF.org’s Smart Device Framework. This should reduce the amount of typing dramatically. I am thinking about a ‘reflective spy’ application right now. Curious? Make sure to meet us during our presentation next week Friday in San Francisco. Curious but not able to make it to San Francisco? I feel an article coming up as well, so check my blog over the next couple of weeks. I will make an announcement when the article is available. Oh, by the way, for those folks that actually are traveling to San Francisco. Please come by and meet us in person. Our presentation? CLI345: Developing Real-world Smart Device Applications with Visual Studio .NET 2003, .NET Compact Framework and OpenNETCF SmartDevice Framework.

   What is this?08:30 AM
Blog Ref URL:  http://www.dotnetfordevices.com/forum.html#52


Access to Windows CE stream drivers
Chris Tacke wrote a pretty nice article to create a managed interface around stream device drivers. The article can be found on MSDN. This idea, simple and elegant at the same time, goes beyond SmartPhone and PocketPC devices. I highly recommend all developers to take a look at this article, this is very usefull stuff for all kinds of embedded development.

   What is this?08:00 AM
Blog Ref URL:  http://www.dotnetfordevices.com/forum.html#51


Friday, March 19, 2004
One more week and counting down
This is probably the billionth time I am mentioning MDC. If you read this blog on a regular basis you must know that I am pretty excited about it. The slide deck is done and gone. Now it is time to get some demo-code to work. Since Alex is doing our large, astonishing demonstration, he gave me the chance to do a little demo as well. This time I will try to move beyond “Hello, world!” What I’d like to do is write something a little more challenging. Since this has to be coded live on stage it should still be simple and above all, not too much typing should be involved. Luckily we are using the .NET Compact Framework in combination with the OpenNETCF.org’s Smart Device Framework. This should reduce the amount of typing dramatically. I am thinking about a ‘reflective spy’ application right now. Curious? Make sure to meet us during our presentation next week Friday in San Francisco. Curious but not able to make it to San Francisco? I feel an article coming up as well, so check my blog over the next couple of weeks. I will make an announcement when the article is available. Oh, by the way, for those folks that actually are traveling to San Francisco. Please come by and meet us in person. Our presentation? CLI345: Developing Real-world Smart Device Applications with Visual Studio .NET 2003, .NET Compact Framework and OpenNETCF SmartDevice Framework.

   What is this?08:30 AM
Blog Ref URL:  http://www.dotnetfordevices.com/forum.html#52


Access to Windows CE stream drivers
Chris Tacke wrote a pretty nice article to create a managed interface around stream device drivers. The article can be found on MSDN. This idea, simple and elegant at the same time, goes beyond SmartPhone and PocketPC devices. I highly recommend all developers to take a look at this article, this is very usefull stuff for all kinds of embedded development.

   What is this?08:00 AM
Blog Ref URL:  http://www.dotnetfordevices.com/forum.html#51


Wednesday, March 17, 2004
The deck is done
We are only a couple of days away from the second Mobile Developer Conference. Luckily the OpenNETCF.org slide deck is done and it looks pretty nice. Now it is going to be time for the next challenges. First rehearsing the presentation a couple of times and trying to fit it into 60 minutes, including a very, very cool 59 minute demo that Alex is preparing :-). And then of course the ultimate challenge. Bringing this talk to the stage of the Moscone Center West in San Francisco. 

   What is this?07:44 AM
Blog Ref URL:  http://www.dotnetfordevices.com/forum.html#50


Sunday, March 14, 2004
Linux or Windows CE?
I wonder if this product description is biased, but it was fun to read: http://www.ntwizards.net/2003/10/12/microsoft_mn700. The question remains if I would have shown you this link as well if the outcome would have been different, I like to think that I would. Do I really know myself or am I indeed too much of a "MSoftie".

   What is this?13:22 PM
Blog Ref URL:  http://www.dotnetfordevices.com/forum.html#49


Thursday, March 11, 2004
Retrieve the name of a class
Reflection is very cool. Something I really need to learn more about. Today I had a simple challenge. Find a way to close a form depending on its name. By the way, the Text property was not good enough, since the form in question might not have a filled Text property. This simple solution did the trick:

if (this.GetType().Name == "Form1") {
    this.Close();
}

Sometimes life for a managed code developer is just plain simple.


   What is this?15:57 PM
Blog Ref URL:  http://www.dotnetfordevices.com/forum.html#48


Monday, March 8, 2004
MDC VIP Speakers
Sometimes a little browsing results in a nice surprise. Today I was just checking the MDC website, because the event sessions are now finalized. Of course I looked at the VIP speakers as well. What a pleasant surprise. Way to go, VIP's.

   What is this?15:11 PM
Blog Ref URL:  http://www.dotnetfordevices.com/forum.html#47


Saturday, March 6, 2004
Another blogger
Jim Wilson now has a weblog as well. Another one to check out regularly. I think I should change my profession in professional weblog reader, but who is going to pay me? Anyway, if you check out Jim's weblog you might read about one or two new features that are coming up in the .NET Compact Framework v2.

   What is this?10:43 AM
Blog Ref URL:  http://www.dotnetfordevices.com/forum.html#46


OpenNETCF.org goodies
Here is something to look at, all kinds of great OpenNETCF.org products on sale to wear, drink from and write on. The mouse pad will probably be your best friend with the Smart Device Framework object diagram on it. One question comes in my mind. Will the object diagram automatically extend when we extend the Smart Device Framework?

   What is this?00:21 AM
Blog Ref URL:  http://www.dotnetfordevices.com/forum.html#45


Saturday, March 6, 2004
Another blogger
Jim Wilson now has a weblog as well. Another one to check out regularly. I think I should change my profession in professional weblog reader, but who is going to pay me? Anyway, if you check out Jim's weblog you might read about one or two new features that are coming up in the .NET Compact Framework v2.

   What is this?10:43 AM
Blog Ref URL:  http://www.dotnetfordevices.com/forum.html#46


OpenNETCF.org goodies
Here is something to look at, all kinds of great OpenNETCF.org products on sale to wear, drink from and write on. The mouse pad will probably be your best friend with the Smart Device Framework object diagram on it. One question comes in my mind. Will the object diagram automatically extend when we extend the Smart Device Framework?

   What is this?00:21 AM
Blog Ref URL:  http://www.dotnetfordevices.com/forum.html#45


Wednesday, March 3, 2004
MDC presentation getting into shape
It is coming closer and closer. I just send in the first draft for the OpenNETCF.org presentation at MDC. Thanks to the cooperation of many OpenNETCF.org members the presentation is getting into great shape. I have a very good feeling about this, and of course Alex' demo's will blow the crowd away. Oh, our time slot is now known. The OpenNETCF.org presentation will be held in San Francisco on March 26 at 2.00 PM.

   What is this?11:09 AM
Blog Ref URL:  http://www.dotnetfordevices.com/forum.html#44


Saturday, February 28, 2004
A network through the whole house
I feel luckly, just having installed a wireless network. Now I can at least work in the entire house while staying online. I am not sure if this means I am going to be online more frequent or if this is simply better for my social life. The latter is sure true. For instance, this blog entry is created in the living room with a laptop computer on my lap while watching TV with my family.

   What is this?21:59 PM
Blog Ref URL:  http://www.dotnetfordevices.com/forum.html#43


Exposure
Check this out. Our real-time .NET Compact Framework article again gets some cool exposure (at least for one week). This article took a while to prepare and write but it what a cool thing to do. It would be time for another one with at least a cool subject as this one. Suggestions? Please email them to me.

   What is this?10:30 AM
Blog Ref URL:  http://www.dotnetfordevices.com/forum.html#42


Saturday, February 28, 2004
A network through the whole house
I feel luckly, just having installed a wireless network. Now I can at least work in the entire house while staying online. I am not sure if this means I am going to be online more frequent or if this is simply better for my social life. The latter is sure true. For instance, this blog entry is created in the living room with a laptop computer on my lap while watching TV with my family.

   What is this?21:59 PM
Blog Ref URL:  http://www.dotnetfordevices.com/forum.html#43


Exposure
Check this out. Our real-time .NET Compact Framework article again gets some cool exposure (at least for one week). This article took a while to prepare and write but it what a cool thing to do. It would be time for another one with at least a cool subject as this one. Suggestions? Please email them to me.

   What is this?10:30 AM
Blog Ref URL:  http://www.dotnetfordevices.com/forum.html#42


Friday, February 27, 2004
Unlocking my smartphone

Sometimes I truly feel like a dummy. For instance, today I wasted almost an hour because I could not get a connection to my SmartPhone from embedded Visual C++. Also, the remote tools did not work at all. Only when I was about to reinstall the SDK and the development environment it did occur to me that I reformatted the hard drive of my laptop three weeks ago. Since that time I have not used the SmartPhone. All of a sudden I realized that this might be a security issue, after all, ActiveSync was working to synchronize data.

Snippet from the SmartPhone SDK Help:
The security features of Smartphone devices make it necessary to sign certain files that are used to support the development and debugging process. During the installation of the Smartphone SDK, this process is performed automatically for the files that the device emulator uses. However, when you want to enable a real Smartphone device for testing and debugging, you will need to complete this file-signing process manually.

Of course after running spdps.exe everything just worked like a charm. At moments like this I wish I would think first before just trying, playing and getting frustrated. Hopefully I will not be fooled by this one anymore in the future.



   What is this?16:22 PM
Blog Ref URL:  http://www.dotnetfordevices.com/forum.html#41


Virtual PC 2004
I had to re-install a Virtual Windows XP machine because the original one had problems booting after installing some beta software. Of course that is exactly the reason why I like Virtual PC 2004 so much. I don't have to completely reinstall things on my physical machine, it stays clean and yet I have the opportunity to play as much with beta versions of new products as I want. Well, after re-installing I placed the Virtual PC 2004 CD ROM in my drive. The drive was still "captured" by the Virtual PC. To my surprise the CD ROM autostarted and asked me to install Virtual PC 2004 inside of another Virtual PC 2004. Of course this got me all excited, because officialy this is not supposed to work. Well, it installed fine but once I tried to start my new Virtual PC inside the other one it told me it could not run inside another Virtual PC. I really wonder how hard it would be to give that message prior to installing. Now I had to uninstall Virtual PC again from my Virtual PC. However, it also brought more thoughts. How does the OS know it is running inside a Virtual PC? Is there a way to tweak that? If so, it might be possible to run Virtual PC's inside Virtual PC's. I promise, when I have (a lot of) time I will dig deeper into it. It might take months. Other people might have figured it out by that time, but this really intrigues me.

   What is this?07:55 AM
Blog Ref URL:  http://www.dotnetfordevices.com/forum.html#40


Friday, February 27, 2004
Unlocking my smartphone

Sometimes I truly feel like a dummy. For instance, today I wasted almost an hour because I could not get a connection to my SmartPhone from embedded Visual C++. Also, the remote tools did not work at all. Only when I was about to reinstall the SDK and the development environment it did occur to me that I reformatted the hard drive of my laptop three weeks ago. Since that time I have not used the SmartPhone. All of a sudden I realized that this might be a security issue, after all, ActiveSync was working to synchronize data.

Snippet from the SmartPhone SDK Help:
The security features of Smartphone devices make it necessary to sign certain files that are used to support the development and debugging process. During the installation of the Smartphone SDK, this process is performed automatically for the files that the device emulator uses. However, when you want to enable a real Smartphone device for testing and debugging, you will need to complete this file-signing process manually.

Of course after running spdps.exe everything just worked like a charm. At moments like this I wish I would think first before just trying, playing and getting frustrated. Hopefully I will not be fooled by this one anymore in the future.



   What is this?16:22 PM
Blog Ref URL:  http://www.dotnetfordevices.com/forum.html#41


Virtual PC 2004
I had to re-install a Virtual Windows XP machine because the original one had problems booting after installing some beta software. Of course that is exactly the reason why I like Virtual PC 2004 so much. I don't have to completely reinstall things on my physical machine, it stays clean and yet I have the opportunity to play as much with beta versions of new products as I want. Well, after re-installing I placed the Virtual PC 2004 CD ROM in my drive. The drive was still "captured" by the Virtual PC. To my surprise the CD ROM autostarted and asked me to install Virtual PC 2004 inside of another Virtual PC 2004. Of course this got me all excited, because officialy this is not supposed to work. Well, it installed fine but once I tried to start my new Virtual PC inside the other one it told me it could not run inside another Virtual PC. I really wonder how hard it would be to give that message prior to installing. Now I had to uninstall Virtual PC again from my Virtual PC. However, it also brought more thoughts. How does the OS know it is running inside a Virtual PC? Is there a way to tweak that? If so, it might be possible to run Virtual PC's inside Virtual PC's. I promise, when I have (a lot of) time I will dig deeper into it. It might take months. Other people might have figured it out by that time, but this really intrigues me.

   What is this?07:55 AM
Blog Ref URL:  http://www.dotnetfordevices.com/forum.html#40


Monday, February 23, 2004
Dream Team
Here is a cool link, great press for OpenNETCF.org and of course a wonderful read: http://www.pocketpcthoughts.com/index.php?action=expand,24862.

   What is this?21:50 PM
Blog Ref URL:  http://www.dotnetfordevices.com/forum.html#39


Sunday, February 22, 2004
Drowning in blogs
I just added a number of the blogs I like to my favourites. It probably will take another 8 hours / day to keep up-to-date with what they write.

Alex Feinman
Alex Yakhnin
Amit Chopra's WebLog
Chris Tacke
Don Box's Spoutlet
jamespr's WebLog
Jono's Blog
Mikehall's WebLog
Neil Cowburn
Peter Foot
simplegeek



   What is this?17:37 PM
Blog Ref URL:  http://www.dotnetfordevices.com/forum.html#38


Mobile DevCon 2004 thoughts
It is really time to start working on the slide deck for the Mobile DevCon. This week I received the PowerPoint template. The looks will remain a surprise until March 23. I also saw some cool stuff that Alex is working on. If he gets all of this working in a demo for our talk I am sure the audience will be very excited. If it will all work in a couple of weeks time I am sure that everybody will be convinced there is no way to ignore OpenNETCF.org and the Smart Device Framework. Of course much more will follow on the Mobile DevCon over the next couple of weeks.

   What is this?00:26 AM
Blog Ref URL:  http://www.dotnetfordevices.com/forum.html#37


Back from Nuremberg
I guess I should have written this two or three days ago already, but yes, I'm back from a tiring but successful trip with a nice presentation and a great chance to be present (= work) at the Microsoft booth on the Embedded World Conference. The team there was absolutely wonderful. Thank you Hardy, Nancy, Doris, Julia, Constanze, Nick, Ralph, John, Tom, Michel and the people I forgot for letting me be part of this cool experience.

   What is this?00:17 AM
Blog Ref URL:  http://www.dotnetfordevices.com/forum.html#36


Smart Device Framework v1.0 released
While being in Nuremberg I had the pleasure to read that the OpenNETCF.org Smart Device Framework v1.0 has been released. Today it looks like this is going to be a nice success, given the fact that already almost 500 binaries are downloaded. Congretulations guys for a great job that will be a benefit to all Windows CE managed code developers.

   What is this?00:09 AM
Blog Ref URL:  http://www.dotnetfordevices.com/forum.html#35


Sunday, February 22, 2004
Drowning in blogs
I just added a number of the blogs I like to my favourites. It probably will take another 8 hours / day to keep up-to-date with what they write.

Alex Feinman
Alex Yakhnin
Amit Chopra's WebLog
Chris Tacke
Don Box's Spoutlet
jamespr's WebLog
Jono's Blog
Mikehall's WebLog
Neil Cowburn
Peter Foot
simplegeek



   What is this?17:37 PM
Blog Ref URL:  http://www.dotnetfordevices.com/forum.html#38


Mobile DevCon 2004 thoughts
It is really time to start working on the slide deck for the Mobile DevCon. This week I received the PowerPoint template. The looks will remain a surprise until March 23. I also saw some cool stuff that Alex is working on. If he gets all of this working in a demo for our talk I am sure the audience will be very excited. If it will all work in a couple of weeks time I am sure that everybody will be convinced there is no way to ignore OpenNETCF.org and the Smart Device Framework. Of course much more will follow on the Mobile DevCon over the next couple of weeks.

   What is this?00:26 AM
Blog Ref URL:  http://www.dotnetfordevices.com/forum.html#37


Back from Nuremberg
I guess I should have written this two or three days ago already, but yes, I'm back from a tiring but successful trip with a nice presentation and a great chance to be present (= work) at the Microsoft booth on the Embedded World Conference. The team there was absolutely wonderful. Thank you Hardy, Nancy, Doris, Julia, Constanze, Nick, Ralph, John, Tom, Michel and the people I forgot for letting me be part of this cool experience.

   What is this?00:17 AM
Blog Ref URL:  http://www.dotnetfordevices.com/forum.html#36


Smart Device Framework v1.0 released
While being in Nuremberg I had the pleasure to read that the OpenNETCF.org Smart Device Framework v1.0 has been released. Today it looks like this is going to be a nice success, given the fact that already almost 500 binaries are downloaded. Congretulations guys for a great job that will be a benefit to all Windows CE managed code developers.

   What is this?00:09 AM
Blog Ref URL:  http://www.dotnetfordevices.com/forum.html#35


Sunday, February 22, 2004
Drowning in blogs
I just added a number of the blogs I like to my favourites. It probably will take another 8 hours / day to keep up-to-date with what they write.

Alex Feinman
Alex Yakhnin
Amit Chopra's WebLog
Chris Tacke
Don Box's Spoutlet
jamespr's WebLog
Jono's Blog
Mikehall's WebLog
Neil Cowburn
Peter Foot
simplegeek



   What is this?17:37 PM
Blog Ref URL:  http://www.dotnetfordevices.com/forum.html#38


Mobile DevCon 2004 thoughts
It is really time to start working on the slide deck for the Mobile DevCon. This week I received the PowerPoint template. The looks will remain a surprise until March 23. I also saw some cool stuff that Alex is working on. If he gets all of this working in a demo for our talk I am sure the audience will be very excited. If it will all work in a couple of weeks time I am sure that everybody will be convinced there is no way to ignore OpenNETCF.org and the Smart Device Framework. Of course much more will follow on the Mobile DevCon over the next couple of weeks.

   What is this?00:26 AM
Blog Ref URL:  http://www.dotnetfordevices.com/forum.html#37


Back from Nuremberg
I guess I should have written this two or three days ago already, but yes, I'm back from a tiring but successful trip with a nice presentation and a great chance to be present (= work) at the Microsoft booth on the Embedded World Conference. The team there was absolutely wonderful. Thank you Hardy, Nancy, Doris, Julia, Constanze, Nick, Ralph, John, Tom, Michel and the people I forgot for letting me be part of this cool experience.

   What is this?00:17 AM
Blog Ref URL:  http://www.dotnetfordevices.com/forum.html#36


Smart Device Framework v1.0 released
While being in Nuremberg I had the pleasure to read that the OpenNETCF.org Smart Device Framework v1.0 has been released. Today it looks like this is going to be a nice success, given the fact that already almost 500 binaries are downloaded. Congretulations guys for a great job that will be a benefit to all Windows CE managed code developers.

   What is this?00:09 AM
Blog Ref URL:  http://www.dotnetfordevices.com/forum.html#35


Sunday, February 22, 2004
Drowning in blogs
I just added a number of the blogs I like to my favourites. It probably will take another 8 hours / day to keep up-to-date with what they write.

Alex Feinman
Alex Yakhnin
Amit Chopra's WebLog
Chris Tacke
Don Box's Spoutlet
jamespr's WebLog
Jono's Blog
Mikehall's WebLog
Neil Cowburn
Peter Foot
simplegeek



   What is this?17:37 PM
Blog Ref URL:  http://www.dotnetfordevices.com/forum.html#38


Mobile DevCon 2004 thoughts
It is really time to start working on the slide deck for the Mobile DevCon. This week I received the PowerPoint template. The looks will remain a surprise until March 23. I also saw some cool stuff that Alex is working on. If he gets all of this working in a demo for our talk I am sure the audience will be very excited. If it will all work in a couple of weeks time I am sure that everybody will be convinced there is no way to ignore OpenNETCF.org and the Smart Device Framework. Of course much more will follow on the Mobile DevCon over the next couple of weeks.

   What is this?00:26 AM
Blog Ref URL:  http://www.dotnetfordevices.com/forum.html#37


Back from Nuremberg
I guess I should have written this two or three days ago already, but yes, I'm back from a tiring but successful trip with a nice presentation and a great chance to be present (= work) at the Microsoft booth on the Embedded World Conference. The team there was absolutely wonderful. Thank you Hardy, Nancy, Doris, Julia, Constanze, Nick, Ralph, John, Tom, Michel and the people I forgot for letting me be part of this cool experience.

   What is this?00:17 AM
Blog Ref URL:  http://www.dotnetfordevices.com/forum.html#36


Smart Device Framework v1.0 released
While being in Nuremberg I had the pleasure to read that the OpenNETCF.org Smart Device Framework v1.0 has been released. Today it looks like this is going to be a nice success, given the fact that already almost 500 binaries are downloaded. Congretulations guys for a great job that will be a benefit to all Windows CE managed code developers.

   What is this?00:09 AM
Blog Ref URL:  http://www.dotnetfordevices.com/forum.html#35


Tuesday, February 17, 2004
Embedded World Conference 2004 - Nuremberg
Today is an important day with our talk on real-time behavior of the .NET Compact Framework. Nervous? After seeing the scale of the exhibition area yesterday I can honestly say "Yes". This is going to be a packed day. Working at the Microsoft booth during the morning and rehearse again and again until 4.30 this afternoon and probably change the slide deck for a third time.

   What is this?07:29 AM
Blog Ref URL:  http://www.dotnetfordevices.com/forum.html#34


Monday, February 16, 2004
Too much to do in too little time
Some days are just incredibly packed. The deadline for the dotNETForDevices column is in 15 minutes and I am not gonna make it. I've got a meeting to attend in one hour, after that a flight to Nuremberg, Germany and a meeting at the Microsoft booth at the Embedded World Conference at 4 PM where demo rehearsals and presentation rehearsals will be held. I still need to send out an OpenNETCF.org press release, ask the EWC staff for a video switch to be able to use different video sources during our talk (which is tomorrow), create a new item about the release of the next (beta) version of OpenNETCF.org's Smart Device Framework, read email and reply to the most important messages. Some days are just packed I guess.

   What is this?06:47 AM
Blog Ref URL:  http://www.dotnetfordevices.com/forum.html#33


Saturday, February 14, 2004
ActiveSync + Visual Studio.NET
It is not really the greatest combination, ActiveSync teaming up with Visual Studio.NET, especially when trying to use both a PocketPC and a SmartPhone device. I am in the midst of testing a very new exciting release of OpenNETCF.org's Smart Device Framework when all of a sudden it was not possible to deploy applications to the PocketPC. ActiveSync told me it was connected. When I used Tools - Connect to Device ... Visual Studio told me it connected to the device, but when I tried to deploy an application to the device it immediately told me 0 files were deployed. As if there was no connection. While testing beta software it is always hard to figure out if the new software caused the problem. However, in this case I don't think so. After clicking on the ActiveSync icon all of a sudden it started synchronizing, Guess what, after this action it was also possible to deploy applications to the device again. More and more it seems that ActiveSync is the weakest link.

   What is this?14:47 PM
Blog Ref URL:  http://www.dotnetfordevices.com/forum.html#32


Friday, February 13, 2004
.NET CF likes Dutch Kernels?
In preparation of the Embedded World Conference 2004 presentation about real-time behavior of the .NET Compact Framework we found something remarkable today. It turned out that a managed application works fine under a Dutch Windows CE.NET 4.2 build and fails to run on an identical US English CE.NET 4.2 build. The application does not even start. This really makes me curious, although it will probably be a while until there is an answer. First there is a conference to attend.

   What is this?23:53 PM
Blog Ref URL:  http://www.dotnetfordevices.com/forum.html#31


Tuesday, February 10, 2004
Why are systems not working when we need them?
In preparation for the presentation at the Embedded World Conference 2004 I decided to vitalize my laptop, just a simple matter of doubling the amount of memory to a whole whopping 512 MByte. In the same process I also decided to restructure my harddrive, getting rid of some partitions that were too small and getting rid of one of my operating systems, only leaving Windows XP as my operating system of choice. After creating a backup and re-installing Windows XP it only costed 48 hours until I was up and running again. So far the installation experience of Windows XP has been pretty good, but this laptop was a nightmare. The system worked for like 4 hours and became instable afterwards, so there was nothing left to do than reinstalling everything again. Especially with nice little packages like Platform Builder and Visual Studio.NET installing can take up a lot of time. Right now I am over a day behind schedule on my preparation for the upcoming presentation of next week. This is probably costing a weekend.

   What is this?23:56 PM
Blog Ref URL:  http://www.dotnetfordevices.com/forum.html#30


Sunday, February 8, 2004
OpenNETCF.org at MDC 2004
Since Neil Cowburn spoke about it as well I really start to believe it. Yes, Alex Feinman and I are giving a presentation at the Mobile Developer Conference in March in San Francisco. Here is the title:

Developing Real-world Smart Device Applications with Visual Studio .NET 2003, .NET Compact Framework and OpenNETCF Smart Device Framework

The .NET Compact Framework is a powerful tool for a mobile developer. To fully utilize its potential in a real-world application, a developer needs access to the native API and intrinsic Windows CE controls. OpenNETCF Smart Device framework is designed to address these needs.

OpenNETCF's press releases for the MDC are almost done, this surely costs a lot of energy, writing a press release is almost harder than writing some code. In between a couple of other presentations we need to get the slide deck ready as soon as possible too. If there is time left I keep you readers up to date on the making of this presentation.



   What is this?22:28 PM
Blog Ref URL:  http://www.dotnetfordevices.com/forum.html#29


Saturday, February 7, 2004
A complete virtual world
Today I installed some of the Windows XP Powertoys. I used to install those always in the Windows 95 and Windows 98 days, but after having installed Windows XP I never really cared for them. However, I missed out!! The one I really like is the virtual desktop manager, especially in combination with Virtual PC 2004. You should see my system right now, on desktop to update my blog. Another one to see the results in DotNETForDevices. A third desktop running another version of Windows XP in a virtual machine, meant for all beta software I am currently using. The last window has media player active.

It all might seem chaotic at first hand but this is a really productive way for me to work. I can switch very quickly between different desktops and can do much more things simultaneously without the need to hide windows that are blocking each other in one single desktop.





   What is this?23:01 PM
Blog Ref URL:  http://www.dotnetfordevices.com/forum.html#28


Friday, February 6, 2004
An MVP with great thoughts about himself
Casey Chesnut gives us a great insight in his (failed?) projects. As a bonus he also talkes about OpenNETCF: "the guys that actually get stuff done are the OpenNetCF guys. they are the value-add'ers, the ones that will make your project successful". Thank you Casey!!!! After such wonderful words, how could this be true??

   What is this?21:59 PM
Blog Ref URL:  http://www.dotnetfordevices.com/forum.html#26


Wednesday, February 4, 2004
Blogging from conferences ...
... is something that seems to become big. Last year at PDC many people were blogging, actually a very cool way to get your own impressions out to the world and to setup discussions with other bloggers. During the 2004 MDC there will be another change. Will I blog from MDC? Hmmm, I am still thinking about it. Of course I'll let you know if I decided to do so.

   What is this?23:51 PM
Blog Ref URL:  http://www.dotnetfordevices.com/forum.html#25


Commuting is (sometimes) useful
Especially if you make your commuting time as effective as Chris Tacke does. He actually starts thinking about the .NET Compact Framework and its innerworks. Luckily for the rest of the world Chris shares his ideas with us. For instance, take a look at his thoughts on non-fullscreen forms on PocketPC's.

   What is this?23:28 PM
Blog Ref URL:  http://www.dotnetfordevices.com/forum.html#24


Wednesday, February 4, 2004
Blogging from conferences ...
... is something that seems to become big. Last year at PDC many people were blogging, actually a very cool way to get your own impressions out to the world and to setup discussions with other bloggers. During the 2004 MDC there will be another change. Will I blog from MDC? Hmmm, I am still thinking about it. Of course I'll let you know if I decided to do so.

   What is this?23:51 PM
Blog Ref URL:  http://www.dotnetfordevices.com/forum.html#25


Commuting is (sometimes) useful
Especially if you make your commuting time as effective as Chris Tacke does. He actually starts thinking about the .NET Compact Framework and its innerworks. Luckily for the rest of the world Chris shares his ideas with us. For instance, take a look at his thoughts on non-fullscreen forms on PocketPC's.

   What is this?23:28 PM
Blog Ref URL:  http://www.dotnetfordevices.com/forum.html#24


Sunday, February 1, 2004
Keep an eye on Jonathan
Jonathan Wells, aka Jono, has a weblog covering the .NET Compact Framework. Being the .NET CF Product Manager he most likely has a lot to say about it. Check out his stories here: http://blogs.msdn.com/onoj/

   What is this?22:45 PM
Blog Ref URL:  http://www.dotnetfordevices.com/forum.html#21


I love my Update Wizard
Of coure this is nothing less than a shameless plug, but after a few days of more intensive work on the DotNETForDevices website I can only tell that I love the easy way in which I myself can update the site. Being a HTML analfabetic it is still possible to create some cool content. Thanks to SpiralFX and their Update Wizard technology, almost limitless web development possibilities, including an easy to use content management system, are available at affordable prices. Thank you guys, without your technology my blog and the rest of this website would not have been reality.

   What is this?22:29 PM
Blog Ref URL:  http://www.dotnetfordevices.com/forum.html#20


Finally got to Longhorn

No, not the mountain in the northwest of the United States but the next version of Windows. I was even trying to blog from inside Longhorn, but my blogging software didn't yet work together with Longhorn. I have to admit that it took a lot of patience to get Longhorn up and running. Probably also because I decided to run it inside a Virtual PC. The steps I needed to make to install it were not entirely obvious.

  1. Create a new Virtual PC 2004. Right now I gave this machine 375 MByte of RAM, if you install these bits for yourself give your VPC as much RAM as you can.
  2. The PDC DVD containing Longhorn was not bootable, so first I installed a brand new Windows XP in the newly created VPC.
  3. Immediately after installing XP (which took only something like 30 minutes), I started installing Longhorn.
  4. It told me that installation would be done in 15 to 30 minutes, but it took a little longer.
  5. After installation it turned out that I had a standard VGA display card in the VPC with a very low resolution and 4 bit color quality.
  6. The system also found a 16 bit sound-card for which it could not install drivers.
  7. Steps 5 and 6 made it clear that it was time to install the VPC additions, however, automatic installation of the additions did not work
  8. To get the VPC additions installed I had to run setup manually from within the Longhorn machine, of course with the Virtual PC 2004 CD ROM installed in the drive.
  9. After rebooting I saw the first glimpse of Longhorn on my machine, and of course I want to share that with you.

Longhorn showing DotNETForDevices

It only took like 5 hours to install the OS. Hey, remember this is pre-alpha code, the PDC bits are a very early build of Longhorn.

What's next? Of course playing around with Longhorn, but definitely also install the Longhorn SDK in Visual Studio Whidbey to be able to try my first little applications, written specifically for Longhorn. I will keep you up to date.



   What is this?09:06 AM
Blog Ref URL:  http://www.dotnetfordevices.com/forum.html#19


Sunday, February 1, 2004
Keep an eye on Jonathan
Jonathan Wells, aka Jono, has a weblog covering the .NET Compact Framework. Being the .NET CF Product Manager he most likely has a lot to say about it. Check out his stories here: http://blogs.msdn.com/onoj/

   What is this?22:45 PM
Blog Ref URL:  http://www.dotnetfordevices.com/forum.html#21


I love my Update Wizard
Of coure this is nothing less than a shameless plug, but after a few days of more intensive work on the DotNETForDevices website I can only tell that I love the easy way in which I myself can update the site. Being a HTML analfabetic it is still possible to create some cool content. Thanks to SpiralFX and their Update Wizard technology, almost limitless web development possibilities, including an easy to use content management system, are available at affordable prices. Thank you guys, without your technology my blog and the rest of this website would not have been reality.

   What is this?22:29 PM
Blog Ref URL:  http://www.dotnetfordevices.com/forum.html#20


Finally got to Longhorn

No, not the mountain in the northwest of the United States but the next version of Windows. I was even trying to blog from inside Longhorn, but my blogging software didn't yet work together with Longhorn. I have to admit that it took a lot of patience to get Longhorn up and running. Probably also because I decided to run it inside a Virtual PC. The steps I needed to make to install it were not entirely obvious.

  1. Create a new Virtual PC 2004. Right now I gave this machine 375 MByte of RAM, if you install these bits for yourself give your VPC as much RAM as you can.
  2. The PDC DVD containing Longhorn was not bootable, so first I installed a brand new Windows XP in the newly created VPC.
  3. Immediately after installing XP (which took only something like 30 minutes), I started installing Longhorn.
  4. It told me that installation would be done in 15 to 30 minutes, but it took a little longer.
  5. After installation it turned out that I had a standard VGA display card in the VPC with a very low resolution and 4 bit color quality.
  6. The system also found a 16 bit sound-card for which it could not install drivers.
  7. Steps 5 and 6 made it clear that it was time to install the VPC additions, however, automatic installation of the additions did not work
  8. To get the VPC additions installed I had to run setup manually from within the Longhorn machine, of course with the Virtual PC 2004 CD ROM installed in the drive.
  9. After rebooting I saw the first glimpse of Longhorn on my machine, and of course I want to share that with you.

Longhorn showing DotNETForDevices

It only took like 5 hours to install the OS. Hey, remember this is pre-alpha code, the PDC bits are a very early build of Longhorn.

What's next? Of course playing around with Longhorn, but definitely also install the Longhorn SDK in Visual Studio Whidbey to be able to try my first little applications, written specifically for Longhorn. I will keep you up to date.



   What is this?09:06 AM
Blog Ref URL:  http://www.dotnetfordevices.com/forum.html#19


Sunday, February 1, 2004
Keep an eye on Jonathan
Jonathan Wells, aka Jono, has a weblog covering the .NET Compact Framework. Being the .NET CF Product Manager he most likely has a lot to say about it. Check out his stories here: http://blogs.msdn.com/onoj/

   What is this?22:45 PM
Blog Ref URL:  http://www.dotnetfordevices.com/forum.html#21


I love my Update Wizard
Of coure this is nothing less than a shameless plug, but after a few days of more intensive work on the DotNETForDevices website I can only tell that I love the easy way in which I myself can update the site. Being a HTML analfabetic it is still possible to create some cool content. Thanks to SpiralFX and their Update Wizard technology, almost limitless web development possibilities, including an easy to use content management system, are available at affordable prices. Thank you guys, without your technology my blog and the rest of this website would not have been reality.

   What is this?22:29 PM
Blog Ref URL:  http://www.dotnetfordevices.com/forum.html#20


Finally got to Longhorn

No, not the mountain in the northwest of the United States but the next version of Windows. I was even trying to blog from inside Longhorn, but my blogging software didn't yet work together with Longhorn. I have to admit that it took a lot of patience to get Longhorn up and running. Probably also because I decided to run it inside a Virtual PC. The steps I needed to make to install it were not entirely obvious.

  1. Create a new Virtual PC 2004. Right now I gave this machine 375 MByte of RAM, if you install these bits for yourself give your VPC as much RAM as you can.
  2. The PDC DVD containing Longhorn was not bootable, so first I installed a brand new Windows XP in the newly created VPC.
  3. Immediately after installing XP (which took only something like 30 minutes), I started installing Longhorn.
  4. It told me that installation would be done in 15 to 30 minutes, but it took a little longer.
  5. After installation it turned out that I had a standard VGA display card in the VPC with a very low resolution and 4 bit color quality.
  6. The system also found a 16 bit sound-card for which it could not install drivers.
  7. Steps 5 and 6 made it clear that it was time to install the VPC additions, however, automatic installation of the additions did not work
  8. To get the VPC additions installed I had to run setup manually from within the Longhorn machine, of course with the Virtual PC 2004 CD ROM installed in the drive.
  9. After rebooting I saw the first glimpse of Longhorn on my machine, and of course I want to share that with you.

Longhorn showing DotNETForDevices

It only took like 5 hours to install the OS. Hey, remember this is pre-alpha code, the PDC bits are a very early build of Longhorn.

What's next? Of course playing around with Longhorn, but definitely also install the Longhorn SDK in Visual Studio Whidbey to be able to try my first little applications, written specifically for Longhorn. I will keep you up to date.



   What is this?09:06 AM
Blog Ref URL:  http://www.dotnetfordevices.com/forum.html#19


Saturday, January 31, 2004
Windows XP SP2
This saturday it is very windy and rain is pouring down here in Holland, so it is a perfect day to install some new software. Since I started using Virtual PC 2004 I am less hesitant to install beta software on my desktop machine. I know I have been bragging about Virtual PC 2004. Yesterday I had a discussion with a co-worker in which he praised VMWare. I used that product a couple of years ago, running into several problems. I guess it would be fair to give it a second chance as well, but my MSDN Universal subscription comes with Virtual PC 2004, so why not use it?

Anyway, today I installed beta1 of Windows XP SP2. Beta versions of operating systems are always somewhat scarier than beta versions of software products. So far the experience has been great though. Installation of SP2 was painless for me, the system also asked if I wanted to install some security updates which worked great as well. To my surprise after installation of the security updates there was not even a need to reboot the system. Of course I will play more with this version of the OS in the upcoming time so I will keep everybody up to date.


   What is this?12:11 PM
Blog Ref URL:  http://www.dotnetfordevices.com/forum.html#18


Thursday, January 29, 2004
Smartphone deployment mysteries

Today during my Whidbey presentation I tried to deploy a native application from within Studio to the Red-E SmartPhone (upgraded to SP2003). Even though ActiveSync was cooperating and even though Whidbey indicated the device was connected it was impossible to deploy and start an application on the device, let alone try to debug that app. So here were my steps to get the application running on the device anyway:

  1. Copy the application from the development machine to the device using ActiveSync's Explore, making sure the application got stored in the \storage\program files folder.
  2. Create a shortcut to the just installed application in the storage\windows\start menu folder.
  3. Turn the Red-E off and back on again.
  4. Start the application using the start menu

Especially step number 3 is interesting. Even though it seemed that the application was actually copied to the device with a shortcut added in the start menu (I had proof of that using ActiveSync's Explore) on the actual device the newly installed application didn't show up unless powering down the device. I guess we all are geeks, finding out things like this one.




   What is this?23:28 PM
Blog Ref URL:  http://www.dotnetfordevices.com/forum.html#17


Whidbey was nice to me
Yes, it worked! Today I talked for 45 minutes about Whidbey and about the cool features that are coming up when this new version of Visual Studio is released. Even though I used the PDC bits, the product worked great. Of course still with the 1.0 .NET Compact Framework, but it was pretty cool to share the new designer experience for desktop apps and exciting new language extensions like generics to the audience. I also could demonstrate writing native applications for smart devices. The only thing that failed was deploying a native application to a SmartPhone device, but using some creativity and asking help from ActiveSync at least it was possible to convince people that we only need one development environment in the future, both for managed and native application development for devices.

   What is this?20:32 PM
Blog Ref URL:  http://www.dotnetfordevices.com/forum.html#16


Thursday, January 29, 2004
Smartphone deployment mysteries

Today during my Whidbey presentation I tried to deploy a native application from within Studio to the Red-E SmartPhone (upgraded to SP2003). Even though ActiveSync was cooperating and even though Whidbey indicated the device was connected it was impossible to deploy and start an application on the device, let alone try to debug that app. So here were my steps to get the application running on the device anyway:

  1. Copy the application from the development machine to the device using ActiveSync's Explore, making sure the application got stored in the \storage\program files folder.
  2. Create a shortcut to the just installed application in the storage\windows\start menu folder.
  3. Turn the Red-E off and back on again.
  4. Start the application using the start menu

Especially step number 3 is interesting. Even though it seemed that the application was actually copied to the device with a shortcut added in the start menu (I had proof of that using ActiveSync's Explore) on the actual device the newly installed application didn't show up unless powering down the device. I guess we all are geeks, finding out things like this one.




   What is this?23:28 PM
Blog Ref URL:  http://www.dotnetfordevices.com/forum.html#17


Whidbey was nice to me
Yes, it worked! Today I talked for 45 minutes about Whidbey and about the cool features that are coming up when this new version of Visual Studio is released. Even though I used the PDC bits, the product worked great. Of course still with the 1.0 .NET Compact Framework, but it was pretty cool to share the new designer experience for desktop apps and exciting new language extensions like generics to the audience. I also could demonstrate writing native applications for smart devices. The only thing that failed was deploying a native application to a SmartPhone device, but using some creativity and asking help from ActiveSync at least it was possible to convince people that we only need one development environment in the future, both for managed and native application development for devices.

   What is this?20:32 PM
Blog Ref URL:  http://www.dotnetfordevices.com/forum.html#16


Tuesday, January 27, 2004
Speaking about Whidbey

Thursday I will give my first presentation on Visual Studio Whidbey. I still need to rehearse a lot. So far there is too much stuff in the presentation and much of it is totally unrelated. Too bad I don't have Whidbey's .NET CF bits yet, I am sure it would blow people away. Unfortunately we are stuck with the 1.0 .NET CF in the PDC Whidbey bits. It will still be pretty cool to show the cool unamaged code features for devices and some of the pretty nifty designer improvements, let alone talk a bit about language enhancements. I am sure all of this is going to be fun.



   What is this?12:30 PM
Blog Ref URL:  http://www.dotnetfordevices.com/forum.html#5


Virtual PC 2004

In my column I already mentioned how cool a product Virtual CP 2004 is. However, there is one major drawback. I really need the possibility to have a Virtual PC running inside another Virtual PC. Of course the first reason is to be able to run Windows CE emulators from within a Virtual PC envniroment, but thinking more about it, the sky is the limit. A whole virtual environment. Am I inside or outside "The Matrix" right now?



   What is this?12:15 PM
Blog Ref URL:  http://www.dotnetfordevices.com/forum.html#6


Tuesday, January 27, 2004
Speaking about Whidbey

Thursday I will give my first presentation on Visual Studio Whidbey. I still need to rehearse a lot. So far there is too much stuff in the presentation and much of it is totally unrelated. Too bad I don't have Whidbey's .NET CF bits yet, I am sure it would blow people away. Unfortunately we are stuck with the 1.0 .NET CF in the PDC Whidbey bits. It will still be pretty cool to show the cool unamaged code features for devices and some of the pretty nifty designer improvements, let alone talk a bit about language enhancements. I am sure all of this is going to be fun.



   What is this?12:30 PM
Blog Ref URL:  http://www.dotnetfordevices.com/forum.html#5


Virtual PC 2004

In my column I already mentioned how cool a product Virtual CP 2004 is. However, there is one major drawback. I really need the possibility to have a Virtual PC running inside another Virtual PC. Of course the first reason is to be able to run Windows CE emulators from within a Virtual PC envniroment, but thinking more about it, the sky is the limit. A whole virtual environment. Am I inside or outside "The Matrix" right now?



   What is this?12:15 PM
Blog Ref URL:  http://www.dotnetfordevices.com/forum.html#6










SpiralFX Technology Solutions
www.spiralfx.com

:: ::