In my day-to-day work I spend quite a lot of time talking to engineers about AI coding agents. And one thing that keeps coming up is context engineering — people sort of know the term, but struggle to apply it in practice.
So you’ve set up content exclusion rules for your GitHub Copilot. Sensitive files — billing data, credentials, proprietary algorithms — are blocked from completions, chat, and code review. Great, you’re done, right?
Building custom agents for GitHub Copilot (or any other AI assistant for that matter) sounds fun until you hit the reality of testing them. Let me walk you through the challenges and show you a better way to develop and test your agents locally.
Throughout 2025, I’ve been experimenting with various ways to organize my development workflow with coding agents, trying to maximize the satisfaction of shipping a product while minimizing the human effort required to get things done.
Introduction Since GitHub released the Copilot usage metrics dashboard and API in public preview back in October, I’ve been spending a lot of time helping enterprise administrators understand Copilot’s impact using these metrics.
Common Misconceptions about GitHub Actions The other day, I was working with a customer who was planning a migration from JetBrains TeamCity to GitHub Actions. They expressed a concern that GitHub Actions does not work well in multi-repo setup; they were used to having build pipelines separate from the source code distributed across multiple repositories.
GitHub Container Registry is a great service. It’s free for public repositories and it’s integrated with GitHub Actions. Unfortunately, it’s not free for private packages. The free tier allows 1 GB of data transfer per month. What happens when you reach the limit depends on your payment profile. You will either be prevented from downloading your images or you’ll be charged…
I’ve spent Saturday evening working on a small project. I’ve built a .NET clone of tree utility. You know, the one that renders a nice tree view for a given directory.
A recent request from a customer caught my attention. They were trying to set up a CD pipeline that should deploy packages to production when there is a new tag pushed to the repository. At the same time, they wanted some control over the process so that not everyone can init a release by pushing a tag to the repository.
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 .
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.
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.
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.
I’ve changed a job last month and had to build up my dev environment from scratch again. While doing that I decided to write down some thoughts about it.
Frankly when I first saw that C# 7 will come with new local functions I thought that that’s just a nice and a compact way of defining local helpers. In fact, it’s much more interesting and useful feature. Today I’m going to talk about it in more details.
Last week my twitter feed exploded with lots of entries about Microsoft //Build 2016 conference. As it’s one of the most important events for .NET dev community MSFT prepared quite a few awesome announcements for us:
It’s very important to collect and track as much information as you can about your system. We have logging, monitoring, reports and analytics. All the systems that we build are not just packages which are deployed to the server/computer or device. Everything starts with an Issue Tracking system and, through the code, goes to production. The code and the process of coding both look like an…
I use different accounts and different computers to work with GitHub repositories, so sometimes I face the situation when I don’t have my SSH key generated for the current environment.
Hi, ReSharper is doing a great job when it comes to semantics of your code and control flow graph analysis. The special edge case I want to talk about is nullness analysis.
Hi, In the previous post I told you how to implement the Reactive API client with caching. Well, to prove that our code works we might want to have some unit tests.
There is a tendency in a .NET world to build asynchronous CPU-bound or I/O-related API. We also can see that some APIs support both asynchronous and synchronous versions for backward compatibility reasons.
Hi, Today I want to talk about the development of the api client library. Let’s say it is an imaginary GitHub RESTful API that returns user’s rating. To make this routine more interesting, we’ll add caching and mix it with Reactive Extensions. In fact, the article is a summary of my Windows Phone development experience, and the approach in question was taken in several applications with different…
In my previous post , I’ve described how to create your own Live Templates for ReSharper. Today I’m going to tell you how to share your ReSharper settings and Live Templates with your team.
Hi! As a .NET developer I’m enjoying using an intelligent plug-in for Visual Studio which is called ReSharper . It saves me time, provides me with static analysis and generates code for me.
I’m not sure if I can be more hipster, but now I have a blog which is hosted by GitHub Pages and served by Jekyll. Yeah, I had to install Python and Ruby to run it.
I’m an Amsterdam-based engineer. I build software, help companies to adopt DevOps practices and modern software development approaches. I love open source and contributing to the community.