Tag Archives: Visual Studio

GitHub Integration in Visual Studio 2015

GitHub Integration in Visual Studio 2015
// Falafel Software Blog

This is post #30 of 30 in the series “31 Days of VS2015 Tricks and Treats”


I do not miss the old days of source control tools. Using source control was arguably the poster child for benevolent evil, or to some Lavful Evil. The value of maintaining good source control discipline has always been immense, but the client tools have historically varied from awkward, to buggy, to 2:00 A.M. musings as to whether XCOPY and Robocopy weren’t actually a better idea; if not evil themselves then certainly tainted with an evil aura. And let’s not forget buying everyone on the team a beer -root beer? not really- for breaking the build yet again or the dilemma of “he’s not answering so dare I break his locks to check in this fix. Um better not. Last time I did that he checked in over my changes and it looked AGAIN like I broke the build.” Source control tools have improved over the years; the well-executed integration of Team Foundation Server client tools into Visual Studio 2013 is an excellent example of . But I’ll go out on a limb and say that git brought a sea change to using source control, no longer is it yet another addition to the development process rather the various tasks such as pulling, committing, merging, pushing, et cetera have become as natural to our coding flow as Ctrl-S. Even the process of merging several branches something often performed to the accompanyment of world class breath-holds now complete with barely a yawn.

Video: How to build your own Visual Studio Extension

You’ve at least heard about ReSharper, WebEssentials, JustCode and tools that can make your life a little bit simpler. Now what if you wanted to write something of your own, where would you start?

In this episode of Dev Superpowers, Danijel Malik will show you the basic things you need to know when writing your own extensions. Danijel demonstrate this by building something really cool; you’ll see it for yourself, check it out!

Video: Building Mobile Apps with Visual Studio (Session Recording)

We’ve all heard about the various ways to build mobile apps such as web vs. hybrid vs. native…but what does that mean for .NET developers who enjoy the rich feature set of Visual Studio? Do we need to invest in (insert web framework of the month), expensive native platform developers or a shiny new Mac? In this session from TelerikNEXT, I covered your options as a .NET developer and showed several approaches to write apps that run on iOS, Android and Windows Phone. I looked at using Cordova (with Telerik AppBuilder), Windows Universal and Xamarin, as well as ASP.NET. This session offers you the information you need to make the best choice for you or your organization.


The post Building Mobile Apps with Visual Studio (Session Recording) appeared first on Telerik Developer Network.

Visual Studio Emulator for Android – Day 8 – VS 2015 Series

Visual Studio Emulator for Android – Day 8 – VS 2015 Series
// Falafel Software Blog

This is post #9 of 12 in the series “31 Days of VS2015 Tricks and Treats”

As I mentioned in my previous post, Visual Studio 2015 ships with a fantastic emulator for Android to easily test your Android Applications.

Visual Studio 2015 Update 1 CTP

Visual Studio 2015 Update 1 CTP
// The Visual Studio Blog

Today we released Visual Studio 2015 Update 1 CTP. Included, you’ll find:

  • Edit and Continue support for /BigObj in C++, which means you can now Edit and Continue while debugging Windows Store C++ projects.
  • The C# interactive window in Visual Studio and the command-line C# REPL tool:

Cloud Based Load Testing Using TF Service & VS 2013

Cloud Based Load Testing Using TF Service & VS 2013
// CodeProject Latest Articles

Originally posted on: http://staffofgeeks.net/archive/2013/06/30/cloud-based-load-testing-using-tf-service-amp-vs-2013.aspx

One of the new features announced as part of the Visual Studio 2013 Ultimate Preview is ‘Cloud Based Load Testing’. In this blog post I’ll walk you through, What is Cloud

Build a NodeJS Powered Chatroom Web App Part 3: Node, MongoDB and Socket

 Build a Node.js-powered Chatroom Web App: Node, MongoDB and Socket
// Kogonuso

This article is part of a web dev tech series from Microsoft. Thank you for supporting the partners who make SitePoint possible.
This Node.js tutorial series will help you build a Node.js-powered real-time chatroom web app fully deployed in the cloud. In this series, you will learn how to setup Node.js on your Windows machine (or just learn the concepts if you’re on Mac), how to develop a web frontend with Express, how to deploy a Node.js Express app to Azure, how to use Socket.IO to add a real-time layer, and how to deploy it all together.
The tutorial will use the optional Visual Studio and the Node.js Tools for Visual Studio plug-in as a development environment. I have provided links to free downloads of both tools. This is a beginner to intermediate-level article –you’re expected to know HTML5 and JavaScript.

