Leaving Microsoft

Last month, I have decided to seek opportunities outside Microsoft after 4 years and left my job at the Azure Linux team. It was my first job after college.

It has been a great journey in which I had a chance to fulfill the dream I had on the day I joined: doing relevant open source work at Microsoft. Even though the first half of it was trying to get there, the rest has been an amazing ride, for which I am very thankful for. Read more →

Exciting news from go-linq!

I have some exciting news about go-linq, my first Go project ever: We have two new and excited maintainers. They added a number of really cool features to the project over the past few months and we finally have some stable releases. I can’t wait more to talk about all these. Read more →

Docker Logs API Format Explained

I recently wrote on a log collector that used Docker’s Container Logs API to subscribe output streams of containers. Most people don’t go this way, because they use well known logging drivers so it’s hard to find any programs consuming this API.

The stream format of this endpoint is not documented anywhere and it is rather cryptic. Docker API clients, such as written for Go, or one I wrote myself for .NET do not help you parse ... Read more →

Azure Container Registry is here!

Last month, Azure Container Registry has gone to public preview. Finally you can start uploading your container images to Azure! This fills an important gap in the containerized application lifecycle in the Azure ecosystem. It is also the first production service I participated in building and delivering at Microsoft.

I’d like to show how easy it is to get started with Azure Container Registry in the CLI and how smoothly it integrates with the Azure ecosystem. If you lose ... Read more →

Testing Go HTTP logic with go-httpbin

If you ever found yourself writing a piece of code doing a HTTP POST request and then trying to test it with a real HTTP server, you might have heard of httpbin.org. It offers HTTP endpoints that help you test your client logic, by echoing the headers and other data you sent to it, or by returning a response with the status code you want, among many other things.

Bad thing about httpbin.org is, you don’t really ... Read more →

govvv – Versioning for Go binaries

Go language is getting increasingly popular when it comes to writing microservices and commmand-line tools. It easily lets you compile a complicated application into a single binary, it can cross-compile from any OS to any other OS the Go compiler supports.

Go compiler has this nice LDFLAGS trick to assign values to the variables in the program at the compile time. So if you have a Version variable in your program you can compile it as:

 $ go build -ldflags "-X ...
Read more →

State of Cloud Instance Provisioning

I have been craving to write about this since this is what I have been up to lately at work. I spent quite some time investigating the state of instance provisioning on each cloud provider and I thought I could share these here.

If you are dealing with deploying instances (a.k.a Virtual Machines or VMs) to public cloud (e.g. AWS, Azure), then you might be wondering what your instance goes through before you can start using it ... Read more →

Docker.DotNet is Graduating!

Nearly two years ago I published my side project Docker.DotNet —an open source C#/.NET client library for the Docker Remote API. Ever since, many teams and critical products at Microsoft as well as outside Microsoft started to depend on this library.

I am happy to announce that Docker.DotNet is now an official Microsoft project. Members of the Windows containers team will be the new maintainers of the project. The project will remain open source and it will ... Read more →