Monday, December 3, 2012

MongoSV 2012: the 3 aaS’s of MongoDB in Windows Azure

10gen is holding its annual MongoSV conference this week in Silicon Valley, December 4. I was originally scheduled to co-present a session at the event, along with Doug Mahugh and 10gen engineer Sridhar Nanjundeswaran, but a scheduling conflict has me thousands of miles away in Paris, presenting at an OSS Summit.

But fear not! Doug and Sridhar are still giving the talk. This session, titled “The three aaS’s of MongoDB in Windows Azure,” will go over deploying MongoDB in Infrastructure-as-a-Service (IaaS) and Platform-as-a-Service (Paas). And… there’s now a MongoDB Software-as-a-Service (SaaS) offering, directly integrated in the Windows Azure Store:



This session is at 11:30 PST. Doug and Sridhar will show and compare all three approaches. If you’re headed to MongoSV, please consider sitting in!

Tuesday, November 20, 2012

Kickin’ it OSS Skool in Azure: Paris, December 4!

Life is good in WindowsAzureLand, especially for those building OSS-based apps. We have language SDKs for python, php, node.js, and Java. We have git deployment. We have hosted databases like MongoDB and MySQL. We have Linux virtual machines. We have command line tools for Mac and Linux. There’s enough OSS goodness to fill an entire day’s worth of presentations and demos!

Well then… we’re spending an entire day giving presentations and demos, at our Windows Azure Open Platform Summit! This one-day event will take place December 4 in Paris, at the Crowne Plaza.  My teammate Ricardo Villalobos will be co-presenting with me, and we’ll also be joined by keynote speaker Karandeep Anand, Principal Group Program Manager for Windows Azure.

You can find the full agenda and signup link here. At a high level, here’s what the day will cover:

  • What does OSS mean for Windows Azure?
  • Infrastructure-as-a-Service, with virtual machines and virtual networks, supporting Linux- and Windows-based applications
  • The Developer Story with Eclipse, along with SDKs for Node.JS, Python, PHP, and Java
  • Windows Azure’s varied data offerings, both SQL- and NoSQL-based, with such technologies as MySQL and MongoDB

Note that this is tailored for technical decision-makers: CTO, Architect, Engineering Lead…

Tuesday, September 4, 2012

My team is hiring AGAIN! OSS+Linux+Azure

Our little Windows Azure architecture team is growing again! This time, we’re looking for someone with lots of Linux experience, coupled with development. We’re working with some cool ISVs worldwide, where the story is all about Azure + Linux. Don’t get too worried if Azure isn’t your primary cloud background.

This doesn’t stop at cloud or language knowledge. If you have some NoSQL experience, this is a big plus. Same goes with Big Data.

There’s some travel involved, including international travel.

The job posting is up on StackOverflow Careers, right here. Please take a look, and if it seems like a good fit for you, submit your resume and get the process started!

Any questions? Just post a comment here…

Friday, July 6, 2012

Headed to WPC 2012

Tomorrow morning I’m headed to Toronto, for the Microsoft Worldwide Partner Conference. It should be a great week, with over 15,000 people attending. If you’re in town, maybe we’ll run into each other (I wonder if there’s an app for that…). I’ll be in town through Wednesday afternoon.

If anyone knows some happenin’ parties, feel free to post a comment here – I seem to be in the dark…

Wednesday, June 27, 2012

Cross-post: ISV Guest Post Series: Linx Powers its Point-of-Sale Systems with Windows Azure

Fernando Chaves, e-Commerce Program Manager at Linx, talks about their LinxWeb Point-of-Sale system that’s now running on Windows Azure. The full post is published on the Windows Azure blog, here.

One of the interesting tidbits in this write-up is around the shift of media content to blob storage and CDN. Traditionally, Linx stored this content in their SQL Server database. This meant that, with every request for content, both the database server and IIS were taxed, handling the retrieval and streaming of content. Once their media was shifted to blob storage:

  • They saw an approx. 75% reduction in database size.
  • They saw significant load taken off their database and web servers, resulting in much faster response times on their servers due to reduced load. With content located in blobs (or CDN), web pages can simply link directly to this content, which completely bypasses IIS and the database server.

