The Desktop Web Comes to Windows Mobile

Internet Explorer Mobile 6 transforms the web for devices based on Windows Mobile 6.1.4.  A rich, desktop web with flicking, panning and zooming is coming to Windows Mobile.  Fast, robust Javascript support is included ala the IE 8 Javascript engine.  Plugin support includes Flash Lite 3.1, Silverlight, and the embeddable Media Player.  Device developers don't have to wait for shipping devices in order to get started.  The Windows Mobile 6.1.4 Emulator Images can be found at http://www.microsoft.com/downloads/details.aspx?FamilyID=1A7A6B52-F89E-4354-84CE-5D19C204498A&displaylang=en.

  • New emulator image resolutions:
    Windows Mobile 6.1.4 Standard
    DPI: 131 - Resolution: 320 x 320 pixels
    DPI: 131 - Resolution: 400 x 240 pixels
    DPI: 131 - Resolution: 440 x 240 pixels
  • Windows Mobile 6.1.4 Professional
    DPI: 96 - Resolution: 240 x 400 pixels
    DPI: 192 - Resolution 480 x 800 pixels

Take that Webkit!

-Rob

See you in Barcelona for Tech Ed EMEA Dev

Tech Ed EMEA

Looking forward to seeing lots of familiar faces and meeting new ones starting December 10th at Tech Ed EMEA!  While I ran the Windows Mobile track for Tech Ed North America last June in Orlando, this time around I'll just be delivering a couple of presentations and spending most of my time helping empower delegates to create incredible mobile applications.  I'll be delivering the following breakout sessions:

 
MBL301 What's New in the Windows Mobile Line of Business Solution Accelerator 2008 November 10 16:00 - 17:15 Room 121
This session walks through the new features that we have added to the Windows Mobile Line of Business Accelerator 2008; features such as adapting your application to any device or screen size with a single binary, sync services, store and forward, and advanced data access objects with Microsoft .NET CF 3.5.
 
MBL310 Mobilize your Enterprise and Achieve Global Scalability with Windows Mobile and SQL Server Compact November 11 15:15 - 16:30 Room 121
With the world's largest organizations rolling out tens of thousands of Windows Mobile devices to empower their respective workforces, the ability to create mobile line-of-business solutions that can support large user populations is critical. Based on his third book on Windows Mobile development, Rob Tiffany shows you how to take the Microsoft SQL Server data you use to run your organization and make it available to all your mobile employees. Utilizing the performance, scale-out, and filtering capabilities of Merge Replication Republishing, Rob shows you how to build an n-tier mobile synchronization architecture designed to scale to hundreds of thousands of devices. Take the guesswork out of mobilizing your enterprise by tapping into the experience of one of the world's foremost authorities on Windows Mobile infrastructure and development.
 

See you there!

- Rob

 

New Resco MobileForms Release for NETCF

Just in case all you mobile developers didn't hear, Resco has released Volume 3 of their MobileForms Toolkit 2008.

Resco MobileForms Toolkit contains:

  • Resco CustomKeyboard for .NET – flexible control supporting custom keyboard layouts
  • Resco SmartGrid for .NET - powerful grid control with built-in auto edit capabilities
  • Resco AdvancedList for .NET - professional list control suitable for small displays of mobile devices
  • Resco AdvancedTree for .NET - featured tree control excellent for displaying tree-organized data
  • Resco DetailView for .NET - elegant and quick way of creating user input forms
  • Resco CompactChart for .NET - charting control supporting 5 chart types
  • Resco OutlookShortcutBar for .NET - popular shortcut control, common to all modern applications
  • Resco OutlookWeekCalendar for .NET - day/Week appointment scheduling control
  • Resco OutlookMonthCalendar for .NET - month/Year scheduling control
  • Resco OutlookDateTimePicker for .NET - modern version of common control providing advanced styles
  • Resco InkBox for .NET - ink control suitable for quick notes or signatures
  • Resco ImageBox for .NET CF - versatile image control supporting various graphic formats
  • Resco ImageButton for .NET CF - adjustable, modifiable and skinnable button
  • Resco Audio for .NET CF - powerful library for playing and recording audio
  • Resco Zip for .NET - industry standard compression library

For more information about Resco MobileForms Toolkit, visit http://www.resco.net/developer/mobileformstoolkit/default.aspx.

Additionally, they'll be at Tech Ed EMEA in Barcelona exhibiting at booth E12 so please check them out to see if their controls meet your mobile development needs.

-Rob

Announcing Sync Framework v2 CTP1

I just wanted to give you a heads-up about the availability of Sync Framework v2 CTP1 .  Sync Framework 2.0 expands on the capabilities offered by Sync Framework 1.0:

  • Adds features that cater to new scenarios or scenarios that were difficult to support.
  • Reduces the amount of work required to develop providers.
  • Supports more data sources with new built-in providers.

The major new features included in this initial CTP are:

  • Simple Providers
    • Reduces the amount of work required to develop providers, especially when the data source has very few synchronization-related capabilities, such as change-tracking.
    • The goal is to enable a developer to write a provider without having to become a synchronization expert. The majority of the code that is required for a simple provider is limited to that responsible for interacting with the data source.
  • Change Unit Filtering
    • Different data sources can have different representations of the same data types, with some data sources offering a richer and more complete representation than others. This is especially true when you compare data type representations on a PC and on a device; the device will often support only a subset of the data supported by the PC.
    • Sync Framework caters to scenarios in which a mixture of data sources is being synchronized, each with a different representation of the data type. Filtering support has been added to enable a provider to specify that the replica it serves is only able to store a subset of the data. The synchronization metadata and synchronization process have both been enhanced to handle this filtering efficiently.
  • Filter negotiation
    • When a destination data source is only storing a subset of data, then it is more efficient if the source provider uses a filter to enumerate only the data that can be stored by the destination.
    • Filter negotiation allows a destination provider to specify it would like one or more filters to be used by the source provider; the source provider can accept or reject a filter. If a source provider does not support the requested filters then the destination provider can choose to receive all the data and do the filtering itself.
    • Sync Framework is responsible for calling the providers appropriately to negotiate filter usage.

