TWIL: September 13, 2021

This week I’m publishing with a one day delay because there was so much stuff to go through. It was a pretty intense learning week, and I tried to summarize it in this week’s post. I hope you find it useful.


.NET Rocks

Episode 1755: Building Text-Grab with Joseph Finney
Learning by doing! Carl and Richard talk to Joseph Finney about his experiences building Text-Grab, a clever utility for extracting text from graphics using OCR built into Windows. Joe talks about how the ‘search-with-screenshot’ built into Windows 10 depends on Bing, but there is an OCR library inside Windows – why go to the cloud? The conversation dives into the challenges of handling multiple screens, screen resolutions, DPIs, language packs, and more… what seems like a simple tool is never that simple. And, as it turns out, building the app is the easy part: Now, how do you get it into the Microsoft Store? That leads to both Richard and Carl installing the app, showing that purchasing and installing an app is much harder than it needs to be!

Episode 1756: Developing for Microsoft 365 with Dan Wahlin
Does it make sense to use .NET with Microsoft 365 (was Office 365)? Carl and Richard talk to Dan Wahlin, now in his new role as a Cloud Developer Advocate, about the power that exists within the Microsoft 365 APIs and what you can do with them with .NET. Dan talks about how Microsoft 365 knows a lot about what’s going on in your organization, and how you as a developer can take advantage of the existing file handling, messaging, and interconnects to simplify your projects and make them more visible to users. The conversation explores moving existing brownfield applications into the Microsoft 365 realm, and what code you should be writing, or perhaps turning over to Azure Logic Apps or Power Automate!


Practical API Design at Netflix, Part 1: Using Protobuf FieldMask
At Netflix, we heavily use gRPC for the purpose of backend to backend communication. When we process a request it is often beneficial to know which fields the caller is interested in and which ones they ignore. Some response fields can be expensive to compute, some fields can require remote calls to other services. Remote calls are never free; they impose extra latency, increase probability of an error, and consume network bandwidth. How can we understand which fields the caller doesn’t need to be supplied in the response, so we can avoid making unnecessary computations and remove calls?

Containers & Kubernetes

This week I participated in a Containers OpenHack prepared by Microsoft. It was a 3-day very hands-on event build around a set of challenges the participants would have to solve as 4-element teams. Needless to say, most of my learning this week was around these topics.


First thing I went through was reviewing some of the basics of containers with Docker, namely:

Azure Container Registry

Next, I moved on to Azure Container Registry, a managed private Docker registry service in the cloud


After Docker and ACR, let’s learn about Kubernetes, the container orchestration platform:

Azure Kubernetes Service (AKS)

Moving on to Azure Kubernetes Service, a managed Kubernetes service in Azure:

Monitoring Microservices

Complex architectures such as microservices are very dependent on monitoring. Here are a few pointers on how to implement monitoring in AKS:

Cool Stuff

Upgrade your Windows 10 Linux adventures to WSL2, here’s how
The latest version of the Windows Subsystem for Linux is a significant upgrade, but also one that takes a few steps to set up. Microsoft dropped plenty of jaws when it launched the Windows Subsystem for Linux, a way to run actual Linux inside Windows 10 without the need to set up a virtual machine. The project has seen a ton of support, and WSL2 is the latest and greatest. It takes things a little further and adds yet more awesomeness to the Linux experience on Windows 10. If you haven’t yet checked it out, here’s how to get started.

Have an awesome week and keep learning!

Photo by BAILEY MAHON on Unsplash