Today I received an inquiry from a fellow developer on the support email for one of my Windows Store apps App Roulette. That was pretty refreshing, and I'm pretty open to sharing information with other developers. I get more excited to see what they will create than worried over the potential for competition. So I'm here to share with you all. Anyhow, this developer was wondering how to get this App information and I'll explain how I access that and how you can too.

First a little self promotion, in addition to App Roulette I use this information in a few other apps. Developer Dashboard a one stop shop to view the reviews from all countries for all of your apps with a simple tap to translate each review, Windows Store Developers a directory of all the developers in the Windows Store (over 10000) and their apps, Most Active Reviewers a directory of the most prolific app reviewers and their reviews, and in my own portfolio app Software Developer which lists out all the other apps I have published in the Windows Store, please give some of them a try.

Here we go! First we will start with Robots.txt file for the Windows Store website. http://apps.microsoft.com/robots.txt

Websites use robots.txt to guide web crawlers on how to behave, what they want them to see, and what they don't want them to see.

http://www.robotstxt.org/

Web Robots (also known as Web Wanderers, Crawlers, or Spiders), are programs that traverse the Web automatically. Search engines such as Google use them to index the web content, spammers use them to scan for email addresses, and they have many other uses.


In this case the Sitemaps.xml index file is what we are interested in. http://apps.microsoft.com/windows/sitemap_index.xml



Sitemaps are an easy way for webmasters to inform search engines about pages on their sites that are available for crawling. In its simplest form, a Sitemap is an XML file that lists URLs for a site along with additional metadata about each URL (when it was last updated, how often it usually changes, and how important it is, relative to other URLs in the site) so that search engines can more intelligently crawl the site.


The Sitemap Index file lists out each of the individual Sitemap XML files. As of this writing, the apps.microsoft.com website has 141 individual Sitemap XML files. 




Inside the individual files are thousands of URL's to the web pages of Windows Store apps. Such as this URL to the PlayTo Receiver app:





These webpages for the apps do include a good bit of information that we could scrape from the HTML but we can do better.... The key information we are getting here is the App ID's and which geographies those App ID's are published to in the store. 
For example: 
72a6ba17-2d4e-4a1c-bcfb-cdc5d4b32d0e 
and en-us etc...




And now to the good stuff, there a few web services we can call using our newly found App Id's and geography information. 





There is plenty of information available through this web service but it's not clearly spelled out by the element names. Here is my interpretation of many (not all) of them to start you off. 

sSubCategoryName = rawXML.getElementsByTagName('Sc')[0].getElementsByTagName('N')[0].childNodes[0].nodeValue;
sSubCategoryId = rawXML.getElementsByTagName('Sc')[0].getElementsByTagName('I')[0].childNodes[0].nodeValue;
sHasTrial = rawXML.getElementsByTagName('Try')[0].childNodes[0].nodeValue;
sDescription = rawXML.getElementsByTagName('D')[0].childNodes[0].nodeValue;
sDeveloper = rawXML.getElementsByTagName('Dev')[0].childNodes[0].nodeValue;
sWebsite = rawXML.getElementsByTagName('Ws')[0].childNodes[0].nodeValue;
sSupport = rawXML.getElementsByTagName('Sws')[0].childNodes[0].nodeValue;
sPrivacy = rawXML.getElementsByTagName('Pu')[0].childNodes[0].nodeValue;
sCategoryName = rawXML.getElementsByTagName('C')[0].getElementsByTagName('N')[0].childNodes[0].nodeValue;
sCategoryId = rawXML.getElementsByTagName('C')[0].getElementsByTagName('I')[0].childNodes[0].nodeValue;
sPrice = rawXML.getElementsByTagName('P')[0].childNodes[0].nodeValue;
sForegroundColor = rawXML.getElementsByTagName('Fg')[0].childNodes[0].nodeValue;
sBackgroundColor = rawXML.getElementsByTagName('Bg')[0].childNodes[0].nodeValue;
sAppIcon = rawXML.getElementsByTagName('Ico')[0].childNodes[0].nodeValue;
sAppName = rawXML.getElementsByTagName('T')[0].childNodes[0].nodeValue;
sPackageFamilyName = rawXML.getElementsByTagName('Pfn')[0].childNodes[0].nodeValue;
sResourceId = rawXML.getElementsByTagName('R')[0].childNodes[0].nodeValue;
sId = rawXML.getElementsByTagName('I')[0].childNodes[0].nodeValue;
sCapabilities = sCapabilities + arrCapabilities[k].childNodes[0].nodeValue+",";
sUpdate = rawXML.getElementsByTagName('Ud')[0].childNodes[0].nodeValue;
sFeatures1 = rawXML.getElementsByTagName('Dbp')[0].childNodes[0].nodeValue;
sFeatures2 = rawXML.getElementsByTagName('Dbp')[1].childNodes[0].nodeValue;
sFeatures3 = rawXML.getElementsByTagName('Dbp')[2].childNodes[0].nodeValue;
sFeatures4 = rawXML.getElementsByTagName('Dbp')[3].childNodes[0].nodeValue;
sFeatures5 = rawXML.getElementsByTagName('Dbp')[4].childNodes[0].nodeValue;
sFeatures6 = rawXML.getElementsByTagName('Dbp')[5].childNodes[0].nodeValue;
sFeatures7 = rawXML.getElementsByTagName('Dbp')[6].childNodes[0].nodeValue;
sFeatures8 = rawXML.getElementsByTagName('Dbp')[7].childNodes[0].nodeValue;
sFeatures9 = rawXML.getElementsByTagName('Dbp')[8].childNodes[0].nodeValue;
sScreenshot1 = rawXML.getElementsByTagName('Ss')[0].getElementsByTagName('U')[0].childNodes[0].nodeValue
sScreenshot2 = rawXML.getElementsByTagName('Ss')[1].getElementsByTagName('U')[0].childNodes[0].nodeValue
sScreenshot3 = rawXML.getElementsByTagName('Ss')[2].getElementsByTagName('U')[0].childNodes[0].nodeValue
sScreenshot4 = rawXML.getElementsByTagName('Ss')[3].getElementsByTagName('U')[0].childNodes[0].nodeValue
sScreenshot5 = rawXML.getElementsByTagName('Ss')[4].getElementsByTagName('U')[0].childNodes[0].nodeValue
sScreenshot6 = rawXML.getElementsByTagName('Ss')[5].getElementsByTagName('U')[0].childNodes[0].nodeValue
sScreenshot7 = rawXML.getElementsByTagName('Ss')[6].getElementsByTagName('U')[0].childNodes[0].nodeValue
sScreenshot8 = rawXML.getElementsByTagName('Ss')[7].getElementsByTagName('U')[0].childNodes[0].nodeValue
sScreenshot9 = rawXML.getElementsByTagName('Ss')[8].getElementsByTagName('U')[0].childNodes[0].nodeValue
sCaption1 = rawXML.getElementsByTagName('Ss')[0].getElementsByTagName('Cap')[0].childNodes[0].nodeValue
sCaption2 = rawXML.getElementsByTagName('Ss')[1].getElementsByTagName('Cap')[0].childNodes[0].nodeValue
sCaption3 = rawXML.getElementsByTagName('Ss')[2].getElementsByTagName('Cap')[0].childNodes[0].nodeValue
sCaption4 = rawXML.getElementsByTagName('Ss')[3].getElementsByTagName('Cap')[0].childNodes[0].nodeValue
sCaption5 = rawXML.getElementsByTagName('Ss')[4].getElementsByTagName('Cap')[0].childNodes[0].nodeValue
sCaption6 = rawXML.getElementsByTagName('Ss')[5].getElementsByTagName('Cap')[0].childNodes[0].nodeValue
sCaption7 = rawXML.getElementsByTagName('Ss')[6].getElementsByTagName('Cap')[0].childNodes[0].nodeValue
sCaption8 = rawXML.getElementsByTagName('Ss')[7].getElementsByTagName('Cap')[0].childNodes[0].nodeValue




There is more to the Windows Store than just apps, there are also reviews, and lots of them. There are currently over 210,000 reviews for apps in the Windows Store. These reviews come from all over the world, so you'll need some country codes, your handy dandy App Id's and pay attention to the pn/1 at the end, you will find that this service only returns 10 reviews per page, just increment this value to pn/2, pn/3 etc.. until you run out of reviews. 


var arrCounntryCodes = ["AE", "AR", "AT", "AU", "BE", "BG", "BH", "CA", "CH", "CL", "CN", "CO", "CR", "CY", "CZ", "DE", "DK", "DZ", "EE", "EG", "ES", "FI", "FR", "GB", "GR", "HK", "HR", "HU", "ID", "IE", "IL", "IN", "IQ", "IT", "JO", "JP", "KW", "KZ", "LB", "LK", "LT", "LU", "LV", "LY", "MA", "MT", "MX", "MY", "NL", "NO", "NZ", "OM", "PE", "PH", "PK", "PL", "QA", "RO", "RS", "RU", "SA", "SE", "SG", "SI", "SK", "TH", "TN", "TR", "TT", "UA", "US", "UY", "VE", "VN"];




This one is much more descriptive with the element names, so I don't see any need for further explaination of this. You can see the full name, display name, the image the user has chosen to represent themselves with. 


Next up we can do a little bit of seaching...

Here it gets a little cryptic again, but by now you should be used to it. You can get the App ID from the I element and take it from there back to the browse service <I>f514d64b-8705-43b7-a400-c4f4f3dedfc0</I>




