Transcending the Traditional Web

A blog about building compelling, mobile and web-enabled software solutions.

August, 2011

  • Transcending the Traditional Web

    Mobile Devs: Why Windows Phone Matters to You


    Everyone knows how competitive the mobile space is.  There are a wide range of platforms available for you as a developer to adopt and build your mobile app masterpiece, each with their pros and cons.  So Microsoft introduces a new mobile platform (Windows Phone 7 and now the upcoming Mango update) which basically is a reset of the Microsoft mobile strategy and therefore started from scratch.  In the many conversations I’ve had with mobile developers about why they should care about Windows Phone now and in the future, the most common questions I would answer revolved around the fact that Windows Phone was essentially net-new and therefore at a disadvantage from its competitor platforms.

    Those types of questions are certainly fair and I’m sure many of you reading this post are even asking yourself the same questions.  Hopefully by the end of this post, you’ll have a better understanding of Microsoft’s mobile strategy, why we are taking a long term vision approach to our platform’s success, how you as a mobile developer can take advantage of the fact that Windows Phone is for all intents and purposes “new” again and finally provide you with some resources to help you porting your apps from other platforms onto the Windows Phone platform.

    Microsoft’s Mobile Strategy

    Believe it or not, Microsoft has been in the mobile game for around 10 years.  We started off with the Windows CE operating system and grew it from there.  It was primarily seen as a business platform (strengths being email and calendaring) and Microsoft continued to evolve the platform along those lines.  As smartphones became more consumer focused in the past 4 years, the popularity of the Windows Mobile (the old branding for Microsoft’s smartphone platform) waned.  This decline created an opportunity for Microsoft to virtually set a completely new course and build a whole new mobile experience that focused on user experience.  The result is what you see today:  Windows Phone 7.

    One of the key decisions that was made around this clean slate approach was how we work with partners in the new Windows Phone world.  It’s a little known fact that Microsoft makes very little money from customers in direct channels; virtually all of the revenue Microsoft makes is through our partners.  Clearly our partners, from OEM manufacturers to mobile carriers to app/game developers, were going to be front and center in our strategy.  We have also learned very valuable lessons from our previous mobile platforms, specifically around what works and what doesn’t.  At a very high level, this is what the Windows Phone team decided about going to market with partners:

    • Developers are key partners in this journey:  The platform easy to build for.  The tooling allows you as a developer to build great apps without worrying about a lot of the underlying OS “gunk”.  You can literally build a functional, usable app in minutes.  Also, developers are guaranteed that a minimum bar of experience will be guaranteed regardless of which handset the user has, so you can focus on your functionality rather than the quirks of any specific device.
    • Consumers prefer choice:  We realize that everyone has preferences.  We gave our OEM Manufacturers the freedom to build smartphone hardware that they feel will be popular with customers, while at the same time maintaining a level of experience that will delight users.  In essence, we give OEM partners the ability to differentiate the experience with different hardware formats (such as a physical keyboard or lack of a physical keyboard).  We also provide minimum standards for OEMs to adhere to in order to let them put the Windows Phone OS on their devices.  Aspects such as RAM, storage, camera pixel size and others all have minimum quality bars that must be reached.  Finally, every single device has a screen size of 800 by 480 pixels, guaranteeing developers to have a consistent screen size across devices.
    • We work with Mobile Carriers, not for them:  In past versions of Windows Phone, we built the OS, gave it to OEM partners without any material certifications on how the devices would perform and then both OEMs and the carriers would put whatever software they decided would be useful to the user.  In theory, the extra software seems like a value add type of scenario but in reality it wasn’t tested thoroughly enough and the experience for the user was wildly different from carrier to carrier and device to device.  In our new model, we do not allow anyone but the user to install apps on the phone (outside of the vanilla apps that are included on the OS, such as the browser and the Marketplace).  Every single app that a user will install onto their phone must come from our central Marketplace – there is no preloaded third party apps on the phone.  As a developer, this is important to you as you can be guaranteed that no apps that have not been properly tested will exist on a user’s phone that could potentially affect the performance of your app or game.

    What about Nokia?  Nokia is a very strategic partner with Microsoft.  You’ve probably seen the media coverage and official press releases from Nokia and Microsoft stating that Nokia will be ceasing to install their Symbian OS on their smartphones going forward, instead adopting Microsoft’s Windows Phone OS for their smart devices from now on.  This is a key relationship for both Microsoft and Nokia and is significant in a number of ways:

    • Nokia has an incredibly large install base around the world, particularly in Europe, Africa, the Middle East and Asia.  At Microsoft, we feel that the high quality of Nokia’s hardware combined with the unique and enjoyable experience of the Windows Phone OS will be a winning combination that will translate into large adoption of the Windows Phone platform.
    • The relationship extends beyond just phones.  It is also a deeper integration of Nokia and Microsoft technologies involving Nokia’s mapping assets and Bing, increased partnerships around Nokia’s billing infrastructure and agreements with carriers around the world (especially where credit card use is low) thereby making the barrier to entry for Windows Phone less, integration of content from Nokia’s marketplace with Microsoft’s Marketplace for a more compelling user experience, and even more.
    • Sharing of knowledge and best practices between both companies thereby creating a more compelling offering to consumers and businesses that choose Windows Phone and other Microsoft technologies.

    Making it easy for developers building apps on Windows Phone

    As I had stated above, one of the main goals and a key factor to the success of Windows Phone is to make it as easy as possible to allow you as a developer to build apps and games for the platform and to monetize them.  This means making the tools easily accessible (read:  free) and getting up to speed quickly.  It also means making it easy to publish your apps and games on our Marketplace yet making sure that quality is maintained on the apps. Finally, it means making sure that you have the tools and opportunity to both understand how your app is trending in popularity and making it fair so that the best apps get featured.

    Making the tools easily accessible and getting up to speed quickly

    This is simple.  Literally, everything you need to start building apps is on our App Hub.  This includes the tools download page, tutorials, partner resources, and community support.

    If you register as a developer (roughly $99), you get more than just the ability to publish apps and games to the Marketplace.  You also have the ability to publish XBOX Live Indie games on the XBOX Live Marketplace (a great opportunity to cross-pollinate your game if you’re so inclined).  We also provide you with a large number of tools to help you analyze the performance of your apps and games in the marketplace.  We also provide extra tooling for you for free to help protect your code assets from reverse engineering and the like as well.

    Finally, even though the tooling is free and everything you need to build apps and games is included in that tooling, you may be interested in our paid tools as well (namely Visual Studio Professional and above, and Expression Studio Ultimate).  These paid tools provide a great deal of extra value to you if you are interested in native source code control right out of Visual Studio, enhanced testing tools (including load testing and the like), SketchFlow (rapid wireframing and prototyping) and many other features that may make your job a whole lot easier.

    Make it easy to publish apps and games

    As long as you are a registered developer on the App Hub, you can publish Windows Phone apps and games.  To make it as easy as possible to get you from an app/game idea to published in Marketplace, there’s more than just great tooling that you need to make it happen.  First off, all of our certification guidelines are publicly available (all apps in the Windows Phone Marketplace are certified by Microsoft before they are published).  If you follow those certification guidelines, you are golden.  However, if you do fail certification for whatever reason, we provide you with a detailed report outlining what failed and what certification guideline was violated in the process.  The report will also give you a failure consistency statistic (for example “Failed 8/10 times” or “Failed 10/10 times”) so you know how reproducible the error is.  (By the way, in case you’re wondering, app and game testing goes through both automated/machine testing and human testing.)

    Determining how successful your masterpiece is in the Marketplace

    Once you’re published (congrats!), you’ll be able to keep tabs on how well your app/game is performing in the Marketplace.  We provide reporting analytics for you to determine downloads, usage statistics and even app failure reports among other things.  That way you can take action based on the information and make informed decisions on how to promote your app next.

    Speaking of promotion, we try to be as fair as possible with the featured spots on our Marketplace.  If you have an app or game that  is great and popular, we do give consideration to your app/game in one of the featured spots.  While nothing is guaranteed, I know this is a question that gets asked a lot and the answer is if you build something awesome that lots of users like (by downloading and actually using the app), there is a better chance of getting some Marketplace recognition for your work.

    But I don’t build apps for Windows Phone today – in fact I have apps on competitor’s platforms.  How do I start?

    I’m glad you asked.  We recognize that our competitors make great mobile platforms that allow developers to make awesome apps and games.  We also believe that your apps and games on those platforms would look even more awesome on our Windows Phone platform!  To that end we published some content and guidance on how you can port your masterpieces from iOS and Android onto our platform – again, all for free!  While there is no one single bullet (or tool in this case) that will automatically translate iOS and Android code to .NET code for Windows Phone, the resources below provide some great guidance on how to get from A to Windows Phone more quickly.

    Calling all iOS Developers!

    If you build apps for the iPhone/iPod, we have some great information for you on how to port your app to Windows Phone.  Below is a list of these resources:

    • Main Windows Phone Interoperability Bridges Site: This site is the main portal to help you move your app from iOS to WP7. It includes case studies, resources and whitepapers for you to help you get your app/game to Windows Phone.
    • iOS API to WP7 API Mapping Directory:  This directory provides a mapping of iOS 4.2 API’s to the WP7 mappings.  This is really useful especially if you are new to .NET.
    • Windows Phone 7 Guide for iOS Developers:  If you have been developing iPhone applications and are interested in building your applications for Windows Phone 7, this whitepaper guide is for you.  The guide covers what you need to know to add Windows Phone 7 development to your skill set, while leveraging what you have already learned building iPhone applications.

    Calling all Android Developers!

    If you build apps for Android, we also have some great information for you on how to port your app to Windows Phone. Below is a list of these resources:

    • Main Windows Phone Interoperability Bridges Site: This site is the main portal to help you move your app from Android to WP7. It includes case studies, resources and whitepapers for you to help you get your app/game to Windows Phone.
    • Android API to WP7 API Mapping Directory: This directory provides a mapping of Android Gingerbread (v2.3) API’s to the WP7 mappings. This is really useful especially if you are new to .NET.
    • Windows Phone 7 Guide for Android Developers: If you have been developing Android applications and are interested in building your applications for Windows Phone 7, this whitepaper guide is for you. The guide covers what you need to know to add Windows Phone 7 development to your skill set, while leveraging what you have already learned building Android applications.


    There you have it.  Windows Phone represents another channel for you to increase your app’s or game’s popularity across multiple platforms.  You don’t need to abandon one platform in order to adopt another – this has been proven time and time again in technology.  Clearly, co-existence can be a winner.  So if you’re thinking of trying out Windows Phone as your next platform to adopt, hopefully the resources in this post can get you more than started. 

    Finally, if you are porting your app from another platform onto Windows Phone, let me know – give me a shout on Twitter!

  • Transcending the Traditional Web

    Premiere Training on Mango – And it’s free!


    If you find you aren’t busy on Tuesday, August 23 and Wednesday, August 24, you may be interested in attending free an online training event that will bring you to speed on how to build Mango apps. If you’re new to building apps on the Windows Phone 7 platform or a veteran looking to understand the new and exciting features of Mango you can add to your app, this training event will be worth your while.

    The event, Building Applications for Windows Phone Mango Jump Start, is literally a premier deep dive training event that is yours for the taking.  It’s being run by two of the most renowned Windows Phone 7 developers in the world, Rob Miles and Andy Wigley.  You may know them from the previous course they ran, the 19-Part Windows Phone 7 Jumpstart Training course which is available here on-demand for free.  This new course, however, is more than just a rehash and update of the content found in that first jumpstart.  This event will provide you with net-new material that will teach you how to build start of the art Windows Phone applications and games using the new features found in Windows Phone 7 Codename Mango.  Sounds interesting?  Well, here are the details:

    Day One August 23, 2011 | 8am-4pm PDT | Live online training

    • Building Windows Phone Apps with Visual Studio 2010
    • Silverlight on Windows Phone – Introduction
    • Silverlight on Windows Phone – Advanced
    • Using Expression to Build Windows Phone Interfaces
    • Windows Phone Fast Application Switching
    • Windows Phone Multi-tasking & Background Tasks
    • Using Windows Phone Resources (Bing Maps, Camera, etc.)

    Day Two — August 24, 2011 | 8am-4pm PDT | Live online training

    • Application Data Storage on Windows Phone
    • Using Networks with Windows Phone
    • Windows Azure and Windows Phone
    • Notifications on Windows Phone
    • XNA for Windows Phone
    • Selling a Windows Phone Application

    Despite this new training being free, you do need to register to attend, so be aware and register here.  Also, if you aren’t able to attend the live broadcast, don’t worry because it will be recorded and available on-demand after the fact.  I will create a follow up post when the on-demand content is available.

    So why should I attend this online training (or watch the event on-demand)?

    Well, one of the things that I and my colleagues have heard over and over again is that Windows Phone is the easiest platform to build for.  I can attest from my conversations with the Windows Phone product teams and engineers that that this is not by accident – making the easiest platform to build amazing mobile experience on was a significant goal for the team.  What this means is that you can get up to speed really quickly on building awesome apps and games on the Windows Phone platform and training courses like this one will allow you to leverage the unique features of the platform that you may not have even known existed and implement them in your app or game very quickly.

    Enjoy the training!

  • Transcending the Traditional Web

    On Phone Apps and Web Apps


    Being a mobile developer over the past 4 years has been an interesting experience.  With the advent of modern smartphones with differentiate experiences, we found out that not only is there a viable market for great apps, but that market is booming and very competitive.  We have seen mobile apps that have literally changed the way we interact, live our lives and found ways to fill the lulls in our day with experiences that are both fun and addictive.  And along the way, we all seemed to figure out that finding a center of gravity for all the apps within a mobile platform was an effective way to make an app popular by consumers and monetize the efforts of the developer as a result.

    During that time, the web has evolved a great deal as well.  The debates over which plug-ins were best were fought and then along came HTML5 (or rather the promise of HTML5) that many believe will fundamentally change the way we see the web and how we interact with content on the internet.  Even though HTML5 is in its infancy (it’s not even a ratified set of standards from the W3C yet and likely won’t be for a while yet!), already we are seeing some very interesting examples of what HTML5 can bring.  Frankly, this is game changing stuff.

    As HTML5 standardization marches on, becoming more popular for web developers/designers and as more and more people start building native mobile apps, it seems that a line in the sand is forming between the pro-HTML5 and pro-App groups.  There is a polarity that is appearing between the two and we are starting to see a sentiment that the two camps are becoming mutually exclusive (adopt one or the other, but not both).

    There is a decent argument being made by both camps.  HTML5 enthusiasts are advocating that mobile experiences should turn into HTML5 websites that can be made to  look and feel exactly like mobile apps native to the smartphone platform in question.  They also advocate it as a way to centralize administration and maintenance of the experience (change once on the server and the new experience is delivered to anyone and everyone without the need to download an update).  The fact that HTML5 is being created as a set of standards is very compelling as it allows developers and designers the ability to design their web-based experience without having to deal with the vagaries found in each browser.  Given that most modern mobile platforms have a good HTML5 story around their browsers (either today or in future direction of their browsers), it’s a strong argument.  The other side of the coin is that the set of standards that are commonly referred to as HTML5 won’t be ratified until 2014 at the earliest.  There is also no guarantee that each of the major browsers will interpret the standard the same way which could negate the benefits of the “write once, display on any browser” vision of HTML5.

    The pro-native app enthusiasts, on the other hand are make a great point in that the development platforms for their apps are rich, well-documented, support rapid dev cycles and a centralized store where smartphone users can easily find, install and socialize the apps they like.  Apps that are native to the platform can take full advantage of the features that the platform vendor has exposed, leading to incredible innovation.  Finally, apps found in a marketplace have the advantage of marketing support that comes out of the box.  Data shows that being featured in a marketplace creates a huge spike in downloads and revenue that has the opportunity to be sustained over long periods of time.   The negatives for native apps include the need to share revenue with the marketplace the app resides in as well as the app being subject to the terms and conditions of that marketplace with the risk of being pulled with only short notice.

    So who is right?  Well, you could say both are.  They both have valid arguments and the positives for each are tangible while the negatives are equally relevant.  I would also say that combining the two (a native smartphone app leveraging HTML5) is equally right and should receive more consideration than it currently is getting.

    To make my case, let’s consider the Windows Phone 7 Codename Mango platform (I use Mango instead of the original WP7 platform as Mango introduces IE9, an HTML5-ready browser, while the original WP7 platform used a browser that was a hybrid of IE7 and IE8 which are not HTML5-ready).  For example, using the Qantas demo that was seen in Joe Belfiore’s keynote at MIX11, re-imagine the implementation of the app Qantas built as a native Mango app that utilizes a browser control within the app to deliver a rich, web-hosted experience via an HTML5 canvas.

    ie9mobileThe power of HTML5 allows you to create a truly immersive experience that is hosted purely within the browser.  If you are a registered WP7 developer on the App Hub and you have downloaded the Mango beta build you can check out its capabilities for HTML5 on a WP7 device (or you could just bring up the emulator that came with the Mango beta dev tools).  With Mango, you can leverage the power of IE9 and HTML5 to create amazing apps that can be skinned to fit the look and feel of the Mango platform (i.e.:  the metro design language).  You can then use this same experience, if you wanted to, on normal desktop browsers or even in other mobile browsers.

    qantasLikewise, if you hosted that web experience within a browser control, you could still leverage the amazing features of the Mango platform to create a truly immersive experience that you simply couldn’t by only using an HTML5 app in the mobile browser.  By using a native app to host the browser control, you could still leverage new features in Mango such as Agents and Alerts, double-sided tiles, fast app switch and even deep app linking.

    Even if you were looking to avoid revenue sharing for your paid app within the Marketplace (paid apps are split as a 70/30 with you retaining the 70% portion), you could make your app free in the Marketplace and implement your own in-app purchase mechanism within the HTML5 part of your app (assuming, of course, your app isn’t a Mango game, as the Marketplace certification guidelines prohibit any in-app purchase within WP7 games as of the publish date of this post).

    So I’ve made my case for hybrid native/HTML5 apps.  I suspect some of you may have different ideas around this, so please let me know what you think!


  • Transcending the Traditional Web

    Mango RTMs! Now what?


    Last week, we announced that Windows Phone 7 Codenamed “Mango” RTM’ed (RTM = Release to Manufacturing).  This is great news for a number of reasons because Mango represents a very enticing update to Windows Phone 7 that in essence puts it at least on par with our competitors from a phone capability and experience perspective and even exceeds our competitors in a number of areas.

    Some of you may have put Mango on your phone already (if you weren’t aware you could do this, check this link out as it provides some details around this process – just be aware that you need to be registered as a developer on the App Hub before you get an invite to the Beta program).

    Below is a refresher of some of the great end user features that Mango introduces to Windows Phone 7:

    • Multitasking: Even though Windows Phone 7 was always a multitasking OS, we have opened up the capability for third party vendors (that’s you!) to leverage multitasking in their apps
    • Internet Explorer 9: Yup, the browser engine on our phone is basically the same browser engine that sits on your desktop (if you’re using IE9, of course!).  Bring on the HTML 5 goodness!
    • Conversation View:  Have conversations with friends that span multiple services in a single thread.  Start on Facebook, switch to text message and then to something else.  It’s all reflected in a single conversation thread.
    • Office 365 and deeper SkyDrive Integration: Share your documents and photos in the cloud with ease (and securely)
    • Contact Groups: Have a lot of contacts in your address book? You can now group them into buckets (for example, family, co-workers, fantasy football league, etc.) which makes it easier to contact them either as a group or individually
    • Improved Live Tiles: Get even richer notifications from the tiles on your home screen, including the use of agents which can give you timely information based on location, alarms, etc.
    • Deep Linking into Apps: You can now pin an app to your homescreen and have that tile send you to a specific area of your app (for example, a flight status tracker for a flight you’re taking later that day within an airline app).
    • Local Scout: Integrate search results for your app with Bing search.  A great example for this would be a movie app integrating local scout search for finding movie theatres near you and displaying when the next showing of a movie your thinking of seeing starts

    There’s a whole lot more that users will love and that you as a developer can leverage, but you get the idea.

    So what exactly does the Mango RTM mean?

    Basically, the build for Mango has gone gold and has been sent to OEM manufacturers  to test and prepare their phones with the build for general availability to the consumer.  We have also sent this build to our carrier partners around the world so they can certify the build and prepare their infrastructure for Mango so that their Windows Phone 7 customers can download the update when the carrier is ready.  We are working very hard with both our OEM and carrier partners to make sure that Mango is available to consumers quickly and so far everything is very much on schedule so I’m pretty confident that anyone that wants Mango on their phone will be able to get it in a very reasonable timeframe.

    For those of you wondering when Mango will officially launch, there is no one answer as we will be launching Mango via the carriers and each carrier will have its own timeline (and before you ask, I don’t have any info as to when that will be for Rogers, Telus and Bell Smile). The general target we are all looking at globally, however, is later in the 2011 calendar year.

    By the way, any phone that has Windows Phone 7 on it today will be upgradeable to the Mango update.  And the update is free.

    As a developer what can I do?

    If you have apps in our Marketplace today, you may want to take advantage of the new features that Mango introduces to make your apps more attractive to your users.  Mango will be delivered to phones around the world soon, so if you want to take advantage of the new Mango features in your app by the time Mango is available to the average consumer, implementing some new functionality in your apps today would be a good idea.

    If you don’t have an app/game in the Marketplace today or you intend to build another app that takes advantage of Mango in time for launch, then I would suggest start coding your app/game soon! 

    If you are completely new to Windows Phone 7 and want to start from scratch, there are some Windows Phone 7 Developer tutorials listed in a post by my Microsoft colleague in Lebanon that teaches you how to build apps and games on the non-Mango platform.  Please note that these tutorials are still relevant in the Mango world (they just don’t take advantage of the features new to Mango) and are a great place to start!

    If you’re a seasoned veteran in creating Windows Phone 7 apps, then the you may want to take a look at the amazing list of resources that Larry Lieberman, a Senior Product Manager on the Windows Phone teamdocumented to get you started on Mango.  You can check out his post but I’ve also reproduced it here in case you don’t want to leave this site:

    1. Official Windows Phone Developer documentation on the MSDN Library. This is where we publish all of our official documentation. Quite a bit of new content was added here concurrent with our release of the new SDK, including:
      1. What’s new in the Windows Phone SDK
      2. Code Samples for Windows Phone; includes 26 new samples just for Mango
      3. Our ‘How To’ index. This is where we link to all of the specific pages within the documentation that explicitly spell out ‘how to’ implement a specific type of developer scenario. Many of these actually map to and spell out the execution of the sample code in the code samples. Some of the most interesting How To documents for Mango features include:
        1. SL & XNA together: How to: Combine Silverlight and the XNA Framework in a Windows Phone Application
        2. Profiler: How to: Improve the Responsiveness of Your Application Using the Windows Phone Profiler
        3. Fast App Switching: How to: Preserve and Restore Application State
        4. Database: How to: Create a Basic Local Database Application for Windows Phone
        5. Sockets: How to: Create and Use a TCP Socket Client Application for Windows Phone
        6. Sockets: How to: Create and Use a UDP Socket Client Application for Windows Phone
        7. Camera: How to: Create a Base Camera Application for Windows Phone
        8. Camera: How to: Extend the Pictures Hub with App Connect for Windows Phone
        9. Audio: How to: Play Background Audio for Windows Phone
        10. Periodic Agent: How to: Implement Scheduled Tasks for Windows Phone
        11. Motion API: How to: Use the Combined Motion API for Windows Phone
        12. Search Extensibility: How to: Extend Search with App Connect for Windows Phone
        13. Tiles: How to: Create, Delete, and Update Tiles for Windows Phone
    2. Windows Phone Mango Training Course. Now updated for beta 2 of the SDK. The Windows Phone Mango Training course, (like our previous training course for the initial release of Windows Phone 7), provides you step by step guidance, with complete sample code, demonstrating how to leverage the new developer scenarios in Windows Phone Mango to create a variety of real world applications. For the new training course, we decided to have the various labs all revolve around a single, more useful application, a task manager we called ‘Tidy’. You can get a video introduction to the ‘Tidy’ application here on Channel 9.
    3. The Inside Windows Phone Show on Channel 9. This show is our home on Channel 9, where we’ll provide you video walkthroughs of our new developer features, on a periodic basis. So far, we’ve conducted a number on Mango functionality, including the following:
      1. Inside the Mango Camera APIs
      2. Search Extras in Mango
      3. Sockets in Mango
      4. Inside the Mango Documentation
    4. App Hub Game Developer Resources, updated for Mango. This page is where we centralize all of our Windows Phone game developer resources, and we’ve updated it for Mango. Here you’ll find the following items, (among others):
      1. What’s new for games in Windows Phone OS 7.1
      2. Game State Management
      3. Migration Guide: From the Game Class to Silverlight/XNA
      4. Model Viewer Demo

    Finally, if you’re building a Mango app or game right now – I’d love to talk to you!  Give me a shout via the comments area of this post, use our contact page, or send me a note on Twitter!


Page 1 of 1 (4 items)