Pluralsight blog Where devs, IT admins & creative pros go for news, tips, videos and more.
Pluralsight + Digital-Tutors - 3,000 tech & creative courses - starting at $29/month Get it now →
November 8, 2012

Meet the Author: Paul O’Fallon on Node on Windows and Azure


In this episode of our Meet the Author podcast, Mike Woodring talks to Paul O’Fallon about his course Node on Windows and Azure.  In the interview Paul explains what Node.js and Azure are and how server side JavaScript has benefited from the desktop browser competition.  Paul also describes the importance of Microsoft’s involvement in the Node.js ecosystem and how they have reached out to developers by putting their Windows Azure SDK for Node.js on GitHub.

Listen to the Audio (MP3)

Meet the Author:  Paul O’Fallon on Node on Windows and Azure


[Mike] Hello. This is Mike Woodring. I’m speaking with Paul O’Fallon about his course Node on Windows and Azure. Paul has more than 19 years of experience in the IT industry, spanning academic, startup, and enterprise environments. As an enterprise architect, he is responsible for providing strategic direction and implementation guidance in the application architecture space. Paul is also an active open-source contributor in the Node.js ecosystem. Hello, Paul. It’s good to have you with us, today.

[Paul] Hey, Mike. Thanks for having me.

[Mike] So before we dig in, I thought it would be good to start by parsing the title of your course just a bit, which includes two words that some of our viewers may not be familiar with, at least in the same sentence; and that’s “Node” and “Azure.” Can you give us a high-level overview of what Node is, what Azure is, and how this course incorporates those two topics together?

[Paul] Sure. So Node is a server-side JavaScript platform built on Google’s V8 JavaScript engine, the one found in their Chrome web browser. And Node really makes it easy to build highly-scalable, event-driven applications. And Azure is Microsoft’s cloud platform, consisting of storage and compute resources across both the platform as a service and infrastructure as a service models. In this course we explore the intersection of these two technologies, which can be roughly divided into two parts. First, there is using Node to access Azure’s storage and service bus capabilities. In this case it doesn’t really matter where the application itself is running, just that you’re connecting to Azure resources. In the second half we look at leveraging Azure’s compute capabilities to actually deploy and run Node applications in the Azure cloud. In reality, these go hand in hand. You can build an application that will not only run-in the cloud but persist itself there as well.

[Mike] Excellent. So who is the target audience for this course, and what kind of skills should they have before diving in?

[Paul] I think the target audience would be someone who has at least some basic exposure to either Node or Azure and would like to leverage that to learn more about the other. Of course, that’s not strictly required; but the course itself doesn’t go into much background about either of the foundational technologies. You can certainly watch the course, however, and follow along with the examples without any prior experience.

[Mike] I spent a fair amount of my time as a developer working on server-side code. And over the years that has primarily meant working with languages like C++ and C#. JavaScript was always — and I’m using air quotes here — “a client-side language.” So the idea of writing server-side code in JavaScript fascinates me. What can you tell me about that?

[Paul] Yeah, I agree with you. Back in 2010 I attended a web development conference here in Atlanta, where I was first exposed to Node. And in that same conference, there was a panel of folks discussing the future of web technologies. And someone from Mozilla on that panel made a statement that really stuck with me. He said something to the effect that if you’re not doing server-side JavaScript in five years, you won’t be doing server-side development. And his point was this: There’s no other language where the four biggest names in the web are competing to build the most performant implementation of that language. And he was referring to the browser manufacturers: Microsoft, Google, Mozilla, and Apple. Node on the server benefits from this competition on the desktop. Google is constantly iterating and improving their JavaScript engine to better compete with IE, Safari, and Firefox. Each release of Node contains an improved version of the V8 JavaScript engine; so those improvements go straight to Node.

[Mike] So why do you think Microsoft has placed so much emphasis on Node?

