<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Global Nerdy &#187; Windows Mobile</title>
	<atom:link href="http://www.globalnerdy.com/tag/windows-mobile/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.globalnerdy.com</link>
	<description>Tech Evangelist Joey deVilla on software development, tech news and other nerdy stuff</description>
	<lastBuildDate>Thu, 19 Nov 2009 02:16:42 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.8.6</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>The New Yorker&#8217;s Hallowe&#8217;en Cover and Why You Should Go to WinMoDevCamp</title>
		<link>http://www.globalnerdy.com/2009/11/02/the-new-yorkers-halloween-cover-and-why-you-should-go-to-winmodevcamp/</link>
		<comments>http://www.globalnerdy.com/2009/11/02/the-new-yorkers-halloween-cover-and-why-you-should-go-to-winmodevcamp/#comments</comments>
		<pubDate>Mon, 02 Nov 2009 19:36:12 +0000</pubDate>
		<dc:creator>Joey deVilla</dc:creator>
				<category><![CDATA[Hardware and Gadgets]]></category>
		<category><![CDATA[Life]]></category>
		<category><![CDATA[Software and Services]]></category>
		<category><![CDATA[mobile]]></category>
		<category><![CDATA[Pop Culture]]></category>
		<category><![CDATA[Windows Mobile]]></category>

		<guid isPermaLink="false">http://www.globalnerdy.com/2009/11/02/the-new-yorkers-halloween-cover-and-why-you-should-go-to-winmodevcamp/</guid>
		<description><![CDATA[The New Yorker’s Hallowe’en Cover
I make sure to keep an eye on how technology pops up in mainstream non-geek culture because it’s a good way to gauge the techno-cultural zeitgeist and see how technologies are being received by the public at large. As techies, we’re all too happy to be early adopters and are willing [...]]]></description>
			<content:encoded><![CDATA[<p></p><h3><em>The New Yorker’s</em> Hallowe’en Cover</h3>
<p><strong>I make sure to keep an eye on how technology pops up in mainstream non-geek culture because it’s a good way to gauge the techno-cultural <em><a href="http://en.wikipedia.org/wiki/Zeitgeist">zeitgeist</a></em> and see how technologies are being received by the public at large.</strong> As techies, we’re all too happy to be early adopters and are willing to put up with usability problems, annoyances and extra work just to have the latest and greatest gear for its own sake. We have a tendency to forget that many non-techies don’t adopt technologies while they’re still new and need a techie mindset to use; they&#8217; wait until technologies evolve to the point where the benefits outweigh the annoyances.</p>
<p>The current issue of <em>The New Yorker</em> has a Hallowe’en-themed cover that hints at how much smartphones have worked their way into everyday people’s lives:</p>
<p><img style="border-right-width: 0px; display: block; float: none; border-top-width: 0px; border-bottom-width: 0px; margin-left: auto; border-left-width: 0px; margin-right: auto" title="New Yorker Halloween Cover" border="0" alt="New Yorker Halloween Cover" src="http://www.globalnerdy.com/wordpress/wp-content/uploads/2009/11/NewYorkerHalloweenCover.jpg" width="500" height="687" /></p>
<p>Here&#8217;s a closeup:</p>
<p><img style="border-right-width: 0px; display: block; float: none; border-top-width: 0px; border-bottom-width: 0px; margin-left: auto; border-left-width: 0px; margin-right: auto" title="New Yorker Halloween Cover closeup" border="0" alt="New Yorker Halloween Cover closeup" src="http://www.globalnerdy.com/wordpress/wp-content/uploads/2009/11/NewYorkerHalloweenCovercloseup.jpg" width="500" height="382" /></p>
<p>(I’ll bet that at least one of you went out Saturday night trick-or-treating and checked your smartphone.)</p>
<p><strong>The practical upshot of all this: the mobile platform is in your future.</strong> It’s the one that people take everywhere and it’s growing in power in leaps and bounds the way desktop (and later, laptop) computers did in the ‘80s and ‘90s.</p>
<h3>WinMoDevCamp</h3>
<p align="center"><a href="http://www.globalnerdy.com/2009/10/29/winmodevcamp-toronto-wednesday-november-11th-at-microsofts-mississauga-office/"><img style="border-bottom: 0px; border-left: 0px; border-top: 0px; border-right: 0px" border="0" alt="WinMoDevCamp banner" src="http://www.globalnerdy.com/wordpress/wp-content/uploads/2009/10/winmodevcamp2.jpg" width="600" height="117" /></a></p>
<p><strong>Speaking of mobile platforms, we’re holding a full-day workshop on Windows Phone development called WinMoDevCamp Toronto</strong> next Wednesday, November 11th&#160; from noon to 9 p.m. at the Microsoft Mississauga offices (<a href="http://www.bing.com/maps/default.aspx?v=2&amp;FORM=LMLTCP&amp;cp=43.61362~-79.753421&amp;style=r&amp;lvl=13&amp;tilt=-90&amp;dir=0&amp;alt=-1000&amp;phx=0&amp;phy=0&amp;phscl=1&amp;where1=1950%20Meadowvale%20Blvd%2C%20Mississauga%20ON&amp;encType=1">1950 Meadowvale Boulevard</a>). It’s free of charge and your chance to learn how to develop applications for Windows Phone.</p>
<ul>
<li><strong>For more information about WinMoDevCamp,</strong> <a href="http://www.globalnerdy.com/2009/10/29/winmodevcamp-toronto-wednesday-november-11th-at-microsofts-mississauga-office/">see my earlier WinMoDevCamp article</a>. </li>
<li><strong>To register for WinMoDevCamp (remember, it’s free!),</strong> <a href="http://www.rsvpportal.com/microsoft/Windows_phone/nov11/">visit the registration page</a>. </li>
</ul>
<p class="alert"><a href="http://blogs.msdn.com/cdndevs/archive/2009/11/02/the-new-yorker-s-hallowe-en-cover-and-why-you-should-go-to-winmodevcamp.aspx">This article also appears in <em>Canadian Developer Connection</em>.</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.globalnerdy.com/2009/11/02/the-new-yorkers-halloween-cover-and-why-you-should-go-to-winmodevcamp/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>WinMoDevCamp: Save the Date &#8211; November 11th!</title>
		<link>http://www.globalnerdy.com/2009/10/19/winmodevcamp-save-the-date-november-11th/</link>
		<comments>http://www.globalnerdy.com/2009/10/19/winmodevcamp-save-the-date-november-11th/#comments</comments>
		<pubDate>Mon, 19 Oct 2009 19:53:52 +0000</pubDate>
		<dc:creator>Joey deVilla</dc:creator>
				<category><![CDATA[Hardware and Gadgets]]></category>
		<category><![CDATA[Meetups]]></category>
		<category><![CDATA[Programming]]></category>
		<category><![CDATA[Software and Services]]></category>
		<category><![CDATA[Toronto]]></category>
		<category><![CDATA[Camps]]></category>
		<category><![CDATA[free as in beer]]></category>
		<category><![CDATA[mobile]]></category>
		<category><![CDATA[Windows Mobile]]></category>
		<category><![CDATA[WinMoDevCamp]]></category>
		<category><![CDATA[workshops]]></category>

		<guid isPermaLink="false">http://www.globalnerdy.com/2009/10/19/winmodevcamp-save-the-date-november-11th/</guid>
		<description><![CDATA[ 
On Wednesday, November 11th, we’ll be hosting the Toronto-area WinMoDevCamp at Microsoft Canada’s headquarters! It’ll be the fifth in a series of worldwide “Camp” style workshops focusing on developing applications for Windows Mobile (including the upcoming Windows Mobile 6.5).
WinMoDevCamp – short for Windows Mobile Developer Camp – was inspired by events like BarCamp, SuperHappyDevHouse [...]]]></description>
			<content:encoded><![CDATA[<p></p><p><a href="http://winmodevcamp.org/"><img style="border-right-width: 0px; display: block; float: none; border-top-width: 0px; border-bottom-width: 0px; margin-left: auto; border-left-width: 0px; margin-right: auto" title="WinMoDevCamp banner" border="0" alt="WinMoDevCamp banner" src="http://www.globalnerdy.com/wordpress/wp-content/uploads/2009/10/winmodevcamp1.jpg" width="600" height="117" /></a> </p>
<p><strong>On Wednesday, November 11th, we’ll be hosting the Toronto-area <a href="http://winmodevcamp.org/">WinMoDevCamp</a> at Microsoft Canada’s headquarters!</strong> It’ll be the fifth in a series of worldwide “Camp” style workshops focusing on developing applications for Windows Mobile (including the upcoming <a href="http://developer.windowsmobile.com/">Windows Mobile 6.5</a>).</p>
<p><strong>WinMoDevCamp</strong> – short for <em>Windows Mobile Developer Camp</em> – was inspired by events like <a href="http://en.wikipedia.org/wiki/BarCamp">BarCamp</a>, <a href="http://en.wikipedia.org/wiki/SuperHappyDevHouse">SuperHappyDevHouse</a> and the original <a href="http://www.iphonedevcamp.org/">iPhoneDevCamp</a>. It’s a free-of-charge get-together where mobile developers, web developers, .NET developers, UI designers, testers, device manufacturers and Canadian mobile carriers gather, team up and work in ad-hoc mobile development projects for the day.</p>
<p>You’ll get to:</p>
<ul>
<li>Create new applications for the Windows Mobile Platform </li>
<li>Meet and work side-by-side with people from the Microsoft Mobile Developer Experience team </li>
<li>Migrate existing mobile apps from the iPhone, BlackBerry and Palm Pre to the Windows Mobile platform </li>
<li>Create applications to support Windows Enterprise Applications </li>
<li>Meet with representatives from Canadian mobile phone companies, including Bell, Rogers, Telus and WIND </li>
<li>Test and optimize applications for Windows Mobile 6.5 </li>
</ul>
<p><strong>The event is free-as-in-beer</strong> (in other words, it costs nothing to attend), and you’ll be able to sign up to attend soon – watch this space!</p>
<p class="alert"><a href="http://blogs.msdn.com/cdndevs/archive/2009/10/19/winmodevcamp-save-the-date-november-11th.aspx">This article also appears in <em>Canadian Developer Connection</em>.</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.globalnerdy.com/2009/10/19/winmodevcamp-save-the-date-november-11th/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>The &#8220;Developing for the Microsoft-Based Platform&#8221; Track at TechDays Canada</title>
		<link>http://www.globalnerdy.com/2009/09/28/the-developing-for-the-microsoft-based-platform-track-at-techdays-canada/</link>
		<comments>http://www.globalnerdy.com/2009/09/28/the-developing-for-the-microsoft-based-platform-track-at-techdays-canada/#comments</comments>
		<pubDate>Mon, 28 Sep 2009 13:02:50 +0000</pubDate>
		<dc:creator>Joey deVilla</dc:creator>
				<category><![CDATA[Meetups]]></category>
		<category><![CDATA[Programming]]></category>
		<category><![CDATA[Toronto]]></category>
		<category><![CDATA[What Joey Did]]></category>
		<category><![CDATA[ASP.NET MVC]]></category>
		<category><![CDATA[conferences]]></category>
		<category><![CDATA[Expression Blend]]></category>
		<category><![CDATA[REST]]></category>
		<category><![CDATA[SharePoint]]></category>
		<category><![CDATA[Silverlight]]></category>
		<category><![CDATA[SOLID]]></category>
		<category><![CDATA[TechDays]]></category>
		<category><![CDATA[WCF]]></category>
		<category><![CDATA[Windows 7]]></category>
		<category><![CDATA[Windows Mobile]]></category>
		<category><![CDATA[Windows Phone]]></category>
		<category><![CDATA[WPF]]></category>

		<guid isPermaLink="false">http://www.globalnerdy.com/2009/09/28/the-developing-for-the-microsoft-based-platform-track-at-techdays-canada/</guid>
		<description><![CDATA[
In planning this year’s TechDays conference, we made some significant changes to the developer tracks: they were reformulated into:

A “tools and techniques” track, called Developer Fundamentals and Best Practices, for which my friend and fellow Developer Evangelist John Bristowe is the track lead 
A “technologies” track, called Developing for the Microsoft-Based Platform, which I lead. [...]]]></description>
			<content:encoded><![CDATA[<p></p><p><a href="http://techdays.ca/"><img style="border-right-width: 0px; display: block; float: none; border-top-width: 0px; border-bottom-width: 0px; margin-left: auto; border-left-width: 0px; margin-right: auto" title="Microsoft TechDays Canada 2009: 2 days - 7 cities - 5 tracks - 40 sessions - plus more!" border="0" alt="Microsoft TechDays Canada 2009: 2 days - 7 cities - 5 tracks - 40 sessions - plus more!" src="http://www.globalnerdy.com/wordpress/wp-content/uploads/2009/09/techdays_2009_banner_31.jpg" width="450" height="259" /></a></p>
<p><strong>In planning this year’s <a href="http://techdays.ca/">TechDays</a> conference, we made some significant changes to the developer tracks: they were reformulated into:</strong></p>
<ul>
<li><strong>A “tools and techniques” track, called <em>Developer Fundamentals and Best Practices</em>,</strong> for which my friend and fellow Developer Evangelist John Bristowe is the track lead </li>
<li><strong>A “technologies” track, called <em>Developing for the Microsoft-Based Platform</em>,</strong> which I lead. </li>
</ul>
<p>As the track lead for the <em>Developing for the Microsoft-Based Platform</em> track at <a href="http://techdays.ca/">TechDays Canada 2009 conference</a>, I thought I’d take the time to talk about it and praise its virtues.</p>
<h3>Designing the Track</h3>
<p>Each track lead has the responsibility of designing his or her track. We pored over all the sessions from TechEd North America 2009, consulted with developers or IT pros for their opinions on what topic they’d like covered and came up with a selection of 8 sessions for each track.</p>
<p>When choosing my sessions, I kept these philosophies in mind:</p>
<ul>
<li><strong>TechDays is about <em>current</em> tools, technologies and techniques.</strong> That means talking about stuff you can get your hands on and use in production right now: Visual Studio 2008, .NET 3.5, SQL Server 2008, and so on. Visual Studio 2010, .NET 4.0 and Azure are fascinating tools and tech, but they’re not yet on the market, so they’re not in TechDays. We made a few exceptions for a couple of things that are coming out right around now: version 3.0 of Silverlight and the Expression suite and Windows 7. </li>
<li><strong>TechDays is about giving the audience the biggest bang for the buck.</strong> It’s more than simply taking the content from the TechEd North America conference (which has a steep registration fee and you have to also factor in the costs of flying to and staying in New Orleans) and bringing it close to home with local speakers and a reasonable price tag. It’s also about choosing the content that best serves an an audience that uses Microsoft tools and tech in their day-to-day work. There’s no point in rehashing presentations that the audience has already seen a dozen times before, and neither does it do any good to cover topics that are interesting but impractical. I tried to strike a balance &#8212; in choosing the sessions for my track, I kept this question in mind: <em>What sort of things will this audience be using that they aren’t using yet?</em> </li>
<li><strong>TechDays is more than just throwing random information at the audience.</strong> A track needs to be more than just a collection of sessions simply thrown together. It works best if it’s a set of sessions whose topics fit together to form a cohesive whole, almost as if telling a story. While picking out the track’s sessions and arranging them, I tried to set things up in such a way to best show the possibilities that open up when you develop on the Microsoft-based platform.&#160; </li>
</ul>
<h3>The <em>Developing for the Microsoft-Based Platform</em> Track</h3>
<p>The <em>Developing for the Microsoft-Based Platform</em> track breaks down into four topic areas, as shown in the diagram below:</p>
<p><img style="border-right-width: 0px; display: block; float: none; border-top-width: 0px; border-bottom-width: 0px; margin-left: auto; border-left-width: 0px; margin-right: auto" title="platform_track_chart" border="0" alt="platform_track_chart" src="http://www.globalnerdy.com/wordpress/wp-content/uploads/2009/09/platform_track_chart.jpg" width="550" height="493" /> </p>
<p>The topic areas are:</p>
<ol>
<li>Day 1 morning: Rich UIs </li>
<li>Day 1 afternoon: Client Tech </li>
<li>Day 2 morning: ASP.NET MVC </li>
<li>Day 2 afternoon: Web Services </li>
</ol>
<p>They’re explained in greater detail below.</p>
<h3>Day 1 – Front End: User Interface and Experience</h3>
<p><strong>Day 1 of the <em>Developing for the Microsoft-Based Platform </em>is about building the front end,</strong> that layer of our applications with which the user interacts, and about giving the user the best experience possible.</p>
<p>The morning will be an introduction to the latest version – version 3 – of our rich interface technology Silverlight and our rich interface-building tool, Expression Blend. In the afternoon, we’ll shift the focus to building client technology by looking at the PRISM guidelines for building applications with modular Silverlight- and WPF-based front ends and the API code pack for building .NET applications that take advantage of Windows 7’s new UI features.</p>
<p>The tools and technologies covered on Day 1 are:</p>
<ul>
<li>Silverlight 3 </li>
<li>Expression Blend 3 </li>
<li>WPF </li>
<li>Windows 7 </li>
<li>Windows 7 API Code Pack for the .NET Framework </li>
<li>Windows Mobile </li>
</ul>
<h4>Day 1 Morning: Rich UIs    <br /></h4>
<p> <em><strong>
<p><em><strong>Track Introduction            <br /></strong></em><em><strong>Presented by Joey deVilla            <br /><em><strong>9:00 a.m. – 9:15 a,m.</strong></em></strong></em></p>
</p>
<p>   </strong><i>     <br /><strong>Session 1: What’s New in Silverlight 3        <br />Presented by Cory Fowler         <br />9:15 a.m. – 10:30 a.m.         <br /></strong></i><img style="border-right-width: 0px; margin: 0px 0px 10px 15px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="Cory Fowler" border="0" alt="Cory Fowler" align="right" src="http://www.globalnerdy.com/wordpress/wp-content/uploads/2009/09/CoryFowler.jpg" width="86" height="125" /> Rich internet applications just got richer! Silverlight 3 is packed with new features and improvements that your users will notice, from pixel shaders to perspective 3D to animation enhancements to bitmap APIs to HD video. We think you’ll also be impressed by the features for developers, such as the updated style model, data binding improvements, better resource handling, and a tuned-up Web services stack. In this session, we’ll explore new features of Silverlight 3 as we build a Silverlight-based application using Expression Blend 3 and Visual Studio.</em>
<p><strong><i>Session 2: Expression Blend for Developers        <br />Presented by Barry Gervin         <br />10:50 a.m. = 12:05 a.m.         <br /></i></strong><img style="border-right-width: 0px; margin: 0px 0px 10px 15px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="Barry Gervin" border="0" alt="Barry Gervin" align="right" src="http://www.globalnerdy.com/wordpress/wp-content/uploads/2009/09/BarryGervin.jpg" width="131" height="125" /> Not a designer? Overwhelmed by Expression Blend? Not a problem! We’ll show you how to use Expression Blend to create advanced and polished user interfaces for business applications, consumer applications, multimedia projects, games or anything in between. We’ll cover features of Expression Blend from a developer&#8217;s perspective and show how it works in tandem with Visual Studio throughout the development process. You’ll learn how to create professional-looking user interfaces and visual elements – even if you don’t think of yourself as an interface designer.</p>
<h4>Day One Afternoon: Client Tech    </p>
</h4>
<p><strong><i>Session 3: Building Modular Applications Using Silverlight and WPF        <br />Presented by Rob Burke         <br />1:10 p.m. – 2:25 p.m.         <br /></i></strong><img style="border-right-width: 0px; margin: 0px 0px 10px 15px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="Rob Burke" border="0" alt="Rob Burke" align="right" src="http://www.globalnerdy.com/wordpress/wp-content/uploads/2009/09/RobBurke.jpg" width="92" height="125" /> How do you build extensible and maintainable line-of-business applications in Silverlight and Windows Presentation Foundation (WPF)? How do you design and code to handle real-world complexity? Composite Application Guidance (a.k.a. &quot;PRISM&quot;) offers guidance, libraries and examples – in small, free-standing, digestible chunks – that you can use to build applications with rich user interfaces that are also easier to maintain and extend. You’ll learn how to compose complex UIs from simpler views, integrate loosely coupled components with &quot;EventAggregator&quot; and &quot;Commands&quot;, develop independent modules that can be loaded dynamically, and share code between Silverlight and WPF clients.</p>
<p><strong><i>Session 4: Optimizing Your Apps for the Windows 7 User Experience        <br />Presented by Anthony Vranic         <br />2:45 p.m. – 4:00 p.m.         <br /></i></strong><img style="border-right-width: 0px; margin: 0px 0px 10px 15px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="Anthony Vranic" border="0" alt="Anthony Vranic" align="right" src="http://www.globalnerdy.com/wordpress/wp-content/uploads/2009/09/AnthonyVranic.jpg" width="99" height="125" /> This session will show you the Windows 7 APIs that will let your applications – and your users – get the full Windows 7 experience. Learn about new extensibility methods to surface your application&#8217;s key tasks. Discover how enhancements to the taskbar, Start Menu, thumbnails, desktop elements, the Scenic Ribbon, Federated Search and Internet Explorer 8 provide new ways for you to delight your users and help make them more productive. If you want to give your users the best Windows 7 experience, this session is for you!</p>
<p><strong><i>Bonus Session: Taking Your Application on the Road with Windows Mobile<sup>®</sup> Software         <br />Presented by Mark Arteaga and Anthony Bartolo         <br />4:20 p.m. – 5:30 p.m.         <br /></i></strong></p>
<div align="left"><img style="border-right-width: 0px; margin: 0px 0px 10px 15px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="Mark Arteaga and Anthony Bartolo" border="0" alt="Mark Arteaga and Anthony Bartolo" align="right" src="http://www.globalnerdy.com/wordpress/wp-content/uploads/2009/09/MarkArteagaandAnthonyBartolo.jpg" width="178" height="125" /> As a developer of .NET-based applications, you can extend your desktop software to the Windows Mobile-based platform using the tools available within Visual Studio®, the Windows Mobile SDK and the .NET Compact Framework. This session will give you an overview of how Windows Mobile lets you use your existing infrastructure, business logic, and desktop code on a mobile device to innovate and help solve business problems. We’ll show you how to use the familiar Microsoft .NET Framework and .NET-based programming languages like Visual C#® development tool. You will also learn about new features in Windows Mobile 6.5 such as the Gesture APIs and the Widget Framework and how to use them appropriately. With the launch of Windows Marketplace for Mobile upon us, this session will help you take the next step for application testing and submission.</div>
</p>
<h3>Day 2 – Back End: Programming Frameworks and Principles</h3>
<p>On Day 2, the track moves to the back end, focusing on server-side programming tools and technologies, and even wandering into the area of technique.</p>
<p>The morning’s sessions concern themselves with the new option for developing web applications using ASP.NET: ASP.NET MVC, the alternative framework based on the Model-View-Controller pattern, in the same spirit of such frameworks as Ruby on Rails, Django and CakePHP. The afternoon will be about writing web services using various Microsoft technologies.</p>
<p>The tools, technologies and techniques covered on Day 2 are:</p>
<ul>
<li>ASP.NET MVC </li>
<li>The SOLID principles of object-oriented design </li>
<li>WCF </li>
<li>REST (REpresentational State Transfer) </li>
<li>SharePoint </li>
</ul>
<h4>Day 2 Morning: ASP.NET MVC    <br /></h4>
<p><strong><em>Track Introduction        <br />Presented by Joey deVilla         <br />9:00 a.m. – 9:15 a,m.</em></strong></p>
<p><strong><i>Session 1: Introducing ASP.NET MVC        <br />Presented by Colin Bowern         <br />9:15 a.m. – 10:30 a.m.&#160; <br /></i></strong><img style="border-right-width: 0px; margin: 0px 0px 10px 15px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="Colin Bowern" border="0" alt="Colin Bowern" align="right" src="http://www.globalnerdy.com/wordpress/wp-content/uploads/2009/09/ColinBowern.jpg" width="83" height="125" /> You’ve probably heard the buzz about Model-View-Controller (MVC) web frameworks. They’re all the rage because they combine speed, simplicity, control&#8230;and fun. ASP.NET MVC is Microsoft’s MVC web framework, and in this session, we’ll talk about the MVC pattern, explain the ideas behind ASP.NET MVC and walk through the process of building an application using this new web framework. We’ll also cover several techniques to get the most out of ASP.NET MVC and deliver web applications quickly and with style. </p>
<p><strong><em>Session 2: SOLIDify Your Microsoft ASP.NET MVC Applications        <br />Presented by Bruce Johnson         <br />10:50 a.m. – 12:05 a.m.         <br /></em></strong><img style="border-right-width: 0px; margin: 0px 0px 10px 15px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="Bruce Johnson" border="0" alt="Bruce Johnson" align="right" src="http://www.globalnerdy.com/wordpress/wp-content/uploads/2009/09/BruceJohnson.jpg" width="85" height="125" /> Object-oriented programming makes it easier to manage complexity, but only if you do it right. The five SOLID principles of class design (one for each letter) help ensure that you’re writing applications that are flexible, comprehensible and maintainable, and we’ll explain and explore them in this session. We’ll start with a brittle ASP.NET MVC application that’s badly in need of refactoring and fix it by applying the SOLID principles. This session is a good follow-up for <i>Introducing ASP.NET MVC</i>, but it’s also good for developers of ASP.NET MVC looking to improve their code – or even if you’re not planning to use ASP.NET MVC. The SOLID principles apply to programming in any object-oriented language or framework. </p>
<h4>Day 2 Afternoon: Web Services</h4>
<p><strong><i>       <br />Session 3: Building RESTful Services with WCF         <br />Presented by Bruce Johnson         <br />1:10 p.m. &#8211; 2:25 p.m.         <br /></i></strong><img style="border-right-width: 0px; margin: 0px 0px 10px 15px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="Bruce Johnson" border="0" alt="Bruce Johnson" align="right" src="http://www.globalnerdy.com/wordpress/wp-content/uploads/2009/09/BruceJohnson.jpg" width="85" height="125" />REST (REpresentational State Transfer) is an architectural style for building services, and it’s the architectural style of the web. It’s been popular outside the world of Microsoft development for a long time, but it’s quickly becoming the de facto standard inside as well. Windows Communication Foundation (WCF) makes it simple to build RESTful web services, which are easy to use, simple and flexible. In this session, we’ll cover the basics of REST and the show you how to build REST-based, interoperable web services that can be accessed not just by Microsoft-based web and desktop applications, but anything that can communicate via HTTP from an Ajax client to a feed readers to mobile device to applications written using other languages and frameworks such as PHP, Python/Django or Ruby/Rails. </p>
<p><strong><i>Session 4: Developing and Consuming Services for SharePoint        <br />Presented by Reza Alirezaei         <br />2:45 p.m. – 4:00 p.m.         <br /></i></strong><img style="border-right-width: 0px; margin: 0px 0px 10px 15px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="Reza Alirezaei" border="0" alt="Reza Alirezaei" align="right" src="http://www.globalnerdy.com/wordpress/wp-content/uploads/2009/09/RezaAlirezaei.jpg" width="98" height="125" /> The world gets more service-oriented every day, and with that comes the demand to integrate all kinds of services, including those from SharePoint. This session introduces SharePoint as a developer platform and provides an overview of how you can build and deploy custom services with it. The focus will be on developing ASP.NET and Windows Communication Foundation services for SharePoint as well as building a Silverlight client to consume them. </p>
<p class="alert"><a href="http://blogs.msdn.com/cdndevs/archive/2009/09/28/the-developing-for-the-microsoft-based-platform-track-at-techdays-canada.aspx">This article also appears in <em>Canadian Developer Connection</em>.</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.globalnerdy.com/2009/09/28/the-developing-for-the-microsoft-based-platform-track-at-techdays-canada/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>TechDays Vancouver: More Scenes from the &#8220;Platform&#8221; Track</title>
		<link>http://www.globalnerdy.com/2009/09/14/techdays-vancouver-more-scenes-from-the-platform-track/</link>
		<comments>http://www.globalnerdy.com/2009/09/14/techdays-vancouver-more-scenes-from-the-platform-track/#comments</comments>
		<pubDate>Tue, 15 Sep 2009 00:48:50 +0000</pubDate>
		<dc:creator>Joey deVilla</dc:creator>
				<category><![CDATA[Meetups]]></category>
		<category><![CDATA[Software and Services]]></category>
		<category><![CDATA[mobile]]></category>
		<category><![CDATA[TechDays]]></category>
		<category><![CDATA[Vancouver]]></category>
		<category><![CDATA[Windows Mobile]]></category>

		<guid isPermaLink="false">http://www.globalnerdy.com/2009/09/14/techdays-vancouver-more-scenes-from-the-platform-track/</guid>
		<description><![CDATA[Two out of three of this afternoon’s sessions in my track at the TechDays conference – Developing for the Microsoft-Based Platform &#8212; were presented by Anthony Vranic, an independent consultant who used to be a Microsoft developer evangelist. His sessions:

Building Modular Applications Using Silverlight and WPF 
Optimizing Your Apps for the Windows 7 User Experience [...]]]></description>
			<content:encoded><![CDATA[<p></p><p><strong>Two out of three of this afternoon’s sessions in my track at the <a href="http://techdays.ca/">TechDays</a> conference – <em>Developing for the Microsoft-Based Platform</em> &#8212; were presented by Anthony Vranic,</strong> an independent consultant who used to be a Microsoft developer evangelist. His sessions:</p>
<ul>
<li><em>Building Modular Applications Using Silverlight and WPF</em> </li>
<li><em>Optimizing Your Apps for the Windows 7 User Experience</em> </li>
</ul>
<p><img style="border-right-width: 0px; display: block; float: none; border-top-width: 0px; border-bottom-width: 0px; margin-left: auto; border-left-width: 0px; margin-right: auto" title="Anthony Vranic presenting at TechDays Vancouver 2009" border="0" alt="Anthony Vranic presenting at TechDays Vancouver 2009" src="http://www.globalnerdy.com/wordpress/wp-content/uploads/2009/09/anthony_v.jpg" width="601" height="394" /> </p>
<p>Next up were <strong>Anthony Bartolo</strong> and <strong>Mark Arteaga</strong>, who were there to present the session <em>Taking Your Application on the Road with Windows Mobile Software</em>, in which they showed us things that people think Windows Mobile can’t do.</p>
<p><img style="border-right-width: 0px; display: block; float: none; border-top-width: 0px; border-bottom-width: 0px; margin-left: auto; border-left-width: 0px; margin-right: auto" title="arteaga_bartolo_1" border="0" alt="arteaga_bartolo_1" src="http://www.globalnerdy.com/wordpress/wp-content/uploads/2009/09/arteaga_bartolo_1.jpg" width="601" height="451" /> </p>
<p>Yup, that’s <em><a href="http://www.thebeatlesrockband.com/">The Beatles: Rock Band</a></em> beside Anthony – this was a session where you could leave with a prize! They gave away XBox games to people who answered skill- and mobile market knowledge-testing questions correctly.</p>
<p><img style="border-right-width: 0px; display: block; float: none; border-top-width: 0px; border-bottom-width: 0px; margin-left: auto; border-left-width: 0px; margin-right: auto" title="arteaga_bartolo_2" border="0" alt="arteaga_bartolo_2" src="http://www.globalnerdy.com/wordpress/wp-content/uploads/2009/09/arteaga_bartolo_2.jpg" width="450" height="600" /> </p>
<p>They gave <em>The Beatles: Rock Band </em>to the person working on the most interesting Windows Mobile app, as judged by audience applause. It went to the gentleman in the photo below on the right, who wrote a currency exchange application that watches exchange markets for the ideal time and buys foreign currencies then. He uses it to send money home to New Zealand within taking a bath on the exchange rate.</p>
<p><img style="border-bottom: 0px; border-left: 0px; display: block; float: none; margin-left: auto; border-top: 0px; margin-right: auto; border-right: 0px" title="winner" border="0" alt="winner" src="http://www.globalnerdy.com/wordpress/wp-content/uploads/2009/09/winner.jpg" width="600" height="450" /> </p>
<p>As I write this, it’s 5:45 p.m. Pacific, which means that the next event, <a href="http://upcoming.yahoo.com/event/4390849">Demo Ignite Camp</a>, is just over an hour away.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.globalnerdy.com/2009/09/14/techdays-vancouver-more-scenes-from-the-platform-track/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Windows Mobile Case Study: Porting Amplitude to WinMo</title>
		<link>http://www.globalnerdy.com/2009/08/02/windows-mobile-case-study-porting-amplitude-to-winmo/</link>
		<comments>http://www.globalnerdy.com/2009/08/02/windows-mobile-case-study-porting-amplitude-to-winmo/#comments</comments>
		<pubDate>Sun, 02 Aug 2009 14:43:12 +0000</pubDate>
		<dc:creator>Joey deVilla</dc:creator>
				<category><![CDATA[Hardware and Gadgets]]></category>
		<category><![CDATA[Programming]]></category>
		<category><![CDATA[Software and Services]]></category>
		<category><![CDATA[cross-platform]]></category>
		<category><![CDATA[iPhone]]></category>
		<category><![CDATA[porting]]></category>
		<category><![CDATA[Race to Market Challenge]]></category>
		<category><![CDATA[Windows Mobile]]></category>
		<category><![CDATA[Windows Phone]]></category>

		<guid isPermaLink="false">http://www.globalnerdy.com/2009/08/02/windows-mobile-case-study-porting-amplitude-to-winmo/</guid>
		<description><![CDATA[ 
The Windows Mobile Blog points to an MSDN article covering how Amplitude, an application for the iPhone, was ported to Windows Mobile.
Here’s a quick description of Amplitude, which is developed by Gripwire, a mobile and social app company based in Seattle, courtesy of the Windows Mobile Blog:
Amplitude picks up any sound in a user’s [...]]]></description>
			<content:encoded><![CDATA[<p></p><p><a href="http://msdn.microsoft.com/en-us/library/ee355030.aspx"><img style="border-right-width: 0px; display: block; float: none; border-top-width: 0px; border-bottom-width: 0px; margin-left: auto; border-left-width: 0px; margin-right: auto" title="HTC phone with Amplitude on screen (simulated)" border="0" alt="HTC phone with Amplitude on screen (simulated)" src="http://www.globalnerdy.com/wordpress/wp-content/uploads/2009/08/amplitude_htc_touch_pro.jpg" width="418" height="442" /></a> </p>
<p><strong><a href="http://windowsteamblog.com/blogs/windowsphone/archive/2009/07/31/ready-to-port-your-iphone-app-to-windows-mobile.aspx">The <em>Windows Mobile Blog</em> points</a> to <a href="http://msdn.microsoft.com/en-us/library/ee355030.aspx">an MSDN article covering how Amplitude, an application for the iPhone, was ported to Windows Mobile</a>.</strong></p>
<p>Here’s a quick description of <em>Amplitude</em>, which is developed by <a href="http://www.gripwire.com/">Gripwire</a>, a mobile and social app company based in Seattle, courtesy of the <em>Windows Mobile Blog</em>:</p>
<blockquote><p>Amplitude picks up any sound in a user’s surroundings through the microphone and then amplifies the sound, rendering it into a rich graphical representation on the device. Amplitude can be used to amplify any sounds, such as human or animal heartbeats, that usually wouldn’t be picked up by the human ear. Amplitude provides a cool user interface featuring an oscilloscope that allows users to view and visually quantify, signal voltages, as you can see the volume of the sound that you are listening to.</p>
</blockquote>
<p>The MSDN article on the <em>Amplitude </em>porting project covers a lot of ground, including:</p>
<ul>
<li>A brief overview of <em>Amplitude</em>, Gripwire and Luke Thompson, the developer who ported <em>Amplitude</em> to Windows Mobile </li>
<li>A run-down of developer resources, such as the Windows Mobile software development environment, <a href="http://go.microsoft.com/fwlink/?LinkId=158707">MSDN Virtual Labs</a>, <em><a href="http://go.microsoft.com/fwlink/?LinkId=158708">Windows Mobile for Developers</a></em> site, <em><a href="http://go.microsoft.com/fwlink/?LinkId=158709">Getting Started with Windows Mobile Application Development</a></em>, <em><a href="http://go.microsoft.com/fwlink/?LinkId=158710">Windows Mobile Developer Center</a></em> and the documentation for <a href="http://go.microsoft.com/fwlink/?LinkId=158711">Windows Mobile 6</a>. </li>
<li>Graphics and asset layout </li>
<li>Connecting to the mobile device </li>
<li>Audio and sound manipulation </li>
<li>Animation and visualization </li>
<li>Polishing the app </li>
</ul>
<p>Whether you’re thinking of expanding your iPhone application to other platforms or starting a new Windows Mobile app project, you’ll find this case study packed with useful information and links. I’m going to expand on some of the topics covered in the article in future posts on this blog.</p>
<p>And don’t forget – there’s the <strong><a href="http://www.mobilethisdeveloper.com/#meteor=Tv1fvRX5f2f">Race to Market Challenge</a></strong>, in which you’re automatically entered whenever you submit a mobile app to Windows Marketplace for Mobile. Here’s a quick reminder of what Race to Market is all about:</p>
<p align="center"><object width="560" height="340"><param name="movie" value="http://www.youtube.com/v/OCvpypcUJI8&amp;hl=en&amp;fs=1&amp;"></param><param name="allowFullScreen" value="true"></param><param name="allowscriptaccess" value="always"></param><embed src="http://www.youtube.com/v/OCvpypcUJI8&amp;hl=en&amp;fs=1&amp;" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="560" height="340"></embed></object></p>
]]></content:encoded>
			<wfw:commentRss>http://www.globalnerdy.com/2009/08/02/windows-mobile-case-study-porting-amplitude-to-winmo/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>The &#8220;Race to Market Challenge&#8221; for Windows Mobile</title>
		<link>http://www.globalnerdy.com/2009/07/28/the-race-to-market-challenge-for-windows-mobile/</link>
		<comments>http://www.globalnerdy.com/2009/07/28/the-race-to-market-challenge-for-windows-mobile/#comments</comments>
		<pubDate>Tue, 28 Jul 2009 14:00:00 +0000</pubDate>
		<dc:creator>Joey deVilla</dc:creator>
				<category><![CDATA[Programming]]></category>
		<category><![CDATA[mobile]]></category>
		<category><![CDATA[phones]]></category>
		<category><![CDATA[Race to Market Challenge]]></category>
		<category><![CDATA[Windows Marketplace for Mobile]]></category>
		<category><![CDATA[Windows Mobile]]></category>

		<guid isPermaLink="false">http://www.globalnerdy.com/2009/07/28/the-race-to-market-challenge-for-windows-mobile/</guid>
		<description><![CDATA[This article also appears in Canadian Developer Connection.
The Race to Market Challenge
Here’s a quick little video that explains what the just-announced Race to Market challenge is all about:

If you’ve been thinking about developing for Windows Mobile, now’s the time! We’re now accepting submissions of applications for Windows Marketplace for Mobile, the on-phone store where people [...]]]></description>
			<content:encoded><![CDATA[<p></p><p class="alert"><a href="http://blogs.msdn.com/cdndevs/archive/2009/07/28/the-race-to-market-challenge-for-windows-mobile.aspx">This article also appears in <em>Canadian Developer Connection</em>.</a></p>
<h3>The Race to Market Challenge</h3>
<p align="left">Here’s a quick little video that explains what <strong><a href="http://windowsteamblog.com/blogs/windowsphone/archive/2009/07/27/the-race-to-market.aspx">the just-announced Race to Market challenge</a></strong> is all about:</p>
<p align="center"><object width="560" height="340"><param name="movie" value="http://www.youtube.com/v/OCvpypcUJI8&amp;hl=en&amp;fs=1&amp;"></param><param name="allowFullScreen" value="true"></param><param name="allowscriptaccess" value="always"></param><embed src="http://www.youtube.com/v/OCvpypcUJI8&amp;hl=en&amp;fs=1&amp;" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="560" height="340"></embed></object></p>
<p><strong>If you’ve been thinking about developing for Windows Mobile, now’s the time!</strong> We’re now accepting submissions of applications for <a href="http://developer.windowsmobile.com/Marketplace.aspx">Windows Marketplace for Mobile</a>, the on-phone store where people with Windows Mobile phones can buy and install mobile applications easily. Better still, we’re making it a contest – <strong>submit your Windows Mobile app between now and 11:59 p.m. on December 31st and you’ll automatically be entered in the Race to Market Challenge</strong> where you’ll have a chance to win one of 4 <a href="http://www.microsoft.com/surface/">Surface</a> tables (developer edition, of course) like the one pictured below with the dashing Developer Evangelist…</p>
<p><img style="border-right-width: 0px; display: block; float: none; border-top-width: 0px; border-bottom-width: 0px; margin-left: auto; border-left-width: 0px; margin-right: auto" title="surface_pdc" border="0" alt="surface_pdc" src="http://www.globalnerdy.com/wordpress/wp-content/uploads/2009/07/surface_pdc1.jpg" width="600" height="450" /> </p>
</p>
<p>…along with a lot of online marketing and promotion for your application and a really cool trophy.</p>
<p>Winning applications will fall into one of these categories:</p>
<ul>
<li>Most downloaded </li>
<li>Most valuable (where “value” is the number of downloads multiplied by the price) </li>
<li>Most useful, as judged by a Microsoft panel </li>
<li>Most playful, as judged by a Microsoft panel </li>
</ul>
<p>The Race to Market Challenge runs from now until December 31st, and the sooner you get started, the more likely you shot at one of the grand prized. For full details about the contest, visit <strong><a href="http://mobilethisdeveloper.com/">mobilethisdeveloper.com</a></strong>.</p>
<h3>Getting Started with Windows Mobile Development</h3>
<p>Between now and the end of the contest, I’ll be posting articles on Windows Mobile development and the Race to Market Challenge. In the meantime, here are some tips that should help you get started.</p>
<h4>What You Need</h4>
<p>Here’s a snippet from <a href="http://www.globalnerdy.com/2009/04/16/upwardly-mobile-part-2-your-first-windows-mobile-6-application/">an earlier article of mine that shows you what you need in order to get started with Windows Mobile development</a>. In order to build an application for Windows Mobile 6, you’ll need the following things:</p>
<table border="0" cellspacing="10" cellpadding="3" width="580">
<tbody>
<tr>
<td valign="top" width="290"><strong>Visual Studio 2008, Professional Edition or higher            <br /><img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; margin-left: 0px; border-left-width: 0px; margin-right: 0px" title="visual_studio_2008_pro" border="0" alt="visual_studio_2008_pro" align="left" src="http://www.globalnerdy.com/wordpress/wp-content/uploads/2009/04/visual-studio-2008-pro.jpg" width="236" height="66" /></strong></td>
<td valign="top" width="290">This is the development environment. It’s not the only one that you can use to develop Windows Mobile apps, but it’s the one we’re using.          </p>
<p>You can also use Visual Studio 2005 – if you do so, Standard Edition or higher will do. If you don’t have Visual Studio, <a href="http://www.microsoft.com/visualstudio/en-us/try/trial-software.mspx">you can download a trial version of Visual Studio 2008</a>.           <br />&#160;</td>
</tr>
<tr>
<td valign="top" width="290"><strong>The Windows Mobile 6 SDKs            <br /><a href="http://www.globalnerdy.com/wordpress/wp-content/uploads/2009/04/gear-icon.jpg"><img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="gear_icon" border="0" alt="gear_icon" src="http://www.globalnerdy.com/wordpress/wp-content/uploads/2009/04/gear-icon-thumb.jpg" width="90" height="75" /></a>             <br />&#160;</strong></td>
<td valign="top" width="290">The <strong><a href="http://www.microsoft.com/downloads/details.aspx?FamilyID=06111a3a-a651-4745-88ef-3d48091a390b&amp;displaylang=en">Windows Mobile 6 SDKs</a></strong> contain the templates for building Windows Mobile 6 projects and emulators for various Windows mobile phones.           </p>
<p>There are two such SDKs to choose from:
<li>The <strong>Standard</strong> SDK. The general rule is that if the device <em>doesn’t have</em> a touch screen, its OS is Windows Mobile 6 Standard, and this is the SDK for developing for it. </li>
<li>The <strong>Professional</strong> SDK. The general rule is that if the device <em>has</em> a touch screen, its OS is Windows Mobile 6 Professional, and this is the SDK for developing for it.
<p>I recommend downloading both SDKs. You never know where you’ll deploy!&#160; </li>
</td>
</tr>
<tr>
<td valign="top" width="290"><strong>.NET Compact Framework 3.5 Redistributable            <br /><a href="http://www.globalnerdy.com/wordpress/wp-content/uploads/2009/04/dotnet-logo.jpg"><img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="dotnet_logo" border="0" alt="dotnet_logo" src="http://www.globalnerdy.com/wordpress/wp-content/uploads/2009/04/dotnet-logo-thumb.jpg" width="90" height="86" /></a>             <br />&#160;</strong></td>
<td valign="top" width="290">The <strong><a href="http://www.microsoft.com/downloads/details.aspx?FamilyID=E3821449-3C6B-42F1-9FD9-0041345B3385&amp;displaylang=en">.NET Compact Framework 3.5 Redistributable</a></strong> is the version of the .NET framework for mobile devices. It only needs to be sent to the device once.           </td>
</tr>
<tr>
<td valign="top" width="290"><strong>A Windows Mobile 6 Device            <br /><img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="palm_treo_pro" border="0" alt="palm_treo_pro" src="http://www.globalnerdy.com/wordpress/wp-content/uploads/2009/04/palm-treo-pro.jpg" width="150" height="137" />             <br />&#160;</strong></td>
<td valign="top" width="290">You can get by in the beginning with just the emulators, but you’ll eventually want to try out your app on a real phone. I’m using my phone, a <a href="http://www.palm.com/us/products/phones/treopro/index.html">Palm Treo Pro</a>.           </p>
<p>As the saying goes, “In theory, there is no difference between theory and practice; in practice, there is.”</td>
</tr>
<tr>
<td valign="top" width="290"><strong>The mobile device syncing utility that works with your operating system            <br /><a href="http://www.globalnerdy.com/wordpress/wp-content/uploads/2009/04/windows-mobile-device-center-icon.jpg"><img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="windows_mobile_device_center_icon" border="0" alt="windows_mobile_device_center_icon" src="http://www.globalnerdy.com/wordpress/wp-content/uploads/2009/04/windows-mobile-device-center-icon-thumb.jpg" width="90" height="91" /></a> </strong></td>
<td valign="top" width="290">If you’ve got a Windows Mobile 6 device, you’ll need the application that connects your mobile phone to your OS:
<li>For Windows 7 and Vista, use <strong><a href="http://www.microsoft.com/windowsmobile/en-us/help/synchronize/device-center-download.mspx">Windows Mobile Device Center</a></strong>. </li>
<li>For Windows XP and Server 2003, use <strong><a href="http://www.microsoft.com/windowsmobile/en-us/help/synchronize/activesync-download.mspx">ActiveSync</a></strong>. </li>
</td>
</tr>
</tbody>
</table>
<h4>Previous Articles on Windows Mobile Development</h4>
<p>Here are links to my earlier articles on Windows Mobile development:</p>
<ul>
<li><a href="http://www.globalnerdy.com/2009/04/13/upwardly-mobile-part-1-a-brief-tour-of-mobile-app-development/">Upwardly Mobile, Part 1: A Brief Tour of Mobile App Development</a> </li>
<li><a href="http://www.globalnerdy.com/2009/04/16/upwardly-mobile-part-2-your-first-windows-mobile-6-application/">Upwardly Mobile, Part 2: Your First Windows Mobile 6 Application</a> </li>
<li><a href="http://www.globalnerdy.com/2009/05/01/upwardly-mobile-part-3-exploring-windows-mobile-6s-built-in-ui-controls/">Upwardly Mobile, Part 3: Exploring Windows Mobile 6’s Built-In UI Controls</a> </li>
</ul>
<p>I’ll be posting more soon, but these should help you get up and running in the meantime.</p>
<p>If you’ve got any questions or comments about Windows Mobile development or the Race to Market Challenge, feel free to drop me a line or leave a note in the comments!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.globalnerdy.com/2009/07/28/the-race-to-market-challenge-for-windows-mobile/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Upwardly Mobile, Part 3: Exploring Windows Mobile 6&#8217;s Built-In UI Controls</title>
		<link>http://www.globalnerdy.com/2009/05/01/upwardly-mobile-part-3-exploring-windows-mobile-6s-built-in-ui-controls/</link>
		<comments>http://www.globalnerdy.com/2009/05/01/upwardly-mobile-part-3-exploring-windows-mobile-6s-built-in-ui-controls/#comments</comments>
		<pubDate>Sat, 02 May 2009 03:45:00 +0000</pubDate>
		<dc:creator>Joey deVilla</dc:creator>
				<category><![CDATA[Programming]]></category>
		<category><![CDATA[mobile]]></category>
		<category><![CDATA[mobile phones]]></category>
		<category><![CDATA[UI]]></category>
		<category><![CDATA[Upwardly Mobile]]></category>
		<category><![CDATA[user interface]]></category>
		<category><![CDATA[Windows Mobile]]></category>

		<guid isPermaLink="false">http://www.globalnerdy.com/?p=3342</guid>
		<description><![CDATA[&#160; 
In my previous article in Upwardly Mobile, the ongoing article series in which I look as various aspects of Windows Mobile 6 development, I showed you a simple application that made use of a couple of user interface controls. In this article, we’ll take a closer look at some of the user interface controls [...]]]></description>
			<content:encoded><![CDATA[<p></p><p>&#160;<img style="border-right-width: 0px; display: block; float: none; border-top-width: 0px; border-bottom-width: 0px; margin-left: auto; border-left-width: 0px; margin-right: auto" title="Mad Mobile: More Windows Mobile 6 example code from the guy who blogs at Global Nerdy" border="0" alt="Mad Mobile: More Windows Mobile 6 example code from the guy who blogs at Global Nerdy" src="http://www.globalnerdy.com/wordpress/wp-content/uploads/2009/04/mad-mobile.jpg" width="600" height="351" /> </p>
<p>In my <a href="http://www.globalnerdy.com/2009/04/16/upwardly-mobile-part-2-your-first-windows-mobile-6-application/">previous article</a> in <em><strong><a href="http://www.globalnerdy.com/tag/upwardly-mobile/">Upwardly Mobile</a></strong></em>, the ongoing article series in which I look as various aspects of Windows Mobile 6 development, I showed you a simple application that made use of a couple of user interface controls. In this article, we’ll take a closer look at some of the user interface controls by way of the steak-and-cocktails lifestyle of the characters on the TV series <em><a href="http://www.amctv.com/originals/madmen/">Mad Men</a></em>.</p>
<p>(In case you’re not familiar with <em>Mad Men</em>, it’s a dramatic TV series set in the early 1960s whos emain characters are advertising executives working at an agency in New York. It was the age of three-martini steak lunches, which serves as the inspiration for the example application in this article.)</p>
<h3>Introducing Beef ‘N’ Booze</h3>
<p>The application that we’ll build is called <em><strong>Beef ‘N’ Booze</strong></em>. It has no real function other than to demonstrate the use of some of the controls that come with Windows Mobile 6, and do so in a more entertaining way that you’d normally find in a book.</p>
<p>Here’s what the app will look like on startup:</p>
<p><img style="border-bottom: 0px; border-left: 0px; display: block; float: none; margin-left: auto; border-top: 0px; margin-right: auto; border-right: 0px" title="beef_screen_1" border="0" alt="beef_screen_1" src="http://www.globalnerdy.com/wordpress/wp-content/uploads/2009/05/beef-screen-1.gif" width="324" height="323" /></p>
<p>The app has a single form and that form is filled completely with a tab control with two tab pages: <strong>Beef</strong> and <strong>Booze</strong>. The <strong>Beef</strong> page lets you choose the “doneness” of your steak as well as a selection of side dishes. Once you’ve made your choices, you click the <strong>Place Order</strong> button to see a message box containing a summary of your order: </p>
<p><img style="border-bottom: 0px; border-left: 0px; display: block; float: none; margin-left: auto; border-top: 0px; margin-right: auto; border-right: 0px" title="beef_screen_2" border="0" alt="beef_screen_2" src="http://www.globalnerdy.com/wordpress/wp-content/uploads/2009/05/beef-screen-2.gif" width="325" height="329" /></p>
<p>Clicking on the <strong>Booze</strong> tab takes you to the <strong>Booze</strong> page, where you can place an order from a selection of cocoktails. You can also specify the number of cocktails you want to order and how strong you want the bartender to make them:</p>
<p><img style="border-bottom: 0px; border-left: 0px; display: block; float: none; margin-left: auto; border-top: 0px; margin-right: auto; border-right: 0px" title="booze_screen_1" border="0" alt="booze_screen_1" src="http://www.globalnerdy.com/wordpress/wp-content/uploads/2009/05/booze-screen-1.gif" width="326" height="327" /></p>
<p>When you’ve made your drink choices, you click on the <strong>Place Order</strong> button to see a message box summarizing your drink order:</p>
<p><img style="border-bottom: 0px; border-left: 0px; display: block; float: none; margin-left: auto; border-top: 0px; margin-right: auto; border-right: 0px" title="booze_screen_2" border="0" alt="booze_screen_2" src="http://www.globalnerdy.com/wordpress/wp-content/uploads/2009/05/booze-screen-2.jpg" width="324" height="319" /></p>
<p>That’s the app in a nutshell. Remember that the idea behind <em>Beef ‘N’ Booze </em>isn’t to make something useful; it’s to demonstrate Windows Mobile’s built-in user controls and give you a chance to explore them. With that knowledge and a little practice, you can eventually build apps that actually <em>do</em> something.</p>
<h3>TabControl and TabPages</h3>
<p>One of the tricks to compensate for the limited screen “real estate” on a mobile device is to break up an application into pages. The simplest “out of the box” way to do this with Windows Mobile is to use a <strong>TabControl</strong>, which is a container that holds one or more <strong>TabPage</strong> controls. Each TabPage is itself a container that can hold other controls.</p>
<p>In <em>Beef ‘N’ Booze</em>, I created a TabControl named <code>tabMain</code>, which holds two TabPages: </p>
<ul>
<li><strong><code>tpgBeef</code></strong>, whose <code>Text</code> property is set to <code>Beef</code>. It will contain the controls for placing and order for a steak and side dishes. </li>
<li><strong><code>tpgBooze</code></strong>, whose <code>Text</code> property is set to <code>Booze</code>. It will contain the controls for ordering cocktails. </li>
</ul>
<p><img style="border-right-width: 0px; display: block; float: none; border-top-width: 0px; border-bottom-width: 0px; margin-left: auto; border-left-width: 0px; margin-right: auto" title="tabcontrol_tabpages" border="0" alt="tabcontrol_tabpages" src="http://www.globalnerdy.com/wordpress/wp-content/uploads/2009/05/tabcontrol-tabpages.gif" width="600" height="380" /> </p>
<p>One convenient thing about using TabControls is that the tabbed pages work inside Visual Studio’s form editor. To view and edit a given TabPage, you click on its tab; it becomes the topmost page and you can add, move and remove controls from it.</p>
<h3>Buttons</h3>
<p>The Beef page has a single button, <strong><code>btnBeef</code></strong>, that when clicked, causes a message box to display the user’s order for steak and side dishes. The Booze page has a similar button, <strong><code>btnBooze</code></strong>, except that it causes a message box to display the user’s cocktail order.</p>
<p><img style="border-right-width: 0px; display: block; float: none; border-top-width: 0px; border-bottom-width: 0px; margin-left: auto; border-left-width: 0px; margin-right: auto" title="buttons" border="0" alt="buttons" src="http://www.globalnerdy.com/wordpress/wp-content/uploads/2009/05/buttons.gif" width="600" height="363" /> </p>
<p>We’ll draw <code>btnBeef</code> on the <code>tpgBeef</code> page and <code>btnBooze</code> on the <code>tpgBooze</code> page. The next step is to create event handlers for both buttons. The easiest way to do this is to select each button and then use the <strong>Events</strong> view in the <strong>Properties</strong> window, and double-clicking on the <code>Click</code> event for each button. Here’s a screenshot of me doing that for btnBeef – Visual Studio responds by auto-magically creating a handler named <strong><code>btnBeef_Click</code></strong>:</p>
<p><a href="http://www.globalnerdy.com/wordpress/wp-content/uploads/2009/05/btnbeef.gif"><img style="border-right-width: 0px; display: block; float: none; border-top-width: 0px; border-bottom-width: 0px; margin-left: auto; border-left-width: 0px; margin-right: auto" title="btnBeef" border="0" alt="btnBeef" src="http://www.globalnerdy.com/wordpress/wp-content/uploads/2009/05/btnbeef-thumb.gif" width="341" height="321" /></a></p>
<p>Creating event handlers for <code>btnBeef</code> and <code>btnBooze</code> creates these empty methods in the code for the form:</p>
<p> <code>
<pre>private void btnBeef_Click(object sender, EventArgs e)
{
}

private void btnBooze_Click(object sender, EventArgs e)
{
}</pre>
<p></code></p>
<p>While I do like the “magic” provided by Visual Studio, I also feel that you should know what’s going on behind the scenes. How are the <code>btnBeef_Click()</code> and <code>btnBoozeClick()</code> methods attached to the btnBeef and btnBooze controls? It’s taken care of in the Designer code for the form, in which the layout and events for controls on the form is defined. Here’s the chunk of code that concerns with <code>btnBeef</code>’s properties and events:</p>
<p><code></p>
<pre>this.btnBeef.Font = new System.Drawing.Font(&quot;Tahoma&quot;, 8F, System.Drawing.FontStyle.Regular);
this.btnBeef.Location = new System.Drawing.Point(165, 181);
this.btnBeef.Name = &quot;btnBeef&quot;;
this.btnBeef.Size = new System.Drawing.Size(111, 28);
this.btnBeef.TabIndex = 8;
this.btnBeef.Text = &quot;Place Order&quot;;
this.btnBeef.Click += new System.EventHandler(this.btnBeef_Click);</pre>
<p></code></p>
<p>When I added a <code>Click</code> event to <code>btnBeef</code> through the <strong>Properties</strong> window, Visual Studio generated the name <code>btnBeef_Click</code> for the event handler, added a blank <code>btnBeef_Click()</code> method to the form’s code and connected the event to the handler in the form’s Designer code with this line:</p>
<p><code></p>
<pre>this.btnBeef.Click += new System.EventHandler(this.btnBeef_Click);</pre>
<p></code></p>
<p>When the user clicks <code>btnBeef</code>, we want to call a method named <strong><code>OrderBeef()</code></strong>, which will collect the data from the controls on <code>tpgBeef</code>, format it into something human-readable and then display the results in a message box. When the user clicks <code>btnBooze</code>, we want to call a method name <strong><code>OrderBooze()</code></strong>, which will do something similar, but for the user’s cocktail order. Here’s what the resulting event handler code should look like:</p>
<p><code></p>
<pre>private void btnBeef_Click(object sender, EventArgs e)
{
    OrderBeef();
}

private void btnBooze_Click(object sender, EventArgs e)
{
    OrderBooze();
}</pre>
<p></code></p>
<p>We&#8217;ll define <code>OrderBeef()</code> and <code>OrderBooze()</code> over the next couple of sections, as we explore the controls. </p>
<h3>Radio Buttons</h3>
<p>Radio buttons are controls you use when:</p>
<ul>
<li>You want the user to choose one (and only one) item from a selection of items </li>
<li>You want the user to be able to see the complete selection of items immediately </li>
</ul>
<p>The name “radio buttons” comes from the radio buttons from older radios, such as those in older cars, which let you choose from a number of pre-set radio stations. Selecting one button would change the tuning to the corresponding radio station and de-select the currently selected button:</p>
<p><img style="border-right-width: 0px; display: block; float: none; border-top-width: 0px; border-bottom-width: 0px; margin-left: auto; border-left-width: 0px; margin-right: auto" title="car_radio_buttons" border="0" alt="car_radio_buttons" src="http://www.globalnerdy.com/wordpress/wp-content/uploads/2009/05/car-radio-buttons.jpg" width="450" height="285" /> </p>
<p>Radio buttons are grouped together by putting them inside the same container control, such as a panel, or in the case of this particular application, a TabPage. Selecting a radio button de-selects all the other radio buttons occupying the same container control.</p>
<p>The diagram below shows the radio buttons on <code>tpgBeef</code> and the names I assigned to them:</p>
<p><img style="border-right-width: 0px; display: block; float: none; border-top-width: 0px; border-bottom-width: 0px; margin-left: auto; border-left-width: 0px; margin-right: auto" title="radio_buttons" border="0" alt="radio_buttons" src="http://www.globalnerdy.com/wordpress/wp-content/uploads/2009/05/radio-buttons.gif" width="493" height="325" /></p>
<p>Here&#8217;s my first iteration of <code>OrderBeef()</code>, which shows you how to determine which radio button is selected by checking each one’s <code>Checked</code> property. Once that’s done, it displays the resulting choice in a message box:</p>
<p><code></p>
<pre>private void OrderBeef()
{
    StringBuilder order = new StringBuilder(&quot;Steak: &quot;);

    if (rdoRare.Checked)
    {
        order.AppendLine(&quot;Rare&quot;);
    }
    else if (rdoMediumRare.Checked)
    {
        order.AppendLine(&quot;Medium Rare&quot;);
    }
    else if (rdoMedium.Checked)
    {
        order.AppendLine(&quot;Medium&quot;);
    }
    else if (rdoMediumWell.Checked)
    {
        order.AppendLine(&quot;Medium Well&quot;);
    }
    else if (rdoWellDone.Checked)
    {
        order.AppendLine(&quot;Well Done&quot;);
    }
    else
    {
        order.AppendLine(&quot;Chef's choice&quot;);
    }

    MessageBox.Show(order.ToString());
}</pre>
<p></code></p>
<h3>Checkboxes</h3>
<p>Checkboxes are useful when:</p>
<ul>
<li>You want the user to select zero, one or more items </li>
<li>You want the user to be able to see the complete selection of items immediately </li>
</ul>
<p>The diagram below shows the checkboxes on <code>tpgBeef</code> and the names I assigned to them:</p>
<p><img style="border-right-width: 0px; display: block; float: none; border-top-width: 0px; border-bottom-width: 0px; margin-left: auto; border-left-width: 0px; margin-right: auto" title="checkboxes" border="0" alt="checkboxes" src="http://www.globalnerdy.com/wordpress/wp-content/uploads/2009/05/checkboxes.gif" width="520" height="325" /> </p>
<p>Here&#8217;s my second iteration of <code>OrderBeef()</code>, which adds some code to check to see which side dishes the user ordered. As with radio buttons, we’re using the <code>Checked</code> properties, but for the checkboxes:</p>
<p><code></p>
<pre>private void OrderBeef()
{
    StringBuilder order = new StringBuilder(&quot;Steak: &quot;);
    int numSides = 0;

    if (rdoRare.Checked)
    {
        order.AppendLine(&quot;Rare&quot;);
    }
    else if (rdoMediumRare.Checked)
    {
        order.AppendLine(&quot;Medium Rare&quot;);
    }
    else if (rdoMedium.Checked)
    {
        order.AppendLine(&quot;Medium&quot;);
    }
    else if (rdoMediumWell.Checked)
    {
        order.AppendLine(&quot;Medium Well&quot;);
    }
    else if (rdoWellDone.Checked)
    {
        order.AppendLine(&quot;Well Done&quot;);
    }
    else
    {
        order.AppendLine(&quot;Chef's choice&quot;);
    }

    order.AppendLine(&quot;Sides:&quot;);

    if (chkCreamedSpinach.Checked)
    {
        order.AppendLine(&quot;Creamed Spinach&quot;);
        ++numSides;
    }

    if (chkFrites.Checked)
    {
        order.AppendLine(&quot;Frites&quot;);
        ++numSides;
    }

    if (chkMushrooms.Checked)
    {
        order.AppendLine(&quot;Mushrooms&quot;);
        ++numSides;
    }

    if (numSides == 0)
    {
        order.AppendLine(&quot;None&quot;);
    }

    MessageBox.Show(order.ToString());
}</pre>
<p></code></p>
<h3>Comboboxes</h3>
<p><img style="border-right-width: 0px; display: block; float: none; border-top-width: 0px; border-bottom-width: 0px; margin-left: auto; border-left-width: 0px; margin-right: auto" title="comboboxes" border="0" alt="comboboxes" src="http://www.globalnerdy.com/wordpress/wp-content/uploads/2009/05/comboboxes.gif" width="442" height="325" /> </p>
<p>For the <strong>Booze</strong> page, I thought I’d use a different way to let the user select one item from a selection of many: a Combobox with its <code>DropDownStyle</code> property set to <code>DropDownList</code> and containing a number of cocktail names. The method below does the following:</p>
<ul>
<li>Sets the Combobox’s <code>DropDownStyle</code> property to <code>DropDownList</code>, which means that the user <em>cannot</em> just type in any value into the list’s text portion, but can only select from items in the list. </li>
<li>Adds a number of cocktail names to the list. </li>
<li>Sets the list so that the first item is selected. </li>
</ul>
<p><code></p>
<pre>public void InitializeCocktailControls()
{
    cboCocktail.DropDownStyle = ComboBoxStyle.DropDownList;
    cboCocktail.Items.Add(&quot;Bloody Caesar&quot;);
    cboCocktail.Items.Add(&quot;Bloody Mary&quot;);
    cboCocktail.Items.Add(&quot;Martini&quot;);
    cboCocktail.Items.Add(&quot;Rye and Ginger&quot;);
    cboCocktail.Items.Add(&quot;Vodka Tonic&quot;);
    cboCocktail.SelectedIndex = 0;
}</pre>
<p></code></p>
<p>If I wanted to, I could’ve set the <code>DropDownStyle</code> and the collection of items in the ComboBox in the <strong>Properties</strong> window.</p>
<p>I placed a call to <code>InitializeCocktailControls()</code> inside the form&#8217;s constructor:</p>
<p><code></p>
<pre>public frmMain()
{
    InitializeComponent();
    InitializeCocktailControls();
}</pre>
<p></code></p>
<p>And here&#8217;s my first iteration of <code>OrderBooze()</code>, which displays a message box showing which cocktail the user ordered. It makes use of the ComboBox’s <code>SelectedItem</code> property:</p>
<p><ocde></p>
<pre>private void OrderBooze()
{
    StringBuilder order = new StringBuilder(&quot;Cocktail: &quot; +
                            cboCocktail.SelectedItem.ToString() +
                            &quot;\n&quot;);

    MessageBox.Show(order.ToString());
}</pre>
<p></code></p>
<h3>Numeric Up/Downs</h3>
<p>Numeric Up/Downs are useful when:</p>
<ul>
<li>You want to restrict user input to numeric values only </li>
<li>You want to restrict those numeric values to a specific range </li>
</ul>
<p><img style="border-right-width: 0px; display: block; float: none; border-top-width: 0px; border-bottom-width: 0px; margin-left: auto; border-left-width: 0px; margin-right: auto" title="numeric_updowns" border="0" alt="numeric_updowns" src="http://www.globalnerdy.com/wordpress/wp-content/uploads/2009/05/numeric-updowns.gif" width="442" height="325" /></p>
<p>Here's the second iteration of <code>InitializeCocktailControls()</code>, which adds code to initialize the numeric up/down <code>nudCocktail</code> in the following ways:</p>
<ul>
<li>Restricting the possible values to the range of 1 through 10 </li>
<li>Setting the up/down increment to 1 – if the user clicks the “up” button, the value contained within goes up by 1, if the user clicks the “down” button, the value contained within goes down by 1. </li>
<li>Setting the initial value to 1 </li>
</ul>
<p><code></p>
<pre>public void InitializeCocktailControls()
{
    cboCocktail.DropDownStyle = ComboBoxStyle.DropDownList;
    cboCocktail.Items.Add(&quot;Bloody Caesar&quot;);
    cboCocktail.Items.Add(&quot;Bloody Mary&quot;);
    cboCocktail.Items.Add(&quot;Martini&quot;);
    cboCocktail.Items.Add(&quot;Rye and Ginger&quot;);
    cboCocktail.Items.Add(&quot;Vodka Tonic&quot;);
    cboCocktail.SelectedIndex = 0;

    nudCocktail.Minimum = 1;
    nudCocktail.Maximum = 10;
    nudCocktail.Increment = 1;
    nudCocktail.Value = 1;
}</pre>
<p></code></p>
<p>Here's the <code>OrderBooze()</code> method, featuring an additional line of code to display the number of drinks the user ordered. The value contained within <code>nudCocktail</code> is taken from its <code>Value</code> property:</p>
<p><code></p>
<pre>private void OrderBooze()
{
    StringBuilder order = new StringBuilder(&quot;Cocktail: &quot; +
                            cboCocktail.SelectedItem.ToString() +
                            &quot;\n&quot;);
    order.AppendLine(&quot;Quantity: &quot; + nudCocktail.Value.ToString());

    MessageBox.Show(order.ToString());
}</pre>
<p></code></p>
<h3>Trackbars</h3>
<p>Another way to get numeric value input from the user is to use a Trackbar control. While Trackbars don’t display their corresponding numeric values like Numeric Up/Downs, they have a couple of advantages:</p>
<ul>
<li>They’re larger and more “finger-friendly” than Numeric Up/Downs </li>
<li>They give the user a visual cue of where the current value is in relation to the minimum and maximum values </li>
</ul>
<p><img style="border-right-width: 0px; display: block; float: none; border-top-width: 0px; border-bottom-width: 0px; margin-left: auto; border-left-width: 0px; margin-right: auto" title="trackbars" border="0" alt="trackbars" src="http://www.globalnerdy.com/wordpress/wp-content/uploads/2009/05/trackbars.gif" width="442" height="325" /></p>
<p>In the screenshot above, you can see that I’ve augmented the Trackbar with by putting a couple of label controls just below it: <strong>Lame</strong>, <strong>Decent</strong>, and <strong>Hardcore</strong>.</p>
<p>Here’s another iteration of <code>InitializeCocktailControls()</code>, with code to initialize the Trackbar with the following properties:</p>
<ul>
<li>The leftmost position on the Trackbar corresponds to the value 0 </li>
<li>The rightmost position on the Trackbar corresponds to the value 10 </li>
<li>The smallest step you can make in either direction, up or down, is 1 </li>
<li>Large steps, which you get by clicking to the right or left of the current slider position, change the value in steps of 5 </li>
<li>The initial value of the Trackbar is 5 </li>
</ul>
<p><code></p>
<pre>public void InitializeCocktailControls()
{
    cboCocktail.DropDownStyle = ComboBoxStyle.d;
    cboCocktail.Items.Add(&quot;Bloody Caesar&quot;);
    cboCocktail.Items.Add(&quot;Bloody Mary&quot;);
    cboCocktail.Items.Add(&quot;Martini&quot;);
    cboCocktail.Items.Add(&quot;Rye and Ginger&quot;);
    cboCocktail.Items.Add(&quot;Vodka Tonic&quot;);
    cboCocktail.SelectedIndex = 0;

    nudCocktail.Minimum = 1;
    nudCocktail.Maximum = 10;
    nudCocktail.Increment = 1;
    nudCocktail.Value = 1;

    tbrCocktail.Minimum = 0;
    tbrCocktail.Maximum = 10;
    tbrCocktail.SmallChange = 1;
    tbrCocktail.LargeChange = 5;
    tbrCocktail.Value = 5;
}</pre>
<p></code></p>
<p>Here’s <code>OrderBooze()</code>, with an additional line to display the user’s preferred drink strength, which is derived from the Trackbar’s <code>Value</code> property:</p>
<p><code></p>
<pre>private void OrderBooze()
{
    StringBuilder order = new StringBuilder(&quot;Cocktail: &quot; +
                            cboCocktail.SelectedItem.ToString() +
                            &quot;\n&quot;);
    order.AppendLine(&quot;Quantity: &quot; + nudCocktail.Value.ToString());
    order.AppendLine(&quot;Strength: &quot; + tbrCocktail.Value.ToString());

    MessageBox.Show(order.ToString());
}</pre>
<p></code></p>
<h3>Putting It All Together</h3>
<p>Here’s the complete code behind the single form in <em>Beef ‘N’ Booze:</em></p>
<p><code></p>
<pre>using System;
using System.ComponentModel;
using System.Text;
using System.Windows.Forms;

namespace BeefNBooze
{
    public partial class frmMain : Form
    {
        public frmMain()
        {
            InitializeComponent();
            InitializeCocktailControls();
        }

        public void InitializeCocktailControls()
        {
            cboCocktail.DropDownStyle = ComboBoxStyle.DropDownList;
            cboCocktail.Items.Add(&quot;Bloody Caesar&quot;);
            cboCocktail.Items.Add(&quot;Bloody Mary&quot;);
            cboCocktail.Items.Add(&quot;Martini&quot;);
            cboCocktail.Items.Add(&quot;Rye and Ginger&quot;);
            cboCocktail.Items.Add(&quot;Vodka Tonic&quot;);
            cboCocktail.SelectedIndex = 0;

            nudCocktail.Minimum = 1;
            nudCocktail.Maximum = 10;
            nudCocktail.Increment = 1;
            nudCocktail.Value = 1;

            tbrCocktail.Minimum = 0;
            tbrCocktail.Maximum = 10;
            tbrCocktail.SmallChange = 1;
            tbrCocktail.LargeChange = 5;
            tbrCocktail.Value = 5;
        }

        private void btnBeef_Click(object sender, EventArgs e)
        {
            OrderBeef();
        }

        private void btnBooze_Click(object sender, EventArgs e)
        {
            OrderBooze();
        }

        private void OrderBeef()
        {
            StringBuilder order = new StringBuilder(&quot;Steak: &quot;);
            int numSides = 0;

            if (rdoRare.Checked)
            {
                order.AppendLine(&quot;Rare&quot;);
            }
            else if (rdoMediumRare.Checked)
            {
                order.AppendLine(&quot;Medium Rare&quot;);
            }
            else if (rdoMedium.Checked)
            {
                order.AppendLine(&quot;Medium&quot;);
            }
            else if (rdoMediumWell.Checked)
            {
                order.AppendLine(&quot;Medium Well&quot;);
            }
            else if (rdoWellDone.Checked)
            {
                order.AppendLine(&quot;Well Done&quot;);
            }
            else
            {
                order.AppendLine(&quot;Chef's choice&quot;);
            }

            order.AppendLine(&quot;Sides:&quot;);

            if (chkCreamedSpinach.Checked)
            {
                order.AppendLine(&quot;Creamed Spinach&quot;);
                ++numSides;
            }

            if (chkFrites.Checked)
            {
                order.AppendLine(&quot;Frites&quot;);
                ++numSides;
            }

            if (chkMushrooms.Checked)
            {
                order.AppendLine(&quot;Mushrooms&quot;);
                ++numSides;
            }

            if (numSides == 0)
            {
                order.AppendLine(&quot;None&quot;);
            }

            MessageBox.Show(order.ToString());
        }

        private void OrderBooze()
        {
            StringBuilder order = new StringBuilder(&quot;Cocktail: &quot; +
                                    cboCocktail.SelectedItem.ToString() +
                                    &quot;\n&quot;);
            order.AppendLine(&quot;Quantity: &quot; + nudCocktail.Value.ToString());
            order.AppendLine(&quot;Strength: &quot; + tbrCocktail.Value.ToString());

            MessageBox.Show(order.ToString());
        }

    }
}</pre>
<p></code></p>
<h3>Download, Go Forth and Noodle!</h3>
<p>It’s one thing to read about Windows Mobile 6’s built-in user interface controls, but something else entirely to make use of them. If you’re feeling ambitious, start a new project and rebuild <em>Beef ‘N’ Booze </em>(or a similar app that lets you explore the controls) yourself. Or, if you’d like, download my project files by clicking the link below, play with the app, make changes and learn. No matter which route you take, the best way to learn to is fire up Visual Studio and get coding!</p>
<p><a href="http://www.globalnerdy.com/wordpress/wp-content/uploads/2009/05/beefnbooze.zip"><img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="Download icon" border="0" alt="Download icon" src="http://www.globalnerdy.com/wordpress/wp-content/uploads/2009/05/download.gif" width="35" height="36" /></a> <strong><a href="http://www.globalnerdy.com/wordpress/wp-content/uploads/2009/05/beefnbooze.zip">Download the <em>Beef ‘N’ Booze</em> project (Visual Studio 2008 SP1, 15K .zip file)</a></strong></p>
]]></content:encoded>
			<wfw:commentRss>http://www.globalnerdy.com/2009/05/01/upwardly-mobile-part-3-exploring-windows-mobile-6s-built-in-ui-controls/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Sneak Peek at the Next &#8220;Upwardly Mobile&#8221;</title>
		<link>http://www.globalnerdy.com/2009/04/22/sneak-peek-at-the-next-upwardly-mobile/</link>
		<comments>http://www.globalnerdy.com/2009/04/22/sneak-peek-at-the-next-upwardly-mobile/#comments</comments>
		<pubDate>Wed, 22 Apr 2009 05:54:58 +0000</pubDate>
		<dc:creator>Joey deVilla</dc:creator>
				<category><![CDATA[Hardware and Gadgets]]></category>
		<category><![CDATA[Programming]]></category>
		<category><![CDATA[mobile]]></category>
		<category><![CDATA[previews]]></category>
		<category><![CDATA[Upwardly Mobile]]></category>
		<category><![CDATA[Windows Mobile]]></category>

		<guid isPermaLink="false">http://www.globalnerdy.com/2009/04/22/sneak-peek-at-the-next-upwardly-mobile/</guid>
		<description><![CDATA[Yes, I’m working on another tutorial on Windows Mobile 6 development. It’s on some of the standard user interface controls – here’s a preview:
 
I do try to make my example apps entertaining…
]]></description>
			<content:encoded><![CDATA[<p></p><p>Yes, I’m working on another tutorial on Windows Mobile 6 development. It’s on some of the standard user interface controls – here’s a preview:</p>
<p><img style="border-bottom: 0px; border-left: 0px; display: block; float: none; margin-left: auto; border-top: 0px; margin-right: auto; border-right: 0px" title="beef_n_booze_preview" border="0" alt="beef_n_booze_preview" src="http://www.globalnerdy.com/wordpress/wp-content/uploads/2009/04/beef-n-booze-preview.jpg" width="304" height="413" /> </p>
<p>I <em>do </em>try to make my example apps entertaining…</p>
]]></content:encoded>
			<wfw:commentRss>http://www.globalnerdy.com/2009/04/22/sneak-peek-at-the-next-upwardly-mobile/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Upwardly Mobile, Part 2: Your First Windows Mobile 6 Application</title>
		<link>http://www.globalnerdy.com/2009/04/16/upwardly-mobile-part-2-your-first-windows-mobile-6-application/</link>
		<comments>http://www.globalnerdy.com/2009/04/16/upwardly-mobile-part-2-your-first-windows-mobile-6-application/#comments</comments>
		<pubDate>Thu, 16 Apr 2009 16:33:00 +0000</pubDate>
		<dc:creator>Joey deVilla</dc:creator>
				<category><![CDATA[Hardware and Gadgets]]></category>
		<category><![CDATA[Programming]]></category>
		<category><![CDATA[Software and Services]]></category>
		<category><![CDATA[mobile]]></category>
		<category><![CDATA[mobile phones]]></category>
		<category><![CDATA[Upwardly Mobile]]></category>
		<category><![CDATA[Windows Mobile]]></category>

		<guid isPermaLink="false">http://www.globalnerdy.com/?p=3211</guid>
		<description><![CDATA[
(In case you missed part 1, it’s here. Be warned; it’s long, but it’s a good read.)
In this installment of Upwardly Mobile, I’m going to give you a quick introduction to developing applications for Windows Mobile 6 phones and handheld devices. I can’t cover all aspects of Windows Mobile development in this article, but there [...]]]></description>
			<content:encoded><![CDATA[<p></p><p><img style="border-right-width: 0px; display: block; float: none; border-top-width: 0px; border-bottom-width: 0px; margin-left: auto; border-left-width: 0px; margin-right: auto" title="treo_pro_large" border="0" alt="treo_pro_large" src="http://www.globalnerdy.com/wordpress/wp-content/uploads/2009/04/treo-pro-large.jpg" width="350" height="319" /></p>
<p>(<a href="http://www.globalnerdy.com/2009/04/13/upwardly-mobile-part-1-a-brief-tour-of-mobile-app-development/">In case you missed part 1, it’s here.</a> Be warned; it’s long, but it’s a good read.)</p>
<p>In this installment of <em>Upwardly Mobile</em>, I’m going to give you a quick introduction to developing applications for Windows Mobile 6 phones and handheld devices. I can’t cover all aspects of Windows Mobile development in this article, but there should be enough material in this entry to get you started.</p>
<h3>What You Need</h3>
<p>In order to build an application for Windows Mobile 6, you’ll need the following things:</p>
<table border="0" cellspacing="10" cellpadding="3" width="580">
<tbody>
<tr>
<td valign="top" width="290"><strong>Visual Studio 2008, Professional Edition or higher            <br /><img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; margin-left: 0px; border-left-width: 0px; margin-right: 0px" title="visual_studio_2008_pro" border="0" alt="visual_studio_2008_pro" align="left" src="http://www.globalnerdy.com/wordpress/wp-content/uploads/2009/04/visual-studio-2008-pro.jpg" width="236" height="66" /></strong></td>
<td valign="top" width="290">This is the development environment. It’s not the only one that you can use to develop Windows Mobile apps, but it’s the one we’re using.          </p>
<p>You can also use Visual Studio 2005 – if you do so, Standard Edition or higher will do. If you don’t have Visual Studio, <a href="http://www.microsoft.com/visualstudio/en-us/try/trial-software.mspx">you can download a trial version of Visual Studio 2008</a>.           <br />&#160;</td>
</tr>
<tr>
<td valign="top" width="290"><strong>The Windows Mobile 6 SDKs            <br /><a href="http://www.globalnerdy.com/wordpress/wp-content/uploads/2009/04/gear-icon.jpg"><img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="gear_icon" border="0" alt="gear_icon" src="http://www.globalnerdy.com/wordpress/wp-content/uploads/2009/04/gear-icon-thumb.jpg" width="90" height="75" /></a>             <br />&#160;</strong></td>
<td valign="top" width="290">The <strong><a href="http://www.microsoft.com/downloads/details.aspx?FamilyID=06111a3a-a651-4745-88ef-3d48091a390b&amp;displaylang=en">Windows Mobile 6 SDKs</a></strong> contain the templates for building Windows Mobile 6 projects and emulators for various Windows mobile phones.           </p>
<p>There are two such SDKs to choose from:
<li>The <strong>Standard</strong> SDK. The general rule is that if the device <em>doesn’t have</em> a touch screen, its OS is Windows Mobile 6 Standard, and this is the SDK for developing for it. </li>
<li>The <strong>Professional</strong> SDK. The general rule is that if the device <em>has</em> a touch screen, its OS is Windows Mobile 6 Professional, and this is the SDK for developing for it.
<p>I recommend downloading both SDKs. You never know where you’ll deploy!&#160; </li>
</td>
</tr>
<tr>
<td valign="top" width="290"><strong>.NET Compact Framework 3.5 Redistributable            <br /><a href="http://www.globalnerdy.com/wordpress/wp-content/uploads/2009/04/dotnet-logo.jpg"><img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="dotnet_logo" border="0" alt="dotnet_logo" src="http://www.globalnerdy.com/wordpress/wp-content/uploads/2009/04/dotnet-logo-thumb.jpg" width="90" height="86" /></a>             <br />&#160;</strong></td>
<td valign="top" width="290">The <strong><a href="http://www.microsoft.com/downloads/details.aspx?FamilyID=E3821449-3C6B-42F1-9FD9-0041345B3385&amp;displaylang=en">.NET Compact Framework 3.5 Redistributable</a></strong> is the version of the .NET framework for mobile devices. It only needs to be sent to the device once.           </td>
</tr>
<tr>
<td valign="top" width="290"><strong>A Windows Mobile 6 Device            <br /><img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="palm_treo_pro" border="0" alt="palm_treo_pro" src="http://www.globalnerdy.com/wordpress/wp-content/uploads/2009/04/palm-treo-pro.jpg" width="150" height="137" />             <br />&#160;</strong></td>
<td valign="top" width="290">You can get by in the beginning with just the emulators, but you’ll eventually want to try out your app on a real phone. I’m using my phone, a <a href="http://www.palm.com/us/products/phones/treopro/index.html">Palm Treo Pro</a>.           </p>
<p>As the saying goes, “In theory, there is no difference between theory and practice; in practice, there is.”</td>
</tr>
<tr>
<td valign="top" width="290"><strong>The mobile device syncing utility that works with your operating system            <br /><a href="http://www.globalnerdy.com/wordpress/wp-content/uploads/2009/04/windows-mobile-device-center-icon.jpg"><img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="windows_mobile_device_center_icon" border="0" alt="windows_mobile_device_center_icon" src="http://www.globalnerdy.com/wordpress/wp-content/uploads/2009/04/windows-mobile-device-center-icon-thumb.jpg" width="90" height="91" /></a> </strong></td>
<td valign="top" width="290">If you’ve got a Windows Mobile 6 device, you’ll need the application that connects your mobile phone to your OS:
<li>For Windows 7 and Vista, use <strong><a href="http://www.microsoft.com/windowsmobile/en-us/help/synchronize/device-center-download.mspx">Windows Mobile Device Center</a></strong>. </li>
<li>For Windows XP and Server 2003, use <strong><a href="http://www.microsoft.com/windowsmobile/en-us/help/synchronize/activesync-download.mspx">ActiveSync</a></strong>. </li>
</td>
</tr>
</tbody>
</table>
<h3>Let’s Start Programming!</h3>
<p>In this example, we’re going to write a “Magic 8-Ball” style application called <strong><em>Ask the Kitty</em></strong>. It’ll be a simple app that provides random answers to questions that can be answered with a “yes” or “no”.</p>
<p>Fire up Visual Studio, open the <strong>File</strong> menu and click on <strong>Project…</strong> (or click <strong>control-shift-N</strong>). The <strong>New Project</strong> dialog box will appear:</p>
<p><img style="border-right-width: 0px; display: block; float: none; border-top-width: 0px; border-bottom-width: 0px; margin-left: auto; border-left-width: 0px; margin-right: auto" title="new_project" border="0" alt="new_project" src="http://www.globalnerdy.com/wordpress/wp-content/uploads/2009/04/new-project.gif" width="600" height="430" /></p>
<p>In this example, we’ll be doing development in Visual C#. From the <strong>Project types</strong> list on the left, expand the <strong>Visual C#</strong> menu and click the <strong>Smart Device</strong> sub-item. The <strong>Templates</strong> list on the right will display the available templates for a smart device project; select <strong>Smart Device Project</strong>.</p>
<p>(You can do Windows Mobile 6 development in Visual Basic if you prefer; there’s a <strong>Smart Device</strong> option under the <strong>Visual Basic</strong> menu.)</p>
<p>Give your project a name (for this example, I’m using the name <strong>HelloPhone</strong>) and specify a location (I’m just using the default Visual Studio directory for projects), make sure the <strong>Create directory for solution</strong>checkbox is checked, and click the <strong>OK</strong> button.</p>
<p>The <strong>Add New Smart Device Project </strong>dialog box will appear:</p>
<p><img style="border-right-width: 0px; display: block; float: none; border-top-width: 0px; border-bottom-width: 0px; margin-left: auto; border-left-width: 0px; margin-right: auto" title="add_new_smart_device" border="0" alt="add_new_smart_device" src="http://www.globalnerdy.com/wordpress/wp-content/uploads/2009/04/add-new-smart-device.gif" width="600" height="453" /></p>
<p>You specify the type of device you’re developing for using the <strong>Target platform</strong> menu. My Palm Treo Pro is a touch screen device and uses Windows Mobile 6 Professional as its OS, so I’m going to select <strong>Windows Mobile 6 Professional SDK</strong> from that menu.</p>
<p>We want to use the latest version of the .NET Compact Framework, so leave the default option, <strong>.NET Compact Framework Version 3.5</strong>, selected in the <strong>.NET Compact Framework version</strong> menu.</p>
<p>We want to create an application, so select <strong>Device Application</strong> from the <strong>Templates</strong> menu and click the <strong>OK</strong> button. Visual Studio will create your project, and you can start developing. Here’s what you’ll see:</p>
<p><img style="border-right-width: 0px; display: block; float: none; border-top-width: 0px; border-bottom-width: 0px; margin-left: auto; border-left-width: 0px; margin-right: auto" title="visual_studio_1" border="0" alt="visual_studio_1" src="http://www.globalnerdy.com/wordpress/wp-content/uploads/2009/04/visual-studio-1.gif" width="600" height="356" /></p>
<p>If we were writing a regular WinForms desktop app, the forms designer would show a blank window. If we were developing an ASP.NET application, the forms designer would show a blank web page, Since we’re developing a Windows Mobile app, the forms designer by default shows a blank mobile app window enclosed in a mockup – the “skin” &#8212; of a generalized mobile device. Here’s the skin for a Windows Mobile 6 Professional device:</p>
<p><img style="border-right-width: 0px; display: block; float: none; border-top-width: 0px; border-bottom-width: 0px; margin-left: auto; border-left-width: 0px; margin-right: auto" title="forms_designer_mobile_skin" border="0" alt="forms_designer_mobile_skin" src="http://www.globalnerdy.com/wordpress/wp-content/uploads/2009/04/forms-designer-mobile-skin.gif" width="302" height="470" /></p>
<p>You can choose to display or hide the skin in the Forms Designer. I’m going to work without the skin; I can hid it by opening the <strong>Format</strong> menu and toggling the <strong>Show Skin</strong> item.</p>
<h3>Set Up the User Interface</h3>
<p>This application will use a single form. We’ll take the default form from the project, <strong>Form1</strong>, and do the following using the <strong>Properties</strong> pane:</p>
<p><img style="border-right-width: 0px; display: block; float: none; border-top-width: 0px; border-bottom-width: 0px; margin-left: auto; border-left-width: 0px; margin-right: auto" title="frmMain_properties" border="0" alt="frmMain_properties" src="http://www.globalnerdy.com/wordpress/wp-content/uploads/2009/04/frmmain-properties.gif" width="337" height="353" /></p>
<ul>
<li>Rename it as <strong>frmMain</strong>. </li>
<li>Change its <strong>AutoScaleMode</strong> property to <strong>None</strong> (We don’t want the app to automatically resize its controls and fonts, we want it to use the control sizes and locations and font sizes that we specify). </li>
<li>Change its <strong>Size</strong> to <strong>320,250</strong>, the right size for many Windows Mobile 6 Professional Devices including my Palm Treo Pro. </li>
<li>Change the form’s heading – set the <strong>Text</strong> property to <strong>My First WinMo App</strong>. </li>
</ul>
<p>We’ll set up the form to look like this:</p>
<p><img style="border-right-width: 0px; display: block; float: none; border-top-width: 0px; border-bottom-width: 0px; margin-left: auto; border-left-width: 0px; margin-right: auto" title="frmMain" border="0" alt="frmMain" src="http://www.globalnerdy.com/wordpress/wp-content/uploads/2009/04/frmmain.gif" width="330" height="299" /></p>
<p>The “Ask the Kitty!” at the top of the form is a <strong>Label</strong> control, with its font set to <strong>Tahoma</strong>, font style set to <strong>Bold</strong>,<strong> </strong>font size set to 12 points and text set to <strong>Ask the Kitty!</strong></p>
<p>The “Click for an answer!” at the bottom is a <strong>Button</strong> control, with its font set to <strong>Tahoma</strong>, font style set to <strong>Regular</strong>,<strong> </strong>font size set to 9 points and text set to <strong>Click for an answer!</strong>. I also renamed the button as <strong>btnAnswer</strong>.</p>
<p>The cat picture in the middle is a <strong>PictureBox</strong> control. The trick is to provide a picture to fill the PictureBox. It’s simple. The first step is to copy a picture file into the project directory:</p>
<p><img style="border-right-width: 0px; display: block; float: none; border-top-width: 0px; border-bottom-width: 0px; margin-left: auto; border-left-width: 0px; margin-right: auto" title="project_directory" border="0" alt="project_directory" src="http://www.globalnerdy.com/wordpress/wp-content/uploads/2009/04/project-directory.gif" width="600" height="491" /></p>
<p>Make sure that the picture is included in the project. If you can’t see the picture file in the <strong>Solution Explorer</strong> window, click the <strong>Show All Files</strong> button. Right-click the picture file in <strong>Solution Explorer</strong> and select <strong>Include in Project</strong>:</p>
<p><img style="border-right-width: 0px; display: block; float: none; border-top-width: 0px; border-bottom-width: 0px; margin-left: auto; border-left-width: 0px; margin-right: auto" title="solution_explorer" border="0" alt="solution_explorer" src="http://www.globalnerdy.com/wordpress/wp-content/uploads/2009/04/solution-explorer.gif" width="337" height="281" /></p>
<p>Once you’ve included the picture file in the project, you can use it to fill the PictureBox. Select the PictureBox in the Forms Designer, go to the <strong>Properties</strong> window and change its <strong>Image</strong> property – use the selector to pick the picture file that we just included in the project.</p>
<h3>Add Some Code</h3>
<p>There’s a lot of example code out there that puts programming logic inside the UI – that is, in the code for the forms. I’m going to avoid that and do the right thing by creating a class for the “engine” of this application. Creating a new class is easy – open the <strong>Project Menu</strong>, select <strong>Add Class…</strong>, and then select <strong>Visual C# Items</strong> –&gt; <strong>Code</strong> –&gt; <strong>Class</strong>. I named the class file <strong>Kitty.cs</strong> in the Solution Explorer; here’s its code:</p>
<pre><code>using System;
using System.Linq;
using System.Collections.Generic;
using System.Text;

namespace HelloPhone
{
    class Kitty
    {
        List&lt;string&gt; _responses = new List&lt;string&lt; {
            &quot;Yes&quot;,
            &quot;No&quot;,
            &quot;Maybe&quot;,
            &quot;Ask again later&quot;
        };
        Random _rand = new Random();

        public string GetResponse()
        {
          return _responses[_rand.Next(_responses.Count)];
        }
    }
}</code></pre>
<p>The next step is to wire up <strong>btnAnswer</strong> to provide an answer when clicked. This means adding an event handler to <strong>btnAnswer</strong>. The easiest way to do this is select <strong>btnAnswer</strong>, then go to the <strong>Properties</strong> window, select the <strong>Events</strong> view (it’s the lightning bolt button) and double-click on the <strong>Click</strong> event. That will automatically create a method called <strong>btnAnswer_Click()</strong> in the <strong>frmMain</strong> class and wire up that method to be called whenever <strong>btnAnswer</strong> is clicked.</p>
<p>Here’s the code for <strong>frmMain</strong>:</p>
<pre><code>using System.Drawing;
using System.Text;
using System.Windows.Forms;

namespace HelloPhone
{
    public partial class frmMain : Form
    {
        Kitty _eightBall = new Kitty();

        public frmMain()
        {
            InitializeComponent();
        }

        private void btnAnswer_Click(object sender, EventArgs e)
        {
            btnAnswer.Text = _eightBall.GetResponse();
        }

    }
}</code></pre>
<h3>Run the App in the Emulator</h3>
<p>The app&#8217; is now ready to take for a test run in the emulator. Click the <strong>Start Debugging</strong> button (it looks like a “play” button) or press the <strong>F5</strong> key. This window showing your deployment options will appear:</p>
<p><a href="http://www.globalnerdy.com/wordpress/wp-content/uploads/2009/04/deploy-emulator.gif"><img style="border-right-width: 0px; display: block; float: none; border-top-width: 0px; border-bottom-width: 0px; margin-left: auto; border-left-width: 0px; margin-right: auto" title="deploy_emulator" border="0" alt="deploy_emulator" src="http://www.globalnerdy.com/wordpress/wp-content/uploads/2009/04/deploy-emulator-thumb.gif" width="535" height="336" /></a></p>
<p>I want an emulator that best matches my Palm Treo Pro, which has a square QVGA display, so I selected <strong>Windows Mobile 6 Professional Square QVGA Emulator</strong> and clicked the <strong>Deploy</strong> button. Give it a moment or two to compile and fire up the emulator, after which you should see this:</p>
<p><img style="border-right-width: 0px; display: block; float: none; border-top-width: 0px; border-bottom-width: 0px; margin-left: auto; border-left-width: 0px; margin-right: auto" title="emulator" border="0" alt="emulator" src="http://www.globalnerdy.com/wordpress/wp-content/uploads/2009/04/emulator.gif" width="431" height="588" /></p>
<h3>Run the App on Your Mobile Device</h3>
<p>Running the app on your mobile device is almost as easy. Make sure that your mobile device is connected to your computer, then click the <strong>Start Debugging</strong> button (it looks like a “play” button) or press the <strong>F5</strong> key. This window showing your deployment options will appear:</p>
<p><img style="border-right-width: 0px; display: block; float: none; border-top-width: 0px; border-bottom-width: 0px; margin-left: auto; border-left-width: 0px; margin-right: auto" title="deploy_device" border="0" alt="deploy_device" src="http://www.globalnerdy.com/wordpress/wp-content/uploads/2009/04/deploy-device.gif" width="535" height="336" /></p>
<p>This time, select <strong>Windows Mobile 6 Professional Device</strong> in the menu and click <strong>Deploy</strong>.</p>
<p>Keep an eye on your phone; you’ll get a couple of “should I install this?”-type messages – click <strong>Yes</strong> to all of them:</p>
<p><img style="border-right-width: 0px; display: block; float: none; border-top-width: 0px; border-bottom-width: 0px; margin-left: auto; border-left-width: 0px; margin-right: auto" title="device_message" border="0" alt="device_message" src="http://www.globalnerdy.com/wordpress/wp-content/uploads/2009/04/device-message.jpg" width="300" height="400" /></p>
<p>After that, you should see this:</p>
<p><img style="border-right-width: 0px; display: block; float: none; border-top-width: 0px; border-bottom-width: 0px; margin-left: auto; border-left-width: 0px; margin-right: auto" title="app_device" border="0" alt="app_device" src="http://www.globalnerdy.com/wordpress/wp-content/uploads/2009/04/app-device.jpg" width="300" height="400" /></p>
<p>You should have enough information to start experimenting with Windows Mobile 6 development. Have fun, try things, and if you have any questions, feel free to ask them in the comments!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.globalnerdy.com/2009/04/16/upwardly-mobile-part-2-your-first-windows-mobile-6-application/feed/</wfw:commentRss>
		<slash:comments>11</slash:comments>
		</item>
		<item>
		<title>Upwardly Mobile, Part 1: A Brief Tour of Mobile App Development</title>
		<link>http://www.globalnerdy.com/2009/04/13/upwardly-mobile-part-1-a-brief-tour-of-mobile-app-development/</link>
		<comments>http://www.globalnerdy.com/2009/04/13/upwardly-mobile-part-1-a-brief-tour-of-mobile-app-development/#comments</comments>
		<pubDate>Mon, 13 Apr 2009 16:40:01 +0000</pubDate>
		<dc:creator>Joey deVilla</dc:creator>
				<category><![CDATA[Hardware and Gadgets]]></category>
		<category><![CDATA[Programming]]></category>
		<category><![CDATA[Software and Services]]></category>
		<category><![CDATA[What Joey Did]]></category>
		<category><![CDATA[Microsoft's Sea Change]]></category>
		<category><![CDATA[mobile]]></category>
		<category><![CDATA[mobile phones]]></category>
		<category><![CDATA[PDAs]]></category>
		<category><![CDATA[Upwardly Mobile]]></category>
		<category><![CDATA[Windows Mobile]]></category>

		<guid isPermaLink="false">http://www.globalnerdy.com/2009/04/13/upwardly-mobile-part-1-a-brief-and-slightly-personal-history-of-mobile-app-development/</guid>
		<description><![CDATA[This one&#8217;s a long one! You might want to get yourself a beverage or snack.

This week is Windows Mobile Incubation Week, a “jam session” taking place at The Empire’s Silicon Valley branch, where startups are invited to learn about Windows Mobile from Microsoft’s gurus and pick up some tricks from mobile industry gurus and venture [...]]]></description>
			<content:encoded><![CDATA[<p></p><p class="alert">This one&#8217;s a long one! You might want to get yourself a beverage or snack.</p>
<p><img style="border-right-width: 0px; display: block; float: none; border-top-width: 0px; border-bottom-width: 0px; margin-left: auto; border-left-width: 0px; margin-right: auto" title="Windows Mobile Incubation Week: April 13 - 17, 2009 -- featuring two Japanese schoolgirls showing their mobile phones to Darth Vader" border="0" alt="Windows Mobile Incubation Week: April 13 - 17, 2009 -- featuring two Japanese schoolgirls showing their mobile phones to Darth Vader" src="http://www.globalnerdy.com/wordpress/wp-content/uploads/2009/04/windows-mobile-incubation-week.jpg" width="600" height="480" /></p>
<p><strong><a href="http://www.globalnerdy.com/2009/03/09/windows-mobile-incubation-week-april-13-17-in-mountain-view/"><img style="margin: 0px 0px 0px 10px; display: inline" align="right" src="http://www.globalnerdy.com/wordpress/wp-content/uploads/2009/03/incubation-week.jpg" width="357" height="76" /></a>This week is </strong><a href="http://www.globalnerdy.com/2009/03/09/windows-mobile-incubation-week-april-13-17-in-mountain-view/">Windows Mobile Incubation Week</a><strong></strong>, a “jam session” taking place at The Empire’s Silicon Valley branch, where startups are invited to learn about Windows Mobile from Microsoft’s gurus and pick up some tricks from mobile industry gurus and venture capitalists. They’re also challenged to build Windows Mobile apps during the week, with prizes being awarded to winning participants. Admission to Mobile Incubation Week is free-as-in-beer; all you have to do is scrounge up the cash to cover your trip to the Valley and find a couch to crash on at night.</p>
<p>Even as a Sith Lord with Imperial backing, I don’t have the travel budget to get down to Silicon Valley to catch this event, and it’s likely that you don’t either. That doesn’t mean that you have to miss out on Mobile Incubation Week. I’ll be linking to all the blogs covering it and I’ll also be posting articles covering different aspects of Windows Mobile Development, some technical, some tactical. I hope it piques your interest in Windows Mobile; perhaps it might even get you started building apps for Windows Mobile phones.</p>
<p>In this first article, I talk about mobile development over the past few years (with a little detour into my own experiences) and the way I see the current state of Windows Mobile.</p>
<h3>My First Mobile App</h3>
<p>Back in early 2001, I bought a PalmOS-compatible <strong><a href="http://www.palminfocenter.com/view_story.asp?ID=1760">Handspring Visor Platinum</a></strong> for $99 from my then-coworker at OpenCola, <a href="http://saladwithsteve.com/">Steve Jenson</a>. He’s always had ridiculous amounts of hardware in his house:</p>
<p><a href="http://www.palminfocenter.com/view_story.asp?ID=1760"><img style="border-right-width: 0px; display: block; float: none; border-top-width: 0px; border-bottom-width: 0px; margin-left: auto; border-left-width: 0px; margin-right: auto" title="handspring_visor_platinum" border="0" alt="handspring_visor_platinum" src="http://www.globalnerdy.com/wordpress/wp-content/uploads/2009/04/handspring-visor-platinum.jpg" width="240" height="240" /></a></p>
<p>I used it regularly, but never got around to writing applications for it until early 2002. That’s when a number of companies building P2P software during the Bubble 1.0 era imploded and when OpenCola unceremoniously laid me off. I decided to put up my “consultant” shingle, and thanks to the network of contacts I’d built as OpenCola’s Developer Relations guy, it didn’t take long for me to dig up some clients.</p>
<p>A friend of mine who was now working for a big drug company’s ad agency asked if I could write a questionnaire app for PalmOS handhelds. It wasn’t anything too complicated: just give the user (who could either be a doctor or a patient) a series of questions and provide a response at the end based on their answers. The tasks seemed simple enough, and despite the fact that I’d never written a Palm app before, I took the job.</p>
<p>(For those of you new to the industry, you’ll find that that you will often be asked to do things that you’ve never done before or aren’t 100% sure you can do. One of the valuable skills that comes with experience is figuring out how far you can stretch yourself and your abilities with a project.)</p>
<p>I’d seen a couple of articles on developing for PalmOS in C, and they looked like more work than they were worth. An app that was made up of a single button that read “Hello World” took 3 or 4 pages of code to implement, most of which was what I call “preamble” – a lot of setup code and “scaffolding” to support the app, way more code than for the actual app itself. My client seemed to be testing the waters of Palm apps, so I figured I’d be asked to make lots of changes to the app along the way. I needed something that would let me build and modify Palm apps quickly.</p>
<p><a href="http://www.nsbasic.com/palm/"><img style="border-right-width: 0px; display: block; float: none; border-top-width: 0px; border-bottom-width: 0px; margin-left: auto; border-left-width: 0px; margin-right: auto" title="nsbasic_palm" border="0" alt="nsbasic_palm" src="http://www.globalnerdy.com/wordpress/wp-content/uploads/2009/04/nsbasic-palm.jpg" width="150" height="182" /></a></p>
<p>My plan was to build the app with <strong><a href="http://www.nsbasic.com/palm/">NS Basic/Palm</a></strong>, a Visual Basic-like development system for PalmOS. I’d heard about it before, and as an added bonus, they were based right here in Toronto. I picked up a copy directly from their offices in the morning, and by the end of the afternoon, I had a functioning version of the app. By the end of the next day, I had it polished. The day after that, I showed my work to the client, and a week after that, they cut me a cheque.</p>
<p>I thought I’d make a career for myself as a PalmOS developer, but after that initial success, no other clients approached me about building a Palm app for them. That was a bit of a disappointment; unlike many of my friends, who wanted to build system- or network-level software, I wanted to build software for people. I figured that the best platform for people-oriented software would be a computer that you had in your pocket with you all the time.</p>
<h3>The Underused 1995-Era Computer in Your Pocket</h3>
<p align="left"><img style="border-right-width: 0px; display: block; float: none; border-top-width: 0px; border-bottom-width: 0px; margin-left: auto; border-left-width: 0px; margin-right: auto" title="1995 tech zeitgeist, featuring NCSA Mosaic, Apple Newton, Windows 95, Delphi 1.0, Visual Basic 4.0, Microsoft Bob, a Zip drive and &quot;Special Edition Using Java 1.1&quot;" border="0" alt="1995 tech zeitgeist, featuring NCSA Mosaic, Apple Newton, Windows 95, Delphi 1.0, Visual Basic 4.0, Microsoft Bob, a Zip drive and &quot;Special Edition Using Java 1.1&quot;" src="http://www.globalnerdy.com/wordpress/wp-content/uploads/2009/04/1995-tech-zeitgeist.jpg" width="600" height="444" /></p>
<p align="left">One of the things that I noticed while building Palm apps in 2002 was that the machine specs were like the specs for desktops back in 1995, when I was building CD-ROM-based multimedia apps with Mackerel Interactive Multimedia. The desktops of 1995 had processor speeds in the double-digit megahertz, RAM in the single-digit megabytes and limited, if any, access to the internet – just like 2002-era PalmOS devices.</p>
<p align="left">At the same time, there was a class of devices that was beginning to emerge – the smartphone, which combined the connectedness of mobile phones with the computing power of PDAs. The problem was trying to get apps onto them.</p>
<p align="left">Back in late 2003, when I was just getting started as Tucows’ Tech Evangelist, I wrote an article grumbling about the state of mobile development. In spite of the fact that smartphones had the power of PDAs, the market for mobile apps seemed like a ghost town. There was a mish-mash of all sorts of mobile platforms, installing apps on your mobile form was more complicated than it should’ve been, and the telcos seemed to be doing their level best to keep apps off of phones, using the need to “keep the phone network secure” as their excuse.</p>
<p align="left">“Imagine how far behind we’d be,” I wrote back then, “if we had to get our computer vendor’s permission every time we installed a new program on our desktops. That’s what it’s like for mobile apps.”</p>
<h3>The Best Gaming Phone, 5 Years Ago</h3>
<p align="left">Near the end of 2003, this phone was supposed to be the thing that brought mobile gaming to the masses:</p>
<p align="left"><a href="http://en.wikipedia.org/wiki/N-Gage"><img style="border-right-width: 0px; display: block; float: none; border-top-width: 0px; border-bottom-width: 0px; margin-left: auto; border-left-width: 0px; margin-right: auto" title="Nokia N-Gage" border="0" alt="Nokia N-Gage" src="http://www.globalnerdy.com/wordpress/wp-content/uploads/2009/04/nokia-ngage-l.jpg" width="504" height="278" /></a></p>
<p>It was the <strong><a href="http://en.wikipedia.org/wiki/N-Gage">Nokia N-Gage</a></strong>. There’s a good reason you probably never owned one, nor did anyone you know. While it had some decent specs, it was a pain for both developers and users alike:</p>
<ul>
<li><strong>Pain for the developers:</strong> Not just anyone could develop for the N-Gage. You had to apply for permission to do so, which required you to have a track record of mobile game development, which probably ruled out a lot of potential developers in 2003. There was also the matter of the fee that you had to submit while applying for the privilege of being an N-Gage developer: the non-trivial sum of 10,000 Euro. </li>
<li><strong>Pain for the users:</strong> The buttons were notoriously bad – they used phone-grade buttons as opposed to game controller-grade ones, which made for a less-than-optimal gaming experience. </li>
<li><strong>More pain for the users:</strong> <a href="http://www.brighthand.com/default.asp?newsID=11273">Here’s how <em>Brighthand</em> described the process of loading a game onto the N-Gage:</a> “&quot;In order to put a game into the system, you have to turn the phone off, take the back cover off, remove the battery, slide out the existing game, put the new one in, put the battery back in, replace the back cover, hold down the power button for several seconds, wait for the system to boot up, open the main menu, select the game, open it&#8230; And then your game starts loading.&quot; </li>
<li><strong>Even more pain for the users:</strong> The N-Gage sometimes suffered from “The White Screen of Death”, a phenomenon where your phone would spontaneously reboot thanks to a memory management issue arising from a design flaw. The fix was a firmware upgrade, for which Nokia decided to charge users. </li>
</ul>
<p>I thought that the N-Gage had all kinds of portable personal computing uses, both for gaming and beyond, but there was no way I could develop for it. Besides, the telcos were still pretty adamant about not letting just anyone develop for smartphones.</p>
<p>So my plans to take on mobile development stayed shelved a little longer.</p>
<h3>Predictions are Hard, Especially About the Future</h3>
<p><img style="border-right-width: 0px; display: block; float: none; border-top-width: 0px; border-bottom-width: 0px; margin-left: auto; border-left-width: 0px; margin-right: auto" title="Captain Picard doing a &quot;facepalm&quot;" border="0" alt="Captain Picard doing a &quot;facepalm&quot;" src="http://www.globalnerdy.com/wordpress/wp-content/uploads/2009/04/picard-faceplam.jpg" width="400" height="259" /></p>
<p>Depending on where your loyalties, sympathies and platform preferences lie, you’re going to find the following headlines either LMAO-hilarious or stool-softeningly cringeworthy. Maybe it’s because I’m still a relatively new at Microsoft (I’ll have been there six months a week Monday), but I laughed <em>and</em> cringed at these headlines that vaingloriously predicted that The Empire would dominate the smartphone market:</p>
<ul>
<li><a href="http://www.windowsfordevices.com/news/NS6226829827.html"><strong>Industry Jumps on Windows Mobile 5.0 Bandwagon</strong></a> (May 12, 2005) </li>
<li><strong><a href="http://www.windowsfordevices.com/news/NS6590457256.html">Mobile Phones Will Overtake iPods, Says Gates</a></strong> (May 13, 2005) </li>
<li><strong><a href="http://www.windowsfordevices.com/news/NS8340426687.html">Microsoft Expects to Dominate Smartphones in Three Years</a></strong> (June 28, 2005) </li>
</ul>
<p>“Dominate Smartphones in Three Years”, huh? Here’s what happened a mere <em>two </em>years later:</p>
<p><img style="border-right-width: 0px; display: block; float: none; border-top-width: 0px; border-bottom-width: 0px; margin-left: auto; border-left-width: 0px; margin-right: auto" title="iphone_line_1" border="0" alt="iphone_line_1" src="http://www.globalnerdy.com/wordpress/wp-content/uploads/2009/04/iphone-line-1.jpg" width="600" height="400" /></p>
<p align="left"><a href="http://www.globalnerdy.com/wordpress/wp-content/uploads/2009/04/iphone-line-2.jpg"><img style="border-right-width: 0px; display: block; float: none; border-top-width: 0px; border-bottom-width: 0px; margin-left: auto; border-left-width: 0px; margin-right: auto" title="iphone_line_2" border="0" alt="iphone_line_2" src="http://www.globalnerdy.com/wordpress/wp-content/uploads/2009/04/iphone-line-2-thumb.jpg" width="512" height="768" /></a>&#160;</p>
<p align="left"><img style="border-right-width: 0px; display: block; float: none; border-top-width: 0px; border-bottom-width: 0px; margin-left: auto; border-left-width: 0px; margin-right: auto" title="iphone_line_3" border="0" alt="iphone_line_3" src="http://www.globalnerdy.com/wordpress/wp-content/uploads/2009/04/iphone-line-3.jpg" width="600" height="457" /></p>
<p align="left">In the space of two years and one day, we’d gone from Microsoft triumphantly declaring that Windows Mobile would own the smartphone market to <a href="http://en.wikipedia.org/wiki/Robert_Scoble#Microsoft">Microsoft’s most famous evangelist</a> (well, <em>former</em> evangelist by that time) doing a victory pose at the Apple Store because he’d managed to get his paws on one of the first iPhones.</p>
<p align="left">A good chunk of the iPhone’s success comes from Apple’s incredible marketing machine, but a bigger factor is that <em>great products are their own marketing</em>. The iPhone combines a great user experience and a centralized store, but far more important was the feeling that you were using something that was designed to be both beautiful and fun, not feasting on the table scraps thrown to you by a company who’d rather be making stuff for Fortune 500 executives.</p>
<p align="left">The iPhone formula seems to be working. <a href="http://jkontherun.com/2009/03/11/winners-and-losers-in-the-smartphone-market-q408/">According to Kevin Tofel of the mobile device blog <em>JK On the Run</em></a>, Apple sold 3.3 million iPhones in 2007 and handily beat that sales figure in 2008 with 11.4 million, making them the mobile phone vendor that gained the most ground that year.</p>
<h3>And Now, the Good News</h3>
<p>It’s not all bad news for Windows Mobile or people who want to develop for it. For starters, <strong>Windows Mobile still represents a sizeable chunk of the mobile phone market.</strong> 18 million Windows Mobile licenses were sold in 2008, and they were sold to four out of the five largest mobile phone manufacturers in the world (in case you were wondering, Nokia is the holdout). LG has signed on to put Windows Mobile on 50 of its smartphone models. All told, that’s a big hardware ecosystem on which to deploy your mobile apps.</p>
<p align="center"><object width="560" height="340"><param name="movie" value="http://www.youtube.com/v/ohpN_ppD5wI&amp;hl=en&amp;fs=1"></param><param name="allowFullScreen" value="true"></param><param name="allowscriptaccess" value="always"></param><embed src="http://www.youtube.com/v/ohpN_ppD5wI&amp;hl=en&amp;fs=1" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="560" height="340"></embed></object></p>
<p>The smart moves that The Empire has been making with its various platforms, from Windows 7 to the web to XBox 360 to cloud computing, are also beginning to show in the form of Windows Mobile 6.5 (slated for release this year) and Windows Mobile 7 (due next year). The UI has been vastly improved; a lot of the UI lessons and ideas from Windows 7, XBox 360 and Surface seem to have made their way in:</p>
<p align="center"><object width="560" height="340"><param name="movie" value="http://www.youtube.com/v/jFjPVpyGvsk&amp;hl=en&amp;fs=1"></param><param name="allowFullScreen" value="true"></param><param name="allowscriptaccess" value="always"></param><embed src="http://www.youtube.com/v/jFjPVpyGvsk&amp;hl=en&amp;fs=1" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="560" height="340"></embed></object></p>
<p align="center"><object width="560" height="340"><param name="movie" value="http://www.youtube.com/v/D9-1OQE53d4&amp;hl=en&amp;fs=1"></param><param name="allowFullScreen" value="true"></param><param name="allowscriptaccess" value="always"></param><embed src="http://www.youtube.com/v/D9-1OQE53d4&amp;hl=en&amp;fs=1" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="560" height="340"></embed></object></p>
<p>And yes, there will be support not just for client apps that run on your WinMo phone, but <a href="http://www.globalnerdy.com/2009/03/10/windows-mobile-gets-widgets/">Widgets</a> – mini-web apps that run in a browser with just a border and no interface controls, a la Windows widgets or the iPhone’s web apps:</p>
<p><a href="http://www.globalnerdy.com/2009/03/10/windows-mobile-gets-widgets/"><img style="border-right-width: 0px; display: block; float: none; border-top-width: 0px; border-bottom-width: 0px; margin-left: auto; border-left-width: 0px; margin-right: auto" title="Windows mobile widgets" border="0" alt="Windows mobile widgets" src="http://www.globalnerdy.com/wordpress/wp-content/uploads/2009/04/windowsmobilewidgets.jpg" width="600" height="414" /></a> </p>
<p>Paired with the improved user experience is an online store accessible from your Windows Mobile phone:</p>
<p align="center"><object width="560" height="340"><param name="movie" value="http://www.youtube.com/v/yX4Y1J8xC7o&amp;hl=en&amp;fs=1"></param><param name="allowFullScreen" value="true"></param><param name="allowscriptaccess" value="always"></param><embed src="http://www.youtube.com/v/yX4Y1J8xC7o&amp;hl=en&amp;fs=1" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="560" height="340"></embed></object></p>
<p>…and you still have the freedom to <em>not</em> use Windows Marketplace to sell your apps. I cover why that’s a good thing in the next and final section of this article.</p>
<h3>Freedom</h3>
<p>Let me show you some slides from <a href="http://www.globalnerdy.com/2009/04/11/my-afternoon-at-meshu/">Pete Forde’s recent presentation at MeshU</a>, <a href="http://www.meshu.ca/speakers-2009/#pete-forde"><strong><em>Is That an iPhone in Your Pocket, or are You Just Happy to See Me?</em></strong></a>. Namely, this section of his presentation:</p>
<p><img style="border-right-width: 0px; display: block; float: none; border-top-width: 0px; border-bottom-width: 0px; margin-left: auto; border-left-width: 0px; margin-right: auto" title="Slide: What Apple doesn&#39;t want you to do" border="0" alt="Slide: What Apple doesn&#39;t want you to do" src="http://www.globalnerdy.com/wordpress/wp-content/uploads/2009/04/021.jpg" width="600" height="387" /> </p>
<p>The iPhone App Store is the only <em>legal </em>way to distribute iPhone apps, whether you’re selling them or giving them away. As a developer, you submit your applications to the App Store for review, and in around seven days, after which you are told whether your app has been accepted or rejected.</p>
<p>If your app is rejected, are you told the reasons why? Here’s Pete’s answer to that question:</p>
<p><img style="border-right-width: 0px; display: block; float: none; border-top-width: 0px; border-bottom-width: 0px; margin-left: auto; border-left-width: 0px; margin-right: auto" title="Slide: &quot;Not gonna lie...it&#39;d be easier to get Steve Ballmer using an iPod, than for you to get a straight answer on why Apple rejected your app.&quot;" border="0" alt="Slide: &quot;Not gonna lie...it&#39;d be easier to get Steve Ballmer using an iPod, than for you to get a straight answer on why Apple rejected your app.&quot;" src="http://www.globalnerdy.com/wordpress/wp-content/uploads/2009/04/031.jpg" width="600" height="286" /> </p>
<p>The people doing the reviews for the App Store are a toxic mix of Victorian-era prudish and Kafka-esque:</p>
<p><img style="border-right-width: 0px; display: block; float: none; border-top-width: 0px; border-bottom-width: 0px; margin-left: auto; border-left-width: 0px; margin-right: auto" title="&quot;Pull my finger&quot; was rejected for being indecent" border="0" alt="&quot;Pull my finger&quot; was rejected for being indecent" src="http://www.globalnerdy.com/wordpress/wp-content/uploads/2009/04/041.jpg" width="600" height="281" /> </p>
<p>…and you can forget writing any David Mamet / Quentin Tarantino themed-apps:</p>
<p><img style="border-right-width: 0px; display: block; float: none; border-top-width: 0px; border-bottom-width: 0px; margin-left: auto; border-left-width: 0px; margin-right: auto" title="Slide: No swearing" border="0" alt="Slide: No swearing" src="http://www.globalnerdy.com/wordpress/wp-content/uploads/2009/04/051.jpg" width="600" height="234" /> </p>
<p>…and that’s not just “no swearing” in your apps; that’s also “no swear words” in any search results your app returns. Consider the problem faced by one hapless app developer:</p>
<p><img style="border-right-width: 0px; display: block; float: none; border-top-width: 0px; border-bottom-width: 0px; margin-left: auto; border-left-width: 0px; margin-right: auto" title="Slide: Each time, an Apple auditor loads their app, searches for the word &quot;fuck&quot;, finds it in the 700k song database, and rejects their application." border="0" alt="Slide: Each time, an Apple auditor loads their app, searches for the word &quot;fuck&quot;, finds it in the 700k song database, and rejects their application." src="http://www.globalnerdy.com/wordpress/wp-content/uploads/2009/04/081.jpg" width="600" height="187" /> </p>
<p><img style="border-right-width: 0px; display: block; float: none; border-top-width: 0px; border-bottom-width: 0px; margin-left: auto; border-left-width: 0px; margin-right: auto" title="Slide: Of course, 99% of those songs are available for sale in iTunes. Apple will not directly respond to requests for clarification." border="0" alt="Slide: Of course, 99% of those songs are available for sale in iTunes. Apple will not directly respond to requests for clarification." src="http://www.globalnerdy.com/wordpress/wp-content/uploads/2009/04/091.jpg" width="600" height="228" /> </p>
<p>They’re also kind of uptight about certain novelty apps, such as the one that makes it look as though you’ve shattered your iPhone’s screen:</p>
<p><img style="border-right-width: 0px; display: block; float: none; border-top-width: 0px; border-bottom-width: 0px; margin-left: auto; border-left-width: 0px; margin-right: auto" title="Slide: Apple was worried that this app, which &quot;broke&quot; the iPhone when touched, would confuse their customers. Golly." border="0" alt="Slide: Apple was worried that this app, which &quot;broke&quot; the iPhone when touched, would confuse their customers. Golly." src="http://www.globalnerdy.com/wordpress/wp-content/uploads/2009/04/071.jpg" width="600" height="266" /> </p>
<p>When you submit your app for review, whatever you do, don’t put any joke items in the feature list. One developer, when submitting an updated version of an app (yes, you have to submit updates for review) threw in a joke item in the feature list: <strong>more dragons!</strong> Here’s the response from the App Store review board:</p>
<p><img style="border-right-width: 0px; display: block; float: none; border-top-width: 0px; border-bottom-width: 0px; margin-left: auto; border-left-width: 0px; margin-right: auto" title="Slide: &quot;What dragons are you referring to? There is no evidence of dragons in your application.&quot; " border="0" alt="Slide: &quot;What dragons are you referring to? There is no evidence of dragons in your application.&quot; " src="http://www.globalnerdy.com/wordpress/wp-content/uploads/2009/04/061.jpg" width="600" height="278" /> </p>
<p>The rest of Pete’s presentation was built around bypassing the App Store’s reviewer monkeys by building your iPhone apps as single-use browsers that were hard-wired to the web application where your app lived. That’s a workable solution for some apps, but not if you want to make use of the resources built into the iPhone.</p>
<p>While the Windows Mobile Marketplace might have a review board for legal purposes, it’s not the only way to distribute your apps. You can also make them downloadable from your site, meaning that <strong>you <em>can</em> distribute your screen-breakin’, hard-cussin’, dragon porn Windows Mobile app without The Man steppin’ on your throat.</strong> </p>
<p>Now isn’t that nice?</p>
<h3>Next</h3>
<p>In the next installment, I’ll provide a quick-and-dirty intro to writing your own Windows Mobile apps.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.globalnerdy.com/2009/04/13/upwardly-mobile-part-1-a-brief-tour-of-mobile-app-development/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Windows Mobile Gets Widgets!</title>
		<link>http://www.globalnerdy.com/2009/03/10/windows-mobile-gets-widgets/</link>
		<comments>http://www.globalnerdy.com/2009/03/10/windows-mobile-gets-widgets/#comments</comments>
		<pubDate>Tue, 10 Mar 2009 16:48:39 +0000</pubDate>
		<dc:creator>Joey deVilla</dc:creator>
				<category><![CDATA[Hardware and Gadgets]]></category>
		<category><![CDATA[Programming]]></category>
		<category><![CDATA[Software and Services]]></category>
		<category><![CDATA[Microsoft]]></category>
		<category><![CDATA[mobile]]></category>
		<category><![CDATA[phones]]></category>
		<category><![CDATA[widgets]]></category>
		<category><![CDATA[Windows Mobile]]></category>

		<guid isPermaLink="false">http://www.globalnerdy.com/2009/03/10/windows-mobile-gets-widgets/</guid>
		<description><![CDATA[This article originally appeared in Canadian Developer Connection.
There’s been quite a bit of good news on the Windows Mobile front lately. First, there’s the considerably improved user interface coming with Windows 6.5, including the “hexagon” menu (the rationale for which is explained quite well by Long Zheng). There’s also the upcoming Mobile Incubation Week, where [...]]]></description>
			<content:encoded><![CDATA[<p></p><p class="alert"><a href="http://blogs.msdn.com/cdndevs/archive/2009/03/10/windows-mobile-gets-widgets.aspx">This article originally appeared in <em>Canadian Developer Connection</em>.</a></p>
<p><strong>There’s been quite a bit of good news on the Windows Mobile front lately.</strong> First, there’s <a href="http://i.gizmodo.com/5154385/windows-mobile-65-hands-on-the-new-interface-rocks">the considerably improved user interface coming with Windows 6.5</a>, including the “hexagon” menu (the rationale for which is <a href="http://www.istartedsomething.com/20090302/windows-mobile-65-honeycomb-menu-simple-ingenuity/">explained quite well by Long Zheng</a>). There’s also the upcoming <a href="http://www.globalnerdy.com/2009/03/09/windows-mobile-incubation-week-april-13-17-in-mountain-view/">Mobile Incubation Week</a>, where startups are invited to come down to The Empire’s Silicon Valley Campus and workshop Windows Mobile 6.5 apps.</p>
<p><strong><a href="http://wmpoweruser.com/?p=3548">There’s even more good news, as shown in the photo below:</a></strong></p>
<p><a href="http://wmpoweruser.com/?p=3548"><img style="border-right-width: 0px; display: block; float: none; border-top-width: 0px; border-bottom-width: 0px; margin-left: auto; border-left-width: 0px; margin-right: auto" title="Various Windows Mobile screens showing widgets in action" border="0" alt="Various Windows Mobile screens showing widgets in action" src="http://www.globalnerdy.com/wordpress/wp-content/uploads/2009/03/windows-mobile-widgets.jpg" width="600" height="414" /></a></p>
<p>They’re widgets: little web applications that run within IE Mobile 6 with the “chrome” (that is, the standard browser controls) removed. They’re HTML/CSS/JavaScript-based web applications in the same spirit of the <a href="http://www.microsoft.com/windows/windows-vista/features/sidebar-gadgets.aspx">desktop/sidebar gadgets</a> in Windows, <a href="http://www.apple.com/downloads/dashboard/">Dashboard widgets</a> in Mac OS, or <a href="http://www.apple.com/webapps/whatarewebapps.html">web apps</a> on the iPhone (which aren’t getting as much love now that native apps are all the rage).</p>
<p>This is a very important development for Windows Mobile. You don’t need Visual Studio Pro (as far as I can tell, the Pro edition is the lowest-level version of Visual Studio that supports mobile development) to make widgets for Windows phones; all you need is your favourite web development tool set. At long last, Windows Mobile development will be open to just about everybody, regardless of their platform.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.globalnerdy.com/2009/03/10/windows-mobile-gets-widgets/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Windows Mobile Incubation Week: April 13 &#8211; 17 in Mountain View</title>
		<link>http://www.globalnerdy.com/2009/03/09/windows-mobile-incubation-week-april-13-17-in-mountain-view/</link>
		<comments>http://www.globalnerdy.com/2009/03/09/windows-mobile-incubation-week-april-13-17-in-mountain-view/#comments</comments>
		<pubDate>Tue, 10 Mar 2009 01:32:16 +0000</pubDate>
		<dc:creator>Joey deVilla</dc:creator>
				<category><![CDATA[Hardware and Gadgets]]></category>
		<category><![CDATA[Programming]]></category>
		<category><![CDATA[Microsoft]]></category>
		<category><![CDATA[mobile]]></category>
		<category><![CDATA[phones]]></category>
		<category><![CDATA[Windows Mobile]]></category>
		<category><![CDATA[Windows Phone]]></category>

		<guid isPermaLink="false">http://www.globalnerdy.com/2009/03/09/windows-mobile-incubation-week-april-13-17-in-mountain-view/</guid>
		<description><![CDATA[ 
I’ve written before that the current state of Windows Mobile makes me feel sad, and I’ve also written that recent developments like the new hexagon interface for the upcoming version 6.5 have given me reason to hope. Here’s another sign that The Empire is getting their mobile act together: TechFlash has a story about [...]]]></description>
			<content:encoded><![CDATA[<p></p><p><a href="http://www.techflash.com/Microsoft_tries_to_get_startups_making_new_Windows_Mobile_apps_40988352.html"><img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="Two Japanese schoolgirls showing off their cellphones to Darth Vader" border="0" alt="Two Japanese schoolgirls showing off their cellphones to Darth Vader" src="http://www.globalnerdy.com/wordpress/wp-content/uploads/2009/03/windows-mobile-codefest.jpg" width="600" height="480" /></a> </p>
<p>I’ve written before that <a href="http://www.globalnerdy.com/2009/02/11/this-is-how-the-current-state-of-windows-mobile-makes-me-feel/">the current state of Windows Mobile makes me feel sad</a>, and I’ve also written that <a href="more-thoughts-on-windows-whatever-it-is-that-runs-on-phones/">recent developments like the new hexagon interface for the upcoming version 6.5 have given me reason to hope</a>. Here’s another sign that The Empire is getting their mobile act together: <strong><a href="http://www.techflash.com/Microsoft_tries_to_get_startups_making_new_Windows_Mobile_apps_40988352.html"><em>TechFlash </em>has a story about the upcoming Mobile Incubation Week</a></strong>, which will take place at the <a href="http://www.microsoft.com/about/companyinformation/usaoffices/northwest/svc.mspx">Silicon Valley Campus</a> in Mountain View, California from April 13th through 17th.</p>
<p><a href="http://www.microsoftstartupzone.com/Blogs/brian_hoskins/Lists/Posts/Post.aspx?ID=7"><img style="border-bottom: 0px; border-left: 0px; margin: 0px 0px 0px 10px; display: inline; border-top: 0px; border-right: 0px" title="Incubation Week - Microsoft" border="0" alt="Incubation Week - Microsoft" align="right" src="http://www.globalnerdy.com/wordpress/wp-content/uploads/2009/03/incubation-week.jpg" width="357" height="76" /></a> </p>
<p>This will be the first <strong><a href="http://www.microsoftstartupzone.com/Blogs/brian_hoskins/Lists/Posts/Post.aspx?ID=7">Mobile Incubation Week</a></strong>, a jam session where startups are invited to meet with “technical gurus from Microsoft, technology veterans who have built their own Windows Mobile applications, and influential venture capitalists and industry experts”. They’ll see demos and presentations, get advice and assistance with the Windows Mobile platform and even start putting together Windows Mobile apps. At the end of the week, a winner will be selected from the participants, and s/he’ll be eligible for prizes and publicity.</p>
<p>The event is free as in beer; you just need to figure out how you’ll get to Mountain View and find a place to crash. Your group can be as large as three people – one or two technical people and one suit. All startups are eligible, whether or not you’ve built a mobile app. <strong>The only requirement is that you’re planning on building a Windows Mobile app.</strong></p>
<p>Space at Mobile Incubation Week is limited, so if you’re interested, apply as soon as you can! You can find more details about Windows Mobile Incubation Week in <a href="http://www.microsoftstartupzone.com/Blogs/brian_hoskins/Lists/Posts/Post.aspx?ID=7">this article in <em>Microsoft Startup Zone</em></a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.globalnerdy.com/2009/03/09/windows-mobile-incubation-week-april-13-17-in-mountain-view/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>More Thoughts on Windows Whatever-it-is-That-Runs-on-Phones</title>
		<link>http://www.globalnerdy.com/2009/02/16/more-thoughts-on-windows-whatever-it-is-that-runs-on-phones/</link>
		<comments>http://www.globalnerdy.com/2009/02/16/more-thoughts-on-windows-whatever-it-is-that-runs-on-phones/#comments</comments>
		<pubDate>Mon, 16 Feb 2009 23:39:51 +0000</pubDate>
		<dc:creator>Joey deVilla</dc:creator>
				<category><![CDATA[Hardware and Gadgets]]></category>
		<category><![CDATA[Programming]]></category>
		<category><![CDATA[Software and Services]]></category>
		<category><![CDATA[Microsoft]]></category>
		<category><![CDATA[mobile]]></category>
		<category><![CDATA[phones]]></category>
		<category><![CDATA[Windows]]></category>
		<category><![CDATA[Windows Mobile]]></category>
		<category><![CDATA[Windows Phone]]></category>

		<guid isPermaLink="false">http://www.globalnerdy.com/?p=2802</guid>
		<description><![CDATA[The Developer Angle

In case you don’t recognize the photo on the right, it’s the “Sad Darth Vader” photo from my earlier article titled This is How the Current State of Windows Mobile Makes Me Feel. I posted it in response to The Empire’s seemingly directionless efforts with its phone platform, Windows Mobile. Or, as it’s [...]]]></description>
			<content:encoded><![CDATA[<p></p><h3>The Developer Angle</h3>
<p><a href="http://www.globalnerdy.com/2009/02/11/this-is-how-the-current-state-of-windows-mobile-makes-me-feel/"><img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; margin-left: 0px; border-left-width: 0px; margin-right: 0px" title="A sad-looking kid in a Darth Vader sitting at a fast food restaurant table" border="0" alt="A sad-looking kid in a Darth Vader sitting at a fast food restaurant table" align="right" src="http://www.globalnerdy.com/wordpress/wp-content/uploads/2009/02/sad-vader1.jpg" width="200" height="285" /></a></p>
<p>In case you don’t recognize the photo on the right, it’s the “Sad Darth Vader” photo from my earlier article titled <strong><em><a href="http://www.globalnerdy.com/2009/02/11/this-is-how-the-current-state-of-windows-mobile-makes-me-feel/">This is How the Current State of Windows Mobile Makes Me Feel</a></em></strong>. I posted it in response to The Empire’s seemingly directionless efforts with its phone platform, Windows Mobile. Or, as it’s called now, Windows Phone. Or, as it used to be called, Windows CE. Or was that Windows Embedded?</p>
<p>Therein lies the first problem as far as developers are concerned: finding documentation on the subject of developing for Windows Whatever-it-is-that-runs-on-phones. It’s confusing because it’s hard to even figure out what the name of the SDK you’re supposed to use is – they all sound applicable. Is it Windows CE? Windows Mobile? Windows Embedded?</p>
<p>(By the bye, for current phones, it’s <em>Windows Mobile</em>, which is based on Windows Embedded CE. Now that this new brand, Windows Phone, is kicking around, there’s a chance that it’ll get filed under that name soon.)</p>
<p><img style="border-right-width: 0px; margin: 0px 10px 0px 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="Joey deVilla&#39;s Palm Treo" border="0" alt="Joey deVilla&#39;s Palm Treo" align="left" src="http://www.globalnerdy.com/wordpress/wp-content/uploads/2009/02/joey-palm-treo.jpg" width="250" height="333" /></p>
<p>As an evangelist for The Empire, it’s my job to help developers figure their way around our various platforms, and I’m hard-pressed to think of a platform that appears more shrouded in mystery and confusion than Windows Whatever-it-is-that-runs-on-phones. Over the next little while, I’m going to post pointers to existing Windows Mobile/Windows Phone development articles as well as articles based on my own experiences developing for the Windows-based phone I picked up while at the recent <a href="http://en.wikipedia.org/wiki/Techready">TechReady</a> 8 conference in Seattle. It’s a <a href="http://www.palm.com/us/products/phones/treopro/index.html">Palm Treo Pro</a>, pictured on the left, and I chose it because out of all the mobiles at the Expansys booth (they always have a booth at the big Microsoft developer conferences), it was the one with the best “feel”.</p>
<p>My first pointer is to Microsoft’s own <strong><a href="http://msdn.microsoft.com/en-us/library/bb158486.aspx">Windows Mobile 6 Documentation</a></strong>, located a couple of levels into the MSDN site. The main page for this section presents a giant point-and-click map of key topics for developers who want to write apps for Windows Whatever-it-is-that-runs-on-phones. I’m going to try out some of the exercises on that site and report back with stories of my experiences of getting started with Windows phone development, and whatever tips and tricks I pick up along the way.</p>
<p>If you’ve got any questions about developing for Windows Whatever-it-is-that-runs-on-phones, feel free to ask me, whether in the comments or <a href="mailto:joey.devilla@microsoft.com">via email</a>. I may not have the answers myself, but since I’m on the inside at Microsoft, I can say that “I know a guy who knows a guy,” if you get my drift.</p>
<h3>The User Angle</h3>
<p>The upcoming 6.5 version of Windows Mobile – or more appropriately, Windows Phone – was announced earlier today at <a href="http://www.mobileworldcongress.com/">Mobile World Congress</a> in Barcelona.&#160; It features a user interface that’s considerably more finger-friendly than the current 6.1, whose stylus-reliant design seems stuck in the era of the Palm Pilot. <em><a href="http://gizmodo.com/">Gizmodo’s</a></em> Jesus Diaz seems to really like it, as evidenced in the video he shot for his article titled <strong><em><a href="http://i.gizmodo.com/5154385/windows-mobile-65-hands-on-the-new-interface-rocks">Windows Mobile 6.5 Hands On: The New Interface Rocks</a></em></strong>:</p>
<p align="center"><object width="804" height="606"><param name="allowfullscreen" value="true" /><param name="allowscriptaccess" value="always" /><param name="movie" value="http://vimeo.com/moogaloop.swf?clip_id=3240086&amp;server=vimeo.com&amp;show_title=0&amp;show_byline=0&amp;show_portrait=0&amp;color=00ADEF&amp;fullscreen=1" /><embed src="http://vimeo.com/moogaloop.swf?clip_id=3240086&amp;server=vimeo.com&amp;show_title=0&amp;show_byline=0&amp;show_portrait=0&amp;color=00ADEF&amp;fullscreen=1" type="application/x-shockwave-flash" allowfullscreen="true" allowscriptaccess="always" width="600" height="452"></embed></object>    <br /><a href="http://vimeo.com/3240086">Windows Mobile 6.5 Running on HTC</a> from <a href="http://vimeo.com/user695393">Jesus Diaz</a> on <a href="http://vimeo.com">Vimeo</a>.</p>
<p>Diaz ends <a href="http://i.gizmodo.com/5154385/windows-mobile-65-hands-on-the-new-interface-rocks">his article</a> on a positive note, a rare thing for a writeup on Windows Whatever-it-is-that-runs-on-phones: </p>
<blockquote><p>From this first touch on, it looks like Microsoft is back in the game. They don&#8217;t have the upper hand yet, but they are clearly waking up. We will see what happens and how deep these changes really are once it gets released.</p>
</blockquote>
<h3>The Developer Angle, Once More</h3>
<p>The apparent improvements in 6.5 and promised continued improvements in Windows Whatever-it-is-that-runs-on-phones version 7 are a good sign, but a lot of the success story I’m hoping for rests with applications for these phones. For that, there has to be a developer community that has the tools, resources and encouragement to develop for Windows Whatever-it-is-that-runs-on-phones. <strong>Building that community is a challenge that I’m taking up. What can I do to help?</strong></p>
]]></content:encoded>
			<wfw:commentRss>http://www.globalnerdy.com/2009/02/16/more-thoughts-on-windows-whatever-it-is-that-runs-on-phones/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>This is How the Current State of Windows Mobile Makes Me Feel</title>
		<link>http://www.globalnerdy.com/2009/02/11/this-is-how-the-current-state-of-windows-mobile-makes-me-feel/</link>
		<comments>http://www.globalnerdy.com/2009/02/11/this-is-how-the-current-state-of-windows-mobile-makes-me-feel/#comments</comments>
		<pubDate>Wed, 11 Feb 2009 16:29:39 +0000</pubDate>
		<dc:creator>Joey deVilla</dc:creator>
				<category><![CDATA[Software and Services]]></category>
		<category><![CDATA[marketplace]]></category>
		<category><![CDATA[Microsoft]]></category>
		<category><![CDATA[mobile]]></category>
		<category><![CDATA[sad]]></category>
		<category><![CDATA[Windows]]></category>
		<category><![CDATA[Windows Mobile]]></category>

		<guid isPermaLink="false">http://www.globalnerdy.com/2009/02/11/this-is-how-the-current-state-of-windows-mobile-makes-me-feel/</guid>
		<description><![CDATA[
]]></description>
			<content:encoded><![CDATA[<p></p><p><img style="border-bottom: 0px; border-left: 0px; display: block; float: none; margin-left: auto; border-top: 0px; margin-right: auto; border-right: 0px" title="Sad-looking kid in a Darth Vader mask sitting alone at a fast-food restaurant table." border="0" alt="Sad-looking kid in a Darth Vader mask sitting alone at a fast-food restaurant table." src="http://www.globalnerdy.com/wordpress/wp-content/uploads/2009/02/sad-vader.jpg" width="600" height="525" /></p>
]]></content:encoded>
			<wfw:commentRss>http://www.globalnerdy.com/2009/02/11/this-is-how-the-current-state-of-windows-mobile-makes-me-feel/feed/</wfw:commentRss>
		<slash:comments>7</slash:comments>
		</item>
	</channel>
</rss>
