WPF-Blogger.com [Complete Feed] http://www.wpf-blogger.com All news and information about Windows Presentation Foundation and Silverlight at one place. Sonntag, 19. Mai 2013 Two Outstanding Documentaries <p> In December 2008 &#x2014; between the election of Barack Obama and his inauguration &#x2014; the Bush administration decided to give a farewell present to the oil industry by selling off drilling rights on parcels of public land in Utah's pristine redrock area. A 27-year-old environmental activist and University of Utah student named Tim DeChristopher showed up at the auction, was asked if he had come to bid, said that he was, and was given a bidding paddle with the number 70. </p><p>... more ...</p> http://www.charlespetzold.com/blog/2013/05/Two-Outstanding-Documentaries.html Charles Petzold 4276 2013-05-17T21:00:00 XAudio2 Performance and Battery Considerations for Windows Phone 8 <p><em>This blog post was authored by Joao Lucas Guberman Raza, a program manager on the Windows Phone team.</em> <p><em>- Adam</em> <hr> <p>In this post we cover important information for Windows Phone 8 developers who use the XAudio2 APIs, including best practices for battery performance. XAudio2 is a high-performance audio API available in Windows 8, Xbox 360, and Windows Phone 8. An app developer can use XAudio2 to create audio graphs in which they can treat each audio source in the graph as a distinct “voice.” The developer can apply different effects to each of the “voices.” <p>In Windows Phone 8, the XAudio2 engine must be aligned with the life cycle of the app. This means that if an app is suspended, the app that’s using XAudio2 must force the XAudio2 engine to stop. When the app resumes/rehydrates, if it is designed to resume sounds using XAudio2, it must restart the XAudio2 engine. <b>Significant battery drain can occur if an app doesn’t stop the XAudio2 engine when the app is suspended, and the engine continues to run.</b> <p>To avoid this scenario, an app must call <a href="http://msdn.microsoft.com/en-us/library/windows/desktop/microsoft.directx_sdk.ixaudio2.ixaudio2.stopengine%28v=vs.85%29.aspx" target="_blank">IXAudio2::StopEngine</a> when the app is suspended as described in the <a href="http://msdn.microsoft.com/en-us/library/windowsphone/develop/jj206944%28v=vs.105%29.aspx" target="_blank">Native audio APIs for Windows Phone 8</a>. When the app resumes, it should call <a href="http://msdn.microsoft.com/en-us/library/windows/desktop/microsoft.directx_sdk.ixaudio2.ixaudio2.startengine%28v=vs.85%29.aspx" target="_blank">IXAudio2::StartEngine</a>. For Silverlight and Direct3D with XAML apps, the suspend/resume APIs are the <a href="http://msdn.microsoft.com/en-us/library/windowsphone/develop/microsoft.phone.shell.phoneapplicationservice.deactivated(v=vs.105).aspx" target="_blank">Suspended</a> and <a href="http://msdn.microsoft.com/en-us/library/windowsphone/develop/microsoft.phone.shell.phoneapplicationservice.activated(v=vs.105).aspx" target="_blank">Activated</a> events. For Direct3D native-only apps, the suspend/resume APIs are the <a href="http://msdn.microsoft.com/en-us/library/windows/apps/windows.applicationmodel.core.coreapplication.suspending.aspx" target="_blank">Suspending</a> and <a href="http://msdn.microsoft.com/library/windows/apps/windows.applicationmodel.core.coreapplication.resuming.aspx" target="_blank">CoreView Resuming</a> events. <p>The following code examples show you how you can do this in a pure native Direct3D app. <ol> <li>First create the XAudio2 object, which handles the XAudio2 sound APIs.<br> <div id="scid:9ce6104f-a9aa-4a17-a79f-3a39532ebf7c:06515ff5-5e87-43fa-8f95-c86d2c82e8f1" class="wlWriterEditableSmartContent" style="float: none; padding-bottom: 0px; padding-top: 0px; padding-left: 0px; margin: 0px; display: inline; padding-right: 0px"> <div style="border: #000080 1px solid; color: #000; font-family: 'Courier New', Courier, Monospace; font-size: 10pt"> <div style="background: #000080; color: #fff; font-family: Verdana, Tahoma, Arial, sans-serif; font-weight: bold; padding: 2px 5px">C++</div> <div style="background: #fff; max-height: 300px; overflow: auto"> <ol style="background: #ffffff; margin: 0; padding: 0 0 0 5px; white-space: nowrap"> <li><span style="background:#ffffff;color:#000000">IXAudio2* pXAudio = NULL ;</span></li> <li style="background: #f3f3f3">&nbsp;</li> <li><span style="background:#ffffff;color:#0000ff">if</span><span style="background:#ffffff;color:#000000">( FAILED(XAudio2Create(&amp;pXAudio, 0, XAUDIO2_DEFAULT_PROCESSOR) ) )</span></li> <li style="background: #f3f3f3">        <span style="background:#ffffff;color:#000000"></span><span style="background:#ffffff;color:#0000ff">return</span><span style="background:#ffffff;color:#000000"> </span><span style="background:#ffffff;color:#0000ff">false</span><span style="background:#ffffff;color:#000000"> ;</span></li> <li>&nbsp;</li> <li style="background: #f3f3f3"><span style="background:#ffffff;color:#0000ff">if</span><span style="background:#ffffff;color:#000000"> ( FAILED(pXAudio-&gt;CreateMasteringVoice( &amp;pMasterVoice ) ) )</span></li> <li>        <span style="background:#ffffff;color:#000000"></span><span style="background:#ffffff;color:#0000ff">return</span><span style="background:#ffffff;color:#000000"> </span><span style="background:#ffffff;color:#0000ff">false</span><span style="background:#ffffff;color:#000000">;</span></li> </ol> </div> </div> </div></li> <li>Then, on the suspending/resume events, set up the XAudio2 object to call <b>StopEngine</b> and then <b>StartEngine</b>. In the following example, we use the default events in the Windows Phone 8 SDK template for Direct3D native-only apps.<br> <div id="scid:9ce6104f-a9aa-4a17-a79f-3a39532ebf7c:6872c5b6-ba6c-4433-81a5-3653266ceea5" class="wlWriterEditableSmartContent" style="float: none; padding-bottom: 0px; padding-top: 0px; padding-left: 0px; margin: 0px; display: inline; padding-right: 0px"> <div style="border: #000080 1px solid; color: #000; font-family: 'Courier New', Courier, Monospace; font-size: 10pt"> <div style="background: #000080; color: #fff; font-family: Verdana, Tahoma, Arial, sans-serif; font-weight: bold; padding: 2px 5px">C++</div> <div style="background: #fff; max-height: 300px; overflow: auto"> <ol style="background: #ffffff; margin: 0; padding: 0 0 0 5px; white-space: nowrap"> <li><span style="background:#ffffff;color:#0000ff">void</span><span style="background:#ffffff;color:#000000"> WindowsApp::Initialize(CoreApplicationView^ applicationView)</span></li> <li style="background: #f3f3f3">    <span style="background:#ffffff;color:#000000">{</span></li> <li>    <span style="background:#ffffff;color:#000000">applicationView-&gt;Activated +=</span></li> <li style="background: #f3f3f3">        <span style="background:#ffffff;color:#000000"></span><span style="background:#ffffff;color:#0000ff">ref</span><span style="background:#ffffff;color:#000000"> </span><span style="background:#ffffff;color:#0000ff">new</span><span style="background:#ffffff;color:#000000"> TypedEventHandler&lt;CoreApplicationView^, IActivatedEventArgs^&gt;(</span><span style="background:#ffffff;color:#0000ff">this</span><span style="background:#ffffff;color:#000000">, &amp;WindowsApp::OnActivated);</span></li> <li>&nbsp;</li> <li style="background: #f3f3f3">    <span style="background:#ffffff;color:#000000">CoreApplication::Suspending +=</span></li> <li>        <span style="background:#ffffff;color:#000000"></span><span style="background:#ffffff;color:#0000ff">ref</span><span style="background:#ffffff;color:#000000"> </span><span style="background:#ffffff;color:#0000ff">new</span><span style="background:#ffffff;color:#000000"> EventHandler&lt;SuspendingEventArgs^&gt;(</span><span style="background:#ffffff;color:#0000ff">this</span><span style="background:#ffffff;color:#000000">, &amp;WindowsApp::OnSuspending);</span></li> <li style="background: #f3f3f3">&nbsp;</li> <li>    <span style="background:#ffffff;color:#000000">CoreApplication::Resuming +=</span></li> <li style="background: #f3f3f3">        <span style="background:#ffffff;color:#000000"></span><span style="background:#ffffff;color:#0000ff">ref</span><span style="background:#ffffff;color:#000000"> </span><span style="background:#ffffff;color:#0000ff">new</span><span style="background:#ffffff;color:#000000"> EventHandler&lt;Platform::Object^&gt;(</span><span style="background:#ffffff;color:#0000ff">this</span><span style="background:#ffffff;color:#000000">, &amp;WindowsApp::OnResuming);    </span></li> <li><span style="background:#ffffff;color:#000000">}</span></li> <li style="background: #f3f3f3">&nbsp;</li> <li><span style="background:#ffffff;color:#0000ff">void</span><span style="background:#ffffff;color:#000000"> WindowsApp::OnSuspending(Platform::Object^ sender, SuspendingEventArgs^ args)</span></li> <li style="background: #f3f3f3"><span style="background:#ffffff;color:#000000">{</span></li> <li>    <span style="background:#ffffff;color:#000000">pXAudio-&gt;StopEngine() ;</span></li> <li style="background: #f3f3f3"><span style="background:#ffffff;color:#000000">}</span></li> <li>&nbsp;</li> <li style="background: #f3f3f3">   <span style="background:#ffffff;color:#000000"></span><span style="background:#ffffff;color:#0000ff">void</span><span style="background:#ffffff;color:#000000"> WindowsApp::OnResuming(Platform::Object^ sender, Platform::Object^ args)</span></li> <li>   <span style="background:#ffffff;color:#000000">{</span></li> <li style="background: #f3f3f3">    <span style="background:#ffffff;color:#000000">pXAudio-&gt;StartEngine() ;</span></li> <li><span style="background:#ffffff;color:#000000">}</span></li> </ol> </div> </div> </div></li></ol> <p>With these steps, you can design your app to follow best practices for battery consumption when you use the XAudio2 APIs. It’s important to note that this is one of many best practices you can use in your app. To learn more, see also <a href="http://msdn.microsoft.com/en-us/library/windowsphone/develop/ff769544%28v=vs.105%29.aspx" target="_blank">local folder best practices for Windows Phone</a>, <a href="http://msdn.microsoft.com/en-us/library/windowsphone/develop/ff967552%28v=vs.105%29.aspx" target="_blank">localization best practices for Windows Phone</a>, and <a href="http://msdn.microsoft.com/en-us/library/windowsphone/develop/hh202944%28v=vs.105%29.aspx" target="_blank">background agent best practices for Windows Phone</a>. <div style="clear:both;"></div><img src="http://blogs.windows.com/aggbug.aspx?PostID=588450&AppID=5384&AppType=Weblog&ContentType=0" width="1" height="1"> http://blogs.windows.com/windows_phone/b/wpdev/archive/2013/05/17/xaudio2-performance-and-battery-considerations-for-windows-phone-8.aspx Windows Phone Dev Blog 4275 2013-05-17T20:50:31 Tips to grow your app revenue through in-app purchase <p>Your Windows Phone 8 app presents three potential sources of revenue: app sales, in-app advertisement, and <b>in-app purchases</b>. <p>In a <a href="http://blogs.windows.com/windows_phone/b/wpdev/archive/2012/11/09/increase-monetization-by-adding-in-app-purchase-to-your-apps.aspx" target="_blank">previous blog post</a> I wrote about what you can sell in your Windows Phone 8 app by adding <b>in-app purchase</b>. You can: <ul> <li>Sell digital items. <li>Offer consumables (items that are used a set number of times per purchase) and durables (items purchased and then owned by the buyer). <li>Extend app features: add game levels, app features, and game currency, for example.</li></ul> <p>Today, I want to share recommendations and guidance to optimize the experience and effectiveness of <b>in-app purchase</b> in your Windows Phone app. <h3>In-app purchase trends in the Windows Phone store</h3> <p>In-app purchase was added with the launch of Windows Phone 8 as a way to expand the value of apps and offer the possibility of additional revenue. It represents a growing revenue source in the Windows Phone Store: already 40% of the top 15 highest-grossing developers have apps that use in-app purchase. <p>Consumer adoption of in-app purchase varies by market, depending on regional trends, consumer preferences, and other regional differences. Central Europe, China, France, Middle East and United States are the markets where consumers purchased most in-app items, as a percentage of app downloads, compared to other markets. <p><b></b> <table cellspacing="1" cellpadding="2" width="600" border="0"> <tbody> <tr> <td valign="top" width="193"> <p>In-app items are used in all categories of Windows Phone 8 apps in the Store. The categories with highest use of in-app purchase are Games, Tools and Productivity and Books &amp; Reference. So in-app purchase can be used in all types of apps.</p></td> <td valign="top" width="402"> <p align="center"><b>Use of in-app purchase by app category</b><b></b> <p><a href="http://blogs.windows.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-53-84-metablogapi/clip_5F00_image002_5F00_10FD1F0F.png"><img title="clip_image002" style="border-left-width: 0px; border-right-width: 0px; background-image: none; border-bottom-width: 0px; padding-top: 0px; padding-left: 0px; display: inline; padding-right: 0px; border-top-width: 0px" border="0" alt="clip_image002" src="http://blogs.windows.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-53-84-metablogapi/clip_5F00_image002_5F00_thumb_5F00_7075DF5C.png" width="370" height="209"></a></p></td></tr></tbody></table> <h3></h3> <h3>Insight from the apps with highest in-app revenue</h3> <p>We analyzed the <b>30 apps and games with the highest in-app purchase revenue</b> in the Windows Phone Store, and found some interesting trends, common characteristics, and best practices. Here’s what we discovered. <p>In-app purchase can add value to both games and non-game apps: the top grossing list includes 20 games (shooters, puzzles, racing, family, and other types of games) as well as 10 non-game apps (audio book, health/fitness, tools/productivity, navigation, and sports). <p><u>Start with a great app</u>: All these top 30 apps are high quality, engaging apps with beautiful graphics and compelling sounds and music. All apps have 4-star ratings or higher, and user comments posted in the Store show that users love these apps, and therefore are willing to purchase the in-app items to enhance their experience. All these apps are easy to use and intuitive. <p><u>Use the ‘freemium’ business model</u>: Most of these apps are free and offer in-app purchase extends the value of the app (90% of the apps are free and 10% are available in a paid version only). There are a few apps that are not free, and these apps are from developers with a brand name strong enough that users will know the quality or utility of the app. Very few of the apps, less than 5, use advertisement in the apps: most of these top developers focus only on in-app purchase to generate revenue. <p><u>Offer value even without purchase, and extend the app through in-app purchase</u>: 28 of the 30 apps are useful even without in-app purchase. The apps provide great value even if no in-app purchase is used. In-app purchase is used to improve the app experience: <ul> <li>The <b>games</b> use in-app <i>consumables</i> to offer game currency, which in turn is used to purchase items in the game. Users can earn this currency through gameplay, or accelerate gameplay through purchase. <li><b>Non-games</b> offer content through <i>consumables</i> and <i>durables</i> (audio books, book chapters, navigation maps, more sounds) or offer additional features through <i>durable</i> in-app purchase (for example additional features like online backup). <li>Three of the five apps that have ads use in-app purchase as an option for the user to remove the ads. <li>Two apps use in-app purchase to unlock the full version or new levels. These apps require in-app purchase to provide value beyond the introductory level or content.</li></ul> <p> <table cellspacing="1" cellpadding="2" width="689" border="0"> <tbody> <tr> <td valign="top" width="517"> <p><u>Integrate in-app purchase seamlessly</u>: The app developers use in-app purchase as a natural extension of the app, not as an afterthought. When using these apps, users feel that they are getting a significant additional value of value through the in-app purchase, and don’t feel forced to buy the app items to be able to use the app. In-app purchase is shown on simple, clear screens that show the value of what is being purchased, and frequently offer many options so the user can choose the best one for their budget and needs.</p></td> <td valign="top" width="167"> <p><a href="http://blogs.windows.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-53-84-metablogapi/clip_5F00_image004_5F00_09057CAD.png"><img title="clip_image004" style="border-left-width: 0px; border-right-width: 0px; background-image: none; border-bottom-width: 0px; padding-top: 0px; padding-left: 0px; display: inline; padding-right: 0px; border-top-width: 0px" border="0" alt="clip_image004" src="http://blogs.windows.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-53-84-metablogapi/clip_5F00_image004_5F00_thumb_5F00_1A75DD85.png" width="135" height="136"></a></p></td></tr></tbody></table></p> <p><u>Make the app available also on Windows Phone 7</u>: In-app purchase is only available on Windows Phone 8, so many of these top apps have created a XAP for Windows Phone 7 and a XAP for Windows Phone 8, to offer the app on Windows Phone 7: <ul> <li>10 of these apps are available for <b>free</b> on Windows Phone 7, providing the same functionality as the Windows Phone 8 versions, without in-app purchase. A few of these apps added mobile ads to provide ad revenue in place of the in-app revenue. <li>5 of these apps have a <b>paid</b> Windows Phone 7 version that offers the capabilities of the Windows Phone 8 version with all the in-app purchases.</li></ul> <h3>Rebellion: Dredd vs Zombies and Guns 4 Hire</h3> <p>I interviewed Chris Kingsley, CTO of Rebellion, to understand more about their Windows Phone games and how they use in-app purchase. Rebellion has two shooter games on Windows Phone: <b><a href="http://www.windowsphone.com/s?appid=730bcecb-7e82-4ea7-8280-7315fbdb5a8e" target="_blank">Dredd vs Zombies</a></b> and <b><a href="http://www.windowsphone.com/s?appid=9f98321d-4ff3-4a48-84ad-f92e97c12e5e" target="_blank">Guns 4 Hire</a></b>. Both games use in-app purchase, and are among the highest grossing free Windows Phone games. <p>Rebellion makes games for many platforms, including PC games and Windows Store games. Chris shared with me the principles that he thinks have made in-app purchase successful in their Windows Phone games: <ul> <li>The game has to be great. <li>The game has to be designed with in-app purchase from the ground up. <li>The game has to balance free versus paid content. <li>Test, test, test, with as many people as possible.</li></ul> <table cellspacing="1" cellpadding="2" width="683" border="0"> <tbody> <tr> <td valign="top" width="300"> <p><b>Dredd vs Zombies</b> was designed for in-app purchase from the ground up: the game is playable from beginning to end without in-app purchase. In-app purchase is used to sell credits that are used to purchase items that make the game more fun and which accelerate leveling up. <p>The items are designed so they genuinely feel like they are part of the game, and they provide a better play experience.</p></td> <td valign="top" width="378"><a href="http://blogs.windows.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-53-84-metablogapi/image_5F00_40D7C0D0.png"><img title="image" style="border-left-width: 0px; border-right-width: 0px; background-image: none; border-bottom-width: 0px; padding-top: 0px; padding-left: 0px; display: inline; padding-right: 0px; border-top-width: 0px" border="0" alt="image" src="http://blogs.windows.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-53-84-metablogapi/image_5F00_thumb_5F00_5FAE34AE.png" width="380" height="214"></a></td></tr></tbody></table> <p>Dredd also offers items to try out, so players can get a feel for the game items that can be purchased. This also helps increase player engagement.</p> <table cellspacing="1" cellpadding="2" width="683" border="0"> <tbody> <tr> <td valign="top" width="300"><a href="http://blogs.windows.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-53-84-metablogapi/image_5F00_77656C14.png"><img title="image" style="border-left-width: 0px; border-right-width: 0px; background-image: none; border-bottom-width: 0px; padding-top: 0px; padding-left: 0px; display: inline; padding-right: 0px; border-top-width: 0px" border="0" alt="image" src="http://blogs.windows.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-53-84-metablogapi/image_5F00_thumb_5F00_03F31931.png" width="366" height="206"></a></td> <td valign="top" width="378"> <p><b>Guns 4 Hire</b> offers a variety of in-app purchase items. The player has different options to choose from, and isn’t required to purchase to play the game. <p>The game shows the items for purchase in a very effective way: a large display for each item, a price, and a short and clear description of what you get with the purchase. </p></td></tr></tbody></table> <p>Chris from Rebellion mentioned they have another game coming up this month for Windows Phone – Zombie HQ – which builds on the shooter template by allowing players to customize their own HQ between missions. <h3>Adding in-app purchase to your app</h3> <p><a href="http://msdn.microsoft.com/library/windowsphone/develop/jj206949(v=vs.105).aspx" target="_blank">In-app purchase</a> can enhance the app experience and increase your revenue, so if you think that you have a great app or game that is a good candidate for in-app purchase, add it today! Here’s how to get started: <ul> <li>Understand <a href="http://blogs.windows.com/windows_phone/b/wpdev/archive/2012/11/09/increase-monetization-by-adding-in-app-purchase-to-your-apps.aspx" target="_blank">what can be sold through in-app purchase and how to add it</a>. <li>Define how you would add in-app purchase to your Visual Studio project: <ul> <li>Add it to an existing Windows Phone 7 project (<a href="http://channel9.msdn.com/Shows/Inside+Windows+Phone/Inside-Windows-Phone-45--Adding-In-App-Purchase-as-a-light-up-feature-to-your-Windows-Phone-7-Games" target="_blank">through reflection</a>) or create a new Windows Phone 8 project that uses in-app purchase natively. <li>Offer a trial/paid version for Windows Phone 7 users.</li></ul> <li>Add the in-app purchase to your code. <li>Add the in-app purchase items through Dev Center. <li>Test using the <a href="http://msdn.microsoft.com/en-us/library/windowsphone/develop/jj681689(v=vs.105).aspx" target="_blank">different available testing techniques</a>, and share the game with as many users as possible to polish the in-app purchase experience. <li>Publish your app in the Store!</li></ul> <p>Please post your feedback or questions about in-app purchase. <div style="clear:both;"></div><img src="http://blogs.windows.com/aggbug.aspx?PostID=588447&AppID=5384&AppType=Weblog&ContentType=0" width="1" height="1"> http://blogs.windows.com/windows_phone/b/wpdev/archive/2013/05/16/tips-to-grow-your-app-revenue-through-in-app-purchase.aspx Windows Phone Dev Blog 4274 2013-05-16T19:28:18 [Evento CartujaDotNet] Wave Engine Imagina que quieres hacer un juego, pero sólo quieres programarlo una vez y desplegarlo en la mayoría de plataformas posibles. Deja de soñar y aprende a usar Wave Engine y podrás desplegar tus juegos en iOS, Android, Windows 8 y Windows Phone. Los grandes Marcos Ligthyear y David Woody nos enseñarán todo lo necesario (y quizás [...] http://speakingin.net/2013/05/15/evento-cartujadotnet-wave-engin/?utm_source=rss&utm_medium=rss&utm_campaign=evento-cartujadotnet-wave-engin Juan María Laó Ramos 4273 2013-05-15T12:12:16 Yet Another Podcast #98–Jeff Fritz and ASP.NET, HTML5, more… http://feedproxy.google.com/~r/JesseLiberty-SilverlightGeek/~3/G0sQocUH_YU/ Jesse Liberty [MS] 4272 2013-05-14T21:29:12 Don’t Just Read “The Great Gatsby” <p> Something like the fifth movie version of <i>The Great Gatsby</i> is opening today, but it's silly to actually go see such a thing. The novel itself is quite short. You can probably read it in less time than it would take to go and see the movie, and you'll emerge from the experience much more fulfilled and satisfied because you'll have read F. Scott Fitzgerald's original novel rather what appears to be &#x2014; at least judging from the trailers &#x2014; a crazed 3D monstrosity by Baz Luhrmann. </p><p>... more ...</p> http://www.charlespetzold.com/blog/2013/05/Dont-Just-Read-The-Great-Gatsby.html Charles Petzold 4271 2013-05-10T14:00:00 Latest Windows Phone app submission improvements <p>As Todd mentioned in his <a href="http://blogs.windows.com/windows_phone/b/wpdev/archive/2013/05/03/expanded-developer-opportunity-new-payout-markets-and-billing-connections.aspx" target="_blank">post last week</a>, I’d like to share some details about the latest improvements we’ve made to <a href="http://dev.windowsphone.com/" target="_blank">Dev Center</a> to address your feedback. <p><b>Multiple XAP management during app submission</b> <p>As more developers update their apps to take advantage of new Windows Phone 8 functionality, managing multiple XAP files for a single app becomes an increasingly common scenario. Many apps have different XAPs for Windows Phone 7.x and Windows Phone 8.0. Dev Center allows each to be serviced independently. Many of you asked for a simplified way to manage XAPs, so we set out to streamline the experience, make it easier to keep track of which XAPs exist for your app, and to clearly identify which XAP you’re acting on when you make a change. Here’s the new UI for managing XAPs in an app submission: <p><a href="http://blogs.windows.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-53-84-metablogapi/clip_5F00_image002_5F00_3FC7C8EB.png"><img title="clip_image002" style="border-top: 0px; border-right: 0px; background-image: none; border-bottom: 0px; padding-top: 0px; padding-left: 0px; border-left: 0px; display: inline; padding-right: 0px" border="0" alt="clip_image002" src="http://blogs.windows.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-53-84-metablogapi/clip_5F00_image002_5F00_thumb_5F00_460E9F79.png" width="482" height="161"></a> <p>When you update an existing app, you’ll see that all of the XAPs for your app are already present in the submission. You can replace or delete one or more of the existing XAPs, add new ones, or leave them unchanged. Typically you’ll only want to add a new XAP when you’re either submitting a new app or adding support for a new platform version to an existing app. (For more details, see <a href="http://msdn.microsoft.com/library/windowsphone/help/jj631569(v=vs.105).aspx" target="_blank">Guidance for app management for Windows Phone</a>). Be careful when you delete a XAP in a submission because it will be removed from your app and no longer available in Store after the submission is published. You can think of this table as showing all XAPs that will be available for your app when the submission is published. <p>After you’ve established the XAPs that you want for your app, you can select each XAP individually by clicking the button beside its name, and then add/edit the Store listing info for each language that the XAP supports. <p><b>MPNS certificate management</b> <p>To use <a href="http://msdn.microsoft.com/library/windowsphone/develop/hh202945(v=vs.105).aspx" target="_blank">authenticated push notifications</a> from the Microsoft Push Notification Service (MPNS), your app needs to be associated with the authentication certificate that’s used by your service. You can manage certificates at an account level in Dev Center and then choose from those certificates when you submit a new app or update an existing app. <p>We’ve refreshed the certificate management UI to make it easier to see all of the certificates that you’ve uploaded, and to differentiate between them: <p><a href="http://blogs.windows.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-53-84-metablogapi/clip_5F00_image004_5F00_577F0051.png"><img title="clip_image004" style="border-top: 0px; border-right: 0px; background-image: none; border-bottom: 0px; padding-top: 0px; padding-left: 0px; border-left: 0px; display: inline; padding-right: 0px" border="0" alt="clip_image004" src="http://blogs.windows.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-53-84-metablogapi/clip_5F00_image004_5F00_thumb_5F00_16DCB3E2.png" width="482" height="290"></a> <p>We’ve also updated the certificate selection UI on the <b>App info</b> submission page to help you select the correct certificate. Remember that if you’re updating an app to associate it with an updated certificate, MPNS requires that the <b>Subject Name CN</b> value remains the same. Dev Center will enforce this restriction to ensure that push notifications continue to work after your update is published. <p><b>Review submission</b> <p>When you create a submission for a new or existing app in Dev Center, that submission will remain until you submit or delete it. This means that you can make changes to a submission on different days and from different browser windows and we’ll keep track of them. This can be a powerful feature as you don’t have to worry about losing changes by closing your browser or switching computers. However, this also makes it important to check your work before final submission to make sure you’re aware of all of the changes. We’ve created a new review page to help you do just that. Now you’ll have the opportunity to check the review page for a submission to be sure you are satisfied with the changes that you’ve made before you submit your app. Here’s an example: <p><a href="http://blogs.windows.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-53-84-metablogapi/clip_5F00_image006_5F00_0427BA2B.png"><img title="clip_image006" style="border-top: 0px; border-right: 0px; background-image: none; border-bottom: 0px; padding-top: 0px; padding-left: 0px; border-left: 0px; display: inline; padding-right: 0px" border="0" alt="clip_image006" src="http://blogs.windows.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-53-84-metablogapi/clip_5F00_image006_5F00_thumb_5F00_43856DBB.png" width="482" height="432"></a> <p>The review page is organized into three sections: <ol> <li><b>Submission</b>: Displays the publish option chosen, along with errors and warnings if applicable.</li> <li><b>App</b>: Displays the changes made at the app level. By default, this section shows only the changes you made, but you can clear the <b>Only show changes I made</b> box to see the full summary.</li> <li><b>XAPs</b>: Displays a list of XAPs that will be published for your app.</li></ol> <p>Here’s how the page looks if you choose to see the full summary of app-level information: <p><a href="http://blogs.windows.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-53-84-metablogapi/clip_5F00_image008_5F00_30D07404.png"><img title="clip_image008" style="border-top: 0px; border-right: 0px; background-image: none; border-bottom: 0px; padding-top: 0px; padding-left: 0px; border-left: 0px; display: inline; padding-right: 0px" border="0" alt="clip_image008" src="http://blogs.windows.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-53-84-metablogapi/clip_5F00_image008_5F00_thumb_5F00_702E2794.png" width="482" height="544"></a> <p>We made these changes to enhance your experience with Dev Center. As always, please keep adding your feedback to the <a href="http://wpdev.uservoice.com/forums/110711-dev-center-store" target="_blank">Windows Phone Dev Center UserVoice forum</a>. We appreciate hearing from you and your feedback helps us shape future development priorities. <div style="clear:both;"></div><img src="http://blogs.windows.com/aggbug.aspx?PostID=588415&AppID=5384&AppType=Weblog&ContentType=0" width="1" height="1"> http://blogs.windows.com/windows_phone/b/wpdev/archive/2013/05/10/latest-windows-phone-app-submission-improvements.aspx Windows Phone Dev Blog 4270 2013-05-10T20:12:43 Inside Windows Phone – Windows Phone and HTML5 <p><i>This blog post was authored by Matthias Shapiro</i><i>, a technical evangelist at Microsoft.</i> <p><i></i> <p><i>- Larry</i> <hr> <p>One of the exciting things and lesser known features in Windows Phone development is how it’s the perfect place to develop apps using HTML5. Jeff Burtoft, an HTML5 technical evangelist with Microsoft, joins us this week to talk about the flexibility and cross-platform power of HTML5 in Windows Phone. The in-depth example that we cover in the video is a project called YetiBowl, a standards-compliant HTML5 game that runs flawlessly on the web, as a Windows 8 app, and as a Windows Phone 8 app. For more information, see <a href="http://channel9.msdn.com/Shows/Inside+Windows+Phone/Developing-in-HTML5-and-Javascript-for-Windows-Phone" target="_blank">Developing in HTML5 and Javascript for Windows Phone</a>. <p><iframe style="height: 340px; width: 660px" src="http://channel9.msdn.com/Shows/Inside+Windows+Phone/Developing-in-HTML5-and-Javascript-for-Windows-Phone/player?w=660&amp;h=340" frameborder="0" scrolling="no"></iframe><div style="clear:both;"></div><img src="http://blogs.windows.com/aggbug.aspx?PostID=588409&AppID=5384&AppType=Weblog&ContentType=0" width="1" height="1"> http://blogs.windows.com/windows_phone/b/wpdev/archive/2013/05/09/inside-windows-phone-windows-phone-and-html5.aspx Windows Phone Dev Blog 4269 2013-05-09T20:41:20 Back in Israel after 40 years http://feedproxy.google.com/~r/JesseLiberty-SilverlightGeek/~3/9ouDN6bvUfI/ Jesse Liberty [MS] 4268 2013-05-05T15:20:39 Testing your Windows Phone app – Part 1 <p><i>This blog post was authored by Craig Horsfield, a Senior SDET on the Windows Phone Test and Operations team.</i> <p><i></i> <p><i>- Adam</i> <p> <hr> <p> <p>Testing your app throughout the development process helps to ensure that your app has a high level of performance and quality. Testing also helps to make sure your app is effectively represented in the Windows Phone Store. A small investment in the key areas described in this post can give your app positive results in your market, and help bypass common errors early in the development process. This document will outline testing approaches for key test areas that you should consider. <h4>Beta testing</h4> <p>After you have thoroughly tested your app using the emulator and on a Windows Phone device, it’s important to also test your app as a beta app. Submit your beta app for beta distribution, where you can continue to test your app based on the beta and code flow experience. Additionally, you can include beta tester to help review your app. For more info, see <a href="http://msdn.microsoft.com/library/windowsphone/help/jj215598(v=vs.105).aspx" target="_blank">Beta testing your app and in-app products</a>. <h4>Installation and launch </h4> <p>Testing your app’s install and launch process is a vital area that can often be overlooked. By following these steps, you can minimize installation and launch issues that are not handled by your app. There are a few scenarios to consider when testing the initial launch experience and resume paths scenarios. One of these is the new Windows Phone 8 <a href="http://msdn.microsoft.com/library/windowsphone/develop/jj735579(v=vs.105).aspx" target="_blank">fast app resume</a><b></b> scenario that a Windows Phone 8 app can opt into. <p>The following tests can help verify your app’s install, launch, and resume functions. <table cellspacing="0" cellpadding="4" width="600" border="1"> <tbody> <tr> <td valign="top" width="239"> <p><b>Test scenario</b></p></td> <td valign="top" width="359"> <p><b>Details</b></p></td></tr> <tr> <td valign="top" width="239"> <p>1. Verify the app on the first launch.</p></td> <td valign="top" width="359"> <p>Note any End User License Agreement (EULA) and any other one-time notifications that appear in the launch UI.</p></td></tr> <tr> <td valign="top" width="239"> <p>2. Reinstall the app.</p></td> <td valign="top" width="359"> <p>Verify that all one-time notifications appear again on a subsequent install and launch.</p></td></tr> <tr> <td valign="top" width="239"> <p>3. Start the app, and then return to the Windows Phone Start screen.</p></td> <td valign="top" width="359"> <p>Launch the app again from a Live Tile, or from the phone’s App list.<b></b> <p>· Verify the default scenario, in which the old app is terminated, and a new instance of the app starts.<b></b> <p>· For Windows Phone 8 apps, if the app uses <a href="http://msdn.microsoft.com/library/windowsphone/develop/jj735579(v=vs.105).aspx" target="_blank">fast app resume for Windows Phone 8</a>, in which ActivationPolicy="Resume", then the app resumes instead of starting a new instance. Verify that the app returns to the correct page in the app.</p></td></tr></tbody></table> <h4>Fast Application Switching (FAS) and tombstoning</h4> <p>When a Windows Phone app is moved to the back stack based on the app’s navigation history, the app is suspended. When the app resumes, it returns to the foreground. Apps on the back stack are tombstoned when there is resource pressure on the device. The exception occurs when <a href="http://msdn.microsoft.com/en-us/library/windowsphone/develop/jj681691(v=vs.105).aspx" target="_blank">running location-tracking apps in the background for Windows Phone 8</a>. Windows Phone 8 location-tracking apps continue to run in this scenario. Your app needs to handle both of these cases, and you should test this function in your app. FAS occurs when the user leaves the app to go to <b>Start</b>, <b>Search</b>, or some other path based on the launchers and choosers you’ve used in your app to support navigation. For more info, see <a href="http://msdn.microsoft.com/en-us/library/windowsphone/develop/hh202866(v=vs.105).aspx#BKMK_FastApplicationSwitching" target="_blank">Multitasking for Windows Phone</a> and <a href="http://msdn.microsoft.com/en-us/library/windowsphone/develop/ff817008(v=vs.105).aspx" target="_blank">App activation and deactivation for Windows Phone</a>. <p>The following tests can help verify your app’s FAS and tombstoning functions. <table cellspacing="0" cellpadding="4" width="600" border="1"> <tbody> <tr> <td valign="top" width="249"> <p><b>Test scenario</b></p></td> <td valign="top" width="349"> <p><b>Details</b></p></td></tr> <tr> <td valign="top" width="249"> <p>1. Test the phone’s <b>Start</b> button and <b>Back</b> button. </p></td> <td valign="top" width="349"> <p>Launch the app, and then press the <b>Start</b> button to verify that the Windows Phone start page appears. Press the <b>Back</b> button to resume the app. Verify that the app resumes in the required time, and in the state it was in before you navigated away from the app.</p></td></tr> <tr> <td valign="top" width="249"> <p>2. Test the <b>Camera</b> button.</p></td> <td valign="top" width="349"> <p>Launch the app, and then press the <b>Camera</b> button to verify that the camera starts. Press the <b>Back</b> button to resume the app. Verify that the app resumes in the required time (10 seconds) and that is in the state it was before you navigated away from the app.</p></td></tr> <tr> <td valign="top" width="249"> <p>3. Test locking the phone using the <b>Power</b> button.</p></td> <td valign="top" width="349"> <p>Launch the app, and then press the <b>Power</b> button to lock the phone. Unlock the phone, and then verify that the app resumes in the required time, and that the app is in the state it was in before you locked the phone.</p></td></tr> <tr> <td valign="top" width="249"> <p>4. Perform the same test cases for FAS and tombstone state.</p></td> <td valign="top" width="349"> <p>To force a tombstone path, in Visual Studio, in the project <b>Properties</b> windows, click the <b>Debug</b> tab, and then select <b>Tombstone upon deactivation while debugging</b>.</p></td></tr> <tr> <td valign="top" width="249"> <p>5. Test deactivating and closing your app.</p></td> <td valign="top" width="349"> <p>Make sure the app doesn’t take too long to process the <b>Application_Deactivated<i> </i></b>and <b>Application_Closing</b><b> </b>events, so that the app can save its state correctly. Avoid doing a lot of work in the <b>Application_Closing</b> code path, because processing time and access to the UI thread are limited.</p></td></tr> <tr> <td valign="top" width="249"> <p>6. Test background execution of your app.</p></td> <td valign="top" width="428"> <p>For continued background execution in location tracking apps, you’ll want to test the app’s <a href="http://msdn.microsoft.com/en-us/library/windowsphone/develop/microsoft.phone.shell.phoneapplicationservice.runninginbackground(v=vs.105).aspx" target="_blank">RunningInBackground</a><b></b><b> </b>event handler. In addition to running the preceding tests, check for the following conditions: <p>· Background execution occurs when the app enters the back stack. <p>· Start the app and move it to the back stack and resume the app. Verify that the app was not suspended and that it continued to run.</p></td></tr></tbody></table> <h4>App navigation</h4> <p>You should navigate all paths in the app to test its navigation. You especially want to be sure that your app exits and handles navigation interruptions as intended. <table cellspacing="0" cellpadding="4" width="600" border="1"> <tbody> <tr> <td valign="top" width="277"> <p><b>Test scenario</b></p></td> <td valign="top" width="321"> <p><b>Details</b></p></td></tr> <tr> <td valign="top" width="277"> <p>1. Test the <b>Back</b> button.</p></td> <td valign="top" width="321"> <p>Your app should exit when you press the <b>Back</b> button on the top most page.</p></td></tr> <tr> <td valign="top" width="277"> <p>2. Test navigation interruptions.</p></td> <td valign="top" width="404"> <p>Your app should not try to initiate new navigation while your app is currently navigating. Test rapid navigations in the app, and navigating in the app while pages are loading.</p></td></tr></tbody></table> <p>Don’t throw unhandled exceptions to exit the app at a page that isn’t at the top of the page stack. Instead, navigate over the page by <a href="http://msdn.microsoft.com/en-us/library/windowsphone/develop/system.windows.navigation.navigationservice.removebackentry(v=vs.105).aspx" target="_blank">removing</a> it from the back stack; you don’t want to display the page on the exit path, or call API available in <a href="http://msdn.microsoft.com/en-US/library/windowsphone/develop/system.windows.application.terminate(v=vs.105).aspx" target="_blank">Application.Terminate</a> in Windows Phone 8 apps. This triggers an app crash, and a Watson error report. You might see the crashes indicated in the app reports available in the Store. <h4>Launchers and choosers</h4> <p>Launchers in your Windows Phone app give users the ability to perform common tasks, such as launching the Bing Maps app, launching Media Player, or launching the Store or Marketplace. Launchers do not return data or status to your app. With a chooser, on the other hand, users can return data to your app. For instance, users can choose return info from the Contacts app. For all <a href="http://msdn.microsoft.com/en-us/library/windowsphone/develop/ff769542(v=vs.105).aspx" target="_blank">launchers and choosers</a>, test your app to be sure the launcher or chooser works correctly, and that it doesn’t trigger related errors. <table cellspacing="0" cellpadding="4" width="600" border="1"> <tbody> <tr> <td valign="top" width="270"> <p><b>Test scenario</b></p></td> <td valign="top" width="328"> <p><b>Details</b></p></td></tr> <tr> <td valign="top" width="270"> <p>1. Test navigating to and from the launcher or chooser.</p></td> <td valign="top" width="328"> <p>In the app, navigate to the launcher or chooser. Immediately go back to the previous page or screen. The app should return to the page and state the navigation was initiated from.</p></td></tr> <tr> <td valign="top" width="270"> <p>2. Test the complete scenario when using the launcher or chooser.</p></td> <td valign="top" width="328"> <p>In the app, navigate to the launcher or chooser. Complete the scenario, i.e., select a photo or send mail. When the action is completed, the app should return to the preceding app state.</p></td></tr> <tr> <td valign="top" width="270"> <p>3. Test FAS scenarios when navigating to a launcher or chooser.</p></td> <td valign="top" width="414"> <p>Navigating to a launcher or chooser can triggers an FAS scenario. See the related section earlier in this post for additional test scenarios related to FAS.</p></td></tr></tbody></table> <h4>UI and layout</h4> <p>You need to test to make sure all elements of your UI and their layout work as intended, and meet app submission requirements, such as supporting Light Theme and Dark Theme. Test each control you use in your app, and the overall appearance of your app on the phone. <p>The following tests will help verify your app’s UI and layout. <table cellspacing="0" cellpadding="4" width="600" border="1"> <tbody> <tr> <td valign="top" width="269"> <p><b>Test scenario</b></p></td> <td valign="top" width="329"> <p><b>Details</b></p></td></tr> <tr> <td valign="top" width="269"> <p>1. Test your app in the Light Theme.</p></td> <td valign="top" width="329"> <p>Ensure all text is readable and all UI is visible.</p></td></tr> <tr> <td valign="top" width="269"> <p>2. Test your app in the Dark Theme.</p></td> <td valign="top" width="329"> <p>Ensure all text is readable and all UI is visible.</p></td></tr> <tr> <td valign="top" width="269"> <p>3. Test the UI for text clipping.</p></td> <td valign="top" width="329"> <p>You may need to set the text to wrap or make other layout changes.</p></td></tr> <tr> <td valign="top" width="269"> <p>4. Test your Splash screen display.</p></td> <td valign="top" width="329"> <p>If you use a splash screen in your app, verify that it’s visible when the app starts, and that it displays for the expected time. </p></td></tr> <tr> <td valign="top" width="269"> <p>5. Test each animation.</p></td> <td valign="top" width="329"> <p>Ensure all animations are smooth. If they appear slow or stop unexpectedly, see if the app is doing excessive work on a background task or thread.</p></td></tr> <tr> <td valign="top" width="269"> <p>6. Test each screen orientation.</p></td> <td valign="top" width="413"> <p>Verify that the layout looks as you intended in portrait and landscape orientations, and that each page can display and move between orientations. </p></td></tr></tbody></table> <p>In part 2 of this series, we’ll discuss additional areas and testing approaches to consider related to <i>push notification</i>; <i>Live Tiles</i>; <i>background agents</i>; <i>media, audio, and video</i>; <i>geolocation</i>, and <i>resource usage and performance</i>.</p><div style="clear:both;"></div><img src="http://blogs.windows.com/aggbug.aspx?PostID=588376&AppID=5384&AppType=Weblog&ContentType=0" width="1" height="1"> http://blogs.windows.com/windows_phone/b/wpdev/archive/2013/05/03/testing-your-windows-phone-app-part-1.aspx Windows Phone Dev Blog 4267 2013-05-03T22:44:27 Expanded developer opportunity – new payout markets and billing connections <p>We continue to take steps forward on the path to establish a Windows Phone ecosystem characterized by quality, scale, and developer opportunity. We are seeing strong results for the ecosystem since the launch of Windows Phone 8 with more than a 100% increase in app downloads and nearly 140% increase in paid app revenue. Today I have a few enhancements to announce that can help you expand your app distribution reach and revenue opportunities.</p> <p><b>Diverse phone offering and distribution</b></p> <p>Nokia&rsquo;s Lumia 720 and 520/521 phones have just begun to ship across the globe, giving potential Windows Phone customers additional choices in form factor, phone capabilities, and price points. This review from CNET (<a href="http://reviews.cnet.co.uk/mobile-phones/nokia-lumia-520-review-50010925/" target="_blank">Nokia Lumia 520 review: One of the best budget phones around</a>) pretty much sums up the sentiment on the new device, stating the Lumia 520 packs an &ldquo;impressive punch&rdquo;<i> </i>both in terms of hardware quality and value for the money. <b></b></p> <p>These phones will be available in new markets and distribution channels, given their budget-friendly pricing. In fact, this week the Nokia Lumia 521 paired with an offer from US mobile operator T-Mobile to make its debut on the popular US <a href="http://news.cnet.com/8301-1035_3-57581407-94/nokias-budget-lumia-521-phone-starts-selling-april-27-for-$150/" target="_blank">Home Shopping Network</a>, a first for Windows Phone.</p> <p>The industry continues to recognize Windows Phone steady growth. According to <a href="http://www.kantarworldpanel.com/global/News/news-articles/Windows-sees-steady-growth-in-Q1-2013" target="_blank">Kantar Worldpanel ComTech</a>, Windows Phone has already increased its share of all smartphone sales by nearly 2% compared to last year and is attracting first-time smartphone buyers. With over half of the US market (and much of the world) still owning a feature phone, it&rsquo;s likely many will upgrade over the coming year, which ultimately will contribute to growth for Windows Phone.</p> <p><b>Six new developer payout markets</b></p> <p>This week we will enable developer payout in 6 new markets via <a href="http://dev.windowsphone.com/" target="_blank">Dev Center</a> bringing the total markets supporting developer payout to 122. The new markets include: Afghanistan, Iraq, Montenegro, Serbia, Timor-Leste, and Ukraine. Developers in these 6 markets will now be able to submit both free and paid apps to the Windows Phone Store to reach customers in 191 <a title="markets" href="http://msdn.microsoft.com/library/windowsphone/help/jj215599(v=vs.105).aspx" target="_blank">markets</a>. <em></em></p> <p><b>New Mobile Operator Billing Connections</b></p> <p>We have added 15 new mobile operator billing partners since August 2012, bringing the total number of supported partners to <a title="25 in 19 markets" href="http://msdn.microsoft.com/library/windowsphone/help/jj215902(v=vs.105).aspx" target="_blank">25 in 19 markets</a>, surpassing Google Play.&nbsp; Mobile operator billing gives consumers a payment option with significantly higher conversion rates than credit cards.&nbsp; On average, an app developer earns 3x more per active user on a paid app published in a mobile operator billing-enabled market than a market that only supports credit card. We will continue to expand this footprint and you&rsquo;ll be seeing many more connections in the near future.</p> <p><b>Simplified app submissions</b></p> <p>Finally, I want to point out that we continue to incorporate your feedback and streamline the app submission process. Recently the Dev Center team enabled cancelling submissions, rotating screenshots and automatic screenshot resizing &ndash; all items you indicated needed improvement. You can read more about these enhancements on the <a href="http://blogs.windows.com/windows_phone/b/wpdev/archive/2013/04/05/more-dev-center-features-we-re-listening.aspx" target="_blank">Windows Phone Developer blog</a>. Next, we&rsquo;ll add the ability to review your app submission, giving you a chance to make sure everything looks right, before you actually submit. I encourage you to watch for a post from Rushmi Malaviarachchi in the coming week that will provide details on all the latest improvements.</p> <p>If you haven&rsquo;t yet developed an app for Windows Phone or if you haven&rsquo;t updated your app recently, I&rsquo;d like to encourage you to visit the <a href="https://dev.windowsphone.com/" target="_blank">Dev Center</a> to download the SDK and get started. There&rsquo;s never been a better time to develop for Windows Phone.</p><div style="clear:both;"></div><img src="http://blogs.windows.com/aggbug.aspx?PostID=588374&AppID=5384&AppType=Weblog&ContentType=0" width="1" height="1"> http://blogs.windows.com/windows_phone/b/wpdev/archive/2013/05/03/expanded-developer-opportunity-new-payout-markets-and-billing-connections.aspx Windows Phone Dev Blog 4266 2013-05-03T18:02:00 Inside Windows Phone – Data binding <p>Data binding is one of the fundamental concepts used for good Windows Phone application design, but can be difficult to grasp for newcomers. The core concept is this: No one wants to manually update the user interface elements. It’s best to have the UI automatically reflect the state of the application. Data binding helps us do this. We can work exclusively on our Windows Phone UI, bind the values in the UI and then work on the inner logic of the application knowing that all the updates are being reflected to the user. Because of the power in the model, as you see in this video, there are some really great "fringe" benefits in terms of interaction and design that we get, along with the core benefits. For more information, see <a href="http://msdn.microsoft.com/en-us/library/windowsphone/develop/cc278072(v=vs.105).aspx" target="_blank">Data binding for Windows Phone</a>. <p><iframe style="height: 400px; width: 600px" src="http://channel9.msdn.com/Shows/Inside+Windows+Phone/IWP54--Windows-Phone-Data-Binding-and-the-Magic-of-XAML/player?w=600&amp;h=400" frameborder="0" scrolling="no"></iframe></p><div style="clear:both;"></div><img src="http://blogs.windows.com/aggbug.aspx?PostID=588370&AppID=5384&AppType=Weblog&ContentType=0" width="1" height="1"> http://blogs.windows.com/windows_phone/b/wpdev/archive/2013/05/02/inside-windows-phone-data-binding.aspx Windows Phone Dev Blog 4265 2013-05-02T22:48:33 Getting Twitter Avatar Via C# With 1.1 API <p>If you know someone's Twitter handle and would like to display their twitter avatar on your website, here's some code to get the URL of their avatar.&#160; First, you'll need to register at <a href="http://dev.twitter.com/">http://dev.twitter.com</a> and acquire a ConsumerKey, ConsumerSecret, Token and TokenSecret -- now that Twitter supports application only authentication, there isn't any handshaking involved; you just need to craft up the right OAuthCredentials for a ProtectedResource, which the Hammock library does for you. Love that library: you can get it here: <a href="https://github.com/danielcrenna/hammock">https://github.com/danielcrenna/hammock</a> or grab it as a NuGet package: <a href="http://nuget.org/packages/Hammock">http://nuget.org/packages/Hammock</a></p> <p>Here’s the code; nothing too fancy:</p> <pre class="csharpcode"><span class="kwrd">using</span> System; <span class="kwrd">using</span> Hammock; <span class="kwrd">using</span> Hammock.Authentication.OAuth; <span class="kwrd">using</span> Hammock.Web; <span class="kwrd">using</span> Newtonsoft.Json.Linq; <span class="kwrd">namespace</span> ExternalServices { <span class="kwrd">public</span> <span class="kwrd">class</span> TwitterAvatarLookup : ITwitterAvatarLookup { <span class="kwrd">const</span> <span class="kwrd">string</span> ConsumerKey = <span class="str">&quot;&quot;</span>; <span class="kwrd">const</span> <span class="kwrd">string</span> ConsumerSecret = <span class="str">&quot;&quot;</span>; <span class="kwrd">const</span> <span class="kwrd">string</span> Token = <span class="str">&quot;&quot;</span>; <span class="kwrd">const</span> <span class="kwrd">string</span> TokenSecret = <span class="str">&quot;&quot;</span>; <span class="kwrd">public</span> <span class="kwrd">string</span> GetTwitterAvatarUrl(<span class="kwrd">string</span> twitterHandle) { <span class="kwrd">string</span> avatarUrl = <span class="kwrd">string</span>.Empty; var request = <span class="kwrd">new</span> RestRequest { Credentials = <span class="kwrd">new</span> OAuthCredentials { Type = OAuthType.ProtectedResource, SignatureMethod = OAuthSignatureMethod.HmacSha1, ParameterHandling = OAuthParameterHandling.HttpAuthorizationHeader, ConsumerKey = ConsumerKey, ConsumerSecret = ConsumerSecret, Token = Token, TokenSecret = TokenSecret, } }; request.Path = <span class="kwrd">string</span>.Format( <span class="str">&quot;https://api.twitter.com/1.1/users/lookup.json?screen_name={0}&amp;include_entities=0&amp;include_rts=0&quot;</span>, twitterHandle); request.Method = WebMethod.Get; RestClient client = <span class="kwrd">new</span> RestClient(); <span class="kwrd">try</span> { RestResponse response = client.Request(request); JArray jArray = JArray.Parse(response.Content); avatarUrl = (<span class="kwrd">string</span>)jArray[0][<span class="str">&quot;profile_image_url_https&quot;</span>]; } <span class="kwrd">catch</span> (Exception) { <span class="kwrd">return</span> <span class="str">&quot;default.png&quot;</span>; } <span class="kwrd">return</span> avatarUrl; } } }</pre> <style type="text/css"> .csharpcode, .csharpcode pre { font-size: small; color: black; font-family: consolas, "Courier New", courier, monospace; background-color: #ffffff; /*white-space: pre;*/ } .csharpcode pre { margin: 0em; } .csharpcode .rem { color: #008000; } .csharpcode .kwrd { color: #0000ff; } .csharpcode .str { color: #006080; } .csharpcode .op { color: #0000c0; } .csharpcode .preproc { color: #cc6633; } .csharpcode .asp { background-color: #ffff00; } .csharpcode .html { color: #800000; } .csharpcode .attr { color: #ff0000; } .csharpcode .alt { background-color: #f4f4f4; width: 100%; margin: 0em; } .csharpcode .lnum { color: #606060; }</style> <p>If you know more than one handle whose avatar you need to get, the API supports passing multiple user handles; see <a title="https://dev.twitter.com/docs/api/1.1/get/users/lookup" href="https://dev.twitter.com/docs/api/1.1/get/users/lookup">https://dev.twitter.com/docs/api/1.1/get/users/lookup</a></p> http://rhizohm.net/irhetoric/post/2013/05/01/Getting-Twitter-Avatar-Via-C-With-11-API.aspx Karsten Januszewski [MS] 4264 2013-05-01T20:23:26 Yet Another Podcast #97–Chris Sells and the last 20 years http://feedproxy.google.com/~r/JesseLiberty-SilverlightGeek/~3/MYXsvV2Yz_Y/ Jesse Liberty [MS] 4263 2013-04-29T20:26:44 Published 3rd Pluralsight Course: WPF For the Enterprise From Scratch http://feedproxy.google.com/~r/JesseLiberty-SilverlightGeek/~3/IPFX4LzzTEg/ Jesse Liberty [MS] 4262 2013-04-26T19:35:13 Using the Windows Phone 8.0 SDK to localize Windows Phone OS 7.1 projects <p><i>This blog post was authored by Dan Zucker, a program manager on the Windows Phone team.</i> <p><i></i> <p><i>- Adam</i> <hr> <p>Here are the quick steps you need to take to set up a Windows Phone OS 7.1 Visual Studio project to use the techniques and features described in the blog posts <a href="http://blogs.windows.com/windows_phone/b/wpdev/archive/2013/02/01/tips-for-localizing-windows-phone-8-xaml-apps-part1.aspx" target="_blank">Tips for Localizing Windows Phone 8 XAML Apps - Part1</a> and <a href="http://blogs.windows.com/windows_phone/b/wpdev/archive/2013/03/08/tips-for-localizing-windows-phone-apps-part-2.aspx" target="_blank">Tips for localizing Windows Phone apps – Part 2</a> to localize apps. Note that throughout these steps, you must replace <i>&lt;PROJECT_NAME_SPACE&gt;</i> with your project name. <ol> <li>Follow the steps in the <i>Standard Localizing Steps</i> section described in <a href="http://blogs.windows.com/windows_phone/b/wpdev/archive/2013/02/01/tips-for-localizing-windows-phone-8-xaml-apps-part1.aspx" target="_blank">Tips for Localizing Windows Phone 8 XAML Apps - Part1</a> to make your single-language app ready for localization. <li>Update the <i>&lt;Application.Resources&gt;</i> node in the <b>App.xaml</b> file with the following code, where <i>&lt;PROJECT_NAME_SPACE&gt; </i>is replaced with your project name:<br> <div id="scid:9ce6104f-a9aa-4a17-a79f-3a39532ebf7c:f48d8cee-1986-4d56-9f0c-e51e730b2868" class="wlWriterEditableSmartContent" style="float: none; padding-bottom: 0px; padding-top: 0px; padding-left: 0px; margin: 0px; display: inline; padding-right: 0px"> <div style="border: #000080 1px solid; color: #000; font-family: 'Courier New', Courier, Monospace; font-size: 10pt"> <div style="background: #000080; color: #fff; font-family: Verdana, Tahoma, Arial, sans-serif; font-weight: bold; padding: 2px 5px">XAML</div> <div style="background: #fff; max-height: 300px; overflow: auto"> <ol style="background: #ffffff; margin: 0; padding: 0 0 0 5px; white-space: nowrap"> <li><span style="background:#ffffff;color:#000000"></span><span style="background:#ffffff;color:#008000">&lt;!--Application Resources--&gt;</span></li> <li style="background: #f3f3f3"><span style="background:#ffffff;color:#000000"></span><span style="background:#ffffff;color:#0000ff">&lt;</span><span style="background:#ffffff;color:#a31515">Application.Resources</span><span style="background:#ffffff;color:#0000ff">&gt;</span></li> <li>    <span style="background:#ffffff;color:#000000"></span><span style="background:#ffffff;color:#0000ff">&lt;</span><span style="background:#ffffff;color:#a31515">local</span><span style="background:#ffffff;color:#0000ff">:</span><span style="background:#ffffff;color:#a31515">LocalizedStrings</span><span style="background:#ffffff;color:#ff0000"> xmlns</span><span style="background:#ffffff;color:#0000ff">:</span><span style="background:#ffffff;color:#ff0000">local</span><span style="background:#ffffff;color:#0000ff">=&quot;clr-namespace:&lt;PROJECT_NAME_SPACE&gt;&quot;</span><span style="background:#ffffff;color:#ff0000"> x</span><span style="background:#ffffff;color:#0000ff">:</span><span style="background:#ffffff;color:#ff0000">Key</span><span style="background:#ffffff;color:#0000ff">=&quot;LocalizedStrings&quot;/&gt;</span></li> <li style="background: #f3f3f3"><span style="background:#ffffff;color:#000000"></span><span style="background:#ffffff;color:#0000ff">&lt;/</span><span style="background:#ffffff;color:#a31515">Application.Resources</span><span style="background:#ffffff;color:#0000ff">&gt;</span></li> </ol> </div> </div> </div><br>The <b>LocalizedStrings</b> Application Resource, along with the <b>LocalizedStrings</b> class added in the next step provides a globally accessible means for your app to access its project’s localized resources. Although there are simpler ways to achieve that goal, the method described here provides the benefits of strong typing, including resource visibility in IntelliSense and compilation validation during coding. <li>Add a new class file named <b>LocalizedStrings.cs</b> to the project. Replace the existing code with the following, where <i>&lt;PROJECT_NAME_SPACE&gt; </i>is replaced with your project name: <br> <div id="scid:9ce6104f-a9aa-4a17-a79f-3a39532ebf7c:c77b715b-aee6-4f79-8f1b-f08505322f16" class="wlWriterEditableSmartContent" style="float: none; padding-bottom: 0px; padding-top: 0px; padding-left: 0px; margin: 0px; display: inline; padding-right: 0px"> <div style="border: #000080 1px solid; color: #000; font-family: 'Courier New', Courier, Monospace; font-size: 10pt"> <div style="background: #000080; color: #fff; font-family: Verdana, Tahoma, Arial, sans-serif; font-weight: bold; padding: 2px 5px">C#</div> <div style="background: #fff; max-height: 300px; overflow: auto"> <ol style="background: #ffffff; margin: 0; padding: 0 0 0 5px; white-space: nowrap"> <li><span style="background:#ffffff;color:#0000ff">using</span><span style="background:#ffffff;color:#000000"> &lt;PROJECT_NAME_SPACE&gt;.Resources;</span></li> <li style="background: #f3f3f3"><span style="background:#ffffff;color:#000000"> </span></li> <li><span style="background:#ffffff;color:#0000ff">namespace</span><span style="background:#ffffff;color:#000000"> &lt;PROJECT_NAME_SPACE&gt;</span></li> <li style="background: #f3f3f3"><span style="background:#ffffff;color:#000000">{</span></li> <li>    <span style="background:#ffffff;color:#000000"></span><span style="background:#ffffff;color:#808080">///</span><span style="background:#ffffff;color:#008000"> </span><span style="background:#ffffff;color:#808080">&lt;summary&gt;</span></li> <li style="background: #f3f3f3">    <span style="background:#ffffff;color:#000000"></span><span style="background:#ffffff;color:#808080">///</span><span style="background:#ffffff;color:#008000"> Provides access to string resources.</span></li> <li>    <span style="background:#ffffff;color:#000000"></span><span style="background:#ffffff;color:#808080">///</span><span style="background:#ffffff;color:#008000"> </span><span style="background:#ffffff;color:#808080">&lt;/summary&gt;</span></li> <li style="background: #f3f3f3">    <span style="background:#ffffff;color:#000000"></span><span style="background:#ffffff;color:#0000ff">public</span><span style="background:#ffffff;color:#000000"> </span><span style="background:#ffffff;color:#0000ff">class</span><span style="background:#ffffff;color:#000000"> </span><span style="background:#ffffff;color:#2b91af">LocalizedStrings</span></li> <li>    <span style="background:#ffffff;color:#000000">{</span></li> <li style="background: #f3f3f3">        <span style="background:#ffffff;color:#000000"></span><span style="background:#ffffff;color:#0000ff">private</span><span style="background:#ffffff;color:#000000"> </span><span style="background:#ffffff;color:#0000ff">static</span><span style="background:#ffffff;color:#000000"> </span><span style="background:#ffffff;color:#2b91af">AppResources</span><span style="background:#ffffff;color:#000000"> _localizedResources = </span><span style="background:#ffffff;color:#0000ff">new</span><span style="background:#ffffff;color:#000000"> </span><span style="background:#ffffff;color:#2b91af">AppResources</span><span style="background:#ffffff;color:#000000">();</span></li> <li><span style="background:#ffffff;color:#000000"> </span></li> <li style="background: #f3f3f3">        <span style="background:#ffffff;color:#000000"></span><span style="background:#ffffff;color:#0000ff">public</span><span style="background:#ffffff;color:#000000"> </span><span style="background:#ffffff;color:#2b91af">AppResources</span><span style="background:#ffffff;color:#000000"> LocalizedResources { </span><span style="background:#ffffff;color:#0000ff">get</span><span style="background:#ffffff;color:#000000"> { </span><span style="background:#ffffff;color:#0000ff">return</span><span style="background:#ffffff;color:#000000"> _localizedResources; } }</span></li> <li>    <span style="background:#ffffff;color:#000000">}</span></li> <li style="background: #f3f3f3"><span style="background:#ffffff;color:#000000">}</span></li> </ol> </div> </div> </div> <li>Search the entire project for localized string resources. Update the project namespace as needed by including the following code, where <i>&lt;PROJECT_NAME_SPACE&gt; </i>is replaced with your project name:<b> <br></b> <div id="scid:9ce6104f-a9aa-4a17-a79f-3a39532ebf7c:22126b98-1384-4cbf-97b0-6e9bc572af8f" class="wlWriterEditableSmartContent" style="float: none; padding-bottom: 0px; padding-top: 0px; padding-left: 0px; margin: 0px; display: inline; padding-right: 0px"> <div style="border: #000080 1px solid; color: #000; font-family: 'Courier New', Courier, Monospace; font-size: 10pt"> <div style="background: #000080; color: #fff; font-family: Verdana, Tahoma, Arial, sans-serif; font-weight: bold; padding: 2px 5px">C#</div> <div style="background: #fff; max-height: 300px; overflow: auto"> <ol style="background: #ffffff; margin: 0; padding: 0 0 0 5px; white-space: nowrap"> <li><span style="background:#ffffff;color:#0000ff">using</span><span style="background:#ffffff;color:#000000"> &lt;PROJECT_NAME_SPACE&gt;.Resources;</span></li> </ol> </div> </div> </div> <li>Add a folder named <b>Resources</b> to the project. <li>Add a new resources file named <b>AppResources.resx</b> file to the new <b>Resources</b> folder. <li>Add the language initialization resource strings <b>ResourceFlowDirection</b> and <b>ResourceLanguage</b> to <b>AppResources.resx</b>, as described in <a href="http://blogs.windows.com/windows_phone/b/wpdev/archive/2013/02/01/tips-for-localizing-windows-phone-8-xaml-apps-part1.aspx" target="_blank">Tips for Localizing Windows Phone 8 XAML Apps - Part1</a>. Typically, the value of the resource strings should be set to meet the traditional flow direction and locale of the neutral language (the one that a viewer of your app will see if they have selected a phone language that is not supported by your app).<br><br> <table cellspacing="0" cellpadding="2" width="550" border="1"> <tbody> <tr> <td valign="top" width="216"> <p align="center"><b>Name</b></p></td> <td valign="top" width="142"> <p align="center"><b>Value</b></p></td> <td valign="top" width="190"> <p align="center"><b>Comment</b></p></td></tr> <tr> <td valign="top" width="216"> <p>ResourceFlowDirection</p></td> <td valign="top" width="142"> <p>LeftToRight</p></td> <td valign="top" width="190"> <p>Controls the FlowDirection for all elements in the RootFrame. Set to the traditional direction of this resource file's language.</p></td></tr> <tr> <td valign="top" width="216"> <p>ResourceLanguage</p></td> <td valign="top" width="142"> <p>en-US</p></td> <td valign="top" width="190"> <p>Controls the Language and ensures that the font for all elements in the RootFrame aligns with the app's language. Set to the language code of this resource file's language.</p></td></tr></tbody></table> <li>Change the access modifier of <b>AppResources.resx</b> to "Public" by using the <b>Access Modifier</b> drop-down list at the top of the resource editor.<br><a href="http://blogs.windows.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-53-84-metablogapi/clip_5F00_image002_5F00_5C25455D.jpg"><img title="clip_image002" style="border-left-width: 0px; border-right-width: 0px; background-image: none; border-bottom-width: 0px; padding-top: 0px; padding-left: 0px; display: inline; padding-right: 0px; border-top-width: 0px" border="0" alt="clip_image002" src="http://blogs.windows.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-53-84-metablogapi/clip_5F00_image002_5F00_thumb_5F00_22360271.jpg" width="623" height="276"></a> <li>Save and rebuild the solution. <li>Add the following references to <b>App.xaml.cs</b>, where <i>&lt;PROJECT_NAME_SPACE&gt; </i>is replaced with your project name:<br> <div id="scid:9ce6104f-a9aa-4a17-a79f-3a39532ebf7c:f3d7bcb3-ea2f-4e04-9888-b2ad5806e77d" class="wlWriterEditableSmartContent" style="float: none; padding-bottom: 0px; padding-top: 0px; padding-left: 0px; margin: 0px; display: inline; padding-right: 0px"> <div style="border: #000080 1px solid; color: #000; font-family: 'Courier New', Courier, Monospace; font-size: 10pt"> <div style="background: #000080; color: #fff; font-family: Verdana, Tahoma, Arial, sans-serif; font-weight: bold; padding: 2px 5px">C#</div> <div style="background: #fff; max-height: 300px; overflow: auto"> <ol style="background: #ffffff; margin: 0; padding: 0 0 0 5px; white-space: nowrap"> <li><span style="background:#ffffff;color:#0000ff">using</span><span style="background:#ffffff;color:#000000"> &lt;PROJECT_NAME_SPACE&gt;.Resources;</span></li> <li style="background: #f3f3f3"><span style="background:#ffffff;color:#0000ff">using</span><span style="background:#ffffff;color:#000000"> System.Threading;</span></li> <li><span style="background:#ffffff;color:#0000ff">using</span><span style="background:#ffffff;color:#000000"> System.Globalization;</span></li> <li style="background: #f3f3f3"><span style="background:#ffffff;color:#0000ff">using</span><span style="background:#ffffff;color:#000000"> System.Diagnostics;</span></li> <li><span style="background:#ffffff;color:#0000ff">using</span><span style="background:#ffffff;color:#000000"> System.Windows.Markup;</span></li> </ol> </div> </div> </div> <li>Add the <b>InitializeLanguage</b> function and call to the constructor of the <b>App.xaml.cs</b> file. Include the following using statements to reference <b>System.Threading</b> and <b>System.Globalization</b> at the beginning of the file. Also, add the declaration for the <b>appForceCulture</b> global variable to enable the international testing feature described in <a href="http://blogs.windows.com/windows_phone/b/wpdev/archive/2013/03/08/tips-for-localizing-windows-phone-apps-part-2.aspx" target="_blank">Tips for localizing Windows Phone apps – Part 2</a>. <br> <div id="scid:9ce6104f-a9aa-4a17-a79f-3a39532ebf7c:e37be9ee-7414-4d54-a514-773b43615096" class="wlWriterEditableSmartContent" style="float: none; padding-bottom: 0px; padding-top: 0px; padding-left: 0px; margin: 0px; display: inline; padding-right: 0px"> <div style="border: #000080 1px solid; color: #000; font-family: 'Courier New', Courier, Monospace; font-size: 10pt"> <div style="background: #000080; color: #fff; font-family: Verdana, Tahoma, Arial, sans-serif; font-weight: bold; padding: 2px 5px">C#</div> <div style="background: #fff; max-height: 300px; overflow: auto"> <ol style="background: #ffffff; margin: 0; padding: 0 0 0 5px; white-space: nowrap"> <li><span style="background:#ffffff;color:#008000">// . . .</span></li> <li style="background: #f3f3f3"><span style="background:#ffffff;color:#0000ff">public</span><span style="background:#ffffff;color:#000000"> </span><span style="background:#ffffff;color:#0000ff">partial</span><span style="background:#ffffff;color:#000000"> </span><span style="background:#ffffff;color:#0000ff">class</span><span style="background:#ffffff;color:#000000"> </span><span style="background:#ffffff;color:#2b91af">App</span><span style="background:#ffffff;color:#000000"> : </span><span style="background:#ffffff;color:#2b91af">Application</span></li> <li><span style="background:#ffffff;color:#000000">{</span></li> <li style="background: #f3f3f3">        <span style="background:#ffffff;color:#000000"></span><span style="background:#ffffff;color:#008000">// Global variable to set app locale at launch for International testing</span></li> <li>        <span style="background:#ffffff;color:#000000"></span><span style="background:#ffffff;color:#008000">// An empty value causes the app to following users phone language culture </span></li> <li style="background: #f3f3f3">    <span style="background:#ffffff;color:#000000"></span><span style="background:#ffffff;color:#0000ff">public</span><span style="background:#ffffff;color:#000000"> </span><span style="background:#ffffff;color:#0000ff">static</span><span style="background:#ffffff;color:#000000"> </span><span style="background:#ffffff;color:#2b91af">String</span><span style="background:#ffffff;color:#000000"> appForceCulture = </span><span style="background:#ffffff;color:#a31515">&quot;qps-ploc&quot;</span><span style="background:#ffffff;color:#000000">;</span></li> <li>       <span style="background:#ffffff;color:#000000"></span></li> <li style="background: #f3f3f3">    <span style="background:#ffffff;color:#000000"></span><span style="background:#ffffff;color:#808080">///</span><span style="background:#ffffff;color:#008000"> </span><span style="background:#ffffff;color:#808080">&lt;summary&gt;</span></li> <li>    <span style="background:#ffffff;color:#000000"></span><span style="background:#ffffff;color:#808080">///</span><span style="background:#ffffff;color:#008000"> Provides easy access to the root frame of the phone app.</span></li> <li style="background: #f3f3f3">    <span style="background:#ffffff;color:#000000"></span><span style="background:#ffffff;color:#808080">///</span><span style="background:#ffffff;color:#008000"> </span><span style="background:#ffffff;color:#808080">&lt;/summary&gt;</span></li> <li>    <span style="background:#ffffff;color:#000000"></span><span style="background:#ffffff;color:#808080">///</span><span style="background:#ffffff;color:#008000"> </span><span style="background:#ffffff;color:#808080">&lt;returns&gt;</span><span style="background:#ffffff;color:#008000">The root frame of the phone app.</span><span style="background:#ffffff;color:#808080">&lt;/returns&gt;</span></li> <li style="background: #f3f3f3">    <span style="background:#ffffff;color:#000000"></span><span style="background:#ffffff;color:#0000ff">public</span><span style="background:#ffffff;color:#000000"> </span><span style="background:#ffffff;color:#0000ff">static</span><span style="background:#ffffff;color:#000000"> </span><span style="background:#ffffff;color:#2b91af">PhoneApplicationFrame</span><span style="background:#ffffff;color:#000000"> RootFrame { </span><span style="background:#ffffff;color:#0000ff">get</span><span style="background:#ffffff;color:#000000">; </span><span style="background:#ffffff;color:#0000ff">private</span><span style="background:#ffffff;color:#000000"> </span><span style="background:#ffffff;color:#0000ff">set</span><span style="background:#ffffff;color:#000000">; }</span></li> <li><span style="background:#ffffff;color:#000000"> </span></li> <li style="background: #f3f3f3">    <span style="background:#ffffff;color:#000000"></span><span style="background:#ffffff;color:#808080">///</span><span style="background:#ffffff;color:#008000"> </span><span style="background:#ffffff;color:#808080">&lt;summary&gt;</span></li> <li>    <span style="background:#ffffff;color:#000000"></span><span style="background:#ffffff;color:#808080">///</span><span style="background:#ffffff;color:#008000"> Constructor for the Application object.</span></li> <li style="background: #f3f3f3">    <span style="background:#ffffff;color:#000000"></span><span style="background:#ffffff;color:#808080">///</span><span style="background:#ffffff;color:#008000"> </span><span style="background:#ffffff;color:#808080">&lt;/summary&gt;</span></li> <li>    <span style="background:#ffffff;color:#000000"></span><span style="background:#ffffff;color:#0000ff">public</span><span style="background:#ffffff;color:#000000"> App()</span></li> <li style="background: #f3f3f3">    <span style="background:#ffffff;color:#000000">{</span></li> <li>        <span style="background:#ffffff;color:#000000"></span><span style="background:#ffffff;color:#008000">// Global handler for uncaught exceptions.</span></li> <li style="background: #f3f3f3">        <span style="background:#ffffff;color:#000000">UnhandledException += Application_UnhandledException;</span></li> <li><span style="background:#ffffff;color:#000000"> </span></li> <li style="background: #f3f3f3">        <span style="background:#ffffff;color:#000000"></span><span style="background:#ffffff;color:#008000">// Standard XAML initialization</span></li> <li>        <span style="background:#ffffff;color:#000000">InitializeComponent();</span></li> <li style="background: #f3f3f3"><span style="background:#ffffff;color:#000000"> </span></li> <li>        <span style="background:#ffffff;color:#000000"></span><span style="background:#ffffff;color:#008000">// Phone-specific initialization</span></li> <li style="background: #f3f3f3">        <span style="background:#ffffff;color:#000000">InitializePhoneApplication();</span></li> <li><span style="background:#ffffff;color:#000000"> </span></li> <li style="background: #f3f3f3">        <span style="background:#ffffff;color:#000000"></span><span style="background:#ffffff;color:#008000">// Language display initialization</span></li> <li>        <span style="background:#ffffff;color:#000000">InitializeLanguage();</span></li> <li style="background: #f3f3f3"><span style="background:#ffffff;color:#008000">// . . .</span></li> </ol> </div> </div> </div> <li>Add the <b>InitializeLanguage</b> method to <b>App.xaml.cs:<br> <div id="scid:9ce6104f-a9aa-4a17-a79f-3a39532ebf7c:8c328130-cae3-4126-8694-aed38d08cea9" class="wlWriterEditableSmartContent" style="float: none; padding-bottom: 0px; padding-top: 0px; padding-left: 0px; margin: 0px; display: inline; padding-right: 0px"> <div style="border: #000080 1px solid; color: #000; font-family: 'Courier New', Courier, Monospace; font-size: 10pt"> <div style="background: #000080; color: #fff; font-family: Verdana, Tahoma, Arial, sans-serif; font-weight: bold; padding: 2px 5px">C#</div> <div style="background: #fff; max-height: 300px; overflow: auto"> <ol style="background: #ffffff; margin: 0; padding: 0 0 0 5px; white-space: nowrap"> <li><span style="background:#ffffff;color:#008000">// Initialize the app&#39;s font and flow direction as defined in its localized resource strings.</span></li> <li style="background: #f3f3f3"><span style="background:#ffffff;color:#008000">//</span></li> <li><span style="background:#ffffff;color:#008000">// To ensure that your apps font is aligned with its supported languages and that the</span></li> <li style="background: #f3f3f3"><span style="background:#ffffff;color:#008000">// FlowDirection for each of those languages follows its traditional direction, ResourceLanguage</span></li> <li><span style="background:#ffffff;color:#008000">// and ResourceFlowDirection should be initialized in each .resx file to match these values with that</span></li> <li style="background: #f3f3f3"><span style="background:#ffffff;color:#008000">// file&#39;s culture. For example:</span></li> <li><span style="background:#ffffff;color:#008000">//</span></li> <li style="background: #f3f3f3"><span style="background:#ffffff;color:#008000">// AppResources.es-ES.resx</span></li> <li><span style="background:#ffffff;color:#008000">//    ResourceLanguage&#39;s value should be &quot;es-ES&quot;</span></li> <li style="background: #f3f3f3"><span style="background:#ffffff;color:#008000">//    ResourceFlowDirection&#39;s value should be &quot;LeftToRight&quot;</span></li> <li><span style="background:#ffffff;color:#008000">//</span></li> <li style="background: #f3f3f3"><span style="background:#ffffff;color:#008000">// AppResources.ar-SA.resx</span></li> <li><span style="background:#ffffff;color:#008000">//     ResourceLanguage&#39;s value should be &quot;ar-SA&quot;</span></li> <li style="background: #f3f3f3"><span style="background:#ffffff;color:#008000">//     ResourceFlowDirection&#39;s value should be &quot;RightToLeft&quot;</span></li> <li><span style="background:#ffffff;color:#008000">//</span></li> <li style="background: #f3f3f3"><span style="background:#ffffff;color:#008000">// For more info on localizing Windows Phone apps see http://go.microsoft.com/fwlink/?LinkId=262072.</span></li> <li><span style="background:#ffffff;color:#008000">//</span></li> <li style="background: #f3f3f3"><span style="background:#ffffff;color:#0000ff">private</span><span style="background:#ffffff;color:#000000"> </span><span style="background:#ffffff;color:#0000ff">void</span><span style="background:#ffffff;color:#000000"> InitializeLanguage()</span></li> <li><span style="background:#ffffff;color:#000000">{</span></li> <li style="background: #f3f3f3">    <span style="background:#ffffff;color:#000000"></span><span style="background:#ffffff;color:#0000ff">try</span></li> <li>    <span style="background:#ffffff;color:#000000">{</span></li> <li style="background: #f3f3f3">        <span style="background:#ffffff;color:#000000"></span><span style="background:#ffffff;color:#008000">// Change locale to appForceCulture if it is not empty</span></li> <li>        <span style="background:#ffffff;color:#000000"></span><span style="background:#ffffff;color:#0000ff">if</span><span style="background:#ffffff;color:#000000"> (</span><span style="background:#ffffff;color:#2b91af">String</span><span style="background:#ffffff;color:#000000">.IsNullOrWhiteSpace(appForceCulture) == </span><span style="background:#ffffff;color:#0000ff">false</span><span style="background:#ffffff;color:#000000">)</span></li> <li style="background: #f3f3f3">        <span style="background:#ffffff;color:#000000">{</span></li> <li>        <span style="background:#ffffff;color:#000000"></span><span style="background:#ffffff;color:#008000">// Force app globalization to follow appForceCulture</span></li> <li style="background: #f3f3f3">            <span style="background:#ffffff;color:#000000">Thread.CurrentThread.CurrentCulture = </span><span style="background:#ffffff;color:#0000ff">new</span><span style="background:#ffffff;color:#000000"> CultureInfo(appForceCulture);</span></li> <li>               <span style="background:#ffffff;color:#000000"></span></li> <li style="background: #f3f3f3"><span style="background:#ffffff;color:#008000">// Force app UI culture to follow appForceCulture</span></li> <li>            <span style="background:#ffffff;color:#000000">Thread.CurrentThread.CurrentUICulture = </span><span style="background:#ffffff;color:#0000ff">new</span><span style="background:#ffffff;color:#000000"> CultureInfo(appForceCulture);</span></li> <li style="background: #f3f3f3">        <span style="background:#ffffff;color:#000000">}</span></li> <li><span style="background:#ffffff;color:#000000"> </span></li> <li style="background: #f3f3f3"><span style="background:#ffffff;color:#000000"> </span></li> <li>        <span style="background:#ffffff;color:#000000"></span><span style="background:#ffffff;color:#008000">// Set the font to match the display language defined by the</span></li> <li style="background: #f3f3f3">        <span style="background:#ffffff;color:#000000"></span><span style="background:#ffffff;color:#008000">// ResourceLanguage resource string for each supported language.</span></li> <li>        <span style="background:#ffffff;color:#000000"></span><span style="background:#ffffff;color:#008000">//</span></li> <li style="background: #f3f3f3">        <span style="background:#ffffff;color:#000000"></span><span style="background:#ffffff;color:#008000">// Fall back to the font of the neutral language if the display</span></li> <li>        <span style="background:#ffffff;color:#000000"></span><span style="background:#ffffff;color:#008000">// language of the phone is not supported.</span></li> <li style="background: #f3f3f3">        <span style="background:#ffffff;color:#000000"></span><span style="background:#ffffff;color:#008000">//</span></li> <li>        <span style="background:#ffffff;color:#000000"></span><span style="background:#ffffff;color:#008000">// If a compiler error occurs, ResourceLanguage is missing from</span></li> <li style="background: #f3f3f3">        <span style="background:#ffffff;color:#000000"></span><span style="background:#ffffff;color:#008000">// the resource file.</span></li> <li>        <span style="background:#ffffff;color:#000000">RootFrame.Language = XmlLanguage.GetLanguage(</span><span style="background:#ffffff;color:#2b91af">AppResources</span><span style="background:#ffffff;color:#000000">.ResourceLanguage);</span></li> <li style="background: #f3f3f3"><span style="background:#ffffff;color:#000000"> </span></li> <li>        <span style="background:#ffffff;color:#000000"></span><span style="background:#ffffff;color:#008000">// Set the FlowDirection of all elements under the root frame based</span></li> <li style="background: #f3f3f3">        <span style="background:#ffffff;color:#000000"></span><span style="background:#ffffff;color:#008000">// on the ResourceFlowDirection resource string for each</span></li> <li>        <span style="background:#ffffff;color:#000000"></span><span style="background:#ffffff;color:#008000">// supported language.</span></li> <li style="background: #f3f3f3">        <span style="background:#ffffff;color:#000000"></span><span style="background:#ffffff;color:#008000">//</span></li> <li>        <span style="background:#ffffff;color:#000000"></span><span style="background:#ffffff;color:#008000">// If a compiler error occurs, ResourceFlowDirection is missing from</span></li> <li style="background: #f3f3f3">        <span style="background:#ffffff;color:#000000"></span><span style="background:#ffffff;color:#008000">// the resource file.</span></li> <li>        <span style="background:#ffffff;color:#000000"></span><span style="background:#ffffff;color:#2b91af">FlowDirection</span><span style="background:#ffffff;color:#000000"> flow = (</span><span style="background:#ffffff;color:#2b91af">FlowDirection</span><span style="background:#ffffff;color:#000000">)</span><span style="background:#ffffff;color:#2b91af">Enum</span><span style="background:#ffffff;color:#000000">.Parse(</span><span style="background:#ffffff;color:#0000ff">typeof</span><span style="background:#ffffff;color:#000000">(</span><span style="background:#ffffff;color:#2b91af">FlowDirection</span><span style="background:#ffffff;color:#000000">), </span><span style="background:#ffffff;color:#2b91af">AppResources</span><span style="background:#ffffff;color:#000000">.ResourceFlowDirection,</span><span style="background:#ffffff;color:#0000ff">false</span><span style="background:#ffffff;color:#000000">);</span></li> <li style="background: #f3f3f3">        <span style="background:#ffffff;color:#000000">RootFrame.FlowDirection = flow;</span></li> <li>    <span style="background:#ffffff;color:#000000">}</span></li> <li style="background: #f3f3f3">    <span style="background:#ffffff;color:#000000"></span><span style="background:#ffffff;color:#0000ff">catch</span></li> <li>    <span style="background:#ffffff;color:#000000">{</span></li> <li style="background: #f3f3f3">        <span style="background:#ffffff;color:#000000"></span><span style="background:#ffffff;color:#008000">// If an exception is caught here it is most likely due to either</span></li> <li>        <span style="background:#ffffff;color:#000000"></span><span style="background:#ffffff;color:#008000">// ResourceLangauge not being correctly set to a supported language</span></li> <li style="background: #f3f3f3">        <span style="background:#ffffff;color:#000000"></span><span style="background:#ffffff;color:#008000">// code or ResourceFlowDirection is set to a value other than LeftToRight</span></li> <li>        <span style="background:#ffffff;color:#000000"></span><span style="background:#ffffff;color:#008000">// or RightToLeft.</span></li> <li style="background: #f3f3f3"><span style="background:#ffffff;color:#000000"> </span></li> <li>        <span style="background:#ffffff;color:#000000"></span><span style="background:#ffffff;color:#0000ff">if</span><span style="background:#ffffff;color:#000000"> (Debugger.IsAttached)</span></li> <li style="background: #f3f3f3">        <span style="background:#ffffff;color:#000000">{</span></li> <li>            <span style="background:#ffffff;color:#000000">Debugger.Break();</span></li> <li style="background: #f3f3f3">        <span style="background:#ffffff;color:#000000">}</span></li> <li><span style="background:#ffffff;color:#000000"> </span></li> <li style="background: #f3f3f3">        <span style="background:#ffffff;color:#000000"></span><span style="background:#ffffff;color:#0000ff">throw</span><span style="background:#ffffff;color:#000000">;</span></li> <li>    <span style="background:#ffffff;color:#000000">}</span></li> <li style="background: #f3f3f3"><span style="background:#ffffff;color:#000000">}</span></li> </ol> </div> </div> </div></b></li></ol> <p>As the comments in the code explain, the <b>InitializeLanguage</b> method initializes the app's font and flow direction as defined in the localized resource strings. </p> <p>As described in the blog posts <a href="http://blogs.windows.com/windows_phone/b/wpdev/archive/2013/02/01/tips-for-localizing-windows-phone-8-xaml-apps-part1.aspx" target="_blank">Tips for Localizing Windows Phone 8 XAML Apps - Part1</a> and <a href="http://blogs.windows.com/windows_phone/b/wpdev/archive/2013/03/08/tips-for-localizing-windows-phone-apps-part-2.aspx" target="_blank">Tips for localizing Windows Phone apps – Part 2</a>, when you add a language to your app using the Windows Phone 8.0 SDK, a resource file for that locale is created. In that .resx file, the <b>ResourceLanguage</b> and <b>ResourceFlowDirection</b> values are initialized for the locale of the language you added. When the app is launched, <b>InitializeLanguage()</b> uses the values of <b>ResourceLanguage</b> and <b>ResourceFlowDirection </b>to initialize the <b>xml:lang</b> and <b><u>FlowDirection</u></b> of the app’s Rootframe. <p>Typically the culture used by <b>InitializeLanguage()</b> is the culture the system chooses to most closely match to the user’s phone language setting. The <b>appForceCulture</b> clause allows you to override this with the culture of your choice, so that you can deploy and review your app in the language of your choice without the time-consuming process of changing settings or restarting the device or emulator. If you use this convenient method, don’t forget to also test the app to be sure that everything works as expected when you modify the Phone Language setting and reboot. <div style="clear:both;"></div><img src="http://blogs.windows.com/aggbug.aspx?PostID=588342&AppID=5384&AppType=Weblog&ContentType=0" width="1" height="1"> http://blogs.windows.com/windows_phone/b/wpdev/archive/2013/04/24/using-the-windows-phone-8-0-sdk-to-localize-windows-phone-os-7-1-projects.aspx Windows Phone Dev Blog 4261 2013-04-24T21:00:17 Yet Another Podcast #96–John Papa on SPA and Public Speaking http://feedproxy.google.com/~r/JesseLiberty-SilverlightGeek/~3/Z0ONXqsMtPA/ Jesse Liberty [MS] 4260 2013-04-22T12:47:00 31 días de Windows 8 | Día 16: Menú contextual Este artículo es una traducción de “Día 16: Menú contextual” de Jeff Blakenburg. Puedes encontrar aquí la versión en inglés. Hoy nuestro foco es en menús contextuales. Estos son aquellos pequeños comandos que se muestran ocasionalmente en tu aplicación cuando das un clic derecho o algo similar. Microsoft ofrece una guía muy especial en cuanto al uso de menús contextuales y cuando usar un control de AppBar en su lugar y seguiremos estas reglas en este artículo. ¿Qué es un menú contextual? Si has usado Windows 8, probablemente los hayas encontrado. Comúnmente ellos se muestran al momento de dar clic derecho en algo que no puedas seleccionar o texto con el que quieras interactuar. Aquí hay un ejemplo de menú contextual: (imagen de: http://msdn.microsoft.com/library/windows/apps/Hh465308) Podrías también lanzar un menú contextual desde un elemento en tu página que no sea seleccionable como esta imagen en mi aplicación de ejemplo: Dar clic derecho en la imagen lanza el menú contextual a la derecha. (Te mostraré como hacer que esto suceda a continuación). Cada uno de los comandos tendrán una función asignada a ella, el cual es ejecutado cuando el elemento sea presionado. Determinando la ubicación de un elemento. Quizá hayas notado que [...] http://blogs.ligasilverlight.com/2013/04/31-das-de-windows-8-da-16-men-contextual/ La Liga Silverlight 4259 2013-04-21T22:09:38 Inside Windows Phone – code samples <p>What Windows Phone code samples are available to you, and how do you get them? We publish a large number of code samples that cover a solid range of Windows Phone developer scenarios. In this video, we touch on some of the code samples we’ve created to help you design and develop great Windows Phone apps, and where to find them. <p><iframe style="height: 288px; width: 512px" src="http://channel9.msdn.com/Shows/Inside+Windows+Phone/IWP53--Matthias-on-Samples/player?w=512&amp;h=288" frameborder="0" scrolling="no"></iframe> <p>Here’s where you can find some of the Windows Phone code samples and resources we discuss in the video. <ul> <li>Matthias's <a href="http://blogs.msdn.com/b/matthiasshapiro/archive/2013/03/21/10-great-windows-phone-8-code-samples-no-wait-30.aspx" target="_blank">blog post</a> that highlights some awesome Windows Phone samples, and where to get them</li> <li>The <u><a href="http://code.msdn.microsoft.com/site/search?f%5B0%5D.Type=Contributors&amp;f%5B0%5D.Value=Windows%20Phone%20SDK%20Team&amp;f%5B0%5D.Text=Windows%20Phone%20SDK%20Team" target="_blank">Windows Phone Dev Center samples</a></u> page – the complete list of samples created by the Windows Phone developer content team, by developers for developers </li> <li>The <a href="http://code.msdn.microsoft.com/wpapps/Basic-Lens-sample-359fda1b" target="_blank">Lens sample</a> (check out <a href="http://msdn.microsoft.com/en-us/library/windowsphone/develop/jj206990(v=vs.105).aspx" target="_blank">Lenses for Windows Phone 8</a> for an overview and walkthrough of how to build your Lens app)</li> <li>The <a href="http://code.msdn.microsoft.com/wpapps/Photo-Extensibility-Sample-db289044" target="_blank">photo extensibility sample</a> (see <a href="http://msdn.microsoft.com/en-us/library/windowsphone/develop/hh202966(v=vs.105).aspx" target="_blank">Photo extensibility for Windows Phone</a> for more info about how to use the sample and how to create your app)</li> <li>The <a href="http://code.msdn.microsoft.com/wpapps/TwitterSearch-Windows-b7fc4e5e" target="_blank">Twitter search infinite scrolling sample</a> using the LongListSelector control in Windows Phone (check out the topic on <a href="http://msdn.microsoft.com/en-us/library/windowsphone/develop/jj244365(v=vs.105).aspx" target="_blank">how to display data in a grouped list using LLS</a>)</li> <li>The <a href="http://code.msdn.microsoft.com/wpapps/PeopleHub-Windows-Phone-80-88abe94d" target="_blank">People Hub LongListSelector sample</a>, with jump lists (be sure to see the topic on <a href="http://msdn.microsoft.com/en-us/library/windowsphone/develop/jj244365(v=vs.105).aspx" target="_blank">how to display data in a grouped list using LLS</a> for info about using LLS for this sample, too) </li> <li>A <a href="http://code.msdn.microsoft.com/wpapps/Speech-for-Windows-Phone-3771fc6d" target="_blank">speech recognition sample</a> that covers using a custom grammar (see <a href="http://msdn.microsoft.com/en-us/library/windowsphone/develop/jj206959(v=vs.105).aspx" target="_blank">Voice commands for Windows Phone 8</a> for more info about how to use this feature in your app)</li></ul> <p>Please send us any questions or feedback – we’d like to hear from you. <p>Tweet to <a href="https://twitter.com/intent/tweet?screen_name=LarryALieberman" target="_blank">@LarryALieberman</a> or <u><a href="https://twitter.com/intent/tweet?screen_name=matthiasshap" target="_blank">@matthiasshap</a></u></p><div style="clear:both;"></div><img src="http://blogs.windows.com/aggbug.aspx?PostID=588323&AppID=5384&AppType=Weblog&ContentType=0" width="1" height="1"> http://blogs.windows.com/windows_phone/b/wpdev/archive/2013/04/19/inside-windows-phone-code-samples.aspx Windows Phone Dev Blog 4258 2013-04-19T20:05:05 Recovering a deleted site from IE Frequent List For those of you still using Internet Explorer. This is the page I see when I create a new Tab in IE. The other day I accidently click on the Remove this page button in the corner of one of the items on this page. Unfortunately, it was a link to a&#160; testing page I [...]<!-- Easy AdSense V2.51 --> <!-- Post[count: 2] --> <div class="ezAdsense adsense adsense-leadout" style="float:left;margin:12px; border:#00FFFF solid 1px" onmouseover="this.style.border='#FF0000 solid 1px'" onmouseout="this.style.border='#00FFFF solid 1px'"><script type="text/javascript"><!-- google_ad_client = "pub-7194001785119580"; /* blog.wpfwonderland 300x250, created 6/16/09 */ google_ad_slot = "2567713628"; google_ad_width = 300; google_ad_height = 250; //--> </script> <script type="text/javascript" src="http://pagead2.googlesyndication.com/pagead/show_ads.js"> </script></div> http://blog.wpfwonderland.com/2013/04/18/recovering-a-delete-site-from-ie-frequent-list/ Walt Ritscher 4257 2013-04-19T02:11:47 Facebook SDK for .NET - Featured in the Facebook Technology Partner program <p><i>This blog post was authored by Sanjeev Dwivedi, a developer evangelist for Microsoft working with Facebook.</i> <p><i></i> <p><i>- Adam</i> <hr> <p>Today we are pleased to share with you that Facebook has announced the Facebook SDK for .NET as part of the Facebook Technology Partners program. This is a C#/XAML–based SDK that makes integrating your Windows Phone and Windows 8 style apps with Facebook a breeze. The SDK is an open-source project owned and released by the Outercurve Foundation. The Outercurve website for the SDK is <a href="http://facebooksdk.net" target="_blank">http://facebooksdk.net</a>, which hosts tutorials for both <a href="http://facebooksdk.net/docs/windows/tutorial/" target="_blank">Windows 8</a> and <a href="http://facebooksdk.net/docs/phone/tutorial/" target="_blank">Windows Phone</a>, and has links to the <a href="https://github.com/facebook-csharp-sdk/facebook-csharp-sdk/" target="_blank">GitHub repository</a> where the source is hosted. <p>You can easily integrate the SDK into your project using <i>NuGet,</i> which automatically downloads and installs the SDK in your project. To do this, launch the <b>Package Manager Console</b> from the toolbar:<br><b>Tools<i> </i></b>&gt;<b><i> </i>Library Package Manager<i> </i></b>&gt; <b>Package Manager Console</b> <p><a href="http://blogs.windows.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-53-84-metablogapi/image_5F00_5DCE4B32.png"><img title="image" style="border-top: 0px; border-right: 0px; background-image: none; border-bottom: 0px; padding-top: 0px; padding-left: 0px; border-left: 0px; display: inline; padding-right: 0px" border="0" alt="image" src="http://blogs.windows.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-53-84-metablogapi/image_5F00_thumb_5F00_6ED27915.png" width="624" height="437"></a> <p>Install the Facebook NuGet package as part of your app by running the following command: <p><font face="Courier New">Install-Package Facebook</font> <p><a href="http://blogs.windows.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-53-84-metablogapi/image_5F00_14C8296C.png"><img title="image" style="border-top: 0px; border-right: 0px; background-image: none; border-bottom: 0px; padding-top: 0px; padding-left: 0px; border-left: 0px; display: inline; padding-right: 0px" border="0" alt="image" src="http://blogs.windows.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-53-84-metablogapi/image_5F00_thumb_5F00_13EFC382.png" width="624" height="196"></a> <p>The Facebook SDK for .NET makes your life easier by providing two key functionalities: <ol> <li>It takes away all of the complexity of logging on with Facebook. Based on the provided samples, all you need to do is use a bit of boilerplate code, add your Facebook app ID to the mix, and voila! You can have people logging on to your app with Facebook. <li>It allows you to focus on your Facebook-related scenarios by abstracting away the low-level details such as HTTP connections and query parameters. This way you can plan and develop around Open Graph APIs and objects, which is where you want to spend your development resources.</li></ol> <p>An added benefit of using this SDK is that it provides very similar APIs on both the Windows Phone and the Windows 8 platforms, so code-sharing between the two platforms becomes very easy. Here is a snippet that showcases retrieval of a Friends list from Facebook on Windows Phone. As you can see in the code example, setting up the client and making the call to retrieve your Friends list requires just a few lines of code. The rest of the code is your logic around picking the data that is of interest to you.</p> <div id="scid:9ce6104f-a9aa-4a17-a79f-3a39532ebf7c:4f753b3e-9cdf-4537-9d40-76d9595ddf68" class="wlWriterEditableSmartContent" style="float: none; padding-bottom: 0px; padding-top: 0px; padding-left: 0px; margin: 0px; display: inline; padding-right: 0px"> <div style="border: #000080 1px solid; color: #000; font-family: 'Courier New', Courier, Monospace; font-size: 10pt"> <div style="background: #000080; color: #fff; font-family: Verdana, Tahoma, Arial, sans-serif; font-weight: bold; padding: 2px 5px">Code Snippet</div> <div style="background: #fff; max-height: 300px; overflow: auto"> <ol style="background: #ffffff; margin: 0; padding: 0 0 0 5px; white-space: nowrap"> <li><span style="background:#ffffff;color:#000000"></span><span style="background:#ffffff;color:#008000">// Instantiate the Facebook client</span></li> <li style="background: #f3f3f3"><span style="background:#ffffff;color:#000000">FacebookClient fb = </span><span style="background:#ffffff;color:#0000ff">new</span><span style="background:#ffffff;color:#000000"> FacebookClient(</span><span style="background:#ffffff;color:#a31515">&quot;&lt;Supply Access Token here&gt;&quot;</span><span style="background:#ffffff;color:#000000">);</span></li> <li>&nbsp;</li> <li style="background: #f3f3f3"><span style="background:#ffffff;color:#000000"></span><span style="background:#ffffff;color:#008000">// Make the friends list Open Graph API request</span></li> <li><span style="background:#ffffff;color:#000000"></span><span style="background:#ffffff;color:#0000ff">var</span><span style="background:#ffffff;color:#000000"> friendsTaskResult = await fb.GetTaskAsync(</span><span style="background:#ffffff;color:#a31515">&quot;/me/friends&quot;</span><span style="background:#ffffff;color:#000000">);</span></li> <li style="background: #f3f3f3">&nbsp;</li> <li><span style="background:#ffffff;color:#000000"></span><span style="background:#ffffff;color:#0000ff">var</span><span style="background:#ffffff;color:#000000"> result = (</span><span style="background:#ffffff;color:#2b91af">IDictionary</span><span style="background:#ffffff;color:#000000">&lt;</span><span style="background:#ffffff;color:#0000ff">string</span><span style="background:#ffffff;color:#000000">, </span><span style="background:#ffffff;color:#0000ff">object</span><span style="background:#ffffff;color:#000000">&gt;)friendsTaskResult;</span></li> <li style="background: #f3f3f3"><span style="background:#ffffff;color:#000000"></span><span style="background:#ffffff;color:#0000ff">var</span><span style="background:#ffffff;color:#000000"> data = (</span><span style="background:#ffffff;color:#2b91af">IEnumerable</span><span style="background:#ffffff;color:#000000">&lt;</span><span style="background:#ffffff;color:#0000ff">object</span><span style="background:#ffffff;color:#000000">&gt;)result[</span><span style="background:#ffffff;color:#a31515">&quot;data&quot;</span><span style="background:#ffffff;color:#000000">];</span></li> <li><span style="background:#ffffff;color:#000000"></span><span style="background:#ffffff;color:#0000ff">foreach</span><span style="background:#ffffff;color:#000000"> (</span><span style="background:#ffffff;color:#0000ff">var</span><span style="background:#ffffff;color:#000000"> item </span><span style="background:#ffffff;color:#0000ff">in</span><span style="background:#ffffff;color:#000000"> data)</span></li> <li style="background: #f3f3f3"><span style="background:#ffffff;color:#000000">{</span></li> <li>    <span style="background:#ffffff;color:#000000"></span><span style="background:#ffffff;color:#0000ff">var</span><span style="background:#ffffff;color:#000000"> friend = (</span><span style="background:#ffffff;color:#2b91af">IDictionary</span><span style="background:#ffffff;color:#000000">&lt;</span><span style="background:#ffffff;color:#0000ff">string</span><span style="background:#ffffff;color:#000000">, </span><span style="background:#ffffff;color:#0000ff">object</span><span style="background:#ffffff;color:#000000">&gt;)item;</span></li> <li style="background: #f3f3f3">    <span style="background:#ffffff;color:#000000"></span><span style="background:#ffffff;color:#008000">// Pick out the properties from the dictionary without the need for writing deserializing classes</span></li> <li>&nbsp;</li> <li style="background: #f3f3f3">    <span style="background:#ffffff;color:#000000"></span><span style="background:#ffffff;color:#0000ff">string</span><span style="background:#ffffff;color:#000000"> name = (</span><span style="background:#ffffff;color:#0000ff">string</span><span style="background:#ffffff;color:#000000">)friend[</span><span style="background:#ffffff;color:#a31515">&quot;name&quot;</span><span style="background:#ffffff;color:#000000">];</span></li> <li>    <span style="background:#ffffff;color:#000000"></span><span style="background:#ffffff;color:#0000ff">string</span><span style="background:#ffffff;color:#000000"> id = (</span><span style="background:#ffffff;color:#0000ff">string</span><span style="background:#ffffff;color:#000000">)friend[</span><span style="background:#ffffff;color:#a31515">&quot;id&quot;</span><span style="background:#ffffff;color:#000000">];</span></li> <li style="background: #f3f3f3"><span style="background:#ffffff;color:#000000">}</span></li> </ol> </div> </div> </div> <p>You can find more details about the SDK on the Outercurve Foundation website: <a href="http://facebooksdk.net/docs/" target="_blank">http://facebooksdk.net/docs/</a>. You can also follow the development of the SDK at its <a href="https://www.facebook.com/csharpsdk" target="_blank">Facebook page</a>, report any issues on <a href="https://github.com/facebook-csharp-sdk/facebook-csharp-sdk/issues" target="_blank">Github issue tracker</a>, and ask any follow-up questions on the <a href="http://facebook.stackoverflow.com/questions/tagged/facebook-c%23-sdk" target="_blank">StackOverFlow forum</a>. For details about how to obtain an Access Token, see the <i>Authenticate</i> section in the Windows Phone <a href="http://facebooksdk.net/docs/phone/tutorial/" target="_blank">tutorial</a>. <hr> <p><em>The offerings and resources presented may be relevant to developers. However, this post is for informational purposes only and Microsoft is providing this information "as is" with no warranties. Each contribution is licensed to you under an agreement by its provider, not Microsoft. It is your responsibility to evaluate if these resources are suitable for your usage.</em><div style="clear:both;"></div><img src="http://blogs.windows.com/aggbug.aspx?PostID=588315&AppID=5384&AppType=Weblog&ContentType=0" width="1" height="1"> http://blogs.windows.com/windows_phone/b/wpdev/archive/2013/04/18/facebook-sdk-for-net-featured-in-the-facebook-technology-partner-program.aspx Windows Phone Dev Blog 4256 2013-04-18T19:01:25 trello-burndown 0.8.0 verfügbar <p><a title="http://devtyr.github.com/trello-burndown/" href="http://devtyr.github.com/trello-burndown/" target="_blank">trello-burndown</a> ist ab sofort in der Version <strong>0.8.0</strong> verfügbar. Es hat wieder zahlreiche Bugfixes, Anpassungen und Erweiterungen gegeben, die in diesem Beitrag näher beschrieben werden.</p> <blockquote> <p>Weiterführende Informationen finden sich auf <a href="http://devtyr.github.com/trello-burndown/">http://devtyr.github.com/trello-burndown/</a>. Das Node-Modul kann auch via <a href="https://npmjs.org/">NPM</a> installiert werden, Informationen siehe <a href="https://npmjs.org/package/trello-burndown">https://npmjs.org/package/trello-burndown</a>.</p> </blockquote> <h2>Fehlerbehebungen</h2> <ul> <li>Der Sprint wurde einen Tag zu früh deaktiviert und konnte somit am letzten Tag nicht mehr aktualisiert werden</li> <li><font face="Courier New">export</font> und <font face="Courier New">config</font> Ordner werden nun beim Startup erstellt, sofern diese nicht existieren</li> <li><font face="Courier New">d3.js</font> wurde als NPM-Modul entfernt (Kompatibilitätsprobleme mit Node 0.10.x) und als statische Ressource eingebunden</li> <li>Wurden Tasks an Tagen abgeschlossen, die nicht aktiv im Burndown angezeigt werden, dann wurden deren Werte nicht berücksichtigt.</li> <li>Burndown-Chart wurde an die restlichen Charts angepasst</li> </ul> <h2>Features</h2> <ul> <li>Hover-Informationen in den Charts</li> <li>Es werden nun mehrere Finished Lists unterstützt</li> <li>Sprint-Ansicht wurde um eine Liste der offenen Punkte erweitert</li> <li>Sprint-Ansicht wurde um die Anzeige der Statistik-Daten erweitert</li> </ul> <p>&#160;</p> <p>Viel Spaß damit!</p> http://devtyr.norberteder.com/post/trello-burndown-080-verfugbar.aspx Norbert Eder [MVP] 4255 2013-04-18T13:01:06 WLAN verliert unter Windows 8 ständig Verbindung <p>Die WLAN-Verbindung auf meinem neuen Laptop verliert - wenn ich via Tethering online bin - laufend die Verbindung. Das ist durchaus nervig wenn man alle Minuten neu verbinden darf. Also muss dafür eine Lösung her. Insgesamt fallen mir hierzu zwei Möglichkeiten ein, die helfen können (wohl nicht müssen, aber wir werden sehen).</p> <h2>Energieverwaltung</h2> <p>Für einige Geräte besteht die Möglichkeit, dass der Computer unter dem Deckmantel der Energieverwaltung das jeweilige Gerät deaktivieren darf. Dies ist gerade bei Laptops die auf Akku laufen hilfreich um Ressourcen zu sparen. Dies kann jedoch unter Umständen zu ungewollten Verhaltensweisen führen. Um dies für die WLAN-Karte zu deaktivieren ist der <strong>Geräte-Manager</strong> zu öffnen und das Stück Hardware unter <strong>Netzwerkadapter</strong> zu finden. In den Eigenschaften findet sich nun die Lasche <strong>Energieverwaltung</strong>. Um eine Deaktivierung durch den Rechner zu verhindern ist der Haken von <strong>Computer kann das Gerät ausschalten, um Energie zu sparen</strong> zu entfernen. </p> <p><a href="http://devtyr.norberteder.com/image.axd?picture=image_245.png"><img title="Energieverwaltung für WLAN-Karte konfigurieren" style="border-top: 0px; border-right: 0px; background-image: none; border-bottom: 0px; padding-top: 0px; padding-left: 0px; border-left: 0px; display: inline; padding-right: 0px" border="0" alt="Energieverwaltung für WLAN-Karte konfigurieren" src="http://devtyr.norberteder.com/image.axd?picture=image_thumb_168.png" width="700" height="510" /></a></p> <h2>Treiber aktualisieren</h2> <p>Hat die Änderung der Energieverwaltung nicht funktioniert, sollte überprüft werden, ob ein neuer Treiber zur Verfügung steht. Hierfür sind die selben Schritte, wie oben beschrieben, durchzuführen. Anstatt der Lasche Energieverwaltung ist hingegen die Lasche <strong>Treiber</strong> zu öffnen. Dies ergibt in etwa folgendes Bild:</p> <p><a href="http://devtyr.norberteder.com/image.axd?picture=image_246.png"><img title="Treiber-Informationen WLAN" style="border-top: 0px; border-right: 0px; background-image: none; border-bottom: 0px; padding-top: 0px; padding-left: 0px; border-left: 0px; display: inline; padding-right: 0px" border="0" alt="Treiber-Informationen WLAN" src="http://devtyr.norberteder.com/image.axd?picture=image_thumb_169.png" width="500" height="580" /></a></p> <p>Nun ist die Schaltfläche <strong>Treiber aktualisieren</strong> zu wählen. Man wird nun gefragt, ob automatisch nach einem Treiber (online) gesucht werden soll, oder aber am Rechner (so man bereits zuvor Treiberdateien herunter geladen hat). Hier ist die erste Wahl zu treffen. Wird ein neuer Treiber gefunden, ist dieser zu installieren. Natürlich kann es nun sein, dass kein neuer Treiber gefunden wurde. Dies bedeutet jedoch nicht, dass es keinen neuen gibt. Hierfür ist die Hersteller-Seite (in meinem Fall die Seite von <a title="Download-Center Intel" href="https://downloadcenter.intel.com/" target="_blank">Intel</a>) aufzurufen und für die entsprechende Hardware nach einem Treiber zu suchen. Wie auf dem obigen Screenshot ersichtlich, ist die notwendige Information hierfür angeführt. Wichtig ist hier die korrekte Typbezeichnung und die aktuell installierte Version (hierbei ist darauf zu achten, ob es sich um 64-Bit oder 32-Bit System handelt - dies kann via <strong>System </strong>herausgefunden werden).</p> <p>Die Treiber kommen im Normalfall mit einem Installer, der auszuführen ist. Etwaige Anweisungen sind zu befolgen. </p> <blockquote> <p>Bei Intel ist mir aufgefallen, dass sich der Installer ohne Meldung verabschiedet. Ein kurzer Blick auf die Treiberversion hat jedoch gezeigt, dass der Treiber installiert wurde. D.h. dies vor Ausbruch einer Panik überprüfen :)</p> </blockquote> <p>In meinem Fall hat es ein Treiber-Update getan - Problem gelöst, allerdings stellt sich mir die Frage nach der Aktualität der Treiberdatenbank von Microsoft. Liegen zwischen der ursprünglich installierten Version und der nun installierten doch über zwei Monate. Da würde ich mir gerade für den nicht technikaffinen Endverbraucher eine Verbesserung wünschen.</p> http://devtyr.norberteder.com/post/WLAN-verliert-unter-Windows-8-standig-Verbindung.aspx Norbert Eder [MVP] 4254 2013-04-17T20:53:30 Defining your app’s requirements for a great customer experience <p>One of the things I really enjoy about developing for Windows Phone is being able to reach a diverse audience across the globe. Windows Phone users access my apps on phones from different manufacturers, all with varying capabilities and price points to meet local needs. While I benefit from the diverse audience, it does take a little planning on my part to create a great user experience and to ensure that my apps comply with the <a href="http://msdn.microsoft.com/en-us/library/windowsphone/develop/hh184840(v=vs.105).aspx" target="_blank">Windows Phone technical certification requirements</a>. <p>In this post I’ll help you identify the phone features and hardware your app requires, and then provide guidance on how define these needs in Visual Studio. <h2>Capabilities and requirements</h2> <p>Windows Phone uses the app manifest file to identify the software capabilities, hardware required, and memory each app requires to run correctly: <ul> <li><b>Software capabilities: </b>indicate that an app accesses the phone identity, camera, maps, media libraries, networking, Near-Field Communication (NFC), push notifications, sensors, wallet, web browser, and other software capabilities. Windows Phone grants access to these capabilities, and customers are informed before purchasing the app which capabilities are used. <li><b>Hardware requirements</b>: indicate phone features that the app must have to function correctly. The operating system uses the list to prevent apps from being installed on phones that don’t meet these requirements. <li><b>Functional capabilities</b>: indicate that your app is <a href="http://msdn.microsoft.com/en-us/library/windowsphone/develop/jj681682(v=vs.105).aspx" target="_blank">requesting more memory at run time</a>, if it is available. </li></ul> <h2>Your app must enable the relevant capabilities and hardware requirements</h2> <p>Make sure your app is not marking capabilities and requirements that it doesn’t need. Users see your app’s capabilities and requirements when they install the app, and may decide not to move forward with installation if they see that your app uses capabilities that they don’t want to enable, or that are not related to the purpose of the app. <p>In a scenario in which your app can provide value even when some hardware is absent, use API checks to first detect the presence of the hardware, and then to inform users if some features are disabled because of missing hardware. <p>The following steps explain how you can modify support for different Windows Phone capabilities in your app. <h5></h5> <p>Open your project in Visual Studio, go to the <b>Solution Explorer</b>, and then in the <b>Properties</b> folder, open <b>WMAppManifest.xml</b>. Then, <a href="http://msdn.microsoft.com/en-us/library/windowsphone/develop/jj247542(v=vs.105).aspx" target="_blank">add or remove the capabilities</a> as illustrated here: </p> <p> <table cellspacing="0" cellpadding="0" border="0"> <tbody> <tr> <td valign="top" width="168"> <p style="background-color: #dbe5f1"><strong>Windows Phone 7 project</strong></p></td> <td valign="top" width="463"> <p style="background-color: #8db3e2" align="center"><strong>Windows Phone 8 project</strong></p></td></tr></tbody></table></p> <p><a href="http://blogs.windows.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-53-84-metablogapi/image_5F00_6D4E4129.png"><img title="image" style="border-left-width: 0px; border-right-width: 0px; background-image: none; border-bottom-width: 0px; padding-top: 0px; padding-left: 0px; display: inline; padding-right: 0px; border-top-width: 0px" border="0" alt="image" src="http://blogs.windows.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-53-84-metablogapi/image_5F00_thumb_5F00_6C09A84A.png" width="624" height="524"></a></p> <h3>Add hardware and functional capabilities to the manifest file</h3> <p>If the hardware or functional capabilities you need are not listed in Visual Studio, you must manually <a href="http://msdn.microsoft.com/en-us/library/windowsphone/develop/jj247542(v=vs.105).aspx" target="_blank">edit the manifest file</a>. To do this, first understand all the <a href="http://msdn.microsoft.com/en-us/library/windowsphone/develop/jj206936(v=vs.105).aspx" target="_blank">capabilities available</a>, and then edit the manifest file in a text editor, such as Notepad, or directly in the code. Right-click the file in <b>Solution Explorer</b>, click <b>Open With</b>, and then edit through <b>Notepad or ‘view code’</b>. You turn these on by adding the correct flag: <table cellspacing="0" cellpadding="2" width="498" border="1"> <tbody> <tr> <td valign="top" width="244"> <p align="center"><b>Requirement</b></p></td> <td valign="top" width="252"> <p align="center"><b>Short description</b></p></td></tr> <tr> <td valign="top" width="246"> <p>ID_REQ_MEMORY_90</p></td> <td valign="top" width="251"> <p>App requires at least 90 MB of RAM</p></td></tr> <tr> <td valign="top" width="247"> <p>ID_REQ_MEMORY_300</p></td> <td valign="top" width="251"> <p>App requires at least 180 MB of RAM</p></td></tr> <tr> <td valign="top" width="247"> <p>ID_REQ_FRONTCAMERA</p></td> <td valign="top" width="251"> <p>App requires the front-facing camera</p></td></tr> <tr> <td valign="top" width="247"> <p>ID_REQ_REARCAMERA</p></td> <td valign="top" width="251"> <p>App requires the rear camera</p></td></tr> <tr> <td valign="top" width="247"> <p>ID_REQ_NFC</p></td> <td valign="top" width="251"> <p>App requires a phone with NFC chip</p></td></tr> <tr> <td valign="top" width="247"> <p>ID_REQ_MAGNETOMETER</p></td> <td valign="top" width="251"> <p>App requires a compass</p></td></tr> <tr> <td valign="top" width="247"> <p>ID_REQ_GYROSCOPE</p></td> <td valign="top" width="251"> <p>App requires gyroscope to measure rotational velocity</p></td></tr></tbody></table> <p>Here’s an example of the manifest flag that shows the software, hardware, and functional capabilities: <p><a href="http://blogs.windows.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-53-84-metablogapi/clip_5F00_image003_5F00_6AC50F6B.png"><img title="clip_image003" style="border-left-width: 0px; border-right-width: 0px; background-image: none; border-bottom-width: 0px; padding-top: 0px; padding-left: 0px; display: inline; padding-right: 0px; border-top-width: 0px" border="0" alt="clip_image003" src="http://blogs.windows.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-53-84-metablogapi/clip_5F00_image003_5F00_thumb_5F00_69ECA981.png" width="586" height="633"></a> <h2>Capabilities required when using the Microsoft Ad Control</h2> <p>If your app uses the <a href="http://msdn.microsoft.com/en-us/library/advertising-mobile-windows-phone-manifest-capabilities(v=msads.20).aspx" target="_blank">Microsoft Ad Control</a>, be sure to <a href="http://msdn.microsoft.com/en-us/library/advertising-mobile-windows-phone-manifest-capabilities(v=msads.20).aspx" target="_blank">enable the following capabilities</a>: <table cellspacing="0" cellpadding="2" width="650" border="1"> <tbody> <tr> <td valign="top" width="242"> <p align="center"><b>Windows Phone 7 Silverlight</b></p></td> <td valign="top" width="164"> <p align="center"><b>Windows Phone 7 XNA</b></p></td> <td valign="top" width="242"> <p align="center"><b>Windows Phone 8 project</b></p></td></tr> <tr> <td valign="top" width="242"> <p>ID_CAP_IDENTITY_USER</p></td> <td valign="top" width="164"> <p>ID_CAP_IDENTITY_USER</p></td> <td valign="top" width="242"> <p>ID_CAP_IDENTITY_USER</p></td></tr> <tr> <td valign="top" width="242"> <p>ID_CAP_MEDIALIB</p></td> <td valign="top" width="164"> <p>ID_CAP_NETWORKING</p></td> <td valign="top" width="242"> <p>ID_CAP_MEDIALIB_PHOTO</p></td></tr> <tr> <td valign="top" width="242"> <p>ID_CAP_NETWORKING</p></td> <td valign="top" width="164"> <p>ID_CAP_PHONEDIALER</p></td> <td valign="top" width="242"> <p>ID_CAP_NETWORKING</p></td></tr> <tr> <td valign="top" width="242"> <p>ID_CAP_PHONEDIALER</p></td> <td valign="top" width="164">&nbsp;</td> <td valign="top" width="242"> <p>ID_CAP_PHONEDIALER</p></td></tr> <tr> <td valign="top" width="242"> <p>ID_CAP_WEBBROWSERCOMPONENT</p></td> <td valign="top" width="164">&nbsp;</td> <td valign="top" width="242"> <p>ID_CAP_WEBBROWSERCOMPONENT</p></td></tr></tbody></table> <h2>Additional considerations </h2> <p>In some scenarios, capabilities are added automatically. Here are some examples: <ul> <li>During debugging, when running the app in the Windows Phone Emulator, the Network Capability is set to ‘on’ by default. You should always test your app on a phone instead of on the emulator if your app uses any of the Windows Phone Software or Hardware capabilities, to ensure you are getting correct test results. <li>For Windows Phone 8 projects, it is your responsibility to ensure all the correct Software capabilities are identified and added to the manifest file. <li>For Windows Phone 7 projects, the submission process looks for software API calls and, if found, will add the Software capabilities to ensure that the app has the correct permissions to run. <li>Third-party libraries could make calls to some APIs, for example, to network or sensor APIs. </li></ul> <p>Having a variety of phones with different price points creates opportunities to reach out to more users. Take the time to set the correct information and get your app ready to be successful on a variety of Windows Phone devices. <h2>How capabilities are displayed to Windows Phone users</h2> <p>The following table shows examples of how capabilities appear to consumers in the web Store and on the phone: <table cellspacing="0" cellpadding="2" width="613" border="0"> <tbody> <tr> <td valign="top" width="308"> <p style="background-color: #dbe5f1">How capabilities are shown in app details page of an app on the Windows Phone <a href="http://www.windowsphone.com/" target="_blank">web Store</a></p></td> <td valign="top" width="303"> <p style="background-color: #8db3e2">How capabilities are shown in the app details page of an app on Windows Phone</p></td></tr></tbody></table> <table cellspacing="0" cellpadding="0" border="0"> <tbody> <tr> <td valign="top" width="307"> <p><a href="http://blogs.windows.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-53-84-metablogapi/clip_5F00_image004_5F00_222B209A.jpg"><img title="clip_image004" style="border-left-width: 0px; border-right-width: 0px; background-image: none; border-bottom-width: 0px; float: none; padding-top: 0px; padding-left: 0px; margin-left: auto; display: block; padding-right: 0px; border-top-width: 0px; margin-right: auto" border="0" alt="clip_image004" src="http://blogs.windows.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-53-84-metablogapi/clip_5F00_image004_5F00_thumb_5F00_01A3E0E8.jpg" width="235" height="224"></a></p></td> <td valign="top" width="283"> <p><a href="http://blogs.windows.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-53-84-metablogapi/clip_5F00_image005_5F00_611CA135.jpg"><img title="clip_image005" style="border-left-width: 0px; border-right-width: 0px; background-image: none; border-bottom-width: 0px; float: none; padding-top: 0px; padding-left: 0px; margin-left: auto; display: block; padding-right: 0px; border-top-width: 0px; margin-right: auto" border="0" alt="clip_image005" src="http://blogs.windows.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-53-84-metablogapi/clip_5F00_image005_5F00_thumb_5F00_356BD739.jpg" width="215" height="351"></a></p></td></tr></tbody></table> <h2>Using the Store Test Kit (for Windows Phone 7 projects)</h2> <p>If your app targets Windows Phone 7.1, you can use the Store Test Kit to <a href="http://msdn.microsoft.com/en-us/library/windowsphone/develop/gg180730(v=vs.105).aspx" target="_blank">verify the capabilities</a> that are being detected, to confirm they align with what you are expecting. The Windows Phone 8.0 SDK includes the Store Test Kit, and the Windows Phone 7 SDK requires you to install a <a href="http://www.codeproject.com/Articles/120762/Checking-Your-WP7-Application-Capabilities)" target="_blank">stand-alone tool</a> to run these tests. <p>Take the following steps to run the Store Test Kit for Windows Phone 7 project: <ul> <li><b>INSTALL AND START THE TEST KIT. </b>Install and run the Store Test Kit. In the latest version of the SDK you can open the Store Test Kit directly from within your project: on the <b>Project</b> menu, click <b>Open Store Test Kit</b>. <li><a href="http://msdn.microsoft.com/en-us/library/windowsphone/develop/gg180730(v=vs.105).aspx" target="_blank">RUN THE AUTOMATED TESTS</a><b></b>. The Store Test Kit can detect and add software capabilities based on API calls for Windows Phone OS 7.x managed projects (not on native projects or Windows Phone OS 8.0 managed projects). <b>Note</b>&nbsp;&nbsp; You probably will need to update the test cases the first time you run the Test Kit, because we update them frequently. You can do this easily from the blue alert bar you might see across the bottom of the Test Kit window.<br><a href="http://blogs.windows.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-53-84-metablogapi/image_5F00_74C98AC9.png"><img title="image" style="border-left-width: 0px; border-right-width: 0px; background-image: none; border-bottom-width: 0px; padding-top: 0px; padding-left: 0px; display: inline; padding-right: 0px; border-top-width: 0px" border="0" alt="image" src="http://blogs.windows.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-53-84-metablogapi/image_5F00_thumb_5F00_7F1AAF29.png" width="257" height="302"></a><br><br>Use the <b>Automated Tests</b> tool to identify the capabilities that your app is using. Verify that these are the capabilities your app actually requires.<br><a href="http://blogs.windows.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-53-84-metablogapi/image_5F00_4C4AA8B5.png"><img title="image" style="border-left-width: 0px; border-right-width: 0px; background-image: none; border-bottom-width: 0px; padding-top: 0px; padding-left: 0px; display: inline; padding-right: 0px; border-top-width: 0px" border="0" alt="image" src="http://blogs.windows.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-53-84-metablogapi/image_5F00_thumb_5F00_1D84F013.png" width="569" height="194"></a></li></ul> <p>Windows Phone users appreciate having visibility into my app requirements, so that they can make an informed choice about downloading and purchasing your app. In the end, the user gets an app that performs well on their phone, and you get a better review for your apps. Everyone wins. <p>I’d like to hear from you. Please let me know your questions about defining capabilities, as well as suggestions for topics you’d like me to cover in future blog posts. <div style="clear:both;"></div><img src="http://blogs.windows.com/aggbug.aspx?PostID=588309&AppID=5384&AppType=Weblog&ContentType=0" width="1" height="1"> http://blogs.windows.com/windows_phone/b/wpdev/archive/2013/04/17/defining-your-app-s-requirements-for-a-great-customer-experience.aspx Windows Phone Dev Blog 4253 2013-04-17T20:30:48 Windows Phone: Verbindung zu SkyDrive aufbauen <p>Viele Windows Phone Apps ermöglichen das Arbeiten mit Dokumenten oder Daten die sinnvollerweise mit anderen Anwendungen geteilt werden. Vielfach kommt dabei <a title="Dropbox" href="http://www.dropbbox.com" target="_blank">Dropbox</a> zum Einsatz und weit seltener <a title="SkyDrive" href="http://www.skydrive.com" target="_blank">SkyDrive</a>. Dabei ist eine Integration mittlerweile recht einfach möglich. Dieser Beitrag zeigt was dafür notwendig ist und wie es funktioniert.</p> <p>Im ersten Schritt wird das <a title="Live SDK" href="http://www.microsoft.com/en-us/download/details.aspx?id=35754" target="_blank">Live SDK</a> benötigt. Darin enthalten sind Steuerelemente und Schnittstellen für den Zugriff auf <a title="SkyDrive" href="http://www.skydrive.com" target="_blank">SkyDrive</a> via Single Sign On durch den Microsoft Account (vormals Windows Live ID). Nach der Installation sind zwei Referenzen einzubinden:</p> <p><a href="http://devtyr.norberteder.com/image.axd?picture=image_242.png"><img title="Windows Live Referenzen einbinden" style="border-top: 0px; border-right: 0px; background-image: none; border-bottom: 0px; padding-top: 0px; padding-left: 0px; border-left: 0px; display: inline; padding-right: 0px" border="0" alt="Windows Live Referenzen einbinden" src="http://devtyr.norberteder.com/image.axd?picture=image_thumb_165.png" width="500" height="310" /></a></p> <p>Wer gerne über die <strong>Toolbox</strong> arbeitet kann sich die Steuerelemente via <strong>Choose Items</strong> einbinden:</p> <p><a href="http://devtyr.norberteder.com/image.axd?picture=image_243.png"><img title="Visual Studio Toolbox Items hinzufügen" style="border-top: 0px; border-right: 0px; background-image: none; border-bottom: 0px; padding-top: 0px; padding-left: 0px; border-left: 0px; display: inline; padding-right: 0px" border="0" alt="Visual Studio Toolbox Items hinzufügen" src="http://devtyr.norberteder.com/image.axd?picture=image_thumb_166.png" width="500" height="362" /></a></p> <p>Hier ist dann (je nach zu Grunde liegender Version) der <strong>SignInButton</strong> zu wählen. Nach Bestätigung erscheint das Steuerelement in der Toolbox und kann dort praktisch ausgewählt und auf die View gezogen werden:</p> <p><a href="http://devtyr.norberteder.com/image.axd?picture=image_244.png"><img title="SignInButton in Visual Studio Toolbox hinzufügen" style="border-top: 0px; border-right: 0px; background-image: none; border-bottom: 0px; padding-top: 0px; padding-left: 0px; border-left: 0px; display: inline; padding-right: 0px" border="0" alt="SignInButton in Visual Studio Toolbox hinzufügen" src="http://devtyr.norberteder.com/image.axd?picture=image_thumb_167.png" width="500" height="381" /></a></p> <h2>Berechtigungen</h2> <p>Für den Zugriff auf SkyDrive sind unterschiedliche Berechtigungen notwendig. Hierbei sind insgesamt 5 Scopes definiert, die jeweils mit einer unterschiedlichen Berechtigung ausgestattet sind:</p> <ul> <li><font face="Courier New">wl.sigin</font>: Single Sign On, d.h. ist der Benutzer bereits angemeldet, wird diese Session übernommen</li> <li><font face="Courier New">wl.basic</font>: Lesezugriff auf die grundlegenden Profilinformationen und der Liste der Kontakte</li> <li><font face="Courier New">wl.offline_access</font>: Benutzerprofil kann zu jeder Zeit gelesen und aktualisiert werden. Ist dieser Scope nicht aktiviert kann auf die Profilinformationen nur in eingeloggtem Zustand zugegriffen werden.</li> <li><font face="Courier New">wl.skydrive</font>: Lesezugriff auf Dateien</li> <li><font face="Courier New">wl.skydrive_update</font>: Lese- und Schreibzugriff auf Dateien</li> </ul> <p>Alle verfügbaren Scopes können <a title="Scopes and permissions - Live SDK" href="http://msdn.microsoft.com/en-us/library/hh243646.aspx" target="_blank">hier</a> eingesehen werden. Die gewünschten Scopes sind bei Verwendung des <font face="Courier New">SignInButton</font>-Steuerelementes über die Eigenschaft Scopes anzugeben:</p> <div id="codeSnippetWrapper" style="overflow: auto; cursor: text; font-size: 8pt; border-top: silver 1px solid; font-family: &#39;Courier New&#39;, courier, monospace; border-right: silver 1px solid; border-bottom: silver 1px solid; padding-bottom: 4px; direction: ltr; text-align: left; padding-top: 4px; padding-left: 4px; margin: 20px 0px 10px; border-left: silver 1px solid; line-height: 12pt; padding-right: 4px; max-height: 200px; width: 97.5%; background-color: #f4f4f4"> <div id="codeSnippet" style="border-top-style: none; overflow: visible; font-size: 8pt; border-left-style: none; font-family: &#39;Courier New&#39;, courier, monospace; border-bottom-style: none; color: black; padding-bottom: 0px; direction: ltr; text-align: left; padding-top: 0px; border-right-style: none; padding-left: 0px; line-height: 12pt; padding-right: 0px; width: 100%; background-color: #f4f4f4"> <pre style="border-top-style: none; overflow: visible; font-size: 8pt; border-left-style: none; font-family: &#39;Courier New&#39;, courier, monospace; border-bottom-style: none; color: black; padding-bottom: 0px; direction: ltr; text-align: left; padding-top: 0px; border-right-style: none; padding-left: 0px; margin: 0em; line-height: 12pt; padding-right: 0px; width: 100%; background-color: white"><span style="color: #0000ff">&lt;</span><span style="color: #800000">Controls:SignInButton</span> <span style="color: #ff0000">Scopes</span><span style="color: #0000ff">=&quot;wl.basic wl.signin wl.offline_access wl.skydrive_update&quot;</span><span style="color: #0000ff">/&gt;</span></pre> <!--CRLF--></div> </div> <p>Damit der Zugriff grundsätzlich funktioniert, muss im <a title="Live Connect Developer Center" href="https://manage.dev.live.com/" target="_blank">Live Connect Developer Center</a> eine Anwendung erstellt werden. Daraus resultiert eine <strong>ClientId</strong>, die in der gleichnamigen Eigenschaft zu setzen ist.</p> <blockquote> <p>Es ist zu beachten, dass für den Zugriff mittels Windows Phone in den API-Einstellungen zur Anwendung im Developer Center diese als mobile Anwendung deklariert werden muss.</p> </blockquote> <p>So sollte die Deklaration der Schaltfläche schlussendlich aussehen:</p> <div id="codeSnippetWrapper" style="overflow: auto; cursor: text; font-size: 8pt; border-top: silver 1px solid; font-family: &#39;Courier New&#39;, courier, monospace; border-right: silver 1px solid; border-bottom: silver 1px solid; padding-bottom: 4px; direction: ltr; text-align: left; padding-top: 4px; padding-left: 4px; margin: 20px 0px 10px; border-left: silver 1px solid; line-height: 12pt; padding-right: 4px; max-height: 200px; width: 97.5%; background-color: #f4f4f4"> <div id="codeSnippet" style="border-top-style: none; overflow: visible; font-size: 8pt; border-left-style: none; font-family: &#39;Courier New&#39;, courier, monospace; border-bottom-style: none; color: black; padding-bottom: 0px; direction: ltr; text-align: left; padding-top: 0px; border-right-style: none; padding-left: 0px; line-height: 12pt; padding-right: 0px; width: 100%; background-color: #f4f4f4"> <pre style="border-top-style: none; overflow: visible; font-size: 8pt; border-left-style: none; font-family: &#39;Courier New&#39;, courier, monospace; border-bottom-style: none; color: black; padding-bottom: 0px; direction: ltr; text-align: left; padding-top: 0px; border-right-style: none; padding-left: 0px; margin: 0em; line-height: 12pt; padding-right: 0px; width: 100%; background-color: white"><span style="color: #0000ff">&lt;</span><span style="color: #800000">Controls:SignInButton</span> <span style="color: #ff0000">Scopes</span><span style="color: #0000ff">=&quot;wl.basic wl.signin wl.offline_access wl.skydrive_update&quot;</span> <span style="color: #ff0000">SessionChanged</span><span style="color: #0000ff">=&quot;OnSkyDriveSessionChanged&quot;</span> <span style="color: #ff0000">ClientId</span><span style="color: #0000ff">=&quot;[ClientId]&quot;</span> <span style="color: #ff0000">Branding</span><span style="color: #0000ff">=&quot;Skydrive&quot;</span> <span style="color: #ff0000">TextType</span><span style="color: #0000ff">=&quot;SignIn&quot;</span><span style="color: #0000ff">/&gt;</span></pre> <!--CRLF--></div> </div> <p>Es gibt weitere Eigenschaften, die gesetzt werden sollten:</p> <ul> <li><font face="Courier New">Branding</font>: Das Icon und das Theme welches für die Schaltfläche gesetzt werden sollen. Im obigen Beispiel ist dies auf <font face="Courier New">Skydrive</font> gesetzt. Weitere Möglichkeiten sind <font face="Courier New">Hotmail</font>, <font face="Courier New">Messenger</font> und <font face="Courier New">Windows</font>.</li> <li><font face="Courier New">TextType</font>: Hierfür stehen unterschiedliche Varianten des anzuzeigenden Textes zur Verfügung. Eine Übersicht wird <a title="SignInButton.TextTypeProperty" href="http://msdn.microsoft.com/en-us/library/live/microsoft.live.controls.signinbutton.texttype.aspx" target="_blank">hier</a> gegeben.</li> </ul> <h2>Verbindung aufbauen</h2> <p>Um eine Verbindung aufzubauen ist lediglich auf die angezeigte Schaltfläche zu klicken. Wie bei der obigen Deklaration zu sehen ist, ist ein Ereignishandler auf das Ereignis <font face="Courier New">SessionChanged</font> zu setzen. Dieses Ereignis wird ausgelöst, wenn es dahingehend eine Änderung gibt.</p> <div id="codeSnippetWrapper" style="overflow: auto; cursor: text; font-size: 8pt; border-top: silver 1px solid; font-family: &#39;Courier New&#39;, courier, monospace; border-right: silver 1px solid; border-bottom: silver 1px solid; padding-bottom: 4px; direction: ltr; text-align: left; padding-top: 4px; padding-left: 4px; margin: 20px 0px 10px; border-left: silver 1px solid; line-height: 12pt; padding-right: 4px; max-height: 200px; width: 97.5%; background-color: #f4f4f4"> <div id="codeSnippet" style="border-top-style: none; overflow: visible; font-size: 8pt; border-left-style: none; font-family: &#39;Courier New&#39;, courier, monospace; border-bottom-style: none; color: black; padding-bottom: 0px; direction: ltr; text-align: left; padding-top: 0px; border-right-style: none; padding-left: 0px; line-height: 12pt; padding-right: 0px; width: 100%; background-color: #f4f4f4"> <pre style="border-top-style: none; overflow: visible; font-size: 8pt; border-left-style: none; font-family: &#39;Courier New&#39;, courier, monospace; border-bottom-style: none; color: black; padding-bottom: 0px; direction: ltr; text-align: left; padding-top: 0px; border-right-style: none; padding-left: 0px; margin: 0em; line-height: 12pt; padding-right: 0px; width: 100%; background-color: white"><span style="color: #0000ff">if</span> (e != <span style="color: #0000ff">null</span> &amp;&amp; e.Status == LiveConnectSessionStatus.Connected)</pre> <!--CRLF--> <pre style="border-top-style: none; overflow: visible; font-size: 8pt; border-left-style: none; font-family: &#39;Courier New&#39;, courier, monospace; border-bottom-style: none; color: black; padding-bottom: 0px; direction: ltr; text-align: left; padding-top: 0px; border-right-style: none; padding-left: 0px; margin: 0em; line-height: 12pt; padding-right: 0px; width: 100%; background-color: #f4f4f4">{</pre> <!--CRLF--> <pre style="border-top-style: none; overflow: visible; font-size: 8pt; border-left-style: none; font-family: &#39;Courier New&#39;, courier, monospace; border-bottom-style: none; color: black; padding-bottom: 0px; direction: ltr; text-align: left; padding-top: 0px; border-right-style: none; padding-left: 0px; margin: 0em; line-height: 12pt; padding-right: 0px; width: 100%; background-color: white"> ViewModel.ConnectClient(e.Session);</pre> <!--CRLF--> <pre style="border-top-style: none; overflow: visible; font-size: 8pt; border-left-style: none; font-family: &#39;Courier New&#39;, courier, monospace; border-bottom-style: none; color: black; padding-bottom: 0px; direction: ltr; text-align: left; padding-top: 0px; border-right-style: none; padding-left: 0px; margin: 0em; line-height: 12pt; padding-right: 0px; width: 100%; background-color: #f4f4f4">}</pre> <!--CRLF--> <pre style="border-top-style: none; overflow: visible; font-size: 8pt; border-left-style: none; font-family: &#39;Courier New&#39;, courier, monospace; border-bottom-style: none; color: black; padding-bottom: 0px; direction: ltr; text-align: left; padding-top: 0px; border-right-style: none; padding-left: 0px; margin: 0em; line-height: 12pt; padding-right: 0px; width: 100%; background-color: white"><span style="color: #0000ff">else</span></pre> <!--CRLF--> <pre style="border-top-style: none; overflow: visible; font-size: 8pt; border-left-style: none; font-family: &#39;Courier New&#39;, courier, monospace; border-bottom-style: none; color: black; padding-bottom: 0px; direction: ltr; text-align: left; padding-top: 0px; border-right-style: none; padding-left: 0px; margin: 0em; line-height: 12pt; padding-right: 0px; width: 100%; background-color: #f4f4f4">{</pre> <!--CRLF--> <pre style="border-top-style: none; overflow: visible; font-size: 8pt; border-left-style: none; font-family: &#39;Courier New&#39;, courier, monospace; border-bottom-style: none; color: black; padding-bottom: 0px; direction: ltr; text-align: left; padding-top: 0px; border-right-style: none; padding-left: 0px; margin: 0em; line-height: 12pt; padding-right: 0px; width: 100%; background-color: white"> ViewModel.DisconnectClient();</pre> <!--CRLF--> <pre style="border-top-style: none; overflow: visible; font-size: 8pt; border-left-style: none; font-family: &#39;Courier New&#39;, courier, monospace; border-bottom-style: none; color: black; padding-bottom: 0px; direction: ltr; text-align: left; padding-top: 0px; border-right-style: none; padding-left: 0px; margin: 0em; line-height: 12pt; padding-right: 0px; width: 100%; background-color: #f4f4f4"> <span style="color: #0000ff">if</span> (e.Error != <span style="color: #0000ff">null</span>)</pre> <!--CRLF--> <pre style="border-top-style: none; overflow: visible; font-size: 8pt; border-left-style: none; font-family: &#39;Courier New&#39;, courier, monospace; border-bottom-style: none; color: black; padding-bottom: 0px; direction: ltr; text-align: left; padding-top: 0px; border-right-style: none; padding-left: 0px; margin: 0em; line-height: 12pt; padding-right: 0px; width: 100%; background-color: white"> {</pre> <!--CRLF--> <pre style="border-top-style: none; overflow: visible; font-size: 8pt; border-left-style: none; font-family: &#39;Courier New&#39;, courier, monospace; border-bottom-style: none; color: black; padding-bottom: 0px; direction: ltr; text-align: left; padding-top: 0px; border-right-style: none; padding-left: 0px; margin: 0em; line-height: 12pt; padding-right: 0px; width: 100%; background-color: #f4f4f4"> <span style="color: #008000">// Error handling</span></pre> <!--CRLF--> <pre style="border-top-style: none; overflow: visible; font-size: 8pt; border-left-style: none; font-family: &#39;Courier New&#39;, courier, monospace; border-bottom-style: none; color: black; padding-bottom: 0px; direction: ltr; text-align: left; padding-top: 0px; border-right-style: none; padding-left: 0px; margin: 0em; line-height: 12pt; padding-right: 0px; width: 100%; background-color: white"> }</pre> <!--CRLF--> <pre style="border-top-style: none; overflow: visible; font-size: 8pt; border-left-style: none; font-family: &#39;Courier New&#39;, courier, monospace; border-bottom-style: none; color: black; padding-bottom: 0px; direction: ltr; text-align: left; padding-top: 0px; border-right-style: none; padding-left: 0px; margin: 0em; line-height: 12pt; padding-right: 0px; width: 100%; background-color: #f4f4f4">}</pre> <!--CRLF--></div> </div> <p>Hier wird auf ein <font face="Courier New">ViewModel</font> verwiesen, welches in meiner Anwendung verwendet wird. Dieses stellt eine Methode <font face="Courier New">ConnectClient</font> zur Verfügung. Darin wird unter anderem folgendes vorgenommen um den Client zu initialisieren:</p> <div id="codeSnippetWrapper" style="overflow: auto; cursor: text; font-size: 8pt; border-top: silver 1px solid; font-family: &#39;Courier New&#39;, courier, monospace; border-right: silver 1px solid; border-bottom: silver 1px solid; padding-bottom: 4px; direction: ltr; text-align: left; padding-top: 4px; padding-left: 4px; margin: 20px 0px 10px; border-left: silver 1px solid; line-height: 12pt; padding-right: 4px; max-height: 200px; width: 97.5%; background-color: #f4f4f4"> <div id="codeSnippet" style="border-top-style: none; overflow: visible; font-size: 8pt; border-left-style: none; font-family: &#39;Courier New&#39;, courier, monospace; border-bottom-style: none; color: black; padding-bottom: 0px; direction: ltr; text-align: left; padding-top: 0px; border-right-style: none; padding-left: 0px; line-height: 12pt; padding-right: 0px; width: 100%; background-color: #f4f4f4"> <pre style="border-top-style: none; overflow: visible; font-size: 8pt; border-left-style: none; font-family: &#39;Courier New&#39;, courier, monospace; border-bottom-style: none; color: black; padding-bottom: 0px; direction: ltr; text-align: left; padding-top: 0px; border-right-style: none; padding-left: 0px; margin: 0em; line-height: 12pt; padding-right: 0px; width: 100%; background-color: white"><span style="color: #0000ff">private</span> LiveConnectClient skydriveClient = <span style="color: #0000ff">null</span>;</pre> <!--CRLF--> <pre style="border-top-style: none; overflow: visible; font-size: 8pt; border-left-style: none; font-family: &#39;Courier New&#39;, courier, monospace; border-bottom-style: none; color: black; padding-bottom: 0px; direction: ltr; text-align: left; padding-top: 0px; border-right-style: none; padding-left: 0px; margin: 0em; line-height: 12pt; padding-right: 0px; width: 100%; background-color: #f4f4f4">&#160;</pre> <!--CRLF--> <pre style="border-top-style: none; overflow: visible; font-size: 8pt; border-left-style: none; font-family: &#39;Courier New&#39;, courier, monospace; border-bottom-style: none; color: black; padding-bottom: 0px; direction: ltr; text-align: left; padding-top: 0px; border-right-style: none; padding-left: 0px; margin: 0em; line-height: 12pt; padding-right: 0px; width: 100%; background-color: white"><span style="color: #0000ff">public</span> <span style="color: #0000ff">void</span> ConnectClient(LiveConnectSession session)</pre> <!--CRLF--> <pre style="border-top-style: none; overflow: visible; font-size: 8pt; border-left-style: none; font-family: &#39;Courier New&#39;, courier, monospace; border-bottom-style: none; color: black; padding-bottom: 0px; direction: ltr; text-align: left; padding-top: 0px; border-right-style: none; padding-left: 0px; margin: 0em; line-height: 12pt; padding-right: 0px; width: 100%; background-color: #f4f4f4">{</pre> <!--CRLF--> <pre style="border-top-style: none; overflow: visible; font-size: 8pt; border-left-style: none; font-family: &#39;Courier New&#39;, courier, monospace; border-bottom-style: none; color: black; padding-bottom: 0px; direction: ltr; text-align: left; padding-top: 0px; border-right-style: none; padding-left: 0px; margin: 0em; line-height: 12pt; padding-right: 0px; width: 100%; background-color: white"> <span style="color: #0000ff">this</span>.skydriveClient = <span style="color: #0000ff">new</span> LiveConnectClient(session);</pre> <!--CRLF--> <pre style="border-top-style: none; overflow: visible; font-size: 8pt; border-left-style: none; font-family: &#39;Courier New&#39;, courier, monospace; border-bottom-style: none; color: black; padding-bottom: 0px; direction: ltr; text-align: left; padding-top: 0px; border-right-style: none; padding-left: 0px; margin: 0em; line-height: 12pt; padding-right: 0px; width: 100%; background-color: #f4f4f4">}</pre> <!--CRLF--></div> </div> <p>Ab nun können weitere Operationen ausgeführt werden. Eine genaue Beschreibung hinsichtlich Ordner und Dateien findet sich im Beitrag <a title="Working with Microsoft SkyDrive folders and files" href="http://msdn.microsoft.com/en-us/library/live/hh826531.aspx#uploading_files" target="_blank">Working with Microsoft SkyDrive folders and files</a>.</p> <blockquote> <p><strong>Hinweis</strong>: Sehr hilfreich ist das <a title="Interaktives Live SDK" href="http://isdk.dev.live.com/" target="_blank">interaktive Live SDK</a>. Darüber kann die API ohne echtes Setup kennengelernt werden.</p> </blockquote> <h2>Fazit</h2> <p>Mit Hilfe des Live SDK kann sehr einfach eine Verbindung zu SkyDrive aufgenommen werden. Die Verwendung selbst ist einfach, allerdings mit einigen kleinen Gemeinheiten deren Lösung an unterschiedlichsten Stellen allerdings gefunden wird. </p> http://devtyr.norberteder.com/post/Windows-Phone-Integration-SkyDrive-leicht-gemacht.aspx Norbert Eder [MVP] 4252 2013-04-17T15:57:19 Controlling a hardware prototype with your Windows Phone <p><i>This blog post was authored by </i><a href="https://twitter.com/reitanerik" target="_blank">Erik Reitan</a><i></i><i>, a programming writer on the Windows Phone developer content team.</i> <p><i></i> <p><i>- Adam</i> <hr> <p>You’re already familiar with <a href="http://msdn.microsoft.com/library/windowsphone/develop/ff402529(v=vs.105).aspx" target="_blank">creating</a> great <a href="http://www.windowsphone.com/en-us/store/featured-apps" target="_blank">apps</a> for Windows Phone, and porting your apps from iOS or Android, but did you know that you can build .NET hardware prototype devices to integrate with your Windows Phone? <p>Using a prototyping platform for small electronic devices, such as <a href="http://www.netmf.com/gadgeteer/" target="_blank">.NET Gadgeteer</a> or <a href="http://www.netduino.com/netduino/" target="_blank">Netduino</a>, you can create interesting hardware projects. Using <a href="http://msdn.microsoft.com/vstudio/hh341490.aspx" target="_blank">C#</a>, the <a href="http://netmf.codeplex.com/" target="_blank">.NET Micro Framework</a>‎, and <a href="http://msdn.microsoft.com/vstudio" target="_blank">Visual Studio</a>, you can develop your own hardware prototype and use the capabilities of your Windows Phone to interact with the hardware. <p>The following video shows how Matt <a href="https://twitter.com/RogueCode" target="_blank">@RogueCode</a> used his Windows Phone to control a maze using Bluetooth and Netduino.<br><br><object width="425" height="355"><param name="movie" value="http://www.youtube.com/v/q_nzCgNW28g&amp;hl=en"></param><param name="wmode" value="transparent"></param><embed src="http://www.youtube.com/v/q_nzCgNW28g&amp;hl=en" type="application/x-shockwave-flash" wmode="transparent" width="425" height="355"></embed></object> <p>For more details about Matt’s project, read <a href="http://channel9.msdn.com/Niners/gduncan411" target="_blank">Greg Duncan’s</a> <a href="http://channel9.msdn.com/coding4fun/blog/An-amazing-maze-with-some-Windows-Phone-8-Netduino-servos-and-some-3D-printing-for-flavor" target="_blank">Coding4Fun blog post on Channel 9</a>. <p>Here’s another video that shows how Marco Minerva <a href="http://www.twitter.com/marcominerva" target="_blank">@MarcoMinerva</a> used his Windows Phone to control a rover with Bluetooth and.NET Gadgeteer. Very cool!</p> <p><object width="425" height="355"><param name="movie" value="http://www.youtube.com/v/ono714-H8cg&amp;hl=en"></param><param name="wmode" value="transparent"></param><embed src="http://www.youtube.com/v/ono714-H8cg&amp;hl=en" type="application/x-shockwave-flash" wmode="transparent" width="425" height="355"></embed></object></p> <p>For complete details about Marco’s project, see the related <a href="http://channel9.msdn.com/coding4fun/blog/Building-a-Windows-Phone-controlled-Wi-Fi-Gadgeteer-Image-Streaming-Robot" target="_blank">Coding4Fun blog post on Channel 9</a>. <p>Here’s another video by Matt that shows how you can combined Windows Phone, Netduino, a sonar sensor, and Bluetooth for some interesting results. </p> <p><object width="425" height="355"><param name="movie" value="http://www.youtube.com/v/jtNh3nvP8xo&amp;hl=en"></param><param name="wmode" value="transparent"></param><embed src="http://www.youtube.com/v/jtNh3nvP8xo&amp;hl=en" type="application/x-shockwave-flash" wmode="transparent" width="425" height="355"></embed></object></p> <p>For more details about Matt’s project, see the following <a href="http://channel9.msdn.com/coding4fun/blog/What-does-the-Imperial-March-Windows-Phone-8-Netduino-Bluetooth-and-Sonar-have-in-common-This" target="_blank">Coding4Fun blog post on Channel 9</a>. <p>Each of these Windows Phone projects provide the steps, code, and details necessary to build the project yourself, through the above links. Possibly, these examples could lead to your own hardware prototype. Let us know what you create. <div style="clear:both;"></div><img src="http://blogs.windows.com/aggbug.aspx?PostID=588299&AppID=5384&AppType=Weblog&ContentType=0" width="1" height="1"> http://blogs.windows.com/windows_phone/b/wpdev/archive/2013/04/16/controlling-a-hardware-prototype-with-your-windows-phone.aspx Windows Phone Dev Blog 4251 2013-04-17T00:54:54 A Data Binding to the Text Property of Run? <p> Sometimes a programmer will encounter a situation where it's convenient to embed a changeable data value in a paragraph of text, and for this paragraph to re-wrap itself when the text representation of this data value acquires a different character width. </p><p>... more ...</p> http://www.charlespetzold.com/blog/2013/04/A-Data-Binding-to-the-Text-Property-of-Run.html Charles Petzold 4250 2013-04-15T14:03:23 Team Foundation Services - Scrum-Template im Einsatz <p>Im Beitrag “<a title="Team Foundation Services - Unterstützung für Git unter der Lupe" href="http://devtyr.norberteder.com/post/Team-Foundation-Services-Unterstutzung-fur-Git-unter-der-Lupe.aspx">Team Foundation Services - Unterstützung für Git unter der Lupe</a>” habe ich mich bereits mit den Team Foundation Services beschäftigt - genauer gesagt mit der Unterstützung für Git. Dieser Beitrag wendet sich nun der Scrum-Prozessvorlage zu. Die Team Foundation Services bieten mehrere Prozess-Vorlagen, für mich ist zum aktuellen Zeitpunkt jedoch nur die Scrum-Vorlage wirklich interessant. Zu den weiteren Vorlagen wird es daher in diesem Beitrag keine zusätzlichen Informationen geben. Dabei ist für mich von Interesse, welche Funktionalitäten diese Vorlage tatsächlich anbietet und wie der Umgang damit hinsichtlich Verwendbarkeit ist.</p> <p>Im Menüpunkt <strong>WORK</strong> finden sich die Zugänge zum <em>Product Backlog</em>, zum aktuellen <em>Board</em> und der mir zugeordneten <em>Work Items</em>.</p> <h2>Product Backlog</h2> <p>Im Product Backlog können sämtliche User Stories verwaltet werden. Dieses ist sehr einfach gehalten und zeigt neben der Reihenfolge auch den Titel, den Status, den Aufwand, den Iterationspfad und gesetzte Tags an:</p> <p><a href="http://devtyr.norberteder.com/image.axd?picture=image_233.png"><img title="Team Foundation Services - Product Backlog" style="border-left-width: 0px; border-right-width: 0px; background-image: none; border-bottom-width: 0px; padding-top: 0px; padding-left: 0px; display: inline; padding-right: 0px; border-top-width: 0px" border="0" alt="Team Foundation Services - Product Backlog" src="http://devtyr.norberteder.com/image.axd?picture=image_thumb_156.png" width="700" height="362" /></a></p> <p>Die Spalten der Liste können nach eigenem Bedarf angepasst werden. Es stehen zahlreiche Möglichkeiten zur Verfügung:</p> <p><a href="http://devtyr.norberteder.com/image.axd?picture=image_226.png"><img title="Team Foundation Services - Product Backlog Columns" style="border-left-width: 0px; border-right-width: 0px; background-image: none; border-bottom-width: 0px; padding-top: 0px; padding-left: 0px; display: inline; padding-right: 0px; border-top-width: 0px" border="0" alt="Team Foundation Services - Product Backlog Columns" src="http://devtyr.norberteder.com/image.axd?picture=image_thumb_149.png" width="500" height="321" /></a></p> <p>Einträge können in dieser Liste der Drag &amp; Drop verschoben und so die Reihenfolge angepasst werden. Über das Zeilenmenü kann ein gewähltes Element geöffnet werden um Detailinformationen erfassen zu können:</p> <p><a href="http://devtyr.norberteder.com/image.axd?picture=image_224.png"><img title="Team Foundation Services - Item Detail" style="border-left-width: 0px; border-right-width: 0px; background-image: none; border-bottom-width: 0px; padding-top: 0px; padding-left: 0px; display: inline; padding-right: 0px; border-top-width: 0px" border="0" alt="Team Foundation Services - Item Detail" src="http://devtyr.norberteder.com/image.axd?picture=image_thumb_147.png" width="500" height="327" /></a></p> <p>Die Möglichkeiten an dieser Stelle sind vielfältig. Erfasst werden kann:</p> <ul> <li>Iteration </li> <li>Zugewiesene Person </li> <li>Status </li> <li>Grund </li> <li>Aufwand </li> <li>Business-Wert </li> <li>Backlog Priorität </li> <li>Beschreibung </li> <li>Storyboards </li> <li>Testfälle </li> <li>Aufgaben </li> <li>Akzeptanzkritierien </li> <li>Historie </li> <li>Links </li> <li>Anhänge </li> </ul> <p>Bei der Eingabe von neuen Items wird eine Unterscheidung zwischen Backlog-Eintrag und Bug vorgenommen.</p> <p>Auf Basis der eingetragenen Aufwände (Schätzungen whatever) kann auch eine <strong>Prognose</strong> erstellt werden. Diese ist in der Standardeinstellung deaktiviert, lässt sich jedoch durch einen einzigen Klick sofort aktivieren:</p> <p><a href="http://devtyr.norberteder.com/image.axd?picture=image10.png"><img title="Team Foundation Service - Prognose/Forecast" style="border-left-width: 0px; border-right-width: 0px; background-image: none; border-bottom-width: 0px; padding-top: 0px; padding-left: 0px; display: inline; padding-right: 0px; border-top-width: 0px" border="0" alt="Team Foundation Service - Prognose/Forecast" src="http://devtyr.norberteder.com/image.axd?picture=image10_thumb.png" width="700" height="353" /></a></p> <p>Im Standard wird eine Velocity (also Teamgeschwindigkeit) von 10 angenommen (in meinem Fall mit einer Person im Team des Tests). Dieser Wert kann entsprechend angepasst werden. Alle Backlog-Einträge werden daher entsprechend ihrer Reihenfolge in Sprints unterteilt. Dadurch ergibt sich natürlich auch eine schöne Sicht, wie viele Sprints für die gesamte Umsetzung des Backlogs benötigt werden.</p> <p>Für das Product Backlog steht ebenfalls eine <strong>Board</strong>-Ansicht zur Verfügung. Diese zeigt die Einträge aus dem Backlog und ihren Status an:</p> <p><a href="http://devtyr.norberteder.com/image.axd?picture=image20.png"><img title="Team Foundation Services - Product Backlog Board" style="border-left-width: 0px; border-right-width: 0px; background-image: none; border-bottom-width: 0px; padding-top: 0px; padding-left: 0px; display: inline; padding-right: 0px; border-top-width: 0px" border="0" alt="Team Foundation Services - Product Backlog Board" src="http://devtyr.norberteder.com/image.axd?picture=image20_thumb.png" width="700" height="248" /></a></p> <p>Auch hier können die einzelnen Listen (Spalten) konfiguriert werden.</p> <p><a href="http://devtyr.norberteder.com/image.axd?picture=image_228.png"><img title="Team Foundation Services - Product Backlog Board Einstellungen" style="border-left-width: 0px; border-right-width: 0px; background-image: none; border-bottom-width: 0px; padding-top: 0px; padding-left: 0px; display: inline; padding-right: 0px; border-top-width: 0px" border="0" alt="Team Foundation Services - Product Backlog Board Einstellungen" src="http://devtyr.norberteder.com/image.axd?picture=image_thumb_151.png" width="500" height="260" /></a></p> <blockquote> <p>Auf diese Einstellungen sollte unbedingt ein Blick geworfen werden, da wohl nicht sehr viele mit einem vordefinierten WIP-Limit arbeiten wollen.</p> </blockquote> <h2>Sprints verwalten</h2> <p>Über das Kontextmenü oder aber das Zeilenmenü können einzelne Einträge bestimmten Iterationen zugeordnet werden (eine Mehrfachauswahl scheint nicht möglich zu sein). Die Änderung wird sofort im Product Backlog ersichtlich. Gleichzeitig wird der gewünschte Sprint aktualisiert. Ein mögliches Ergebnis kann wie folgt aussehen:</p> <p><a href="http://devtyr.norberteder.com/image.axd?picture=image_234.png"><img title="Team Foundation Services - Sprint" style="border-left-width: 0px; border-right-width: 0px; background-image: none; border-bottom-width: 0px; padding-top: 0px; padding-left: 0px; display: inline; padding-right: 0px; border-top-width: 0px" border="0" alt="Team Foundation Services - Sprint" src="http://devtyr.norberteder.com/image.axd?picture=image_thumb_157.png" width="700" height="152" /></a></p> <p>In der Headerleiste ist nun zu sehen, dass noch keine Sprintdaten erfasst wurden. Unter <strong>Set Date</strong> können nun das Start- und Enddatum des aktuellen Sprints gesetzt werden. Ebenfalls ist zu beachten, dass diese Liste eine weitere Ausprägung <strong>Capacity</strong> hat. Darunter können die Ressourcen für diesen Sprint geplant werden:</p> <p><a href="http://devtyr.norberteder.com/image.axd?picture=image_235.png"><img title="Team Foundation Services - Ressourcenplanung" style="border-left-width: 0px; border-right-width: 0px; background-image: none; border-bottom-width: 0px; padding-top: 0px; padding-left: 0px; display: inline; padding-right: 0px; border-top-width: 0px" border="0" alt="Team Foundation Services - Ressourcenplanung" src="http://devtyr.norberteder.com/image.axd?picture=image_thumb_158.png" width="700" height="262" /></a></p> <p>In diesem Beispiel ist schön zu sehen, dass die Ressourcen für die Umsetzung nicht ausreichen. Dies wird sofort zur Ansicht gebracht und kann für die Anpassung der Planung verwendet werden.</p> <p>Eine Gesamtplanung der Releases und dazugehörigen Sprints ist auf der <strong>Overview</strong> unter dem Menüpunkt <strong>Configure schedule and iterations</strong> verfügbar. Dies sieht dann so aus:</p> <p><a href="http://devtyr.norberteder.com/image.axd?picture=image_237.png"><img title="Team Foundation Services - Configure Schedsule and Iterations" style="border-left-width: 0px; border-right-width: 0px; background-image: none; border-bottom-width: 0px; padding-top: 0px; padding-left: 0px; display: inline; padding-right: 0px; border-top-width: 0px" border="0" alt="Team Foundation Services - Configure Schedsule and Iterations" src="http://devtyr.norberteder.com/image.axd?picture=image_thumb_160.png" width="500" height="465" /></a></p> <p>In der ersten Liste besteht nun die Möglichkeit, jedem Backlog-Item Tasks hinzuzufügen, dies erfolgt über das + Icon. Die auszufüllenden Felder entsprechen denen eines Backlog-Eintrages, anstatt eines Aufwandes wird der verbleibende Aufwand eingetragen (diese erfolgen in Stunden):</p> <p><a href="http://devtyr.norberteder.com/image.axd?picture=image_231.png"><img title="Team Foundation Services - Task hinzufügen" style="border-left-width: 0px; border-right-width: 0px; background-image: none; border-bottom-width: 0px; padding-top: 0px; padding-left: 0px; display: inline; padding-right: 0px; border-top-width: 0px" border="0" alt="Team Foundation Services - Task hinzufügen" src="http://devtyr.norberteder.com/image.axd?picture=image_thumb_154.png" width="500" height="283" /></a></p> <p>Aus den vorhandenen Backlog-Einträgen und den dazugehörigen Tasks wird automatisch ein Board generiert:</p> <p><a href="http://devtyr.norberteder.com/image.axd?picture=image_236.png"><img title="Team Foundation Services - Sprint Board" style="border-left-width: 0px; border-right-width: 0px; background-image: none; border-bottom-width: 0px; padding-top: 0px; padding-left: 0px; display: inline; padding-right: 0px; border-top-width: 0px" border="0" alt="Team Foundation Services - Sprint Board" src="http://devtyr.norberteder.com/image.axd?picture=image_thumb_159.png" width="700" height="242" /></a></p> <p>Dieses zeigt übersichtlich den aktuellen Stand an und kann natürlich dazu verwendet werden, den Status der einzelnen Punkte zu verändern.</p> <blockquote> <p>Eine für mich interessante Frage ist nun: Muss ich als Entwickler die Punkte im Board verschieben, oder funktioniert das auch direkt via Visual Studio. Der Vorteil läge natürlich darin, dass ich mein Hauptwerkzeug nicht verlassen muss. Ein weiterer Vorteil läge darin, dass dieser Schritt bei einer automatischen Durchführung nicht vergessen werden kann und das Board somit tatsächlich immer aktuelle sein würde.</p> </blockquote> <h2>Team Foundation Services via Visual Studio</h2> <p>Um nun mit den Work Items etc. der Team Foundation Services arbeiten zu können, ist das Service zu verbinden. Hierzu ist ein “Team Foundation Server” hinzu zu fügen. Die URL entspricht dem Link zum eigenen Workspace:</p> <p><a href="http://devtyr.norberteder.com/image.axd?picture=image_238.png"><img title="Visual Studio - Add Team Foundation Server" style="border-left-width: 0px; border-right-width: 0px; background-image: none; border-bottom-width: 0px; padding-top: 0px; padding-left: 0px; display: inline; padding-right: 0px; border-top-width: 0px" border="0" alt="Visual Studio - Add Team Foundation Server" src="http://devtyr.norberteder.com/image.axd?picture=image_thumb_161.png" width="500" height="327" /></a></p> <p>Im Anschluss ist das gewünschte Team Project auszuwählen:</p> <p><a href="http://devtyr.norberteder.com/image.axd?picture=image_239.png"><img title="Visual Studio - Team Project auswählen" style="border-left-width: 0px; border-right-width: 0px; background-image: none; border-bottom-width: 0px; padding-top: 0px; padding-left: 0px; display: inline; padding-right: 0px; border-top-width: 0px" border="0" alt="Visual Studio - Team Project auswählen" src="http://devtyr.norberteder.com/image.axd?picture=image_thumb_162.png" width="500" height="383" /></a></p> <p>Nun kann via <strong>Team</strong> - <strong>New Query</strong> eine Abfrage auf den aktuell geplanten Sprint vorgenommen werden:</p> <p><a href="http://devtyr.norberteder.com/image.axd?picture=image_240.png"><img title="Visual Studio - Work Items des aktuellen Sprints" style="border-left-width: 0px; border-right-width: 0px; background-image: none; border-bottom-width: 0px; padding-top: 0px; padding-left: 0px; display: inline; padding-right: 0px; border-top-width: 0px" border="0" alt="Visual Studio - Work Items des aktuellen Sprints" src="http://devtyr.norberteder.com/image.axd?picture=image_thumb_163.png" width="700" height="236" /></a></p> <p>Alle relevanten Work Items können damit abgegriffen werden.</p> <p>Es werden automatisch Shared Queries angelegt, welche über Visual Studio abgegriffen werden können. Diese betreffen den aktuellen Sprint, d.h. eine obige Query muss nicht zwingend vorgenommen werden. Zu den Queries gelangt man via <strong>Team Explorer</strong> und <strong>Work Items</strong>.</p> <p><a href="http://devtyr.norberteder.com/image.axd?picture=image_241.png"><img title="Visual Studio Work Items" style="border-left-width: 0px; border-right-width: 0px; background-image: none; border-bottom-width: 0px; padding-top: 0px; padding-left: 0px; display: inline; padding-right: 0px; border-top-width: 0px" border="0" alt="Visual Studio Work Items" src="http://devtyr.norberteder.com/image.axd?picture=image_thumb_164.png" width="500" height="346" /></a></p> <p>Mit den Work Items kann nun direkt aus Visual Studio gearbeitet werden. </p> <blockquote> <p>Änderungen werden nicht automatisch an ein Changeset gehängt, dies kann aber sehr einfach durch einen Link vom Work Item auf das jeweilige Changeset (oder mehrere) vorgenommen werden.</p> </blockquote> <p>Alle gemachten Änderungen sind sofort online ersichtlich.</p> <h2>Fazit</h2> <p>An einigen Stellen hakt es schon noch ein wenig. So würde ich mir wünschen, dass sich ein Work Item automatisch an das jeweilige Changeset (oder an die Changesets) hängt. Auch die Git-Integration im Team Explorer braucht definitiv noch Verbesserungen hinsichtlich der Usability. Insgesamt lässt es sich aber ganz gut damit arbeiten. Jetzt fehlt noch ein Test mit einer Real-World-Solution und der Preview Funktionen hinsichtlich Build und Test Cases. Bis jetzt sehe ich jedoch keinen Grund der gegen die Nutzung der Team Foundation Services mit Git-Repository spricht.</p> http://devtyr.norberteder.com/post/Team-Foundation-Services-Scrum-Template-im-Einsatz.aspx Norbert Eder [MVP] 4249 2013-04-15T09:08:00 TechEd India, the India developer communities, and the Taj Mahal <p>In the second half of March, I traveled to India (Bangalore, Delhi, and Pune) to speak at TechEd India and TechDays Delhi about Windows 8 app development.</p> <p><a href="http://10rem.net/media/87999/Windows-Live-Writer_TechEd-India-and-the-India-developer-com_8692_image_17.png" target="_blank"><img title="image" style="border-left-width: 0px; border-right-width: 0px; background-image: none; border-bottom-width: 0px; padding-top: 0px; padding-left: 0px; display: inline; padding-right: 0px; border-top-width: 0px" border="0" alt="image" src="http://10rem.net/media/88004/Windows-Live-Writer_TechEd-India-and-the-India-developer-com_8692_image_thumb_2.png" width="650" height="715" /></a></p> <p>I flew from Dulles International in VA to Charles De Gaulle in France, where I met up with my colleague Nisha Singh, who had flown from Seattle. From there, we flew Air France to Bangalore for TechEd India Bangalore, then hopped a Jet Airways flight to New Delhi for TechDays Delhi. While there, I took a car to Agra over the weekend (more on that shortly). Then another Jet Airways flight from Delhi to Pune for TechEd India Pune. And finally, a short flight from Pune to Mumbai before the 16 1/2 hour flight from Mumbai to Newark NJ, and the prop plane from Newark to Dulles.</p> <h3>What I had expected</h3> <p>Before I went away to India, my only experience with developers in India was the lowest-price outsourcing companies I often had to clean up after as a consultant, the outsourced call center tech support folks I'll sell a kidney to avoid, and the numerous "send me the codes" emails I get. So, I had some pre-conceived notions as to what to expect from the developer community.</p> <p><strong>I'm happy to say I was completely wrong.</strong></p> <p><strong>The developer community in India is strong, professional, and enthusiastic.</strong> The people I met at TechEd India were serious developers, building awesome apps and the usual bevvy of line of business apps internal to companies. The developer community in Pune, for example, is huge. The Pune .NET user group community (PUG) has membership in the mid 4 digits. Yep. That's pretty big. I was lucky to have been able to meet with the leads (my flight was delayed, so I arrived at the hotel just in time.)</p> <p><a href="http://10rem.net/media/88009/Windows-Live-Writer_TechEd-India-and-the-India-developer-com_8692_image_14.png" target="_blank"><img title="image" style="border-left-width: 0px; border-right-width: 0px; background-image: none; border-bottom-width: 0px; padding-top: 0px; padding-left: 0px; display: inline; padding-right: 0px; border-top-width: 0px" border="0" alt="image" src="http://10rem.net/media/88014/Windows-Live-Writer_TechEd-India-and-the-India-developer-com_8692_image_thumb_1.png" width="650" height="248" /></a></p> <p><em>Photo by Vikram Pendse</em></p> <h3>TechEd and TechDays</h3> <p>TechEd India covered Bangalore and Pune. TechDays India happened in Delhi in between the two.</p> <p>These events are smaller than TechEd US and TechEd Europe, but the production values are just as high, with even a few extras thrown in. A couple years ago, a monkey snuck in the back door of an event hall and perched on top of the screen, watching the demos. The original code monkey :)</p> <p>Here's the keynote hall for TechEd Bangalore. This was located in an outside stand-alone building.</p> <p><img title="image" style="border-left-width: 0px; border-right-width: 0px; background-image: none; border-bottom-width: 0px; padding-top: 0px; padding-left: 0px; display: inline; padding-right: 0px; border-top-width: 0px" border="0" alt="image" src="http://10rem.net/media/88019/Windows-Live-Writer_TechEd-India-and-the-India-developer-com_8692_image_12.png" width="650" height="242" /></p> <p>TechEd Pune was even larger, located inside a hotel: the JW Marriott Pune. Here's Nisha presenting to a full house:</p> <p><img title="image" style="border-top: 0px; border-right: 0px; background-image: none; border-bottom: 0px; padding-top: 0px; padding-left: 0px; border-left: 0px; display: inline; padding-right: 0px" border="0" alt="image" src="http://10rem.net/media/88024/Windows-Live-Writer_TechEd-India-and-the-India-developer-com_8692_image_28.png" width="650" height="366" /></p> <p>I think this was from my talk on XAML performance. I must have been explaining something pretty serious when this photo was taken :)</p> <p><a href="http://10rem.net/media/88029/Windows-Live-Writer_TechEd-India-and-the-India-developer-com_8692_image_21.png" target="_blank"><img title="Dig the Zelda / LOTR mashup shirt." style="border-left-width: 0px; border-right-width: 0px; background-image: none; border-bottom-width: 0px; padding-top: 0px; padding-left: 0px; display: inline; padding-right: 0px; border-top-width: 0px" border="0" alt="Dig the Zelda / LOTR mashup shirt." src="http://10rem.net/media/88034/Windows-Live-Writer_TechEd-India-and-the-India-developer-com_8692_image_thumb_4.png" width="650" height="324" /></a></p> <p><em>(This photo from Bangalore was shared to me without attribution. If you are the photographer, please let me know.)</em></p> <p>The "Stump the Speaker" panels were my favorite part. In this photo, from Bangalore, I had so much Q&amp;A at the end of my session, I arrived late to the panel, and got the honorary tall seat.</p> <p><img title="image" style="border-left-width: 0px; border-right-width: 0px; background-image: none; border-bottom-width: 0px; padding-top: 0px; padding-left: 0px; display: inline; padding-right: 0px; border-top-width: 0px" border="0" alt="image" src="http://10rem.net/media/88039/Windows-Live-Writer_TechEd-India-and-the-India-developer-com_8692_image_24.png" width="650" height="349" /></p> <p><em>Photograph by Microsoft, India</em></p> <p>TechDays Delhi was a free event, so it attracted a lot of local students. I was pleased to speak with this audience, as getting our tools, and our guidance on quality apps in front of them is really important. Students are responsible for some of the most exciting startups and some of the coolest apps.</p> <p>Finally, one thing that I thought was done extremely well at TechEd India was the keynote by four children. Take a moment and watch it now.</p> <div id="scid:5737277B-5D6D-4f48-ABFC-DD9C333F4C5D:885a58c5-5bb7-4d11-ac22-b54e25fe0df3" class="wlWriterEditableSmartContent" style="float: none; padding-bottom: 0px; padding-top: 0px; padding-left: 0px; margin: 0px; display: inline; padding-right: 0px"> <div id="3ef2c6ed-982c-4033-b4b3-298208fe0adc" style="margin: 0px; padding: 0px; display: inline;"><a href="http://www.youtube.com/watch?v=wiuY97sv8UA" target="_new"><img src="http://10rem.net/media/88044/Windows-Live-Writer_TechEd-India-and-the-India-developer-com_8692_video5e5285468bf7.jpg" style="border-style: none" galleryimg="no" onload="var downlevelDiv = document.getElementById('3ef2c6ed-982c-4033-b4b3-298208fe0adc'); downlevelDiv.innerHTML = &quot;&lt;div&gt;&lt;object width=\&quot;645\&quot; height=\&quot;362\&quot;&gt;&lt;param name=\&quot;movie\&quot; value=\&quot;http://www.youtube.com/v/wiuY97sv8UA?hl=en&amp;hd=1\&quot;&gt;&lt;\/param&gt;&lt;embed src=\&quot;http://www.youtube.com/v/wiuY97sv8UA?hl=en&amp;hd=1\&quot; type=\&quot;application/x-shockwave-flash\&quot; width=\&quot;645\&quot; height=\&quot;362\&quot;&gt;&lt;\/embed&gt;&lt;\/object&gt;&lt;\/div&gt;&quot;;" alt="" /></a></div> <div style="width:645px;clear:both;font-size:.8em">The must-see demo from TechEd India</div> </div> <p>My session decks for the TechEd events are available here: <a title="https://india.msteched.com/" href="https://india.msteched.com/">https://india.msteched.com/</a> Click on "downloads" at the top right. My three sessions were:</p> <ul> <li>Addressing Performance in Windows 8 XAML apps (day 1, architect track)</li> <li>Tips and Techniques for Building High Quality Windows 8 apps (day 2, Windows 8 track)</li> <li>Smoothly Navigating the Windows Store Submission, Certification, and Listing Process (day 2, Windows 8 track)</li> </ul> <p>Recordings will be up soon, as I understand it. I'd recommend watching Bangalore, as Pune had to squeeze sessions to account for keynote overrun, so the sessions are a bit compressed.</p> <h3>PCs and phones: an observation</h3> <p>Here are some interesting observations about PCs, phones, and tablets in India:</p> <ul> <li>Almost all developers have a smart phone</li> <li>iPhone is not the number one smart phone, or even the number two smart phone in India, despite their advertising there. <ul> <li><a href="http://articles.economictimes.indiatimes.com/2012-01-24/news/30659420_1_nokia-smartphone-feature-phones"> Look who's doing well in India</a> and more recent news&nbsp; <a href="http://ibnlive.in.com/news/nokia-still-the-indian-mobile-phone-market-leader-with-218-pc-share/382650-11.html"> here</a></li> <li>I saw only a single iPhone at the events, and not a single iPad. This includes the event the students attended.</li> <li>Total phone ownership is approximately 12x any sort of PC or Mac ownership</li> </ul> </li> <li>For car drivers and non-IT folks, that little indestructible Nokia was what I usually saw. Feature phones still dominate in India.</li> <li>I saw a number of high end Android tablets and some Surface w/ Windows RT</li> </ul> <p>This data all came from the local folks and my personal observations, so use it only as anecdotal data. I did see a number of Windows Phones out in the wild, outside of the events. The HTC 8x in blue seems to be quite popular there (this also happens to be the phone I own).</p> <p>Students generally get new PCs before they go to university, but (anecdotally) rarely have them available to them at earlier grades.</p> <p><strong>All of this helps to show why India is more of a producer of PC software than a consumer.</strong></p> <h3>Apps</h3> <p>There are some really well-designed apps which have come out of India. I'm not going to list them all in this post, but here are a couple I found compelling:</p> <p>Sweet 'N' Spicy</p> <p><img title="image" style="border-left-width: 0px; border-right-width: 0px; background-image: none; border-bottom-width: 0px; padding-top: 0px; padding-left: 0px; display: inline; padding-right: 0px; border-top-width: 0px" border="0" alt="image" src="http://10rem.net/media/88049/Windows-Live-Writer_TechEd-India-and-the-India-developer-com_8692_image_6.png" width="650" height="300" /></p> <p>And Tarla Dalal</p> <p><img title="image" style="border-left-width: 0px; border-right-width: 0px; background-image: none; border-bottom-width: 0px; padding-top: 0px; padding-left: 0px; display: inline; padding-right: 0px; border-top-width: 0px" border="0" alt="image" src="http://10rem.net/media/88054/Windows-Live-Writer_TechEd-India-and-the-India-developer-com_8692_image_9.png" width="650" height="366" /></p> <p>The fact that I absolutely love Indian food played no part in me picking these two specific apps. Honestly ;) You can find them both listed in most regions, including the US Windows Store.</p> <h3>Being a tourist</h3> <p>There is a lot to see in India, especially near New Delhi.</p> <p>I arranged ahead of time to have a driver pick me up at 4am at the hotel on Saturday with instructions to bring me to the Taj Mahal and the Red Fort of Agra, and to make sure it was a driver who could speak and understand English. He then drove me the 4+ hours from Delhi to Agra. Once we arrived in Agra, he picked up my tour guide for the day (I didn't know I was getting one, but this turned out to be a good idea). They tried to stop for breakfast at a place where the guide obviously had some business interests, but it was too early, I convinced them to skip breakfast and to just bring me right to the Taj. (I left at 4am, but if taking the Delhi-&gt;Agra highway, I recommend leaving even earlier, like 3:30, depending on traffic etc.)</p> <p>The Taj Mahal was everything I had hoped it would be, and much larger. It always looks so small in the photos.</p> <p><a href="http://www.flickr.com/photos/psychlist1972/"><img title="image" style="border-top: 0px; border-right: 0px; background-image: none; border-bottom: 0px; padding-top: 0px; padding-left: 0px; border-left: 0px; display: inline; padding-right: 0px" border="0" alt="image" src="http://10rem.net/media/88059/Windows-Live-Writer_TechEd-India-and-the-India-developer-com_8692_image20.png" width="651" height="383" /></a></p> <p>The Taj Mahal is also full of people looking to tap your wallet a little. Just know it's all part of the experience and keep lots of rupees on you. The photos, for example, will run you 10,000 to 20,000 rupee. They say it's 100 rupee per photo, but then take close to 20 of them. Don't worry about whether or not you got the best price or someone else was able to negotiate off 100 rupee more than you. These folks are providing a service to tourists and by western standards, it's pretty inexpensive regardless.</p> <p>The whole time the tour guide brought me around the Taj, he was talking up the marble inlay. This is interesting, but understand it's also them priming the pump for the trip to the state-owned marble shop afterwards.</p> <blockquote> <p><strong>TIP</strong></p> <p>When you're brought to the marble shop, you'll be face to face with one or more extremely talented sales people. In my case, they sat me down with hot tea and showed expensive marble tops first, and afterwards the inexpensive stuff. Then, it was off to jewelry, and then textiles, and (I insisted they leave this part out) rugs. In the case of the marble, unless you really want a table top, just ask to be shown the small things like statues, coasters, etc. Seriously, these sales people are good. I've had less pressure at a car dealer.</p> <p>Some of the marble goods are nice, though, especially at the state-owned/certified shops. The one I was brought to was an emporium. I tried negotiating for a bit, but they wouldn't do any better than a small discount off the top. From speaking with others, the emporiums are generally fixed price. The one I went to was Cottage Industries, but oddly it also seems to go by the name Cauvery Emporium, as I had receipts from both places for my purchases inside the same building.</p> <p>Before going in the shop, set a firm budget in your mind, and convert it to rupees so you don't have to do the math in front of the sales people. That's the best way to avoid the pressure as you can firmly say something is outside your budget. Remember, these folks are good.</p> </blockquote> <p><a href="http://www.flickr.com/photos/psychlist1972/" target="_blank"><img title="image" style="border-top: 0px; border-right: 0px; background-image: none; border-bottom: 0px; padding-top: 0px; padding-left: 0px; border-left: 0px; display: inline; padding-right: 0px" border="0" alt="image" src="http://10rem.net/media/88064/Windows-Live-Writer_TechEd-India-and-the-India-developer-com_8692_image_37.png" width="650" height="325" /></a></p> <p><a href="http://www.flickr.com/photos/psychlist1972/" target="_blank"><img title="image" style="border-top: 0px; border-right: 0px; background-image: none; border-bottom: 0px; padding-top: 0px; padding-left: 0px; border-left: 0px; display: inline; padding-right: 0px" border="0" alt="image" src="http://10rem.net/media/88069/Windows-Live-Writer_TechEd-India-and-the-India-developer-com_8692_image_40.png" width="650" height="490" /></a></p> <p>The trip around the Taj Mahal took around 2 1/2 hours. I was there nice and early, before the majority of the crows. The photo above was taken on the way out as the place filled up. It was also getting pretty hot by then.</p> <p>It also gets pretty hazy as the day goes on. Air pollution is pretty bad, as is the dust.</p> <p><a href="http://www.flickr.com/photos/psychlist1972/"><img title="Did I mention the air pollution?" style="border-top: 0px; border-right: 0px; background-image: none; border-bottom: 0px; padding-top: 0px; padding-left: 0px; border-left: 0px; display: inline; padding-right: 0px" border="0" alt="Did I mention the air pollution?" src="http://10rem.net/media/88074/Windows-Live-Writer_TechEd-India-and-the-India-developer-com_8692_image_20.png" width="650" height="289" /></a></p> <p>After the trip to the Taj, we stopped for breakfast (extremely inexpensive compared to the hotels, and very good) and then headed over to the red fort.</p> <p><a href="http://www.flickr.com/photos/psychlist1972/"><img title="image" style="border-top: 0px; border-right: 0px; background-image: none; border-bottom: 0px; padding-top: 0px; padding-left: 0px; border-left: 0px; display: inline; padding-right: 0px" border="0" alt="image" src="http://10rem.net/media/88079/Windows-Live-Writer_TechEd-India-and-the-India-developer-com_8692_image_3.png" width="651" height="273" /></a></p> <p>This part of the Agra fort had a fire on the inside, set by invaders. That burned all the painting off the walls, and left a smoky colored marble. Note the translucent marble near the windows.</p> <p><a href="http://www.flickr.com/photos/psychlist1972/"><img title="Translucent marble" style="border-top: 0px; border-right: 0px; background-image: none; border-bottom: 0px; padding-top: 0px; padding-left: 0px; border-left: 0px; display: inline; padding-right: 0px" border="0" alt="Translucent marble" src="http://10rem.net/media/88084/Windows-Live-Writer_TechEd-India-and-the-India-developer-com_8692_image_31.png" width="650" height="404" /></a></p> <p>The "forts" in India are the castles. Don't let the name "fort" put you off, as these aren't US-style forts, and are fully worth the trip. The Agra Fort, in particular, is impressive both in construction and in history. Read up a bit on it before visiting.</p> <p><a href="http://www.flickr.com/photos/psychlist1972/"><img title="image" style="border-top: 0px; border-right: 0px; background-image: none; border-bottom: 0px; padding-top: 0px; padding-left: 0px; border-left: 0px; display: inline; padding-right: 0px" border="0" alt="image" src="http://10rem.net/media/88089/Windows-Live-Writer_TechEd-India-and-the-India-developer-com_8692_image26_1.png" width="651" height="296" /></a></p> <p><a href="http://www.flickr.com/photos/psychlist1972/"><img title="Where Shah Jahan was imprisoned" style="border-top: 0px; border-right: 0px; background-image: none; border-bottom: 0px; padding-top: 0px; padding-left: 0px; border-left: 0px; display: inline; padding-right: 0px" border="0" alt="Where Shah Jahan was imprisoned" src="http://10rem.net/media/88094/Windows-Live-Writer_TechEd-India-and-the-India-developer-com_8692_image_34.png" width="650" height="433" /></a></p> <p>The drive back from Agra took quite a bit longer due to traffic. It was over 5 hours as I recall. We also had to dodge, of all things, stray cattle lying in the gutter in Agra. Imagine stray cats and dogs in another nation and then add like 600-800 pounds. They were just there, lying down in the street, in the middle of the city. It was amusing mostly in that it seemed so normal. :)</p> <blockquote> <p><strong>TIP</strong><br /> Don't get hung up over whether or not you tipped too much for your tourguide, driver, etc. Tip what you think is fair for the service you received, and if you go by Western standards, you'll almost certainly be tipping more than enough. Keep small bills and coins around for the dude in the bathroom who won't let you out without a tip.</p> </blockquote> <p>While in Delhi, I also took an evening tour "Sound and lights show" of the Delhi Fort. Seeing the Agra Fort afterwards helped <a href="http://en.wikipedia.org/wiki/Shah_jahan">complete the story</a>.</p> <p><a href="http://www.flickr.com/photos/psychlist1972/">You can find all of my photos from this trip on my Flickr page.</a></p> <h3>Poverty</h3> <p>Before I point out a few helpful tips, I wanted to mention the poverty. I've seen slum-level poverty in the United States, but I was unprepared for the type of poverty I saw on the outskirts of the cities in India. Even the Delhi Airport had slum villages right up against the walls. These villages are made from piles of debris, trash, old signs, mud, dung and more. Basically, if it can be used to put a roof over one's head, it will be. I was never able to get a good photo as cars/planes never stop near the slums. The only real photos I got were these washed out hazy ones (did I mention the pollution?) from inside the plane at Mumbai Airport (click for larger version). These were at least made of building materials. Many were just hobbit holes in what appeared to be piles of trash held together by mud along the side of the road.</p> <p><a href="http://www.flickr.com/photos/psychlist1972/8650227247/in/set-72157633245850265" target="_blank"><img title="image" style="border-top: 0px; border-right: 0px; background-image: none; border-bottom: 0px; padding-top: 0px; padding-left: 0px; border-left: 0px; display: inline; padding-right: 0px" border="0" alt="image" src="http://10rem.net/media/88099/Windows-Live-Writer_TechEd-India-and-the-India-developer-com_8692_image_45.png" width="650" height="229" /></a></p> <p><a href="http://www.flickr.com/photos/psychlist1972/8650227175/in/set-72157633245850265" target="_blank"><img title="image" style="border-top: 0px; border-right: 0px; background-image: none; border-bottom: 0px; padding-top: 0px; padding-left: 0px; border-left: 0px; display: inline; padding-right: 0px" border="0" alt="image" src="http://10rem.net/media/88104/Windows-Live-Writer_TechEd-India-and-the-India-developer-com_8692_image_46.png" width="650" height="238" /></a></p> <p>You'll also see a LOT of buildings in various stages of construction. Many seem abandoned before completion. Many are concrete skeletons with exposed rebar on top, and bamboo scaffolding. Such is the nature of a developing country.</p> <p><a href="http://www.bing.com/images/search?q=mumbai+slums&amp;FORM=HDRSC2" target="_blank">Here is an image search showing more of these slums</a>.</p> <h3>Some advice for fellow westerners visiting India</h3> <p>I've been to a number of places in Europe, but this was my first time this far east. The culture really is quite different from European culture, so be prepared.</p> <ul> <li>Dress</li> <li style="list-style: none"> <ul> <li>Purchase really light cotton khakis before your visit. I brought jeans (too hot) and shorts (not recommended, as only kids wear shorts)</li> <li>Women should dress conservatively, especially at monuments. The Taj Mahal grounds include an active mosque and a lot of local and short shorts or low tops will likely get you unwanted attention from folks who think you're being disrespectful or tacky, or from people who want a closer look.</li> <li>Men, if you intend to visit any mosque, arms and legs must be covered.</li> </ul> </li> <li>Food</li> <li style="list-style: none"> <ul> <li>Unlike the US, don't expect to find water/snack vendors all over the place. If you have Type 1 or other blood sugar control issues, be sure to carry stuff with you, but also know that Taj Mahal will not allow most of this in the monument</li> <li>If you don't like Indian food, you're really missing out. :)</li> <li>Always drink bottled water. Even in the hotels, stick to bottled. Avoid salads which have been washed in local water. Even my India friends who have been away from India for a while found the local water really upset their stomachs</li> <li style="list-style: none"> <ul> <li>Brush with bottled water as well.</li> </ul> </li> </ul> </li> <li>Purchasing</li> <li style="list-style: none"> <ul> <li>If you look western, expect the starting price for everything on the street to be at least 2-3x what locals would even consider paying. Negotiate what you can, but also keep in mind that this is a relatively poor country, and you're doing your part to help out in a fair exchange of goods and cash. Don't get taken, but don't worry about nickels and dimes.</li> <li>Keep rupees on you. Outside of the western-style hotels, most places are cash-only. Keep lots of small amounts too, as you'll find 100 INR is far too large a tip for some things, and too small for others.</li> <li>Use a credit card, not your debit card. You want some protection.</li> <!--EndFragment--></ul> </li> <li>Airports and Travel</li> <li style="list-style: none"> <ul> <li>Airport screenings segregate male / female</li> <li>Most airports require that you have a printed boarding pass before you can even enter the airport. Some will take a PDF on your phone, but that varies. Web check-in at the hotel.</li> <li>Use a hired car and driver. Don't even think of driving yourself. Hired cars (from a reputable company - I used Car Club) are very inexpensive. My whole trip to Agra (4am to 8pm) was around $150 US plus tips. Considering I monopolized a driver from 4am to 8pm, that's pretty good. Trips between hotels and airports typically ran around $15-$20 USD.</li> <li>If you use a video camera, realize that the monuments require you to pay extra to bring them in, and some like the Taj Mahal, make you pay to lock them up before entering the monument proper (they do not allow them on the grounds). I use my video camera as my still camera, but that didn't matter. Smart phones are fine as it doesn't seem that Indian officials have caught on to the idea that smart phones are also video cameras.</li> <li>If going on a business trip, make a point of seeing the monuments close to where you're staying. There are lots of great things around India, and the beauty can be breathtaking.</li> </ul> </li> </ul><div class="feedflare"> <a href="http://feeds.feedburner.com/~ff/PeteBrown?a=8KsJ1Q2RyB8:wRO53unOH7A:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/PeteBrown?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/PeteBrown?a=8KsJ1Q2RyB8:wRO53unOH7A:I9og5sOYxJI"><img src="http://feeds.feedburner.com/~ff/PeteBrown?d=I9og5sOYxJI" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/PeteBrown?a=8KsJ1Q2RyB8:wRO53unOH7A:qj6IDK7rITs"><img src="http://feeds.feedburner.com/~ff/PeteBrown?d=qj6IDK7rITs" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/PeteBrown?a=8KsJ1Q2RyB8:wRO53unOH7A:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/PeteBrown?i=8KsJ1Q2RyB8:wRO53unOH7A:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/PeteBrown?a=8KsJ1Q2RyB8:wRO53unOH7A:F7zBnMyn0Lo"><img src="http://feeds.feedburner.com/~ff/PeteBrown?i=8KsJ1Q2RyB8:wRO53unOH7A:F7zBnMyn0Lo" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/PeteBrown?a=8KsJ1Q2RyB8:wRO53unOH7A:gIN9vFwOqvQ"><img src="http://feeds.feedburner.com/~ff/PeteBrown?i=8KsJ1Q2RyB8:wRO53unOH7A:gIN9vFwOqvQ" border="0"></img></a> </div><img src="http://feeds.feedburner.com/~r/PeteBrown/~4/8KsJ1Q2RyB8" height="1" width="1"/> http://feedproxy.google.com/~r/PeteBrown/~3/8KsJ1Q2RyB8/teched-india-the-india-developer-communities-and-the-taj-mahal Pete Brown 4248 2013-04-15T07:07:41 Yet Another Podcast #95–Rey Bango on Testing IE http://feedproxy.google.com/~r/JesseLiberty-SilverlightGeek/~3/nHQ-LEABIKE/ Jesse Liberty [MS] 4247 2013-04-14T20:42:09 Transferring to an new Windows Phone 8 device I’ve been using my HTC 8x Phone for about six months.&#160; I had to get a replacement for the phone last week, due to some issues with the microphone. After a brief call to customer support Verizon replaced it, sending me another phone via next day air. This is the saga of my what happened [...] http://blog.wpfwonderland.com/2013/04/11/transferring-to-an-new-windows-phone-8-device/ Walt Ritscher 4246 2013-04-11T18:04:00 Team Foundation Services - Unterstützung für Git unter der Lupe <p>Nachdem das Tooling beim Team Foundation Server 2012 sehr vielversprechend ist und mit reinen Git bzw. Mercurial-Mitteln zwar möglich, aber durchaus mit zusätzlichen Schritten für Entwicklern oder gar Kontextbrüchen einher geht, möchte ich mir dieses Thema genauer ansehen. Zwar gibt es durchaus Lösungen die eine gesamtheitliche Abbildung des Entwicklungsprozesses inkl. Einbindung von beispielsweise Scrum ermöglichen, allerdings sind die gefundenen Varianten kostenpflichtig, der TFS ist jedoch bereits In-Haus verfügbar, ohne Mehrkosten.</p> <p>Visual Studio kann ja durch die <a title="Visual Studio Tools for Git" href="http://visualstudiogallery.msdn.microsoft.com/abafc7d6-dcaa-40f4-8a5e-d6724bdb980c" target="_blank">Visual Studio Tools for Git</a> recht passabel mit Git-Repositories arbeiten. Auch die <a title="Team Foundation Services" href="http://tfs.visualstudio.com/" target="_blank">Team Foundation Services</a> (die “Cloud”-Variante des Team Foundation Servers) bietet die Möglichkeit der <strong>Git Team Projects</strong>. Innerhalb dieser Projekte wird mit Git-Repositories gearbeitet. Das bringt den Vorteil eines echten Distributed Version Control Systems (DVCS) mit den Templates des Team Foundation Servers zusammen. Soweit so gut. Das Ziel wäre jedoch der Einsatz der On-premise Variante. Hierzu gibt es viele Ankündigungen und Hinweise, dass ein Git-Support bald verfügbar wäre. Die Annahme, dass dies mit dem Update 2 nun endlich soweit ist, hat sich als falsch heraus gestellt. In einem Kommentar zu <a title="Visual Studio 2012 - Update 2 RTM" href="http://blogs.msdn.com/b/visualstudioalm/archive/2013/04/04/visual-studio-update-2-now-available.aspx" target="_blank">Visual Studio 2012 - Update 2 RTM</a> musste ich erfahren, dass ein Git-Support kommen wird, jedoch erst im nächsten <strong>Major</strong>-Release. Also wohl nicht so schnell. Schade eigentlich.</p> <p>Um für mich selbst ein Bild zu bekommen, ob die Services in Frage kommen (unabhängig der “Cloud”-Geschichte), warf ich einen Blick darauf. Auf meine Erkenntnisse möchte ich nachfolgend eingehen.</p> <h2>Pricing</h2> <p>Aktuell kann dieses Service kostenlos verwendet werden, Preise werden im Laufe 2013 veröffentlicht. Hierbei ist jedoch anzumerken, dass die Verwendung für MSDN Abonnenten wohl kostenlos bleiben dürfte (diesbezügliche Informationen finden sich <a title="Team Foundation Service Pricing Information" href="http://tfs.visualstudio.com/en-us/home/news/2013/jan-30/" target="_blank">hier</a>). Derzeit läuft alles auf den <strong>Free Plan</strong> hinaus, der für <strong>bis zu 5 Benutzer</strong> verfügbar ist. Eine Verwendung mit <strong>mehr als 5 Benutzern</strong> ist <strong>möglich</strong>, wird aber nach Einführung von kostenpflichtigen Plänen (ohne MSDN Abonnement) wohl verrechnet werden. Die diesbezügliche Aussage auf der Webseite:</p> <blockquote> <p>Just sign up for the Free Plan today and you can use the service for free. When we begin charging in 2013, access to the service will be offered as a benefit—at no additional charge—for paid MSDN subscribers at these levels:</p> <ul> <li>Visual Studio Ultimate with MSDN </li> <li>Visual Studio Premium with MSDN </li> <li>Visual Studio Test Professional with MSDN </li> </ul> <p>You get all the <a href="http://msdn.microsoft.com/buynow/">benefits of your MSDN subscription</a> plus you can store your work and collaborate with your project team in the cloud.</p> </blockquote> <p>Wer also ein kleines Team oder ein MSDN-Abo hat, dürfte da auch zukünftig kein Problem haben. Zusätzliche Informationen über das Pricing habe ich nicht. Mal sehen was genau da noch kommen wird.</p> <h2>Test der Services</h2> <p>Für mich stellt sich nun die Frage, wie gut der Git-Support mit den Team Foundation Services wirklich funktioniert. Dazu sind die oben erwähnten Visual Studio Tools for Git notwendig und eine Anmeldung auf <a href="http://tfs.visualstudio.com">http://tfs.visualstudio.com</a>.</p> <p>Wenn erledigt hat man nun zwei Möglichkeiten:</p> <p><a href="http://devtyr.norberteder.com/image.axd?picture=image_211.png"><img title="Team Foundation Services - Team Project" style="border-left-width: 0px; border-right-width: 0px; background-image: none; border-bottom-width: 0px; padding-top: 0px; padding-left: 0px; display: inline; padding-right: 0px; border-top-width: 0px" border="0" alt="Team Foundation Services - Team Project" src="http://devtyr.norberteder.com/image.axd?picture=image_thumb_134.png" width="240" height="101" /></a></p> <p>Für mich ist die Variante mit Git-Unterstützung von Interesse. </p> <p><a href="http://devtyr.norberteder.com/image.axd?picture=image_212.png"><img title="Team Foundation Services - Create New Team Project" style="border-left-width: 0px; border-right-width: 0px; background-image: none; border-bottom-width: 0px; padding-top: 0px; padding-left: 0px; display: inline; padding-right: 0px; border-top-width: 0px" border="0" alt="Team Foundation Services - Create New Team Project" src="http://devtyr.norberteder.com/image.axd?picture=image_thumb_135.png" width="500" height="423" /></a></p> <p>Interessant ist hierbei, dass beide Schaltflächen die gleiche Funktionalität bieten, lediglich die Auswahl “Version control” entsprechend gesetzt wird. Projektname ausfüllen, das gewünschte Prozesstemplate wählen und anschließend per <strong>Create Project</strong> die Anlage starten.</p> <p><a href="http://devtyr.norberteder.com/image.axd?picture=image_213.png"><img title="Team Foundation Services - Projektanlage" style="border-left-width: 0px; border-right-width: 0px; background-image: none; border-bottom-width: 0px; padding-top: 0px; padding-left: 0px; display: inline; padding-right: 0px; border-top-width: 0px" border="0" alt="Team Foundation Services - Projektanlage" src="http://devtyr.norberteder.com/image.axd?picture=image_thumb_136.png" width="500" height="423" /></a></p> <p>Die Anlage dauert ein paar wenige Momente. Navigiert man im Anschluss zum Projekt wird man gleich mit den üblichen Scrum-Verdächtigen konfrontiert. Vorerst interessiert mich jedoch die Code-Verwaltung. Dazu ist auf den Menüpunkt <strong>CODE</strong> navigieren und man erhält die Clone-URL. Ein Wechsel zu Visual Studio steht also an.</p> <p>Der Team Explorer bietet nun die Möglichkeit an, ein Git-Repository zu klonen. Wir holen uns also die entsprechende URL aus den Services und starten dies mal:</p> <p><a href="http://devtyr.norberteder.com/image.axd?picture=image_214.png"><img title="Visual Studio Clone Git" style="border-left-width: 0px; border-right-width: 0px; background-image: none; border-bottom-width: 0px; padding-top: 0px; padding-left: 0px; display: inline; padding-right: 0px; border-top-width: 0px" border="0" alt="Visual Studio Clone Git" src="http://devtyr.norberteder.com/image.axd?picture=image_thumb_137.png" width="500" height="94" /></a></p> <p>Im Zuge dieses Vorgangs wird ein Fenster zur Eingabe der Credentials geöffnet. </p> <p>So erledigt, kann nun ein neues Projekt erstellt und im Clone-Folder abgelegt werden. Über den Team Explorer sind die Changes sofort ersichtlich. Per Kontextmenü können (und das ist auch notwendig) Dateien aus der Source Verwaltung exkludiert werden.</p> <blockquote> <p>Hierbei ist mir aufgefallen, dass es mit den Visual Studio Tools for Git offensichtlich nicht möglich ist (oder ich habe es übersehen) eine <font face="Courier New">.gitignore</font>-Datei zu verwalten. Das könnte vielleicht ein wenig lästig sein. Deshalb habe ich mit <a title="TortoiseGit" href="https://code.google.com/p/tortoisegit/" target="_blank">TortoiseGit</a> ein wenig nachgeholfen und eine entsprechende Datei angelegt, die darin gemachten Einträge werden - wie es aussieht - durch die Visual Studio Tools for Git berücksichtigt.</p> </blockquote> <blockquote> <p><strong>Edit</strong>: Eine .gitignore-Datei kann auch über den Team Explorer und der Git-Integration hinzugefügt werden. Dabei sind bei geöffnetem Repository die <strong>Git Settings</strong> zu öffnen. Danz unten unter <strong>Repository Settings</strong> kann ein entsprechendes File hinzugefügt werden.</p> </blockquote> <p>Im nächsten Schritt folgen das erste Commit als auch ein Push, damit das Projekt im Remote-Repository verfügbar ist.</p> <p><a href="http://devtyr.norberteder.com/image.axd?picture=image_215.png"><img title="Visual Studio Git Commit" style="border-left-width: 0px; border-right-width: 0px; background-image: none; border-bottom-width: 0px; padding-top: 0px; padding-left: 0px; display: inline; padding-right: 0px; border-top-width: 0px" border="0" alt="Visual Studio Git Commit" src="http://devtyr.norberteder.com/image.axd?picture=image_thumb_138.png" width="500" height="44" /></a></p> <p><a href="http://devtyr.norberteder.com/image.axd?picture=image_216.png"><img title="Visual Studio Git Push" style="border-left-width: 0px; border-right-width: 0px; background-image: none; border-bottom-width: 0px; padding-top: 0px; padding-left: 0px; display: inline; padding-right: 0px; border-top-width: 0px" border="0" alt="Visual Studio Git Push" src="http://devtyr.norberteder.com/image.axd?picture=image_thumb_139.png" width="500" height="60" /></a></p> <p>Ein Blick auf den Online-Zugang zeigt, es hat funktioniert:</p> <p><a href="http://devtyr.norberteder.com/image.axd?picture=image_217.png"><img title="Team Foundation Services Online Repository" style="border-left-width: 0px; border-right-width: 0px; background-image: none; border-bottom-width: 0px; padding-top: 0px; padding-left: 0px; display: inline; padding-right: 0px; border-top-width: 0px" border="0" alt="Team Foundation Services Online Repository" src="http://devtyr.norberteder.com/image.axd?picture=image_thumb_140.png" width="500" height="421" /></a></p> <p>Soweit der erste Test via Visual Studio. Zur Sicherheit möchte ich jedoch eine Änderung außerhalb machen und mit dem Git-Client meiner Wahl pushen.</p> <p><a href="http://devtyr.norberteder.com/image.axd?picture=image_219.png"><img title="image" style="border-left-width: 0px; border-right-width: 0px; background-image: none; border-bottom-width: 0px; padding-top: 0px; padding-left: 0px; display: inline; padding-right: 0px; border-top-width: 0px" border="0" alt="image" src="http://devtyr.norberteder.com/image.axd?picture=image_thumb_142.png" width="500" height="262" /></a></p> <p>Beim Push-Vorgang kommt nun ein Fehler - nach Eingabe der Credentials - der eigentlich auch nicht weiter verwundert, jedoch vielleicht ein wenig missverständlich ist:</p> <p><a href="http://devtyr.norberteder.com/image.axd?picture=image_220.png"><img title="Git-Fehler (Team Foundation Services)" style="border-left-width: 0px; border-right-width: 0px; background-image: none; border-bottom-width: 0px; padding-top: 0px; padding-left: 0px; display: inline; padding-right: 0px; border-top-width: 0px" border="0" alt="Git-Fehler (Team Foundation Services)" src="http://devtyr.norberteder.com/image.axd?picture=image_thumb_143.png" width="500" height="338" /></a></p> <p>Um dies zu beheben, muss man auf der Webseite zu den Team Foundation Services ins Benutzerprofil wechseln und unter Credentials alternative Daten angeben (bis dato wird ja lediglich mit einer Live ID gearbeitet):</p> <p><a href="http://devtyr.norberteder.com/image.axd?picture=image_221.png"><img title="Team Foundation Services - Alternate Credentials" style="border-left-width: 0px; border-right-width: 0px; background-image: none; border-bottom-width: 0px; padding-top: 0px; padding-left: 0px; display: inline; padding-right: 0px; border-top-width: 0px" border="0" alt="Team Foundation Services - Alternate Credentials" src="http://devtyr.norberteder.com/image.axd?picture=image_thumb_144.png" width="500" height="423" /></a></p> <p>Ein erneuter Push-Versuch resultiert in einem Erfolg:</p> <p><a href="http://devtyr.norberteder.com/image.axd?picture=image_222.png"><img title="Team Foundation Services - Commits" style="border-left-width: 0px; border-right-width: 0px; background-image: none; border-bottom-width: 0px; padding-top: 0px; padding-left: 0px; display: inline; padding-right: 0px; border-top-width: 0px" border="0" alt="Team Foundation Services - Commits" src="http://devtyr.norberteder.com/image.axd?picture=image_thumb_145.png" width="500" height="200" /></a></p> <p>Auch die weiteren Funktionen arbeiten ohne Probleme. </p> <h2>Fazit</h2> <p>Der erste Eindruck ist gut. Alles arbeitet gut zusammen, es gibt keine Hürden die unerwarteter Weise auftreten, es gibt auch nichts wo man großartig nachlesen müsste. Interessant wird es dann wenn es weiter geht in Richtung der Scrum-Templates und der Builds bzw. Testpläne etc. Aber dafür wird es eigenständige Blog-Beiträge geben, die näher darauf eingehen werden. Es ist sicherlich noch einiges zu tun, aber es lässt sich gut arbeiten, sowohl von Visual Studio heraus, als auch mit anderen Tools. Damit rückt der TFS definitiv wieder in die engere Wahl.</p> http://devtyr.norberteder.com/post/Team-Foundation-Services-Unterstutzung-fur-Git-unter-der-Lupe.aspx Norbert Eder [MVP] 4245 2013-04-12T12:54:07 Accelerate cool app development with the Coding4Fun Toolkit <p>The Coding4Fun Toolkit is a set of powerful controls and libraries that you can use, free, to add rich features and functionality to your XAML Windows Phone apps (and also to your Windows 8 Store apps). <p>I recently talked to Clint Rutkas, the toolkit creator, about some of the thinking behind building the toolkit, and some of the cool things you can do with it.</p> <p>&nbsp;<iframe style="height: 288px; width: 512px" src="http://channel9.msdn.com/Shows/Inside+Windows+Phone/IWP52--Clint-on-the-Coding-For-Fun-Toolkit/player?w=512&amp;h=288" frameborder="0" scrolling="no"></iframe></p> <p>Here are some links to related info: <ul> <li><a href="http://coding4fun.codeplex.com/" target="_blank">Coding4Fun on CodePlex</a> <li><a href="http://channel9.msdn.com/Niners/Clint/" target="_blank">Clint Rutkas' page on Channel 9</a> <li><a href="http://wpdev.ms/beginvids" target="_blank">Windows Phone Development for Absolute Beginners</a> <li><a href="http://blogs.msdn.com/b/bclteam/archive/2013/02/18/portable-httpclient-for-net-framework-and-windows-phone.aspx" target="_blank">Portable HttpClient for Windows Phone</a> (in beta) <li><a href="http://phone.codeplex.com/" target="_blank">Windows Phone Toolkit</a> on CodePlex <li><a href="http://www.codeproject.com/Articles/345129/Windows-Phone-7-Navigation-Transitions" target="_blank">Info on using transitions from the toolkit</a> (from the Code Project) </li></ul> <p>Questions: <p>Tweet to <a href="https://twitter.com/intent/tweet?screen_name=LarryALieberman" target="_blank">@LarryALieberman</a></p><div style="clear:both;"></div><img src="http://blogs.windows.com/aggbug.aspx?PostID=588276&AppID=5384&AppType=Weblog&ContentType=0" width="1" height="1"> http://blogs.windows.com/windows_phone/b/wpdev/archive/2013/04/11/accelerate-cool-app-development-with-the-coding-4-fun-toolkit.aspx Windows Phone Dev Blog 4244 2013-04-11T21:11:25 Mercurial-Repository nach Git konvertieren <p>Git wird immer populärer und gefühlsmäßig gerät Mercurial ins Hintertreffen. Die Gründe dafür dürften wohl in der besseren Performance von Git und der breiten Akzeptanz von GitHub sein. Zusätzlich ist es auch teilweise mühsam, mehrere Clients installiert haben zu müssen (bei einigen ist eine Unterstützung des jeweils anderen DVCS in Vorbereitung, sonst wäre mir <a title="SmartGit/Hg" href="http://www.syntevo.com/smartgithg/index.html" target="_blank">SmartGit/Hg</a> bekannt). Wer nun von Mercurial auf Git wechseln möchte bekommt in diesem Beitrag eine Schritt für Schritt Anleitung.</p> <h2>Prerequisits (Mercurial -&gt; Git)</h2> <p>Folgende Werkzeuge und Erweiterungen kamen zum Einsatz:</p> <p>Als Mercurial-Client wird <a title="TortoiseHg" href="http://tortoisehg.bitbucket.org/de/" target="_blank">TortoiseHg</a> verwendet. Dieser Client lässt sich einfach erweitern, was auch für dieses Vorhaben notwendig ist. Als Erweiterung dazu wird <a title="hg-git" href="https://bitbucket.org/durin42/hg-git" target="_blank">hg-git</a> benötigt. Die Installation und Einrichtung sieht wie folgt aus:</p> <ol> <li>Als ZIP herunter laden und in ein beliebiges Verzeichnis entpacken</li> <li>Via TortoiseHg die Einstellungen für das zu konvertierende Repository öffnen</li> <li>hg-git als Erweiterung eintragen</li> </ol> <p>Der Eintrag wird direkt in der Datei <font face="Courier New">hgrc</font> vorgenommen und soll wie folgt aussehen:</p> <p><font face="Courier New">[extensions] <br />hggit=C:\Temp\hg-git\hggit</font></p> <p>Hier ist natürlich der tatsächliche Pfad einzusetzen. Damit die Erweiterung verwendet wird, müssen alle offenen TortoiseHg-Anwendungen geschlossen werden.</p> <p>hg-git hat neben der Abhängigkeit zu Mercurial (diese ist durch die Installation von TortoiseHg als erfüllt anzusehen) eine weitere zu <a title="dulwich" href="https://github.com/jelmer/dulwich/tree/master/dulwich" target="_blank">dulwich</a>. Hier ist das entweder das ZIP herunter zu laden, oder das Repository zu klonen. Im Root-Verzeichnis befindet sich ein Verzeichnis <font face="Courier New">dulwich</font>. Dieses Verzeichnis muss nun den Libraries von TortoiseHg hinzugefügt werden. Diese befinden sich üblicherweise in:</p> <blockquote> <p>%ProgramFiles%\TortoiseHg\library.zip</p> </blockquote> <p>So muss das dann innerhalb der ZIP-Datei aussehen:</p> <p><a href="http://devtyr.norberteder.com/image.axd?picture=image_210.png"><img title="TortoiseHg Libraries" style="border-top: 0px; border-right: 0px; background-image: none; border-bottom: 0px; padding-top: 0px; padding-left: 0px; border-left: 0px; display: inline; padding-right: 0px" border="0" alt="TortoiseHg Libraries" src="http://devtyr.norberteder.com/image.axd?picture=image_thumb_133.png" width="500" height="200" /></a></p> <p>Damit sind alle Vorarbeiten abgeschlossen und es kann mit der Konvertierung gestartet werden.</p> <p>Und natürlich muss Git installiert sein. Hierbei ist unerheblich welche Implementierung. Wer beispielsweise <a title="GitHub for Windows" href="http://windows.github.com/" target="_blank">GitHub for Windows</a> installiert hat, ist bereits bestens gerüstet, sonst kann auch <a title="http://git-scm.com/" href="http://git-scm.com/">http://git-scm.com/</a> verwendet werden.</p> <h2>Aus Mercurial mach Git</h2> <p>In den nächsten Schritten werden wir ein bestehendes Mercurial-Repository in ein Git-Repository konvertieren. Hierzu sind folgende Schritte notwendig:</p> <ol> <li>Git-Bash öffnen (dieser Schritt ist notwendig, damit die hg-git-Erweiterung angezogen wird)</li> <li>Ein leeres Git-Repository anlegen (hier wird durch die Erweiterung ein Pack-File eingespielt). Dazu ein Verzeichnis an beliebiger Stelle anlegen und folgenden Befehl innerhalb dieses Verzeichnisses ausführen: <br /><font face="Courier New">git init --bare</font></li> <li>Nun ist ins Mercurial-Repository zu wechseln und dieses in das Git-Repository zu pushen (zu beachten ist, dass dieser Vorgang durchaus recht lange dauern kann, es werden keine Konsolen-Ausgaben geschrieben, daher nicht abbrechen, sondern warten; Es erfolgt jedoch schlussendlich eine Meldung wie viele Commits etc. übernommen wurden): <br /><font face="Courier New">hg push path/to/Git-Repository</font></li> <li>Im Git-Repository liegt nun unter <font face="Courier New">objects/pack</font> ein Git-Pack-File, welches alle notwendigen Informationen enthält.</li> </ol> <p>Damit ist die Migration eigentlich abgeschlossen, sofern man mit dem Pack-File zufrieden ist. Ist dies nicht der Fall, kann man mit den folgenden beiden Schritten alle Objekte in separaten Dateien ablegen:</p> <ol> <li>Ein weiteres Verzeichnis anlegen und in dieses wechseln</li> <li><font face="Courier New">git clone -l path/to/Git-Pack-Repository</font> ausführen. Dabei ist nicht das Pack-File zu referenzieren, sondern das Repository-Stammverzeichnis</li> </ol> <p>Damit ist nun ein Git-Repository mit allen Objekten als separate Dateien vorhanden und kann für weitere Schritte verwendet werden.</p> <h2>Fazit</h2> <p>Die Migration kostet zwar ein wenig Zeit (vor allem, wenn man sich die einzelnen Schritte und Lösungen für einige Fallen zusammensuchen muss), geht aber sonst weitestgehend problemlos von Statten. Nach dem Umstieg steht die gesamte Historie zur Verfügung und es kann wie mit Git gewohnt gearbeitet werden.</p> http://devtyr.norberteder.com/post/Mercurial-Repository-nach-Git-konvertieren.aspx Norbert Eder [MVP] 4243 2013-04-11T16:00:36 Das Geheimnis der Kommunikation <p>Vor einigen Tagen habe ich zum Thema <a href="http://devtyr.norberteder.com/post/Arbeiten-wir-an-der-Kommunikation!.aspx">Arbeiten wir an der Kommunikation</a> geschrieben. In diesem Beitrag hatte ich einige Punkte aufgelistet, die ein Team zu einer besseren Kommunikation führen, wohlgemerkt, auf mein Team abgestimmt. Gestern hatten wir einen Workshop-Tag mit <a href="http://ilker.de" target="_blank">Ilker Centikaya</a> zum Thema Scrum (hierauf folgt ein separater Post). In diesem wirklich sehr inspirierenden Workshop hatten wir auch ein wenig Systemtheorie zum Thema. In seiner Rohform nichts für schwache Nerven. In der durch Ilker aufbereiteten Form dauerte es nicht lange und mir fiel es wie Schuppen von den Augen.</p> <p>Ich hatte den Grund erkannt, warum die Kommunikation innerhalb meines Teams und auch mit angrenzenden Bereichen nun wesentlich besser funktioniert als noch vor einigen Monaten. Intuitiv hatte ich eine Entscheidung zu einem Vorgehen getroffen und diese umgesetzt. Nie wäre ich jedoch auf den Gedanken gekommen, dass dieser Punkt wesentlich stärker wiegt als alle im letzten Beitrag zum Thema Kommunikation aufgelisteten Punkte. Das Stichwort ist</p> <blockquote> <p>Transparenz</p> </blockquote> <p>Jawohl! Transparenz!</p> <h2>Das hat mit Kommunikation nun was genau zu tun?</h2> <p>Mit einer mangelnden Kommunikation geht meist auch noch ein weiterer Punkt einher: Mangelnde Motivation, oder besser formuliert, stark einwirkende Demotivation. In zahlreichen Quellen wird betont:</p> <blockquote> <p>Wahre Motivation kommt von innen. </p> </blockquote> <p>Das heißt im Umkehrschluss, dass von Extern demotivierende Kräfte wirken. Da gibt es viele Faktoren, einer ist fehlende Information. Dies bedeutet natürlich, dass der eigene Entscheidungsfreiraum eingeschränkt wird, das Ziele, Visionen nicht erkannt werden und somit auch kaum Weiterentwicklungspotential gesehen wird. Das resultiert wiederum darin, dass der Einzelne nicht weiß wohin der Weg führt und wo auf diesem Weg er selbst Platz findet. Das löst Existenzängste aus. Eine logische Folgerung: Es findet eine Einigelung statt, eine Abgrenzung. Typisch dafür ist, dass selbst wiederum keine Informationen weitergegeben werden, um sich selbst unentbehrlich zu machen.</p> <p>Um dieses Problem zu beheben, kommt nun die Systemtheorie ins Spiel (bitte beachten, dass meine Kenntnisse der Systemtheorie als sehr gering einzustufen sind, bei Fehlbeschreibungen bitte mich zu verbessern). Speziell die <a href="http://de.wikipedia.org/wiki/Selbstreferenzialit%C3%A4t" target="_blank">Selbstreferenzialität</a>. Salopp gesagt bedeutet dies, dass sich ein System (eine Person, ein Team, ein Unternehmen etc.) nur auf sich selbst bezieht, sich selbst reguliert. Einflüsse aus der Umwelt können angenommen werden, müssen aber nicht. </p> <p>Möchte ich als Person einen Vorteil zu vermitteln, muss ich ihn also zuerst bei mir selbst anwenden, zeigen dass es funktioniert und kann somit angrenzenden Systemen ein Angebot unterbreiten, dies ebenfalls einzusetzen. Diese Systeme entscheiden selbst ob sie das tun werden oder nicht. Wird der Vorteil erkannt und für gut befunden stehen die Chancen dazu natürlich gut.</p> <p>Mein Vorgehen war nun, für Transparenz in meinem Tun zu sorgen. Meine Team-Mitglieder wurden verstärkt zu Entscheidungen herangezogen, bekamen Informationen zu dem “Wie geht es weiter?” usw. Durch die gelebte Transparenz haben meine Team-Mitglieder offensichtlich den daraus resultierenden Vorteil erkannt und selbst umgesetzt. Die Informationen wurden mehr, jeder konnte seinen Platz finden, die Sicherheit ist gestiegen, ebenfalls die Motivation. Die “neue” Motivation hat dazu beigetragen, dass mit vielen Informationen freizügiger umgegangen wird. Es stieg der Kommunikationsanteil. Und plötzlich läuft das Werk …</p> <h2>Fazit</h2> <p>Transparenz ist ein Faktor der nicht unterschätzt werden darf. Mitarbeiter möchten wissen wie es um ein Unternehmen, die Projekte, ihre Zukunft steht. Nur mit diesem Wissen können sie sich wirklich einbringen und für Mehrwert sorgen. Ich selbst habe durch Ilker einen kleinen Einblick in für mich neue Themen erhalten die mir sofort geholfen haben, einige meiner Entscheidungen reflektieren und weitere Maßnahmen setzen zu können. Was folgt ist sicherlich ein weiteres Studium dieser Gebiete um mein Wissen zu festigen. Ebenfalls verstehe ich nun, dass dies der wahre Grund war, warum die Kommunikation innerhalb meines Teams nun ordentlich funktioniert. Die anderen Maßnahmen waren gut und sicherlich hilfreich, jedoch nicht ausschlaggebend.</p> http://devtyr.norberteder.com/post/Das-Geheimnis-der-Kommunikation.aspx Norbert Eder [MVP] 4242 2013-04-09T21:25:15 Congratulations to Wikipedia by Rudy Huyn, Windows Phone Next App Star <p>Our focus this year is on raising awareness for the amazing apps you develop for Windows Phone. We’ll accomplish through new programs, app promotions, and increased opportunities for app discoverability in the Windows Phone Store on the phone and on the web. So far we’ve launched: <ul> <li>Daily promotion of new and trending apps – follow us: <a href="http://blogs.windows.com/windows_phone/b/windowsphone/" target="_blank">Windows Phone blog</a>, <a href="https://www.facebook.com/windowsphone" target="_blank">Facebook</a>, and <a href="https://twitter.com/windowsphone" target="_blank">Twitter</a> <li>New weekly app deal program – <a href="http://blogs.windows.com/windows_phone/b/windowsphone/archive/2013/04/04/announcing-red-stripe-deals-a-weekly-sale-on-apps-and-games.aspx" target="_blank">Red Stripe Deals</a> – to drive engagement and downloads of a select group of apps and games each week at 50%+ off the original price<br><a href="http://www.windowsphone.com/en-us/store/collections/red-stripe-deals/db534788-8a1a-4f31-9a1d-bd9bdeddc467" target="_blank"><img title="clip_image001" style="border-top: 0px; border-right: 0px; background-image: none; border-bottom: 0px; padding-top: 0px; padding-left: 0px; border-left: 0px; display: inline; padding-right: 0px" border="0" hspace="12" alt="clip_image001" src="http://blogs.windows.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-53-84-metablogapi/clip_5F00_image001_5F00_73C72CDA.jpg" width="127" height="62"></a>&nbsp; <li>Continued improvements to our search algorithms, merchandising, and web Store, where many potential customers who are considering buying a Windows Phone come to see if an app is available before they purchase. We’ve recently added an <a href="http://www.windowsphone.com/en-us/store/overview" target="_blank">overview page</a> to the web Store we’ll use to deliver key app messages, for example <li>And, let’s not forget the <a href="http://blogs.windows.com/windows_phone/b/wpdev/archive/2013/01/14/next-app-star-see-your-app-featured-in-a-windows-phone-tv-ad.aspx" target="_blank">Windows Phone Next App Star</a> contest, designed to bring attention to 64 finalists and give consumers an opportunity to vote for their favorites, and for one lucky developer to have the opportunity to see their app featured in a prime-time television commercial in the US* </li></ul> <p>Today I’m pleased to announce the winner of the Windows Phone Next App Star competition. We started this journey with 9,137 entries from 79 markets. With so many competitors it took both strong user review scores during the ratings period and very formidable <a href="http://blogs.windows.com/windows_phone/b/wpdev/archive/2013/01/31/how-to-get-your-app-promoted-in-the-windows-phone-store.aspx" target="_blank">app quality</a> to be selected. At the end of the judging, <a href="http://dev.windowsphone.com/en-US/featured/next-app-star" target="_blank">64 finalists</a> emerged, with apps from developers across the globe – Australia, Bangladesh, Brazil, Canada, China, Czech Republic, Egypt, France, Germany, India, Italy, Poland, Russia, Spain, Ukraine, United Kingdom, and the United States. As we narrowed the field through rounds of voting, our developer finalists <a href="http://blogs.windows.com/windows_phone/b/wpdev/archive/2013/02/20/15-000-in-prizes-added-to-windows-phone-next-app-star-challenge-speakers-ultrabooks-and-travel-oh-my.aspx" target="_blank">earned prizes</a> (Nokia Lumia 920 phones, wireless chargers, Microsoft Signature Sony Ultrabooks, an appearance in a special episode of <a href="http://channel9.msdn.com/Shows/Hot-Apps/Hot-Apps-Windows-Phone-Next-App-Star-Special-Edition" target="_blank">Hot Apps</a>, and trips to //build, among other prizes) and gained exposure for their apps with over 615,000 contest votes. Meanwhile, voters participated in a sweepstakes** to win a Nokia Lumia 920 – a new phone was awarded every day of voting. <p>The championship round between <a href="http://www.windowsphone.com/s?appid=3D6A3D7E-5ACA-4AEE-B059-590B9F53CC13" target="_blank">ProSho</a>t by Eddie Kezeli and <a href="http://www.windowsphone.com/s?appid=FD40C569-2681-48DF-9FF3-53FFD80AA9B5" target="_blank">Wikipedia</a> by Rudy Huyn was highly competitive. To give you insight into these two apps: ProShot is a feature-packed lens app with such an intuitive UI it can be enjoyed by the professional photographer and the weekend warrior alike. Wikipedia takes rich web content and brings it to life with Windows Phone design elements and features like NFC, speech, and Live Tiles. </p> <table cellspacing="0" cellpadding="2" width="696" border="0"> <tbody> <tr> <td valign="top" width="131"><a href="http://www.windowsphone.com/s?appid=FD40C569-2681-48DF-9FF3-53FFD80AA9B5" target="_blank"><img title="clip_image003" style="border-left-width: 0px; border-right-width: 0px; background-image: none; border-bottom-width: 0px; padding-top: 0px; padding-left: 0px; display: inline; padding-right: 0px; border-top-width: 0px" border="0" hspace="12" alt="clip_image003" src="http://blogs.windows.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-53-84-metablogapi/clip_5F00_image003_5F00_7E6C6770.png" width="101" height="101"></a></td> <td valign="top" width="563">In the end there can be just one grand prize winner and it is my pleasure to announce that the Windows Phone Next App Star is <a href="http://www.windowsphone.com/s?appid=FD40C569-2681-48DF-9FF3-53FFD80AA9B5" target="_blank">Wikipedia</a> by Rudy Huyn, of Rennes, France. Take a look at this short video and visit us on <a href="https://www.facebook.com/windowsphone/app_289569661171794" target="_blank">Facebook</a> to learn more about the Wikipedia app.</td></tr></tbody></table> <p><iframe style="height: 288px; width: 512px" src="http://channel9.msdn.com/Blogs/Windows-Phone-7/Windows-Phone-Next-App-Star-WINNER/player?w=512&amp;h=288" frameborder="0" scrolling="no"></iframe></p> <p>As the grand prize winner, Wikipedia will have the opportunity to be featured in a Windows Phone prime-time television commercial in the US. Congratulations Rudy! <p>Today we’re focused on celebrating Rudy and the achievements of all our Next App Star finalists. In the coming weeks you can expect posts with learnings from the competition that you can apply to your situation – from app creation to marketing tips. And you’re all stars in our book. <h4>Windows Phone Next App Star Finalists</h4> <p><a href="http://blogs.windows.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-53-84-metablogapi/clip_5F00_image005_5F00_76E0F803.jpg"><img title="clip_image005" style="border-left-width: 0px; border-right-width: 0px; background-image: none; border-bottom-width: 0px; padding-top: 0px; padding-left: 0px; display: inline; padding-right: 0px; border-top-width: 0px" border="0" alt="clip_image005" src="http://blogs.windows.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-53-84-metablogapi/clip_5F00_image005_5F00_thumb_5F00_7CBB9B9C.jpg" width="624" height="707"></a> <p><em></em>&nbsp; <p><em>* See official developer </em><a href="https://cmsresources.windowsphone.com/devcenter/en-us/contest/MICROSOFT_WINDOWS_PHONE_NEXT_APP_STAR_CONTEST_OFFICIAL_RULES.pdf" target="_blank">rules</a><em></em><em> for details. </em> <p><em>** See official sweepstakes </em><a href="http://nas.newwp.it/rules" target="_blank">rules</a><em></em><em> for details.</em><div style="clear:both;"></div><img src="http://blogs.windows.com/aggbug.aspx?PostID=588263&AppID=5384&AppType=Weblog&ContentType=0" width="1" height="1"> http://blogs.windows.com/windows_phone/b/wpdev/archive/2013/04/09/congratulations-to-wikipedia-by-rudy-huyn-windows-phone-next-app-star.aspx Windows Phone Dev Blog 4241 2013-04-09T19:18:04 More Dev Center features – we’re listening <p>Hi everybody! I’m Rushmi Malaviarachchi, lead program manager for the Windows Phone Dev Center. I work on the engineering team that’s responsible for the <a href="http://dev.windowsphone.com" target="_blank">Dev Center website</a>, the <a href="http://www.windowsphone.com/s?appid=2d3063c2-4b29-4e69-9c03-50b67b0e6aec" target="_blank">Dev Center app</a>, and the app ingestion system that gets your apps into the Windows Phone Store. I’ll be posting here on a regular basis to share improvements that we’re making to Dev Center. <p>Over the past few months we’ve had the opportunity to meet with some of you in person and discuss what’s top of mind. We’ve also been reading the posts in our <a href="http://wpdev.uservoice.com/forums/110711-dev-center-store" target="_blank">UserVoice</a> forum to understand what you’d like to see from Dev Center. This week we updated Dev Center with several features to address your feedback. <p><b>Canceling submissions</b> <p>Previously, after you clicked the <b>Submit</b> button on an app submission in Dev Center, you couldn’t edit it again until it had finished processing. After clicking the button, if you realized that something needed to be changed or there was one more bug that you needed to fix, you’d have to wait until the app submission completed before you could address it. Frustrating. <p>Providing a way to cancel a submission is one of the top-ranked requests in our <a href="http://wpdev.uservoice.com/forums/110711-dev-center-store" target="_blank">UserVoice</a> forum. I’m pleased to announce that now from the lifecycle page you can cancel an app submission, make changes, and then submit again. Here’s what you’ll see in Dev Center: <p><a href="http://blogs.windows.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-53-84-metablogapi/clip_5F00_image002_5F00_727F5381.png"><img title="clip_image002" style="border-top: 0px; border-right: 0px; background-image: none; border-bottom: 0px; padding-top: 0px; padding-left: 0px; border-left: 0px; display: inline; padding-right: 0px" border="0" alt="clip_image002" src="http://blogs.windows.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-53-84-metablogapi/clip_5F00_image002_5F00_thumb_5F00_58AB1D52.png" width="482" height="236"></a> <p>After you click cancel, you’ll see the following confirmation. You can click the <b>Edit submission</b> link to make changes and submit again. <p><a href="http://blogs.windows.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-53-84-metablogapi/clip_5F00_image004_5F00_45F6239B.png"><img title="clip_image004" style="border-top: 0px; border-right: 0px; background-image: none; border-bottom: 0px; padding-top: 0px; padding-left: 0px; border-left: 0px; display: inline; padding-right: 0px" border="0" alt="clip_image004" src="http://blogs.windows.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-53-84-metablogapi/clip_5F00_image004_5F00_thumb_5F00_504747FB.png" width="482" height="323"></a> <p><b></b> <p><b>Rotating screenshots</b> <p>Dev Center already supports both portrait and <a href="http://blogs.windows.com/windows_phone/b/wpdev/archive/2013/03/01/marketing-your-windows-phone-app-101-q-amp-a-with-resident-windows-phone-developer-bernardo-zamora.aspx" target="_blank">landscape screenshots</a>, but sometimes we receive landscape screenshots in portrait orientation. This may not be such a big deal when viewed on the phone, but it certainly makes a difference when customers browse apps on the web <a href="http://www.windowsphone.com/en-us/store" target="_blank">Store</a>. Instead of rotating screenshots in an image editor, you can now rotate them directly in Dev Center after they’ve been uploaded. Here’s what it looks like: <p><a href="http://blogs.windows.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-53-84-metablogapi/clip_5F00_image006_5F00_047B7142.png"><img title="clip_image006" style="border-top: 0px; border-right: 0px; background-image: none; border-bottom: 0px; padding-top: 0px; padding-left: 0px; border-left: 0px; display: inline; padding-right: 0px" border="0" alt="clip_image006" src="http://blogs.windows.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-53-84-metablogapi/clip_5F00_image006_5F00_thumb_5F00_2EE7A25F.png" width="482" height="333"></a> <p><b>Automatic screenshot resizing</b> <p>For apps that support multiple screen resolutions, you can now choose to upload only screenshots with the highest resolution and let Dev Center automatically create the others. If you want the flexibility of submitting a set of screenshots per supported resolution, you still have that option. Here it is in Dev Center: <p><a href="http://blogs.windows.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-53-84-metablogapi/clip_5F00_image008_5F00_1C32A8A8.png"><img title="clip_image008" style="border-top: 0px; border-right: 0px; background-image: none; border-bottom: 0px; padding-top: 0px; padding-left: 0px; border-left: 0px; display: inline; padding-right: 0px" border="0" alt="clip_image008" src="http://blogs.windows.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-53-84-metablogapi/clip_5F00_image008_5F00_thumb_5F00_469ED9C5.png" width="482" height="247"></a> <p>We really appreciate your ongoing feedback; please keep it coming! The <a href="http://wpdev.uservoice.com/forums/110711-dev-center-store" target="_blank">Windows Phone Dev Center UserVoice forum</a> is the best way to do that. You’ll be hearing from me again soon when we have more news about Dev Center improvements to share with you. <div style="clear:both;"></div><img src="http://blogs.windows.com/aggbug.aspx?PostID=588243&AppID=5384&AppType=Weblog&ContentType=0" width="1" height="1"> http://blogs.windows.com/windows_phone/b/wpdev/archive/2013/04/05/more-dev-center-features-we-re-listening.aspx Windows Phone Dev Blog 4240 2013-04-06T00:16:33 Windows Phone Next App Star: The final four apps and the developers behind them <p>It’s hard to believe we’re down to the final 4 in our <a href="https://www.facebook.com/windowsphone/app_289569661171794" target="_blank">Windows Phone Next App Star</a> contest. But from 9,000 apps submitted by developers in 79 countries, then narrowed to 64 apps, then voted by the public down to 32, 16, and 8… here we are. We’d like to introduce you to the impressive talents of the final four developers and the exceptional apps they’ve created. And you’ll be seeing one of these apps in action as part of our contest grand prize—the top app will be featured in a nationwide Windows Phone TV ad in the US. <a href="https://www.facebook.com/windowsphone/app_289569661171794">Voting</a> on this round continues through 11:59pm PST tonight, Friday, April 5, 2013. Learn about these apps and decide who to <a href="https://www.facebook.com/windowsphone/app_289569661171794" target="_blank">vote</a> for to push forward to the championship round. Oh, and did I mention every vote is an entry to win a Nokia Lumia 920*? <p>Three brothers — Emad, Iyad, and Zeyad Ejielat — working out of Australia and Jordan via Skype, created <a href="http://www.windowsphone.com/en-us/store/app/amazing-weather/c7ac43c5-5d99-4e65-913d-e92e253e9e99" target="_blank">Amazing Weather HD</a><b></b>, which is well named. All three are involved professionally in computers and electronics (Zeyad is studying medicine, too). Their first app, created several years ago, was Stormy 7, which eventually became a full-fledged weather app. Amazing Weather HD takes vast amounts of weather info, then beautifully integrates it with the Windows Phone design. Amazing Weather HD also offers a dynamic lock screen, Live Tile, and has fluid, natural app navigation. This app offers in-depth weather info, served up as eye candy. <p><a href="http://www.windowsphone.com/en-us/store/app/amazing-weather/c7ac43c5-5d99-4e65-913d-e92e253e9e99"><img title="clip_image002" style="border-left-width: 0px; border-right-width: 0px; background-image: none; border-bottom-width: 0px; padding-top: 0px; padding-left: 0px; display: inline; padding-right: 0px; border-top-width: 0px" border="0" alt="clip_image002" src="http://blogs.windows.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-53-84-metablogapi/clip_5F00_image002_5F00_1E25894D.png" width="154" height="154"></a> <a href="http://www.windowsphone.com/en-us/store/app/amazing-weather/c7ac43c5-5d99-4e65-913d-e92e253e9e99"><img title="clip_image004" style="border-left-width: 0px; border-right-width: 0px; background-image: none; border-bottom-width: 0px; padding-top: 0px; padding-left: 0px; display: inline; padding-right: 0px; border-top-width: 0px" border="0" alt="clip_image004" src="http://blogs.windows.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-53-84-metablogapi/clip_5F00_image004_5F00_2B8B9C53.png" width="156" height="259"></a> <p>Their app is matched up against Eddie Kezeli of Roseville, California, and his app <a href="http://www.windowsphone.com/en-us/store/app/proshot/3d6a3d7e-5aca-4aee-b059-590b9f53cc13" target="_blank">ProShot</a><b></b>. As Eddie describes his app, “ProShot brings a range of professional enhancements to the exceptional cameras found on Windows Phone 8 devices. So your already very smart smartphone becomes a DSLR camera — complete with adjustable shutter speeds, ISO, white balance, aspect ratio, and more. ProShot offers pro-level photography options, encouraging exploration and discovery from users at any skill level.” Eddie, who thinks of himself as a “computer doctor” and is both a Windows Phone enthusiast and karaoke champion, says of ProShot, “big features should not be limited to big cameras.” <p><a href="http://www.windowsphone.com/en-us/store/app/proshot/3d6a3d7e-5aca-4aee-b059-590b9f53cc13"><img title="clip_image006" style="border-left-width: 0px; border-right-width: 0px; background-image: none; border-bottom-width: 0px; padding-top: 0px; padding-left: 0px; display: inline; padding-right: 0px; border-top-width: 0px" border="0" alt="clip_image006" src="http://blogs.windows.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-53-84-metablogapi/clip_5F00_image006_5F00_3C8FCA36.png" width="154" height="154"></a> <a href="http://www.windowsphone.com/en-us/store/app/proshot/3d6a3d7e-5aca-4aee-b059-590b9f53cc13"><img title="clip_image008" style="border-left-width: 0px; border-right-width: 0px; background-image: none; border-bottom-width: 0px; padding-top: 0px; padding-left: 0px; display: inline; padding-right: 0px; border-top-width: 0px" border="0" alt="clip_image008" src="http://blogs.windows.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-53-84-metablogapi/clip_5F00_image008_5F00_29DAD07F.png" width="259" height="156"></a> <p>Rudy Huyn of Rennes, France, is a Windows Phone expert and big fan of the Microsoft mobile platform. He’s also a Windows Phone Development MVP and founded a French community of Windows Phone developers. Rudy loves Wikipedia so much that he wanted to create the ultimate Wikipedia app. Having “a complete encyclopedia in your pocket” was Rudy’s goal. His <a href="http://www.windowsphone.com/en-us/store/app/wikipedia/fd40c569-2681-48df-9ff3-53ffd80aa9b5" target="_blank">Wikipedia</a><b></b> app uses location features to find articles relevant to where you are. You can search in more than 100 languages, with easy sharing on Facebook, Twitter, email – even through a QR code. <p><a href="http://www.windowsphone.com/en-us/store/app/wikipedia/fd40c569-2681-48df-9ff3-53ffd80aa9b5"><img title="clip_image010" style="border-left-width: 0px; border-right-width: 0px; background-image: none; border-bottom-width: 0px; padding-top: 0px; padding-left: 0px; display: inline; padding-right: 0px; border-top-width: 0px" border="0" alt="clip_image010" src="http://blogs.windows.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-53-84-metablogapi/clip_5F00_image010_5F00_41FE3ADA.png" width="154" height="154"></a> <a href="http://www.windowsphone.com/en-us/store/app/wikipedia/fd40c569-2681-48df-9ff3-53ffd80aa9b5"><img title="clip_image012" style="border-left-width: 0px; border-right-width: 0px; background-image: none; border-bottom-width: 0px; padding-top: 0px; padding-left: 0px; display: inline; padding-right: 0px; border-top-width: 0px" border="0" alt="clip_image012" src="http://blogs.windows.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-53-84-metablogapi/clip_5F00_image012_5F00_7A3CB1F2.png" width="173" height="288"></a> <p>That pocket encyclopedia is up against <a href="http://www.windowsphone.com/en-us/store/app/voicetranslator/f09151c4-de81-44c5-b540-7830d5a5c192" target="_blank">VoiceTranslator</a>, an app developed by Sergey Svinolobov of Waltham, Massachusetts. Sergey won his first software contest – for programming calculators – in his home country of Ukraine at the young age of 15, and nearly 30 years later, he’s still developing and entering contests. Using the Windows Phone speech feature and integrated with the cloud, VoiceTranslator listens to you say a word or phrase, then says it back to you in almost any language you choose – more than 60 different languages are available. Sergey loves his “Star Trek gadget.” He said he’s released translator apps in the past, but recently thought, he said with a smile, “Why do I have to type?” <p><a href="http://www.windowsphone.com/en-us/store/app/voicetranslator/f09151c4-de81-44c5-b540-7830d5a5c192"><img title="clip_image014" style="border-left-width: 0px; border-right-width: 0px; background-image: none; border-bottom-width: 0px; padding-top: 0px; padding-left: 0px; display: inline; padding-right: 0px; border-top-width: 0px" border="0" alt="clip_image014" src="http://blogs.windows.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-53-84-metablogapi/clip_5F00_image014_5F00_07369204.png" width="154" height="154"></a> <a href="http://www.windowsphone.com/en-us/store/app/voicetranslator/f09151c4-de81-44c5-b540-7830d5a5c192"><img title="clip_image016" style="border-left-width: 0px; border-right-width: 0px; background-image: none; border-bottom-width: 0px; padding-top: 0px; padding-left: 0px; display: inline; padding-right: 0px; border-top-width: 0px" border="0" alt="clip_image016" src="http://blogs.windows.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-53-84-metablogapi/clip_5F00_image016_5F00_2D98754F.jpg" width="151" height="250"></a> <p>If you still can’t make up your mind on which to <a href="https://www.facebook.com/windowsphone/app_289569661171794" target="_blank">vote</a> for, check out Laura Foy’s Hot Apps show, which highlights each of these top apps. <p>&nbsp; <iframe style="height: 288px; width: 512px" src="http://channel9.msdn.com/Shows/Hot-Apps/Hot-Apps-Windows-Phone-Next-App-Star-Special-Edition/player?w=512&amp;h=288" frameborder="0" scrolling="no"></iframe> <p>Congratulations to our final 4, and thanks to all of our amazing Windows Phone Next App Star participants for their innovation and creativity. <p>&nbsp; <p><em>* No purchase necessary. Open to registered Facebook account holders 18+. Ends 4/8/2013. </em><a href="http://nas.newwp.it/rules" target="_blank"><em>See Official Rules for details</em></a><em>.</em><div style="clear:both;"></div><img src="http://blogs.windows.com/aggbug.aspx?PostID=588241&AppID=5384&AppType=Weblog&ContentType=0" width="1" height="1"> http://blogs.windows.com/windows_phone/b/wpdev/archive/2013/04/05/windows-phone-next-app-star-the-final-four-apps-and-the-developers-behind-them.aspx Windows Phone Dev Blog 4239 2013-04-05T23:29:38 Published Second Pluralsight Course: Windows 8 From Design to Delivery http://feedproxy.google.com/~r/JesseLiberty-SilverlightGeek/~3/QTRL5LaLN2M/ Jesse Liberty [MS] 4238 2013-04-05T21:47:53 How to debug pointer capture In our previous blog post, we mentioned some of the challenges developers face in creating keyboard-friendly applications, and we presented our FocusWatcher class for debugging these issues in Windows Store apps. The keyboard is just one way an app may receive input; Windows Store apps can also get input from mouse, stylus, and of course, touch. Modern tablets and touch screens often support multiple simultaneous touch inputs, in fact. All these different inputs can make it tough for developers to figure out what&#8217;s going on, especially when combining... http://www.zagstudio.com/blog/1346 Bea Stollnitz 4237 2013-04-04T07:08:25 Spinning a Record Like a DJ in Windows 8 <p> Windows 8 has some exceptionally powerful facilities for working with sound, and in <a href="http://msdn.microsoft.com/en-us/magazine/dn166936.aspx">the latest installment of the DirectX Factor column in <i>MSDN Magazine</i></a> I show how to display a file picker that allows you to select an MP3 or WMA file from your Windows 8 Music Library, display cover art as well as album and artist information, load and decode the file using the Media Foundation APIs, and shovel the resultant audio buffers into XAudio2 voices to play back the file. </p><p>... more ...</p> http://www.charlespetzold.com/blog/2013/04/Spinning-a-Record-Like-a-DJ-in-Windows-8.html Charles Petzold 4236 2013-04-02T12:44:18 Follow Up - Hochwertiger Content für Entwickler - Machen wir doch was! <p>Vor einigen Tagen hatte ich im Beitrag <a title="Hochwertiger Content für Entwickler - Machen wir doch was!" href="http://devtyr.norberteder.com/post/Hochwertiger-Content-fur-Entwickler-Machen-wir-doch-was!.aspx">Hochwertiger Content für Entwickler - Machen wir doch was!</a> aufgerufen, eine einfache Möglichkeit zu schaffen, an hochwertigen Content aus der Community zu kommen. Das Echo war recht groß und schnell ergab ich ein äußerst fruchtbares Gespräch mit <a title="Ralf Westphal" href="http://blog.ralfw.de/" target="_blank">Ralf Westphal</a>. Aber auch viele andere aus der Community teilten ihre Meinung mit mir. Teils mit Zustimmung, teils mit konstruktiven Hinweisen auf bestehende “Lösungen”.</p> <h2>Warum überhaupt?</h2> <p>Im letzten Beitrag ging das <strong>Warum</strong> nicht eindeutig hervor. Daher möchte ich dazu ein paar Worte teilen, die erklären warum ich der Meinung bin, etwas Neues müsste her.</p> <p>Mir ist durchaus bewusst, dass es zahlreiche Blogs gibt, die wirklich gute Beiträge liefern, mitunter finden sich auch an anderen Stellen feine Artikel, oder auch Grundlagendiskussionen, die ein jeder gelesen haben sollte. Das ist positiv und gut so. Für aktive und langjährige Mitglieder der Community ist das Finden dieser Ressourcen kein Thema, hat doch ein jeder die entsprechenden Quellen aktiv am Radar, oder ist sogar selbst dafür verantwortlich. Dennoch brauchen auch hier die einen oder anderen Perlen einige Zeit, gefunden zu werden.</p> <p>Der Einsteiger hat es da schon schwieriger. Thema auswählen, Google oder Bing auf Treffer durchforsten und die gefundene Lösung wird schon in Ordnung gehen. Eine tiefergehende Prüfung hinsichtlich Auswirkungen etc. kann erfahrungsbedingt oftmals nicht durchgeführt werden. Er muss sich also auf das Gefundene verlassen, oder bei schlechtem Bauchgefühl dem nächsten Link vertrauen. Dabei zählt nicht immer Qualität. Wer <strong>mehr</strong> Content produziert (und die passenden Keywords) steht weiter oben, nicht zwangsweise der empfehlenswerte. So einfach, so schlecht.</p> <p>Gab es vor 10 Jahren noch ein paar zentrale Player, die Content anzubieten hatten, findet sich dieser nun an allen Ecken und Enden. Guter, wie auch Schlechter. Das Problem dabei: Der gute Content ist durch vermehrte Werbebeiträge etc. teilweise ganz gut versteckt. Blogs haben in der Regel auch vielfach nicht die Suchmaschinenrelevanz von größeren/großen Verlagen, teilweise jedoch weit bessere Inhalte.</p> <p>Für mich ist das der Punkt an dem eine Lösung her muss. Sowohl für mich als auch für andere, besonders Einsteiger, die es wirklich sehr schwer haben. Das mag der eine oder andere noch nicht nachvollziehen können, aber dazu komme ich gleich.</p> <h2>Bestehende Lösungen</h2> <p>In den <a title="Kommentare zu &quot;Hochwertiger Content für Entwickler - Machen wir doch was!&quot;" href="http://devtyr.norberteder.com/post.aspx?id=a560bc0c-5584-4a71-8da2-113ab8ea6cf6#disqus_thread">Kommentaren</a> des ersten Beitrags wurden einige deutschsprachige Alternativen genannt, die gerade der eingeschworenen Community wohlbekannt sind. Viele werden diese Dienste auch zu schätzen wissen. Es liegt mir fern diese als schlecht hinzustellen, dennoch möchte ich sie hinterfragen und Problemstellen aufzeigen.</p> <p><a title="DotNetGerman Bloggers" href="http://blogs.dotnetgerman.com/" target="_blank">DotNetGerman Bloggers</a>(und Aggregate im Allgemeinen) <br />Das ist wohl das Community-Feed-Aggregat der ersten Wahl für ausreichend Inhalte. Wenn ich korrekt gezählt habe, dann sind zum jetzigen Zeitpunkt 109 mehr oder weniger aktive Blogger gelistet. Das ist schon eine ganz schöne Menge, an Bloggern und gelieferten Content. Wunderbar. Dennoch bietet dieses Aggregat (wie alle anderen) einige Nachteile:</p> <ul> <li><strong>Zuviel Rauschen</strong>. Zu nahezu jedem Thema finden sich zahlreichende Blogger. Da viele nicht abgeneigt sind, News zu ihrem Fachgebiet zu verfassen, erscheint dieselbe News zigfach in der Liste auf. Ebenso verhält es sich mit Themen, die eigentlich nicht für das Aggregat von Relevanz sind. So finden sich Beiträge anderweitigen - teils branchenfremden - Themen, teilweise auch private. Das interessiert mich nicht, wenn ich mich zu aktuellen .NET Themen informieren möchte.</li> <li><strong>Fehlende Wartung</strong>. Aggregate haben es an sich, dass keine oder kaum Wartung statt findet. Aufgenommen wird, was aktuell ins Schema passt. Die Ausrichtung eines Bloggers (dahinter steckt in unserem Fall ja meist ein Entwickler) ändert sich jedoch im Laufe der Zeit. Dies hat meist berufliche Hintergründe. So findet oft sehr schnell eine Verlagerung in gänzlich unterschiedliche Themengebiete statt. Oftmals wird überhaupt die Plattform gewechselt. Beiträge gehen dann am eigentlichen Thema vorbei. Das führt wiederum zum ersten angeführten Problem: Zuviel Rauschen.</li> <li><strong>Keine Kategorisierung</strong>. Ich als Leser des Aggregats habe keine Möglichkeit nach Themen zu filtern, die mich aktuell interessieren. Hier kann ich nur&#160; mühsam die einzelnen interessanten Feeds nehmen und meine eigene Liste pflegen. Damit entferne mich jedoch vom Dienst und nutze ihn nur als Input-Geber. Zukünftige empfehlenswerte Beiträge bleiben mir verborgen, da diese natürlich nicht in meinen abonnierten Feeds enthalten sind (so ich nicht zufällig auf diese Quelle stoße).</li> <li><strong>Kurze Vorhaltezeit</strong>. Das genannte Aggregat (wie auch die meisten Alternativen) hält Beiträge nur für kurze Zeit im “Angebot”. Ältere Beiträge können weder durch eine Suchfunktion noch anderweitig gefunden/angezeigt werden. Somit hat dieses Medium lediglich tagesaktuelle Relevanz für mich. Heute interessiere ich mich für dieses Thema, morgen für ein anderes. Wofür ich mich morgen interessiere, kann ich heute jedoch nicht beurteilen. Ergo fällt es auch schwer die richtigen Beiträge für eine spätere “Behandlung” zu markieren.</li> <li><strong>Kein Qualitätshinweis</strong>. Ich muss einen interessant klingenden Beitrag lesen um ihn beurteilen zu können. Es gibt kein Bewertungssystem an dem ich mich festhalten kann, welches quasi als Leitschienen fungiert. Das kostet Zeit und birgt die Gefahr in sich, den am Schluss des Beitrags formulierten Mehrwert nicht als solches zu erkennen (weil ich beim ersten “Scannen” gar nicht so weit komme).</li> </ul> <p><a title="dotnet-kicks.de" href="http://dotnet-kicks.de/" target="_blank">dotnet-kicks.de</a> <br />Auch dieses Projekt ist der Community gut bekannt. Mittlerweile werden keine weiteren Beiträge mehr eingestellt. Ob das Projekt eingestellt wurde, oder einfach kein Interesse mehr besteht, kann ich nicht sagen. Fakt ist, dass es ein Klon von vor Jahren boomender Bewertungssysteme ist (welches genau können die <a title="Über .NET Kicks" href="http://dotnet-kicks.de/docs/about" target="_blank">Betreiber</a> sicherlich beantworten). Ein einfaches System Internetinhalte zu “bewerten” und zu kategorisieren. Die immer geringeren Benutzerzahlen zeigen jedoch, dass derartige Dienste überholt sind.</p> <ul> <li><strong>Kein Qualitätshinweis</strong>. Aber hey, ich habe es “gekickt”. Das zeugt doch von Qualität. Nein, das tut es nicht. Ich als “Leser” kann nicht erkennen warum diese Quelle empfohlen wurde. Ist es ein Freundschaftsdienst, oder ist der Inhalt wirklich so gut. Viele “Kicks” bekommt oft auch, wer über ein trendy Thema berichtet hat. Kommentare und Kategorisierung sind zwar möglich, werden jedoch nicht oder kaum genutzt, da dies kein Teil des Rating-Systems ist. Für mich als Leser wenig hilfreich.</li> <li><strong>Fehlende Accountability</strong>. Beiträge können unter Pseudo-Benutzern oder gar anonym eingereicht werden. Dadurch entsteht ein gewaltiges Rauschen. Wer mit seinem Namen einsteht und (daher) auf seine Reputation bedacht ist, wird besonders darauf achten, guten und sinnvollen Content einzustellen. </li> <li><strong>Fehlende “Mitmach-Motivation”</strong>. Gamification ist das Stichwort. Oftmals fehlt es an einem Anreiz Inhalte einzustellen. Self-Marketing steht hier ganz weit vorne. Weitere Kriterien sind aber die persönliche Profilierung, die nicht nur durch eigene Inhalte zustande kommt, sondern auch als Quell empfehlenswerter Inhalte. </li> <li><strong>Mangelnde Usability</strong>. In den meisten Fällen muss Titel und Beschreibung der einzustellenden Beiträge manuell eingetragen werden. Dies kann auf Basis der URL automatisch geschehen. Der Fokus wird hierbei auf die falsche Stelle gelegt. Wichtiger wäre eine sinnvolle Bewertung, weniger die Erfassung ohnehin verfügbarer Informationen.</li> </ul> <p>Beide Lösungen haben auch gemeinsam, dass es wenig Personalisierungsmöglichkeiten gibt. Integrationen zu “Read later”-Diensten oder gar als eigene Implementierung sind nicht vorhanden. Es fehlt mir persönlich eine schnelle Möglichkeit empfehlenswerte Beiträge in einer Liste zu hinterlegen, die ich mir dann in aller Ruhe ansehen kann. Ich bin gezwungen Schritte unabhängig des Dienstes vorzunehmen um dieses Ziel zu erreichen. Ein “Kontextbruch” der es mir erschwert, mein Ziel zu erreichen.</p> <h2>Lösungsvorschlag</h2> <p>Die vorgeschlagenen Alternativen bieten also viele Nachteile, die behoben werden können. Zwar bedeutet dies nicht per se, dass die Dienste damit obsolet sind oder nicht genutzt werden sollten. Es geht aber besser - mit weit höherem Mehrwert. Genau die Schaffung dieses Mehrwertes ist das Ziel.</p> <p>Wie also kann eine mögliche Lösung aussehen? Nachfolgend möchte ich die aufgekommenen Erkenntnisse zusammen fassen und zur Diskussion in den Raum stellen. Es ist jeder herzlich willkommen seine Meinung kund zu tun. Gerne auch konstruktive Kritik, da diese bekanntlich den größten Mehrwert bietet. </p> <ul> <li><strong>Content-Sharing</strong>. Entgegen meines ersten Vorschlages soll kein neuer Content generiert, sondern auf vorhandenen verlinkt werden. Es gibt ausreichend qualitativ hochwertige Beiträge.</li> <li><strong>Accountability</strong>. Beiträge können nur von Benutzern eingestellt werden, die mit vollem Namen registriert sind und mit solchem für ihre Quellen einstehen. Anonyme Beiträge sind nicht erlaubt, auch Phantasienamen werden nicht akzeptiert.</li> <li><strong>Rating</strong>. Eine Bewertung ist immer mit einem Grund zu versehen. Warum wird dieser Inhalt als empfehlenswert eingestuft? Was ist der tatsächliche Mehrwert? Wie hat mir der Beitrag weiter geholfen? Ein einfaches “Kick it” ist nicht ausreichend einen Beitrag zu empfehlen. Jeder angemeldete Benutzer kann ein Rating abgeben. Dieses ist wiederum mit einem ausreichenden Kommentar zu versehen.</li> <li><strong>Tagging</strong>. Es gibt kein Einstellen ohne Tagging. Beiträge sind mit passenden Tags zu versehen. Darauf aufbauend kann ein entsprechendes Einfächern in Kategorien stattfinden. Auch eine Suche kann darauf (unter anderem) abgestimmt werden.</li> <li><strong>Redaktionelle Betreuung</strong>. Eingestellte Beiträge werden von “Fachbereichs-Verantwortlichen” freigegeben. Dies bedeutet natürlich einen entsprechenden Aufwand, stellt jedoch sicher, dass passende Begründungen und Tags gesetzt wurden. Ebenfalls kann darüber die Relevanz und der Anspruch an die Qualität der Artikel gewährleistet werden. Hier stelle ich mir ein Team von Themen-Verantwortlichen vor, die sich eben diesem annehmen.</li> <li><strong>Gamification</strong>. Ein öffentliches Ranking-System für Beitragende soll spielerisch sicherstellen, dass die Motivation zum Einstellen neuer Beiträge gegeben ist. Dieses soll nicht auf Masse, sondern auf Qualität basieren. Bewertungen von einem höheren Ranking zählen hierbei mehr als dies bei einem unteren Rang der Fall ist.</li> </ul> <p>Zu diesen Anforderungen bestehen natürlich weitere. Diese sind aber hauptsächlich in der Usability durch den Besucher zu finden, aber auch der Einsteller soll davon profitieren. So sollten beim Einstellen von Beiträgen die relevanten Informationen automatisch bezogen werden (wie man das auch von Facebook, Google+ und Konsorten bereits gewöhnt ist). Stattdessen sollte der Fokus auf die Bewertung des Inhaltes gelenkt werden.</p> <p>Dem Besucher muss es ermöglicht werden, schnell an für ihn relevante Informationen zu gelangen. Registrierte Benutzer sollten zudem in den Vorteil von “Read Later”-Listen, persönlichen Filtern und Benachrichtigungen kommen. </p> <p>Hinter den einzelnen Punkten liegen (teilweise) bereits konkrete Ideen zur Umsetzung. Bevor ich diese jedoch groß kund mache, möchte ich diese Zusammenfassung nochmals zur Abstimmung in die Runde werfen. Mir ist eure Meinung sehr wichtig und möchte einen tatsächlichen Mehrwert mit einer neuen Plattform liefern, die natürlich - wie jede andere Plattform - auch mit Anfangsproblemen zu kämpfen haben würde. Nur wenn ein Erfolg absehbar ist, wäre eine Umsetzung sinnvoll. Ich würde mich daher über viele Meinungen freuen. Ist der eingeschlagene Weg richtig, fehlt noch etwas, oder befinden wir uns hier generell auf einem Holzweg?</p> http://devtyr.norberteder.com/post/Follow-Up-Hochwertiger-Content-fur-Entwickler-Machen-wir-doch-was!.aspx Norbert Eder [MVP] 4235 2013-04-02T10:54:14 Yet Another Podcast #94–Phil Haack: Git http://feedproxy.google.com/~r/JesseLiberty-SilverlightGeek/~3/dpq6NRMRW78/ Jesse Liberty [MS] 4234 2013-04-02T19:24:21 Over 9,000 apps aimed for fame, 16 remain - You decide Windows Phone Next App Star <p>As we head into the final stretch of consumer voting in the <a href="https://www.facebook.com/windowsphone/app_289569661171794" target="_blank">Windows Phone Next App Star</a> contest, I wanted reach out to the developer community with an update. <p>We created the <a href="http://blogs.windows.com/windows_phone/b/wpdev/archive/2013/01/14/next-app-star-see-your-app-featured-in-a-windows-phone-tv-ad.aspx" target="_blank">contest</a> to shine the spotlight on your creations, and to help get these apps exposed to more customers. We started with <a href="http://dev.windowsphone.com/en-US/featured/next-app-star" target="_blank">64 finalists</a> (32 paid and 32 free apps), out of 9,000 entrants from 79 markets, and you’ve narrowed the field to 16 apps with head-to-head, bracket-style voting. To date, over half a million total votes have been cast and we expect the excitement to rise as we enter the final ten days. <p>Each of the apps in the contest is unique, and offers features specific to its target audience—this really highlights the diversity of the Windows Phone Store app catalog. I wanted to take a minute to look at one match-up in particular that caught my attention, because it showcases the creativity of our developer community: the match-up between the addicting game Brain Cube Reloaded from XIMAD in San Francisco, CA, and the popular VoiceTranslator from SeNSSoft in Waltham, MA. <p>Up first is <a href="http://www.windowsphone.com/en-us/store/app/brain-cube-reloaded/acc50661-f879-4175-9d6c-616158a8235e" target="_blank">Brain Cube Reloaded</a>, a follow-up on the original Brain Cube, a multi-level puzzle game. Users are challenged to manipulate tumbling blocks into place. With its increasing levels of difficulty, one user called the game "intense and challenging," and another said it’s "crazy addicting." The graphics on this game are very engaging, which, combined with a well thought-out plot across the levels and increasing difficulty as you progress, is sure to be a must-have for Windows Phone users. <table border="0" cellspacing="0" cellpadding="0" width="527"> <tbody> <tr> <td valign="top" width="250"> <p><a href="http://blogs.windows.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-53-84-metablogapi/clip_5F00_image0014_5F00_19A5E257.png"><img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="clip_image001[4]" border="0" alt="clip_image001[4]" src="http://blogs.windows.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-53-84-metablogapi/clip_5F00_image0014_5F00_thumb_5F00_78B26FAF.png" width="210" height="126"></a></p></td> <td valign="top" width="275"> <p><a href="http://blogs.windows.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-53-84-metablogapi/clip_5F00_image0024_5F00_10D5DA0B.png"><img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="clip_image002[4]" border="0" alt="clip_image002[4]" src="http://blogs.windows.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-53-84-metablogapi/clip_5F00_image0024_5F00_thumb_5F00_7701A3DB.png" width="210" height="126"></a></p></td></tr></tbody></table> <p>Next up is <a href="http://www.windowsphone.com/en-us/store/app/voicetranslator/f09151c4-de81-44c5-b540-7830d5a5c192" target="_blank">VoiceTranslator</a>. This unique app provides a cloud-based, voice-activated language translator that supports numerous languages. As global connectivity becomes a greater part of our everyday lives, this type of app has a bright future, and the very high ratings from thousands of reviews indicate that VoiceTranslator really hits the mark with Windows Phone users. <table border="0" cellspacing="0" cellpadding="0" width="363"> <tbody> <tr> <td valign="top" width="162"> <p><a href="http://blogs.windows.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-53-84-metablogapi/clip_5F00_image0034_5F00_0AAE8D70.png"><img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="clip_image003[4]" border="0" alt="clip_image003[4]" src="http://blogs.windows.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-53-84-metablogapi/clip_5F00_image0034_5F00_thumb_5F00_6E319B8F.png" width="126" height="210"></a></p></td> <td valign="top" width="199"> <p><a href="http://blogs.windows.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-53-84-metablogapi/clip_5F00_image0044_5F00_7B97AE95.png"><img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="clip_image004[4]" border="0" alt="clip_image004[4]" src="http://blogs.windows.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-53-84-metablogapi/clip_5F00_image0044_5F00_thumb_5F00_2D231C2B.png" width="126" height="210"></a></p></td></tr></tbody></table> <p>As the brackets narrow in on the Windows Phone Next App Star champion, you’ll see more match-ups like this one: very different apps going head-to-head to win fan votes and move to the next round. It has been fun getting to this point, and I am excited to see how users continue to support their favorite apps. And, we’ll continue <a href="http://blogs.windows.com/windows_phone/b/windowsphone/archive/2013/03/29/meet-the-windows-phone-next-app-star-finalists-plus-new-contest-collections-debut.aspx" target="_blank">promoting the contest and the finalist apps</a> as they continue to gain broad exposure for the great work of the community. With four more rounds to go, this is still a wide-open contest to see who will be named the grand prize winner. <p>If you haven’t had the opportunity to vote yet, I think you’ll want to check out the work of your colleagues. There are less than 12 hours left in this round. As an added incentive, we’re giving away a Nokia Lumia 920 every day as part of our voter sweepstakes through the last day of the contest, April 8, 2013, so keep coming back and vote in every round*. <p>&nbsp; <p><i>*</i> <i>No purchase necessary. Open to registered Facebook account holders 18+. Ends 4/8/2013. </i><a href="http://nas.newwp.it/rules" target="_blank">See Official Rules for details.</a><div style="clear:both;"></div><img src="http://blogs.windows.com/aggbug.aspx?PostID=588207&AppID=5384&AppType=Weblog&ContentType=0" width="1" height="1"> http://blogs.windows.com/windows_phone/b/wpdev/archive/2013/03/29/over-9-000-apps-aimed-for-fame-16-remain-you-decide-windows-phone-next-app-star.aspx Windows Phone Dev Blog 4233 2013-03-29T22:13:00 31 días de Windows 8 | Día 14: Geo localización Este artículo es una traducción de “Día 14: Geo localización” de Jeff Blakenburg. Puedes encontrar aquí la versión original en inglés. Hoy vamos a hablar acerca de uno de mis elementos favoritos e cualquier plataforma de desarrollo. Tener el conocimiento de la ubicación del usuario (o más específicamente, del dispositivo) hace mejor a cualqueir aplicación. Aquí están algunos ejemplos de como: Aplicaciones de línea de negocios Conoce que planta estará visitando tu gerente hoy de modo que el tenga toda la documentación apropiada para la maquinaria en esa instalación. Además tu aplicación podrá navegar e fotos y nombres de los empleados en ese lugar así ellos estarán más preparados cuando el llegue. Juegos Identifica otros jugadores cercanos y ten la oportunidad de retarlos a un juego. No solo mejorará potencialmente la latencia de red para ellos sino que también podrás formar un gremio de nada. Crea un juego global de parejas, basado únicamente en la proximidad, no en contacto. Mapas Duh. Haremos esto como una parte del código de ejemplo de hoy. Viajes Reconoce la distancia del usuario y tiempo de viaje potencial desde el aeropuerto y alértalos  de caer en la urgencia de perder su vuelo. Además, una vez [...] http://blogs.ligasilverlight.com/2013/03/31-das-de-windows-8-da-14-geo-localizacin/ La Liga Silverlight 4232 2013-03-29T16:00:26 31 días de Windows 8 | Día 15: El teclado en pantalla Este artículo es una traducción del día #15 en la serie 31 días de Windows 8 de Jeff Blakenburg. Hoy vamos a dar un vistazo al teclado en pantalla de Windows 8. Microsoft no parece hacer una distinción de nombres entre el teclado que aparece cuando haces tap con tu dedo en un control TextBox y el que encuentras en el Centro de Accesibilidad. Vamos a enfocarnos hoy en el teclado que se ve como esto: Por otro lado, el teclado de Accesibilidad, es una herramienta diseñada para hacer más fácil el uso de la computadora a quienes no pudieran usar el teclado de ninguna forma. Lo puedes encontrar abriendo el centro de Accesibilidad en tu maquina… Y haciendo click en la opción de “Iniciar Teclado en Pantalla” vas a descubrir un teclado que se ve como este: El enfoque principal de este teclado es permitir al usuario usar Windows completamente sin tener un teclado conectado a su computadora. No es personalizable, y no responde a ningún código que escribamos en este artículo. El teclado es también una de las pocas ventana que pueden ser puestas sobre la pantalla de Inicio. Míralo aquí: OK, así hemos usado los primeros párrafos [...] http://blogs.ligasilverlight.com/2013/03/31-das-de-windows-8-da-15-el-teclado-en-pantalla/ La Liga Silverlight 4231 2013-03-29T17:28:00 Visual Studio 2010 Tooltip Assassin I don’t know about you, but the Visual Studio 2010 XAML and C# editor tooltips don’t provide much value.&#160; When presenting they are a distraction. When I collapse a region of XAML and the mouse wonders over the collapsed region I get this enormous tooltip painted over the XAML I’m looking at. I finally decided [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=karlshifflett.wordpress.com&#038;blog=1204518&#038;post=1822&#038;subd=karlshifflett&#038;ref=&#038;feed=1" width="1" height="1" /> http://karlshifflett.wordpress.com/2013/03/29/visual-studio-2010-tooltip-assassin/ Karl Shifflett [MS] 4230 2013-03-29T17:22:26 Windows 8 Store Applications Vs. WPF Applications http://feedproxy.google.com/~r/JesseLiberty-SilverlightGeek/~3/S9m8Qmho3b4/ Jesse Liberty [MS] 4229 2013-03-29T16:47:35 Arbeiten wir an der Kommunikation! Vor einigen Monaten habe ich darüber geschrieben, was denn ein <a title="Was ein Team-Leader für sein Entwicklungsteam tun kann" href="http://devtyr.norberteder.com/post/Was-ein-Team-Leader-fur-sein-Entwicklungsteam-tun-kann.aspx">Team-Leader für sein Team tun kann</a> bzw. überhaupt sollte. Nun ist doch ein wenig Zeit vergangen und ich habe unterschiedlichste Experimente vorgenommen - hauptsächlich um die Kommunikation und das Teamgefüge zu verbessern. Meine Erfahrung dabei: die kleinsten Umstellungen wirken am besten! In diesem Beitrag möchte ich aus den Erfahrungen der vergangenen Monate berichten. <h2>Ausgangslage</h2> <p>Mein Team hat harte Zeiten hinter sich. Auch wurde es immer wieder durcheinander gewürfelt. Neue Kollegen, Splittung in mehrere Teams, erneute Zusammenführungen und vieles mehr ist in den letzten Jahren passiert. Gepaart mit zu viel Arbeit und zu wenig Ressourcen ist das für die Teamkultur nicht gerade förderlich. Im Gegenteil. Langsam aber sicher entwickelt sich jeder zum Einzelkämpfer und verhält sich dementsprechend abgeschottet. Eine Entwicklung die bei uns quasi über Jahre ging. </p> <h2>Kleine Änderungen führen zum Ziel</h2> <p>Oder zumindest in die richtige Richtung. Nachfolgend möchte ich einige der vorgenommenen Veränderungen aufführen. Ich gebe jedoch zu bedenken, dass jedes Team anders ist. Einige der besprochenen Probleme werden in anderen Teams nicht auftreten, dafür möglicherweise andere Schwachstellen.</p> <h3>Umbau Büro</h3> <p>Ganz wichtig ist das Klima im Büro. Wir hatten über Jahre hinweg ein sehr steriles Büro. Kaum Pflanzen, wenig Drumherum. Durch einen neuen Büro-Plan haben wir ein wesentlich größeres Büro für unser Team bekommen und haben dieses gemeinsam geplant. Die Tische wurden so aufgestellt, dass eine direkte Kommunikation vereinfacht wird, Beamer für Präsentationen, Code Reviews (oder aber auch manchmal Skifahren), Konferenzen. Ein eigener Besprechungstisch, zur Unterhaltung ohne PC. Auch ist es mittlerweile sehr grün. So mancher mag nun lächeln (was auch gesund ist), aber selbst Duftkerzen haben ihren Weg ins Büro gefunden. Auch sonstiger Dekor darf nicht fehlen, obwohl wir ein reines Männerbüro sind.</p> <p>Dies wirkt sich nur in kleinen Teilen auf die tatsächliche Kommunikation aus, jedoch ungemein auf das gesamte “Raumklima”.</p> <h3>Kopfhörer</h3> <p>Musik ist heute immer und überall. Gerade am Arbeitsplatz ist man schnell dazu geneigt, einen Kopfhörer aufzusetzen. Für komplexe Problemstellungen ist es ein einfaches Mittel zur Abschottung und Fokussierung. Nachteilig daran ist jedoch, dass dies schnell zur Gewohnheit wird und das Team die Arbeitszeit mit aufgesetzten Kopfhörern verbringt. Wie also bereits angesprochen: Alles Einzelkämpfer. Keine gute Ausgangslage für eine funktionierende Kommunikation.</p> <p>Als Lösung haben wir uns darauf geeinigt, einen Medienserver inkl. Boxen aufzustellen. Musik aus unterschiedlichen Genres wird darüber gespielt (damit für jeden etwas dabei ist, wobei sich glücklicherweise unser Musikgeschmack deckt). Kopfhörer sind - laut Team-Bescheid - nur mehr für Spezialfälle vorgesehen.</p> <h3>Team-Chat</h3> <p>Neben der täglichen Arbeit läuft ein Team-Chat über den in den letzten Jahren sämtliche Fragestellungen/Probleme/etc. abgehandelt wurden. Hierbei spielt auch mit, dass mein Team über zwei Standorte verteilt ist und so eine einfache Kommunikationsmöglichkeit geboten wird. Das bietet zwar den Vorteil, dass innerhalb der Nachrichten gesucht werden kann, aber dies bringt auch einen gewaltigen Nachteil mit sich: Vielfach werden wichtige Fragen einfach nicht beantwortet. Dafür gibt es viele Gründe:</p> <ul> <li>Man will aktuell nicht gestört werden</li> <li>Es ist einem schlicht zu blöd jetzt eine Antwort schreiben zu müssen</li> <li>Die Benachrichtigungen wurden deaktiviert</li> <li>Etc.</li> </ul> <p>Mittlerweile haben wir den Team-Chat noch für wichtige Ankündigungen, mehr aber in Wirklichkeit auch nicht mehr. Vielmehr ist es nun so, dass jemand mit Frage aufsteht, seine Frage an das Team formuliert und sich einige Minuten später wieder mit einer Lösung hinsetzt. Die anfängliche Befürchtung ständig aus der Arbeit gerissen zu werden hat sich nicht bewahrheitet. Es kristallisiert sich heraus, dass die Fragen immer weniger, dafür jedoch schwergewichtiger werden. Durch die Diskussionen um die beste Lösung wird sehr viel Wissen transferiert, das dem gesamten Team zu Gute kommt. Entsprechend verlagern sich auch die Themengebiete der Fragen.</p> <p>Da war doch noch etwas: zwei Standorte. Im ersten Schritt versucht der Standort selbst seine Frage zu klären (die Ergebnisse werden in diesem Fall jedoch schon über den Team-Chat mitgeteilt), ist dies nicht möglich gibt es ein “Online-Meeting”.</p> <h3>Online-Meetings</h3> <p>Wie bereits angesprochen: Mein Team ist über zwei Standorte verteilt. Dies macht Meetings nicht gerade einfacher. Ein klassisches Online-Meeting-System haben wir nicht im Einsatz. Bis dato wurden alle über den gewählten Kommunikationskanal angerufen, saßen vor ihren Rechnern mit Kopfhörer und haben mehr oder weniger am Meeting teilgenommen. Eher weniger.</p> <p>Auch dies läuft nun anders: Bei Meetings setzen wir uns nun alle gemeinsam an unseren Besprechungstisch, oder stellen uns einfach zusammen (wie wir das in unseren Standup-Meetings machen - was <a title="Ralf Westphal" href="http://blog.ralfw.de/search?q=scrum">Ralf</a> im Übrigen nicht gut findet). Laptops sind nur für den “Schriftführer” zugelassen, es soll keine Ablenkung geben. Damit die Übertragung des Gesprochenen gut funktioniert, haben wir uns ein 3-teiliges Flächenmikrofon gekauft und ausgelegt (anfänglich haben wir günstigere Lösungen probiert, die alle nicht zufriedenstellend funktioniert hatten).</p> <p><a href="http://devtyr.norberteder.com/image.axd?picture=WP_000586.jpg"><img title="Flächenmikrofon AKG CBL 410 PCC" style="border-top: 0px; border-right: 0px; background-image: none; border-bottom: 0px; padding-top: 0px; padding-left: 0px; border-left: 0px; display: inline; padding-right: 0px" border="0" alt="Flächenmikrofon AKG CBL 410 PCC" src="http://devtyr.norberteder.com/image.axd?picture=WP_000586_thumb.jpg" width="350" height="262" /></a></p> <p>Im nächsten Schritt werden wir wohl auch ein wenig in Richtung Videoübertragung gehen um die entfernten Teammitglieder noch besser eingebunden zu haben.</p> <h3>Gemeinsame Aktivitäten</h3> <p>Als nächsten Schritt unternehmen wir nun monatlich etwas gemeinsam. Nur das Team. Nicht weiter aufregend: Wir gehen Steak essen. Wie Männer das gerne tun. Die ungezwungene Atmosphäre, das lockere Beisammensitzen, das Besprechen von Anliegen auf neutralem Boden ist ein gewaltiger Nährboden für das Zusammenwachsen des Teams.</p> <p>Unser Unternehmen veranstaltet zwar in mehr oder weniger regelmäßigen Abständen größere Zusammenkünfte mit gemeinschaftlichem Essen, Wettkämpfen und mehr. Es ist jedoch extrem wichtig, dass jedes Team für sich selbst auch einen Weg und ein paar Stunden Freizeit findet, in kleiner Runde etwas zu unternehmen. Auf Dauer gesehen bringt dieser Aspekt aus meiner Sicht am meisten. Es verändert sich der tägliche Umgang miteinander merkbar. Dabei geht es weniger darum Freunde für’s Leben zu finden, sondern sich vielmehr auf eine gemeinsame Basis der Kommunikation zu “einigen” - was im übrigen automatisch passiert.</p> <h2>Fazit</h2> <p>Natürlich hat es noch weitere kleinere Änderungen gegeben, die angesprochenen waren mitunter wohl die größten bis dato. Jedes Team hat andere Baustellen die man erkennen und aktiv (vor allem gemeinsam) angehen und lösen muss. Da mag man durchaus zeitweise ratlos durch die Gegend laufen, aber es gibt Möglichkeiten und die einfachsten ist dann doch meist die besten. Weniger Egoismus und mehr Gemeinschaft im Team birgt für jeden Vorteile, vor allem aber enden Anschwärzungen, das Herumreiten auf Bugs anderer und gar schlimmere Vorkommnisse. Es tritt ein “Gemeinsam machen wir etwas wirklich tolles” in den Vordergrund. Der Grundstein für eine positive Weiterentwicklung.</p> <p><strong>Hast auch du zu diesem Thema etwas aus deiner Erfahrung zu berichten? Arbeitest du auch in einem Team mit “offenen Wunden”? Oder habt ihr diese bereits gelöst? Ich würde gerne davon erfahren!</strong></p> http://devtyr.norberteder.com/post/Arbeiten-wir-an-der-Kommunikation!.aspx Norbert Eder [MVP] 4228 2013-03-29T08:37:00 31 días de Windows 8 | Día 13: Navegación Este artículo es una traducción de “Día 13: Navegación” de Jeff Blakenburg. Puedes encontrar aquí la versión original en inglés. Hemos pasado los últimos días enfocándonos mucho en actualizar el sistema con información para permitirle saber al usuario que es lo que sucede. De hecho, en los primeros 12 días esta serie hemos pasado muy poco tiempo hablando de una de las actividades más comunes que vamos a encontrar en el desarrollo de Windows 8: La navegación entre páginas con XAML. Hoy corregiremos lo que estaba incorrecto metiéndonos en este tema. Hay tres escenarios específicos que quiero asegurarme de cubrir en este artículo: * El simple acto de navegación de la página A a la página B. ¿Qué sucede entonces y qué información está disponible para nosotros? * Pasar información de una página a otra. Esto no solo incluye cadenas y enteros, podemos pasar también objetos enteros entre páginas. * Guardar el caché de las páginas. Cuando un usuario presiona el botón de retroceso, ellos no quieren descubrir que toda la información que ingresaron ha desaparecido. Discutiremos esto más adelante. Navegar entre páginas en Windows 8 XAML Parece que cada vez que encontramos una nueva plataforma hay también una nueva [...] http://blogs.ligasilverlight.com/2013/03/31-das-de-windows-8-da-13-navegacin/ La Liga Silverlight 4227 2013-03-28T20:15:04