[Paul] That’s an interesting question. I believe they saw an opportunity to get involved early in an evolving platform and to make a difference. Node is still a rising star, and it was smart of Microsoft to associate themselves with it. I know when I first began using Node, the only way it would run on Window is with the Cygwin emulator; and even that was dicey. Microsoft has helped port Node to Windows, as well as provide first-class support for running Node applications on Azure. I can honestly tell you that half the reason my last computer was a MAC was so I could build Node applications. And with the support that Node now enjoys on Windows, that reasoning really isn’t valid anymore. Also, I think it’s a win-win situation. Node brings developer credibility to Azure, at least speaking in terms of the traditionally non-Microsoft developer. And Microsoft support for Node on Azure brings enterprise credibility to Node. There are several other smaller providers who support running Node applications in the cloud. But few, if any, with the enterprise clout of Microsoft.

[Mike] Now, as a cloud platform, Azure has quite a large surface area, offering services for storage, virtual machines, websites, and so forth. What specific aspects of Azure do you explore in this course?

[Paul] In this course we talk about accessing Azure storage services from Node, such as table, queue, and blob storage. We also look at accessing the Azure service bus. The course also covers deploying Node applications to Azure, using both the command line, as well as Microsoft’s Web Matrix tool.

[Mike] So in the course you have modules covering both Microsoft’s Azure SDK for storage, as well as your own API. Why two implementations?

[Paul] Well, it’s interesting. Because I originally built and deployed a Node module called Azure to the Node package manager repository before Microsoft did. I had written a module to access Azure blob, table, and queue storage by calling the rest APIs directly. I had assumed that the intersection of Azure and Node would be my little corner of the Internet where I could hang my hat. But little did I know at the time that Microsoft had bigger plans. And so at one point someone from Microsoft approached me about getting the name “Azure” because they wanted to deploy their own module under that name. And I gave them the name and renamed my module to Blue Sky. I debated at the time whether to just retire my module all together, because Microsoft was going to build their own. But in the end I decided that my passion was more around the design of the API I had created more so than the underlying implementation. You see, Microsoft’s API is very complete and strives to be consistent with their APIs that are implemented in other languages. But my Blue Sky API, on the other hand, doesn’t have those constraints and really comes from a different perspective. I was more influenced by the other NoSQL Node modules, such as those built for Redis and MongoDB. So in the end I decided to port my Blue Sky module to simply act as a wrapper around Microsoft’s own SDK so I could focus on the API and leave the underlying implementation to them. Many common storage tasks are easier to do in the Blue Sky API. And to a person familiar with Node, it will hopefully seem more familiar.

[Mike] Well, that makes a lot of sense. Now, nearly all the coverage I’ve seen on Node and Azure involves use of the various web-based admin portals provided by Microsoft. In your course, have you a module that explores deploying to Azure using the command line. Why is that important?

[Paul] I think that it’s a great example of Microsoft reaching out to the Node developer community and meeting them where they are. Many of the existing Node hosting providers, such as Heroku or Nodejitsu, manage their deployments via this command line. And Azure is competing in that space. And so besides the inherent benefits of having a command line capability, it allows developers to interact with a platform in a way that’s most natural to them. Now, I think another example of this is how Microsoft has open-sourced their SDK on GitHub. They went where the developers were.

[Mike] Great. So what topic are you planning to turn your attention to next?

[Paul] So I’ve been thinking about a couple of different topics. One is the Sencha Touch 2 API for building mobile applications using web technology. And another is the graph database Neo4j.

[Mike] Great. Well, thank you very much, Paul. We’re really looking forward to the course, and I hope everyone enjoys it as much as I did.

[Paul] Thanks, Mike.

[Mike] Again, this is Paul O’Fallon’s new course, Node on Windows and Azure. Thanks again, Paul.

[Paul] Thank you.

About the Author

is a Chief Architect specializing in large scale distributed system development and enterprise software processes. Paul has more than twenty years of development experience including being a former Microsoft MVP, a speaker at technical conferences such as Microsoft Tech-Ed and VSLive, and a published author. Prior to working on the Windows platform, he built software using a vast array of technologies including Java, Unix, C, and even OS/2.