This post is one of several in the Windows Azure ISV Guest Post Series. The entire list is here.

Tuesday, June 26, 2012

Speaking at MADExpo: Nose Equal, Starring MongoDB!

The Mid Atlantic Developer Expo (MADExpo) is this week: June 27-29, at the Hampton Roads Convention Center in Hampton, VA. This year, I’m presenting an introduction to the “NoSQL” database craze (kinda sounds like “Nose Equal”). We’ll fire up a quite-popular NoSQL database, MongoDB, and see what this mysterious schema-free, SQL-free database is all about!

If you’re attending the conference, feel free to stop by and learn a bit of MongoDB goodness! My talk is scheduled for two timeslots:

  • Wednesday @ 11am
  • Friday @ 8:30am

Monday, June 25, 2012

Cross-post: Windows Azure and Java: Working with Blob Storage

Persistent Systems just published a blog post about working with the Windows Azure SDK for Java to access blobs. This covers:

  • Working with containers
  • Creating. listing, and deleting blobs
  • Verifying integrity of blobs
  • Working with Shared Access Signatures and permissions
  • Simulating nested directories within containers

The Java SDK blob classes sit atop the Windows Azure Storage REST API.

Thursday, June 14, 2012

Fan mail: wow your so stupid

I’m out in Redmond this week, meeting with our worldwide team as we prepare for the new fiscal year. Each team shares a few key learnings from the year, maybe offers a bit of training. I co-presented a fun talk about Windows Azure and architecting for resiliency.

Afterward, a few of us were talking about how we disseminate these nuggets of wisdom. This led to a discussion around blogging and, eventually, StackOverflow. For those not familiar, StackOverflow is a programming Q&A site. The community is self-managed, and both askers and answerers earn reputation points and badges. It’s a fun place to share knowledge and help others. Anyone can vote a question up or down, and the original question owner may choose to mark your answer as “the” official answer (yielding even more rep points). If interested, you can check out my profile and peruse some of the answers I’ve provided. I’m almost embarrassed to admit how often I go back to my own answers, to remind myself how I solved a problem in the past…

I mentioned how StackOverflow is community-driven. Well, as reputation increases, so do associated privileges. One key privilege is the ability to moderate questions that don’t fit the published Q&A format. For StackOverflow, it’s all about asking programming questions. It’s not a forum to start religious debates (e.g. “Which cloud is better: AWS or Windows Azure?”). These questions can lead to some hostile answers, none of which can really be quantified with terms such as “kicks butt” or “is as worthless as navel lint.” So… as community leaders, we are asked to moderate these off-topic questions, and are able to vote to close a question (along with stated reason).

What about the fan mail?

Ok, on to the meat of this story: Fan mail. I recently voted to close a question, as it was an open-ended request for opinions about which cloud would scale better for a given scenario. I won’t reference the specific question or person, as I don’t feel it’s necessary to call this out.

The person asking the question wanted the Community At Large to provide a very detailed answer on many, many what-if’s of a fictitious app scenario, none of them programming-related.  The question was eventually closed, as 4 other moderators voted as well. And that’s when the original poster tracked me down, via Facebook, and delivered a lovely message to me:

wow your so stupid I ask a in deep question about cloud computing on stack and you close it before I receive any answers.... coming from a azure expert too wow wonderful I was expecting more srsly

Normally, I’d let this one slip by and just ignore it. But… thinking about it, I wanted to share this and offer my thoughts, in no particular order:

  • Stack Overflow is a voluntary participation site. Nobody’s paid, we don’t get ad revenue, and we do what we do because we want to and enjoy doing it. If others benefit from answers I (or others) provide, that’s awesome! If I choose not to answer a particular question? So be it: My choice.
  • If you’re not going to play by the rules, accept the consequences. In this case, there are other forums to post an opinion piece. The original poster could have even blogged about it, tweeted, and asked the world to join in on an opinion-laden debate. Maybe I would have joined in the debate. Maybe not… At least there’s a home for these types of discussions.
  • If you’d like to provide feedback to me, please do! Even in a public comment on my blog. However, if you are going to take this route: I ask that you keep it civil. Name-calling is not going to help.
  • If you still feel compelled to call me stupid, the least you can do is get your grammar, capitalization, punctuation and spelling correct.

