Setup macOS for a developer coming from Windows

I had the opportunity to get a new development machine and it had to be a laptop. I’ve used solely Windows machines in the past and was always annoyed to see my peers, using a Mac, have awesome battery life and could have their laptop on their lap or table without melting the surface and never have fans turning on when doing simple stuff. That’s a couple of reasons I chose to get a Macbook Pro myself this time. Read more →

Publish link archive from Linkwarden with Python

There’s a new feature over here, my weekly links archive. Every week a page will be added automatically based on content I have read and found interesting to share. I’m using a self-hosted Linkwarden instance to collect pages and links for a variety of topics. For the purpose of this weekly links archive I have created a new tag called Newsletter which I use to fetch the weekly links to share with all of you. Read more →

Use Tailscale Github Action to connect to your home network

I have been a long time user of Tailscale, a very easy to use VPN mesh system, to connect to my home network when I’m not at home. There are other solutions, like NordVPN Meshnet, but I learned about Tailscale first. It’s especially useful when using your local DNS (PiHole) and taking advantage of the sites blocked by it. Currently, I’m in the process of self-hosting services a bit more. Relying in (free) cloud services that might be turned on/off at a moment notice or removing features I use is something I’ve seen happen a bit too much lately. Read more →

How I used Semantic Kernel Agents and Python to tune my resume

In an earlier post I wrote about using Semantic Kernel to create an Agentic AI solution, all using C#. Of course, similar flows can be created with Python. To try this, I’ve created a sample solution to update a resume so it’s more likely to pass the ATS requirements used by various companies nowadays. My sample is heavilly inspired by Gian Paolo Santopaolo his CV-Pilot repository, which I was not able to use due to the CrewAI tooling phoning home and my DNS (PiHole) blocking those requests. Read more →

Create an Agentic AI solution with Semantic Kernel

We are finally at a state in the GenAI-space where we can create agentic AI solutions with ease. I’m most familiar with Semantic Kernel, when working with LLMs, and this library works great for creating these solutions. In a nutshell, what you need to do is create a group chat, add your agents to it, and then let them work together to solve a problem. Do keep in mind, at the time of this writing, version 1. Read more →

Add MCP Server to search repository content using VS Code

I’m very happy GitHub Copilot exists and lately with the Agent-mode it’s even better. It’s making sure I can focus on the relevant pieces of my solutions and not have to worry too much about the plumbing part. The models it’s using are quite powerful and contains a lot of (old) data. When using new libraries or versions of already existing libraries, the LLMs used under the hood often don’t provide useful suggestions or edits. Read more →

Check if NuGet packages are publicly available

When creating solutions for a company, you often use an internal package feed. There might come a time when you need to provide the source code to an external party or you want to make the solution open source. If this has ever happened to you, you know one of the first things to validate if all dependencies (NuGet packages) are available to the public. Especially in large corporations it’s easy to use some platform packages used throughout the company but should not be shared with the public. Read more →

Automate the creation of a NOTICE.md file

When working on a project that’s being distributed you are often required to create a NOTICE file giving the necessary attribution to work you rely on. As written on the Apache site on this topic: If the Work includes a “NOTICE” text file as part of its distribution, then any Derivative Works that You distribute must include a readable copy of the attribution notices contained within such NOTICE file, excluding those notices that do not pertain to any part of the Derivative Works, in at least one of the following places: within a NOTICE text file distributed as part of the Derivative Works; within the Source form or documentation, if provided along with the Derivative Works; or, within a display generated by the Derivative Works, if and wherever such third-party notices normally appear. Read more →

Twenty years in the business

It has been twenty years already! Twenty years since I started my professional career. Of course, I had some side-gigs during college and a couple of internships, but I’m not counting those. After graduating in January 2005, my first real job started on February 1st, 2005, as a software engineer at Ordina, a large consultancy company in the Netherlands. Over the years I’ve had the privilege to work with quite a few awesome persons, work on great projects and doing stuff I always dreamed of. Read more →

Create an SDK using OpenAPI specs

It’s not something a lot of people need to do on a regular basis, but when you do, you don’t want to spend a lot of time doing it. I’m referring to the process of “create an SDK for your APIs”. When your service is exposing endpoints for your consumers to use, it’s easy to refer them to using raw endpoints and let them figure out how to deal with it based on the Open API specifications (formerly known as Swagger) provided. Read more →