Before we dive in, let’s define what does it mean to catch an exception. Many, if not all, programming languages have notion of an exception that terminates program execution flow; and most of languages have mechanism to handle exceptions, for example try-catch-finally language construct. Assuming familiarity with try-catch-finally we are going to focus on when […]
Comment or Not
We (developers) read code way more often than we write it, whether it’s someone’s else code or our own code written a while ago. Sometimes code is simple enough that It reads as plain English, but sometimes we can spend hours re-reading and debugging while trying to comprehend what is going on. So how easy […]
Microsoft Graph and Application Authentication
Microsoft Graph is modern and recommended approach to integrate with Microsoft 365 that includes Calendar, Mail, Online Meetings and many more. There two types of workflows that we can implement: When we have user online and can get user consent to perform certain action. This type of workflow will most likely have a user interacting with […]
Secrets and configuration – pragmatic approach
Most of programs, services, scheduled jobs, scripts that we create are likely need to connect to an external resource to pull or push some data. External resource can be a database, distributed cache, message queue, object store and so on. In order to connect to a resources we need at minimum an address and a […]
Typesafe approach to CSV with Python
This post describes an approach to read and write CSV using Python, and doing so in a simple and typesafe way. We are going to use standard CSV Python module, hence there would be no need to install any new packages. Let’s start with our model. A model is a class that represents a line […]
Implementing Domain Driven Design with Microservices
This post is about Microservices and Domain Driven Design (DDD), how to apply DDD to Microservices architectural style, what are the pitfalls to be aware of and many other aspects. If you need a quick refresher or intro to DDD, then you may refer to Simple Domain-Driven Design – Building Blocks. Here is a series […]
Fixing Dynamic Connascence
Introduction In the previous posts we learned about connascence and explained why it’s so important to understand for software developers and architects, we looked at all 5 levels of static connascence and different approaches to improve code quality. In this post we will focus on 4 levels of dynamic connascence and will take practical approach […]
Fixing Static Connascence
Introduction In the previous post we described connascence and explained why it’s so important to understand for software developers and architects. In this post we will show practical approach on how to fix different levels of static connascence. As to summarize, connascence has nine levels (five static and 4 dynamic). The higher level the less […]
Connascence, why is it so important?
Connascence metric has its own website https://connascence.io/ where you can find detailed description and examples. In this post we will show why connascence is very important metric, we will visualize, condense and summarize the concepts so they are fast and easy to comprehend. What is connascence? Before we can understand importance of connascence, let’s understand […]
How to make tests AWESOME
Some people may argue that automated tests are not worth of effort. But here is a kicker: time spent on creating and maintaining tests in many cases is completely justified by time saved on manual testing and re-testing. Another toll of not having automated test is cost of bugs (in time and money) caught late […]