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

<channel>
	<title>Many Niches &#187; wp7dev</title>
	<atom:link href="http://www.manyniches.com/tag/wp7dev/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.manyniches.com</link>
	<description>Jack of All Trades, Master of Some</description>
	<lastBuildDate>Mon, 14 Nov 2011 21:12:16 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.2.1</generator>
		<item>
		<title>Happy Developers</title>
		<link>http://www.manyniches.com/windows-phone/happy-developers/</link>
		<comments>http://www.manyniches.com/windows-phone/happy-developers/#comments</comments>
		<pubDate>Mon, 28 Mar 2011 23:44:13 +0000</pubDate>
		<dc:creator>Brandon Watson</dc:creator>
				<category><![CDATA[Windows Phone]]></category>
		<category><![CDATA[Developers]]></category>
		<category><![CDATA[humor]]></category>
		<category><![CDATA[wp7dev]]></category>

		<guid isPermaLink="false">http://www.manyniches.com/windows-phone/happy-developers/</guid>
		<description><![CDATA[A little nerd humor for the day. I got asked by some executives to “prove” that what we were doing was working.&#160; That wasn’t so hard.&#160; The next question was “how would you show return on investment for additional budget.”&#160; I thought on it for a few moments, and wrote the following on the board.&#160; [...]]]></description>
			<content:encoded><![CDATA[<div class="tweetmeme_button" style="float: right; margin-left: 5px; margin-right: 5px;">
			<a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Fwww.manyniches.com%2Fwindows-phone%2Fhappy-developers%2F"><br />
				<img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fwww.manyniches.com%2Fwindows-phone%2Fhappy-developers%2F&amp;source=BrandonWatson&amp;style=normal&amp;service=bit.ly&amp;b=2" height="61" width="50" /><br />
			</a>
		</div>
<p>A little nerd humor for the day. I got asked by some executives to “prove” that what we were doing was working.&#160; That wasn’t so hard.&#160; The next question was “how would you show return on investment for additional budget.”&#160; I thought on it for a few moments, and wrote the following on the board.&#160; The engineers got it.</p>
<p><a href="http://www.manyniches.com/wp-content/uploads/2011/03/DevelopersHappy.png"><img style="background-image: none; border-bottom: 0px; border-left: 0px; margin: 0px 3px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="DevelopersHappy" border="0" alt="DevelopersHappy" src="http://www.manyniches.com/wp-content/uploads/2011/03/DevelopersHappy_thumb.png" width="484" height="144" /></a></p>
<p>That’s a screen grab from Visual Studio, which is now my desktop image.</p>
<p>I later shared this with some of my developer buddies.&#160; What ensued is also pretty funny:</p>
<p>Friend 1: “Shouldn’t that be a property (e.g., Developers.AreHappy)?”</p>
<p>Friend 2: “It could be a complex function returning different values depending on the level of Developer.Fickle property.&quot;</p>
<p>Friend 1: “The <a href="http://en.wikipedia.org/wiki/Fxcop">FxCops</a> will come after you for violating policy <a href="http://msdn.microsoft.com/en-us/library/ms182181.aspx">CA1024</a>.&#160; To Friend 2’s point, you could get a reprieve if making devs happy is a time-intensive operation. If that’s the case, however, you should review your entire architecture and implementation.”</p>
<p>I love my nerdy friends.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.manyniches.com/windows-phone/happy-developers/feed/</wfw:commentRss>
		<slash:comments>7</slash:comments>
		</item>
		<item>
		<title>Crawling the Windows Phone Marketplace</title>
		<link>http://www.manyniches.com/windows-phone/crawling-the-windows-phone-marketplace/</link>
		<comments>http://www.manyniches.com/windows-phone/crawling-the-windows-phone-marketplace/#comments</comments>
		<pubDate>Thu, 24 Mar 2011 19:21:28 +0000</pubDate>
		<dc:creator>Brandon Watson</dc:creator>
				<category><![CDATA[Windows Phone]]></category>
		<category><![CDATA[crawl]]></category>
		<category><![CDATA[data]]></category>
		<category><![CDATA[marketplace]]></category>
		<category><![CDATA[wp7dev]]></category>

		<guid isPermaLink="false">http://www.manyniches.com/windows-phone/crawling-the-windows-phone-marketplace/</guid>
		<description><![CDATA[I have been asked by a few people how sites like WP7AppList get their data.&#160; The Windows Phone Marketplace, which you access on your PC via Zune software, uses XML to get data over the wire.&#160; I wanted to share a couple of code snippets which might help an erstwhile data junkie on their way.&#160; [...]]]></description>
			<content:encoded><![CDATA[<div class="tweetmeme_button" style="float: right; margin-left: 5px; margin-right: 5px;">
			<a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Fwww.manyniches.com%2Fwindows-phone%2Fcrawling-the-windows-phone-marketplace%2F"><br />
				<img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fwww.manyniches.com%2Fwindows-phone%2Fcrawling-the-windows-phone-marketplace%2F&amp;source=BrandonWatson&amp;style=normal&amp;service=bit.ly&amp;b=2" height="61" width="50" /><br />
			</a>
		</div>
<p>I have been asked by a few people how sites like <a href="http://www.wp7applist.com">WP7AppList</a> get their data.&#160; The Windows Phone Marketplace, which you access on your PC via Zune software, uses XML to get data over the wire.&#160; I wanted to share a couple of code snippets which might help an erstwhile data junkie on their way.&#160; This code works.&#160; It may not be the most elegant solution, but it works, and I wanted to share it with others in case they wanted to see how to parse the XML, or how to write LINQ queries against it.</p>
<p>Caveat – this is a geek enthusiast post.&#160; I used <a href="http://www.fiddler2.com/fiddler2/">Fiddler</a> to figure out how to parse the XML.&#160; This was something I did over Christmas break to give me a project about which I could be excited, and learn some more about parsing XML with LINQ.&#160; I also wanted to do some large database stuff, and this crawler throws off a ton of data.&#160; I did not use an proprietary knowledge about how our backend systems are working.&#160; This is all done against the public XML feeds.</p>
<p>First up, we are going to need to create some data structures to catch all of the inbound data.&#160; You can use anonymous types with LINQ, but I liked having a measure of control, and having the ability to handle null values and potential errors in the feed.</p>
<p><span id="more-494"></span>
<pre class="csharpcode"><span class="kwrd">public</span> <span class="kwrd">class</span> ZestAppData
{
    <span class="kwrd">public</span> <span class="kwrd">string</span> Title { get; set; }
    <span class="kwrd">public</span> <span class="kwrd">string</span> Id { get; set; }
    <span class="kwrd">public</span> DateTime ReleaseDate { get; set; }
    <span class="kwrd">public</span> DateTime Updated { get; set; }
    <span class="kwrd">public</span> <span class="kwrd">string</span> Version { get; set; }
    <span class="kwrd">public</span> <span class="kwrd">string</span> ShortDescription { get; set; }
    <span class="kwrd">public</span> <span class="kwrd">decimal</span> AverageUserRating { get; set; }
    <span class="kwrd">public</span> <span class="kwrd">int</span> UserRatingCount { get; set; }
    <span class="kwrd">public</span> <span class="kwrd">string</span> ImageId { get; set; }

    <span class="kwrd">public</span> IList&lt;ZestCategory&gt; Categories = <span class="kwrd">new</span> List&lt;ZestCategory&gt;();
    <span class="kwrd">public</span> IList&lt;ZestPublisher&gt; Publisher = <span class="kwrd">new</span> List&lt;ZestPublisher&gt;();
    <span class="kwrd">public</span> IList&lt;ZestOffer&gt; Offers = <span class="kwrd">new</span> List&lt;ZestOffer&gt;();
}

<span class="kwrd">public</span> <span class="kwrd">class</span> ZestCategory
{
    <span class="kwrd">public</span> <span class="kwrd">string</span> Id { get; set; }
    <span class="kwrd">public</span> <span class="kwrd">string</span> IsRoot { get; set; }
    <span class="kwrd">public</span> <span class="kwrd">string</span> Title { get; set; }
}

<span class="kwrd">public</span> <span class="kwrd">class</span> ZestOffer
{
    <span class="kwrd">public</span> <span class="kwrd">string</span> OfferId { get; set; }
    <span class="kwrd">public</span> <span class="kwrd">string</span> MediaInstanceId { get; set; }
    <span class="kwrd">public</span> <span class="kwrd">decimal</span> Price { get; set; }
    <span class="kwrd">public</span> <span class="kwrd">string</span> PriceCurrencyCode { get; set; }
    <span class="kwrd">public</span> <span class="kwrd">string</span> LicenseRight { get; set; }
    <span class="kwrd">public</span> List&lt;<span class="kwrd">string</span>&gt; PaymentType = <span class="kwrd">new</span> List&lt;<span class="kwrd">string</span>&gt;();
}

<span class="kwrd">public</span> <span class="kwrd">class</span> ZestPublisher
{
    <span class="kwrd">public</span> <span class="kwrd">string</span> Id { get; set; }
    <span class="kwrd">public</span> <span class="kwrd">string</span> Name { get; set; }
}</pre>
<style type="text/css">
<p>.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>&#160;</p>
<p>You are also going to want to have a bunch of variables defined for the URLs where the XML is coming from, the XML namespaces, etc:</p>
<pre class="csharpcode"><span class="kwrd">const</span> <span class="kwrd">string</span> BaseAppsUrl = <span class="str">&quot;http://catalog.zune.net&quot;</span>;
<span class="kwrd">const</span> <span class="kwrd">string</span> BaseImageUrl = <span class="str">&quot;http://image.catalog.zune.net&quot;</span>;

<span class="kwrd">const</span> <span class="kwrd">string</span> ZestVersion = <span class="str">&quot;/v3.2/&quot;</span>;
<span class="kwrd">const</span> <span class="kwrd">string</span> ZestImageVersion = <span class="str">&quot;/v3.0/&quot;</span>;

<span class="kwrd">const</span> <span class="kwrd">string</span> BaseApps = <span class="str">&quot;apps/&quot;</span>;
<span class="kwrd">const</span> <span class="kwrd">string</span> BaseImage = <span class="str">&quot;image/&quot;</span>;

<span class="kwrd">const</span> <span class="kwrd">string</span> BaseAppsResource = <span class="str">&quot;?clientType=WinMobile%207.0&amp;store=Zest&amp;orderby=downloadRank&quot;</span>;
<span class="kwrd">const</span> <span class="kwrd">string</span> BaseCommentsResource = <span class="str">&quot;/reviews/?store=Zest&amp;chunkSize=10&quot;</span>;
<span class="kwrd">const</span> <span class="kwrd">string</span> BaseImageResource = <span class="str">&quot;?width=240&amp;height=240&quot;</span>;

ZestCrawlEntities ZestCrawlContext;

XNamespace ns = <span class="str">&quot;http://www.w3.org/2005/Atom&quot;</span>;
XNamespace zestns = <span class="str">&quot;http://schemas.zune.net/catalog/apps/2008/02&quot;</span>;

<span class="kwrd">public</span> <span class="kwrd">string</span> LangCode = <span class="str">&quot;en-us&quot;</span>; <span class="rem">//setting the default value</span>

<span class="kwrd">public</span> List&lt;<span class="kwrd">string</span>&gt; ValidLangCodes = <span class="kwrd">new</span> List&lt;<span class="kwrd">string</span>&gt;(
    <span class="kwrd">new</span> <span class="kwrd">string</span>[] {  <span class="str">&quot;en-us&quot;</span>, <span class="str">&quot;en-gb&quot;</span>, <span class="str">&quot;de-de&quot;</span>,
                    <span class="str">&quot;fr-fr&quot;</span>, <span class="str">&quot;es-es&quot;</span>, <span class="str">&quot;it-it&quot;</span>,
                    <span class="str">&quot;en-au&quot;</span>, <span class="str">&quot;de-at&quot;</span>, <span class="str">&quot;fr-be&quot;</span>,
                    <span class="str">&quot;fr-ca&quot;</span>, <span class="str">&quot;en-ca&quot;</span>, <span class="str">&quot;en-hk&quot;</span>,
                    <span class="str">&quot;en-in&quot;</span>, <span class="str">&quot;en-ie&quot;</span>, <span class="str">&quot;es-mx&quot;</span>,
                    <span class="str">&quot;en-nz&quot;</span>, <span class="str">&quot;en-sg&quot;</span>, <span class="str">&quot;de-ch&quot;</span>,
                    <span class="str">&quot;fr-ch&quot;</span> });

<span class="kwrd">public</span> <span class="kwrd">string</span> AppAfterMarkerUrl { get; set; }
<span class="kwrd">public</span> <span class="kwrd">bool</span> HasMoreApps = <span class="kwrd">true</span>;
<span class="kwrd">public</span> <span class="kwrd">string</span> AppsResponseString { get; set; }
<span class="kwrd">public</span> XElement ReturnedAppsXml;</pre>
<style type="text/css">
<p>.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>&#160;</p>
<p>Have a look at the ValidLangCodes list.&#160; that’s the coding we have on the URLs for country specific data.&#160; So if you want to get the data from Mexico, us “es-mx.”&#160; The first two letters are the language code, and the second two are the country code.&#160; If an app is listed in the feed, it is active.&#160; The list returned is ordered, meaning the first app is ranked #1.&#160; I am pulling the ALL APPs list, which is the orderby clause on the BaseAppsResource.</p>
<p>The ZextCrawlContext is the ADO.NET DB model.&#160; Create your own and stuff the data however you want.</p>
<p>Now that we have the code segments, you are going to need a way to get the XML from MSFT servers.</p>
<pre class="csharpcode"><span class="kwrd">public</span> <span class="kwrd">void</span> GetAppsResponse()
{
    <span class="kwrd">string</span> FullUrl;
    <span class="kwrd">bool</span> done = <span class="kwrd">false</span>;

    <span class="kwrd">if</span> (!String.IsNullOrEmpty(AppAfterMarkerUrl))
    {
        FullUrl = AppAfterMarkerUrl;
    }
    <span class="kwrd">else</span>
    {
        FullUrl = BaseAppsUrl + ZestVersion + LangCode + <span class="str">&quot;/&quot;</span>
            + BaseApps + BaseAppsResource;
    }

    <span class="kwrd">while</span> (!done)
    {
        <span class="kwrd">try</span>
        {
            var request = WebRequest.Create(FullUrl) <span class="kwrd">as</span> HttpWebRequest;
            request.KeepAlive = <span class="kwrd">false</span>;

            var response = request.GetResponse() <span class="kwrd">as</span> HttpWebResponse;

            <span class="kwrd">if</span> (request.HaveResponse == <span class="kwrd">true</span> &amp;&amp; response != <span class="kwrd">null</span>)
            {
                var reader = <span class="kwrd">new</span> StreamReader(response.GetResponseStream());
                ReturnedAppsXml = XElement.Parse(reader.ReadToEnd());
                done = <span class="kwrd">true</span>;
            }
        }
        <span class="kwrd">catch</span>
        {
            Console.WriteLine(<span class="str">&quot;yeah, your connection was likely aborted&quot;</span>);
            done = <span class="kwrd">false</span>;
        }
    }
}</pre>
<style type="text/css">
<p>.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>&#160;</p>
<p>Now comes the fun part.&#160; Remember, the XML is coming over the wire, and it comes 100 elements at a time.&#160; So you have to parse the stream, stuff them somewhere and get the next stream.&#160; Included in the XML returned is the token for how you request the next bit of XML. (note, yes I know I am using RegEx where I could be using String.Replace; also sorry about the wonky formatting, but my blog has width issues)</p>
<pre class="csharpcode"><span class="kwrd">public</span> IEnumerable&lt;ZestAppData&gt; GetAppEntries()
{
    <span class="rem">//first we have to parse the feed which came back</span>
    IEnumerable&lt;ZestAppData&gt; entries =
        from e <span class="kwrd">in</span> ReturnedAppsXml.Elements(ns + <span class="str">&quot;entry&quot;</span>)
        select <span class="kwrd">new</span> ZestAppData
        {

            Title = e.Element(ns + <span class="str">&quot;title&quot;</span>).Value,

            Id = Regex.Replace(e.Element(ns + <span class="str">&quot;id&quot;</span>).Value, <span class="str">&quot;(urn:uuid:)(.)&quot;</span>, <span class="str">&quot;$2&quot;</span>),

            ReleaseDate = DateTime.Parse(e.Element(zestns + <span class="str">&quot;releaseDate&quot;</span>).Value),

            Updated = DateTime.Parse(e.Element(ns + <span class="str">&quot;updated&quot;</span>).Value),

            ShortDescription = e.Element(zestns + <span class="str">&quot;shortDescription&quot;</span>) == <span class="kwrd">null</span>
                ? <span class="str">&quot;&quot;</span> : e.Element(zestns + <span class="str">&quot;shortDescription&quot;</span>).Value,

            AverageUserRating = <span class="kwrd">decimal</span>.Parse(e.Element(zestns + <span class="str">&quot;averageUserRating&quot;</span>).Value),

            UserRatingCount = <span class="kwrd">int</span>.Parse(e.Element(zestns + <span class="str">&quot;userRatingCount&quot;</span>).Value),

            Version = e.Element(zestns + <span class="str">&quot;version&quot;</span>).Value,

            ImageId = Regex.Replace(e.Element(zestns + <span class="str">&quot;image&quot;</span>).Element(zestns + <span class="str">&quot;id&quot;</span>).Value, <span class="str">&quot;(urn:uuid:)(.)&quot;</span>, <span class="str">&quot;$2&quot;</span>),

            Categories = (
                from category <span class="kwrd">in</span> e.Elements(zestns + <span class="str">&quot;categories&quot;</span>).Elements(zestns + <span class="str">&quot;category&quot;</span>)
                select <span class="kwrd">new</span> ZestCategory
                {
                    Id = category.Element(zestns + <span class="str">&quot;id&quot;</span>).Value,
                    Title = category.Element(zestns + <span class="str">&quot;title&quot;</span>).Value,
                    IsRoot = category.Element(zestns + <span class="str">&quot;isRoot&quot;</span>).Value
                }).ToList(),

            Publisher = (
                from publisher <span class="kwrd">in</span> e.Elements(zestns + <span class="str">&quot;publisher&quot;</span>)
                select <span class="kwrd">new</span> ZestPublisher
                {
                    Id = publisher.Element(zestns + <span class="str">&quot;id&quot;</span>).Value,
                    Name = publisher.Element(zestns + <span class="str">&quot;name&quot;</span>).Value
                }).ToList(),

            Offers = (
                from offer <span class="kwrd">in</span> e.Elements(zestns + <span class="str">&quot;offers&quot;</span>).Elements(zestns + <span class="str">&quot;offer&quot;</span>)
                select <span class="kwrd">new</span> ZestOffer
                {
                    OfferId = offer.Element(zestns + <span class="str">&quot;offerId&quot;</span>).Value,
                    MediaInstanceId = offer.Element(zestns + <span class="str">&quot;mediaInstanceId&quot;</span>).Value,
                    Price = <span class="kwrd">decimal</span>.Parse(offer.Element(zestns + <span class="str">&quot;price&quot;</span>).Value),
                    PriceCurrencyCode = offer.Element(zestns + <span class="str">&quot;priceCurrencyCode&quot;</span>).Value,
                    LicenseRight = offer.Element(zestns + <span class="str">&quot;licenseRight&quot;</span>).Value,
                    PaymentType = (
                        from paymenttype <span class="kwrd">in</span> offer.Elements(zestns + <span class="str">&quot;paymentTypes&quot;</span>).Elements()
                        select paymenttype.Value).ToList()
                }).ToList()
        };

    <span class="rem">//now I need to get the AfterMarkerUrl from the XML feed</span>
    var afterMarker =
        from e <span class="kwrd">in</span> ReturnedAppsXml.Elements(ns + <span class="str">&quot;link&quot;</span>)
        <span class="kwrd">where</span> e.Attribute(<span class="str">&quot;rel&quot;</span>).Value == <span class="str">&quot;next&quot;</span>
        select (<span class="kwrd">string</span>)e.Attribute(<span class="str">&quot;href&quot;</span>).Value;

    <span class="kwrd">if</span> (afterMarker.Count() &gt; 0)
    {
        AppAfterMarkerUrl = BaseAppsUrl + afterMarker.Single();
    }
    <span class="kwrd">else</span>
    {
        HasMoreApps = <span class="kwrd">false</span>;
    }

    <span class="kwrd">return</span> entries;
}</pre>
<style type="text/css">
<p>.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>Now you have all the data you need to crawl the marketplace whenever you want.&#160; The LINQ stuff is really, really fast.&#160; Crawling the marketplaces can be a bit slow.&#160; I crawl each one individually when my code runs, and I store app lists for each of the markets.</p>
<p>One of the mistakes I made was having ZestAppData.Udpated be a DateTime and not a Date.&#160; I only crawl once per day, so I don’t need all the extra data.&#160; The Zest feeds update daily, I think every couple of hours.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.manyniches.com/windows-phone/crawling-the-windows-phone-marketplace/feed/</wfw:commentRss>
		<slash:comments>17</slash:comments>
		</item>
		<item>
		<title>More Revenues For Windows Phone 7 Developers</title>
		<link>http://www.manyniches.com/windows-phone/more-revenues-for-windows-phone-7-developers/</link>
		<comments>http://www.manyniches.com/windows-phone/more-revenues-for-windows-phone-7-developers/#comments</comments>
		<pubDate>Wed, 09 Mar 2011 17:36:27 +0000</pubDate>
		<dc:creator>Brandon Watson</dc:creator>
				<category><![CDATA[Windows Phone]]></category>
		<category><![CDATA[android]]></category>
		<category><![CDATA[Developers]]></category>
		<category><![CDATA[money]]></category>
		<category><![CDATA[windows phone 7]]></category>
		<category><![CDATA[wp7dev]]></category>

		<guid isPermaLink="false">http://www.manyniches.com/windows-phone/more-revenues-for-windows-phone-7-developers/</guid>
		<description><![CDATA[We’ve made no secret of the fact that we believe we have a great platform for developers.&#160; The canvas we have delivered is enabling amazing creativity to flourish.&#160; Some developers, however, have taken a wait and see approach to developing for Windows Phone.&#160; For those who have taken the plunge, some developers are making more [...]]]></description>
			<content:encoded><![CDATA[<div class="tweetmeme_button" style="float: right; margin-left: 5px; margin-right: 5px;">
			<a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Fwww.manyniches.com%2Fwindows-phone%2Fmore-revenues-for-windows-phone-7-developers%2F"><br />
				<img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fwww.manyniches.com%2Fwindows-phone%2Fmore-revenues-for-windows-phone-7-developers%2F&amp;source=BrandonWatson&amp;style=normal&amp;service=bit.ly&amp;b=2" height="61" width="50" /><br />
			</a>
		</div>
<p>We’ve made no secret of the fact that we believe we have a great platform for developers.&#160; The canvas we have delivered is enabling amazing creativity to flourish.&#160; Some developers, however, have taken a wait and see approach to developing for Windows Phone.&#160; For those who have taken the plunge, <a href="http://www.everythingwm.com/fruit-ninja-over-7-times-more-revenue-on-windows-phone-compared-to-android/2011/03/09/">some developers are making more money on Windows Phone 7 than Android</a>, even though we have less handsets in market.</p>
<p>Yes, this is a data point of one, but it’s a public data point about which we can talk.&#160; There are many more stories like this on the horizon, but this is the first one that is verified by a third party.</p>
<h3>Fruit Ninja has made 7x more money on Windows Phone 7 than Android.</h3>
<p>That is the claim of the article.&#160; Why is this?&#160; There are many potential reasons, and I don’t want to venture into what could quickly devolve into a discussion based on opinions.&#160; What we can say is that the <a href="http://windowsteamblog.com/windows_phone/b/wpdev/archive/2011/03/08/an-update-on-windows-phone-marketplace-new-tips-policies-and-regional-access-program.aspx">data shows that the Windows Phone Marketplace works for developers</a>.&#160; It shows that customers of Windows Phone are spending money to buy apps.&#160; It shows that that Windows Phone has great potential.</p>
<p>UPDATE (03/09/11 11:20A): The Xylogic data is what it is.&#160; I won’t vouch for it, so short of taking this post down, I can only say that I cannot verify their Android data.&#160; Is it a fair assumption that any overstatement/understatement they make for Windows Phone is same for Android?&#160; Maybe.&#160; I am not going to surface Fruit Ninja numbers as that’s not my place.&#160; Unless Xylogic made a mistake in our favor (overstating $$ on Windows Phone) and against Android (understating $$ on Android), the ratio will hold.</p>
<p>Besides, and here’s the point that everyone seems to be missing – we have sold way fewer phones and Android.&#160; Way.&#160; Even if we were at parity on revenues, which platform is more appealing?&#160; Don’t let the source of the data get in the way of the undeniable fact: the dynamics and structure of the marketplace on Android creates a challenge for developers to make money.&#160; When Angry Birds can’t make money with per unit sales, that’s a sign. [END UPDATE]</p>
<p>We are still learning, and will continue to share what we learn with our developer community about what apps are working, how to market their apps, get noticed, etc.&#160; However, the fact remains that for this developer, Windows Phone 7 has been well worth their time.</p>
<p>The smart money is to bet on the train that is leaving the station, not the one that’s gone.&#160; Again, public data point of one, but this train is picking up steam.&#160; As CNet noted, <a href="http://news.cnet.com/8301-30686_3-20040926-266.html?tag=topImage2">our mobile fortunes are tied to app developers</a>.&#160; Getting developers info like this is incredibly important to demonstrating that Windows Phone is a viable, credible, profitable platform for developers.&#160; We will turn ourselves inside out to get developers whatever they need to be successful.</p>
<p>Still on the fence?&#160; If you are an Android developer, and looking for a switch, reach out to us.&#160; For developers committed to building on Windows Phone, we will take care of you.&#160; Every developer matters.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.manyniches.com/windows-phone/more-revenues-for-windows-phone-7-developers/feed/</wfw:commentRss>
		<slash:comments>16</slash:comments>
		</item>
		<item>
		<title>New Markets Open Up For Windows Phone 7 Developers</title>
		<link>http://www.manyniches.com/windows-phone/new-markets-open-up-for-windows-phone-7-developers/</link>
		<comments>http://www.manyniches.com/windows-phone/new-markets-open-up-for-windows-phone-7-developers/#comments</comments>
		<pubDate>Tue, 08 Mar 2011 17:05:59 +0000</pubDate>
		<dc:creator>Brandon Watson</dc:creator>
				<category><![CDATA[Windows Phone]]></category>
		<category><![CDATA[Developers]]></category>
		<category><![CDATA[windows phone 7]]></category>
		<category><![CDATA[wp7dev]]></category>

		<guid isPermaLink="false">http://www.manyniches.com/windows-phone/new-markets-open-up-for-windows-phone-7-developers/</guid>
		<description><![CDATA[Today, we posted a new article up at the Windows Phone Developer Blog about how developers are having great results using the Trial API and Microsoft Mobile Ad control.&#160; The most astonishing piece of data for me what that more than half of the Trial API apps convert to a sale within one day, and [...]]]></description>
			<content:encoded><![CDATA[<div class="tweetmeme_button" style="float: right; margin-left: 5px; margin-right: 5px;">
			<a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Fwww.manyniches.com%2Fwindows-phone%2Fnew-markets-open-up-for-windows-phone-7-developers%2F"><br />
				<img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fwww.manyniches.com%2Fwindows-phone%2Fnew-markets-open-up-for-windows-phone-7-developers%2F&amp;source=BrandonWatson&amp;style=normal&amp;service=bit.ly&amp;b=2" height="61" width="50" /><br />
			</a>
		</div>
<p>Today, we posted a new article up at the <a href="http://windowsteamblog.com/windows_phone/b/wpdev/archive/2011/03/08/an-update-on-windows-phone-marketplace-new-tips-policies-and-regional-access-program.aspx">Windows Phone Developer Blog</a> about how developers are having great results using the Trial API and Microsoft Mobile Ad control.&#160; The most astonishing piece of data for me what that more than half of the Trial API apps convert to a sale within one day, and most of those within 2 hours of the download.</p>
<p>While the stories of existing devs having great success is music to my ears, what’s really exciting for me is the expansion of the geographies which can support developers.&#160; We have just announced our Global Publishing Program, which allows us to extend the ability to be a published Windows Phone 7 developer to countries where we do not yet have Marketplace.</p>
<p>Publishers will sign up to support an entire region, allowing developers to submit applications to Marketplace through the publisher.&#160; We have launched with our first partner, <a href="http://www.yallaapps.com/">Yalla Apps</a>, a new publisher supporting the Middle East and Africa region.&#160; So what new countries can we support?&#160; Here’s the list:</p>
<p>Afghanistan, Algeria, Angola, Bahrain, Benin, Botswana, Burkina Faso, Cameroon, Cape Verde, Central African Republic, Chad, Comoros, Congo, Côte d&#8217;Ivoire, Cyprus, Democratic Republic of Congo, Djibouti, Egypt, Equatorial Guinea, Ethiopia, French Polynesia, Gabon, Gambia, The, Ghana, Guinea, Guinea-Bissau, Iraq, Israel, Jordan, Kenya, Kuwait, Lebanon, Lesotho, Liberia, Libya, Madagascar, Malawi, Mali, Mauritania, Mauritius, Mayotte, Morocco, Mozambique, Namibia, New Caledonia, Niger, Nigeria, Oman, Pakistan, Palestinian Authority, Qatar, Reunion, Rwanda, Saudi Arabia, Senegal, Seychelles, Sierra Leone, Somalia, South Africa, Swaziland, Tanzania, Togo, Tunisia, Turkey, Uganda, United Arab Emirates, Yemen, Zambia, Zimbabwe</p>
<p>Turkey, Saudi Arabia, Pakistan, Israel &amp; Egypt were our top 5 countries in terms of <a href="http://create.msdn.com/">tools downloads</a> from that list, representing multiple tens of thousands of developers.&#160; Now each and every one of them can start publishing their amazing apps and games for Windows Phone.&#160; This also means that the 3 developers in Somalia, 2 in Equatorial Guinea and Swaziland, and the 1 developer in Central African Republic, who have downloaded our tools, well, we now have a solution for you.&#160; In fact, if you are one of the 8 developers in one of those countries, reach out to me – I’d love to hear your story.</p>
<p>More country support is coming.&#160; We are listening to each and every one of you and working like mad to ensure that every developer who wants to build for Windows Phone 7 can.&#160; Every developer matters.</td></p>
]]></content:encoded>
			<wfw:commentRss>http://www.manyniches.com/windows-phone/new-markets-open-up-for-windows-phone-7-developers/feed/</wfw:commentRss>
		<slash:comments>13</slash:comments>
		</item>
		<item>
		<title>Building the Platform, One Dev at a Time</title>
		<link>http://www.manyniches.com/windows-phone/building-the-platform-one-dev-at-a-time/</link>
		<comments>http://www.manyniches.com/windows-phone/building-the-platform-one-dev-at-a-time/#comments</comments>
		<pubDate>Mon, 28 Feb 2011 03:47:01 +0000</pubDate>
		<dc:creator>Brandon Watson</dc:creator>
				<category><![CDATA[Windows Phone]]></category>
		<category><![CDATA[Developers]]></category>
		<category><![CDATA[WP7]]></category>
		<category><![CDATA[wp7dev]]></category>

		<guid isPermaLink="false">http://www.manyniches.com/windows-phone/building-the-platform-one-dev-at-a-time/</guid>
		<description><![CDATA[Last week when I read Jamie’s excoriation of the Blackberry Playbook dev platform (so many people forwarded it to me), it made me sad.&#160; Sad because a developer was hitting friction on a platform on which he clearly wanted to develop apps. Tyler Lessard from RIM responded to this open air criticism, and I give [...]]]></description>
			<content:encoded><![CDATA[<div class="tweetmeme_button" style="float: right; margin-left: 5px; margin-right: 5px;">
			<a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Fwww.manyniches.com%2Fwindows-phone%2Fbuilding-the-platform-one-dev-at-a-time%2F"><br />
				<img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fwww.manyniches.com%2Fwindows-phone%2Fbuilding-the-platform-one-dev-at-a-time%2F&amp;source=BrandonWatson&amp;style=normal&amp;service=bit.ly&amp;b=2" height="61" width="50" /><br />
			</a>
		</div>
<p align="left">Last week when I read <a href="http://blog.jamiemurai.com/2011/02/you-win-rim/">Jamie’s excoriation of the Blackberry Playbook dev platform</a> (so many people forwarded it to me), it made me sad.&#160; Sad because a developer was hitting friction on a platform on which he clearly wanted to develop apps.</p>
<p align="left"><a href="http://devblog.blackberry.com/2011/02/thanks-for-the-open-letter-to-rim-developer-relations/">Tyler Lessard from RIM responded</a> to this open air criticism, and I give him points for his embracing this publicly.&#160; I look forwarded to meeting Tyler at some point in the future.</p>
<p>There are some in the community that said Jamie was bitching and moaning.&#160; He was.&#160; They say he gave up too easily.&#160; Perhaps.&#160; This issue does elucidate a more pressing issue, which is the plethora of choices available to the discerning developer, and the decreasing ability to get it wrong if you are a platform provider.&#160; Further, with Twitter and blogs being so public – they are forever etched in stone people! (i.e. the search index) – it’s hard for a platform provider to not to feel like they are under constant and heavy fire.</p>
<p>Yet, the very tools which quickly bring scorn and ire to some can provide for a happy ending to others.&#160; In just under 4 hours, I was able to reach out to someone in another country, whom I have never met, and had never heard of prior to last week, and prompt him to action.</p>
<p><a href="http://www.manyniches.com/wp-content/uploads/2011/02/image1.png"><img style="background-image: none; border-bottom: 0px; border-left: 0px; margin: 0px 3px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://www.manyniches.com/wp-content/uploads/2011/02/image_thumb1.png" width="444" height="88" /></a></p>
<p><a href="http://www.manyniches.com/wp-content/uploads/2011/02/image2.png"><img style="background-image: none; border-bottom: 0px; border-left: 0px; margin: 0px 3px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://www.manyniches.com/wp-content/uploads/2011/02/image_thumb2.png" width="444" height="86" /></a></p>
<p>Even if we build the platform one developer at a time, that’s one more developer than we had last week.&#160; Every developer matters.&#160; Every. Single. One.&#160; I effing love my job.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.manyniches.com/windows-phone/building-the-platform-one-dev-at-a-time/feed/</wfw:commentRss>
		<slash:comments>12</slash:comments>
		</item>
		<item>
		<title>Windows Weekly &amp; DotNetRocks</title>
		<link>http://www.manyniches.com/windows-phone/windows-weekly-dotnetrocks/</link>
		<comments>http://www.manyniches.com/windows-phone/windows-weekly-dotnetrocks/#comments</comments>
		<pubDate>Tue, 21 Sep 2010 23:31:37 +0000</pubDate>
		<dc:creator>Brandon Watson</dc:creator>
				<category><![CDATA[Windows Phone]]></category>
		<category><![CDATA[.net rocks]]></category>
		<category><![CDATA[leo laporte]]></category>
		<category><![CDATA[paul thurrott]]></category>
		<category><![CDATA[windows weekly]]></category>
		<category><![CDATA[WP7]]></category>
		<category><![CDATA[wp7dev]]></category>

		<guid isPermaLink="false">http://www.manyniches.com/windows-phone/windows-weekly-dotnetrocks/</guid>
		<description><![CDATA[It’s not often I find myself kerfuffled, but that’s what happened when I was permitted to be a guest to discuss Windows Phone 7 on Windows Weekly, hosted by Leo Laporte and Paul Thurrott.&#160; I’ve been a long time listener of several of the TWiT network podcasts, and fondly remember staying up late in grad [...]]]></description>
			<content:encoded><![CDATA[<div class="tweetmeme_button" style="float: right; margin-left: 5px; margin-right: 5px;">
			<a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Fwww.manyniches.com%2Fwindows-phone%2Fwindows-weekly-dotnetrocks%2F"><br />
				<img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fwww.manyniches.com%2Fwindows-phone%2Fwindows-weekly-dotnetrocks%2F&amp;source=BrandonWatson&amp;style=normal&amp;service=bit.ly&amp;b=2" height="61" width="50" /><br />
			</a>
		</div>
<p><img style="margin: 0px 5px 5px 0px; display: inline" title="" alt="" align="left" src="http://twit.tv/files/imagecache/coverart/coverart/podcast_17_3.jpg" width="120" height="120" />It’s not often I find myself kerfuffled, but that’s what happened when I was permitted to be a guest to discuss <a href="http://twit.tv/ww174">Windows Phone 7 on Windows Weekly</a>, hosted by <a href="http://www.leoville.com">Leo Laporte</a> and <a href="http://www.winsupersite.com">Paul Thurrott</a>.&#160; I’ve been a long time listener of several of the TWiT network podcasts, and fondly remember staying up late in grad school to catch <a href="http://en.wikipedia.org/wiki/Dev_Null">Dev Null on “The Site”</a> on MSNBC.&#160; It was a lively conversation, and I have received many emails from people I don’t know with their thoughts on the show and WP7.&#160; I love hearing from the community, and really look forward to meeting more developers building cool apps and games.</p>
<p><a href="http://www.manyniches.com/wp-content/uploads/2010/09/image6.png"><img style="border-bottom: 0px; border-left: 0px; margin: 0px 5px 5px 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" align="left" src="http://www.manyniches.com/wp-content/uploads/2010/09/image_thumb6.png" width="244" height="58" /></a>We also sponsored a couple of <a href="http://www.dotnetrocks.com/">.Net Rocks</a> shows with Carl and Richard (<a href="http://www.dotnetrocks.com/default.aspx?showNum=595">show 1</a>) so that we could talk about the tools release, but more importantly so that we could enable 6 developers to talk about what they are building for Windows Phone 7.&#160; We really wanted to give a microphone to devs doing cool stuff; specifically guys who are working without the aid of PR firms and other means to get the opportunity to promote themselves.&#160; We know that there are going to be many apps built for Windows Phone 7 by small teams, and we really want to help get them noticed.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.manyniches.com/windows-phone/windows-weekly-dotnetrocks/feed/</wfw:commentRss>
		<slash:comments>7</slash:comments>
		</item>
		<item>
		<title>Seattle Area Developers &#8211; GDGT Event</title>
		<link>http://www.manyniches.com/windows-phone/seattle-area-developers-gdgt-event/</link>
		<comments>http://www.manyniches.com/windows-phone/seattle-area-developers-gdgt-event/#comments</comments>
		<pubDate>Tue, 27 Jul 2010 15:05:44 +0000</pubDate>
		<dc:creator>Brandon Watson</dc:creator>
				<category><![CDATA[Windows Phone]]></category>
		<category><![CDATA[epic]]></category>
		<category><![CDATA[GDGT]]></category>
		<category><![CDATA[nerdosity]]></category>
		<category><![CDATA[windows phone 7]]></category>
		<category><![CDATA[WP7]]></category>
		<category><![CDATA[wp7dev]]></category>

		<guid isPermaLink="false">http://www.manyniches.com/windows-phone/seattle-area-developers-gdgt-event/</guid>
		<description><![CDATA[Stop the presses!&#160; I’ve got some news.&#160; The great team at GDGT is coming to Seattle, and they are having a bit of a party and meetup.&#160; There should be a great deal of nerdosity going on there, which is awesome in its own right.&#160; This will be further accentuated by the fact that the [...]]]></description>
			<content:encoded><![CDATA[<div class="tweetmeme_button" style="float: right; margin-left: 5px; margin-right: 5px;">
			<a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Fwww.manyniches.com%2Fwindows-phone%2Fseattle-area-developers-gdgt-event%2F"><br />
				<img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fwww.manyniches.com%2Fwindows-phone%2Fseattle-area-developers-gdgt-event%2F&amp;source=BrandonWatson&amp;style=normal&amp;service=bit.ly&amp;b=2" height="61" width="50" /><br />
			</a>
		</div>
<div class="wlWriterHeaderFooter" style="float:none; margin:0px; padding:4px 0px 4px 0px;"><iframe src="http://www.facebook.com/widgets/like.php?href=http://www.manyniches.com/windows-phone/seattle-area-developers-gdgt-event/" scrolling="no" frameborder="0" style="border:none; width:450px; height:80px"></iframe></div>
<p>Stop the presses!&#160; I’ve got some news.&#160; The great team at <a href="http://www.facebook.com/event.php?eid=135148676504452">GDGT is coming to Seattle</a>, and they are having a bit of a party and meetup.&#160; There should be a great deal of nerdosity going on there, which is awesome in its own right.&#160; This will be further accentuated by the fact that the Windows Phone 7 team will be there to show off some devices.</p>
<p>Under normal circumstances, that would be pretty cool.&#160; However, we’re not in the “pretty cool” business here.&#160; I think I have made it clear, we are in the <a href="http://www.manyniches.com/windows-phone/windows-phone-7-device-requests/">epic shit business</a>.&#160; Apparently, the nerdosity is expected to flow especially high at this event, and the request was made for the developer platform team for Windows Phone 7 to make an appearance.&#160; Challenge thrown down.&#160; Challenge accepted.&#160; Challenge contorted into something all together different.</p>
<p>Since announcing the email alias to which you can <a href="http://windowsteamblog.com/windows_phone/b/wpdev/archive/2010/07/12/windows-phone-developer-tools-beta-released.aspx">send your device requests</a> (about 2 weeks ago), we’ve been blown away by the response.&#160; We’re still making our way through those requests, getting them into a CRM system and assigning them to our field evangelists.&#160; That’s a tale of logistical complexity for another day.&#160; However, the whole point of having preview devices is to get them into the hands of developers, right?&#160; So we have two things to share.</p>
<p>First, if you are a developer in the area, and want to come to the event, bring your laptops with your Windows Phone 7 XAPs.&#160; We will have phones on site to which you can deploy your code.&#160; You can see it running on a real Windows Phone 7.&#160; You get to share it with the crowd.&#160; That’s not bad, but certainly not epic.&#160; No, no.&#160; Epic is in reserve for those true hackers who show up with the goods.&#160; For those who have got the best XAPs, we are bringing a couple of phones with us, and some developer agreements to sign.&#160; That’s right…the “A” gamers will be walking out with phones on which to continue their coding.</p>
<p>Are you game?&#160; Spread the word, and see you there.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.manyniches.com/windows-phone/seattle-area-developers-gdgt-event/feed/</wfw:commentRss>
		<slash:comments>9</slash:comments>
		</item>
		<item>
		<title>Employee Developer Program</title>
		<link>http://www.manyniches.com/windows-phone/employee-developer-program/</link>
		<comments>http://www.manyniches.com/windows-phone/employee-developer-program/#comments</comments>
		<pubDate>Mon, 26 Jul 2010 17:38:58 +0000</pubDate>
		<dc:creator>Brandon Watson</dc:creator>
				<category><![CDATA[Windows Phone]]></category>
		<category><![CDATA[employees]]></category>
		<category><![CDATA[moonlighting]]></category>
		<category><![CDATA[windows phone 7]]></category>
		<category><![CDATA[wp7dev]]></category>

		<guid isPermaLink="false">http://www.manyniches.com/windows-phone/employee-developer-program/</guid>
		<description><![CDATA[In the last couple of days since Andy’s announcement that all employees would get free Windows Phone 7s, we’ve seen a lot of buzz about the offer, including some around why we were doing it. So why did we do it?&#160; Put simply, we did it for the employees.&#160; If you speak to any software [...]]]></description>
			<content:encoded><![CDATA[<div class="tweetmeme_button" style="float: right; margin-left: 5px; margin-right: 5px;">
			<a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Fwww.manyniches.com%2Fwindows-phone%2Femployee-developer-program%2F"><br />
				<img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fwww.manyniches.com%2Fwindows-phone%2Femployee-developer-program%2F&amp;source=BrandonWatson&amp;style=normal&amp;service=bit.ly&amp;b=2" height="61" width="50" /><br />
			</a>
		</div>
<div class="wlWriterHeaderFooter" style="float:none; margin:0px; padding:4px 0px 4px 0px;"><iframe src="http://www.facebook.com/widgets/like.php?href=http://www.manyniches.com/windows-phone/employee-developer-program/" scrolling="no" frameborder="0" style="border:none; width:450px; height:80px"></iframe></div>
<p>In the last couple of days since Andy’s announcement that all employees would get free Windows Phone 7s, we’ve seen a lot of buzz about the offer, including some around why we were doing it.</p>
<p>So why did we do it?&#160; Put simply, we did it for the employees.&#160; If you speak to any software developer or hacker, they will tell you that they love writing code.&#160; They love solving problems.&#160; They love creating things.&#160; They love sharing their work with their friends and peers.&#160; They love the satisfaction of seeing something work on a screen.&#160; Unfortunately, when you work for a company, most of them generally have pretty stringent rules about moonlighting, and the ownership of IP.&#160; For software companies, this usually includes code and side projects.&#160; Microsoft is no different.</p>
<p>With this new mobile app era upon us, the Windows Phone team felt it important that we enable our own employees to participate.&#160; There are so many talented, technical people at Microsoft.&#160; It’s not just professional software developers…many Microsofties love coding, and they work on projects in their spare time.</p>
<p>We believe most Microsofties <strong>want</strong> to write apps for Windows Phone 7.&#160; Before last week, and the changes announced in our policies, they couldn’t.&#160; They would not have been able to profit from those projects.&#160; We made these changes specifically to address the desire of our own employees to express themselves in code in the app marketplace.&#160; A funny thing happens when you remove friction and barriers among a group of creative people.&#160; I can’t wait to see what they create.</p>
<p>The internal response has been overwhelming.&#160; I can’t count the number of languages in which we heard “thank you” while at our global sales summit last week.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.manyniches.com/windows-phone/employee-developer-program/feed/</wfw:commentRss>
		<slash:comments>16</slash:comments>
		</item>
		<item>
		<title>Windows Phone 7 Beta Tools</title>
		<link>http://www.manyniches.com/windows-phone/windows-phone-7-beta-tools/</link>
		<comments>http://www.manyniches.com/windows-phone/windows-phone-7-beta-tools/#comments</comments>
		<pubDate>Wed, 14 Jul 2010 15:39:24 +0000</pubDate>
		<dc:creator>Brandon Watson</dc:creator>
				<category><![CDATA[Windows Phone]]></category>
		<category><![CDATA[Microsoft]]></category>
		<category><![CDATA[windows phone 7 wp7]]></category>
		<category><![CDATA[wp7dev]]></category>

		<guid isPermaLink="false">http://www.manyniches.com/?p=424</guid>
		<description><![CDATA[I cannot believe I have only been working on the Windows Phone 7 team for three months.  So much has happened, it feels like a lifetime.  What&#8217;s been most impressive to me has been the pace of the engineering team.  Considering how many technologies from across the company we are bringing to WP7, it&#8217;s absolutely [...]]]></description>
			<content:encoded><![CDATA[<div class="tweetmeme_button" style="float: right; margin-left: 5px; margin-right: 5px;">
			<a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Fwww.manyniches.com%2Fwindows-phone%2Fwindows-phone-7-beta-tools%2F"><br />
				<img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fwww.manyniches.com%2Fwindows-phone%2Fwindows-phone-7-beta-tools%2F&amp;source=BrandonWatson&amp;style=normal&amp;service=bit.ly&amp;b=2" height="61" width="50" /><br />
			</a>
		</div>
<p>I cannot believe I have only been working on the Windows Phone 7 team for three months.  So much has happened, it feels like a lifetime.  What&#8217;s been most impressive to me has been the pace of the engineering team.  Considering how many technologies from across the company we are bringing to WP7, it&#8217;s absolutely amazing what they are doing.</p>
<p>This week, during Andy Lees&#8217;s keynote at the Microsoft Worldwide Partner Conference, we announced that the <a href="http://developer.windowsphone.com">Windows Phone Developer Tools</a> have gone BETA.  Beta means that we have a near final version of the tools for building apps and games for Windows Phone 7.</p>
<p>I wanted to share with the community just how excited the developer community has been.  As a data guy, I like numbers because they tend not to lie.  Since the Mix10 release in March of the first CTP tools (and then the refresh in April), we have seen over 200K downloads of the Windows Phone Developer Tools.  That was before we shipped a Beta, and certainly before we had <a href="http://www.apple.com/pr/library/2008/06/09iphone_sdk.html">5M devices in market to fuel demand</a>.  At some point we&#8217;ll release the Beta download numbers, but based on the number of people <a href="https://msevents.microsoft.com/CUI/EventDetail.aspx?EventID=1032455932&amp;Culture=en-US">registered for the live training course next week</a> (hint: it&#8217;s got a comma in it), there&#8217;s a lot of people who want to build apps for Windows Phone 7.</p>
<p>For me, that&#8217;s a pretty solid indicator of the excitement levels, how much our developer community is anticipating getting involved with WP7, and that it is time to get serious about building apps and games, or building out your business, for Windows Phone 7.  The opportunities are plenty, even if you don&#8217;t want to build apps.  We showed one of our partners, <a href="http://www.preemptive.com">Preemptive Solutions</a>, on stage at WPC showing how they are building analytics tools so that app developers can build better apps.  Get creative, and start building.  Stay nerdy my friends.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.manyniches.com/windows-phone/windows-phone-7-beta-tools/feed/</wfw:commentRss>
		<slash:comments>13</slash:comments>
		</item>
		<item>
		<title>Marketplace Value Add For Devs and Customers</title>
		<link>http://www.manyniches.com/windows-phone/marketplace-value-add-for-devs-and-customers/</link>
		<comments>http://www.manyniches.com/windows-phone/marketplace-value-add-for-devs-and-customers/#comments</comments>
		<pubDate>Thu, 24 Jun 2010 15:22:00 +0000</pubDate>
		<dc:creator>Brandon Watson</dc:creator>
				<category><![CDATA[Windows Phone]]></category>
		<category><![CDATA[android]]></category>
		<category><![CDATA[apps]]></category>
		<category><![CDATA[iphone]]></category>
		<category><![CDATA[marketplace]]></category>
		<category><![CDATA[windows phone 7]]></category>
		<category><![CDATA[wp7dev]]></category>

		<guid isPermaLink="false">http://www.manyniches.com/windows-phone/marketplace-value-add-for-devs-and-customers/</guid>
		<description><![CDATA[There was a story which surfaced yesterday about vulnerabilities exposed in a wide swath of Android apps.&#160; SMobile Systems conducted research in the Android app space and found that some 20% of the apps allow third-party apps to gain access to sensitive or private information. It would be easy to dismiss this article by pointing [...]]]></description>
			<content:encoded><![CDATA[<div class="tweetmeme_button" style="float: right; margin-left: 5px; margin-right: 5px;">
			<a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Fwww.manyniches.com%2Fwindows-phone%2Fmarketplace-value-add-for-devs-and-customers%2F"><br />
				<img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fwww.manyniches.com%2Fwindows-phone%2Fmarketplace-value-add-for-devs-and-customers%2F&amp;source=BrandonWatson&amp;style=normal&amp;service=bit.ly&amp;b=2" height="61" width="50" /><br />
			</a>
		</div>
<div class="wlWriterHeaderFooter" style="float:none; margin:0px; padding:4px 0px 4px 0px;"><iframe src="http://www.facebook.com/widgets/like.php?href=http://www.manyniches.com/windows-phone/marketplace-value-add-for-devs-and-customers/" scrolling="no" frameborder="0" style="border:none; width:450px; height:80px"></iframe></div>
<p>There was a story which surfaced yesterday about <a href="http://news.cnet.com/8301-27080_3-20008518-245.html?amp">vulnerabilities exposed in a wide swath of Android apps</a>.&#160; SMobile Systems conducted research in the Android app space and found that some 20% of the apps allow third-party apps to gain access to sensitive or private information.</p>
<p>It would be easy to dismiss this article by pointing out that by simply downloading an app, a customer is making a explicit allowance to an app to access data on the phone.&#160; What I found troubling about the findings wasn’t necessarily the point about access to the data, but rather that, 5% of the apps surveyed could make calls and 2% could send premium SMS messages.&#160; Talk about a surprise cell phone bill.</p>
<p>The key word in the above statements, however, is “could.&#8217;”&#160; Yes, customers make the decision to download those apps, but they have no way of knowing with certainty what those apps are doing behind the scenes.&#160; UPDATE: Ben points out below that the customer us warned of all the APIs used, which is true, but they aren’t told *how* they are used.</p>
<p>Further, because of the multi-tasking architecture of Android, the apps have the potential to be doing a bunch of bad things in the background when the phone is not in use.</p>
<p>Google has been quick to point out that the architecture of Android would limit what actual damage one of these apps could do, but that’s really not the point.&#160; What is being lost in this discussion is that there is no curation of the Android marketplace.&#160; For all the grumbling and grousing about the Apple AppStore, their review process would likely catch these abuses.&#160; There is no such level of certification for the Android marketplace.&#160; Customers don’t want to think about needing anti-spyware software for their phone, as the article implies is one solution for Android.</p>
<p>The Windows Phone Marketplace certainly believes in the curation model, and we have placed user security as a top priority.&#160; This is one of the main reasons that we have our app certification process, and why (UDPATE: “at least in version 1”) apps are run in sandboxes, with no access to any data other than its own isolated storage, or the ability to communicate with other apps.&#160; UPDATE: The goal is to ensure that absolute best customer experience when using their phone.</p>
<p>UDPATE 6/25/10</p>
<p>I’m not one who believes in conspiracy theories or anything, but I do find the timing of this <a href="http://news.cnet.com/8301-27080_3-20008922-245.html?tag=newsEditorsPicksArea.0">announcement from Google that they can remotely wipe apps from phones</a> a bit curious.&#160; I have to go do some digging, but I’d be interested to know if the Android developer agreement has specificity about what would constitute grounds for a remote wipe.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.manyniches.com/windows-phone/marketplace-value-add-for-devs-and-customers/feed/</wfw:commentRss>
		<slash:comments>11</slash:comments>
		</item>
	</channel>
</rss>

