<?xml version="1.0" encoding="utf-8"?>
<rss xmlns:atom="https://www.w3.org/2005/Atom" xmlns:sy="https://purl.org/rss/1.0/modules/syndication/" xmlns:dc="https://purl.org/dc/elements/1.1/" xmlns:content="https://purl.org/rss/1.0/modules/content/" xmlns:wfw="https://wellformedweb.org/CommentAPI/" xmlns:slash="https://purl.org/rss/1.0/modules/slash/"
  version="2.0">
  <channel>
    <title>Nick Eubanks' Blog</title>
    <atom:link
      href="https://docs.microsoft.com/archive/blogs/nieubank/feed.xml"
      rel="self"
      type="application/rss+xml" />
    <link>https://docs.microsoft.com/archive/blogs/nieubank/feed.xml</link>
    <description />
    <lastBuildDate>Wed, 17 Apr 2019 03:50:23 GMT</lastBuildDate>
    <language>en-US</language>
    <sy:updatePeriod>hourly</sy:updatePeriod>
    <sy:updateFrequency>1</sy:updateFrequency>
    <item>
      <title>So you want to write a calendar replacement app? A look into Appointments Providers in Windows 8.1</title>
      <link>https://docs.microsoft.com/archive/blogs/nieubank/so-you-want-to-write-a-calendar-replacement-app-a-look-into-appointments-providers-in-windows-8-1</link>
      <pubDate>Tue, 15 Oct 2013 10:00:00 GMT</pubDate>
      <dc:creator><![CDATA[Nick A Eubanks]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/nieubank/2013/10/15/so-you-want-to-write-a-calendar-replacement-app-a-look-into-appointments-providers-in-windows-8-1/</guid>
      <description><![CDATA[First off, writing a calendar replacement app is no easy feat and this post is not designed to...]]></description>
      <content:encoded><![CDATA[<p>First off, writing a calendar replacement app is no easy feat and this post is not designed to instruct you in how to manage all the terrible evils of calendaring when building your calendar app, it's about how to use the new Appointments Provider activation kind in Windows 8.1 to enable your app to accept and manage appointments created by other apps.</p>
<p>In Windows 8.1 we've enabled the ability for any Windows Store App to create appointments and add them to the user's calendar, update that appointment by replacing it on the user's calendar and the ability to remove those appointments that they've created through the AppointmentManager and AppointmentsProvider APIs.</p>
<p>Appointments Providers are apps that declare to be capable of handling requests from other apps to perform this addition, replacement and removal of appointments for the user and any&nbsp;calendar app can and should implement this functionally.&nbsp;For this overview of the Appointments Provider side of the equation, I'm going to start with the Appointments API sample available on MSDN and turn it into an appointments provider app to demonstrate how to declare yourself as a provider and how to handle being activated by the AppointmentManager APIs.</p>
<p>&nbsp;</p>
<p><strong>What you're going to need to get started:</strong></p>
<ol>
<li>You're going to need Windows 8.1 and&nbsp;Visual Studio 2013.</li>
<li>Familiarize yourself with Activation in Windows 8. (<a title="Javascript Activation" href="https://msdn.microsoft.com/en-us/library/windows/apps/hh465102.aspx">JavaScript</a>, <a title="C#/C++ Activation" href="https://msdn.microsoft.com/library/windows/apps/Hh465093(v=win.10).aspx">C#/C++)</a>.</li>
<li>Download the Appointments API sample in your favorite language from msdn: <strong><a href="https://code.msdn.microsoft.com/windowsapps/Appointments-API-sample-2b55c76e">https://code.msdn.microsoft.com/windowsapps/Appointments-API-sample-2b55c76e</a> </strong>(I'm going to be using C# in this post if you intend on just copying and pasting your way through the tutorial).</li>
<li>Take a look at the <a title="AppointmentManager reference" href="https://msdn.microsoft.com/en-us/library/windows/apps/windows.applicationmodel.appointments.appointmentmanager.aspx">AppointmentManager APIs</a> which are used by Windows Store apps to launch an Appointments Provider (your calendar app)&nbsp;to manage their Appointments.</li>
<li>Check out the <a title="Appointment RuntimeClass" href="https://msdn.microsoft.com/en-us/library/windows/apps/windows.applicationmodel.appointments.appointment.aspx">Appointment Properties</a> that your calendar app should support&nbsp;as a good Windows citizen.</li>
<li>Read over the <a title="AppointmentsProvider" href="https://msdn.microsoft.com/en-us/library/windows/apps/windows.applicationmodel.appointments.appointmentsprovider.aspx">AppointmentsProvider namespace</a> since these are the primary types you'll be dealing with when implementing your appointments provider functionality.</li>
</ol>
<p><strong></strong>&nbsp;</p>
<p><strong>Step 1: Registering your app as an Appointments Provider</strong></p>
<p>In order to let Windows know that your app is capable of managing Appointments you need to update your app's manifest to include the AppointmentsProvider extension. You may have noticed though that it's not as straight forward as the existing "Declarations" when viewing the package.appxmanifest for your project. Being an Appointments Provider takes a lot of responsibility because an end user can only have one registered at a time so this is a bit of a hidden extension to keep it from being something every app feels like they should implement. The way to do go about it is to manually edit your manifest file as so:</p>
<p>1. Right click on "Package.appxmanifest" in your solution and select "View Code"</p>
<p>2. Make sure your manifest has the Windows 8.1 schema declared:</p>
<p><span style="font-family: courier new,courier;"><span style="color: #000080;">&lt;</span><span style="color: #800000;">Package</span> <span style="color: #ff0000;">xmlns</span><span style="color: #000080;">="</span><a href="https://schemas.microsoft.com/appx/2010/manifest">https://schemas.microsoft.com/appx/2010/manifest</a><span style="color: #000080;">"</span><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #ff0000;">xmlns:m2</span><span style="color: #000080;">="</span><a href="https://schemas.microsoft.com/appx/2013/manifest">https://schemas.microsoft.com/appx/2013/manifest</a><span style="color: #000080;">"&gt;</span></span></p>
<p>3. Under the Application tag, register the AppointmentsProvider extension.</p>
<p><span style="color: #000080; font-family: courier new,courier;">&lt;<span style="color: #800000;">Extensions</span>&gt;</span><br /><span style="color: #000080; font-family: courier new,courier;">&nbsp; &lt;<span style="color: #800000;">m2:Extension</span> <span style="color: #ff0000;">Category</span>="windows.appointmentsProvider"&gt;</span><br /><span style="color: #000080; font-family: courier new,courier;">&nbsp;&nbsp;&nbsp; &lt;<span style="color: #800000;">m2:AppointmentsProvider</span>&gt;</span><br /><span style="color: #000080; font-family: courier new,courier;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;<span style="color: #800000;">m2:AppointmentsProviderLaunchActions</span>&gt;</span><br /><span style="color: #000080; font-family: courier new,courier;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;<span style="color: #800000;">m2:LaunchAction</span> <span style="color: #ff0000;">Verb</span>="addAppointment" <span style="color: #ff0000;">Executable</span>="Appointments.exe" <span style="color: #ff0000;">EntryPoint</span>="Appointments.App"/&gt;</span><br /><span style="color: #000080; font-family: courier new,courier;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;<span style="color: #800000;">m2:LaunchAction</span> <span style="color: #ff0000;">Verb</span>="replaceAppointment" <span style="color: #ff0000;">Executable</span>="Appointments.exe" <span style="color: #ff0000;">EntryPoint</span>="Appointments.App"/&gt;</span><br /><span style="color: #000080; font-family: courier new,courier;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;<span style="color: #800000;">m2:LaunchAction</span> <span style="color: #ff0000;">Verb</span>="removeAppointment" <span style="color: #ff0000;">Executable</span>="Appointments.exe" <span style="color: #ff0000;">EntryPoint</span>="Appointments.App"/&gt;</span><br /><span style="color: #000080; font-family: courier new,courier;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;<span style="color: #800000;">m2:LaunchAction</span> <span style="color: #ff0000;">Verb</span>="showTimeFrame" <span style="color: #ff0000;">Executable</span>="Appointments.exe" <span style="color: #ff0000;">EntryPoint</span>="Appointments.App"/&gt;</span><br /><span style="color: #000080; font-family: courier new,courier;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;/<span style="color: #800000;">m2:AppointmentsProviderLaunchActions</span>&gt;</span><br /><span style="color: #000080; font-family: courier new,courier;">&nbsp;&nbsp;&nbsp; &lt;/<span style="color: #800000;">m2:AppointmentsProvider</span>&gt;</span><br /><span style="color: #000080; font-family: courier new,courier;">&nbsp; &lt;/<span style="color: #800000;">m2:Extension</span>&gt;</span><br /><span style="color: #000080; font-family: courier new,courier;">&lt;/<span style="color: #800000;">Extensions</span>&gt;</span></p>
<p><span style="text-decoration: underline;">NOTE:</span> In JavaScript/HTML5 apps you'll need to provide a StartPage rather than an entry point, e.g.<span style="color: #000080; font-family: courier new,courier;"> <span style="font-family: courier new,courier;">&lt;<span style="color: #800000;">m2:LaunchAction <span style="color: #ff0000;">Verb</span></span>="removeAppointment" <span style="color: #ff0000;">StartPage</span>="removeAppointment.html" /&gt;</span></span></p>
<p>At this point we've told the system that our app is an appointments provider and if you build and run your project you should notice in the PC Settings app&nbsp;under "Search and apps" -&gt; "Defaults" your app should be an option under "Calendar"</p>
<p>&nbsp;<a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/53/80/2352.Capture.PNG" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-53-80/2352.Capture.PNG"><img style="margin-right: auto; margin-left: auto; display: block;" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/53/80/2352.Capture.PNG" original-url="https://blogs.msdn.com/resized-image.ashx/__size/550x0/__key/communityserver-blogs-components-weblogfiles/00-00-01-53-80/2352.Capture.PNG" alt="" border="0" /></a></p>
<p><strong>Step 2: Handling the AppointmentsProvider activation kind</strong></p>
<p>Being an appointments provider means that your app <em>must</em> handle each of the four appointments provider "Verbs" which stand for the various actions an appointments provider can perform for other apps, those include Add, Remove and Replace an Appointment and ShowTimeFrame, which is basically just activating the appointments provider app to show the user's calendar at a particular date and time. You can determine which verb you were activated for by querying for <a title="Verb" href="https://msdn.microsoft.com/en-us/library/windows/apps/windows.applicationmodel.activation.iappointmentsprovideractivatedeventargs.verb.aspx">IAppointmentsProviderActivatedEventArgs and inspecting the Verb property</a>. You can use the <a title="Launch action verbs" href="https://msdn.microsoft.com/en-us/library/windows/apps/windows.applicationmodel.appointments.appointmentsprovider.appointmentsproviderlaunchactionverbs.aspx">AppointmentsProviderLaunchActionVerbs</a> statics class to help in the comparison.</p>
<p>Here's an example of the OnActivated handler:</p>
<p><span style="font-family: courier new,courier;">protected override void OnActivated(IActivatedEventArgs args)</span><br /><span style="font-family: courier new,courier;">{</span><br /><span style="font-family: courier new,courier;">&nbsp;&nbsp;&nbsp; if (args.Kind == <strong>ActivationKind.AppointmentsProvider</strong>)</span><br /><span style="font-family: courier new,courier;">&nbsp;&nbsp;&nbsp; {</span><br /><span style="font-family: courier new,courier;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; IAppointmentsProviderActivatedEventArgs providerArgs = <strong>args as IAppointmentsProviderActivatedEventArgs</strong>;</span><br /><span style="font-family: courier new,courier;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if (providerArgs.Verb.Equals(AppointmentsProviderLaunchActionVerbs.AddAppointment))</span><br /><span style="font-family: courier new,courier;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {</span></p>
<p><span style="font-family: courier new,courier;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }</span><br /><span style="font-family: courier new,courier;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; else if (<strong>providerArgs.Verb.Equals(AppointmentsProviderLaunchActionVerbs.RemoveAppointment</strong>))</span><br /><span style="font-family: courier new,courier;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {</span></p>
<p><span style="font-family: courier new,courier;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }</span><br /><span style="font-family: courier new,courier;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; else if (providerArgs.Verb.Equals(AppointmentsProviderLaunchActionVerbs.ReplaceAppointment))</span><br /><span style="font-family: courier new,courier;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {</span></p>
<p><span style="font-family: courier new,courier;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }</span><br /><span style="font-family: courier new,courier;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; else if (providerArgs.Verb.Equals(AppointmentsProviderLaunchActionVerbs.ShowTimeFrame))</span><br /><span style="font-family: courier new,courier;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {</span></p>
<p><span style="font-family: courier new,courier;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }</span><br /><span style="font-family: courier new,courier;">&nbsp;&nbsp;&nbsp; }</span><br /><span style="font-family: courier new,courier;">}</span></p>
<p>Now if you set a break point on the OnActivated function and run the sample, you can test the various scenarios and watch your app get activated for each verb. Here's a screenshot of a new instance of the sample app being activated for the Add Appointment verb at the splash screen:</p>
<p><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/53/80/1524.Sample.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-53-80/1524.Sample.png"><img style="margin-right: auto; margin-left: auto; display: block;" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/53/80/1524.Sample.png" original-url="https://blogs.msdn.com/resized-image.ashx/__size/550x0/__key/communityserver-blogs-components-weblogfiles/00-00-01-53-80/1524.Sample.png" alt="" border="0" /></a></p>
<p><span style="text-decoration: underline;">TIP:</span> I strongly recommend using the VS Simulator when debugging Appointments Providers considering the Appointments Provider is launched in a hosted flyout style window. The hosted window is dismissed any time the user clicks or touches outside of the window.</p>
<p>&nbsp;</p>
<p><strong>Step 3: Dealing with appointment operations</strong></p>
<p>Now you're app is registered properly and being activated for each of the appointments provider launch action verbs. This is where your part comes to play, you have to add the logic to add, remove, or replace the appointment that the other app wants and report status back. The add, remove and replace arguments each have an Operation member that your app will use to manage the lifetime of that appointment operation. The basic flow is this:</p>
<ul>
<li>Once you know which verb you were activated for, cast the IAppointmentsProviderActivatedEventArgs to the appropriate type: AppointmentsProviderAddAppointmentActivatedEventArgs, AppointmentsProviderRemoveAppointmentActivatedEventArgs, AppointmentsProviderReplaceAppointmentActivatedEventArgs, or AppointmentsProviderShowTimeFrameActivatedEventArgs.</li>
<li>Update your UI with the appropriate information based on the information given to you on the event args. For example, you may want to show the appointment information with&nbsp;a confirmation button for Add Appointment using the <a title="AppointmentInformation" href="https://msdn.microsoft.com/en-us/library/windows/apps/windows.applicationmodel.appointments.appointmentsprovider.addappointmentoperation.appointmentinformation.aspx">AddAppointmentOperation.AppointmentInformation</a> member.</li>
<li>Once the user clicks your "Okay" button to confirm the add, remove or replace then you want to <a title="DismissUI" href="https://msdn.microsoft.com/en-us/library/windows/apps/windows.applicationmodel.appointments.appointmentsprovider.addappointmentoperation.dismissui.aspx">dismiss the flyout your app is hosted in</a> so that you can process the request without the user having to wait on it. Each operation type has this DismissUI method that will hide your flyout and indicate to Windows that you're finished with user interaction.</li>
<li>When you've finished actually doing the work in the background to save or remove&nbsp;the appointment then you should call the appropriate ReportCompleted method on the operation member.</li>
</ul>
<p><span style="text-decoration: underline;">Add Appointment Example</span></p>
<p><span style="font-family: courier new,courier;">AppointmentsProviderAddAppointmentActivatedEventArgs addArgs = args as AppointmentsProviderAddAppointmentActivatedEventArgs;</span><br /><span style="font-family: courier new,courier;">var appointmentToAdd = addArgs.AddAppointmentOperation.AppointmentInformation;</span></p>
<p><span style="font-family: courier new,courier;">// Show UI with this appointment information populated, maybe allow the user to edit some of the properties before saving.</span></p>
<p><span style="font-family: courier new,courier;">// When the user clicks "Okay" call DismissUI to tell Windows you're done with user interaction</span><br /><span style="font-family: courier new,courier;">addArgs.AddAppointmentOperation.DismissUI();</span></p>
<p><span style="font-family: courier new,courier;">// Do work in the background to save the results and then call report completed with a generated globaly unique appointment id<br />addArgs.AddAppointmentOperation.ReportCompleted("Appointment Id");</span></p>
<p><span style="text-decoration: underline;">Remove Appointment Example</span></p>
<p><span style="font-family: courier new,courier;">AppointmentsProviderRemoveAppointmentActivatedEventArgs removeArgs = args as AppointmentsProviderRemoveAppointmentActivatedEventArgs;</span><br /><span style="font-family: courier new,courier;">var appointmentIdOfAppointmentToRemove = removeArgs.RemoveAppointmentOperation.AppointmentId;</span></p>
<p><span style="font-family: courier new,courier;">// Look up the appointment and determine whether or not to remove the entire series or just an instance</span><br /><span style="font-family: courier new,courier;">Appointment appointmentToRemove = GetAppointmentFromDatabase(appointmentIdOfAppointmentToRemove);</span><br /><span style="font-family: courier new,courier;">if (appointmentToRemove.Recurrence != null)</span><br /><span style="font-family: courier new,courier;">{</span><br /><span style="font-family: courier new,courier;">&nbsp;&nbsp;&nbsp; // If this appointment has recurrence, the instanceStartDate property on RemoveAppointmentOperation tells you which instance to remove</span><br /><span style="font-family: courier new,courier;">&nbsp;&nbsp;&nbsp; DateTimeOffset instanceDateToRemove = removeArgs.RemoveAppointmentOperation.InstanceStartDate.Value;</span><br /><span style="font-family: courier new,courier;">}</span></p>
<p><span style="font-family: courier new,courier;">// Populate UI and ask the user to confirm the removal</span></p>
<p><span style="font-family: courier new,courier;">// When the user clicks "Okay" call DismissUI to tell Windows you're done with user interaction</span><br /><span style="font-family: courier new,courier;">removeArgs.RemoveAppointmentOperation.DismissUI();</span></p>
<p><span style="font-family: courier new,courier;">// When you've finished removing the appointment from your app data, call ReportCompleted to tell the calling app that it was removed</span><br /><span style="font-family: courier new,courier;">// If the appointment couldn't be found then you should still call ReportCompleted</span><br /><span style="font-family: courier new,courier;">removeArgs.RemoveAppointmentOperation.ReportCompleted();</span></p>
<p>&nbsp;</p>
<p><span style="text-decoration: underline;">NOTE:</span> The ShowTimeFrame verb activates you in a standard main window split 50/50 along with the calling app. There are no special&nbsp;lifetime considerations for ShowTimeFrame like there are for Add, Replace and Remove since you're not being activated in a hosted flyout. Just take the TimeToShow and Duration properties on the AppointmentsProviderShowTimeFrameActivatedEventArgs and display a nice view of the user's calendar around that time.</p>
<p><span style="text-decoration: underline;">TIP:</span> The flyout dimensions are fixed at 320px by 400px so be very careful when crafting your UI for the Add, Remove and Replace operations.</p>
<p>&nbsp;</p>
<p>I could go into a lot more details about how to tailor your app to become an amazing calendar replacement through the use of the new Appointments Provider APIs in Windows 8.1 but think that this quick tutorial should give you enough to get started. Please leave any specific questions you may have in the comments section and I'll be happy to address them. Happy coding!</p>
<p>&nbsp;</p>
<p>-Nick</p>]]></content:encoded>
    </item>
    <item>
      <title>This is my Windows Phone</title>
      <link>https://docs.microsoft.com/archive/blogs/nieubank/this-is-my-windows-phone</link>
      <pubDate>Sun, 13 Oct 2013 19:21:00 GMT</pubDate>
      <dc:creator><![CDATA[Nick A Eubanks]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/nieubank/2013/10/13/this-is-my-windows-phone/</guid>
      <description><![CDATA[I'm&nbsp;Nick Eubanks, and this is my Windows Phone.

I've been using Windows Phone 8 on my Nokia...]]></description>
      <content:encoded><![CDATA[<p style="text-align: left;"><strong>I'm&nbsp;Nick Eubanks, and this is my Windows Phone.</strong></p>
<p style="text-align: center;"><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/53/80/2845.wp_ss_20131013_0003%20(1).png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-53-80/2845.wp_5F00_ss_5F00_20131013_5F00_0003-_2800_1_2900_.png"><img src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/53/80/2845.wp_ss_20131013_0003%20(1).png" original-url="https://blogs.msdn.com/resized-image.ashx/__size/550x0/__key/communityserver-blogs-components-weblogfiles/00-00-01-53-80/2845.wp_5F00_ss_5F00_20131013_5F00_0003-_2800_1_2900_.png" alt="" width="270" height="466" border="0" /></a></p>
<p>I've been using Windows Phone 8 on my Nokia Lumia 928 for the past several months and have had such an amazing experience so far that I felt&nbsp;the&nbsp;need&nbsp;to share.&nbsp;First, a little background into my digital life, before I jumped on to a Windows Phone, I was an avid iPhone user&nbsp;having both the iPhone 4 and&nbsp;5 over the&nbsp;two to three years and before that I had the Motorola Droid.&nbsp;As a Microsoft employee, I felt obligated to switch to a Windows device but was afraid that I would miss the apps and the thin and light form factor of the iPhone which kept me from switching for quite a while. I say that just to prove that I'm not just some 'fanboy' ranting on about how awesome this operating system is without the experience to prove it, it was actually a hard choice for me to make the switch but I'm very glad that I did and won't look back.</p>
<p>Throughout the past year I have started working more closely with the Windows Phone team and was able to see first hand how passionate and excited they are about their product which made me finally make the leap of faith and purchase a Nokia 928 back in June.&nbsp;The minute I took it out of the box I was little disappointed with the heft of the device and browsing through the store took me back to early days of Android 2.0&nbsp;a bit when I didn't find all the hundreds of apps that I had installed on my iPhone (the vast majority of which I didn't use,&nbsp;I quickly learned). Those feelings were overcome once I connected my Microsoft Account and saw how alive my phone became and aside from the difficulty in reaching the back button when using the device with one hand, I do appreciate the greater screen real estate.&nbsp;I'm heavily invested in the Mircrosoft ecosystem so it was&nbsp;nice to see all my emails, pictures, skydrive documents, one note notebooks, music (through&nbsp;Xbox Music pass),&nbsp;Xbox achievements, and contacts show up&nbsp;and&nbsp;immediately&nbsp;starting to&nbsp;appear on my start screen. Interacting with the OS felt modern, a breath of fresh air. This may sound like a denouncement but I swear its a huge compliment -&nbsp;the first reaction I had once everything was set up was to call my parents and tell them that I had&nbsp;finally&nbsp;found the smart phone for them (they both ended up buying one and absolutely love their phones, probably more than I do).</p>
<p>The experience only got better over the next couple months as I got more familiar with the platform and how intuitive everything was.&nbsp;I could actually&nbsp;personalize my phone&nbsp;by choosing which tiles/apps I value and what sizes I want them on the start screen&nbsp;which is a lot nicer than just being able to move icons around and&nbsp;throwing them into folders. I realized how little I actually enjoyed using my phone when I&nbsp;used an&nbsp;iPhone as my daily driver, this one felt alive and personal. This OS is not just&nbsp;a bunch of&nbsp;jumping back and forth into and out of individual silos of apps, with Windows Phone everything is connected and seamlessly flows from one experience to the next and back. The introduction of the Bing News, Weather, Finance, and Sports apps made the experience all the better and with Nokia's additions like Glance and double tap to wake, I can honestly say that I love my phone.</p>
<p>&nbsp;</p>
<p><strong>My Start Screen, the essential apps</strong></p>
<p style="text-align: center;"><strong><img src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/53/80/0167.wp_ss_20131012_0002.png" original-url="https://blogs.msdn.com/resized-image.ashx/__size/400x800/__key/communityserver-blogs-components-weblogfiles/00-00-01-53-80/0167.wp_5F00_ss_5F00_20131012_5F00_0002.png" alt="" border="0" /><img src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/53/80/3022.wp_ss_20131012_0003.png" original-url="https://blogs.msdn.com/resized-image.ashx/__size/400x800/__key/communityserver-blogs-components-weblogfiles/00-00-01-53-80/3022.wp_5F00_ss_5F00_20131012_5F00_0003.png" alt="" border="0" /><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/53/80/5531.wp_ss_20131012_0004%20(2).png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-53-80/5531.wp_5F00_ss_5F00_20131012_5F00_0004-_2800_2_2900_.png"><img src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/53/80/5531.wp_ss_20131012_0004%20(2).png" original-url="https://blogs.msdn.com/resized-image.ashx/__size/400x800/__key/communityserver-blogs-components-weblogfiles/00-00-01-53-80/5531.wp_5F00_ss_5F00_20131012_5F00_0004-_2800_2_2900_.png" alt="" border="0" /></a>&nbsp;</strong></p>
<p style="text-align: left;">This is my start screen which I use to hold all the apps that I use pretty much every day. It's very nice to be able to see updates at a glance on the live tiles; I check the weather without ever opening an app, I can see how much money I've lost or gained throughout the day with a quick glance at the stock tile, I see photos and status updates from my family with the Family pin from the People Hub, I can book my connector ride to work at a moments notice, or check the traffic over Lake Washington to see how much longer I should stay at the office... or sleep in. I have all of my communication apps together near the top so that I can see the number of calls, emails, texts, or lync messages that I've missed. The music tile shows the artist that's playing if I'm listening to music, and my calendar actually tells me where I need to go next. These are really all the apps that I really need and rarely to I find myself going to the store to hunt down something that's missing.</p>
<p style="text-align: left;"><strong></strong>&nbsp;</p>
<p style="text-align: left;"><strong>The good, and bad.</strong></p>
<p style="text-align: left;">Here&nbsp;is a quick&nbsp;list the things that I absolutely love about my Windows Phone, and the things that could use some improvement.</p>
<p style="text-align: left;">The Good:</p>
<ul>
<li>
<div style="text-align: left;">The tiles are far more useful than I anticipated, sometimes I find myself turning on my screen just to stare at them jump around.</div>
</li>
<li>
<div style="text-align: left;">On Nokia devices, the glance and double tap to wake on GDR2/Amber is awesome!</div>
</li>
<li>
<div style="text-align: left;">Bing images as your lock screen background brings a fresh face to the phone every day.</div>
</li>
<li>
<div style="text-align: left;">While driving, texting via Bluetooth is extremely good, a voice will ask if you want it read aloud or ignore, and then you can respond or not.</div>
</li>
<li>
<div style="text-align: left;">Having Office is very handy, especially when it comes to SharePoint and&nbsp;right's protected documents.</div>
</li>
<li>
<div style="text-align: left;">Email is world class unlike every other platform out there.</div>
</li>
<li>
<div style="text-align: left;">Facebook messaging within the first party standard texting/messaging app is extremely nice.</div>
</li>
<li>
<div style="text-align: left;">Being able to link various sets of mailboxes is a nice feature rather than the all or nothing "universal mailbox" found on other platforms.</div>
</li>
<li>
<div style="text-align: left;">Earning achievements in games is nice.</div>
</li>
<li>
<div style="text-align: left;">The back button and backstack is awesome, it really connects the app to app experience. I especially like that many apps will rely on&nbsp;this for navigating to web content via IE rather than hosting their own webviews.&nbsp;</div>
</li>
<li>
<div style="text-align: left;">Xbox Music is unmatched.</div>
</li>
</ul>
<p style="text-align: left;">The Bad (for now):</p>
<ul>
<li>
<div style="text-align: left;">I miss notification toasts a lot (especially on football days where ESPN alerts happen frequently).</div>
</li>
<li>
<div style="text-align: left;">I can't close an app without restarting the phone, I know that in most circumstances you don't have to but there is a need every once and a while. (Update: GDR3 fixes this! <a href="https://blogs.windows.com/windows_phone/b/windowsphone/archive/2013/10/14/announcing-our-third-windows-phone-8-update-plus-a-new-developer-preview-program.aspx">https://blogs.windows.com/windows_phone/b/windowsphone/archive/2013/10/14/announcing-our-third-windows-phone-8-update-plus-a-new-developer-preview-program.aspx)</a></div>
</li>
<li>
<div style="text-align: left;">No SnapChat, this is one of those apps that's preventing my younger brother from getting a Windows Phone. (This bullet can also be repurposed for any apps falling into the "App Gap" territory)</div>
</li>
<li>
<div style="text-align: left;">Podcasts from the Store/Music hub take way too long to become available, fortunately other apps like i Podcast, excel at this.</div>
</li>
<li>
<div style="text-align: left;">Quick access to airplane mode or wifi and Bluetooth toggles would be extremely helpful.</div>
</li>
<li>
<div style="text-align: left;">The call and SMS filter doesn't seem to work for me.</div>
</li>
<li>
<div style="text-align: left;">Internet Explorer drop downs could use some work, these worked a lot better on Safari.</div>
</li>
</ul>
<p style="text-align: left;">I'm sure these lists will change over time as the platform matures and evolves. In general though, Windows Phone 8 is an amazing platform and I'm getting tired of tech bloggers and journalists not giving it the time of day or spreading mis-information about it for lack of actually ever trying it. It is the only platform that I would recommend to newcomers to the smart phone market for it's ease of use and "all-in-one" package of Microsoft services that get better all the time, and one that I strongly urge people who are diehard Android or iOS fans to try&nbsp;for an&nbsp;extended period of time, I think they'd be surprised how quickly they'll fall in love.</p>
<p style="text-align: left;">&nbsp;</p>
<p style="text-align: left;">&nbsp;</p>
<p style="text-align: left;">I've been meaning to get&nbsp;into blogging for a while now&nbsp;and thought a post on my experiences with Windows Phone would be a good place to start. I have another post in the works about some of the work I did in Windows 8.1 which I'll probably put up in a week or so covering the new <a title="Appointment APIs" href="https://msdn.microsoft.com/library/windows/apps/dn263359">Appointments APIs</a> and how to actually write an Appointments Provider app. Apparently some one already beat me to it on how to use the APIs themselves, even though they completely stole my sample code... :) - <a href="https://www.codeguru.com/win_mobile/win_store_apps/programmatically-creating-and-updating-appointments-in-windows-8.1.htm">https://www.codeguru.com/win_mobile/win_store_apps/programmatically-creating-and-updating-appointments-in-windows-8.1.htm</a>. In the mean time I can be found on Twitter, <a title="naeubanks" href="https://twitter.com/naeubanks">@naeubanks</a>.</p>
<p style="text-align: left;">&nbsp;</p>
<p style="text-align: left;">-Nick</p>
<p style="text-align: center;">&nbsp;</p>]]></content:encoded>
    </item>
  </channel>
</rss>