Moving to Azure Functions and GitHub Pages

I created couple years ago when I got tired of googling what the right custom format string for DateTime.ToString() method is. It used to be a simple ASP.NET site and I hosted it as an Azure Web App. The problem is, hosting it on Azure wasn’t cheap. does not get much traffic, there is minimal amount of logic there but because I hosted it on a single B1 Basic instance I used to spend ~$55 a month. Sure, I can pack multiple other websites and applications on the same instance and that money is something I get as part of my MSDN subscription anyway, but still, it felt wrong. That’s why today I updated it to use GitHub pages to serve static content and Azure Functions to provide required API. New cost of running the site: $0 (yes, zero!).

Read More

Programmatically creating a Pull Request against Visual Studio Team Services

There are certain scenarios, especially when developing software in environment which uses multiple repositories, where certain changes in a single git repository should be followed by another set of changes in another repository or repositories. Automating these tasks can make Continuous Integration pipeline and entire development system more efficient and let developers focus on writing code instead of manually dealing with multi-repository orchestration. Let’s see how that can be done using custom build scripts in Visual Studio Team Services.

Read More

Adding Matt operator to Roslyn - Binder

Following on my previous post where I showed how to add a new operator to C# and Roslyn today I’m going to describe how to make further progress on implementing matt operator: [email protected]. I already extender the Lexer and Parser to understand that new language construct. The next step is to make Binder aware of our new operator, to make sure it can only be used in the right places and with the right types. We also need to teach the compiler that <int> [email protected] <int> returns an int.

Read More

Adding Matt operator to Roslyn - Syntax, Lexer and Parser

I read a very interesting blog post by Matt Warren yesterday morning: Adding a new Bytecode Instruction to the CLR. It was very eye-opening to see how easy it is to add a new instruction to .NET CLR. In his blogpost Matt started a challange about adding support for his new matt operator into C# (Roslyn):

The other reason for naming it matt is that I’d really like someone to make a version of the C# (Roslyn) compiler that allows you to write code like this:

Console.WriteLine("{0} [email protected] {1} = {2}", 1, 7, 1 m@ 7)); // prints '1 [email protected] 7 = 7'

I definitely want the [email protected] operator to be a thing (pronounced ‘matt’, not ‘m-at’), maybe the other ‘Matt Warren’ who works at Microsoft on the C# Language Design Team can help out!! Seriously though, if anyone reading this would like to write a similar blog post, showing how you’d add the [email protected] operator to the Roslyn compiler, please let me know I’d love to read it.

Because I always wanted to learn more about Roslyn I decided to explore it a little bit and see how far I can get. I invite you to join me on that journey.

Read More