So I’ve been working on a new project as of late. And by as of late, I mean for the past month.
This is roomie. roomie is a social portal built to help room mates communicate and manage everything about the space they share together. Things like Money (bills), Inventory (groceries), Calendar (parties), etc.
And it’s quite pretty.
roomie also represents my first foray into the world of the Microsoft web stack; Azure, ASP.Net, MSSQL, Entity Framework, etc. It was a rough start, but I have to say the effort paid off. This platform is fantastic. Web API makes it easy to create a nice RESTful API for your web-app. Entity Framework makes connecting to SQL a breeze and manipulating objects easy - everything operates as if you’re just putting your objects into one big magic storage bin that’ll organize them however you see fit without actually having to write SQL and convert to object instances yourself.
Then there’s Visual Studio, providing an awesome IDE with Intellisense, automatic LESS and TypeScript compilation (and linting), built-in database tools, and all that other amazing stuff you’re used to. Visual Studio Online (the rebranded TFS Service) is also tightly integrated (with Git support nonetheless). With VSO, I can simply submit a commit to my hosted Visual Studio Git repository. Once I’ve committed code, VSO will build my project, run my unit tests to check for failure, then deploy the project to my Azure instances automatically. Upon failure, it will automatically file a bug in the backlog assigned to the person who committed the faulty code. MAGICAL!!
The real star of the show here, however, is SignalR. SignalR is a framework to make it super easy for developers to integrate real-time communications between their web apps and client browsers / apps. And it does a fantastic job. Implementing SignalR only requires you to create a ‘Hub’ on the server with a bunch of methods, and a Hub representation on the client with its own methods. Now you simply call the connect function, and suddenly you can call the server methods from the client, and the client methods from the server. All the details of the connection are abstracted away. It’s fantastic! Obviously I’ve used it in roomie to deliver real-time notifications for things like chat messages to clients. And not only does it work well on browsers, but there are also libraries available for .Net (Windows and Windows Phone), Java (Android), and Objective-C (Mac and iOS). This makes it a no brainer for any kind of real-time application.
It’s great to see Microsoft embracing all the platforms in both their ecosystem through Office, OneDrive, Xbox Music, etc. but also through their development tools. Hopefully their partnership with Xamarin will only further this pattern.