For more details please visit the Microsoft download center at:

http://www.microsoft.com/downloads/details.aspx?FamilyId=109DB36E-CDD0-4514-9FB5-B77D9CEA37F6&displaylang=en

Happy Synching!

-Rob

Chapter 1 of my new Book is Ready!

Mobile Data Synchronization with Microsoft SQL Server 2005 and SQL Server Compact > Second Edition

Achieving Global Scalability via Merge Replication Republishing

Download and review the PDF from my Windows Live SkyDrive @

http://cid-8b9c82da88af61fc.skydrive.live.com/self.aspx/Sync/Ch%201.pdf

ContosoSM

The new book shows you how to scale out your Merge Replication Architecture with Republishing.  It's chock full of new insight to show you how to get the most performance and scalability out of your system.  It also shows you how to make replication Subscriptions available to the Internet via ISA Server 2006 or System Center Mobile Device Manager.

Check it out and let me know what you think.

Best Regards,

Rob

Listen to Rob's Windows Mobile Interview on .NET Rocks!

 

I was recently interviewed by Carl Franklin and Richard Campbell who run one of the Internet's most popular developer sites, .NET Rocks!  You can catch the interview at http://www.dotnetrocks.com/default.aspx?showNum=384 where you can either listen to it live via the website, or download it to your favorite device to listen later.

I cover the current state of Windows Mobile + the entire ecosystem including OEMs, Mobile Operators, developers and who does what within Microsoft's Mobile Commications Business in Redmond and the Mobile Development Center in Hyderabad.  I take Carl and Richard on a deep dive of our latest mobile development technologies and techniques with the .NET Compact Framework, SQL Server Compact, and WCF Store and Forward just to name a few.  I also cover all the features of System Center Mobile Device Manager including OTA software distribution, Group Policies, Mobile VPN security and Domain join.

Download it and give it a listen

- Rob

 

Old School Windows Mobile :: Getting Started with Java on PDAs

Below is an article I wrote back in 2002 that described how to build Personal Java apps on the iPAQ during the age of Pocket PC 2000, Embedded VB and C++: 

PDAs are becoming a permanent fixture in the everyday lives of consumers and business people. There's no question that we have Palm to thank for bringing us a small, pen-based, easy-to-use organizer to help keep our busy lives on track.

At the same time, Microsoft has been trying to hit one out of the park for years with its Windows CE operating system running on a variety of handheld devices. As with everything else at Microsoft, it usually takes them three times to get something right, and the Pocket PC is no exception.

Based on Windows CE 3.0, the Pocket PC looks and works much like its Palm rival. However, the Pocket PC is different due to its use of more powerful hardware, more memory, and a full-blown, multithreaded operating system - it's more like a small computer than an organizer.

The success of the Pocket PC in the marketplace is largely due to the unique styling and powerful processor found in the Compaq iPAQ. With all the other Pocket PC devices shaped like unimaginative rectangular boxes, the iPAQ has had an easy time gobbling up market share. That said, the Palm is still the market-share king and isn't sitting around on its laurels waiting to become another "Netscape-style" victim of Microsoft.

As evidenced by the dominance of Windows, having the most developers writing applications for a given platform does more for its success than superior technology. The existence of a variety of programming languages for a platform plays a large role when it comes to building the critical mass of applications needed to put that platform over the top. Development for the Palm is currently being done with languages such as C/C++, CASL, NS Basic, J2ME, and AppForge (Visual Basic). Until recently, the Pocket PC development languages included eMbedded Visual Basic, NS Basic, and eMbedded Visual C++.

The Palm has clearly had the upper hand in the language department, even though its operating system lags behind the Pocket PC in features. This is quite a paradox for the Pocket PC camp, which seems to have superior technology on its side. Even the two BASIC tools for the Pocket PC are actually based on VBScript, with its lack of true data types and horrible error handling. So, the only way to take advantage of everything Windows CE 3.0 has to offer is to use an eMbedded Visual C++ tool, which most developers find intimidating at best.

