This saturday I had the opportunity to give a talk at Office 365 Saturday Denmark 2016, on Continuous Deployment with Visual Studio Team Services and Azure. Even though it was a last minute session I put together as a result of another speaker having cancelled due to illness I think it turned out great. Lot’s of good questions and interest!
By request, the slides are available for download. Feel free to reach out if you have any questions!
... ➦In this post I have gathered ten useful features of Visual Studio Team Services. Many of these are not new features, but you had to dig a little to find out they were there. In the recent months the UI has received several improvements and some of these are now more visible, without having to dive deep in the collection administration. There are also a couple of recent additions that should make your life easier!
... ➦I am starting to find myself spend more and more time in Visual Studio Code. Instead of going to VSTS project sites to view status of my builds, I decided to put it directly into VS Code as an extension. The extension puts a status icon in the status bar which shows the status of a selected build definition. You can find the “Visual Studio Team Services Build Status” extension directly in VS Code or the market place https://github.com/jlandersen/vscode-vsts-build-status which also shows how to configure the extension with your VSTS account.
... ➦Recently, Visual Studio Team Services (VSTS) opened up the ability to make extensions with distribution through the Visual Studio Marketplace (https://marketplace.visualstudio.com). The marketplace and API is currently in preview, but I will show how easy it is to create an extension with some of the currently available features.
Extensions are made using HTML, CSS and JavaScript. You may also choose to go with TypeScript. The official documentation is also heavy on using TypeScript, so help is available either way. The official tool for packaging and managing extensions is written using Node.js and distributed via NPM. Why is all of this great? It means you can create extensions regardless of what platform you are sitting on (OS X, Windows, Linux).
... ➦npm install -g for .NET? it’s here!
There is a (somewhat) hidden gem in the new .NET world with DNVM, DNX and DNU - creating and distributing global tools with ease. Global meaning the application is always available through one or more commands in the command prompt (basically being registered in the PATH system variable). In the Node.js community this has been a central part, allowing you to install useful tools using the Node Package Manager. “Secret Manager”, part of ASP.NET 5, is an example of such a tool in the .NET world - but it is also one of the only examples currently available. Here is how simple it is to get started with it:
... ➦In this article we will look at an example of how to build docker images and pushing to a Docker registry using the new cross-platform Visual Studio Online Build. As the running example we will take a small Node.js application, push it to a Git repository and have VSO build take over from there.
The goal is to show how to build a docker image and push it to Docker Hub with a Linux build agent. A different machine acting as a web server can then spin up a container from the image a few seconds after.
... ➦Yesterday I had the opportunity to give a talk on the new build system in Visual Studio Online at GOTO Copenhagen. Great conference overall and good questions afterwards! The slides are available for download.
When developing API’s for external parties to consume, sometimes the need for request throttling becomes relevant. In this article you’ll see a simple approach to create such a middleware component for Web API in ASP.NET 5, based on Redis.
You can browse or download the complete sample on GitHub at: https://github.com/jlandersen/web-api-redis-request-throttling.
The general case usually is that you have identifiable consumers of your API. The consumers are usually identified based on an access key (or something equivalent) supplied with each request. Since you will have to check each incoming request up against a history of previous requests, the mechanism should almost always be implemented using in-memory caching or a dedicated caching system, such as memcached or Redis. Before implementing a request throttling mechanism in your API, that rates each of these consumers individually, you should consider how ambitious the mechanism should be. You can choose from a wide range of different parameters to base the rating on. Some examples are:
... ➦Running unit tests as part of the build process with Visual Studio Online requires no effort if you use Visual Studio Unit Testing Framework. But really, not a lot use that these days. I have done a few presentations on using the build services in Visual Studio Online for Continuous Integration. Unfortunately it seems common that it is a bit troublesome to run either xUnit or NUnit tests as part of the build process. Here are the few steps that enables either xUnit or NUnit with VSO Build (the new version!).
... ➦I have seen different approaches to using the device camera with Xamarin Forms. Here’s an example of how this might be implemented, with an async interface for easy async-await consumption in the shared Xamarin Forms part of the application. I will show the implementation details of the shared code and iOS version. The full example is available on https://github.com/jlandersen/xamarin-forms-camera that includes Windows Phone and Android parts as well. If you are unfamiliar with accessing native features of the different platforms, check out the official documentation.
... ➦