About this site

This site is my "Glossy Brochure" for my freelance business.

Here I write about my experiences and thoughts about freelancing and my mindset as a high value professional.

I have a separate blog on The Last Viking LTD where I discuss code and technical stuff.

Privacy

This site does not track you. It's safe and works fine without JavaScript.

Credits

All pictures are either taken by me or friends of mine, or they are released with permissive licenses for republishing and changes (Wikipedia Commons) or generated by AI from my prompts.

About me

I am a Norwegian expat, currently living in a small village in Bulgaria with my 8 dogs, my motorcycle and my computers.

Over the years I have worked with many programming languages. My preferred programming language since 1996 is C++. The code I write for my own projects usually runs on Linux, Windows and macOS.

Unlike many software developers, I have never had any desire to "move on" in my career and become a manager. I guess I love solving problems and writing code too much. I have worked in tiny startups, medium size startups, and for two years as a senior C++ developer in a giant software company. I have declined senior staff positions in two of the largest software / IT companies in the world. I treasure my personal and professional freedom more.

I am not a "Full Stack" or "Front End" or "Back End" developer. I have a wide surface of experience that makes it hard to put a simple label on it. I know how to make web sites, of course. I also know how to make native GUI applications for Linux, Windows, macOS, Android and iOS. I am best known for some of the servers and libraries I have written (most for the War FTP Daemon I guess). I have spent months optimizing a new thread-pool written in portable C++ for a server application used by almost all medium to large companies in the world. I have written - and optimized - C++ database libraries, using sqlite, Microsoft SQL Server, MySQL, and Postgres. Even Oracle (although I prefer not to talk about that). I have written hundreds of command-line programs.

Many companies are still embracing micro-services and REST. I am familiar with both. That is; splitting complex functionality into micro-services (which is hard to get right), and making components talk to each others. The talking part with REST I have used for quite some time - both on the client end and at the server side. I have also played with Google's more efficient alternative, gRPC. Before that I used Zeroc's ICE and Corba. Back in the 1990s I used Sun's legacy RPC protocol over UDP for client/server communication.

I have dived deep into Kubernetes. Beside designing, optimizing, enhancing and maintaining cloud and edge micro-services and Large Data distributed applications, I have also worked extensively on deployments and deployment tooling.

AI

The hype of today is AI. Many of my previous "microservices expert" or "distributed systems expert" colleagues are now "AI experts", according to their LinkedIn profiles ;)

I don't consider myself an AI expert, although I have had a deep interest in AI for decades. The idea (and fear) of AI systems was what triggered my initial interest in computers in the 1980s. I learned Prolog, the AI programming language of that era, to see how I could use it to solve complex problems. I soon realized that Prolog and "AI" were hyped up and could not deliver anything useful for me in the foreseeable future. Then, decades later, in the 2010s, I found a local AI user group in Sofia. At the time, people in the group were experimenting with TensorFlow, a free, open-source software library primarily used for Machine Learning and Artificial Intelligence. At the same time, my best friend started working as a manager in an AI startup in Sofia. I visited him as often as I could (I was busy working as a C++ developer), and spent time discussing AI and related technology with the startup's data scientists and engineers. Fascinating stuff, but still immature.

When ChatGPT was released, I was immediately on board as a user. Since then, I have used AI in my daily work for software development, and in my private life to research ideas and explore exotic subjects that were out of reach with traditional search engines. Today, I experiment with local models on my workstation, and in my CI pipelines. I have OpenClaw installed on it's own isolated machine - running various scheduled jobs and doing deep research.

Performance, Efficiency & Reliability

I have spent much of my life making software do more with less: less memory, less CPU time and less storage.

From the moment I put my fingers on my first computer, its technology became a deep fascination. Today, I reason about CPU caches, branch prediction, memory layouts, threads, databases, and distributed services much like a cook reasons about their ingredients.

Working within 64 KB memory segments

Back when I developed software for QNX, memory constraints were very real. In the 16-bit environment, individual memory segments were limited to 64 KB. A few times, I ended up adding assembly language to my C code to reduce the binary size enough to fit in that one last feature.

I modified a popular open-source text editor that struggled with larger documents, implementing a form of virtual memory management inside the application. The editor kept line metadata and references in memory, while the actual text was managed through a cache using an LRU (Least Recently Used) strategy. This allowed the editor to work with documents that would otherwise exhaust its available memory.

