Blog

Thoughts on software development, entrepreneurship, and technology

2026

Surprise, You Are Fired!

Surprise terminations — where someone is let go without ever having been told there was a problem — are almost always a failure of leadership, not just of the individual being fired. This post explores the red flags that lead to such situations, from poor communication and lack of awareness to, in rare cases, deliberate malice. It closes with a practical checklist for managers and team leads to ensure that performance issues are identified early, communicated clearly, and handled through a fair and documented process — so that no one is ever caught off guard

Surprise, You Are Fired!

2022

5 Characteristics of Vanity Metrics

Using vanity metrics is one sure way to destroy your startup. Vanity metrics can lead you to the wrong path. Being able to identify them and replace them is a must when running a business and especially so when running a startup. Here are some simple rules to help you identify vanity metrics.

5 Characteristics of Vanity Metrics

Essay-Driven Software Development

Today I am going to share a wild idea that actually worked wonders for my own software development efforts. I have been playing with writing essays for my dev work for several months now and I will argue that essays can become a valuable new tool in your toolkit and help you become a better developer as well as a sharper person

Essay-Driven Software Development

2019

Getting More Done with Deep Work

Cognitively demanding tasks like writing code require deep focus without distractions. If you are constantly interrupted, you are not going to be at your best. Deep work is what we need to be efficient and get more work done. I share my experience creating deep work environment no matter if you are a freelancer, working in a team or managing a team.

Getting More Done with Deep Work

YAML Build Pipeline For .NET Core with Azure DevOps

Forget the visual designer of Azure DevOps, in this tutorial I show how to create builds that are driven by YAML code that sits in your repository. Versioned build configurations and the ability to make build changes right from your code editor are just a few of the benefits of code-driven builds that no one wants to miss.

YAML Build Pipeline For .NET Core with Azure DevOps

2018

Domain Models with an Attitude

Domain models sit at the heart of business software systems and yet we often build models that are weak and devoid of any real value. This has severe consequences in the long run when we ultimately pay the price. We should instead create models that have substance and an attitude.

Domain Models with an Attitude

Improved Support for Value Objects with EF Core 2.2

Entity Framework Core 2.2 brings long-awaited improvements for supporting value objects. Value objects are the building blocks of a robust domain model but until now it was difficult to map them to your database using EF Core. I have prepared a sample project to illustrate how we can leverage the latest update to better support values objects.

Improved Support for Value Objects with EF Core 2.2