So there you have it, the basics of pulling tons of information out of the Windows Store that you can then do what you please with. If you find this useful and/or make some apps utilizing the information, have some additional information to share or otherwise please let me know in the comments.






  1. UPDATE 6/27/14:  We are now in the last few days of the judging period for the Publish Windows Contest. Tappy Dog also was declared the Microsoft's Best App of the Month for May 2014. The update freeze is almost over, had I pushed any updates before 6/30 I would get a 10% penalty from the contest. So I'll be able to get some fixes and tweaks in soon. I haven't seen the number of downloads I would have liked to see on this game. I ran a paid Ad Duplex campaign for Tappy Dog and it didn't perform very well. I spent ~$350 in Ad Duplex credit on this campaign. It generated about 100-150 clicks per day toward the end when I had a $40 per day spend.

     
     
    But that is only half the story... You can see here the time period where I was essentially spending $40 a day for 11 downloads.
     
     
    I also included Tappy Dog in my Windows App Hunt promotion. I'm giving away an Xbox One and a Nokia Lumia phone to celebrate my achievement of 1 million downloads of my apps on Windows Phone. Check it out, http://www.windowstherapy.com you have until July 14th to enter.
     
     
    ------------------------------------And..... Back to the original post ---------------------------------------------------------


    Tappy Dog is the BEST real-time multiplayer dog racing game on the Windows Platform.


    Available from the Windows Store and Windows Phone Store (Requires Windows Phone 8.1)

    Tappy Dog?


    Tappy Dog brings the excitement of dog racing to Windows. Tap your way to victory in this racing game that is fun for the whole family. Reminiscent of the boardwalk and carnival horse racing games, we present dog racing, and rather than rolling balls into holes, you tap the tiles to move your dog. Green goes fast, yellow goes slow, red goes BACKWARDS!
     
     

    Built for \\ Publish\



     I built Tappy Dog for the https://publishwindows.com/ contest.

    "Publish an app, win some prizes, and score bragging rights. Fans. Fame. Free stuff. Whether you’re porting an existing app or creating a fresh one, publish your Windows or Windows Phone app and enter for a chance to win..."

    There is a global online competition which ends on June 1st, and there were events at over 60 locations worldwide, including the event I attended in New York City.
    They awarded prizes in the following categories:
    • Best Windows 8.1 App
    • Best Windows Phone 8.1 App
    • Best Cross Platform App
    • Breakthrough in App Innovation and Design
    My app is a Universal app for the Windows Platform targeting both Windows and Windows Phone.
    It is a WinJS project the utilizes SignalR to support the real-time multiplayer action. I have a C# SignalR project running on Azure Websites which should provide easy scalability if my game becomes popular.  


    Windows Features

    Not only is Tappy Dog a game, it is a game that is designed with the Windows Platform in mind. Specific features of the platform that have been leveraged by the game include:
    • Live Tile Statistics Display
    • Designed for Keyboard (A,S,D,F), Touch, Mouse or Pen input
    • Share your stats and challenge your friends with the Share Contract
    • Real-time gameplay powered by ASP.Net SignalR 
    • Metered Connection detection enters a low bandwidth mode to prevent unwanted data charges
    • Hosting and scalability provided by Azure Websites

    The Event

     This event was held at Microsoft's Times Square office on a Friday and Saturday. We had plenty of coffee, tea and other beverages available throughout the event, we had pizza (With Toppings! [I love the hot wings pizza]), sliders and hotdogs were served, as was lasagna. There were healthier options available as well including a variety of salads and some dishes I would not be able to name. There was a live stream of cameras from other events around the world, but unfortunately we didn't have a camera. Xbox Music playlists were also available from other locations but not here. I also think I saw some cotton candy machines and fresh popcorn being made elsewhere but I guess I was in Times Square and could have had anything I wanted just outside the door, but at what price? :)

    My demo went well, I didn't encounter any of the error scenario's I am working to debug in my app, and I was actually able to juggle 4 devices through my demo! I had an ultrabook on the podium with me, my Nokia Lumia 920 Windows Phone, and 2 Surface RT's. I started my demo on the ultrabook and explained the basic premise and 'Windows' features of my game. From there I began connecting devices to the racetrack and handing them off to the judges and an attendee for an impromptu race which was a big hit. I've done multi-device demo's before and they can be VERY difficult to manage alone. Everything held together and we had a good time.

    We have a Winner!!!

    After the judges saw all of the apps and deliberated for a bit the results were announced. I won -

     1st Place in the App Innovation and Design category!

    For this I was awarded with a Nokia Lumia 1520 phone. A six inch 1080p display, 20 megapixel camera, and some of the greatest internals available on any Windows Phone. Not a bad prize. And I'm still in the running for the global competition.


    Going Global

    I don't plan to stop at New York City, I'm continuing to improve my app as we speak to meet the criteria being judged upon in the global contest.


    Performance/Public Appeal (15%): Based on overall App rating and the total # of downloads

    To support these numbers I have created an AdDuplex campaign leveraging 1 million impressions I won from another contest from AdDuplex, the Every Phone They Make promotion. Instead of getting a phone, I was able to choose 1 million ad impressions as an alternate prize. I'm tweeting about my game and trying to promote it otherwise but that is always a challenge. It's tough to know how to grab some leverage.

  2. Help me sell Azure to my team. We are currently moving off of our old CMS system Microsoft Content Management Server 2001, and are rebuilding our environment and using Sitefinity as our CMS. I have put together the following argument for the choice of Azure as I feel it is the best. Our design company vendor that we are working with have experience in Amazon's cloud and keep pushing that without reason. Please leave me a note in the comments providing any other benefits to using Azure over Amazon's cloud for our implementation.



    I have a few opinions on the topic.

    Today in our current implementation we use the cloud at SHI in an IaaS (Infrastructure as a Service) model upon which Virtual Machines are hosted. With this model it makes little difference other than price and performance from a host such as SHI, Amazon, Azure etc…

    Another supported configuration is to use the Azure Cloud in a Paas (Platform as a Service) model upon which the application and sql database are provided while abstracting us from the infrastructure.

    To me Azure is the natural cloud for Sitefinity, as it is the cloud provider with whom they show the most support. A lot like installing PHP on Windows, it’s just not natural – though it’s done and it works – it just seems off. Azure is the only cloud provider that Sitefinity supports in a platform as a service model. On Amazon you would be able to achieve this with storage, but not the application and database. This is a similar model to what our infrastructure team is currently investigating with Office365 PaaS to reduce the complexity of managing their hardware and systems, and would be prudent for us to at least consider as well. It provides the ability to remove yourself from patching OS’s and maintaining hardware etc…

    http://www.sitefinity.com/benefits/for-it-managers/windows-azure

    This would utilize Azure Cloud Services http://azure.microsoft.com/en-us/services/cloud-services/ to run the application replacing all webservers. It would use Azure SQL Database http://azure.microsoft.com/en-us/services/sql-database/ for the database replacing the need for maintaining SQL Servers. And it would utilize Azure Cloud Storage http://azure.microsoft.com/en-us/services/storage/ for sitefinity’s external storage location which can also be leveraged to provide CDN functionality as an option directly within Azure storage.

    On Amazon’s cloud we could utilize an IaaS model for our web and sql servers. Sitefinity does not support Amazon RDS http://aws.amazon.com/rds/ so we cannot do the same as you could with SQL Azure. We could still utilize amazon s3 http://aws.amazon.com/s3/ for external storage and pair that with a separate product Amazon CloudFront http://aws.amazon.com/cloudfront/ for CDN.



  3.  Today I encountered a situation at work building a public kiosk with a touchscreen running Windows 8. Our vendor has built an HTML5 Web Application that is intended to be running in Desktop Internet Explorer Kiosk Mode on 46" pedestal mounted touch screens in our sales offices - no keyboards. It has features which require plugins for PDF viewing within the context of the application.

    When you run Internet Explorer in Kiosk mode, the Internet Explorer title bar, menus, toolbars, and status bar are not displayed and Internet Explorer runs in Full Screen mode. This means our customers won't as easily be able to browse places we don't want them to go on the internet. This also means the Windows Task bar which includes the keyboard icon intended for launching the touch keyboard is unavailable. Putting focus on a textbox does not launch the touch keyboard in Desktop IE as it does in the Modern IE.

    The solution involves running an .exe file from the browser.  You can do this using WScript.Shell and ActiveX with a little bit of javascript to orchestrate the whole thing. In this example the onfocus event of an text input is used to launch the keyboard.



    <html>
    <head>
    <script>
    function launchKeyboard() {
    var objShell = new ActiveXObject("WScript.shell");
    objShell.run('"C:\\Program Files\\Common Files\\Microsoft Shared\\ink\\tabtip.exe"');
    }
    </script>
    </head>
    <body>
    <input type="text" onfocus="launchKeyboard();"/>
    </body>
    </html>
     

  4. Do you want to import your Google Calendar to Outlook.com?

    I've got email addresses and calendars up the Wazoo, wherever that is, and I've been trying to consolidate. One thing I wanted to do was bring my Google Calendar events over to Outlook.com to simplify my life.
    Luckily for us, you can export your Google Calendar into an ICS file using Google Takeout.
    Start by opening http://calendar.google.com  from your browser and login with your account. Next launch Google Takeout in another browser tab. https://www.google.com/settings/takeout/custom/calendar  Next make sure that you uncheck everything except Calendar and select which calendars you want to export & click Create Archive.

    When it is finished it will send you a notification email that your data is ready.

    Next download your new .zip file which includes an ICS file with your calendar info.

    Extract the .ics file(s) out of the zipped folder. 
    We are now ready to visit Outlook.com, sign in, and start importing our calendar.
    Select Calendar from the top menu bar.

    You have an option to either import to existing calendar or create a new one – I chose to import to existing. First click Browse and select your ICS file



    Next, click Import and the import will begin. You can now go to your Outlook.com calendar and see all the imported appointments. 

    Enjoy your new simplified life!
  5. Outlook.com enables Trusted Devices to access sensitive information with single step authentication.

    A device can be marked as trusted by selecting the check box when you're prompted to enter a security code to verify your identity. Select the "I sign in frequently on this device. Don't ask me for a code." check box, and the device will become a Trusted Device upon successful login.

    You can also trust as many devices as you want there is no limit.
    If you don't sign in to a particular trusted device for 2 months it will be removed from your Microsoft account keeping your account secure in the event that a trusted device is lost or stolen without you realizing it. But if someone steals your device or it is lost somehow you may want to revoke that trust. This is a simple task on outlook.com - by navigating


    Click your profile image in  the top navigation bar
    Select 'Account settings' from the menu
    Open the 'Security info' category under 'Overview'. 
    Click 'Remove all the trusted devices associated with my account' under 'Trusted devices'
    then click 'Remove all trusted devices'.






    Remember, you can always trust a device again later.
  6. A lot of tasks on  Outlook.com can be completed using the keyboard. Many people think of shortcuts as something to use within an installed application on their computer but not often are they thought of when it comes to websites. But what about when that website is itself a robust application? It should include shortcuts too, and that's what outlook.com achieves.
     
    The shortcuts fall into several categories for Writing Email, Reading Email, GoTo, Email Actions, and Email list commands. But first, it's good to know the shortcut to the shortcuts!
    To see a list of keyboard shortcuts, in Outlook.com just press the ? key on your keyboard!
     If you prefer not to use shortcuts, or are more familiar with the shortcut keys you used on your old email service you can use the shortcuts keys from Gmail or Yahoo mail or turn it off altogether in the settings.
     
     

    Write email

    Create a new email
    N/Ctrl+N
    Show address book
    Alt+.
    Send an email
    Ctrl+Enter/Alt+S
    Reply to an email
    R
    Reply all to an email
    Shift+R
    Forward an email
    Shift+F
    Check spelling
    F7
    Insert an Emoji
    Ctrl+Y
    Save draft
    Ctrl+S

    Read emal

    Open an email
    O/Enter
    Show blocked content
    Shift+I
    Search your email
    /
    Close an email
    Esc
    Expand/Collapse a conversation
    X

    Go to

    Go to Inbox
    G then I
    Go to Flagged
    G then L
    Go to Drafts
    G then D
    Go to Sent
    G then S
    Go to People
    Ctrl+3
    Show keyboard help
    ?

    Email actions

    Delete an email
    Del
    Archive
    E
    Mark an email as junk
    J
    Move to a folder
    V
    New Folder
    Shift+E
    Categorize an email
    C
    New Category
    Shift+G
    Remove all categories
    Y
    Mark an email as read
    Q
    Mark an email as unread
    U
    Flag an email
    Insert
    Print an email
    Shift+P

    Email list

    Select all emails
    S then A
    Deselect all emails
    S then N
    Move selection downwards
    Ctrl+./Down
    Move selection upwards
    Ctrl+,/Up
    Refresh
    M/F9
  7. I'm a fan of a good User Interface, and I have a nickname for bad ones that make you move, click, and scroll way too much to get simple tasks done - Carpal Tunnel Systems. The first system I had called this was a CMS (Content Management System) so the acronym made sense more in that context... Anyhow.

    When you manage your inbox, many times you know what to do with an email before you even open it. Is it Spam from the Hormel corporation, a offer from a Nigerian prince, or an ex-girlfriend that won't stop stalking you? Maybe you are busy when an important email pops up and you want to flag it for later. Outlook.com enables you to set up one-click actions that perform these actions instantly. 
    To configure quick actions:

    • click the settings icon in the toolbar
    • select 'More email settings' from the menu.
    • select 'Instant actions' under 'Customising Outlook'
    • make sure 'Show instant actions' is   checked.


    You can also add your own instant action buttons by clicking 'Add actions' and selecting other options from the menu, such as 'Move to' / 'Categorize'. To make the button always visible, highlight the button under 'Show on mouse over' and move it down until the button is set to  'Show always'.
  8. Outlook.com's sweep feature allows you to clean up your inbox and keep it that way automatically.

    Wait... what? yeah.

    This doesn't just blindly delete all your stuff. One example of it's use would be if you get automatic emails with special offers that are only valid for a short period of time, you can have Outlook.com automatically clear out old versions of the email when the latest one arrives.
     
    You can set up automatic cleanup for a sender's mail or a category in Outlook.com, open a message from the sender or newsletter you would like cleaned up automatically, click 'Sweep' in the Outlook.com toolbar and then select 'Schedule cleanup' from the menu.

    You can choose:
    • 'Only keep the latest message from this sender',
    •  'Delete all messages older than __ days' 
    • 'Move all messages older than __ days to <select>'.

    Optionally, you can select 'Do this for everything in the ___ category' and apply your rule to all emails classified as Newsletters or whatever else you choose.

    Next click 'OK'.

    That's it, now sit back and enjoy your new automatic self cleaning inbox. Thank you Outlook.com



  9. On October 12th and 13th I attended the Paypal Battlehack in Washinton D.C. which was part of a 10 city world tour of hackathons. It was a well run hackathon which made for a great experience and I met some really great competitors during the event. I was originally attracted to the event because of the awesome battle axe trophies, their really cool promo video, and I love to meet and compete.




    Arrived at 8:30am after waking up at 2am to drive from New Jersey. Not the best way to start a hackathon, thought I'd be able to go back to sleep a couple hours once I got to DC, but nope! I wanted to arrive early to win a Raspberry Pi for being one of the first 50 in the door.



     The venue for the event was a new co-working space just north of the White House called 1776dc and it really is beautifully designed for work. Paypal sprang for great meals, massages, and had plenty of beverages from coffee to soda to water to vitamin water to red bull to tea to beer. There was no shortage of food or drink at any time during the event, makes all happy.







    Lots of hackers doing their thing at the Battlehack.

    We had some presentations from the hackathon partners early in the AM. Nick Landry (@activenick) from Nokia presented information about Windows Phone and the available Nokia API's and offered prizes of phones for the best app and Nokia Premium Developer Program tokens for any app that implemented a Windows Phone solution. Kevin Whinnery (@kevinwhinnery) from Twilio was being a rockstar doing live code demos with much success, and brough retro gaming systems to give away. Scott Motte (@scottmotte) showed us why Sendgrid is THE API to use for email, really impressive solution and had Leap Motion devices up for grabs. And Microsoft was in the house with Ashish Jaiman (@ashishjaiman), Andrew Duthie (@devhammer), and Frank LaVigne (@tableteer) offering assistance and letting everyone know about Bizspark, and some XBOX Live points were added to the prize pool. 

    Team SEEK brought the Windows Phone goodness with an Arduino hack, they built a vending machine with an erector set and servos and then had a proximity device with wireless charging parents could use to track their children while at amusement parks or other public spaces. When the child leaves the zone various text messages and phone calls would alert the parent. They won the partner prize from Nokia and each team member is getting Nokia Lumia 925 phones. They also won a prize for being the most hardcore, these guys worked just about non-stop and had driven to the event from Ohio. They had a bit of a snafu during their demo causing lost time and I think had things gone right they might have taken the overall prize. Of the ideas at the event I think this one had the best opportunity for commercialization. I would totally rent this device, I recently had an experience where I almost lost my son at the park - had I been 10 seconds later in finding him he would have gone around a blind corner that led to several different paths and then I would have had no idea where on the planet my son was which was a terrible feeling. 



    I thought that 2 minutes to present the apps could have been longer, but I applaud the hosts for applying the time limit evenly and fairly to everyone. I've been at events before where I stuck to the time limit for my presentation and others went on and on beyond the limit. You have to choose your words very carefully and present the features of your app in a way that can be done quickly. Avoid form inputs or anything that takes any time really...


    I created an app called BosWash NYCer which is crowdfunding clean streets.  People see trash everyday on their way to work, but may not have the time or opportunity to clean it up. Now they can take a picture with their phone, add some description information, and post a bounty for the cleaning. Enterprising individuals can then claim the bounties by cleaning the area and taking their own photos as evidence earning money for themselves or their favorite charity. They can pin the bounties to the start screen on their Windows Phone so they can get directions and other information about a particular bounty with a tap, I used Battlehack partner Nokia HERE maps for the direction. When work begins on a bounty the bounty owner receives a text message and when work is completed they receive a phone call through which they can press 1 to approve the bounty claim, or press 2 to review it later. The text messages and phone calls were powered by Battlehack partner Twilio's API - this is really awesome and I'm going to start today building apps using Twilio I think I might have some money maker ideas. Anyway, When the bounty is approved, payment is made using the Battlehack host PayPal's API and email confirmations are sent using Battlehack partner Sendgrid's API. I built demo apps on Windows Phone and Windows 8, the data in my app is stored using Windows Azure Mobile Services.







    Paypal was really awesome and had us set up 10 minutes on which we could practice our presentation and test the demo equipment with our devices. This was a wakeup call for me and when I actually tried to execute my demo I kept losing my place. My solution used both a tablet app and a phone app, so juggling those and speaking at the same time under a 2 minute limit was proving difficult. I went back and refocused my presentation. No matter how much preparation, snafu's happen in demos - despite the assurances of the soundboard guy that the audio would not be a problem, the audio didn't work during my presentation. I was able to quickly make the save by unplugging my phone and putting it on speaker phone for the Twilio phone call part of my demo. I had brought my own Nokia Playup 360 speaker too just for this purpose but the audio worked during the practice, just not during the live demo.

    By the end of the hackathon a number of folks had given up and left but there was still plenty of competition for the prizes and in the end 17 teams presented the apps they had built over the course of the past 24 hours. I must admit I had the feeling to just go home by 6am on Sunday, but there was no way I was going to give up and leave without completing what I had come to accomplish. 



    1. SmartMoney aims to gives users the best chances of winning with lottery tickets by providing notifications and info. DC
    2. Take the roads less traveled with 2Roads, a service that tells you the status of your commute and gives you alternatives. DC
    3. Tapd is an app allows Paypal users to quickly pay for items by tapping their phone against their point-of-sale system. DC
    4. HereUS is a public opinion discovery platform. Users are able to see petitions of the local community and support them.
    5. ScanPal is a Glass app that lets the user instantly find listings of items they see. DC
    6. CrowdPowered helps volunteers organize community projects by enabling organizations and people to donate time and supplies. DC
    7. HoboApp is a service that shows the homeless various locations of services based on need. DC
    8. philanthroFeed enables donations to homeless by sending money to a registered person, which they access at partner stores. DC
    9. Seek is a rentable device children wear that broadcasts signals to parents' phone when their children leave boundaries. DC
    10. Authentic Medicine validates the authenticity of medicine to protect users medically and financially. DC
    11. FeudFunding pits issues against each other by enabling users to contribute $1 to favorites. Winning issues wins total amt .
    12. Next up is FlashShow, which enables you to share media with your friends, which they can view simultaneously when you do. DC
    13. FundB is an alternative of payday loans by enabling groups of friends to fund small loans for each other. DC
    14. Next up is RSVP+, which brings dontations to event signups. DC
    15. GetSkooled is an app made to bring fantasy team gaming to education to lower dropout rates. DC

    16. BosWash uses crowdfunding to address local problems of litter, vandalism, unemployment and volunteer opportunities. DC
    17. First up @ is eLert: a crowd sourced community security environment, using recycled phones to provide home security systems.


    In the end I was awarded 2nd place overall, I won a partner prize from Microsoft, and received an honorable mention from partner Nokia. I believe I was the most mentioned app during the awards ceremony which was pretty cool. The winners were Team Philanthrofeed, a group of 4 computer science students from Georgetown University who did a really amazing job. I had been sitting nearby them for most of the hackathon and they worked together so well, I am very proud to come in second to a team like them and they have a really bright future ahead of them. I'm rooting for them to win the whole thing in the San Jose Battlehack World Finals. I'm kind of happy I don't have to travel to California for the finals, but I really wanted that Axe trophy, totally epic. 




  10. Today I received an inquiry from a fellow developer on the support email for one of my Windows Store apps App Roulette. That was pretty refreshing, and I'm pretty open to sharing information with other developers. I get more excited to see what they will create than worried over the potential for competition. So I'm here to share with you all. Anyhow, this developer was wondering how to get this App information and I'll explain how I access that and how you can too.

    First a little self promotion, in addition to App Roulette I use this information in a few other apps. Developer Dashboard a one stop shop to view the reviews from all countries for all of your apps with a simple tap to translate each review, Windows Store Developers a directory of all the developers in the Windows Store (over 10000) and their apps, Most Active Reviewers a directory of the most prolific app reviewers and their reviews, and in my own portfolio app Software Developer which lists out all the other apps I have published in the Windows Store, please give some of them a try.

    Here we go! First we will start with Robots.txt file for the Windows Store website. http://apps.microsoft.com/robots.txt

    Websites use robots.txt to guide web crawlers on how to behave, what they want them to see, and what they don't want them to see.

    http://www.robotstxt.org/

    Web Robots (also known as Web Wanderers, Crawlers, or Spiders), are programs that traverse the Web automatically. Search engines such as Google use them to index the web content, spammers use them to scan for email addresses, and they have many other uses.


    In this case the Sitemaps.xml index file is what we are interested in. http://apps.microsoft.com/windows/sitemap_index.xml



    Sitemaps are an easy way for webmasters to inform search engines about pages on their sites that are available for crawling. In its simplest form, a Sitemap is an XML file that lists URLs for a site along with additional metadata about each URL (when it was last updated, how often it usually changes, and how important it is, relative to other URLs in the site) so that search engines can more intelligently crawl the site.


    The Sitemap Index file lists out each of the individual Sitemap XML files. As of this writing, the apps.microsoft.com website has 141 individual Sitemap XML files. 




    Inside the individual files are thousands of URL's to the web pages of Windows Store apps. Such as this URL to the PlayTo Receiver app:





    These webpages for the apps do include a good bit of information that we could scrape from the HTML but we can do better.... The key information we are getting here is the App ID's and which geographies those App ID's are published to in the store. 
    For example: 
    72a6ba17-2d4e-4a1c-bcfb-cdc5d4b32d0e 
    and en-us etc...




    And now to the good stuff, there a few web services we can call using our newly found App Id's and geography information. 





    There is plenty of information available through this web service but it's not clearly spelled out by the element names. Here is my interpretation of many (not all) of them to start you off. 

    sSubCategoryName = rawXML.getElementsByTagName('Sc')[0].getElementsByTagName('N')[0].childNodes[0].nodeValue;
    sSubCategoryId = rawXML.getElementsByTagName('Sc')[0].getElementsByTagName('I')[0].childNodes[0].nodeValue;
    sHasTrial = rawXML.getElementsByTagName('Try')[0].childNodes[0].nodeValue;
    sDescription = rawXML.getElementsByTagName('D')[0].childNodes[0].nodeValue;
    sDeveloper = rawXML.getElementsByTagName('Dev')[0].childNodes[0].nodeValue;
    sWebsite = rawXML.getElementsByTagName('Ws')[0].childNodes[0].nodeValue;
    sSupport = rawXML.getElementsByTagName('Sws')[0].childNodes[0].nodeValue;
    sPrivacy = rawXML.getElementsByTagName('Pu')[0].childNodes[0].nodeValue;
    sCategoryName = rawXML.getElementsByTagName('C')[0].getElementsByTagName('N')[0].childNodes[0].nodeValue;
    sCategoryId = rawXML.getElementsByTagName('C')[0].getElementsByTagName('I')[0].childNodes[0].nodeValue;
    sPrice = rawXML.getElementsByTagName('P')[0].childNodes[0].nodeValue;
    sForegroundColor = rawXML.getElementsByTagName('Fg')[0].childNodes[0].nodeValue;
    sBackgroundColor = rawXML.getElementsByTagName('Bg')[0].childNodes[0].nodeValue;
    sAppIcon = rawXML.getElementsByTagName('Ico')[0].childNodes[0].nodeValue;
    sAppName = rawXML.getElementsByTagName('T')[0].childNodes[0].nodeValue;
    sPackageFamilyName = rawXML.getElementsByTagName('Pfn')[0].childNodes[0].nodeValue;
    sResourceId = rawXML.getElementsByTagName('R')[0].childNodes[0].nodeValue;
    sId = rawXML.getElementsByTagName('I')[0].childNodes[0].nodeValue;
    sCapabilities = sCapabilities + arrCapabilities[k].childNodes[0].nodeValue+",";
    sUpdate = rawXML.getElementsByTagName('Ud')[0].childNodes[0].nodeValue;
    sFeatures1 = rawXML.getElementsByTagName('Dbp')[0].childNodes[0].nodeValue;
    sFeatures2 = rawXML.getElementsByTagName('Dbp')[1].childNodes[0].nodeValue;
    sFeatures3 = rawXML.getElementsByTagName('Dbp')[2].childNodes[0].nodeValue;
    sFeatures4 = rawXML.getElementsByTagName('Dbp')[3].childNodes[0].nodeValue;
    sFeatures5 = rawXML.getElementsByTagName('Dbp')[4].childNodes[0].nodeValue;
    sFeatures6 = rawXML.getElementsByTagName('Dbp')[5].childNodes[0].nodeValue;
    sFeatures7 = rawXML.getElementsByTagName('Dbp')[6].childNodes[0].nodeValue;
    sFeatures8 = rawXML.getElementsByTagName('Dbp')[7].childNodes[0].nodeValue;
    sFeatures9 = rawXML.getElementsByTagName('Dbp')[8].childNodes[0].nodeValue;
    sScreenshot1 = rawXML.getElementsByTagName('Ss')[0].getElementsByTagName('U')[0].childNodes[0].nodeValue
    sScreenshot2 = rawXML.getElementsByTagName('Ss')[1].getElementsByTagName('U')[0].childNodes[0].nodeValue
    sScreenshot3 = rawXML.getElementsByTagName('Ss')[2].getElementsByTagName('U')[0].childNodes[0].nodeValue
    sScreenshot4 = rawXML.getElementsByTagName('Ss')[3].getElementsByTagName('U')[0].childNodes[0].nodeValue
    sScreenshot5 = rawXML.getElementsByTagName('Ss')[4].getElementsByTagName('U')[0].childNodes[0].nodeValue
    sScreenshot6 = rawXML.getElementsByTagName('Ss')[5].getElementsByTagName('U')[0].childNodes[0].nodeValue
    sScreenshot7 = rawXML.getElementsByTagName('Ss')[6].getElementsByTagName('U')[0].childNodes[0].nodeValue
    sScreenshot8 = rawXML.getElementsByTagName('Ss')[7].getElementsByTagName('U')[0].childNodes[0].nodeValue
    sScreenshot9 = rawXML.getElementsByTagName('Ss')[8].getElementsByTagName('U')[0].childNodes[0].nodeValue
    sCaption1 = rawXML.getElementsByTagName('Ss')[0].getElementsByTagName('Cap')[0].childNodes[0].nodeValue
    sCaption2 = rawXML.getElementsByTagName('Ss')[1].getElementsByTagName('Cap')[0].childNodes[0].nodeValue
    sCaption3 = rawXML.getElementsByTagName('Ss')[2].getElementsByTagName('Cap')[0].childNodes[0].nodeValue
    sCaption4 = rawXML.getElementsByTagName('Ss')[3].getElementsByTagName('Cap')[0].childNodes[0].nodeValue
    sCaption5 = rawXML.getElementsByTagName('Ss')[4].getElementsByTagName('Cap')[0].childNodes[0].nodeValue
    sCaption6 = rawXML.getElementsByTagName('Ss')[5].getElementsByTagName('Cap')[0].childNodes[0].nodeValue
    sCaption7 = rawXML.getElementsByTagName('Ss')[6].getElementsByTagName('Cap')[0].childNodes[0].nodeValue
    sCaption8 = rawXML.getElementsByTagName('Ss')[7].getElementsByTagName('Cap')[0].childNodes[0].nodeValue




    There is more to the Windows Store than just apps, there are also reviews, and lots of them. There are currently over 210,000 reviews for apps in the Windows Store. These reviews come from all over the world, so you'll need some country codes, your handy dandy App Id's and pay attention to the pn/1 at the end, you will find that this service only returns 10 reviews per page, just increment this value to pn/2, pn/3 etc.. until you run out of reviews. 


    var arrCounntryCodes = ["AE", "AR", "AT", "AU", "BE", "BG", "BH", "CA", "CH", "CL", "CN", "CO", "CR", "CY", "CZ", "DE", "DK", "DZ", "EE", "EG", "ES", "FI", "FR", "GB", "GR", "HK", "HR", "HU", "ID", "IE", "IL", "IN", "IQ", "IT", "JO", "JP", "KW", "KZ", "LB", "LK", "LT", "LU", "LV", "LY", "MA", "MT", "MX", "MY", "NL", "NO", "NZ", "OM", "PE", "PH", "PK", "PL", "QA", "RO", "RS", "RU", "SA", "SE", "SG", "SI", "SK", "TH", "TN", "TR", "TT", "UA", "US", "UY", "VE", "VN"];




    This one is much more descriptive with the element names, so I don't see any need for further explaination of this. You can see the full name, display name, the image the user has chosen to represent themselves with. 


    Next up we can do a little bit of seaching...

    Here it gets a little cryptic again, but by now you should be used to it. You can get the App ID from the I element and take it from there back to the browse service <I>f514d64b-8705-43b7-a400-c4f4f3dedfc0</I>




    So there you have it, the basics of pulling tons of information out of the Windows Store that you can then do what you please with. If you find this useful and/or make some apps utilizing the information, have some additional information to share or otherwise please let me know in the comments.




  11. I'm here to call out the Windows Bloggers and Journalists who are failing the platform by leaving valuable app discovery opportunities on the table. Why do I feel this way? I have written over 60 apps for Windows Phone and 40 apps on Windows 8, granted I do not have the next Angry Birds or Facebook, however one should not need to be Facebook or Rovio to get a mention from a Windows Blogger or Journalist on a twitter stream or to get an article or review written and published. In the past 3 years, I have had 1 article written about one of my apps, by a guy who actually didn't even install or use the app, he wrote the article based on the app description and that was it.

    iOS and Android bloggers and journalists seem to be killing it in comparison to what is happening on Windows. Take for example, DONKEY.BAS, the BASIC language game written originally by Neil Konzen and Bill Gates, yeah that Bill Gates. Anyway, as a matter of course, I use DONKEY.BAS as a 'hello world' if you will to introduce myself to each new development platform I start using. Most recently, I ported over DONKEY.BAS for Windows Phone, and I ported DONKEY.BAS for Windows 8.

    If you can find an article on the internet about either one of those two, congratulations. (Send me a link?)

    In stark contrast to that, a developer called x-vision brought DONKEY.BAS to iOS.

    http://technologizer.com/2012/01/28/donkey-bas-is-back/
    http://www.retrogamescollector.com/donkey-bas-by-xvision-for-ipad-and-iphone-reviewed/#sthash.fcZzXNLv.dpbs
    http://www.macobserver.com/tmo/article/donkey.bas_for_ios_revives_dos_game_co-created_by_bill_gates
    http://www.ubergizmo.com/2012/02/donkey-bas-now-on-ios/
    http://randomanimations27.blogspot.com/2012/03/donkeybas-ios-review.html
    http://www.theverge.com/2012/2/10/2788534/first-pc-game-ios-donkey-bas-bill-gates
    http://www.jacehallshow.com/blog/20120127/dos-game-co-created-by-bill-gates-returns-as-donkey-bas-ios-app/
    http://www.thefullsignal.com/products/10915/ios-releases-remake-worlds-first-pc-game-donkeybas
    http://wccvoice.org/remake-of-donkey-bas/
    http://www.knowyourmobile.com/games/16142/bill-gates-donkey-video-game-comes-ios

    And that is just page one of the results!!!

    Hell, even a windows blog covered the damn iOS version:
    http://news.thewindowsclub.com/xvision-creates-remake-donkeybas-game-cowriten-bill-gates-ios-43872/

    You don't have to write about DONKEY.BAS, you don't have to write about my apps, but PLEASE go into the store and find some app that is not a major national brand already featured and publicized by Microsoft in the store and in their media. Best Buy and Facebook and Redbox and Netflix don't need you to write about their apps, they are there, they have already been written about, they get featured repetitively on the homepages of the stores, Go find an app that's not one of the above and write about it.

    I'd love to hear thoughts from other developers from any platform and the bloggers and journalists about this topic. Is my perception off base? misdirected? Let me hear it!

    * I do understand you guys do write about the apps. Perhaps the stars just aligned here, I know there is a lot of article copying in the blogs sand other media. And it's ok that the attention was given to someone else, I'm not trying to hate on success, just trying to get some myself. It is just frustrating for Windows developers to see more articles for a parallel app on a competing platform than downloads on your own two platforms combined.




  12. I'm one to play favorites, and who isn't? That's why it's called a favorite, am I right? And my favorite contract for Windows 8 is the PlayTo contract. The PlayTo contract allows you to use the Digital Living Network Alliance (DLNA) standard to stream Audio, Video, or Image content to any DLNA enabled device on the network. The most common use of the PlayTo contract will be using your App as a source for the media you would like to see or hear on another device. Perhaps you have a great set of speakers or a beautiful 80" flat screen TV, with the PlayTo contract you can send content to those things right from your Windows 8 device whether it is a Tablet, Ultrabook, Desktop or All-In-One PC on Windows 8 and Windows RT.

    Use Cases

    So how can you use PlayTo in your app? First I would say that any app that displays video, plays music or other audio content, or shows pictures is a candidate to use the PlayTo contract. It will not be appropriate for all scenarios and every user will not always use it, but if you think someone might find it useful under some conditions, go ahead and include it. PlayTo has some obvious applications if you were making a YouTube/Vimeo/Viddler type of application, an MP3 Music Player app, or an Image Slide show but like I said previously PlayTo should be considered for use in any application that has Video/Audio/Image content.

    Let's take Games for example, we all love to play games, and let's be honest a game soundtrack is really important to the experience a player will have while playing. The music can be used to create a sense of urgency when time is running out or to otherwise set the mood and entertain during gameplay. So why not allow your users to stream your game soundtrack from their tablet to their awesome stereo system without any wires?

    Take a moment, put on your creative hat, and think about ways your users might be able to leverage PlayTo in your application. PlayTo may not be right for your application, but I think in many cases it will, I'm sure there are many uses well beyond the obvious. Do you have some clever ideas on how to use PlayTo? Feel free to let us all know in the comments!

    Running in the Background

    When a Windows Store application on Windows 8 is moved to the background it would normally be suspended and stop execution. Not so if you have an active PlayTo connection! Your application will continue to run and your content will continue to be sent to your DLNA device.

    This has a couple of implications for the developer, if you have implemented this in a game like I described above you might want to pause the gameplay since it won't be easy for user to play it without it being on the screen. You don't want their character to die or for them to lose their place because they moved your game to the background not realizing it would not suspend as it normally would because of the PlayTo Connection. There might be some scenario where you want that processing to continue, but it's something to think about for your implementation.

    For a video player or an MP3 player, this is a great behavior because you can then continue to use your Windows 8 device with full functionality to open more apps, you could even have 2 apps open in snapped and filled view state with an active PlayTo enabled application running in the background off screen completely.

    Limitations

     PlayTo is not without limits, as you can only select one PlayTo destination at a time. I had a thought to use PlayTo and create a whole house DJ app where you could send arrange playlists for different rooms at a House Party all from one app on a single device. This is not possible with PlayTo as it only allows you to set a single destination. You may also run into instances where PlayTo is not allowed because of DRM restrictions on the content itself, but this is the expected behavior of applications respecting DRM.

    The Guts

    Microsoft has provided some excellent documentation, tutorials/quickstarts, and sample code for developers of Windows 8 applications. I've been very impressed with their efforts on this. I think the best place to start for this discussion is with the Quickstart documents. My only criticism of these 2 is that they included a lot of context in the instructions, but that is probably a good thing for many folks. For others you might want to just skip down to Step 5, the other steps are more related to the normal things you would have to do to play video/audio/image content in your application and are not specific to PlayTo. For experienced developers, I would suggest you take a look at Step 5 first, if it makes sense to you then run with it, if not go back to step 1 and you will get the entire experience.

    Javascript and HTML5
    http://msdn.microsoft.com/en-us/library/windows/apps/hh465184.aspx

    VB/C#/C++ and XAML
    http://msdn.microsoft.com/en-us/library/windows/apps/xaml/Hh465191.aspx


    This is pretty much all the code you need in an HTML5/JS app to implement the PlayTo contract. Where mediaElement is any img, audio, or video DOM element. It's that easy. Really! Once you add this code to your application, the user would select a DLNA device from the devices charm and next thing you know PlayTo is in action.


    var ptm = Windows.Media.PlayTo.PlayToManager.getForCurrentView();
    ptm.addEventListener("sourcerequested", sourceRequestHandler, false);

    function sourceRequestHandler(e) {
        try {
            var sr = e.sourceRequest;
            var controller;
            try {
                controller = mediaElement.msPlayToSource;
            } catch (ex) {
                //Handle and Report PlayTo failure
            }
            sr.setSource(controller);
        } catch (ex) {
            //Handle and Report exceptions
        }
    }

     

    For C#/XAML applications the process is quite similar, though a bit longer and would apply to the MediaElement and Image XAML tags being assigned as the mediaElement object elsewhere in the code. Again if you require the full explanation simply follow the quickstart from Step 1.



    private Windows.Media.PlayTo.PlayToManager ptm;

    protected override void OnNavigatedTo(NavigationEventArgs e)
    {
        ptm = Windows.Media.PlayTo.PlayToManager.GetForCurrentView();
        ptm.SourceRequested += SourceRequested;

    }
    private Windows.UI.Core.CoreDispatcher dispatcher = Window.Current.CoreWindow.Dispatcher;

    async private void SourceRequested(Windows.Media.PlayTo.PlayToManager sender,
                                 Windows.Media.PlayTo.PlayToSourceRequestedEventArgs e)
    {
        await dispatcher.RunAsync(Windows.UI.Core.CoreDispatcherPriority.Normal, () =>
        {
            try
            {
                Windows.Media.PlayTo.PlayToSourceRequest sr = e.SourceRequest;
                Windows.Media.PlayTo.PlayToSource controller = null;
                Windows.Media.PlayTo.PlayToSourceDeferral deferral =
                    e.SourceRequest.GetDeferral();
                try
                {
                    if (mediaElement is Image)
                    {
                        controller = ((Image)mediaElement).PlayToSource;
                    }
                    else
                    {
                        controller = ((MediaElement)mediaElement).PlayToSource;
                    }
                }
                catch (Exception ex)
                {
                    MessageBlock.Text += "Exception encountered: " + ex.Message + "\n";
                }
                sr.SetSource(controller);
                deferral.Complete();
            }
            catch (Exception ex)
            {
                MessageBlock.Text += "Exception encountered: " + ex.Message + "\n";
            }
        });
    }



    The Other Direction


    Until this point in this post I have been focused on using the PlayTo Contract as a media source. However, you can also implement a PlayTo receiver. This will allow other devices and apps that can act as a source to send their content to your application. It doesn't have some of the same limitations as the PlayTo source, you can have multiple PlayTo receivers in a single application. So if you wanted to do some sort of Picture in Picture video playing with a completely separate audio track and an image slide show up in the corner all at once you could do that. Within the reasonable bounds of your networking hardware of course.

    I won't be going into the code of the PlayTo receiver as it's a bit more lengthy, I will point you to the quickstarts again:

    HTML5/JS
    http://msdn.microsoft.com/en-us/library/windows/apps/Hh967763.aspx

    VB/C#/C++ and XAML
    http://msdn.microsoft.com/en-us/library/windows/apps/xaml/hh967764.aspx



    Conclusion


    As you now know, the PlayTo Contract can unlock some great use cases in your application in exchange for adding just a little bit of code. If you have audio/video/image content in your application I feel like it's a no-brainer to add PlayTo in most cases. I've added into just about all of my Windows 8 applications. I'm sure it's not getting used all the time, many people will be oblivious to it's existence until society gets more familiar with the common features of Windows Store applications on Windows 8. Until then you may want to call out the feature in your UI and help pages. You might even include a link to the PlayTo Troubleshooting page so you don't get bad reviews in the Windows Store because of the users failure to set things up properly for DLNA sharing.  . I hope you enjoy using the PlayTo contract as much as I do, after all it is my favorite.


    Here are some apps in which I have implemented PlayTo:

    Source


    Pub Quiz: http://apps.microsoft.com/windows/en-US/app/a3064295-12cb-4938-bfb7-be738ae98843

    Run and Shoot http://apps.microsoft.com/windows/en-US/app/6443b236-33bf-4fdb-ac98-8f9f2d1148bd

    Tweaker (the Tweet Speaker) http://apps.microsoft.com/windows/en-US/app/330612cd-83b0-4b8b-9cd5-6e196dfc980d

    The Holy Bible http://apps.microsoft.com/windows/en-US/app/4d028eea-8bd4-4dc4-961c-52e3dc10e70c

    Receiver 

    PlayTo Receiver: http://apps.microsoft.com/windows/en-US/app/72a6ba17-2d4e-4a1c-bcfb-cdc5d4b32d0e

    Pub Quiz: http://apps.microsoft.com/windows/en-US/app/a3064295-12cb-4938-bfb7-be738ae98843
  13. No, this isn't another one of those psycho gun incidents, Run and Shoot is a multi-player free for all shooting game for Windows 8. It uses Windows Phone controllers over a Wireless Local Area Network and I built it for the Windows 8 Hackathon in Malvern, PA on September 15th.  The real goal of course is to finish the game and release it in the Windows Store. There are numerous things that need to be completed in both the Windows 8 app and the Windows Phone controller app before they would even pass certification and there are still features that are incomplete or don’t exist at all yet. I’ll go into some of those but mostly I will focus  on the features of Windows 8 that are going to help make this game great.



    Genesis

    Every application starts somewhere whether from a blank template or a sample, in this case I was inspired by the Datagram sample for Windows 8

    This sample demonstrates the basics of the DatagramSocket class using the networking features provided by the Windows Runtime. The client component of the sample creates a UDP socket, uses the socket to send and receive data, and closes the socket. The server component of the sample creates a UDP socket to listen for incoming network packets, receives incoming UDP packets from the client, sends data to the client, and closes the socket.

    I wanted to create a game, many of my apps are apps, I keep saying I want to make more games, and then a bunch more apps come out somehow, i want to make a game. I'm going to make a game. Yeah.

     Communication Breakdown


    Once I saw text travel across the network from phone to PC I knew I could easily use this to make Windows Phone the controller of game pieces in a game running on Windows 8.  In practice however, the problem is UDP has been pretty flaky and I’m going to need to make the communication channel more robust. We’re not talking the occasional lost packet, it can be mass chaos! For whatever reason UDP messages are sometimes not received or sent by any or all of the devices in various combinations including nothing at all, and working perfectly. Sometimes temporarily or permanently failing or working.  By changing the port and address of the UDP channel it can most times help. So before I release this I need to make an optimal channel finding algorithm or otherwise solve this issue. I brought my own wireless router to the hackathon to run my game on, and rightly so since it wasn’t working as well on the Microsoft guest wireless.  It seems to work better on unsecure wifi than secure but I don't really know what the cause is yet. Point being, If the network failed, that would have been the end of my demo.

    Currently I am supporting up to 16 players but I've yet to do that in practice. I might make it open to more players or less depending on how I find things are working under those loads. Still learning what the limits of UDP will be.

    Chosen Path to the Game Loop


    Developing games for Windows 8 starts with a choice among 3 paths for Windows 8 Game development:

    ·         HTML5/JS/CSS3

    ·         C++,C#,VB/XAML

    ·         C++ w/ DirectX

    I chose to use C#/XAML for Run and Shoot. I am very familiar with web programming but I use my Windows Phone and Windows 8 endeavors to stretch my limits. I’m not totally unfamiliar though, I have used C#/XAML for many Windows Phone Apps  and I have a few Silverlight/XNA games on that platform as well.  I used the CompositionTarget.Rendering event to manage my Game Loop.

    Game Board, Battle Grids, and Player Controls


    Run and Shoot has a 20 by 11 grid of tiles that follow the silhouette and spacing of Windows 8. Thus allowing pixel perfect scaling  across the entire range of device resolutions with fixed layout scaling and the Viewbox control I’m considering the adaptive layout scaling for the future to add more tiles to the game board on  larger resolutions. Check out the Guidelines for scaling for more information on Fixed vs Adaptive layouts on Windows 8.

     


    The player control commands are sent over UDP from Windows Phone to Windows 8 by a companion controller app . When a player launches the app on their phone and clicks Play, a join message is sent via UDP and a response is broadcast with the assigned player ID information. At this point the Windows Phone app presents game controller buttons to the player in the same color of their game piece and can begin moving and shooting. Sound Effects are emitted from the phone when the player moves or shoots, and additional sound effects will be played from the Windows 8 game board this creates a pretty fun gaming environment as you hear "Pew Pew Pew" coming from all over the place.

     
    The controllers are a work in progress they are currently just buttons so there is no multitouch. I play to implement multitouch so you can run and shoot simultaneously and let people hold down the buttons as well for continuous shooting or movement. Vibrations will also be introduced for some added impact.

    Settings, Privacy Policy, About, and How To Play


    You can’t talk about Windows 8 without Charms so we’ll start with the games offerings in the Settings charm. Music Settings will allow for the selection of background music for gameplay from a set of default offerings. Voice settings will allow for the accent selection on the voice-over game announcer, where you can make it sound British, Canadian, American, Japanese etc.  as it makes the play by play call of the game action. Privacy Policy is important for any application which accesses the internet and your app will not pass certification without it. Be sure to check the Certification Requirements and the changelog at the bottom before submitting your app. Windows Store requirements are still changing so be aware. Make sure you offer some branding of your Privacy Policy such as your logo, so that it is clear what application is offering this policy. Many of the features available via Charms are system offerings so you want to make sure that your users have clarity, so include your logo. An About page is just as important in establishing confidence among the users of your application, it gives you a great place to advertise your greatness or just let people know what they need to know. I also included a How To Play page on the Settings charm, I’ll probably bring this off somewhere else as I get more complex instructions for my game.

    Belly On  Up to the App Bar


    The App Bar is a great way to keep controls and chrome off screen and keep the focus on the content, in this case the game play. When playing my game the App Bar can be collapsed and kept off screen, but come back easily to allow the players to complete some common tasks. I have pause/play button which allows  for time outs.  Battle Grids can be selected by a group of buttons in the App Bar that position obstacles on the game board that players will need to run and shoot around. Currently we have an open battle grid with no obstacles, a solid wall, a x shape, and a series of poles.  Finally there is a Pin button in the app Bar that allows Battle grids to be pinned to the Start Screen as Secondary Tiles.


     

    Speaking of Tiles

     


    The primary app tile supports both the square and wide configurations allowing the user the most control and flexibility the display of their start screen. As mention, Secondary Tiles are available for quick access to a specific battle grid. Both the Primary and Secondary tiles are Live Tiles , again in square and wide format, that will be populated with the picture of the last winner and a short message from them in which they can boast of their winnings or more generic leaderboard information. This makes Run and Shoot feel connected and alive, encouraging players to come back for more lest they be stuck with their opponents boasting on their start screen!

    Share To Contract Target


    I implemented this Share To contract in my app without fully thinking through the use case. Part of the hackathon criteria is the Windows 8 features it uses so i was trying to hit as many as possible. I started thinking that players would be able to pass  url’s of MP3’s they would want to listen to, however that is more sharing from PC to PC than sharing within one PC app to app as the Share To contract enables. So it’s not PC to PC but this still enables you to share the MP3 URL from the internet with Run and Shoot, which can then be used as background music. This led me to consider  the File Picker contract as a way of leveraging a users local music library as I'm not sure this Share To use case I implemented is a good experience. Wait, yes I am, it is not a good experience.

    File Picker Contract, Game Developers Delight?


    So why would a game developer be excited about the filepicker contract in Windows 8? As a game developer it is my responsibility to secure licensing for any music and images I use in my games. With the File Picker Contract I can allow my user to select a music file(s) to play as the background music for gameplay. Ever wondered how Pink Floyd’s the wall matched up with that one level in Zelda?  Shoot it up in Halo with Skrillex and DeadMou5 playing in the background. This won’t be right for every game, but it’s an exciting thought to give your players the choice & open up entire music libraries for use in your games, royalty free.

    Play To contract


    This is my favorite contract in Windows 8. Someone who has seen a lot of apps told me this was the first app they had seen using DLNA, but so far all 4 apps I’ve made for Windows 8 make use of Play To. It is very simple to implement, I have done it with HTML/JS and with C#/XAML and with either one you get an awesome feature that lets you escape the bounds of the PC for just a few lines of code.  For my game I allow the game background music to be played on any DLNA enabled audio device on the network. The user needs to select the target audio device via the Devices charm and then the background music plays on that device until disconnected. If you have a killer stereo in the room, you don’t need to sit there and listen to the game music coming off a tablet. Get that rich gaming experience. This is a no brainer to me, if your app displays pictures, plays video, or has audio you simply must consider implementing Play To!!! Audio,Video, and Pictures can be sent via DLNA to devices that will accept the content bounded only by your imagination.

    Stay tuned, I plan to blog about PlayTo and share the secrets I have learned about it,  I did say it was my favorite. If there is anything bad I have to say about PlayTo is that DLNA devices seem to be hard to come by, I hope the Windows 8 launch is accompanied by Nokia play 360 style speakers with DLNA or something.

    Fast and Fluid

    In addition  to the silhouette and spacing guidelines given to us by Windows 8 style there is a whole entire set of animations that will help your application look, feel, and behave as users expect on Windows 8. When items are added to the page, removed, moved around, touched, selected, swiped or otherwise Windows 8 has a set of standard well designed animations that make those actions feel amazing. Make use of them in your apps in the appropriate places and they will lend a sense of craftsmanship to an app that otherwise might seem jerky and awkward. The example I showed off in my presentations was on the About page via the Settings Charm, this page includes a list animates it's way onto the page. When opened you see it slide on in with just a slight delay, this little stuff is what is going to make your app feel Fast and Fluid like a good Windows 8 app should.
     

    Wherever I may Roam

    Roaming Settings in Windows 8 is another feature that is simply a must to consider for any app. Microsoft provides 100K of free cloud storage per user for your app to utilize. Why would anyone pass that up? Run an Shoot uses this storage to maintain your Battle Grid selection, music selection, voice options, and will surely be expanded to more items. When you launch Run and Shoot it will come up with the same battle grid as you had open the last time, even if the last time was on some other computer. All of your settings and app state come with you through the cloud. This is a magical thing that many people might not even notice, but it sure beats the frustration of starting from the beginning to recreate where you left off just because you went to another computer. Thanks to Microsoft for this generous offering for Windows 8, this makes things great for developers and users.

    This is Hackathon


    Competing in Hackathons is pretty fun stuff, I enjoy seeing other peoples creations and the little bit of competition. There were 3 winners of this Hackathon and I was one of them! Woo hoo! So I get $500 and a Windows  tablet, likely a Samsung Series 7 Slate that I will promptly install Windows 8 upon. They tallied up the stats and the three winners had 124, 121, and 121 points so the competition was very close. I have to say I was also really impressed with the 2 other winners apps and was proud to be among them. Even among the apps that weren't winners there was hardly a dud among them, there were a few non-developers making their first apps, a number of people coming from other platforms, plus there were several personal stories of inspiration for apps where developers whose lives had been touched were looking for ways to make that experience somehow easier or more surmountable for everyone else going forward. That's amazing and so are these folks.
    One of the winners was a Course organization app for Educators which would allow them to manage their courses, students, and projects. It really made use of Windows 8 to take what could be pretty some pretty complex sets of info and he had it making groups and organizing the info in some really great views – awesome information architecture that’s going shine on Windows 8. The other winner was a github client of sorts for Windows 8 that was done a young developer probably somewhere in the 14-16 year old range. DreamSpark, BizSpark, Express Editions, all sorts of programs reaching out, I think Microsoft is doing a great job investing in the future. There are so many opportunities for young (and old) developers and the information has never been more available. I’ve seen a couple instances of some young developers creating some really cool stuff, the future is bright!
    At the end of the day somebody made some comment and I learned the guy I was sitting next to, an hour and a half away from my house, lives just a couple of blocks away from me. It’s a small world after all! He’s been looking to revive the NJ User group community which has pretty much floundered over the years. Despite being the most densely populated state in the country, our community leaks out into NYC and Philadelphia areas and NJ itself gets no play. But this is how it is in everything see: NY Giants, NY Jets, Brooklyn Nets.

    How can I develop for Windows 8?

    If I've got you all excited and you are ready to build your own Windows 8 apps there is a great upcoming opportunity in NYC called 30 to launch. Many of you may have seen the online 30 to launch programs or the programs for Windows Phone. This is different. This is a 4 week in-person event that i participated in back in June/July that they are doing again starting each Thursday starting October 4th. You can earn a chance to win an XBOX/Kinect bundle and better yet build an app for Windows Store. Don't worry, if you're not in the NYC area there are plenty of Windows 8 events going on around the world. There is also plenty of material available online http://www.windowsuserexperiencetraining.com
     

     
  14. My latest Windows 8 app "Tweaker" WON the Windows 8 Online App-a-Thon recently held by codercharts.com

    ...and is now available in the Windows Store!!![http://apps.microsoft.com/webpdp/en-us/app/tweaker/330612cd-83b0-4b8b-9cd5-6e196dfc980d]

    Very proud to be one of the first 1000 apps in the Windows Store.



    This is a Hackathon [online]

    {codercharts} hosted the Windows 8 Online App-a-thon on behalf of Microsoft in preparation for their launch of Windows 8 and to help generate developer excitement around the platform. It was a great way to do it and I actually met few developers that I'd now consider among my friends. Which doesn't even always happen at in person hackathons. The extended nature of the event and being online allowed some more time to chat than when you are at an in person hackathon with a few hours to finish your app before everyone goes their separate ways.

    Are you a Hacker? Are you a UI Designer? Have a great idea? The hackathon has ended Microsoft and CoderCharts are proud to announce our Windows 8 Online App-a-thon to promote the release of, you guessed it, Microsoft’s new operating system: Windows 8. Windows 8 apps can be created using JavaScript/HTML5, C#, VB.NET, or C++. Each language can access the full power of the Windows 8 runtime to create awesome apps that run on tablets, laptops, or desktops. Come and join the fun. Be the next viral app right when the operating system is released. On top of that, Microsoft is sponsoring prizes. The winning app from each category (Utility / LifeStyle / Edutainment) will receive $1000 value in gift cards. To be eligible for prizes, entries must be submitted by legal US residents / teams with at least one member who is legal US resident (for details, see the Official Rules).


    What is Tweaker?


    Tweaker the Tweet Speaker allows you to passively listen to and watch tweet and photo activity from Twitter. While the "Tweaker" speaks Twitter activity it displays text and image content on lively animated tiles. Tweaker speaks Twitter activity from around the world right to your ears. Trial version is fully functional with reminders to purchase intermingled among the tweets.

    In order to present our apps to the judges and for public voting, we were asked to create a video of our app and post it onto youtube. Have a look, sorry for the low audio [i'll get that fixed when I'm not coding so much] The video covers a lot of the design points and Windows 8 features you will need to consider as you developer your Windows 8 apps, and many of those some details are covered later in this article as well.
     



    Building the Windows 8 Style Tweaker app

    Leverage Microsoft design style

    Content is the heart of Windows Store apps, and having said that, let me reiterate, putting content before chrome is fundamental to the design of Windows Store apps. Thay say 'Everything else is accessory or chrome' and we leverage the Windows 8 features in Tweaker to achieve the ultimate goal of what UI design should be, keep the focus on the content.

    Tweaker utilizes a clean and open layout that minimizes distraction and helps people get immersed in the content. By maintaining a clear information hierarchy and utilizing the predefined type ramp for Windows 8 the user knows what is important right away. By aligning to the Windows Store app silhouette people can more instinctively recognize the apps' features and purpose giving the user confidence as they first enter the app for the first time rather than the uncertainty of learning a new UI.

    Be fast and fluid

    Text and images are displayed on animated tiles with colors and animations in line with Windows 8 style. Tiles exitContent, enterContent, addToList, and deleteFromList animations from the WinJS library give the application a fast a fluid feel that Windows 8 users expect. These animations are joined by the MetroJS library by Drew Greenwell [http://www.drewgreenwell.com/projects/metrojs] which manages the animation of the content within the tiles and some flipping and rotating of the tiles themselves.

    Designed for touch

    Windows Store apps are designed to be touch first. They leverage the hands and fingers for what they are great at, with comfort and ergonomics in mind. At the same time, Tweaker makes sure to keep the main control interfaces of the app such as the appBar and settings charms accessible by mouse and keyboard or even just keyboard. Windows 8 apps can be used on all kinds of devices and ensuring your app is usable with a variety of input devices is the only way to guarantee a good experience for all of your users.

    Built-in controls

    I must admit some small disappointment in the completeness of the WinJS library in regard to the available controls. Simply put, there are more Built-in controls available for the XAML apps than for the HTML5 apps on Windows 8. For example, the VariableSizedWrapGrid is not available for your HTML5/JS Windows 8 apps. The VariableSizedWrapGrid provides a grid-style layout panel where each tile/cell can be variable size based on content, something that might have been pretty useful in my app. But it is just that, a small disappointment, the WinJS library has plently of breadth in terms of controls - it just didn't have THAT one.  Check here for some detailed user experience (UX) guidelines for the built-in controls.

    Tweaker implements the ListView control to store manage the animated tiles of twitter activity you see within the app. The appBar control is used to store category option and the pin to start buttons.
    Persistant options are postioned to the right in a group and the pin to start command is positioned on the left of the appBar in line with the guidance from Microsoft.


    Snap and scale beautifully

    Tweaker supports snapped, filled, full screen portrait, and full screen landscape views.
    The snapped view restricts the visible content to only the tweet currently being read, while all of the other views arrange the amount of tiles and their position/size to fit whatever layout the user wants. If a user can hold their device or arrange your app in all variations they are more likely to enjoy their experience and use your app again. Consider implementing all of them unless there is a compelling reason why your app can't.

    It also scales to multiple form factor device screens ranging from <10" tablets to >27" screens.
    Tweaker uses the ViewBox control which scales a single child element to fill the available space without resizing it. This control reacts to changes in the size of the container as well as changes in size of the child element. By wrapping my application in a ViewBox my fixed layout scales to all devices on Windows 8. This is only one of the methods to scale beautifully on Windows 8, check out the options and do what is best for your application.

    Use the right contracts

    Tweaker implements the Search contract to let people search twitter activity from anywhere in Windows or from within the app itself via the Search Charm in Windows 8.
    The PlayTo contract allows the app to stream the audio to any DLNA device on the network. This opens new use cases for the app such as a conference streaming #conferencehashtag tweets right into their lobby/welcome area from their Windows 8 tablet or PC over the network. They would just open the devices charm while listening to Tweaker and select from any of the available devices on the network that support the DLNA standard.

    Invest in a great tile to feel connected and alive

    They say the tile is the front door into an app on Windows 8 and people like to walk through nice inviting looking doors. Tweaker implements the square and wide tiles to give the user full control over the customization of their start screen. Categories of Twitter activity or custom #hashtag searchs can be pinned to the start screen as secondary tiles.  Both the primary and secondary tiles are live tiles, bringing twitter content directly to the start screen. Images and text are updated on the tiles making the app feel connected and alive even when it is not open. Live tiles and secondary tiles encourage users to come back to your app and is one of the great features available for Windows 8 app developers to use.

    Roam to the cloud

    Windows 8 apps have an awesome cloud storage feature that developers can (and should!) utilize for FREE to store and access roaming settings, state, and a small amount of user content. Tweaker uses this to keep track of where you left off in the app and to return you to that same place if you re-enter the app from the primary tile at a later date or even if you launch the applicaiton on another PC. It also keeps track of your voice accent selection and other app settings to ensure you can continue right where you left off and get back to enjoying the content.

    Paid App with Trial


    Tweaker is in the Windows Store and can be purchased for $1.99. There is a free full featured, unlimited time trial available which includes reminders to purchase the app. Windows 8 Trial features allow developers to get additional exposure for their paid apps. Statistics from the Windows Phone team indicate app sales are 7 times higher for Paid apps when they offer a trial, I expect the same thing to occur with Windows 8 trials.




    Embrace Microsoft design style principles

    I hope that some of the pride i took in developing this app shows through clearly to the users. I'm not a designer, I'm a developer - but Windows 8 minimalistic stance helps us do more with less and boils these UI design principles down into a consumable form. One that I think enables developers to produce beautiful apps on their own or with a designer in tow.  The fast and fluid animations combined with the authentically digital UI takes full advantage of the digital medium that is Windows 8. There are no physical boundaries from chrome making the consumpution of the content inefficient.

    For anyone interested in learning these principle there are more than 9 hours of videos explaining the details of Windows 8 design. http://www.windowsuserexperiencetraining.com All of these videos are excellent and they provice much of the same [more actually] content you will be exposed to if you attend one of the many Dev Camps and information sessions for Windows 8 developers.

    The POWER of Windows 8

    Something unique that I did with this app is that I created this app on my Windows 8 Tablet. That's right, it was developed entirely on my Samsung Series 7 Slate with Windows 8 installed on it. The full versions of Visual Studio, Adobe Creative Suite, and all the other tools I use in my development work can all be installed on my Windows 8 tablet, no problem. Windows 8 on a tablet offers you a full featured computing experience, not a lightweight experience like some other platforms offer.  And the 'touch first' Windows 8 apps in the Windows Store are designed to work great on all devices, big screen, little screen, keyboard, touchscreen whatever so this isn't just a tablet game. This is a single OS to unite tablet, desktop, laptop, and family hub experiences into a single solution that is just amazing.

    Win as one


    Tweaker uses the contracts available in the Windows 8 ecosystem and many cues from the UI model and developer guidance to take advantage of what people already know and provide a sense of familiarity, control, and confidence making Tweaker THE BEST app for consuming Twitter activity in a passive manner.

    And boy oh boy did I win! I present to you the first of the many thousands of dollars I expect to make from the Windows 8 apps I am developing. Thank You CoderCharts, Thank You Microsoft, and Thank You to the other competitors and now friends who make the competition worthwhile.




    Check out some of the competitors apps  


    Please check out some of the other apps that were in the competition. I hope to compete with them all again, in the Windows Store!

    sim Trader - by thelastbyte [Winner of the Utility Category]
    http://www.youtube.com/watch?feature=player_embedded&v=jcG4CalhLFU

    The Holy Bible - also by me. :)
    http://www.youtube.com/watch?feature=player_embedded&v=ywQmUsp5CTM

    Global Video Search - by renubk
    http://www.youtube.com/watch?feature=player_embedded&v=14qAx-LMUfc

    GeoCrack - by mneubrand   [Winner of Edutainment Category]
    http://www.youtube.com/watch?feature=player_embedded&v=qMxLPaeWHhg

    Social Brainz - by julianatanasoae
    http://www.youtube.com/watch?feature=player_embedded&v=INwwgbZc1SA

    Dots - by isa_hayat
    http://www.youtube.com/watch?feature=player_embedded&v=t6JAhQYfW1o

    FlixUniverse - by sreejith
    http://www.youtube.com/watch?feature=player_embedded&v=VuKGw2E7-oY





  15. I have emerged victorious in the Fun and Most Weird category of the Zappos.com Gifting Hack-a-thon Hack-a-long. My entry which I have described previously was a Email gifting mechanism through which you could send your friends the world famous Zappos.com Core values. It was a very busy week during which the Hack-a-long was held so I was trying to keep things simple and trying to target the Weird category. The strategy worked out and I will recieve a $100 gift certificate to spend at Zappos and a notch on my belt for the future. Zappos is a very cool company and I wouldn't mind applying to work there someday if Las Vegas were within my horizons.


    Feel free to give it a try and send your friends the gift of core value or something... yeah. :)http://www.ondemandcommercials.com/zapposcorevaluesgifting.html



    Here is the winners -





  16. I started to frequent this website WindowsPhoneParent.com because I love Windows Phone and I'm a parent too. They do a really great job of finding and reviewing great apps for both kids and parents, I would go as far as saying this is THE BEST source for kids/parents app information. I was excited to see they were offering a free advertising opportunity on their facebook page one day so i jumped on the chance and managed to snag one of the two open spots they were offering. Be sure to check out their video reviews on their site, they often have the apps reviewed by kids in the videos and it is just so cute and a great way to see how real kids interact with real apps.



    I was suprised to see we all did the little banner thing that you see sometimes on the app icons in the marketplace. Gonna have to think of my strategy in the future as it doesn't really stand out if everybody does the same thing. I think my implementation of the banner is the best, what do you think? Let me know in the comments.

    Here is the ad displayed within the context of their page -




  17. I'm a Windows Phone developer and I experience a lot more earnings with my ad supported apps than I do with my paid apps. Perhaps this is my apps or the users on the environment, whatever the reason I like money. If you like to earn money and are working on developing apps for Windows 8 you can utilize the Microsoft Advertising SDK to enable ads to display in your apps.

    What size ads are available for Windows 8 on Microsoft Advertising?

    I'm personally not too keen on the sizes, but let's see how they look out in the wild before passing judgement. What do you think of the available sizes? Let me know in the comments.

    There are currently 4 sizes available.

    728 x 90

     300x250

     250x250
     160x600

  18. My dog likes to dig holes...

  19. We recently had one of our Marketing folks request to make the 'Coming Soon' items in our product result lists more prominant. But no suggestion was made on how to do so. For years I have been trying to get my company to use testing data to drive decisions on changes to our website. I even have a free tool for the job. This turned out to be the perfect opportunity to introduce them to Google Website Optimizer.

    Google Website Optimizer is Google’s free website testing and optimization tool. It allows you to increase the value of your existing websites and traffic for free. You can use Website Optimizer to test and optimize site content and design, you can quickly and easily increase revenue and ROI whether you’re new to marketing or an expert.


    Here are our original product result listings. Coming Soon communities have the words 'Coming Soon' in place of a price value.



    Should it be green? Red? Bold? Italic? Bold Italic? Green Italic? Green Bold Italic?









    How the heck should I know? Let's use Google Website Optimizer and run a test. We will see which one of the display options in the list will get the most people to the Coming Soon community homepage so they can get on the VIP List and eventually buy a house.






    We need to set up an experiment in Google Website optimizer. First we need to decide if you want to create an A/B Experiment or a Multivariate Experiment. For this example we are using A/B Experiment.



    Google provides a nice little reminder upfront about what you will need for your experiment.



    You will need to provide an experiment name. The original page URL, variation page URL's, and the conversion page URL.


    You can see the instructions, or get some instructions for your webmaster all nicely packaged. Please go look at the instructions, it's not that hard.


    There is a validation step in between where Google will validate that you have placed the javascript code correctly on your original, variation, and conversion pages.

    And from there we should have our Experiment running and reports will begin to be generated soon.

Blog Archive
About Me
About Me
Labels
Loading
Dynamic Views theme. Powered by Blogger. Report Abuse.