WSL2 on Windows 10 has some issues, but I still prefere it to run my docker containers locally. One of the problems which used to bug me a lot was the memory consumption by Vmmem process. The memory consumption goes though the roof. Even on 32GB machine you may run out of memory. I can’t fix the problem, but at least I know how to patch it up. Here is what I do:
In this post, I’m going to configure the continuous delivery process for Azure WebApp (Azure Function in this case, but that’s pretty much the same) with Octopus Deploy. To make it a little bit interesting I’m going to use Configuration-as-Code approach with a brand new Octopus provider for Terraform. Buckle up and let’s get started… Tools Terraform I’m going to need terraform on my machine: Octopus Deploy For this post, I’ve signed up for a free tier of Octopus Deploy SaaS offering.
GitHub Container Registry was introduced on the 1st of September 2020. It’s still in the Beta stage, so it’s rather not recommended to use it in production. However, it offers us free private storage for our Docker images, at least until the end of the Beta period. Private storage, free and unlimited download… looks like a good enough option for local development. In this post, I’m going to configure my local Kubernetes cluster to pull images from my GitHub Container Registry.
Today we’re going to set up a CI/CD GitHub Action with a Container Structure Test step which will help us to enforce the certain quality policies for the images which we build and ship. It’s a good idea to review your docker images. First of all, it can save time, disk space, and money. When our images are lean the build time is reduced as well as the pull and startup time.
Local development of C# Azure Functions on macOS is still a bit painful. Even the simple-ish logging might cause issues. Let’s assume that we have Azure Functions Core Tools installed and we have a basic function app with one TimerTrigger function created. With the default Run/Debug configuration We can compile and run our function Our function will start and log to console as expected. I wish all the functions were that simple, right?
My current project has reached the point where we have to manage our infrastructure in a more organized way rather than ad-hoc manual configurations. Current landscape We use a pretty standard setup for a .NET web application. We keep our code in one monorepo hosted in internal GitLab. We use TeamCity to build our code and we use Octopus Deploy to run our deployments to Azure. We have several environments (let’s call them feature, test, and prod) and they all are different.
In this post, I’m going to show how to marry SQL Operations Studio running on macOS with MS SQL Express running on Windows VM in Parallels. Even though SQL Ops Studio is not a fully mature project it’s already sufficient enough to perform simple and quick actions. Motivation Since I’m running most of the apps on a host macOS and I’m trying to keep my windows VM as lean and possible, I think SQL Ops Studio is a good choice for most of my SQL related tasks.
Well, probably you are not, but let me grumble a little bit anyway. Mockingbird knows how to mock. I’ve been working with various code bases throughout of my career, and there is one pattern which I see rather often. As you may have already guessed it’s the unit-tests and mocking I’m going to talk about here. To give it a nice catchy start, I’d claim here, that mocks should be used when you have to, but not when you can.
Recently I took latest changes from git, merged dev to my current branch and decided to run few integration tests. You know, just to be sure. What do I see? well… this. Could not load file or assembly ‘Microsoft.Data.Edm, Version=22.214.171.124, Culture=neutral, PublicKeyToken=... or one of its dependencies. That doesn’t sound right, though it’s typically easy to fix. The first reaction is to consolidate NuGet packages in my Solution. All the installed packages have same version 5.
I’ve been doing code reviews on a daily basis for several years for now. This activity is very different from what I do as a developer. Most of the time I try to understand, debug, fix or update existing code. Less often developers write new code from scratch. I think it’s safe to say that we all know how to work with a code written by another human. One might want to say that if we know how to work with other people’s code, we can be good at reading and understanding it during the code review process.