Developing Firefox Extensions with WebExtensions API

Developing Firefox Extensions with WebExtensions API

Introduction to WebExtensions If you’ve ever wondered how to customize your Firefox browser to do just about anything you can imagine, you’re in the right place. WebExtensions are the key to unlocking this potential, and in this article, we’ll dive deep into how you can create your own Firefox extensions using the WebExtensions API. What are WebExtensions? WebExtensions are a cross-browser technology that allows you to build browser extensions for Firefox, as well as other browsers like Google Chrome, Opera, and Microsoft Edge....

March 5, 2025 · 5 min · 936 words · Maxim Zhirnov
Why Your Obsession with DRY Principle is Making Your Code Worse

Why Your Obsession with DRY Principle is Making Your Code Worse

The DRY Principle: A Double-Edged Sword In the world of software development, the DRY (Don’t Repeat Yourself) principle is often hailed as a golden rule. It advises developers to avoid duplicating code, ensuring that every piece of knowledge has a single, unambiguous, authoritative representation within a system. However, like any principle, it’s not a one-size-fits-all solution. In fact, an overzealous adherence to DRY can sometimes lead to more harm than good....

March 5, 2025 · 5 min · 1000 words · Maxim Zhirnov
Building a Streaming Data Processing System with Apache Beam

Building a Streaming Data Processing System with Apache Beam

Introduction to Apache Beam When it comes to processing large volumes of data, whether it’s in batch or streaming mode, Apache Beam stands out as a versatile and powerful tool. Apache Beam is an open-source framework that allows you to design and execute data processing pipelines with ease, supporting both batch and streaming data. In this article, we’ll delve into the world of streaming data processing using Apache Beam, and I’ll guide you through the process of building a streaming ETL (Extract, Transform, Load) pipeline....

March 3, 2025 · 4 min · 828 words · Maxim Zhirnov
The Case for Writing Ugly Code: When Functionality Matters More Than Beauty

The Case for Writing Ugly Code: When Functionality Matters More Than Beauty

The Myth of Perfect Code In the world of software development, there’s a pervasive myth that every line of code must be perfect from the start. This misconception can lead to analysis paralysis, where developers spend more time planning and worrying about writing flawless code than actually coding. However, the truth is that even the most skilled developers don’t write perfect code on their first attempt. Software development is inherently iterative, and the initial version of any code is rarely its final form....

March 3, 2025 · 8 min · 1492 words · Maxim Zhirnov
Implementing Event Sourcing and CQRS in .NET Core Applications

Implementing Event Sourcing and CQRS in .NET Core Applications

Introduction to CQRS and Event Sourcing In the ever-evolving landscape of software development, two patterns have emerged as game-changers for building scalable, maintainable, and robust applications: Command Query Responsibility Segregation (CQRS) and Event Sourcing (ES). These patterns, when combined, offer a powerful approach to managing the complexity of modern software systems. Understanding CQRS CQRS is a design pattern that segregates the responsibilities of handling commands (writes) and queries (reads) into separate models....

March 2, 2025 · 6 min · 1153 words · Maxim Zhirnov