Ok, rant over. Thanks for listening!

Wednesday, June 13, 2012

Cross-post: Windows Azure and Java: Working with Queues

Persistent Systems just published a blog post about working with the Windows Azure SDK for Java to access Windows Azure Queues. The basic operations (inserting, retrieving and deleting messages) are covered, as well as dealing with poison messages (messages that remain in the queue after repeated, failed attempts to process).

The Java SDK queue classes sit atop the Windows Azure Storage REST API.

Friday, June 8, 2012

Cross-post: Windows Azure and Java: Working with Table Storage

Persistent Systems just published a blog post about working with the Windows Azure SDK for Java to access Windows Azure Tables. The article covers table creation/deletion, entity insert/query/deletion and entity group transactions.

As with the .NET SDK, the Java SDK Table Storage classes sit atop the Windows Azure Storage REST API.

Monday, June 4, 2012

Speaking at CMAP, June 5

Tuesday, June 5, I’ll be giving a fun talk at CMAP (Central Maryland Association of .NET Professionals): “Windows Azure: All that and a bag of chips!”

Windows Azure is steadily improving, both in features and in developer tooling. In this talk, we'll look at how to get up and running quickly with your first Windows Azure app, whether it's .NET or Java, SQL or NoSQL. We'll dispel some myths and smooth away the startup friction. Even if you already know the basics, I’ll be sure to dig up some useful nuggets for you.

This is a perfect session to attend, prior to the big “Meet Windows Azure” event on June 7, where lots of super-cool new stuff will be talked about!

CMAP details and directions are here. The excitement begins at 6:30pm!

Friday, May 25, 2012

Windows Azure Mythbuster: Open Source

Interesting timing: I saw a post by fellow Microsoftee Buck Woody the other day, dispelling a few Windows Azure myths. You can check out Buck’s myth-debunking,  here.

One of the more interesting Windows Azure myths called out in that post (for me, at least):

It’s only for Microsoft stuff – can’t use Open Source

This is a myth I hear quite often. I’ve been presenting Windows Azure at several user groups, conferences, and community events over the past few years, and most of my recent talks have, in some way, involved open source code. I’m amazed at the large percentage of people who understand Windows Azure to be “the cloud platform that runs .NET.”  This simply isn’t true, but just saying “This simply isn’t true” doesn’t really get the message across.

So… for my recent talks, I’ve twisted things around, to get some reality into the mix. Not being much of a slides guy, I usually dive right into code. And that means… firing up Eclipse and starting a new Java project. At this point, I usually have to sit back for a bit and wait for the wide-eyed, confused attendees to settle down and accept the fact that, indeed, it’s pretty straightforward to develop a Java app for Windows Azure.

Of course, I kinda want that wide-eyed, confused attendee look to last a wee bit longer. So I then open a browser window and pull up the latest Windows Azure SDK for Java. On github. And explain how all of the Windows Azure SDKs are now open-sourced, and that anyone can submit a pull request. As for the Java SDK, it’s continuing to evolve. The latest update, April 2012, provides Service Runtime, Storage, and Service Bus.

Language stuff aside, several of my demos include MongoDB running in Windows Azure. MongoDB is one of several NoSQL databases (pronounced like Nose Equal), and is completely open source. This is always a fun exercise because of sheer cool-factor, but more importantly, it lets me demonstrate the ability to run just about any Windows application in Windows Azure with the help of startup scripts and a bit of scaffolding code in the Windows Azure project itself. The scaffolding and scripting differs, depending on whether I’m building my Windows Azure solution via Visual Studio or Eclipse, but I can accomplish the same thing from either environment.

Several open source projects have Windows variants, and several of those will run just fine in Windows Azure by getting the configuration correct. If you can get something running in Windows Server, chances are you’ll be able to run it in Windows Azure. Of course, there are always exceptions, some of them requiring complex installation and setup (such as MongoDB replicasets, or WordPress). Sometimes you’ll find that pre-built projects that help get these apps up and running quickly; for others, you’ll need to figure it out (or find a good blog post about it).