Multiprocessor programming before multicore was mainstream

When developing the War FTP Daemon in the late 1990s, I invested in a dual-processor server motherboard to develop and test the software on real multiprocessor hardware. This made my code reliable on multiprocessor servers at a time when most developer workstations had a single CPU - and no ability to test for bugs caused by parallel execution.

Finding the real bottlenecks

Over the years, I have instrumented and optimized many C++ applications, libraries, and backend services. My approach is to measure where time and resources are actually spent, identify the underlying cause, make targeted improvements, and verify the results.

In distributed systems, I have also implemented instrumentation to trace requests across cooperating microservices and data centers, making it possible to identify bottlenecks that would otherwise be invisible when examining individual services.

I often write targeted tools to stress-test specific applications.

Thread pools and CPU efficiency at VMware

At VMware, I spent months working on performance improvements to a new internal C++ thread pool in vCenter.

I also optimized memory layouts in a database driver, reducing unnecessary structure padding where a compact representation was beneficial. Packing frequently accessed data into fewer CPU cache lines can reduce memory traffic and improve efficiency.

Doubling database performance — twice

While working on a globally distributed NoSQL database, I spent considerable time investigating crashes, stability problems, and performance bottlenecks. I improved logging and instrumentation to help identify failures, fixed underlying reliability issues, and twice achieved approximately a 2× performance improvement in the database engine by identifying and correcting flaws (not mine!) in the existing code.

Before leaving the company, I also proposed an architectural optimization with the potential to reduce storage requirements by almost 50% and CPU usage by approximately 30%. Those last figures were estimates for a proposed improvement, not measured production results.

Good performance is rarely about fixing one bottleneck. It's methodical work where you often need to understand how various components or modules in an application - or even on the machine itself - negatively affect each other's performance.