Part 1 – Introduction to Node.js
Part 2 – Welcome to Express with Node.js and Azure
Part 3 – Building a Backend with Node.js, Mongo and Socket.IO
Part 4 – Building a Chatroom UI with Bootstrap
Part 5 – Connecting the Chatroom with WebSockets
Part 6 – The Finale and Debugging Remote Node.js Apps

Part 3 – Building a Chatroom Backend with Node.js, Socket.IO and Mongo

Welcome to Part 3 of the hands-on Node.js tutorial series: Build a Node.js-powered chatroom web app. In this installment, I will show you how to use your existing express-based Node.js app to create a chatroom backend with WebSocket support.

What are WebSockets? What is Socket.IO?

WebSocket is a protocol designed to allow web applications to create a full-duplex channel over TCP (i.e. to have bi-directional communication) between the web browser and a web server. It is fully compatible with HTTP and uses TCP port number 80. WebSocket has allowed web applications to become real-time and support advanced interactions between the client and the server. It is supported by several browsers including Internet Explorer, Google Chrome, Firefox, Safari and Opera.
Socket.IO is a JavaScript library and Node.js module that allows you to create real-time bidirectional event-based communication apps simply and quickly. It simplifies the process of using WebSockets significantly. We will be using Socket.IO v1.0 to make our chatroom app.

Adding Socket.IO to package.json

package.json is a file that holds various metadata relevant to the project, including its dependencies. npm can use this file to download modules required by the project. Take a look at this interactive explanation of package.json and what it can contain.
Let’s add Socket.IO to the project as a dependency. There are two ways to do that.

  1. If you have been following the tutorial series and have a project in Visual Studio setup, right-click on the npm part of the project and select “Install New npm Packages…”

Once the window has opened, search for “socket.io”, select the top result and check the “Add to package.json” checkbox. Click the “Install Package” button. This will install Socket.IO into your project and add it to the package.json file.