One last thought on working with alternative languages such as Java or PHP: The Window Azure Virtual Machine images don’t have the runtimes or libraries installed. This is something you’ll need to provide, along with any other apps and libraries your app may need (such as Tomcat, log4j, etc.). These may be bundled with your Windows Azure deployment (simple approach but increases deployment file size considerably), or placed in Blob storage and downloaded to your VMs and boot time (requires initial upload to Blob storage, plus a bit of startup script to download from Blob storage to running VMs).

So: Myth Busted.

Disclaimer: I like to demo Java as the .NET alternative, as I’ve been working with a few Java+Windows Azure projects lately. You can certainly develop Windows Azure apps in other languages. Even if your favorite language doesn’t have an SDK yet on the Windows Azure github repo, you can easily access the API with REST calls. If you’re into PHP, check out the latest PHP SDK on CodePlex, a collaboration project by RealDolmen and Microsoft.

Wednesday, April 11, 2012

A Look at the Windows Azure ISV Guest Post Series

A few months ago, on the Windows Azure blog, I announced a new Windows Azure ISV Blog Series, where our worldwide Windows Azure team would be writing about the ISVs we’ve been working with, and the applications they’re running on Windows Azure. We’ve had some really cool posts since the announcement, with ISVs from the US, Japan, the Netherlands, Spain, India and Brazil.
  • BrainCredits, a system to help people track all their informal learning on a virtual transcript. Written by BrainCredits co-founder David Hoerster.
  • Digital Folio, an Internet browser plug- that allows end users to compare prices and find product suggestions while shopping online.
  • Sociobridge, a Content Management System for Facebook pages, from ReedRex.
  • Tribe of Noise, a social networking community for musicians and the music business. Written by Tribe of Noise founder Hessel van Oorschot.
  • FieldVisor and ScadaVisor, web-based services to help oil and gas companies streamline production activities and increase production output. Written by Fielding Systems founder Shawn Cutter.
  • CloudNinja for Java, a multi-tenant reference application for Java-based apps in Windows Azure. Written by Shreekanth Joshi, AVP Cloud Computing at Persistent Systems.
  • Kern4Cloud, a multi-tenant information management service sold in a SaaS model with subscriptions managed and paid through the Windows Azure Marketplace. Written by Miguel Parejo, CTO at Softlibrary.
  • SQL Azure Federations. Exploring the use of SQL Azure's scale-out capabilities through federated shards, as well as an open-source sample application. Written by Trent Swanson, Principal, Full Scale 180.
  • Qeystone and Continuous Integration. A look at Minitab’s efforts to bring their Qeystone product suite to Windows Azure, including their use of Continuous Integration. Written by Michael Yeaney, Enterprise Web Architect at Minitab.
  • Icertis: Workflow and Contract Lifecycle Management. Icertis built their latest contract management system from the ground up to take advantage of Windows Azure, with specific attention toward workflows (both hosted workflows via Workflow Foundation and SharePoint Online workflows). Written by Monish Darda, CTO at Icertis.
  • Linx: LinxWeb, a multi-tenant Point-of-Sale application running on Windows Azure, taking advantage of blobs and CDN to reduce load on Web servers and database. Written by Fernando Chaves, e-Commerce Manager at Linx.


These are all real-world examples and in-production systems, and the folks writing about them are sharing some great info about their architecture decisions.

There are several more stories queued up, and I’ll keep this list updated as they’re published.

Wednesday, April 4, 2012

Join my team at Microsoft!

Oh, this is too-cool news! My team has a new job opening, for an OSS-savvy individual who wants to bring their skills to Windows Azure. One lucky victor will get to do some really cool stuff!

  • Present to CxO-level and help to define cloud strategy for ISVs
  • Engage in “complementary” communities (non-.NET languages, non-Microsoft 3rd-party apps) through presentations, blogs, and other channels
  • Drive technical architecture and design for our top ISVs
  • Coach and grow worldwide team of technical and business evangelists
  • Deliver on technical readiness activities for partners and the internal worldwide team
  • Work closely with internal Product Groups and Business Groups to give product feedback, influence product roadmap and priorities, and remove technical blockers