Last summer, the Pocket PC gained a powerful and easy-touse language that enabled developers take full advantage of the Windows CE operating system. Sure to make Microsoft executives cringe, Java has finally arrived for the iPAQ! Insignia Solutions (http://www.insignia.com/) released its Jeode Embedded Virtual Machine for the Intel StrongARM processor.

The Jeode EVM is a Sun Authorized Virtual Machine that is certified and fully compliant with Sun's PersonalJava 1.2 and Embedded Java 1.0.3 specifications. It can run Java applets and applications, use a dynamic compiler to run Java apps up to six times faster than a normal JVM interpreter, and provide a preemptible, concurrent garbage collector for superior memory management. Most developers don't know much about Sun's PersonalJava and usually think about MIDP when talk of Java development for a handheld device comes up.

PersonalJava, as opposed to MIDP, wouldn't fit very well on a Palm (for example), nor could all of its classes be utilized, since the Palm OS doesn't provide all the underlying services required.

Since the iPAQ doesn't skimp on memory - 32MB is now the minimum - you don't have to compromise on your Java. PersonalJava is roughly equivalent to JDK 1.1.8 with a dash of JDK 1.2 classes and APIs thrown in for good measure. The Jeode EVM requires only 3-4.5MBs of space, depending on your need for the internationalization classes. This means that the Java Native Interface plus all of the following classes are available to you:

  • java.io: System input and output through data streams, serialization, and the file system
  • java.util: Collection classes, event model, date and time facilities, internationalization, and miscellaneous utility classes
  • java.util.jar: Classes for reading and writing the JAR (Java ARchive) file format
  • java.util.zip: Classes for reading and writing the standard Zip and GZip file formats
  • java.lang: Core Java API classes

    Core Java API Classes

  • java.lang.reflect: Classes and interfaces for obtaining reflective information about classes and objects
  • java.net: Classes for implementing networking applications
  • java.math: Classes for performing arbitrary-precision integer arithmetic (BigInteger) and arbitrary-precision decimal arithmetic (BigDecimal)
  • java.text: Classes and interfaces for handling text, dates, numbers, and messages
  • java.rmi: Classes that allow Java to make remote procedure calls
  • java.rmi.dgc: Classes and interface for RMI distributed garbage collection
  • java.rmi.registry: A class and two interfaces for the RMI registry
  • java.rmi.server: Classes and interfaces for supporting the server side of RMI
  • java.security: Classes and interfaces for the security framework
  • java.security.acl: Interface to access control list data structures
  • java.security.cert: Classes and interfaces for parsing and managing certificates
  • java.security.interfaces: Interfaces for generating RSA and DSA keys
  • java.security.spec: Classes and interfaces for key specifications and algorithm parameter specifications
  • java.sql: An API for accessing and processing data found in databases
  • java.beans: Classes that support the creation and usage of embeddable, reusable software components
  • java.applet: Classes necessary to create an applet and the classes an applet uses to communicate with its applet context
  • java.awt: Classes for creating user interfaces and for painting graphics and images
  • java.awt.datatransfer: Interfaces and classes for transferring data between and within applications
  • java.awt.event: Interfaces and classes for dealing with different types of events fired by AWT components
  • java.awt.image: Classes for creating and modifying images

    As you can see by all the packages, classes, and APIs supported in PersonalJava, you have a handheld programming language that’s more feature-rich than eMbedded Visual Basic, AppForge, NS Basic, or MIDP. Only eMbedded Visual C++ rivals PersonalJava in power, but it can’t compare when it comes to developer productivity. In addition, the Jeode EVM supports the creation of console applications, and a Timer class is provided for use in animations, scheduling jobs, or any situation in which you need to execute code at set intervals.

    Let’s cover what PersonalJava can’t do. Generally, anything that’s dependent on Java 2 is off-limits, with the exception of the handful of JDK 1.2 classes found in PersonalJava. Alas, Swing is officially unsupported in this environment.

    There is a workaround to make JFC 1.1.1 work with PersonalJava that requires you to change a line of code in one of the classes that make up swingall.jar. I’ve made this change myself and it’s a good news, bad news situation. On the one hand, you get to use great-looking, Swing user interface elements on your iPAQ. The downside is the deployment of a 2MB swingall.jar file, slow program loading times, and extremely poor performance.

    In my opinion, you should stick with AWT and other GUI widgets that are based on JDK 1.1. You may have to do some digging to find things like AWT-based grids and tab controls, but they’re out there. My advice is to look in your old copies of “pre-Swing” JBuilder and VisualCafé to find lots of GUI JavaBeans based on AWT.

    Building Applications
    So what kind of cool applications can you build on your iPAQ with this technology?

     

  • A single-tier application that uses JDBC to store and manipulate data on a local, pure-Java database such as Cloudscape or PointBase
  • A wireless two-tier client that uses JDBC to communicate directly with enterprise databases such as Oracle and SQL Server
  • A wireless n-tier client that uses RMI to make remote procedure calls to Java objects on a middle-tier server
  • A mobile, wireless RMI server that allows other Java clients to invoke its objects
  • A chat/instant messenger client or server using Socket and URL classes
  • A wireless telemetry client that remotely monitors vital corporate assets from anywhere
  • A remote data-entry application to be used by personnel who work in the field.
  • Miniature, mobile versions of just about any desktop or server Java application you’ve ever built.

    I think you get the gist of where I’m going here. The best recommendation I can make is to get your hands on a wireless Ethernet (802.11b) or a CDPD (mobile Internet) card so you can start building the kind of distributed wireless applications that will take you to the next level in your career as a developer (you probably never thought that going backwards to Java 1.1 would help advance your career).

    For complete information and the APIs related to PersonalJava, go to the PersonalJava application environment Web site at http://java.sun.com/products/personaljava.

    Getting Jeode
    Now that you know what PersonalJava and the Jeode EVM are capable of, it's time to go get it. The Jeode EVM is available for purchase on the Handango Web site at http://www.handango.com/PlatformProductDetail.jsp?siteId=1&platformId=2&productType=2&catalog=0&sectionId=0&productId=17215for $19.99. The software is downloadable from the Web site after you go through the shopping cart and checkout routine.

    Once the software is downloaded, load it onto your Pocket PC. To begin the installation, be sure the iPAQ is in its cradle and connected to your PC via ActiveSync. Double-click on the "JeodeForArmPocketPC" executable to start the InstallShield Wizard. When asked to install Jeode in the default folder, click Yes. The installation shouldn't take more than a minute.

    To verify the installation and to be sure the EVM is working properly, complete the following steps: from the Start menu on your iPAQ, navigate to Programs|Jeode|EVM to bring up the EVMConsole (see Figure 1).


    Figure  1:

    The EVMConsole is equivalent to the DOS/Command Prompt you have in Windows. From here you can launch both console and AWT Java applications. There are a number of command line options that you can pass to the EVM when using the EVMConsole:

     

  • -?, -h, or -help: Displays Jeode EVM help.
  • -cp <pathnames> or - classpath <pathnames>: Here you specify the path(s) used for loading classes. Semicolons separate multiple pathnames that point to JAR files. If you need to launch a Java application that resides in a JAR file called "ipaq" that sits in the "windows" directory with a main class called "frame1", you would type in "-cp \windows\ipaq.jar frame1". To take this a step further, if your application needs classes found in a third-party JAR file, you might type in "-cp \windows\lib\jcbwt363.jar;\windows\ipaq.jar frame1". If you put your application in a package, you would type in "-cp \windows\ipaq.jar mypackage.frame1". That said, application classes that don't reside in a JAR file can be executed directly without the use of "-cp".
  • -D <propertyName> = <value>: This supplies the value for either a Jeode EVM or Java system property. To keep the console open after an application has been executed, use the command "-Djeode.evm.console.local.keep=TRUE". If you have a console application that sends more than one screen of data to the console, use the command "-Djeode.evm.console.local.paging=TRUE".
  • -v or -verbose: This causes messages to be displayed by the EVMConsole when a class file or dynamic library is successfully loaded or when a garbage-collection cycle is performed.
  • -version: Displays the EVM and class library versions.
  • -Xnowinceconsole: This option disables the EVMConsole if you don't want it to remain visible while running graphical applications.

    You can further test your installation by trying out all the test applications found in the Examples and AWT folders.

    I think I've done enough talking about what can be done with Java on the iPAQ, so let's put theory into practice and build some simple applications. We'll be building both a console and a GUI app that uses AWT. I'll be building Java applications that are Java 1.1-compliant, so if you're using a current IDE based on Java 2, you'll need to utilize its JDK switching feature to compile against JDK 1.1. In some cases I'll package the Java apps in JAR files - in this case, either use your IDE's JAR wizard or JAR your classes together at the command line.

    Console App
    The console application we develop will demonstrate multithreading and reside in a package called "basicconsole" and consist of two classes. The code for the class called "counter" is shown in Listing 1.

    This class is the worker thread that simply counts upward from one number to another based on the integers that are passed into it. It sends those numbers to the console. The main class is called "app" (see Listing 2).

    When this class executes, it creates two threads, passes them the number ranges, assigns thread names, then starts them.

    After successfully compiling and testing these classes on your desktop computer, you need to JAR them up in a file called "BasicConsole.jar". The next step copies this JAR file to your iPAQ.

    With an open ActiveSync connection, click the ActiveSync Explore icon to view the file structure on your iPAQ. I suggest you copy your JAR file to the "My Pocket PC" folder so you won't have to type in any path arguments to launch your application (see Figure 2).


    Figure  2:

    To try out this console application on your iPAQ, bring up the Jeode console and type in "-cp BasicConsole.jar basicconsole.app", the result of which is shown in Figure 3.


    Figure  3:

    Of course, there's not much demand for console apps anymore, so let's build that AWT application. Keep in mind that when using your latest and greatest Java IDE, it may insert all kinds of Swing references that you'll have to delete to create an AWT application that's compliant with JDK 1.1.

    AWT App
    The AWT application we build will also demonstrate multithreading, reside in a package called "basicawt", and consist of two classes. The code for the main class, called "app," is shown in Listing 3. (Note: It's rather obvious that JBuilder has been used to generate this code.)

    The second class is the actual Frame that will display our GUI elements. This class is called "frame1" (see Listing 4).

    The Frame loads and displays two buttons and two text boxes. Clicking on either of the buttons will spawn a thread that starts counting from one to 200. This counting will go by almost instantaneously on your desktop but will take a little more time to execute on your iPAQ.

    After compiling and testing this app on your computer, JAR it up into a file called "basicawt.jar", then copy it to the same "My Pocket PC" directory that you copied your console application to. To try out this AWT application on your iPAQ, bring up the Jeode console and type in "-cp basicawt.jar basicawt.app". Figure 4 shows what this application should look like.


    Figure  4:

    (Note: Clicking on either of the buttons will trigger the counting race that's displayed in the corresponding text boxes.)

    Keep in mind that this is just the tip of the iceberg when working with AWT. You can display images, check boxes, panels, combo boxes, labels, scrollbars, menus, and much more. That being said, if the AWT was so cool, why was it replaced by Swing? I can't argue there, but I do have a suggestion. Sitraka Software (formerly KL Group) allows you to freely download their pre-Swing GUI components from www.sitraka.com/software/jclass. These JavaBeans make a great replacement for AWT and even rival Swing with components that include tree views, tabs, multicolumn list boxes (grids), progress meters, sliders, spinners, and windows splitters, to name a few. You can easily put together a pretty slick GUI (see Figure 5).


    Figure  5:

    Now that you know what can be done with Java on the iPAQ, let's wrap up with one more note on the deployment of your applications. You can imagine that the average user won't be interested in launching his or her Java apps by typing commands in the Jeode console. Luckily, there's a better way through the use of shortcuts.

    Start out by creating a text file on your desktop with a descriptive name like "BasicAWT.txt". Now change the "txt" extension to "lnk" to turn it into a shortcut. Open this shortcut in Notepad and type in text similar to what you typed in the Jeode console. To launch your BasicAWT application, the text on the first line of your "lnk" file will look like "1#\windows\evm.exe -cp basicawt.jarbasicawt.app". All you have to do now is save and copy this file to your iPAQ in the \Windows\Start Menu directory. From now on, you'll see the Jeode icon along with "BasicAWT" listed on the menu that you pull up from the Start button.

    Congratulations! You've gone from learning about PersonalJava, to installing the Jeode VM and building and deploying your own Java apps. I hope you've enjoyed this glimpse into the world of Java on the iPAQ. Good luck in your development efforts.

    Author Bio
    Rob Tiffany is vice president of technology for True Quote (truequote.com), an online energy trading company. He has published numerous articles for a variety of magazines on topics ranging from Java servlets to wireless technologies. Rob is the author of Pocket PC Database Development with eMbedded Visual Basic from Apress.

  • Sync Services for Windows Mobile Devices has Shipped!

    Hello all,

        Just wanted to pass along that the device bits for Sync Services for ADO.NET have been released to the web!  Now we have a supported version of Sync Services for Windows Mobile 5.0 and 6.x.  You can find the download at http://www.microsoft.com/downloads/details.aspx?familyid=75FEF59F-1B5E-49BC-A21A-9EF4F34DE6FC&displaylang=en.  Keep in mind that you’ll also need SQL Server Compact 3.5 Service Pack 1 for Windows Mobile at http://www.microsoft.com/downloads/details.aspx?FamilyID=fce9abbf-f807-45d6-a457-ab5615001c8f&DisplayLang=en as well as Visual Studio 2008 SP1 which can be found at http://www.microsoft.com/downloads/details.aspx?FamilyID=fbee1648-7106-44a7-9649-6d9f6d58056e&DisplayLang=en.  This sync technology is a developer-focused companion to Merge Replication that can take advantage of the more efficient change-tracking engine in SQL Server 2008.  Since it’s based on a higher-level ADO.NET Provider model, you can also get it to sync your device with other databases like Oracle and DB2.  This technology should break down some barriers for us so we can deploy Windows Mobile and SQL Server Compact in organizations that don’t support SQL Server.

     

    Best Regards,

    Rob

    The Blackjack II is Ready to be Managed by System Center Mobile Device Manager

    Run, don't walk out to http://www.samsung.com/us/i617/windowsupgrade and upgrade you Samsung Blackjack II to Windows Mobile 6.1.  Make an already great phone even better with threaded text messaging, a translucent, sliding panel home screen, better battery life, more efficient OTA Exchange ActiveSync, Office Mobile 6.1 with support for Office 2007 file formats, and Internet Connection Sharing.

    But wait, there's more...

    Windows Mobile 6.1 was built to set it apart from all other Smartphone/PDA competitors by taking its Enterprise capabilities to the next level.  Your Blackjack II will now be able to join your company's Windows Domain and access corporate line of business applications from the Internet via an optimized Mobile VPN.  System Center Mobile Device Manager will be able to push software to your device, encrypt your phone and enforce corporate policies.

    If that's not enough, AT&T has included mission-critical games including Solitaire, Brain Challenge, Bubble Breaker, The Sims Bowling, Midnight Pool, and Ms. Pac-Man.

    With Windows Mobile 6.1 running on your Blackjack II and System Center Mobile Device Manager running in your data center, you'll have the option of Blacklisting those games to keep your mobile employees focused on business if you need to.  It's a no-brainer

    - Rob

    Sync Framework v1 and Sync Services for ADO.NET v2 are now Generally Available!

    As of today you can download the Sync Framework SDK in 11 languages including Chinese (Hong Kong), Chinese (Simplified), English, German, French, Italian, Japanese, Korean, Portuguese, Russian and Spanish for AMD64, IA64 and x86 processors from the Sync Framework Download Center

    What is Sync Framework?

    Imagine being able to build a solution that seamlessly exchanges contact information between Outlook, a database contact management application, your mobile device and your service based contact management system.  Or how about a mobile device that connects with other devices to exchange pictures and videos.  How about being able to take data from any of your enterprise databases, file or enterprise systems and make it available offline for users to modify and sync back up to the enterprise.  All of these capabilities are possible with the Sync Framework and best of all, it is free on Windows platforms and licensable on non-Windows platforms! 

    Just a few examples of companies that are already using the Sync Framework include:

    • SmugMug who has added support for the Sync Framework to enable developers to build rich offline applications that can allow photos to be easily shared on friends and families local computers. 
    • InterScape have embedded Sync Framework into their Customer Relationship & Management (CRM) solution to enable sales people to synchronize enterprise files and data for offline access. 
    • Fujitsu Siemens will embed the SyncToy file synchronization solution (powered by Sync Framework) on their STORAGEBIRD external drives to enable seamless file synchronization between devices and computers. 

    Sync Framework Highlights 

    Some of the highlights of this release include:

    • Sync support to new and existing applications, services, and devices
    • Collaboration and offline capabilities for any application
    • Roam and share information from any data store, over any protocol, and over any network configuration
    • Leverage sync capabilities exposed in Microsoft technologies to create sync ecosystems
    • Extend the architecture to support custom data types including files

    Sync Services for ADO.NET v2 Highlights 

    Sync Services for ADO.NET is a Microsoft Sync Framework powered solution for synchronizing ADO.NET enabled databases in offline and collaboration scenarios. Sync Services for ADO.NET allows developers who are familiar with the concepts of ADO.NET to apply that knowledge to data synchronization through a very similar set of APIs to that of ADO.NET. Sync Services for ADO.NET provides the flexibility of a programming model like offline datasets and a richer synchronization feature set like that found in Merge replication. Sync Services for ADO.NET also supports synchronization over services, such as Windows Communication Foundation (WCF).

    Some of the Sync Services for ADO.NET highlights include:

    • Offline Database Synchronization: With Sync Services for ADO.NET you are able to build a solution where multiple remote clients connect and synchronize to a central ADO.NET database in a Hub-and-Spoke configuration. This enables occasionally connected devices to periodically connect and synchronize changes with a central ADO.NET database server. This topology is a common solution for remote workers such as sales reps or field service workers.
    • Collaboration Between Databases: Sync Services for ADO.NET also includes Peer-to-Peer capabilities. Through a custom Peer provider, collaboration between two or more SQL Server databases can occur (support is not available for SQL Server Compact). Unlike a Hub-and-Spoke architecture, this provider enables a SQL Server database to communicate and exchange information with any other SQL Server database. This type of scenario is useful in group scenarios where users (such as auditors) need to update information and then collaborate those changes with other group members.
    • SQL Server 2008 Integrated Change Tracking: If you are using SQL Server 2008, we recommend that you use the SQL Server change tracking feature. This feature addresses many of the issues of custom-tracking systems and provides a straightforward way to track changes. Change tracking is also supported by the Local Database Cache in Visual Studio 2008 SP1. Developers can now specify that the Configure Data Synchronization wizard should enable SQL Server change tracking on the server and generate the commands necessary to select and apply changes to the server database. Unlike custom change tracking systems, SQL Server change tracking does not require any schema changes in the server database. For more information, see the Visual Studio 2008 documentation.

    Sync Framework Pricing

    Sync Framework will be licensed free on Windows platforms.  In addition, we are also licensing the specifications and a source code porting kit to developers who want to implement Microsoft Sync Framework solutions on non-Windows platforms. 

    To learn more, visit http://msdn.microsoft.com/sync

    - Rob

    Reflecting on Bill Gates Departure from Microsoft

    Though this term has been overused, we're truly witnessing the end of an era as Bill Gates shifts his full-time focus to his foundation.  When I think back to the one thing that Bill and Microsoft brought to this world that made the most impact on my life, it has to be the power of Visual Basic running on top of Windows 3.1.  Anyone who read the 
    "Getting Started" booklet inside the VB3 box couldn't help but notice it was signed "Bill Gates, Microsoft CEO and Visual Basic Programmer."

    Earlier this decade, Gary Cornell, Dan Appleman, Bill Vaughn's daughter and the folks at Apress asked me and other prominent VB guys from the '90s to write an essay that marked the 10 year anniversary of Visual Basic ("Ruby").  I just dug it up and it's definitely a walk down memory lane for me.  I thought I would republish it on my blog as it clearly shows how Bill Gates influenced the career path I would take.  I hope you enjoy it.

    vb2pro    vb3stdpropellerhead    vb3std

    Rob Tiffany: "VB Under the Sea"

    Back in the early '90s, I used to drive submarines for the U.S. Navy. During the Gulf War, I helped the Navy Seals get to where they needed to go on a special ops sub that came complete with every kind of James Bond gadget and weapon you can imagine. Back then I carried a 386-16MHz black and white laptop powered by DOS 4. The manufacturer of the laptop was a company called Altima, just like the car, go figure. I had done a little GWBASIC and dBASE III programming here and there, but my primary computing focus was to run WordPerfect 5.0 and a financial package called WealthBuilder.

    After the Gulf War ended, I was lucky enough to get orders to a Trident submarine called the Alaska. I arrived in the Seattle area just in the nick of time to witness the Grunge Rock phenomenon that was transforming the city. It was clear to me though, that one particular software company on the "Eastside" of Lake Washington was having an equally profound impact on the Puget Sound region. Meanwhile, life on the Alaska was much less eventful. It was an ordinary job. We would just drive around the ocean waiting for the message from the President to launch our nuclear missiles.

    Onboard the submarine we had all kinds of 386 PCs running Windows 3.x. As a Yeoman, I was either driving the sub or handling personnel issues. My boss Joe and I were really "into" computers and thought it would be a move in the right direction to shift our personnel recordkeeping from the file cabinets to the computer. Borland had just come out with a Windows version of Paradox, so we bought it and started teaching ourselves how to build databases and work with SQL. We wanted to build our own standalone application but were intimidated by the Object PAL language provided by Paradox.

    On one fateful day in 1993, I was kicking the tires at a computer store in Kirkland when I came upon a big white box labeled "Microsoft Visual Basic Professional Edition 3.0." It claimed to work seamlessly with Microsoft Access 1.1 and would allow me to create my own standalone executables. In what turned out to be the most important decision I've ever made in my computing career, I bought that copy of VB and proceeded to teach myself how to use it. Lucky for me, software still came with books back then. Creating Windows applications in VB was a creative outlet for me because I found it to be similar to painting. I still get kidded for admitting this by my Computer Science and Mathematics colleagues.

    Life on a submarine revolves around an 18-hour day. You're "on watch" for six hours and then off for twelve. This makes for some unusual sleep patterns. While most of my shipmates watched movies, played video games, or slept after getting off watch, I spent my time finishing my college degree and reading every VB book I could get my hands on. I was on a steady diet of books from Karen Watterson, Roger Jennings, and Dan Appleman. At the same time, a lieutenant on board the sub got me hooked on OS/2. Writing 32-bit REXX programs was cool, but getting VB3 to run in a crash-protected DOS/Windows virtual machine was something to write home about. Before I got out of the Navy, I moved on to Windows NT 3.1 to build my VB3 apps using the WOW (Windows on Windows) subsystem.

    When I got out of the Navy, I returned to Houston and landed my first job as a consultant. I can't say that I was much of a programming heavyweight at the time. I'm ashamed to say that the data control was my best friend. Luckily, I had plenty of time to get my coding skills up to par while sitting on �the bench.� It seems that the Powersoft guys had sold all the large energy companies on the virtues of PowerBuilder. Apparently, VB arrived late to the RAD Windows development party and was having trouble getting a foothold in many of the large companies due to its lack of "enterprise" features. (Sound familiar?) After four months with no billable VB hours under my belt, I bought a copy of the Seattle Times to see if the market for VB developers was any better there. Boy, was it ever! The classified section had pages and pages of jobs for VB developers. Being the impulsive guy that I am, my wife and I packed our bags and moved to Seattle where we settled in a neighborhood called Ballard that seemed to be comprised completely of Scandinavian AARP members. The local comedy show, "Almost Live," got lots of laughs at the expense of these poor people from Ballard who drove their cars around with their turn signals perpetually on.

    I took a job with a pioneering wireless company in Bellevue called Real Time Data. We built a system in VB3 that remotely monitored vending machines over primitive wireless networks. We did more than our fair share to push along the state of the art in wireless packet data networks. It was here that I learned humility and was transformed into a true software engineer by a group of guys much older and wiser than myself. Lauren Vanderhoof, Steve Horste, Phil Silvia, and Ray Angeledes taught me about state machines, user-defined types, bit twiddling, custom wire protocols, and serial programming. Thanks, guys. Together, we pushed VB3, Windows 3.1, and Access 2.0 to their limits as a round-the-clock telemetry system.

    A few years later I spent some time at Microsoft as an Orange badge. It was there that I converted my VB skills to the Web; first with OLEISAPI and then with Denali (Active Server Pages). Over the winter of '96-'97, I had the pleasure of building one of the first internal ASP/SQL Server applications for Microsoft. OK, it was just a reporting tool, but it seemed pretty cool at the time. I was living proof that Microsoft would succeed in turning millions of VB developers into Web developers with ASP, VBScript, and ADO. Active Server Pages has been a big win for Microsoft and VB developers everywhere. Its success has even brought about the rise of copycat technologies like Java Server Pages and PHP.

    Four years and several dot-coms later, we stand poised to usher in the next phase of the Internet thanks to the .Net Framework and Web Services. VB developers have finally been given everything they've asked for over the last ten years. Many of these developers are balking at moving to VB.Net, perhaps out of the fear of the unknown. My advice to them is to suck it up and get on board. The recent economic downturn has sparked a shakeout in the computer industry. Single language developers who made a lot of money in the '90s due to an "out of whack" supply and demand situation may not survive. Developers who strive to learn all they can about all technologies will be the ones left standing. Remember, Bill Gates and Andy Grove have been successful due to a paranoia that tells them that they have to work twice as hard as the other guy or risk being a relic of history.

    Will VB.Net do the same thing for Internet development that "Thunder" did for Windows development? Only time will tell. But I've got my fingers crossed.

    Rob Tiffany
    July 23, 2001
    Houston, Texas


    Rob Tiffany has been developing applications for DOS, OS/2, and Windows since the late 1980s. He currently serves as the V.P. of Technology for True Quote, maker of one of the world's largest electronic energy trading systems. A startup junkie by nature, he can usually be found making a go of it with a promising business plan. Rob is the author of Pocket PC Database Development with eMbedded Visual Basic.

    Building Offline Enabled Applications

    At Tech Ed Developers in Orlando this year, I had the pleasure of joining Ginny Caughey, Steve Lasker, Liam Cavanagh, and Rob Relyea for a Tech Ed Online discussion on building offline enabled applications.

    Tech Ed Online

    In an online world, why are we building offline apps?  Because networks are only occasionally available, or occasionally not available.  However, building offline apps is a bit more complicated.  Listen to our panel of speakers that works on enabling offline apps from the storage, sync, programming model, and UI stack.

    View the low bandwidth version:
    http://microsofttech.fr.edgesuite.net/TechEdOnline/Videos/08_NA_Dev_TEOPanel_14_low.wmv
    View the high bandwidth version:
    http://microsofttech.fr.edgesuite.net/TechEdOnline/Videos/08_NA_Dev_TEOPanel_14_high.wmv
    View the MP4 version:
    http://microsofttech.fr.edgesuite.net/TechEdOnline/Videos/08_NA_Dev_TEOPanel_14_high.mp4
    - Rob
    Tech Ed North America Developers 2008 Wrap Up

    clip_image001

    Last week’s developer event just marked three milestones:

    1. Bill Gates’ final Keynote

    2. MEDC integration into Tech Ed

    3. The separation of Tech Ed North America into two weeks for Developers and IT Pros

    At this developer event we reached out to over 5,500 developers, customers and partners.

    clip_image002   clip_image002[4]

    We brought our “MEDC Dream Team” of Mobile MVP and Microsoft speakers and I’m happy to announce that we had the #1 session at the entire event!  Darren Shaffer scored an amazing 8.87 on his session covering “Microsoft SQL Server 2005 Compact Edition Ultimate Performance Tuning” to take the top spot.  As a track, we took the top spot for our Technical Learning Center Chalk Talks and we were within striking distance of the #1 position with our Hands-on Labs.

    clip_image002[6]   clip_image002[8]

    Top scoring speakers and sessions included:

    · Luis Cabrera-Cordon (8.33) :: Maximizing the Usability and Compatibility of Your Mobile Microsoft Visual C++ Application

    · Andy Wigley (7.89) :: Accessing RESTful Web Data Services in the Microsoft .NET Compact Framework: The Lightweight Alternative to SOAP

    · Dr. Neil Roodyn (8.00) :: Building Windows Mobile Applications That Work with Windows Vista Sync Center

    · Nickolas Landry (8.00) :: Windows Communication Foundation on Devices

    · Loke Uei Tan (7.89) :: Microsoft Silverlight UX for Mobile Devices

    · Douglas Boling (8.21) :: Peer-to-Peer Windows Mobile Software

    · Maarten Struys (8.00) :: Unit Testing for Devices: The Holy Grail, or Something to Use in Your Day-to-Day Work?

    · Daniel Moth (8.31) :: Sharing Assets between the Microsoft .NET Compact Framework and the Microsoft .NET Framework

    · Anoop Gupta (7.86) :: What's New in the Windows Mobile Line of Business Solution Accelerator 2008

    · Alex Feinman (7.80) :: Using Microsoft DirectDraw in Windows Mobile Applications

    · Jim Wilson (8.05) :: Mobilizing Your Web Applications with Microsoft Internet Explorer Mobile and AJAX

    · Reed Robison (8.00) :: Shorten Your Mobile Development Cycle

    · Liam Cavanagh (7.55) :: Taking Data Offline: Introduction to Microsoft Synchronization Services for ADO.NET

    · Rob Tiffany (8.50) :: Achieving Global Scalability with Mobile Merge Replication via Republishing

    · Reed Robison (8.24) :: Windows Mobile Application Deployment for Developers

    · Rabi Satter (8.18) :: Shells and Kiosk: Customizing Windows Mobile

    · Maarten Struys (8.58) :: Programming with the State and Notification Broker in Windows Mobile 6.0

    clip_image002[10]   clip_image002[12]

    We had an intimate dinner for 80+ customers, partners, speakers and staff at Shula’s Steakhouse which turned out to be a big hit.  Customers and partners got the royal treatment with hours of 1:1 time with Microsoft and Mobile MVP experts.  The steaks and wine weren’t bad either…

    clip_image002[14]   clip_image002[16]

    We had a device bar showing off 23 of the newest Windows Mobile 6.1 phones and ruggedized devices plus we had a surprise showing of the new HTC Touch Diamond.  We had demo stations where our expert staff could take developers on deep dives of Silverlight for Mobile, the Mobile Line of Business Accelerator 2008, and Visual Studio for Devices 2008.

    clip_image002[18]

    It’s been my great pleasure to run this event for MCB Developer Marketing.  As someone who’s attended and worked at all our mobile developer conferences going back to the first Mobility Conference with Bill Gates in New Orleans in 2003, I have a deep connection of our developer community and a vested interest in seeing Windows Mobile succeed.    On behalf of my track Co-chair Dr. Neil Roodyn, I’d like to thank the following people who worked hard and put in a lot of hours to make this event possible:

    Lax Madapaty, Loke Uei Tan, Tim McAfee, Jane Hemmen, Brian Lio, Lillian Eng, Dawn Charlson, Eric Nelson, Constanze Roman, Reed Robison, Amit Chopra, Michael Saffitz, Fernando Zandona, Leandro Olivestro, Raleigh Paenitz, Saki Tong, Hendry Effendy, Michelle Locuratolo, Jim Bresler, Ross Heise, and many others.

    Best Regards,

    Rob

    Tech Ed Developers 2008 is less than 2 Weeks Away!

    We're now in the home-stretch in our preparations for Tech Ed Developers in Orlando this June.  Since this was my year to run MEDC, I've been working on this event since last October when MCB decided to integrate our Mobile and Embedded Developers Conference into Tech Ed.  My goal has been to make this Tech Ed Developer event as much like the MEDC as possible.  Step one in that process has been to ensure that all our breakout sessions are being delivered by a "Dream Team" of Windows Mobile MVPs, Regional Directors and Microsoft Mobility Experts.  MEDC veterans should regonize the names on this all-star roster:

    • Andy Wigley
    • Dr.Neil Roodyn
    • Nickolas Landry
    • Rabi Satter
    • Loke Uei Tan
    • Doug Boling
    • Maarten Struys
    • Daniel Moth
    • Anoop Gupta
    • Darren Flatt
    • Luis Cabrera-Cordon
    • Dan Fergus
    • Mike Francis
    • Alex Feinman
    • Jim Wilson
    • Peter Foot
    • Paul Yao
    • Alex Yakhnin
    • Darren Shaffer
    • Rob Tiffany
    • Reed Robison
    • Mike Saffitz
    • Vijay Tandra Sistla
    • Ginny Caughey

    Nine of the speakers listed above are distinguished Windows Mobile authors so there's no question that we'll be delivering an avalanche of expertise to attendees at the event.  We just finished 2 weeks of dry run rehearsals and everyone is fine tuning their slide decks and demos.

    Jim Wilson has created just shy of a dozen hands-on-labs that will take you on deep-dives of our newest technologies at your own pace.  They really look incredible!

    At our giant Windows Mobile Pavilion, we'll have technology stations devoted to Visual Studio 2008 for Devices, Silverlight, the Windows Mobile Line of Business Acclerator 2008, and the Device Bar where you can see the latest and greatest devices in action!  I know you're dying to check out the new Windows Mobile 6.1 operating system.

    This will be Bill Gates' last keynote address before he moves on to devote all his energies to the Bill and Melinda Gates Foundation so you don't want to miss this big moment.  The last time we had Bill do a keynote for MEDC was at the Mandalay Bay in 2005 when we launched Windows Mobile 5.0.

    If you haven't already registered for this fusion of MEDC and Tech Ed, please do so right away!  Go visit the Tech Ed home page at http://www.microsoft.com/events/teched2008/developer/default.mspx.

    I look forward to seeing everyone in Orlando in a couple of weeks!

    Best Regards,

    Rob

     

    Woodinville Wine Country Passport 2008 Wrap-up

    My wife Cathy and I just attended our 3rd Passport weekend.  For those of you who don't live in the Puget Sound area or are not into wine, this is an annual event where you get to spend a weekend touring 30+ wineries.  Not only are you tasting wine but you're also getting to chat with the winemakers.  For many of the smaller boutique wineries, this is the only time of the year that they're open to the public.  My friend John Dietz fondly refers to this as the annual Woodinville Drink and Drive.

    We saw more limos and shuttle buses than ever this year so it's safe to say that the number of designated drivers is on the rise.  Some of these wineries are located in beautiful facilities while many others are located in warehouse and office park space.  We were sad to see that DeLille Cellars would not be participating this year.  You can't beat spending time in their beautiful hillside chateau with their giant fireplace and people serving you Filet Minion Crostinis while drinking D2 or Aix.

    I'm happy to say that my personal winners this year didn't come from major wineries.  Two wines stood out from the crowd and they came from wineries you may not have heard of before.  The first one that grabbed my palate was the 2005 Tempranillo from Kennedy Shah.  This wine can be found at Woodhouse Family Cellars and is produced in the Rattlesnake Hills American Viticultural Area (AVA) of the Columbia Valley appellation.  I give it a 91.

    The second wine that made its mark at this event was a 2004 Southern Rhone-style blend called Byzance from Brian Carter Cellars.  While the tasting room near the Hollywood Schoolhouse might be new, 2-time "Winemaker of the Year" award winner Brian Carter is no stranger to the business.  This blend of Grenache and Syrah comes from the Columbia Valley appellation and garners a 91 in my book this year.

    As warmer weather approaches, I'm looking forward to spending more time in Columbia Valley and Walla Walla.

    Rob

    More Posts Next page »

    Search

    Go

    This Blog

    Syndication

    Page view tracker