"name": "NodeChatroom",
"version": "0.0.0",
"description": "NodeChatroom",
"main": "app.js",
"author": {
"name": "Rami Sayar",
"email": ""
"dependencies": {
"express": "3.4.4",
"jade": "*",
"socket.io": "^1.0.6",
"stylus": "*"
  1. If you’re on OS X or Linux, you can achieve the same action as the above by running the following command in the root of your project folder.
npm install --save socket.io

Adding Socket.IO to app.js

The next step is to add Socket.IO to app.js. You can achieve this by replacing the following code…

http.createServer(app).listen(app.get('port'), function(){
console.log('Express server listening on port ' + app.get('port'));


var serve = http.createServer(app);
var io = require('socket.io')(serve);
serve.listen(app.get('port'), function() {
console.log('Express server listening on port ' + app.get('port'));

This will capture the HTTP server in a variable called serve and pass that HTTP server so that the Socket.IO module can attach to it. The last code block takes the serve variable and executes the listen function which starts the HTTP server.

Logging a User Joining and Leaving

Ideally, we want to log a user joining the chatroom. The following code accomplishes that by hooking a callback function to be executed on every single connection event via WebSocket to our HTTP server. In the callback function, we call console.log to log that a user connected. We can add this code after we call serve.listen.

io.on('connection', function (socket) {
console.log('a user connected');

To do the same for when a user disconnects, we have to hook up the disconnect event for each socket. Add the following code inside after the console log of the previous code block.

socket.on('disconnect', function () {
console.log('user disconnected');

Finally, the code will look like this:

io.on('connection', function (socket) {
console.log('a user connected');
socket.on('disconnect', function () {
console.log('user disconnected');

Broadcasting a Message Received on the Chat Channel

Socket.IO gives us a function called emit to send events.
Any message received on the chat channel will be broadcast to all the other connections on this socket by calling emit with the broadcast flag in the callback.

socket.on('chat', function (msg) {
socket.broadcast.emit('chat', msg);

Finally, the code will look like this:

io.on('connection', function (socket) {
console.log('a user connected');
socket.on('disconnect', function () {
console.log('user disconnected');
socket.on('chat', function (msg) {
socket.broadcast.emit('chat', msg);

Saving Messages to a NoSQL Database

The chatroom should save chat messages to a simple data store. Normally, there are two ways to save to a database in Node; you can use a database-specific driver or you can use an ORM. In this tutorial, I will show you how to save the messages to MongoDB. Of course, you can use any other database you like, including SQL databases like PostgreSQL or MySQL.
You should make sure you have a MongoDB to connect to. You can use a third-party service to host your MongoDB such as MongoHQ or MongoLab. Take a look at this tutorial to see how you can create a MongoDB using the MongoLab Add-On in Azure. You can stop reading when you get to the section “Create the App”, just make sure to save the MONGOLAB_URI somewhere you can access easily later.
Once you have created a MongoDB and you have the MONGOLAB_URI for the database – Under Connection info that you have copied to your clipboard – you will want to ensure that the URI is available to the application. It is not best practice to add sensitive information such as this URI into your code or into a configuration file in your source code management tool. You can add the value to the Connection Strings list in the Configuration menu of your Azure Web application (such as in the tutorial you used) or you can add it to the App Setting list (with Name CUSTOMCONNSTR_MONGOLAB_URI). On your local machine, you can add it to the environment variables with the name CUSTOMCONNSTR_MONGOLAB_URI and value of the URI.
The next step is to add support for MongoDB to our project. You can do that by adding the following line to the dependencies object in package.json. Make sure to save your changes to the file.

"mongodb": "^1.4.10",

Right-click on the npm part of the project in the Solution Explorer to reveal the right-click context menu. Click “Install missing packages” from the content menu to install the MongoDB package so that it can be used as a module.
We want to import that module to be able to use the MongoDB client object in app.js. You can add the following lines of code after the first require('') function calls, such as on line 11.

var mongo = require('mongodb').MongoClient;

We want to connect to the database using the URI we have in the CUSTOMCONNSTR_MONGOLAB_URI environment variable. Once connected, we want to insert the chat message received in the socket connection.

mongo.connect(process.env.CUSTOMCONNSTR_MONGOLAB_URI, function (err, db) {
var collection = db.collection('chat messages');
collection.insert({ content: msg }, function(err, o) {
if (err) { console.warn(err.message); }
else { console.log("chat message inserted into db: " + msg); }

As you can see in the above code, we use the process.env object to get the environment variable value. We go into a collection in the database and we call the insert function with the content in an object.
Every message is now being saved into our MongoDB database.

Emitting the Last 10 Messages Received

Of course, we don’t want our users to feel lost once joining the chatroom, so we should make sure to send the last 10 messages received to the server so at the very least we can give them some context. To do that, we need to connect MongoDB. In this case, I am refraining from wrapping all of the socket code with one connection to the database so that I can still have the server working even if it loses the database connection.
We will also want to sort and limit my query to the last 10 messages, we will use the MongoDB generated _id as it contains a timestamp (although in more scalable situations, you will want to create a dedicated timestamp in the chat message) and we will call the limit function to limit the results to only 10 messages.
We will stream the results from MongoDB so that I can emit them as soon as possible to the chatroom as they arrive.

mongo.connect(process.env.CUSTOMCONNSTR_MONGOLAB_URI, function (err, db) {
var collection = db.collection('chat messages')
var stream = collection.find().sort({ _id : -1 }).limit(10).stream();
stream.on('data', function (chat) { socket.emit('chat', chat.content); });

The above code does the job as explained in the previous paragraphs.

Deploying to Azure

You can redeploy to Azure by following the past tutorials (such as part 2).


In conclusion, we have a chat system capable of broadcasting a message received via WebSockets to all other connected clients. The system saves the message to the database and retrieves the last 10 messages to give context to every new user who joins the chatroom.

Stay Tuned for Part 4!

Part 4 — Building a Chatroom UI with Bootstrap is here. You can stay up-to-date on this and other articles by following my twitter account.

More Learning for Node on Azure

For more in-depth learning on node, my course is available here on Microsoft Virtual Academy.
Or some shorter-format videos on similar node subjects:

This article is part of the web dev tech series from Microsoft. We’re excited to share Project Spartan and its new rendering engine with you. Get free virtual machines or test remotely on your Mac, iOS, Android, or Windows device at modern.IE.

Rami Sayar is a technical evangelist at Microsoft Canada focusing on web development (JavaScript, AngularJS, Node.js, HTML5, CSS3, D3.js, Backbone.js, Babylon.js), open data and open source technologies (Python, PHP, Java, Android, Linux, etc.) Read his blog or follow him on Twitter.


Shared via my feedly reader