Ideally, you’re situated somewhere around Silicon Valley or Redmond. But don’t let that deter you from submitting your street-creds and giving it a shot!

The job posting is on the Microsoft Career site, here.

Questions about the position? Feel free to leave comments here. Or… you can email me at Microsoft or DM me on twitter (even if it’s just to let me know that you applied, or that you might know someone else who might be a good fit), and we’ll go from there.

Monday, April 2, 2012

April Foolery 2012 at Home

Being the jokester that I am, you can naturally assume that this trend runs in the family. Indeed, my children seek out every opportunity to play tricks on Dad. Even when they were little tots, I recall such classic attempts as “Daddy, your cell phone is on fire! APRIL FOOLS!” Of course, the moment I played a trick on them, they’d return to their juvenile roots, complete with crying and running to Mom for support.

Fast-forward a few years. My son, a recently-anointed teenager, seemed just about the right age to be targeted this year. Problem is, he’s a smart kid, familiar with my constant pranks and jokes. So I went with something juvenile, assuming he’d get a good laugh out of it. Little did I know he’d take put aside all logic and reasoning, and simply fall for the prank…

The Setup

A bit of history on my son, and why this prank worked… He’s become a bit of a gamer, and now has his own YouTube channel. He produces lots of Xbox gaming walkthroughs, and more recently has gotten into some really cool music video production with Sony Vegas Movie Studio, synchronizing FPS play with some of his favorite songs. His latest montage can be seen here.

As part of his world of gaming, he’s become enamored with Microsoft Points. Between stocking stuffers and bing searches, he accumulates points and turns them into downloadable content for various games.

Combining YouTube and Points: What if something came along that offered him increased viewership and a bunch of points to go with it?

The Prank

I receive at least one Xbox Live email update monthly, and there are often promotions announced. I decided to take one of these emails, alter it, and forward it to my son. The premise:

  • I won 10,000 Microsoft Points in a March Madness contest
  • My gamertag would be featured in an upcoming online ad campaign
  • I was willing to give my son all of my points, and ask Microsoft to use his gamertag instead, to help promote his YouTube channel (and yes, I know YouTube is not a Microsoft-owned property).

I barely spent any time on the fake email, as I was merely looking to get a laugh out of the absurdity. Here’s a snippet of the email:


Yes, it’s littered with errors: capitalization of Xbox, “gamer tag” being two words instead of one, inability to transfer points, etc. Yet, he completely believed it (maybe because he was in the middle of editing his next video blog post?). He was my bestest friend. He was dreaming of the possibilities, of the increased friend requests, downloadable content, and more! He even tweeted about it. Here’s a conversation snippet:





He was about to publish a video-blog, telling the whole world of his spoils. Fortunately I let him in on the joke beforehand – I really wasn’t out to embarrass him, and I’m pretty sure he actually would absolutely hate me if I let the joke go that far.


This morning, he posted a vlog about the incident (starting at the 3:00 mark). He was a good sport about it, even as he tore apart the email, pointing out all of its glaring errors. And… he’s now threatened to get even with me. Maybe today, maybe next week, only that I should not count on him waiting until next April 1. I guess it’s time to brace myself for the worst…

Wednesday, March 14, 2012

Speaking at Code PaLOUsa, March 17

I’m sitting at BWI airport, headed to Louisville, KY for Code PaLOUsa, a 3-day software development conference. I’ll be presenting an introduction to Windows Azure + Java, working with the latest Windows Azure SDK for Java (updated a few weeks ago, and available on github).

My talk is Saturday morning, but I’ll be around Thursday and Friday as well. Should be a great few days!

Saturday, March 10, 2012

Roanoke Code Camp March 2012 - Slides and Notes

