<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet type="text/xsl" href="http://msmvps.com/utility/FeedStylesheets/rss.xsl" media="screen"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:wfw="http://wellformedweb.org/CommentAPI/"><channel><title>/bill's House O Insomnia&lt;img src="http://www.williamgryan.com/images/originalcuckoo.jpg" alt="Bill Ryan" /&gt; : Compact Framework</title><link>http://msmvps.com/blogs/williamryan/archive/tags/Compact+Framework/default.aspx</link><description>Tags: Compact Framework</description><dc:language>en</dc:language><generator>CommunityServer 2008.5 SP2 (Build: 40407.4157)</generator><item><title>Chris Craft's 30 Days of .NET for Windows Mobile</title><link>http://msmvps.com/blogs/williamryan/archive/2008/06/11/chris-craft-s-30-days-of-net-for-windows-mobile.aspx</link><pubDate>Wed, 11 Jun 2008 15:01:00 GMT</pubDate><guid isPermaLink="false">d67277c4-116b-43f1-b688-e9ef184ea916:1634023</guid><dc:creator>William</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://msmvps.com/blogs/williamryan/rsscomments.aspx?PostID=1634023</wfw:commentRss><wfw:comment xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://msmvps.com/blogs/williamryan/commentapi.aspx?PostID=1634023</wfw:comment><comments>http://msmvps.com/blogs/williamryan/archive/2008/06/11/chris-craft-s-30-days-of-net-for-windows-mobile.aspx#comments</comments><description>&lt;p&gt;Chris sure is &lt;a href="http://www.cjcraft.com/blog/default.aspx"&gt;talking softly and carrying a big stick&lt;/a&gt;&amp;nbsp;.&amp;nbsp; The 30 days thing is a great concept and he&amp;#39;s doing a bang up job.&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://msmvps.com/aggbug.aspx?PostID=1634023" width="1" height="1"&gt;</description><category domain="http://msmvps.com/blogs/williamryan/archive/tags/Compact+Framework/default.aspx">Compact Framework</category><category domain="http://msmvps.com/blogs/williamryan/archive/tags/Windows+Mobile/default.aspx">Windows Mobile</category></item><item><title>Looking for some .NET Developers</title><link>http://msmvps.com/blogs/williamryan/archive/2008/06/06/looking-for-some-net-developers.aspx</link><pubDate>Sat, 07 Jun 2008 02:19:26 GMT</pubDate><guid isPermaLink="false">d67277c4-116b-43f1-b688-e9ef184ea916:1632527</guid><dc:creator>William</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://msmvps.com/blogs/williamryan/rsscomments.aspx?PostID=1632527</wfw:commentRss><wfw:comment xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://msmvps.com/blogs/williamryan/commentapi.aspx?PostID=1632527</wfw:comment><comments>http://msmvps.com/blogs/williamryan/archive/2008/06/06/looking-for-some-net-developers.aspx#comments</comments><description>&lt;p&gt;A client of mine located in the Aiken/Columbia South Carolina Area has asked me if I had any friends who are .NET Developers and looking for a job. They are looking for at least one Junior Developer, on Mid-Level Developer and several Senior developers.&amp;nbsp; I know these folks quite well and I can vouch for the following:&amp;nbsp; &lt;/p&gt; &lt;ul&gt; &lt;li&gt;They pay extremely well&lt;/li&gt; &lt;li&gt;Generous benefits package&lt;/li&gt; &lt;li&gt;There&amp;#39;s plenty of cool people on their staff&lt;/li&gt; &lt;li&gt;They are growing at an explosive rate so there&amp;#39;s plenty of room for upward mobility. There&amp;#39;s also a very strong focus on learning/teaching and career development.&lt;/li&gt; &lt;li&gt;They are an Agile/SCRUM shop&lt;/li&gt; &lt;li&gt;Currently developing with the following technologies:&lt;/li&gt; &lt;ul&gt; &lt;li&gt; Visual Studio Team System 2008 / .NET 3.5 Framework&lt;/li&gt; &lt;li&gt;Windows Communication Foundation&lt;/li&gt; &lt;li&gt;Windows Presentation Foundation&lt;/li&gt; &lt;li&gt;ASP.NET&lt;/li&gt; &lt;li&gt;LINQ&lt;/li&gt; &lt;li&gt;Silverlight&lt;/li&gt; &lt;li&gt;Windows Mobile 5/ Windows Mobile 6/ .NET Compact Framework&lt;/li&gt; &lt;li&gt;Sql Server 2005 / Sql Server 2008&lt;/li&gt; &lt;li&gt;Windows Installer for XML&lt;/li&gt; &lt;li&gt;Sandcastle&lt;/li&gt;&lt;/ul&gt;&lt;/ul&gt; &lt;p&gt;If you&amp;#39;re in the area and looking for a job... if you know someone who looking for a job.... or if you&amp;#39;re willing to move, please drop me a line using the Contact option on&amp;nbsp; my blog or emailing me directly at &lt;a href="mailto://WilliamRyan@gmail.com"&gt;WilliamRyan@gmail.com&lt;/a&gt; and I&amp;#39;ll put you in contact with them.&amp;nbsp; They are looking to hire folks immediately so I can probably get you an interview within a few days.&lt;/p&gt; &lt;p&gt;&lt;strong&gt;Junior Developer:&lt;/strong&gt;&lt;/p&gt; &lt;p&gt;Ideal candidate will be a recent college graduate with a Computer Science of MIS degree.&amp;nbsp; No experience is necessary for this position. The main soft-skill qualifications for this position are:&lt;/p&gt; &lt;ul&gt; &lt;li&gt;A true love for development&lt;/li&gt; &lt;li&gt;Strong desire to learn&lt;/li&gt; &lt;li&gt;A desire to stand out among one&amp;#39;s peers&lt;/li&gt;&lt;/ul&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt; The hard-skill qualifications include a good theoretical understanding of at least two of the following:&lt;/p&gt; &lt;ul&gt; &lt;li&gt;Object Oriented Design and Analysis&lt;/li&gt; &lt;li&gt;Relational Database theory&lt;/li&gt; &lt;li&gt;Design Patterns&lt;/li&gt; &lt;li&gt;Familiarity with at least two of the following:&amp;nbsp; C, C++, Java, C#, VB.NET&lt;/li&gt;&lt;/ul&gt; &lt;p&gt;This is essentially a dream job for recent college grads b/c the job is being offered &amp;quot;no experience required&amp;quot;.&amp;nbsp; Since they are a SCRUM/Agile shop, you&amp;#39;ll get to work extensively with their Senior and Mid level devs via Pair Programming.&amp;nbsp;&amp;nbsp; You&amp;#39;ll be able to pick&amp;nbsp; an area to specialize in which you will decide on for yourself. Additionally, you&amp;#39;ll be using some of the most sought after Microsoft technologies available.&amp;nbsp; Go to Monster.com or Dice.com and see for yourself how much demand there is for the above technologies and how much those jobs pay.&amp;nbsp; You&amp;#39;ll get to work with these on day 1 and essentially carve out a path for yourself using whichever technologies you like the best.&amp;nbsp; If you want to be a &amp;quot;UI&amp;quot; expert, that&amp;#39;s where you&amp;#39;ll be put. If you want to be a Web Services dev, again, that&amp;#39;s what you can focus on.&amp;nbsp; If you want to be an expert buildmaster who specializes in installers, that&amp;#39;s what you&amp;#39;ll get to do.&amp;nbsp; The company is looking for some excellent candidates and willing to offer a really fun and great paying job with plenty of training and career development available.&lt;/p&gt; &lt;p&gt;&lt;strong&gt;Mid-Level Developer:&lt;/strong&gt;&lt;/p&gt; &lt;p&gt;The ideal candidate will have a computer science or MIS degree and 1-3 years of development experience.&amp;nbsp; The ideal candidate will have two or more the following abilities:&lt;/p&gt; &lt;ul&gt; &lt;li&gt;Solid command of OOP/OOD using C++, C#, Java or VB.NET&lt;/li&gt; &lt;li&gt;Test Driven Design&lt;/li&gt; &lt;li&gt;Service Oriented Architecture&lt;/li&gt; &lt;li&gt;Familiarity with MySql, Sql Server (T-SQL), Oracle (PL/SQL)&lt;/li&gt; &lt;li&gt;Basic understanding of both Winforms and ASP.NET&lt;/li&gt; &lt;li&gt;Basic familiarity with Web Services, MSMQ, Enterprise Services/COM+, .NET Remoting, DCOM, J2EE, Java Beans&lt;/li&gt;&lt;/ul&gt; &lt;p&gt;Just like the Junior development positions, these ones will provide a great deal of flexibility to learn and specialize the area of your choice.&amp;nbsp; These are considered &amp;#39;fast track&amp;#39; positions to move into the Senior Developer or Architect roles&lt;/p&gt; &lt;p&gt;&lt;strong&gt;Senior Developer:&lt;/strong&gt;&lt;/p&gt; &lt;p&gt;The ideal candidate will be someone with at least 4 years experience.&amp;nbsp; This person will love challenges and love coming up with solutions to problems that other people run from.&amp;nbsp; They will be people that love figuring out how to do things that everyone else said can&amp;#39;t be done.&amp;nbsp; They will be the stereotypical Alpha-Geek, Someone that spends their spare time &lt;a href="http://newtechusa.com/csharp-dotnet-quiz.asp"&gt;answering quiz questions like these&lt;/a&gt;:&lt;/p&gt; &lt;ul&gt; &lt;li&gt;All of the requirements for the Mid-Level Developer as well as several of the following skills:&lt;/li&gt; &lt;ul&gt; &lt;li&gt;Proficiency with T-Sql or PL/SQL.&amp;nbsp; You should be able to write a 5 table join on your own. You should have written several stored procedures that were &amp;gt; 100 lines long.&lt;/li&gt; &lt;li&gt;Strong command of query tuning and ability to easily spot design flaws&lt;/li&gt; &lt;li&gt;Ability to design &amp;#39;real&amp;#39; objects.&amp;nbsp; &lt;/li&gt; &lt;ul&gt; &lt;li&gt;Someone who pays meticulous attention to the scope modifiers of their classes/functions/properties&lt;/li&gt; &lt;li&gt;Someone who understands the problems associated with coupling and strives to avoid it.&lt;/li&gt; &lt;li&gt;Someone who can write and use events in their classes without thinking twice about it.&lt;/li&gt; &lt;li&gt;Someone with a solid understanding of thread safety and thread synchronization&lt;/li&gt; &lt;li&gt;Someone who is comfortable using several different design patterns&lt;/li&gt; &lt;li&gt;Someone who is comfortable implementing several different interfaces in one object, using combinations of interface implementation and inheritance and someone who can use inheritance responsibly&lt;/li&gt;&lt;/ul&gt; &lt;li&gt;Keeps up with technology, reads computer books regularly, has favorite blogs in multiple disciplines and/or blogs themselves, attends or speaks at user&amp;#39;s groups, is active in one or more online forum or newsgroup&lt;/li&gt; &lt;li&gt;Someone who answers &amp;quot;Which is better, C# or VB.NET?&amp;quot; with &amp;quot;Either can be better depending on the circumstances but I&amp;#39;m comfortable writing in either of them&amp;quot; and then &amp;quot;But I&amp;#39;ve been learning F# lately and it&amp;#39;s really been growing on me&amp;quot;&lt;/li&gt; &lt;li&gt;Experience with .NET Remoting, Web Services &amp;amp; Web Services Enhancements, MSMQ, Enterprise Services and/or WCF&lt;/li&gt; &lt;li&gt;Ability to create syntactically correct UML diagrams (meaning they can do more than write the letters &amp;quot;UML&amp;quot; on their resume) and if not, they are willing to learn to do this.&lt;/li&gt; &lt;li&gt;Understands data structures solidly and could easily implement their own HashTable or LinkedList &lt;/li&gt; &lt;li&gt;Someone who&amp;#39;s always looking to come up with a newer, cooler, faster, and more secure way to do implement something&lt;/li&gt; &lt;li&gt;Experienced with either Biztalk server or Sharepoint&lt;/li&gt; &lt;li&gt;Takes pride in their code without falling in love with it or getting all defensive about it.&amp;nbsp; Ability to acknowledge the fact that everyone makes mistakes and can talk about their mistakes/bugs without getting defensive.&lt;/li&gt; &lt;li&gt;Someone who is the first to raise their hand whenever the boss says &amp;quot;I need someone to learn ____________, do I have any volunteers&amp;quot;&lt;/li&gt;&lt;/ul&gt;&lt;/ul&gt; &lt;p&gt;Basically, if you love development, love creating new cutting edge solutions all the while making a lot of money and having a lot of fun you definitely should talk to these folks.&amp;nbsp; If you&amp;#39;re interested...... Please drop me a line using the Contact option on&amp;nbsp; my blog or emailing me directly at &lt;a href="mailto://WilliamRyan@gmail.com"&gt;WilliamRyan@gmail.com&lt;/a&gt; and I&amp;#39;ll put you in contact with them.&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://msmvps.com/aggbug.aspx?PostID=1632527" width="1" height="1"&gt;</description><category domain="http://msmvps.com/blogs/williamryan/archive/tags/Compact+Framework/default.aspx">Compact Framework</category><category domain="http://msmvps.com/blogs/williamryan/archive/tags/Data+Access/default.aspx">Data Access</category><category domain="http://msmvps.com/blogs/williamryan/archive/tags/Web+Services+_2F00_+WSE/default.aspx">Web Services / WSE</category><category domain="http://msmvps.com/blogs/williamryan/archive/tags/.NET+Basics/default.aspx">.NET Basics</category><category domain="http://msmvps.com/blogs/williamryan/archive/tags/.NET+General/default.aspx">.NET General</category><category domain="http://msmvps.com/blogs/williamryan/archive/tags/Coding+Techniques/default.aspx">Coding Techniques</category><category domain="http://msmvps.com/blogs/williamryan/archive/tags/Misc+Technology/default.aspx">Misc Technology</category><category domain="http://msmvps.com/blogs/williamryan/archive/tags/Biztalk/default.aspx">Biztalk</category><category domain="http://msmvps.com/blogs/williamryan/archive/tags/WPF/default.aspx">WPF</category><category domain="http://msmvps.com/blogs/williamryan/archive/tags/WCF/default.aspx">WCF</category><category domain="http://msmvps.com/blogs/williamryan/archive/tags/.NET+3.0+Framework/default.aspx">.NET 3.0 Framework</category><category domain="http://msmvps.com/blogs/williamryan/archive/tags/WIX/default.aspx">WIX</category><category domain="http://msmvps.com/blogs/williamryan/archive/tags/Sql+Server+Integration+Services/default.aspx">Sql Server Integration Services</category><category domain="http://msmvps.com/blogs/williamryan/archive/tags/SSIS/default.aspx">SSIS</category><category domain="http://msmvps.com/blogs/williamryan/archive/tags/Silverlight/default.aspx">Silverlight</category><category domain="http://msmvps.com/blogs/williamryan/archive/tags/Sql+Server/default.aspx">Sql Server</category><category domain="http://msmvps.com/blogs/williamryan/archive/tags/Sql+Server+2008/default.aspx">Sql Server 2008</category><category domain="http://msmvps.com/blogs/williamryan/archive/tags/Sharepoint/default.aspx">Sharepoint</category><category domain="http://msmvps.com/blogs/williamryan/archive/tags/LINQ+To+ADO.NET/default.aspx">LINQ To ADO.NET</category><category domain="http://msmvps.com/blogs/williamryan/archive/tags/.NET+3.5+Framework/default.aspx">.NET 3.5 Framework</category><category domain="http://msmvps.com/blogs/williamryan/archive/tags/LINQ/default.aspx">LINQ</category><category domain="http://msmvps.com/blogs/williamryan/archive/tags/LINQ+Training/default.aspx">LINQ Training</category><category domain="http://msmvps.com/blogs/williamryan/archive/tags/ADO.NET+3.5/default.aspx">ADO.NET 3.5</category><category domain="http://msmvps.com/blogs/williamryan/archive/tags/C_2300_+3.5/default.aspx">C# 3.5</category><category domain="http://msmvps.com/blogs/williamryan/archive/tags/Windows+Mobile/default.aspx">Windows Mobile</category><category domain="http://msmvps.com/blogs/williamryan/archive/tags/Job+Stuff/default.aspx">Job Stuff</category></item><item><title>Filtering data ADO.NET Synchronization Services</title><link>http://msmvps.com/blogs/williamryan/archive/2007/11/13/filtering-data-ado-net-synchronization-services.aspx</link><pubDate>Wed, 14 Nov 2007 02:20:57 GMT</pubDate><guid isPermaLink="false">d67277c4-116b-43f1-b688-e9ef184ea916:1308509</guid><dc:creator>William</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://msmvps.com/blogs/williamryan/rsscomments.aspx?PostID=1308509</wfw:commentRss><wfw:comment xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://msmvps.com/blogs/williamryan/commentapi.aspx?PostID=1308509</wfw:comment><comments>http://msmvps.com/blogs/williamryan/archive/2007/11/13/filtering-data-ado-net-synchronization-services.aspx#comments</comments><description>&lt;p&gt;If you dabble in Orcas or are a data aficionado, then you have probably at least heard of &lt;a href="http://www.microsoft.com/downloads/details.aspx?FamilyId=02989F70-49AA-43D7-81B8-A651120F8D65&amp;amp;displaylang=en" target="_blank"&gt;Synchronization Services&lt;/a&gt;.&amp;nbsp; If you haven&amp;#39;t heard of it, let me try to pique your interest.&lt;/p&gt; &lt;p&gt;The business case for &lt;a href="http://www.microsoft.com/downloads/details.aspx?FamilyId=02989F70-49AA-43D7-81B8-A651120F8D65&amp;amp;displaylang=en" target="_blank"&gt;Sync Services&lt;/a&gt;&amp;nbsp;is simple. You have data in one place and you want to sync it with Data in another place.&amp;nbsp; This is an old school problem that has been dealt with many times before by many different people. That should clue you in to the realization that such problems should probably be approached using design patterns and &lt;a href="http://msdn2.microsoft.com/en-us/library/ms998449.aspx" target="_blank"&gt;Data Oriented Design Patterns in particular&lt;/a&gt;.&amp;nbsp; My memory is a little foggy but I don&amp;#39;t specifically remember reading any &amp;#39;data movement patterns&amp;#39; in the seminal design pattern book, &amp;nbsp;&lt;a href="http://www.amazon.com/Design-Patterns-Object-Oriented-Addison-Wesley-Professional/dp/0201633612" target="_blank"&gt;Design Patterns: Elements of Reusable Object-Oriented Software&lt;/a&gt;&amp;nbsp;by the &lt;a href="http://en.wikipedia.org/wiki/Design_Patterns" target="_blank"&gt;Gang of Four&lt;/a&gt;.&amp;nbsp; (As a slight digression, I&amp;#39;ve found quite a few superb design pattern books and a few stinkers.&amp;nbsp; The GOF book is by far the best one I&amp;#39;ve come across in terms of being understandable and easy to follow and can say with comfort that it won&amp;#39;t disappoint).&lt;/p&gt; &lt;p&gt;So you can roll your own code, you can use an existing mechanism like Replication, or you can go new school and try SS. I don&amp;#39;t claim to be an expert at SS but so far, I&amp;#39;ve found it shocking easily to use and learn. Of all the zillions of new MS products rolling out of Microsoft, SS is one of the easiest I&amp;#39;ve come across, at least in terms of getting up and running.&lt;/p&gt; &lt;p&gt;Now, chances are that if you have the need to sync data back and forth (for instance, moving data from a database server to your salesforce&amp;#39;s Tablet PC&amp;#39;s), you will have a lot more data on your server than you&amp;#39;d need or be able to use on the remote machine. Even if you wanted all of that data, in many cases you won&amp;#39;t be able to get it all b/c moving it would take forever and the target machine is resource constrained. To that end, the out of the box demo code that ships with SS will need some modification.&lt;/p&gt; &lt;p&gt;The first point I&amp;#39;d make is that Yes, it is possible to sync only portions of the data.&amp;nbsp; This came up recently in one of the newsgroups I frequent and it&amp;#39;s an excellent question.&amp;nbsp; Just to get a conceptual feel for this, think of the same scenario I mentioned earlier. You have a db server and a mobile salesforce (or nursing force, or delivery force, or you&amp;#39;re a large law firm, consulting group, accounting practice...you get the idea) and you only need to sync each target machine with a subset of data. In an ideal world remote users could see everything that&amp;nbsp;users at the&amp;nbsp;home base could, but moving the data could take forever in many large companies. Moreover, you probably wouldn&amp;#39;t need most of it.&amp;nbsp; If you&amp;#39;re a nurse that makes house calls,&amp;nbsp;you probably wouldn&amp;#39;t need information for people that have passed on, or that have moved or even that you&amp;#39;re not visiting. If your device was a PDA, you need to&amp;nbsp;economize on every resource possible. But even if you had a laptop or tablet you still&amp;nbsp;have&amp;nbsp;some resource limits.&amp;nbsp;Hence,&amp;nbsp;envision a case where&amp;nbsp;you might just want to sync only the data related to each person&amp;#39;s active clients (and probably augment the query&amp;#39;s restriction with a date filter of some sort and perhaps an active account indicator) that have engaged in at least one transaction in the last year.&lt;/p&gt; &lt;ul&gt; &lt;li&gt;You could give each person some sort of UI tool which they could initiate that queries the db and writes the data to a file, which they in turn copy over to their machine.&lt;/li&gt; &lt;li&gt;You could do the same thing, but run it as a job so it&amp;#39;s done automatically&lt;/li&gt; &lt;li&gt;You could expose the query results as a web service and let them retrieve data as they needed it&lt;/li&gt; &lt;li&gt;You could export the data to Excel or Access (the latter of which I&amp;#39;ve seen done more times than I care to remember)&lt;/li&gt;&lt;/ul&gt; &lt;p&gt;Each of these approaches is easy enough to implement but has major suckiness associated with it.&amp;nbsp; The first approach is one of the simpler ones and fairly fool-proof.&amp;nbsp; Writing out the file is something you could automate via a schedule but not copying it to the device, unless of course you were positive the device would always be available when the job ran.&amp;nbsp; With the web service, you&amp;#39;re depending on internet connectivity which, even in this day where everyone has mobile broadband, there are still a lot of coverage holes. If you had any sort of substantial dataset, pulling it down over a mobile broadband connection would be a doubleplusbad. Copying it to Access or Excel would have the same issues and shortcomings that the first approach, after all it really is the same approach but simply uses a different file format.&lt;/p&gt; &lt;p&gt;Referring to the &lt;font face="Courier New"&gt;SyncServices_CSharp_DownloadOnly&lt;/font&gt; sample included in the Sync Services install, refer to the &lt;font face="Courier New"&gt;SampleServerSyncProvider&lt;/font&gt; method of the &lt;font face="Courier New"&gt;&lt;em&gt;SampleServerSyncProvider.cs&lt;/em&gt;&lt;/font&gt; or &lt;font face="Courier New"&gt;&lt;em&gt;SampleServerSyncProvider.vb&lt;/em&gt;&lt;/font&gt; file, you see the following code (the Author was kind enough to include copious comments which explain each portion - I&amp;#39;ve removed them for readability but would encourage you to refer to them if you&amp;#39;re unfamiliar with Sync Service):&lt;/p&gt; &lt;p&gt;public class SampleServerSyncProvider : DbServerSyncProvider&lt;br /&gt;&amp;nbsp;&amp;nbsp; { &lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; public SampleServerSyncProvider()&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; this.Connection = new SqlConnection(Properties.Settings.Default.ServerConnString); &lt;/p&gt; &lt;blockquote&gt; &lt;p&gt;&lt;br /&gt;&lt;font color="#0000ff"&gt;string awNewAnchorVariable = &amp;quot;@&amp;quot; + SyncSession.SyncNewReceivedAnchor;&lt;br /&gt;SqlCommand selectNewAnchorCommand = new SqlCommand();&lt;br /&gt;selectNewAnchorCommand.CommandText = &amp;quot;SELECT &amp;quot; + awNewAnchorVariable + &amp;quot; = @@DBTS&amp;quot;;&lt;br /&gt;selectNewAnchorCommand.Parameters.Add(awNewAnchorVariable, SqlDbType.Timestamp);&lt;br /&gt;selectNewAnchorCommand.Parameters[awNewAnchorVariable].Size = 8;&lt;br /&gt;selectNewAnchorCommand.Parameters[awNewAnchorVariable].Direction = ParameterDirection.Output;&lt;br /&gt;selectNewAnchorCommand.Connection = (SqlConnection)this.Connection;&lt;br /&gt;this.SelectNewAnchorCommand = selectNewAnchorCommand;&lt;/font&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;&lt;br /&gt;&amp;nbsp;SqlSyncAdapterBuilder builder = new SqlSyncAdapterBuilder((SqlConnection)this.Connection); &lt;/p&gt; &lt;p&gt;&lt;br /&gt;&amp;nbsp;&lt;font color="#008080"&gt;builder.TableName = &amp;quot;Sales.Customer&amp;quot;;&lt;br /&gt;&amp;nbsp;builder.TombstoneTableName = builder.TableName + &amp;quot;_Tombstone&amp;quot;;&lt;br /&gt;&amp;nbsp;builder.TombstoneFilterClause = filterCommand;&lt;/font&gt;&amp;nbsp; &lt;p&gt;&lt;br /&gt;&amp;nbsp;builder.DataColumns.Add(&amp;quot;CustomerId&amp;quot;);&lt;br /&gt;&amp;nbsp;builder.DataColumns.Add(&amp;quot;CustomerName&amp;quot;);&lt;br /&gt;&amp;nbsp;builder.DataColumns.Add(&amp;quot;SalesPerson&amp;quot;);  &lt;p&gt;&lt;br /&gt;&amp;nbsp;builder.CreationTrackingColumn = &amp;quot;InsertTimestamp&amp;quot;;&lt;br /&gt;&amp;nbsp;builder.UpdateTrackingColumn = &amp;quot;UpdateTimestamp&amp;quot;;&lt;br /&gt;&amp;nbsp;builder.DeletionTrackingColumn = &amp;quot;DeleteTimestamp&amp;quot;;  &lt;p&gt;&lt;br /&gt;&amp;nbsp;SyncAdapter customerSyncAdapter = builder.ToSyncAdapter();&lt;br /&gt;&amp;nbsp;customerSyncAdapter.TableName = &amp;quot;Customer&amp;quot;;&lt;br /&gt;&amp;nbsp;this.SyncAdapters.Add(customerSyncAdapter);&lt;br /&gt;}&lt;/p&gt; &lt;p&gt;}&lt;/p&gt;&lt;/blockquote&gt; &lt;p&gt;[Note:&amp;nbsp; Even with the comments, some of this code may be hard to follow when you first read it.&amp;nbsp; One thing I did which was very enlightening and always a useful thing to do in such situations is fire up good ole&amp;#39; Sql Profiler, then run the application and see exactly what happens, what objects are being used and what commands are being sent to the db]. &lt;p&gt;I show some of the relevant results from the trace below (I&amp;#39;ve color coded the results to the portion of the code that which caused it to happen): &lt;blockquote&gt; &lt;p&gt;&lt;font color="#0000ff"&gt;declare @p3 binary(8)&lt;br /&gt;set @p3=0x0000000000000FA0&lt;br /&gt;exec sp_executesql N&amp;#39;SELECT @sync_new_received_anchor = @@DBTS&amp;#39;,N&amp;#39;@sync_new_received_anchor timestamp &lt;br /&gt;output&amp;#39;,@sync_new_received_anchor=@p3 output&lt;br /&gt;select @p3&lt;/font&gt;&lt;/p&gt;&lt;/blockquote&gt; &lt;blockquote&gt; &lt;p&gt;&lt;font color="#408080"&gt;exec sp_executesql N&amp;#39;SELECT [CustomerId], [CustomerName], [SalesPerson] FROM Sales.Customer WHERE&amp;nbsp;&lt;br /&gt; (InsertTimestamp &amp;gt; @sync_last_received_anchor AND InsertTimestamp &amp;lt;= &lt;br /&gt;@sync_new_received_anchor)&amp;#39;,N&amp;#39;@sync_last_received_anchor binary(8000),@sync_new_received_anchor &lt;br /&gt;binary(8)&amp;#39;,@sync_last_received_anchor=0x00,@sync_new_received_anchor=0x0000000000000FA0&lt;/font&gt;&lt;/p&gt;&lt;/blockquote&gt; &lt;blockquote&gt; &lt;p&gt;&lt;font color="#008080"&gt;exec sp_executesql N&amp;#39;SELECT [CustomerId], [CustomerName], [SalesPerson] FROM Sales.Customer WHERE &lt;br /&gt;(CustomerName=&amp;#39;&amp;#39;Sharp Bikes&amp;#39;&amp;#39;) AND (UpdateTimestamp &amp;gt; @sync_last_received_anchor AND UpdateTimestamp &amp;lt;= &lt;br /&gt;@sync_new_received_anchor AND InsertTimestamp &amp;lt;= @sync_last_received_anchor)&amp;#39;,N&amp;#39;@sync_last_received_anchor &lt;br /&gt;timestamp,@sync_new_received_anchor &lt;br /&gt;timestamp&amp;#39;,@sync_last_received_anchor=0x0000000000000000,@sync_new_received_anchor=0x0000000000000FA0&lt;/font&gt;&lt;/p&gt;&lt;/blockquote&gt; &lt;blockquote&gt; &lt;p&gt;&lt;font color="#008080"&gt;exec sp_executesql N&amp;#39;SELECT [CustomerId], [CustomerName], [SalesPerson], [CustomerType], [DeleteId], &lt;br /&gt;[DeleteTimestamp] FROM Sales.Customer_Tombstone WHERE (CustomerName=&amp;#39;&amp;#39;Sharp Bikes&amp;#39;&amp;#39;) AND (@sync_initialized = 1 &lt;br /&gt;AND DeleteTimestamp &amp;gt; @sync_last_received_anchor AND DeleteTimestamp &amp;lt;= &lt;br /&gt;@sync_new_received_anchor)&amp;#39;,N&amp;#39;@sync_initialized bit,@sync_last_received_anchor &lt;br /&gt;timestamp,@sync_new_received_anchor &lt;br /&gt;timestamp&amp;#39;,@sync_initialized=0,@sync_last_received_anchor=NULL,@sync_new_received_anchor=0x0000000000000FA0&lt;/font&gt;&lt;/p&gt;&lt;/blockquote&gt; &lt;p&gt;&amp;nbsp; &lt;p&gt;As it stands, the code above is pulling everything from the &lt;font face="Courier New"&gt;Sales.Customer&lt;/font&gt; table.&amp;nbsp; But as I mentioned, chances are that you wouldn&amp;#39;t want the whole resultset. Rather, you&amp;#39;d probably want a filtered subset.&amp;nbsp; For the sake of visual simplicity, I&amp;#39;m going to violate one of my biggest coding Pet Peeves and concatenate a sql statement to include a parameter instead of doing it the right way, but I&amp;#39;ll show the correct way shortly. &lt;p&gt;The &lt;font face="Courier New"&gt;SqlSyncAdapterBuilder&lt;/font&gt; has several properties and for filtering purposes, you can simply set the &lt;font face="Courier New"&gt;FilterClause&lt;/font&gt; property.&amp;nbsp; Starting with the code beginning at the adapter instantiation, I modified the code to just return records that have a &lt;font face="Courier New"&gt;CustomerName&lt;/font&gt; value equal to the literal &amp;#39;&lt;font face="Courier New"&gt;Sharp Bikes&amp;#39; (The relevant portions are included in &lt;strong&gt;Bold &lt;/strong&gt;face)&lt;/font&gt;: &lt;blockquote&gt; &lt;p&gt;SqlSyncAdapterBuilder builder = new SqlSyncAdapterBuilder((SqlConnection)this.Connection);  &lt;p&gt;&lt;br /&gt;&lt;strong&gt;String FilterCommand = &amp;quot;CustomerName=&amp;#39;Sharp Bikes&amp;#39;&amp;quot;;&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;builder.TableName = &amp;quot;Sales.Customer&amp;quot;;&lt;br /&gt;builder.TombstoneTableName = builder.TableName + &amp;quot;_Tombstone&amp;quot;;&lt;br /&gt;&lt;strong&gt;builder.FilterClause = FilterCommand ;&lt;br /&gt;builder.TombstoneFilterClause = FilterCommand;&lt;/strong&gt; &lt;/p&gt; &lt;p&gt;builder.SyncDirection = SyncDirection.DownloadOnly;&lt;/p&gt;&lt;/blockquote&gt; &lt;p&gt;So, it&amp;#39;s pretty much this easy, you simply need to set the FilterClause property of the &lt;font face="Courier New"&gt;SqlSyncAdapterBuilder&lt;/font&gt; and absent some really compelling reason to do so, set the &lt;font face="Courier New"&gt;TombStoneFilterClause&lt;/font&gt; to the same value.&amp;nbsp; Because you use the same statement, it&amp;#39;s best to use a String literal so that the two &lt;font face="Courier New"&gt;FilterClause&lt;/font&gt; values don&amp;#39;t get out of sync. Just as you set the &lt;font face="Courier New"&gt;FilterClause&lt;/font&gt; and &lt;font face="Courier New"&gt;TombstoneFilterClause&lt;/font&gt; properties to facilitate filtering, if you use a parameter, you need to add a &lt;font face="Courier New"&gt;SqlParameter&lt;/font&gt; (or &lt;font face="Courier New"&gt;SqlParameter&lt;/font&gt;(s)) to the &lt;font face="Courier New"&gt;FilterParameters&lt;/font&gt; and &lt;font face="Courier New"&gt;TombstoneFilterParameters&lt;/font&gt; collections.&amp;nbsp; So, the below code shows the previous snippet modified to use a &lt;font face="Courier New"&gt;SqlParameter&lt;/font&gt; instead of concatenating the Sql text, again, the relevant portions are included in &lt;strong&gt;Bold &lt;/strong&gt;face: &lt;blockquote&gt; &lt;p&gt;SqlSyncAdapterBuilder builder = new SqlSyncAdapterBuilder((SqlConnection)this.Connection);&lt;br /&gt;SqlParameter CustomerNameParameter = new SqlParameter(&amp;quot;@CustomerName&amp;quot;, SqlDbType.NVarChar);  &lt;p&gt;&lt;br /&gt;&lt;strong&gt;String FilterCommand = &amp;quot;CustomerName=@CustomerName&amp;quot;;&lt;/strong&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&lt;br /&gt;builder.TableName = &amp;quot;Sales.Customer&amp;quot;;&lt;br /&gt;builder.TombstoneTableName = builder.TableName + &amp;quot;_Tombstone&amp;quot;;&lt;br /&gt;builder.FilterClause = FilterCommand ;&lt;br /&gt;builder.TombstoneFilterClause = FilterCommand;&lt;br /&gt;&lt;strong&gt;builder.FilterParameters.Add(CustomerNameParameter);&lt;br /&gt;builder.TombstoneFilterParameters.Add(CustomerNameParameter);&lt;/strong&gt;&lt;/p&gt;&lt;/blockquote&gt; &lt;p&gt;Now the results from Profiler show something notably different: &lt;blockquote&gt; &lt;p&gt;exec sp_executesql N&amp;#39;SELECT [CustomerId], [CustomerName], [SalesPerson] FROM Sales.Customer WHERE &lt;br /&gt;(&lt;font size="3"&gt;&lt;strong&gt;&lt;em&gt;CustomerName=@CustomerName&lt;/em&gt;&lt;/strong&gt;&lt;/font&gt;) AND (InsertTimestamp &amp;gt; @sync_last_received_anchor AND InsertTimestamp &amp;lt;= &lt;br /&gt;@sync_new_received_anchor)&amp;#39;,N&amp;#39;@CustomerName nvarchar(11),@sync_last_received_anchor &lt;br /&gt;binary(8000),@sync_new_received_anchor binary(8)&amp;#39;,@&lt;strong&gt;&lt;font size="3"&gt;&lt;em&gt;CustomerName=N&amp;#39;Sharp &lt;br /&gt;Bikes&amp;#39;&lt;/em&gt;&lt;/font&gt;&lt;/strong&gt;,@sync_last_received_anchor=0x00,@sync_new_received_anchor=0x0000000000000FA0&lt;/p&gt;&lt;/blockquote&gt; &lt;blockquote&gt; &lt;p&gt;exec sp_executesql N&amp;#39;SELECT [CustomerId], [CustomerName], [SalesPerson] FROM Sales.Customer WHERE &lt;br /&gt;(&lt;font size="3"&gt;&lt;strong&gt;&lt;em&gt;CustomerName=@CustomerName&lt;/em&gt;&lt;/strong&gt;&lt;/font&gt;) AND (UpdateTimestamp &amp;gt; @sync_last_received_anchor AND UpdateTimestamp &amp;lt;= &lt;br /&gt;@sync_new_received_anchor AND InsertTimestamp &amp;lt;= @sync_last_received_anchor)&amp;#39;,N&amp;#39;@CustomerName &lt;br /&gt;nvarchar(11),@sync_last_received_anchor timestamp,@sync_new_received_anchor timestamp&amp;#39;,@&lt;font size="3"&gt;&lt;strong&gt;&lt;em&gt;CustomerName=N&amp;#39;Sharp &lt;br /&gt;Bikes&amp;#39;&lt;/em&gt;&lt;/strong&gt;&lt;/font&gt;,@sync_last_received_anchor=0x0000000000000000,@sync_new_received_anchor=0x0000000000000FA0&lt;/p&gt;&lt;/blockquote&gt; &lt;blockquote&gt; &lt;p&gt;exec sp_executesql N&amp;#39;SELECT [CustomerId], [CustomerName], [SalesPerson], [CustomerType], [DeleteId], &lt;br /&gt;[DeleteTimestamp] FROM Sales.Customer_Tombstone WHERE (&lt;font size="3"&gt;&lt;strong&gt;&lt;em&gt;CustomerName=@CustomerName&lt;/em&gt;&lt;/strong&gt;&lt;/font&gt;) AND (@sync_initialized = 1 &lt;br /&gt;AND DeleteTimestamp &amp;gt; @sync_last_received_anchor AND DeleteTimestamp &amp;lt;= &lt;br /&gt;@sync_new_received_anchor)&amp;#39;,N&amp;#39;@CustomerName nvarchar(11),@sync_initialized bit,@sync_last_received_anchor &lt;br /&gt;timestamp,@sync_new_received_anchor timestamp&amp;#39;&lt;font size="3"&gt;&lt;strong&gt;&lt;em&gt;,@CustomerName=N&amp;#39;Sharp &lt;br /&gt;Bikes&amp;#39;&lt;/em&gt;&lt;/strong&gt;&lt;/font&gt;,@sync_initialized=0,@sync_last_received_anchor=NULL,@sync_new_received_anchor=0x0000000000000FA0&lt;/p&gt;&lt;/blockquote&gt; &lt;p&gt;You can see here clearly that not only is the &lt;font face="Courier New"&gt;@CustomerName&lt;/font&gt; parameter being used, it&amp;#39;s being set to the literal &lt;font face="Courier New"&gt;Sharp Bikes&lt;/font&gt;&lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;There&amp;#39;s one catch though when using real parameters. If you modify the code as I did above and try to run it, you&amp;#39;ll encounter the following exception:&lt;/p&gt; &lt;p&gt;&amp;nbsp; &lt;blockquote&gt; &lt;p&gt;&lt;em&gt;&lt;font color="#ff0000"&gt;Microsoft.Synchronization.Data.SessionVariableException was unhandled&lt;br /&gt;&amp;nbsp; Message=&amp;quot;Unable to set session parameters in DbServerSyncProvider. Cannot obtain the value for command parameter &amp;#39;@CustomerName&amp;#39;.&amp;quot;&lt;br /&gt;&amp;nbsp; Source=&amp;quot;Microsoft.Synchronization.Data.Server&amp;quot;&lt;br /&gt;&amp;nbsp; SyncSource=&amp;quot;ServerSyncProvider&amp;quot;&lt;br /&gt;&amp;nbsp; StackTrace:&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; at Microsoft.Synchronization.Data.Server.DbServerSyncProvider.SetSessionParameters(IDbCommand cmd, SyncGroupMetadata groupMetadata, SyncTableMetadata tableMetadata, SyncSession syncSession, DataColumnCollection columns, SyncStage stage)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; at Microsoft.Synchronization.Data.Server.DbServerSyncProvider.EnumerateChanges(SyncGroupMetadata groupMetadata, SyncSession syncSession, IDbTransaction transaction, EnumerateChangeType changeType)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; at Microsoft.Synchronization.Data.Server.DbServerSyncProvider.GetChanges(SyncGroupMetadata groupMetadata, SyncSession syncSession)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; at Microsoft.Synchronization.SyncAgent.DownloadChanges(SyncGroupMetadata groupMetadata)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; at Microsoft.Synchronization.SyncAgent.Synchronize()&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; at Microsoft.Samples.Synchronization.MainForm.btnSynchronize_Click(Object sender, EventArgs e) in C:\SyncServicesCode\SyncServices_CSharp_DownloadOnly\Client\Forms\MainForm.cs:...&lt;/font&gt;&lt;/em&gt;&lt;br /&gt;&lt;/p&gt;&lt;/blockquote&gt; &lt;p&gt;Nothing too shocking though right, after all, although we specified a parameter be used in the &lt;font face="Courier New"&gt;CommandText&lt;/font&gt; property, we never set the value so it&amp;#39;s not surprising that an exception was thrown unless the parameter had a default value, which in this case it clearly did not.  &lt;p&gt;But if you change the code to explicitly set the value for the parameter, for instance like this... &lt;blockquote&gt; &lt;p&gt;SqlParameter CustomerNameParameter = new SqlParameter(&amp;quot;@CustomerName&amp;quot;, SqlDbType.NVarChar);&lt;br /&gt;&lt;strong&gt;CustomerNameParameter.Value = &amp;quot;Sharp Bikes&amp;quot;;&lt;/strong&gt;&lt;/p&gt;&lt;/blockquote&gt; &lt;p&gt;you&amp;#39;ll still get the same exception.&amp;nbsp; This really threw me for a loop b/c I used the debugger and &lt;em&gt;proved&lt;/em&gt; to myself that the value wasn&amp;#39;t null or left out. If you step through with the debugger, you can verify for yourself that the above code is in fact setting the value of &lt;font face="Courier New"&gt;@CustomerName = &amp;quot;Sharp Bikes&amp;quot;&lt;/font&gt; &lt;p&gt;One point that&amp;#39;s extremely important... Normally, as long as you modify your &lt;font face="Courier New"&gt;CommandText&lt;/font&gt; to refer to the&amp;nbsp;&lt;font face="Courier New"&gt;SqlParameter&lt;/font&gt;&amp;nbsp; and&amp;nbsp;add a &lt;font face="Courier New"&gt;SqlParameter&lt;/font&gt; object to a &lt;font face="Courier New"&gt;SqlCommand&lt;/font&gt; object&amp;#39;s &lt;font face="Courier New"&gt;Parameters&lt;/font&gt; collection, you don&amp;#39;t need to do anything else. But as I just babbled on about, that won&amp;#39;t cut it here... something is still missing. &lt;p&gt;As it turns out, (and makes perfect sense once I cleared my tunnel vision), the &lt;font face="Courier New"&gt;SyncAgent &lt;/font&gt;(&lt;em&gt;Microsoft.Synchronization.SyncAgent&lt;/em&gt;) class is what actually does much of the heavy lifting and just because you have a Parameter referenced in code in your &lt;font face="Courier New"&gt;SqlSyncAdapterBuilder&lt;/font&gt;, the &lt;font face="Courier New"&gt;SyncAgent&lt;/font&gt; doesn&amp;#39;t know anything about it. Since it doesn&amp;#39;t know anything about it, it doesn&amp;#39;t know to pass in a value or what value to pass to it, so when it tries to finish processing the value for the parameter isn&amp;#39;t set. It didn&amp;#39;t matter that we set it explicitly because we set it in the wrong place. &lt;p&gt;Fortunately, it&amp;#39;s very easy to address.&amp;nbsp; The code below is the&lt;font face="Courier New"&gt; SyncAgent&amp;#39;s&lt;/font&gt; code, the last line in Bold is what you need to add if you&amp;#39;re using a parameterized filter: &lt;p&gt;public class SampleSyncAgent : Microsoft.Synchronization.SyncAgent&lt;br /&gt;&amp;nbsp;{ &lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; public SampleSyncAgent()&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; SqlCeClientSyncProvider clientSyncProvider = new SqlCeClientSyncProvider(Properties.Settings.Default.ClientConnString, true);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; this.LocalProvider = clientSyncProvider;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; clientSyncProvider.ChangesApplied += new EventHandler&amp;lt;ChangesAppliedEventArgs&amp;gt;(clientSyncProvider_ChangesApplied);  &lt;p&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; this.RemoteProvider = new SampleServerSyncProvider();  &lt;p&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; SyncTable customerSyncTable = new SyncTable(&amp;quot;Customer&amp;quot;);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; customerSyncTable.CreationOption = TableCreationOption.DropExistingOrCreateNewTable;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; customerSyncTable.SyncDirection = SyncDirection.DownloadOnly;  &lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; this.Configuration.SyncTables.Add(customerSyncTable);&lt;br /&gt;&lt;strong&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; this.Configuration.SyncParameters.Add(&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; new SyncParameter(&amp;quot;@CustomerName&amp;quot;, &amp;quot;Sharp Bikes&amp;quot;));&lt;/strong&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; } &lt;p&gt;} &lt;p&gt;(Part of this class was left out for brevity - all that is missing is the private variables and their corresponding public properties). &lt;p&gt;The corresponding code is available &lt;a href="http://www.williamgryan.com/downloads/code/syncservices" target="_blank"&gt;Here&lt;/a&gt;.&amp;nbsp; Please note that this code is taken from the Synchronization Services samples that are included when you install Synchronization Services.&amp;nbsp; I merely modified that code to support parameterized filters.&amp;nbsp; I will be adding a UI Element on the MainForm object so that you can set the value dynamically instead of hard coding it as I did.&amp;nbsp; Again, although this post is a little long, we really are talking about basically adding less than 10 lines of code to add filtering. You need to set the FilterClause, the TombstoneFilterClause, FilterParameters, TombstoneFilterParameters and then add a SyncParameter to the SyncAgent.&amp;nbsp; As you can infer, you if you need more expressions, you can just add them accordingly to meet whatever your requirements happen to be. &lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://msmvps.com/aggbug.aspx?PostID=1308509" width="1" height="1"&gt;</description><category domain="http://msmvps.com/blogs/williamryan/archive/tags/Compact+Framework/default.aspx">Compact Framework</category><category domain="http://msmvps.com/blogs/williamryan/archive/tags/Coding+Techniques/default.aspx">Coding Techniques</category><category domain="http://msmvps.com/blogs/williamryan/archive/tags/ADO.NET+Synchronization+Services/default.aspx">ADO.NET Synchronization Services</category><category domain="http://msmvps.com/blogs/williamryan/archive/tags/.NET+3.0+Framework/default.aspx">.NET 3.0 Framework</category><category domain="http://msmvps.com/blogs/williamryan/archive/tags/DBServerSyncProvider/default.aspx">DBServerSyncProvider</category><category domain="http://msmvps.com/blogs/williamryan/archive/tags/Synchronization+Services/default.aspx">Synchronization Services</category><category domain="http://msmvps.com/blogs/williamryan/archive/tags/SyncAgent/default.aspx">SyncAgent</category><category domain="http://msmvps.com/blogs/williamryan/archive/tags/Microsoft.Synchronization/default.aspx">Microsoft.Synchronization</category></item><item><title>Leviton, Microsoft's Z-Wave/Windows Solutions</title><link>http://msmvps.com/blogs/williamryan/archive/2007/01/28/leviton-microsoft-s-z-wave-windows-solutions.aspx</link><pubDate>Sun, 28 Jan 2007 22:37:00 GMT</pubDate><guid isPermaLink="false">d67277c4-116b-43f1-b688-e9ef184ea916:525863</guid><dc:creator>William</dc:creator><slash:comments>1</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://msmvps.com/blogs/williamryan/rsscomments.aspx?PostID=525863</wfw:commentRss><wfw:comment xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://msmvps.com/blogs/williamryan/commentapi.aspx?PostID=525863</wfw:comment><comments>http://msmvps.com/blogs/williamryan/archive/2007/01/28/leviton-microsoft-s-z-wave-windows-solutions.aspx#comments</comments><description>&lt;P&gt;This is &lt;A href="http://www.cepro.com/products/press/17506.html"&gt;very very cool.&lt;/A&gt;&lt;/P&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://msmvps.com/aggbug.aspx?PostID=525863" width="1" height="1"&gt;</description><category domain="http://msmvps.com/blogs/williamryan/archive/tags/News/default.aspx">News</category><category domain="http://msmvps.com/blogs/williamryan/archive/tags/Compact+Framework/default.aspx">Compact Framework</category><category domain="http://msmvps.com/blogs/williamryan/archive/tags/.NET+General/default.aspx">.NET General</category><category domain="http://msmvps.com/blogs/williamryan/archive/tags/Mindless+Babbling/default.aspx">Mindless Babbling</category></item><item><title>How to be really annoying with Pocket Outlook</title><link>http://msmvps.com/blogs/williamryan/archive/2007/01/25/how-to-be-really-annoying-with-pocket-outlook.aspx</link><pubDate>Thu, 25 Jan 2007 06:08:00 GMT</pubDate><guid isPermaLink="false">d67277c4-116b-43f1-b688-e9ef184ea916:517762</guid><dc:creator>William</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://msmvps.com/blogs/williamryan/rsscomments.aspx?PostID=517762</wfw:commentRss><wfw:comment xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://msmvps.com/blogs/williamryan/commentapi.aspx?PostID=517762</wfw:comment><comments>http://msmvps.com/blogs/williamryan/archive/2007/01/25/how-to-be-really-annoying-with-pocket-outlook.aspx#comments</comments><description>&lt;P&gt;If you've been following my coding tonight, you can probably tell what I'm up to. If you call me regularly, you probably are already familiar with this little project, aka the CuckooBot.&amp;nbsp; He's up to Version 4.0 and about to be released into the wild. Yes, this one is more functional and useful than the last but also a lot snarkier and more annoying. In fact, he's also a lot smarter. He has a lot better AI and text parsing for one thing, so he can make better decisions about whether or not I can be disturbed and if you are on the 'cool' list, he'll actually do some of your bidding. When I release the final version, I'll provide everyone with the list of commands he'll respond to.&amp;nbsp; But enough about that for now.&amp;nbsp; Part two of this project involves email.&amp;nbsp; You can shoot the CuckooBot an email with a request, like "Please send ClevelandSteamer.jpg" and if you are authorized, he'll send it.&amp;nbsp; The&amp;nbsp; authorization piece is causing me some grief but it's not like I have anything better to be doing in the middle of the night right?&lt;/P&gt;
&lt;P&gt;Ok, so the way to send Email messages is to first create an OutlookSession object. Instantiate it and scope it as necessary.&amp;nbsp; Next, specify an EmailAccount for it.&amp;nbsp; Next create an EmailMessage and at the end, just Send() it.&lt;/P&gt;
&lt;P&gt;Now, I've mentioned many times that things like BCC, CC, Importance and Sensitivity should be outlawed and considered as tantamount to war crimes for they are pure evil. But too many people like those features so I'll have to keep my little quixotic jihad against them going in other ways.&lt;/P&gt;&lt;FONT color=#0000ff size=2&gt;
&lt;P&gt;&lt;CODE&gt;const&lt;/FONT&gt;&lt;FONT size=2&gt; &lt;/FONT&gt;&lt;FONT color=#008080 size=2&gt;String&lt;/FONT&gt;&lt;FONT size=2&gt; Primary = &lt;/FONT&gt;&lt;FONT color=#800000 size=2&gt;"Cuckoo1"&lt;/CODE&gt;&lt;/FONT&gt;&lt;FONT size=2&gt;;&lt;/P&gt;
&lt;P&gt;&lt;FONT color=#0000ff size=2&gt;&lt;CODE&gt;private&lt;/FONT&gt;&lt;/CODE&gt;&lt;/P&gt;&lt;/FONT&gt;&lt;FONT size=2&gt;
&lt;P&gt;&lt;CODE&gt;{&lt;/CODE&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT color=#008080 size=2&gt;&lt;CODE&gt;OutlookSession MainSession = new OutlookSession()&lt;/FONT&gt;&lt;/CODE&gt;&lt;/P&gt;&lt;/FONT&gt;&lt;FONT size=2&gt;
&lt;P&gt;&lt;FONT color=#008080 size=2&gt;&lt;CODE&gt;EmailAccount&lt;/FONT&gt;&lt;/CODE&gt;&lt;/P&gt;&lt;/FONT&gt;&lt;FONT size=2&gt;
&lt;P&gt;&lt;FONT color=#008080 size=2&gt;EmailAccount MainAccount = MainSession.EmailAccounts[Primary];&lt;/FONT&gt;&lt;FONT size=2&gt; &lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT size=2&gt;&lt;CODE&gt;EmailMessage MyMessage = new EmailMessage();&lt;/FONT&gt;&lt;/CODE&gt;&lt;/P&gt;&lt;/FONT&gt;&lt;FONT size=2&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;/FONT&gt;&lt;FONT color=#008000 size=2&gt;&lt;CODE&gt;//One dorks set this to High.&lt;/CODE&gt;&lt;/P&gt;&lt;/FONT&gt;&lt;FONT size=2&gt;
&lt;P&gt;&lt;CODE&gt;MyMessage.Importance = &lt;/FONT&gt;&lt;FONT color=#008080 size=2&gt;Importance&lt;/FONT&gt;&lt;FONT size=2&gt;.Normal;&lt;/CODE&gt;&lt;/P&gt;
&lt;P&gt;&lt;/FONT&gt;&lt;FONT color=#008000 size=2&gt;&lt;CODE&gt;//Again, see above.&lt;/CODE&gt;&lt;/P&gt;&lt;/FONT&gt;&lt;FONT size=2&gt;
&lt;P&gt;&lt;CODE&gt;MyMessage.Sensitivity = &lt;/FONT&gt;&lt;FONT color=#008080 size=2&gt;Sensitivity&lt;/FONT&gt;&lt;FONT size=2&gt;.Normal;&lt;/CODE&gt;&lt;/P&gt;
&lt;P&gt;&lt;CODE&gt;MyMessage.Subject = &lt;/FONT&gt;&lt;FONT color=#800000 size=2&gt;"Cleveland Steamers vs. Pink Socks on Fox - 8:00 PM EDT"&lt;/FONT&gt;&lt;FONT size=2&gt;;&lt;/CODE&gt;&lt;/P&gt;
&lt;P&gt;&lt;CODE&gt;MyMessage.To = &lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;new&lt;/FONT&gt;&lt;FONT size=2&gt; &lt;/FONT&gt;&lt;FONT color=#008080 size=2&gt;Recipient&lt;/FONT&gt;&lt;FONT size=2&gt;(&lt;/FONT&gt;&lt;FONT color=#800000 size=2&gt;"Knights of the Cleveland Steamers"&lt;/FONT&gt;&lt;FONT size=2&gt;, &lt;/FONT&gt;&lt;FONT color=#800000 size=2&gt;"911@clevelandsteamers.org"&lt;/FONT&gt;&lt;FONT size=2&gt;);&lt;/CODE&gt;&lt;/P&gt;
&lt;P&gt;&lt;CODE&gt;MyMessage.Attachments.Add(&lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;new&lt;/FONT&gt;&lt;FONT size=2&gt; &lt;/FONT&gt;&lt;FONT color=#008080 size=2&gt;Attachment&lt;/FONT&gt;&lt;FONT size=2&gt;(&lt;/FONT&gt;&lt;FONT color=#800000 size=2&gt;@"\eviction1.jpg"&lt;/FONT&gt;&lt;FONT size=2&gt;));&lt;/CODE&gt;&lt;/P&gt;
&lt;P&gt;&lt;CODE&gt;MyMessage.BodyText = &lt;/FONT&gt;&lt;FONT color=#800000 size=2&gt;"Cleveland Steamers aren't appropriate for community sites. However I predict they'll win tonight - 9-2"&lt;/FONT&gt;&lt;FONT size=2&gt;);&lt;/CODE&gt;&lt;/P&gt;
&lt;P&gt;&lt;CODE&gt;MainAccount.Send(MyMessage);&lt;/CODE&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;CODE&gt;}&lt;/CODE&gt;&lt;/P&gt;&lt;/FONT&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://msmvps.com/aggbug.aspx?PostID=517762" width="1" height="1"&gt;</description><category domain="http://msmvps.com/blogs/williamryan/archive/tags/Compact+Framework/default.aspx">Compact Framework</category><category domain="http://msmvps.com/blogs/williamryan/archive/tags/Visual+Studio+.NET+2005/default.aspx">Visual Studio .NET 2005</category><category domain="http://msmvps.com/blogs/williamryan/archive/tags/Coding+Techniques/default.aspx">Coding Techniques</category><category domain="http://msmvps.com/blogs/williamryan/archive/tags/Mindless+Babbling/default.aspx">Mindless Babbling</category></item><item><title>Password Protection != Encryption on SqlCe</title><link>http://msmvps.com/blogs/williamryan/archive/2007/01/25/password-protection-encryption-on-sqlce.aspx</link><pubDate>Thu, 25 Jan 2007 03:50:00 GMT</pubDate><guid isPermaLink="false">d67277c4-116b-43f1-b688-e9ef184ea916:517605</guid><dc:creator>William</dc:creator><slash:comments>2</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://msmvps.com/blogs/williamryan/rsscomments.aspx?PostID=517605</wfw:commentRss><wfw:comment xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://msmvps.com/blogs/williamryan/commentapi.aspx?PostID=517605</wfw:comment><comments>http://msmvps.com/blogs/williamryan/archive/2007/01/25/password-protection-encryption-on-sqlce.aspx#comments</comments><description>&lt;P&gt;I know this probably seems pretty obvious, but believe it or not, it's a very common area of confusion.&amp;nbsp; Take a look at the following declaration:&lt;/P&gt;&lt;FONT color=#008080 size=2&gt;
&lt;P&gt;&lt;CODE&gt;String&lt;/FONT&gt;&lt;FONT size=2&gt; &lt;CODE&gt;ConnectionString = &lt;/CODE&gt;&lt;/FONT&gt;&lt;FONT color=#008080 size=2&gt;String&lt;/FONT&gt;&lt;FONT size=2&gt;.Format(&lt;/FONT&gt;&lt;FONT color=#800000 size=2&gt;@"Data Source=\BlueCuckoo.sdf;password={0}"&lt;/FONT&gt;&lt;FONT size=2&gt;, &lt;/FONT&gt;&lt;FONT color=#800000 size=2&gt;"SomeValue"&lt;/FONT&gt;&lt;FONT size=2&gt;);&lt;/CODE&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT color=#008080 size=2&gt;&lt;CODE&gt;SqlCeEngine&lt;/FONT&gt;&lt;/CODE&gt;&lt;/P&gt;&lt;/FONT&gt;&lt;FONT size=2&gt;
&lt;P&gt;&lt;CODE&gt;engine.CreateDatabase();&lt;/CODE&gt;&lt;/P&gt;
&lt;P&gt;&lt;/FONT&gt;If I asked, "Will this database be encrypted?" you should hopefully answer "No" b/c&amp;nbsp;I gave away the answer in the title. However on more than a few occassions, i've seen people&amp;nbsp;assume that it was.&amp;nbsp; If you don't explicitly add Encrypt&amp;nbsp; = True&amp;nbsp;- it isn't going to be encrypted.&amp;nbsp; And just in case you're wondering "Well, what if I want to encrypt the database but not password protect it?" , well, you wouldn't seriously ask me something like that right?&amp;nbsp;&lt;/P&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://msmvps.com/aggbug.aspx?PostID=517605" width="1" height="1"&gt;</description><category domain="http://msmvps.com/blogs/williamryan/archive/tags/Compact+Framework/default.aspx">Compact Framework</category><category domain="http://msmvps.com/blogs/williamryan/archive/tags/Visual+Studio+.NET+2005/default.aspx">Visual Studio .NET 2005</category><category domain="http://msmvps.com/blogs/williamryan/archive/tags/Coding+Techniques/default.aspx">Coding Techniques</category><category domain="http://msmvps.com/blogs/williamryan/archive/tags/Mindless+Babbling/default.aspx">Mindless Babbling</category></item><item><title>SMS Messages with Windows Mobile 5.0</title><link>http://msmvps.com/blogs/williamryan/archive/2007/01/25/sms-messages-with-windows-mobile-5-0.aspx</link><pubDate>Thu, 25 Jan 2007 02:40:00 GMT</pubDate><guid isPermaLink="false">d67277c4-116b-43f1-b688-e9ef184ea916:517555</guid><dc:creator>William</dc:creator><slash:comments>1</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://msmvps.com/blogs/williamryan/rsscomments.aspx?PostID=517555</wfw:commentRss><wfw:comment xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://msmvps.com/blogs/williamryan/commentapi.aspx?PostID=517555</wfw:comment><comments>http://msmvps.com/blogs/williamryan/archive/2007/01/25/sms-messages-with-windows-mobile-5-0.aspx#comments</comments><description>&lt;P&gt;A while ago, I was playing around creating a bot, a Snarkier version of the &lt;A href="http://blogs.msdn.com/windowsmobile/archive/2006/10/29/the-mobile-secretary-source-code.aspx"&gt;Mobile Secretary Application&lt;/A&gt;&amp;nbsp;.&amp;nbsp; Well, it was late and I got sloppy. So basically, my little app sent out a text message to everyone on one of my company's Outlook distribution lists. I learned a lot that night.&lt;/P&gt;
&lt;P&gt;So you've always been able to send SMS messages with Smartphone, but it's a lot easier now.&amp;nbsp; Sending them isn't a big deal though. The cool thing is intercepting them.&amp;nbsp; To that end, the &lt;A href="http://msdn2.microsoft.com/en-us/library/microsoft.windowsmobile.pocketoutlook.messageinterception.messageinterceptor.aspx"&gt;Message Interceptor&lt;/A&gt;&amp;nbsp;class makes it quite easy:&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;
&lt;DIV&gt;Create a module level variable (or whatever scope you need it).&lt;/DIV&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;FONT color=#0000ff size=2&gt;
&lt;P&gt;&lt;CODE&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;private&lt;/FONT&gt;&lt;FONT size=2&gt; &lt;/FONT&gt;&lt;FONT color=#008080 size=2&gt;MessageInterceptor&lt;/FONT&gt;&lt;FONT size=2&gt; Interceptor;&lt;/CODE&gt;&lt;/P&gt;&lt;/FONT&gt;
&lt;UL&gt;
&lt;LI&gt;
&lt;DIV&gt;Instantiate it in the constructor&lt;/DIV&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;FONT size=2&gt;
&lt;P&gt;&lt;CODE&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Interceptor = &lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;new&lt;/FONT&gt;&lt;FONT size=2&gt; &lt;/FONT&gt;&lt;FONT color=#008080 size=2&gt;MessageInterceptor&lt;/FONT&gt;&lt;FONT size=2&gt;(&lt;/FONT&gt;&lt;FONT color=#008080 size=2&gt;InterceptionAction&lt;/FONT&gt;&lt;FONT size=2&gt;.NotifyAndDelete, &lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;false&lt;/FONT&gt;&lt;FONT size=2&gt;);&lt;/CODE&gt;&lt;/P&gt;&lt;/FONT&gt;
&lt;UL&gt;
&lt;LI&gt;
&lt;DIV&gt;Specify a &lt;A href="http://msdn2.microsoft.com/en-us/library/microsoft.windowsmobile.pocketoutlook.messageinterception.interceptionaction.aspx"&gt;InterceptionAction&lt;/A&gt;&amp;nbsp;property. (Notify or NotifyAndDelete) - those should be self explanatory [See above]&lt;/DIV&gt;&lt;/LI&gt;
&lt;LI&gt;
&lt;DIV&gt;Specify if you want it to use the Form's thread (a must if you want to update the UI) [see above]&lt;/DIV&gt;&lt;/LI&gt;
&lt;LI&gt;
&lt;DIV&gt;Wire up a handler.&lt;/DIV&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;FONT size=2&gt;
&lt;P&gt;&lt;CODE&gt;Interceptor.MessageReceived +=&lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;new&lt;/FONT&gt;&lt;FONT size=2&gt; &lt;/FONT&gt;&lt;FONT color=#008080 size=2&gt;MessageInterceptorEventHandler&lt;/FONT&gt;&lt;FONT size=2&gt;(Interceptor_MessageReceived);&lt;/CODE&gt;&lt;/P&gt;&lt;/FONT&gt;
&lt;UL&gt;
&lt;LI&gt;
&lt;DIV&gt;Cast the e.Message object in the handler as a SmsMessage and use accordingly&lt;/DIV&gt;&lt;/LI&gt;&lt;/UL&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;FONT size=2&gt;
&lt;P&gt;&lt;CODE&gt;&lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;void&lt;/FONT&gt;&lt;FONT size=2&gt; Interceptor_MessageReceived(&lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;object&lt;/FONT&gt;&lt;FONT size=2&gt; sender, &lt;/FONT&gt;&lt;FONT color=#008080 size=2&gt;MessageInterceptorEventArgs&lt;/FONT&gt;&lt;FONT size=2&gt; e)&lt;/CODE&gt;&lt;/P&gt;
&lt;P&gt;{&lt;/P&gt;
&lt;P&gt;&lt;CODE&gt;&lt;/FONT&gt;&lt;FONT color=#008080 size=2&gt;&amp;nbsp;&amp;nbsp; SmsMessage&lt;/FONT&gt;&lt;FONT size=2&gt; IncomingMessage = (e.Message &lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;as&lt;/FONT&gt;&lt;FONT size=2&gt; &lt;/FONT&gt;&lt;FONT color=#008080 size=2&gt;SmsMessage&lt;/FONT&gt;&lt;FONT size=2&gt;);&lt;/CODE&gt;&lt;/P&gt;
&lt;P&gt;&lt;CODE&gt;&lt;/FONT&gt;&lt;FONT color=#008080 size=2&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;String&lt;/FONT&gt;&lt;FONT size=2&gt;[] ImportantStuff = &lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;new&lt;/FONT&gt;&lt;FONT size=2&gt; &lt;/FONT&gt;&lt;FONT color=#008080 size=2&gt;String&lt;/FONT&gt;&lt;FONT size=2&gt;[]{&lt;/FONT&gt;&lt;FONT color=#800000 size=2&gt;"Dog pooping"&lt;/FONT&gt;&lt;FONT size=2&gt;,&lt;/CODE&gt;&lt;/P&gt;
&lt;P&gt;&lt;CODE&gt;&lt;/FONT&gt;&lt;FONT color=#800000 size=2&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; "Vista Launch"&lt;/FONT&gt;&lt;FONT size=2&gt;,&lt;/CODE&gt;&lt;/P&gt;
&lt;P&gt;&lt;CODE&gt;&lt;/FONT&gt;&lt;FONT color=#800000 size=2&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;"Would you care to explain THIS?"&lt;/FONT&gt;&lt;FONT size=2&gt;,&lt;/CODE&gt;&lt;/P&gt;
&lt;P&gt;&lt;CODE&gt;&lt;/FONT&gt;&lt;FONT color=#800000 size=2&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; "Vicodin ES"&lt;/FONT&gt;&lt;FONT size=2&gt;,&lt;/CODE&gt;&lt;/P&gt;
&lt;P&gt;&lt;CODE&gt;&lt;/FONT&gt;&lt;FONT color=#800000 size=2&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; "Camel Toe"&lt;/FONT&gt;&lt;FONT size=2&gt;,&lt;/CODE&gt;&lt;/P&gt;
&lt;P&gt;&lt;CODE&gt;&lt;/FONT&gt;&lt;FONT color=#800000 size=2&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;"Kim"&lt;/FONT&gt;&lt;FONT size=2&gt;,&lt;/CODE&gt;&lt;/P&gt;
&lt;P&gt;&lt;CODE&gt;&lt;/FONT&gt;&lt;FONT color=#800000 size=2&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;"Mom"&lt;/FONT&gt;&lt;FONT size=2&gt;,&lt;/CODE&gt;&lt;/P&gt;
&lt;P&gt;&lt;CODE&gt;&lt;/FONT&gt;&lt;FONT color=#800000 size=2&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; "EDC"&lt;/FONT&gt;&lt;FONT size=2&gt;};&lt;/CODE&gt;&lt;/P&gt;
&lt;P&gt;&lt;CODE&gt;&lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;foreach&lt;/FONT&gt;&lt;FONT size=2&gt;(&lt;/FONT&gt;&lt;FONT color=#008080 size=2&gt;String&lt;/FONT&gt;&lt;FONT size=2&gt; s &lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;in&lt;/FONT&gt;&lt;FONT size=2&gt; ImportantStuff){&lt;/CODE&gt;&lt;/P&gt;
&lt;P&gt;&lt;CODE&gt;&lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;if&lt;/FONT&gt;&lt;FONT size=2&gt;(IncomingMessage.Body.IndexOf(s)&amp;gt; -1){&lt;/CODE&gt;&lt;/P&gt;
&lt;P&gt;&lt;CODE&gt;&lt;/FONT&gt;&lt;FONT color=#008080 size=2&gt;SmsMessage&lt;/FONT&gt;&lt;FONT size=2&gt; OutgoingMessage = &lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;new&lt;/FONT&gt;&lt;FONT size=2&gt; &lt;/FONT&gt;&lt;FONT color=#008080 size=2&gt;SmsMessage&lt;/FONT&gt;&lt;FONT size=2&gt;(e.Message.From.Address, &lt;/FONT&gt;&lt;FONT color=#800000 size=2&gt;"This is the Cuckoobot, I'm handling Bill's messages, he'll be in touch shortly"&lt;/FONT&gt;&lt;FONT size=2&gt;);&lt;/CODE&gt;&lt;/P&gt;
&lt;P&gt;&lt;CODE&gt;OutgoingMessage.Send();&lt;/FONT&gt;&lt;FONT color=#008000 size=2&gt;//Yes, I know this isn't optimal - it's demo code.&lt;/CODE&gt;&lt;/P&gt;&lt;/FONT&gt;&lt;FONT size=2&gt;
&lt;P&gt;&lt;CODE&gt;}&lt;/CODE&gt;&lt;/P&gt;
&lt;P&gt;&lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;else&lt;/FONT&gt;&lt;FONT size=2&gt;&lt;CODE&gt;{&lt;/CODE&gt;&lt;/P&gt;
&lt;P&gt;&lt;CODE&gt;&lt;/FONT&gt;&lt;FONT color=#008080 size=2&gt;SmsMessage&lt;/FONT&gt;&lt;FONT size=2&gt; OutgoingMessage = &lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;new&lt;/FONT&gt;&lt;FONT size=2&gt; &lt;/FONT&gt;&lt;FONT color=#008080 size=2&gt;SmsMessage&lt;/FONT&gt;&lt;FONT size=2&gt;(e.Message.From.Address, &lt;/FONT&gt;&lt;FONT color=#800000 size=2&gt;"This is the Cuckoobot. Your message isn't important and will have to wait."&lt;/FONT&gt;&lt;FONT size=2&gt;);&lt;/CODE&gt;&lt;/P&gt;&lt;CODE&gt;OutgoingMessage.Send();&lt;BR&gt;}&lt;BR&gt;}&lt;BR&gt;}&lt;BR&gt;&lt;/CODE&gt;&lt;/FONT&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://msmvps.com/aggbug.aspx?PostID=517555" width="1" height="1"&gt;</description><category domain="http://msmvps.com/blogs/williamryan/archive/tags/Compact+Framework/default.aspx">Compact Framework</category><category domain="http://msmvps.com/blogs/williamryan/archive/tags/Visual+Studio+.NET+2005/default.aspx">Visual Studio .NET 2005</category><category domain="http://msmvps.com/blogs/williamryan/archive/tags/Coding+Techniques/default.aspx">Coding Techniques</category><category domain="http://msmvps.com/blogs/williamryan/archive/tags/Mindless+Babbling/default.aspx">Mindless Babbling</category><category domain="http://msmvps.com/blogs/williamryan/archive/tags/Misc+Technology/default.aspx">Misc Technology</category></item><item><title>A very slick Smartphone Emulator feature</title><link>http://msmvps.com/blogs/williamryan/archive/2007/01/25/a-very-slick-smartphone-emulator-feature.aspx</link><pubDate>Thu, 25 Jan 2007 01:25:00 GMT</pubDate><guid isPermaLink="false">d67277c4-116b-43f1-b688-e9ef184ea916:517187</guid><dc:creator>William</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://msmvps.com/blogs/williamryan/rsscomments.aspx?PostID=517187</wfw:commentRss><wfw:comment xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://msmvps.com/blogs/williamryan/commentapi.aspx?PostID=517187</wfw:comment><comments>http://msmvps.com/blogs/williamryan/archive/2007/01/25/a-very-slick-smartphone-emulator-feature.aspx#comments</comments><description>&lt;P&gt;I'm finishing up some SmartPhone articles I should have posted soon but figured I could discuss this one very quickly.&amp;nbsp; Any professional application should be thoroughly tested on a physical device that it will be run on. However that's not practical for incremental builds throughout the day.&amp;nbsp; So that's where Emulators fit in right?&amp;nbsp; Anyway, one shortcoming of emulators is, rather was, the inability to duplicate functionality exclusive to the phone. How would you simulate an incoming call or SMS message?&amp;nbsp; Fortunately, that's easily resolved now.&amp;nbsp; Let's say you want to send a SMS message and test it.&amp;nbsp; Just use 425.001.0001 and viola, it will fire a SMS message directly to your emulator.&amp;nbsp; Just to show how easy it is...&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;FONT color=#0000ff size=2&gt;
&lt;P&gt;&lt;CODE&gt;private&lt;/FONT&gt;&lt;FONT size=2&gt; &lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;void&lt;/FONT&gt;&lt;FONT size=2&gt; SendSMSMessage(&lt;/FONT&gt;&lt;FONT color=#008080 size=2&gt;String&lt;/FONT&gt;&lt;FONT size=2&gt; phoneNumber, &lt;/FONT&gt;&lt;FONT color=#008080 size=2&gt;String&lt;/FONT&gt;&lt;FONT size=2&gt; message){&lt;/CODE&gt;&lt;/P&gt;
&lt;P&gt;&lt;CODE&gt;&lt;/FONT&gt;&lt;FONT color=#008080 size=2&gt;SmsMessage&lt;/FONT&gt;&lt;FONT size=2&gt; NewMessage = &lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;new&lt;/FONT&gt;&lt;FONT size=2&gt; &lt;/FONT&gt;&lt;FONT color=#008080 size=2&gt;SmsMessage&lt;/FONT&gt;&lt;FONT size=2&gt;(phoneNumber, message);&lt;/CODE&gt;&lt;/P&gt;
&lt;P&gt;&lt;CODE&gt;NewMessage.Send();&lt;/CODE&gt;&lt;/P&gt;
&lt;P&gt;&lt;CODE&gt;}&lt;/CODE&gt;&lt;/P&gt;
&lt;P&gt;Then to fire it off... &lt;FONT size=2&gt;&lt;/P&gt;
&lt;P&gt;&lt;CODE&gt;SendSMSMessage(&lt;/FONT&gt;&lt;FONT color=#800000 size=2&gt;"14250010001"&lt;/FONT&gt;&lt;FONT size=2&gt;, &lt;/FONT&gt;&lt;FONT color=#800000 size=2&gt;"Behold the greatness of the Blue Cuckoo!"&lt;/FONT&gt;&lt;FONT size=2&gt;);&lt;/CODE&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT size=2&gt;More coming shortly, I promise!&lt;/P&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://msmvps.com/aggbug.aspx?PostID=517187" width="1" height="1"&gt;</description><category domain="http://msmvps.com/blogs/williamryan/archive/tags/Compact+Framework/default.aspx">Compact Framework</category><category domain="http://msmvps.com/blogs/williamryan/archive/tags/Visual+Studio+.NET+2005/default.aspx">Visual Studio .NET 2005</category><category domain="http://msmvps.com/blogs/williamryan/archive/tags/Coding+Techniques/default.aspx">Coding Techniques</category></item><item><title>Professional Microsoft SmartPhone Programming</title><link>http://msmvps.com/blogs/williamryan/archive/2007/01/23/professional-microsoft-smartphone-programming.aspx</link><pubDate>Tue, 23 Jan 2007 00:59:00 GMT</pubDate><guid isPermaLink="false">d67277c4-116b-43f1-b688-e9ef184ea916:511937</guid><dc:creator>William</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://msmvps.com/blogs/williamryan/rsscomments.aspx?PostID=511937</wfw:commentRss><wfw:comment xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://msmvps.com/blogs/williamryan/commentapi.aspx?PostID=511937</wfw:comment><comments>http://msmvps.com/blogs/williamryan/archive/2007/01/23/professional-microsoft-smartphone-programming.aspx#comments</comments><description>&lt;P&gt;I just got a copy of &lt;A href="http://www.amazon.com/Professional-Microsoft-Smartphone-Programming-Baijian/dp/0471762938/sr=1-1/qid=1169513943/ref=pd_bbs_sr_1/104-8028824-2026339?ie=UTF8&amp;amp;s=books"&gt;Professional Microsoft SmartPhone Programming&lt;/A&gt;&amp;nbsp;and all I can say is NICE!&amp;nbsp; I always worried that the first real SmartPhone book would not go into enough depth to be useful. Not an issue here. Basically, the book is a list of "What would you like to do with Smartphone" and shows you how to do it. &lt;/P&gt;
&lt;P&gt;I need to finish reading the last two chapters before I can fully review it&amp;nbsp;but having read most of it already, this book is just plain good and if you have any interest in Smartphone Programming, it's worth its weight in gold.&lt;/P&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://msmvps.com/aggbug.aspx?PostID=511937" width="1" height="1"&gt;</description><category domain="http://msmvps.com/blogs/williamryan/archive/tags/Compact+Framework/default.aspx">Compact Framework</category><category domain="http://msmvps.com/blogs/williamryan/archive/tags/Books/default.aspx">Books</category><category domain="http://msmvps.com/blogs/williamryan/archive/tags/Visual+Studio+.NET+2005/default.aspx">Visual Studio .NET 2005</category><category domain="http://msmvps.com/blogs/williamryan/archive/tags/Misc+Technology/default.aspx">Misc Technology</category></item><item><title>Musings on the database formerly known as Sql Everywhere</title><link>http://msmvps.com/blogs/williamryan/archive/2006/11/02/Musings-on-the-database-formerly-known-as-Sql-Everywhere.aspx</link><pubDate>Thu, 02 Nov 2006 01:53:00 GMT</pubDate><guid isPermaLink="false">d67277c4-116b-43f1-b688-e9ef184ea916:237552</guid><dc:creator>William</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://msmvps.com/blogs/williamryan/rsscomments.aspx?PostID=237552</wfw:commentRss><wfw:comment xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://msmvps.com/blogs/williamryan/commentapi.aspx?PostID=237552</wfw:comment><comments>http://msmvps.com/blogs/williamryan/archive/2006/11/02/Musings-on-the-database-formerly-known-as-Sql-Everywhere.aspx#comments</comments><description>&lt;p&gt;The IM volume I received today about the &lt;a href="http://blogs.msdn.com/stevelasker/archive/2006/10/31/sql-server-everywhere-gets-yet-another-name.aspx"&gt;Rollback to SqlCE&lt;/a&gt;&amp;nbsp;issue was enough to border on overwhelming.&amp;nbsp; Between PMs and some lazy SOB CRM guy trying to get me to do all his work for him, it was hard focusing on work today. (And seriously, if you are a CRM professional, telling me you don&amp;#39;t know how to do a two table, one field inner join so i have to do it for you, makes you look like a Complete Moron.&amp;nbsp; Try &amp;#39;Bill, I&amp;#39;m really busy, can you do me a favor and write this join for me&amp;#39; next time, at least then my gag reflex won&amp;#39;t kick in).&amp;nbsp; But I digress.&lt;/p&gt;&lt;p&gt;Anyway, I&amp;#39;ve been getting a lot of email about my presentations on Everywhere.&amp;nbsp; I guess I got people thinking about a few assertions I&amp;#39;ve made.&amp;nbsp; In a nutshell, I made the following comments:&lt;/p&gt;&lt;ul&gt;&lt;li&gt;I love ADO.NET and in no way am I disparaging it, but in some scenarios, the disconnected model just doesn&amp;#39;t fit.&amp;nbsp; This has nothing to do with any deficiency in theory or implementation of ADO.NET.&amp;nbsp; A Ferrari is a great vehicle but if you need to tow a heavy boat, it&amp;#39;s not the right vehicle.&lt;/li&gt;&lt;li&gt;The one case where I don&amp;#39;t think the ADO.NET architectue is well suited to handle is single user scenarios where you are *positive* that you&amp;#39;ll only have one user connecting to your database.&lt;/li&gt;&lt;li&gt;Devices like Smartphones and PDAs proabably aren&amp;#39;t going to be targeting multiple users simultaneously and in those cases, where you are resource constrained and pretty much assured of a single user, the database-&amp;gt;dataset model is overly consumptive.&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;In case you don&amp;#39;t understand why, let me explain.&amp;nbsp; What does using a disconnected model bring to the table?&amp;nbsp; Essentially it brings tremendous scability and at least as far as the server is concerned, the possiblity of improved performance.&amp;nbsp; It is a Just In Time data access strategy that can greatly minimize locking and bottlenecks.&amp;nbsp; Like anything, it needs to be used wisely but the fact you don&amp;#39;t have to keep a persisent connection to the db is huge.&amp;nbsp; This benefit isn&amp;#39;t free.&amp;nbsp; In exchange for it you have to pay a price in RAM b/c you&amp;#39;re using cached copy of the data.&amp;nbsp; In most cases, this tradeoff is well worth it.&amp;nbsp; In some though, it makes very little sense.&amp;nbsp; Think of a Smartphone.&amp;nbsp; I have one user.&amp;nbsp; Only one person needs to be hitting the db at once.&amp;nbsp; I have the data persisted to disk and I have limited RAM.&amp;nbsp; What benefit does sticking a dataset in between my UI and the backend db bring?&amp;nbsp; None.&lt;/p&gt;&lt;p&gt;That&amp;#39;s where the beauty of using SqlCE/SqlMobile/SqlEverywhere/SqlCE comes in.&amp;nbsp; You can use the SqlCeResultset which is scrollable and updateable, and you can cut out the layer in the middle.&amp;nbsp; Your logic is trimmed down b/c updates/inserts/deletes require no work on your part provided the table you&amp;#39;re hitting is keyed.&lt;/p&gt;&lt;p&gt;But that has a problem.&amp;nbsp; What if the data needs synchronized with a db server?&amp;nbsp; Well, you can roll your own logic.&amp;nbsp; Or you can use a familiar, well documented, well tested and peer reviewed mechanism.&amp;nbsp; Unless you&amp;#39;re getting paid by the hour and you have no compunction about robbing from your clients, use the latter.&lt;/p&gt;&lt;p&gt;So in short, on a SmartPhone or PDA, SqlCe/SqlMobile/SqlEverywhere/SqlCe is a seemlingly perfect solution for data access. Now that you can run it on a desktop, the same holds for single user scenarios there.&amp;nbsp; And using a SqlCeResultset&amp;nbsp;is *not* a replacement for ADO.NET.&amp;nbsp; It&amp;#39;s still ADO.NET in every sense of the word, it&amp;#39;s just a evolution of one aspect of it. And a darned good on for single user scenarios.&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://msmvps.com/aggbug.aspx?PostID=237552" width="1" height="1"&gt;</description><category domain="http://msmvps.com/blogs/williamryan/archive/tags/Compact+Framework/default.aspx">Compact Framework</category><category domain="http://msmvps.com/blogs/williamryan/archive/tags/Data+Access/default.aspx">Data Access</category><category domain="http://msmvps.com/blogs/williamryan/archive/tags/Visual+Studio+.NET+2005/default.aspx">Visual Studio .NET 2005</category><category domain="http://msmvps.com/blogs/williamryan/archive/tags/Coding+Techniques/default.aspx">Coding Techniques</category></item><item><title>A mobile database by any other name...</title><link>http://msmvps.com/blogs/williamryan/archive/2006/11/01/A-mobile-database-by-any-other-name_2E00__2E00__2E00_.aspx</link><pubDate>Wed, 01 Nov 2006 01:01:00 GMT</pubDate><guid isPermaLink="false">d67277c4-116b-43f1-b688-e9ef184ea916:234065</guid><dc:creator>William</dc:creator><slash:comments>5</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://msmvps.com/blogs/williamryan/rsscomments.aspx?PostID=234065</wfw:commentRss><wfw:comment xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://msmvps.com/blogs/williamryan/commentapi.aspx?PostID=234065</wfw:comment><comments>http://msmvps.com/blogs/williamryan/archive/2006/11/01/A-mobile-database-by-any-other-name_2E00__2E00__2E00_.aspx#comments</comments><description>&lt;p&gt;I&amp;#39;m really torn about this post.&amp;nbsp; On the one hand Microsoft has repeated one of their most annoying feats.&amp;nbsp; However they did it with a product that I love, so I feel a little bad dogging it out.&amp;nbsp;&amp;nbsp; What am I talking about?&amp;nbsp; &lt;a href="http://blogs.msdn.com/stevelasker/archive/2006/10/31/sql-server-everywhere-gets-yet-another-name.aspx"&gt;They renamed that little database that can run on your phone again!&lt;/a&gt;&amp;nbsp; So first it was SqlCe, then it was Sql Mobile, then it was Sql Everywhere, now it&amp;#39;s SqlCe with an emphasis on the fact that CE stands for Compact Edition.&amp;nbsp;&amp;nbsp;I&amp;#39;ll stop&amp;nbsp;now&amp;nbsp;before I stick my foot in my mouth ;-)&amp;nbsp; &lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://msmvps.com/aggbug.aspx?PostID=234065" width="1" height="1"&gt;</description><category domain="http://msmvps.com/blogs/williamryan/archive/tags/Compact+Framework/default.aspx">Compact Framework</category><category domain="http://msmvps.com/blogs/williamryan/archive/tags/Data+Access/default.aspx">Data Access</category></item><item><title>Cool things you can do with Windows Mobile</title><link>http://msmvps.com/blogs/williamryan/archive/2006/10/24/Cool-things-you-can-do-with-Windows-Mobile.aspx</link><pubDate>Tue, 24 Oct 2006 00:11:00 GMT</pubDate><guid isPermaLink="false">d67277c4-116b-43f1-b688-e9ef184ea916:203556</guid><dc:creator>William</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://msmvps.com/blogs/williamryan/rsscomments.aspx?PostID=203556</wfw:commentRss><wfw:comment xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://msmvps.com/blogs/williamryan/commentapi.aspx?PostID=203556</wfw:comment><comments>http://msmvps.com/blogs/williamryan/archive/2006/10/24/Cool-things-you-can-do-with-Windows-Mobile.aspx#comments</comments><description>There&amp;#39;s a lot of possiblity &lt;a href="http://blogs.msdn.com/windowsmobile/archive/2006/10/23/the-mobile-secretary.aspx"&gt;to create cool stuff like this on Windows Mobile&lt;/a&gt;&amp;nbsp;.&amp;nbsp; Devices are waiting for a compelling app and stuff like this, or like &lt;a href="http://www.brains-n-brawn.com"&gt;Casey&lt;/a&gt; often does are going to drive us to finding it (my money is on Casey to actuall invent it but that&amp;#39;s another story).&amp;nbsp; Anyway, very cool and practical post.&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://msmvps.com/aggbug.aspx?PostID=203556" width="1" height="1"&gt;</description><category domain="http://msmvps.com/blogs/williamryan/archive/tags/Compact+Framework/default.aspx">Compact Framework</category><category domain="http://msmvps.com/blogs/williamryan/archive/tags/Coding+Techniques/default.aspx">Coding Techniques</category><category domain="http://msmvps.com/blogs/williamryan/archive/tags/Misc+Technology/default.aspx">Misc Technology</category></item><item><title>Just activated my Motorola Q</title><link>http://msmvps.com/blogs/williamryan/archive/2006/06/04/99179.aspx</link><pubDate>Sun, 04 Jun 2006 01:14:00 GMT</pubDate><guid isPermaLink="false">d67277c4-116b-43f1-b688-e9ef184ea916:99179</guid><dc:creator>William</dc:creator><slash:comments>6</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://msmvps.com/blogs/williamryan/rsscomments.aspx?PostID=99179</wfw:commentRss><wfw:comment xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://msmvps.com/blogs/williamryan/commentapi.aspx?PostID=99179</wfw:comment><comments>http://msmvps.com/blogs/williamryan/archive/2006/06/04/99179.aspx#comments</comments><description>One more thing I 'needed' was the Motorola Q. Well, I just got it activated and have already used it. So far, I'm in absolute awe of the thing. Personally, I've been a bigger fan or Pocket PC Phone Edition devices than I have been of Smartphones, but...(&lt;a href="http://msmvps.com/blogs/williamryan/archive/2006/06/04/99179.aspx"&gt;read more&lt;/a&gt;)&lt;img src="http://msmvps.com/aggbug.aspx?PostID=99179" width="1" height="1"&gt;</description><category domain="http://msmvps.com/blogs/williamryan/archive/tags/Compact+Framework/default.aspx">Compact Framework</category><category domain="http://msmvps.com/blogs/williamryan/archive/tags/Misc+Technology/default.aspx">Misc Technology</category></item><item><title>MEDC Update</title><link>http://msmvps.com/blogs/williamryan/archive/2006/05/05/93591.aspx</link><pubDate>Fri, 05 May 2006 13:12:00 GMT</pubDate><guid isPermaLink="false">d67277c4-116b-43f1-b688-e9ef184ea916:93591</guid><dc:creator>William</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://msmvps.com/blogs/williamryan/rsscomments.aspx?PostID=93591</wfw:commentRss><wfw:comment xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://msmvps.com/blogs/williamryan/commentapi.aspx?PostID=93591</wfw:comment><comments>http://msmvps.com/blogs/williamryan/archive/2006/05/05/93591.aspx#comments</comments><description>&lt;P&gt;&lt;FONT face=Verdana size=2&gt;I'm flying out to &lt;A href="http://www.medc2006.com/"&gt;http://www.medc2006.com/&lt;/A&gt;&amp;nbsp;early Tuesday morning.&amp;nbsp; Last week when I went to Atlanta, i left about 4:00 AM and the trip was awful. The worst radio time in the world is the time in between 5:00 AM and 6:00 AM.&amp;nbsp;They were having some satellite troubles so I could only get Lex and Terry for 20 minutes (to describe their show as stupid would be an understatement, to describe listening to them as excrutiating would be an even bigger understatement). Unimportant air time is when all the Public service announcements happen and I swear, if something is "Brought to you by the Ad Council", it's a sure sign that whatever 'it' is will be totally stupid.&amp;nbsp; Anyway, I sat in traffic for forever.&amp;nbsp; I don't know which city has worse traffic, Atlanta or Seattle, but I don't recall ever hitting traffic in Seattle at 6:30 AM.&amp;nbsp; I'm flying out of Hartsfield on Tuesday at 8:00 AM, so if I leave by 2:00 AM, I should be able to get there and get through security in a timely manner.&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face=Verdana size=2&gt;Scheduled to arrive in Vegas at 11:15 AM.&amp;nbsp; They have us staying at &lt;A href="http://www.venetian.com/"&gt;http://www.venetian.com/&lt;/A&gt;&amp;nbsp;which looks pretty cool. I haven't been to Vegas before in any real sense. I've flown through, been there for a few hours on business, but never got to really hang out. Gambling is one compulsive behavior I fortunately don't have but looks like there's plenty to do otherwise. I'll be blogging MEDC live [I'll be working at the conference on Tuesday and Wednesday] and should have some cool pictures and technology updates. Should finally be able to pick up a new &lt;A href="http://www.motorola.com/motoinfo/product/details.jsp?globalObjectId=113"&gt;Motorola Q&lt;/A&gt;&amp;nbsp; and I'm sure there will be some other killer gadgets out there. Drop me a line if you're going to be there...&lt;/FONT&gt;&lt;/P&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://msmvps.com/aggbug.aspx?PostID=93591" width="1" height="1"&gt;</description><category domain="http://msmvps.com/blogs/williamryan/archive/tags/Compact+Framework/default.aspx">Compact Framework</category><category domain="http://msmvps.com/blogs/williamryan/archive/tags/MEDC/default.aspx">MEDC</category></item><item><title>ActiveSync 4.2 Now Available</title><link>http://msmvps.com/blogs/williamryan/archive/2006/04/27/92797.aspx</link><pubDate>Thu, 27 Apr 2006 19:40:00 GMT</pubDate><guid isPermaLink="false">d67277c4-116b-43f1-b688-e9ef184ea916:92797</guid><dc:creator>William</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://msmvps.com/blogs/williamryan/rsscomments.aspx?PostID=92797</wfw:commentRss><wfw:comment xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://msmvps.com/blogs/williamryan/commentapi.aspx?PostID=92797</wfw:comment><comments>http://msmvps.com/blogs/williamryan/archive/2006/04/27/92797.aspx#comments</comments><description>&lt;FONT face=Verdana size=2&gt;I meant to post this last night but got sidetracked. Anyway, &lt;A href="http://www.microsoft.com/windowsmobile/downloads/activesync42.mspx"&gt;download it here&lt;/A&gt;&amp;nbsp;.&lt;/FONT&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://msmvps.com/aggbug.aspx?PostID=92797" width="1" height="1"&gt;</description><category domain="http://msmvps.com/blogs/williamryan/archive/tags/Compact+Framework/default.aspx">Compact Framework</category><category domain="http://msmvps.com/blogs/williamryan/archive/tags/Misc+Technology/default.aspx">Misc Technology</category></item><item><title>Motorola Q</title><link>http://msmvps.com/blogs/williamryan/archive/2006/04/04/89309.aspx</link><pubDate>Tue, 04 Apr 2006 17:55:00 GMT</pubDate><guid isPermaLink="false">d67277c4-116b-43f1-b688-e9ef184ea916:89309</guid><dc:creator>William</dc:creator><slash:comments>2</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://msmvps.com/blogs/williamryan/rsscomments.aspx?PostID=89309</wfw:commentRss><wfw:comment xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://msmvps.com/blogs/williamryan/commentapi.aspx?PostID=89309</wfw:comment><comments>http://msmvps.com/blogs/williamryan/archive/2006/04/04/89309.aspx#comments</comments><description>&lt;FONT face=Verdana size=2&gt;I don't really think I can say I *need* one with a straight face,&amp;nbsp;the &amp;nbsp;&lt;A href="http://www.motorola.com/motoinfo/product/details/0,,113,00.html"&gt;a new Motorola Q&lt;/A&gt;&amp;nbsp;is just what I need. Well, either a Q or a &lt;A href="http://www.mobileplanet.com/product.asp?code=130798"&gt;Samsung i1320&lt;/A&gt;&amp;nbsp;but either way,they look really damn cool.&amp;nbsp; One of the really kick a55 features about it is the fact the resolution can go landscape. If you want to develop for it, there's a &lt;A href="http://www.microsoft.com/downloads/details.aspx?FamilyId=EB580A44-CB40-4BE1-9FF3-E224BF669CD0&amp;amp;displaylang=en"&gt;new emulator that you'll need&lt;/A&gt;&amp;nbsp;.&amp;nbsp; &lt;/FONT&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://msmvps.com/aggbug.aspx?PostID=89309" width="1" height="1"&gt;</description><category domain="http://msmvps.com/blogs/williamryan/archive/tags/News/default.aspx">News</category><category domain="http://msmvps.com/blogs/williamryan/archive/tags/Compact+Framework/default.aspx">Compact Framework</category><category domain="http://msmvps.com/blogs/williamryan/archive/tags/Misc+Technology/default.aspx">Misc Technology</category></item><item><title>MEDC 2006 - I'll be there.</title><link>http://msmvps.com/blogs/williamryan/archive/2006/03/26/87803.aspx</link><pubDate>Sat, 25 Mar 2006 23:12:00 GMT</pubDate><guid isPermaLink="false">d67277c4-116b-43f1-b688-e9ef184ea916:87803</guid><dc:creator>William</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://msmvps.com/blogs/williamryan/rsscomments.aspx?PostID=87803</wfw:commentRss><wfw:comment xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://msmvps.com/blogs/williamryan/commentapi.aspx?PostID=87803</wfw:comment><comments>http://msmvps.com/blogs/williamryan/archive/2006/03/26/87803.aspx#comments</comments><description>&lt;P&gt;&lt;FONT face=Verdana size=2&gt;&lt;A href="http://www.medc2006.com/"&gt;MEDC 2006&lt;/A&gt;&amp;nbsp;kicks a55 and I'm lucky enough to go this year.&amp;nbsp; Last year I had issues with not being able to get off of work, but that won't be a problem this year. If you're going to &lt;A href="http://www.medc2006.com/"&gt;MEDC 2006&lt;/A&gt;, let me know and hopefully we can hook up.&amp;nbsp; I'm trying to be&amp;nbsp; a responsible adult these days so I probably won't be as entertaining as I would have been a few years ago, but it'll still be a fun time.&lt;/FONT&gt;&lt;/P&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://msmvps.com/aggbug.aspx?PostID=87803" width="1" height="1"&gt;</description><category domain="http://msmvps.com/blogs/williamryan/archive/tags/News/default.aspx">News</category><category domain="http://msmvps.com/blogs/williamryan/archive/tags/Compact+Framework/default.aspx">Compact Framework</category><category domain="http://msmvps.com/blogs/williamryan/archive/tags/Me/default.aspx">Me</category></item><item><title>The new JASJAR Arrived</title><link>http://msmvps.com/blogs/williamryan/archive/2005/11/02/74081.aspx</link><pubDate>Wed, 02 Nov 2005 20:39:00 GMT</pubDate><guid isPermaLink="false">d67277c4-116b-43f1-b688-e9ef184ea916:74081</guid><dc:creator>William</dc:creator><slash:comments>7</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://msmvps.com/blogs/williamryan/rsscomments.aspx?PostID=74081</wfw:commentRss><wfw:comment xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://msmvps.com/blogs/williamryan/commentapi.aspx?PostID=74081</wfw:comment><comments>http://msmvps.com/blogs/williamryan/archive/2005/11/02/74081.aspx#comments</comments><description>&lt;FONT face=Tahoma size=2&gt;I just got &lt;A href="http://www.imate.com/DETAILS_JASJAR.htm"&gt;Jas Jar&lt;/A&gt;&amp;nbsp;and it's too cool for words.&amp;nbsp; It's Tablet PC meets PDA meets phone.&amp;nbsp; Really, it is.&amp;nbsp; You can friggin video teleconference on the friggin thing.&amp;nbsp; I gotta lot of learning to do, will post pics and my new killer app shortly.&amp;nbsp; Mike Fosmire has to be the coolest MVP lead a guy could have and Todd, you totally rock too.&amp;nbsp; Thanks!&lt;/FONT&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://msmvps.com/aggbug.aspx?PostID=74081" width="1" height="1"&gt;</description><category domain="http://msmvps.com/blogs/williamryan/archive/tags/Compact+Framework/default.aspx">Compact Framework</category></item><item><title>Oracle 10g Lite ADO.NET Adapter</title><link>http://msmvps.com/blogs/williamryan/archive/2005/07/18/58024.aspx</link><pubDate>Tue, 19 Jul 2005 03:36:00 GMT</pubDate><guid isPermaLink="false">d67277c4-116b-43f1-b688-e9ef184ea916:58024</guid><dc:creator>William</dc:creator><slash:comments>5</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://msmvps.com/blogs/williamryan/rsscomments.aspx?PostID=58024</wfw:commentRss><wfw:comment xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://msmvps.com/blogs/williamryan/commentapi.aspx?PostID=58024</wfw:comment><comments>http://msmvps.com/blogs/williamryan/archive/2005/07/18/58024.aspx#comments</comments><description>&lt;FONT face=Tahoma size=2&gt;Ok, so I read about it on &lt;A href="http://blogs.msdn.com/mikezintel/"&gt;Mike's&lt;/A&gt;&amp;nbsp;as well as the &lt;A href="http://blogs.msdn.com/netcfteam/archive/2005/06/23/431948.aspx"&gt;Compact Framework Team&lt;/A&gt;&amp;nbsp;but I sure can't find it anywhere.&amp;nbsp; I'm probably just having a case of idiocy flare up, but I've been trying to find it for 30 minutes now.&amp;nbsp; If you know where I can grab it, please let me know.&lt;/FONT&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://msmvps.com/aggbug.aspx?PostID=58024" width="1" height="1"&gt;</description><category domain="http://msmvps.com/blogs/williamryan/archive/tags/Compact+Framework/default.aspx">Compact Framework</category><category domain="http://msmvps.com/blogs/williamryan/archive/tags/Data+Access/default.aspx">Data Access</category><category domain="http://msmvps.com/blogs/williamryan/archive/tags/Visual+Studio+.NET+2005/default.aspx">Visual Studio .NET 2005</category></item><item><title>Chris Tacke is the Man</title><link>http://msmvps.com/blogs/williamryan/archive/2005/05/19/47943.aspx</link><pubDate>Thu, 19 May 2005 18:00:00 GMT</pubDate><guid isPermaLink="false">d67277c4-116b-43f1-b688-e9ef184ea916:47943</guid><dc:creator>William</dc:creator><slash:comments>1</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://msmvps.com/blogs/williamryan/rsscomments.aspx?PostID=47943</wfw:commentRss><wfw:comment xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://msmvps.com/blogs/williamryan/commentapi.aspx?PostID=47943</wfw:comment><comments>http://msmvps.com/blogs/williamryan/archive/2005/05/19/47943.aspx#comments</comments><description>&lt;P&gt;&lt;FONT face=Tahoma size=2&gt;Skicow just sent me &lt;A href="http://dotnet.sys-con.com/read/84123.htm"&gt;this SPOT Link&lt;/A&gt;&amp;nbsp;from &lt;A href="http://blog.opennetcf.org/ctacke/default.aspx"&gt;Chris Tacke&lt;/A&gt;.&amp;nbsp; I remember the first time I met Chris back at the MVP summit and he was discussing throwing the CLR on a PIC and possibly creating OpenNet.PIC which would be cool indeed.&amp;nbsp; If there's a more impressive bunch of individuals sitting around than the &lt;A href="http://www.opennetcf.org/CategoryView.aspx?category=Home"&gt;OpenNetCf Team&lt;/A&gt;&amp;nbsp;- I sure don't know who they are.&amp;nbsp; At the moment, I'm in over my head on a few other projects and when I get out from under it, my speech server is going to get down with Media Center and X10 (yes, i'm mentioning it again in a effort to pressure myself into getting it done in a reasonable amount of time), but when I get some free time, I would definitely like to get down doing some SPOT stuff.&lt;/FONT&gt;&lt;/P&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://msmvps.com/aggbug.aspx?PostID=47943" width="1" height="1"&gt;</description><category domain="http://msmvps.com/blogs/williamryan/archive/tags/Compact+Framework/default.aspx">Compact Framework</category><category domain="http://msmvps.com/blogs/williamryan/archive/tags/MVP+Stuff/default.aspx">MVP Stuff</category></item></channel></rss>