Besides being a senior software architect / developer, I have been:

  • IT consultant
  • IT Security consultant
  • IT technician (that's where it all started)
  • Sales manager, hardware, software and services (I had an insane sales-score, but I was not happy)
  • Journalist (at two local radios in Norway)
  • Radio technician (at three local radios in Norway)
  • Manager for a team of software developers (I sucked at it!)
  • Flipping burgers at KFC
  • Bouncer at two night clubs in Norway
  • Disc Jockey
  • Manager for a night club
  • Preschool teacher
  • Assistant at a large institution for mentally disabled people

AIs I use frequently

  • OpenClaw (Installed locally on it's own isolated physical server)
  • ChatGPT
  • Gemini
  • GitHub Copilot
  • DeepSeek
  • Qwen
  • Various smaller models I run locally

Programming languages I am actively using:

  • C++23, C++ 20, C++ 17
  • Rust
  • Python
  • JavaScript
  • Kotlin

Programming languages I have used professionally over the past years:

  • C++ 03, C++11, C++14
  • C
  • C# (.net Core)
  • Swift
  • Objective-C
  • Java (I hate it!)
  • Ruby
  • PHP (You will find my name in the C source code for one of the standard libraries)
  • Lua

Operating systems I have written software for

  • Linux (since 1997)
  • macOS
  • Windows (from 3.0 to 11)
  • Android
  • iOS
  • QNX (3 and 4)
  • SCO Unix
  • Interactive Unix
  • Minix
  • MS-DOS
  • Digital VAX
  • CP/M

C++ technologies and libraries I use a lot today

  • Modern C++ 20, 23
  • Boost libraries, Asio
  • Qt (mostly with QML)
  • CMake
  • g++
  • clang
  • msvc

Other programs / technologies I use often these days

  • GitHub Actions for CI
  • Docker, docker-compose
  • Jenkins
  • Ansible
  • ssh
  • nginx
  • bash
  • Qt Creator
  • vim
  • Android Studio
  • Wireshark (They used to use my adns library port for their Windows version)

Some things I have designed and implemented

2026

  • Added a MCP server to NextApp.
  • Developed and released vidpp, a local video post-processing tool for turning simple recordings into videos ready for social media (still in an early stage).
  • Developed and released shared, a server-less peer-to-peer application for securely transferring clipboard text and files between devices that do not fully trust each other.
  • Developed and released smtool, a native content strategy and publishing workflow application built with Qt. It also have a zero friction Android app to capture and transcribe ideas that I use as a general tool to capture ideas. Blog series about this project.
  • Developed and released OneRSS, a self-hosted RSS reader with native desktop and Android clients.
  • Developed a backend server for recurring payments for commercial products from The Last Viking LTD. Integrated it with Stripe and the NextApp backend.
  • Developed and released lgx, a high-performance log explorer for developers and DevOps engineers. (Still an early Beta)
  • Developed and released deldupes, an open-source Linux CLI tool written in Rust that helps users find and safely remove duplicate files.

2025

  • Started QVokalWriter - an open-source desktop app written in C++20/Qt for recording and transcribing text using local AI models. After a transcript is available, the app will allow post-processing: translating, cleaning up, and preparing the text for various use cases. The purpose is to enable direct voice-to-blog | email | reports | - and posting on various social media platforms. It can also be a chat bot with local AI models (like lmstudio does), but without Atom and without any telemetry. Privacy matters.
  • Vibe coded and released Settled - a 4 in one wellness app for Android: Mindful Ping, Sonic Relaxation, Breathwork and Meditation
  • Started SafeKeeping - A simple C++ library for securely storing secrets using the operating system's or desktop manager's vault.
  • Started OpenValify - A C++ library that validates TLS certs for a list of domain names. I need this now that Let's Encrypt discontinue sending emails about expiring X509 certificates

2024

  • Started Next-app - a GTD application / Personal Organizer for desktop and mobile. It use Qt QML on the client side and just standard C++20 in the server. Communication between the client and the server is handled by gRPC.
  • Started mysqlpool-cpp - a lightweight async connection-pool library in C++20, built on top of Boost.MySQL.

2023

  • Released mkres - a utility to embed files in C++ projects. Supports embedding the contents of directories, and compression of the embedded content.
  • Released a smart asynchronous object-cache in C++ as the first item in the Glad project.
  • Started The Glad Project. My intention is to create and implement a handful of useful algorithms in C++ 20.
  • Re-booted my open source DNS server, nsblast, written in "modern" C++, to have something interesting and mildly complex to work on while I recover from the burn-out.
  • Wrote a generic HTTP server library yahat-cpp, primarily to handle API/REST requests in servers written in C++ (like nsblast).

2022

  • Worked almost exclusively on a commercial, globally distributed Active/Active SAAS database running on fat Cloud VM's.
  • Had a really severe work burn-out and quit commercial work in October.

2021

  • k8deployer - A simple to use alternative to Helm, written in C++. Can deploy to many Kubernetes clusters in parallel. Aimed primarily at developers.
  • purech - Cluster and replication validation for global deployments of Apache Pulsar.
  • asio-async-model-perftest - Performance test to measure the relative performance between Boost Asio's different async handlers.
  • pulsar-test-consumer-scale - Trivial test for Apache Pulsar to test how many subscribers it can handle on one stream.

2020

2019

  • Performance optimizations, stabilization for a globally distributed Big Data database.
  • Twitter like Android app. Simple Backend in node.js. Internal Proof Of Concept using some features of the distributed database.

2018

  • Ethereum/Bitcoin wallet library in C++ for Linux, Android, and iOS. Used in a commercial mobile app that provided crypto payments and a crypto wallet. For cryptography, the library used OpenSSL.
  • nginx-swarm-proxy - Docker container to use stock Nginx as an adaptable front-end for Docker Swarm services
  • vUberdns - Simple, ultrafast DNS server.
  • f-crm - Customer Relations Management for Freelancers and Individual Contractors
  • whid - "What Have I Done" - Time Tracker for Freelancers and Individual Contractors

2017

  • stbl (the software that I use to build this site)

2016

  • restc-cpp - A small and very fast REST HTTP[S] client library in C++14

2015

  • shinysocks - A small, ultra-fast SOCKS proxy server.
  • DarkSpeak - IM client over the TOR network for Linux, Windows and macOS
  • SmsRelay - Android app that forwards SMS messages to XMPP

Older

  • FTP Server (War FTP Daemon)
  • vUbercool - a http/dns server to host 1 billion websites on a laptop
  • HTMGen32 - The software I used to build my homepages in 1997
  • WarCMS - Full featured CMS / Social network application in PHP - later with a core engine in C++, interacting with the PHP code over object oriented RPC (ICE).
  • VikingGTD - Simple "Getting Things Done" App for Android
  • WarLib - A tiny C++ library providing some basic building blocks to modern C++ applications; like logging, threadpool, tasks, etc.
  • wfde - A Full featured modern C++ library implementing the server side FTP protocol (and HTTP).
  • Older WarLib (Large legacy C++ library, solving many of the same problems as the ACE library - plus more)
  • Numerous small utilities and libraries for Linux and Windows
  • A commercial APN (Apple Push) gateway / microservice
  • A commercial VoIP library built on Sofia SIP and Google's VoiceEngine (part of WebRTC)
  • Video Conferencing client library and UI for Windows in C++ (using a commercial low-level video library for C).
  • Commercial firewall (based on Linux and IP Tables)
  • Commercial instance manager for Amazon AWS (Cloud Orchestration - before I ever knew that phrase)
  • NNTP server (just for fun)
  • NFS server (I needed it)
  • Basic interpreter (just for fun)
  • Spread Sheet (using curses from lack of a windowing system - just for fun)
  • Website for a Norwegian energy provider - with aggregated data from hundred of thousands of on-line power meters, broken down to house holds, buildings, campus, city, corporation or enterprise. It provided customers with the ability to generate reports from any time-period and any selection of facilities - usually - in seconds. (This was before Big Data came on the radar - I did it using MySQL, C++, PHP and some hard thinking)
  • Shipyards management software (an overall system that planned and scheduled repairs of ships, including naval ships, and integrated deeply with the organizations other IT systems)
  • Truck yard management software (for a while used by most of the Volvo truck yards in Norway)
  • Network over serial gateway (to connect a Token Ring based QNX network with Unix machines on a TCP/IP network)
  • DaRe - Database replication utility
  • ssft- Simple and secure file transfers over SSL. (Like scp, but designed to be more constrained and secure)
  • WarSetup - Windows installer. Initially written because Microsoft's setup library had too many bugs, later rewritten to use WIX conveniently with advanced options from a very simple GUI interface.
  • War Support - A software support site written in PHP with issue tracking, version tracking, downloads, etc.
  • Full featured Word Processor (network distributed architecture for QNX, Interactive Unix and SCO Unix, running on terminal, X/Motif and the QNX graphical UI (at that time)). (We were actually two developers on this project, so I can only claim 50% credit).

Internet protocols I have implemented from scratch

  • FTP (servers and clients)
  • NFS (server)
  • HTTP (servers and clients)
  • NNTP (server)
  • SMTP (clients)
  • POP3 (client)
  • DNS (server)
  • SOCKS (server and clients)
  • REST (not really a RFC thing but... - I made a C++ library for it anyway)
  • SNMP (client with a nice GUI browser interface)

General Internet servers I have implemented singlehandedly from scratch

  • FTP server
  • HTTP Server
  • DNS server
  • NFS server
  • NNTP (usenet) server
  • SOCKS server

Internet / telecom protocols have I worked with at a low level

  • SIP
  • RTP
  • MM4
  • SMPP

A handful of other technologies I have used over the years

  • ArangoDB
  • Apache Pulsar
  • Docker Swarm
  • Minikube
  • MySQL
  • Postgres
  • sqlite
  • Microsoft SQL Server
  • Corba
  • Zeroc ICE
  • PHP Modules
  • Apache Modules
  • IIS Modules
  • Scons
  • git, subversion, cvs, rcs
  • tomcat
  • apache web server
  • nginx (with and without lua)
  • ACE C++ libraries (I never liked it)
  • MFC, WTL, wxWidgets
  • inn (news server)
  • bind (dns server)
  • Maven
  • protobuf
  • gRPC
  • vmWare, libvirt, Virtual Box, vserver, lxc

Some of the things I have ported between operating systems

  • ONC / Sun RPC (I ported the command-line code generator and the binary packing/unpacking libraries to Windows)
  • adns (to windows, implementing epoll() for Windows in the process)
  • openssh (to windows - long before cygwin and putty came along)
  • zmodem (to QNX)
  • kermit (to QNX)

What people say about me

I've never seen so much passion for programming in one person until I met you :) Калин Благоев, Senior Software Developer