Thanks to those who packed the room for my Windows Azure talk this morning at Roanoke Code Camp. Some great questions were asked, and I scrambled to take notes on these:

  • Database security. When it comes to using SQL Azure, the only people with access are those that have the server name, database name, username, and password. Within the data center itself, servers are managed by an infrastructure team (Global Foundation Services), and the GFS team cannot identify which servers are running Windows Azure vs. other services. Data is not encrypted by default, but there’s nothing stopping you from doing so yourself before storing data.
  • Storage security. While we didn’t specifically drill down on this, this is similar to Database Security, in that the only way to gain access to a storage account is with its account name and access key (you get two access keys, either of which can be expired/regenerated at any time). Blobs can be set to be either public or private (public blobs are typically used with website graphics and other generally-available content). Private blobs are accessible with a RESTful call containing an access key or with a specially-signed “shared access signature” that’s time-limited.
  • Comparison to shared hosting. When comparing to Shared Hosting, consider what’s really being offered.
    • With low-cost shared hosters, your app is typically deployed alongside dozens (or possibly hundreds) of other websites. A large-volume site can consume a large portion of machine resources, negatively impacting your app. Also: What happens if you need to scale to additional servers? Or to a larger server? What about uptime SLA, or adding additional services such as databases or caches?
    • Windows Azure allows you to scale up/down (larger / smaller VMs) and out/in (more / less VMs) programmatically, via PowerShell, or through the Portal, in minutes. You can add new databases almost-instantly. You have an availability SLA as you scale to 2 or more instances.
    • So… just comparing on price alone is not an apples-to-apples comparison.
  • MongoDB? More info please! Someone approached me after the talk, citing MongoDB as the coolest part of the demo. For more information, head over to the MongoDB website. You can also download a fully-functional demo app with ASP.NET MVC + MongoDB from github, here (this is what I demo’d today).
  • What about the setup? If you head to, you’ll see the Developer Center. From there, you can download the Windows Azure tools (which includes a local emulator for Compute and Storage, that runs on your computer), as well as the SDK of your choice. There are currently SDKs for .NET, Java, PHP and Node.js, but you can access Windows Azure through any language using direct calls to the REST APi for storage, compute, management, and other functionality. See this MSDN article for more information about the REST APIs.
  • Is an ASP.NET Web Site needed along with a Cloud Project? During lunch, I was discussing this with someone. The key project type is the Cloud Project, which lets you define one or more VM types, or Roles. We built a sample app with a Web Role (ASP.NET MVC). We also saw a MongoDB project with both a Web Role (for the UI) and a Worker Role (for the MongoDB database). There is no need to add a Web Role, or even have a website associated with your solution at all. Imagine the case where you simply want to run a scheduled task on the hour (maybe grabbing some stock quotes and updating portfolios in a database). In that simple example, there’s no UI; just a timed process running in a Windows 2008 Server VM, set up as a Worker Role (e.g. no IIS running). One more example: When we looked at the Java app, it was set up to run Apache Tomcat. Since IIS is not needed in that case, the Java app is actually deployed to a Worker Role (with Tomcat simply being an executable process that listens on port 80 and 443, just like IIS would.


here are the slides we went through:

Wednesday, March 7, 2012

Speaking at Roanoke Code Camp, March 10

On Saturday, March 10, I’ll be giving a talk at Roanoke Code Camp: “Windows Azure: All that and a bag of chips!” This is all about getting up and running in Windows Azure quickly, whether with .NET or Java, SQL or NoSQL, Website or Web Service. I’ll dispel with some common myths and give some tips for avoiding startup friction.

For more info on Roanoke Code Camp, please visit their website.

Big Thanks to Joel Cochran for scheduling me at 9am, so I can get back home in time for the Father / Daughter Dance!

Tuesday, February 14, 2012

Speaking at MongoDC Meetup, Feb. 15

On Wednesday, Feb. 15, I’ll be speaking at my local MongoDB meetup group in the DC area. This talk will be all about running MongoDB on Windows Azure. A bit of code, a bit of cloud, a bit of “how does MongoDB and Windows Azure play nicely together.”

The evening kicks off at 6:30. The MongoDC Meetup page has more details and a link for signup. If you’re in the McLean, VA area, feel free to stop by and say hi!