Tsvetan's Blog

Hey! Here you can find my digital garden. Feel free to reach me out at tsvetan @ camplight net.

Manipulating streams with Perl

Streams are some thingies which are quite useful when one wants to get data on demand. Usually we don’t know when they will end, so we just drain them byte by byte until we take all we need. We could boost them though by providing ways of making streams out of random objects, merging and transforming them, and not let them drain.

Redesigning Software Systems

Without constant refactoring, technical organizations tend to lose agility. This essay delves into an organization that has gone too far in delivering features at the expense of maintainability. As a result, outages have become the norm, feature delivery is slower than ever and developer satisfaction is low. At the core of this lies a distributed monolith. The senior engineering leadership team has reached the conclusion that something should be changed. But what?

Agile Architecture Review Boards

The following post describes an organization that is evolving and has reached the point where the need for consistent cross-team practices has arisen. The organization has tried to tackle this issue with an Architecture division. However, having a functional department creates preconditions for Ivory Tower development. I suggest how employing an Agile Architecture Review Board can resolve the issue.

How I use Notion to structure my career progress

Several months ago I was faced with a crisis. I wanted to do and track so much stuff that I started to get lost in it. I had a text file on my computer for my manager journal. I had fleeting documents for architecture proposals in Google Drive. I had my career focus stuck in my head. I had loads of bookmarks and books I wanted to read but without any clear direction. Being quite organized in other areas of my life, this started to bug me a lot. So, I had to find a solution.

Why collaboration shouldn't be the aim?

Collaboration is an often repeated company mantra. You can see it in pair programming, mob programming, tight cross-team dependencies, calendars full of meetings and a snowballing amount of Slack conversations. In some cases collaboration is crucial for success. However, in others it can be detrimental. In this article I’m going to provide some insights about how to decide when collaboration is necessary and when it isn’t.

Caching vs. data duplication

In this article I’m going to explore several solutions to the problem of latency in distributed systems.