Oct 2, 2026

Starting Weekly Updates on Software, Books, and Personal Projects

weekly-updates
Starting Weekly Updates on Software, Books, and Personal Projects

I am starting weekly updates to share what I learn, read, build, and ship. Alongside technical articles, these posts will include books, personal projects, and reflections on work and everyday life.

Why Start Weekly Blog Updates?

I shared my first blog in December 2019. Back then, the intention was only to share posts about technical topics, and I’ve shared a couple of blogs, mostly related to competitive programming.

Recently, I decided to make a shift in what I post. I want to share about different topics: some might be purely technical, others might be opinion-based, I might write about a book I’ve read, or how I think about AI affecting life, society, and work.

Read more →

Aug 21, 2026

Building an n8n Workflow with the Codeforces API and Google Sheets

automation n8n
Building an n8n Workflow with the Codeforces API and Google Sheets

This n8n workflow tracks students’ competitive programming progress by connecting the Codeforces API to Google Sheets. I walk through fetching submissions, calculating metrics, handling API errors, and updating the sheet.

Why Automate Codeforces Progress Tracking?

Recently, I started exploring workflow automation tools because I wanted to automate some tasks that I perform regularly. After a short search, I came across several options, including Zapier, Make, and n8n.

I had a few requirements in mind: the tool should be simple to use, easy to learn, supported by an active community, and available to test for free. I had already heard a lot about n8n, and a friend of mine had recently joined the company. Since I was also looking for different career opportunities, becoming familiar with the product seemed especially worthwhile.

Everything was pointing towards n8n, so I decided to give it a try. I started by building a simple workflow before moving on to something more complex.

Read more →

May 20, 2026

Pros and Cons of Working at a Software Consulting Company

career
Pros and Cons of Working at a Software Consulting Company

Working at a software consulting company can offer varied projects and a broad professional network, alongside challenges with ownership and changing clients. Here are the trade-offs I have experienced as a software engineer.

What Is a Software Consulting Company?

A consulting company is a professional services firm that provides expert advice or specialized delivery capacity to other businesses. For example, if a company has legal issues, it may hire a law firm. If it needs help filing taxes, it may hire an accounting firm. In software development, companies hire consultants for many reasons:

  • Legacy System Migrations: You have an old legacy system that is becoming impossible to maintain, so you hire a consulting company to migrate to a new codebase.
  • Cloud Architecture: You have an on-premises system that you want to migrate to the cloud.
  • Staff Augmentation: You need to deliver features quickly, and your internal IT department cannot handle everything, so you hire external engineers.
  • Core Business Focus: You want to focus more on the marketing and business growth of your application, and you don’t want to hire and manage an engineering department.
  • Other cases: You need outside expertise, temporary capacity, or an independent technical perspective.
Read more →

Jan 16, 2023

Using the Proxy Pattern with QNetworkReply in Qt

qt design-patterns
Using the Proxy Pattern with QNetworkReply in Qt

The proxy pattern can separate network replies from the code that processes their data. This Qt tutorial compares a signals-and-slots approach with an APIReply wrapper around QNetworkReply.

Background: Processing Network Replies in Qt

In a previous project that I worked on, we had to connect to backend API using Qt framework in order to download some files and display some content of these files, this thing might look easily done using QNetworkAccessManager and QNetworkReply. But we had other things to consider:

  • Size of the downloaded files was large.
  • No file should be stored in the device running the application.
Read more →

Dec 13, 2020

AtCoder Beginner Contest 185 (ABC185): Solutions and Editorial

atCoder competitive-programming
AtCoder Beginner Contest 185 (ABC185): Solutions and Editorial

This unofficial editorial for AtCoder Beginner Contest 185 (ABC185) explains the approaches, time complexities, and C++ solutions for problems A through F.

Read more →

Sep 27, 2020

Codeforces Polygon Tutorial: Creating Programming Contest Problems

competitive-programming
Codeforces Polygon Tutorial: Creating Programming Contest Problems

Codeforces Polygon supports the full process of creating a programming contest problem. This tutorial walks through statements, generators, validators, checkers, and tests using a sample problem and testlib.h.

What Is Codeforces Polygon?

According to Polygon itself, The mission of Polygon is to provide platform for creation of programming contest problems. Polygon supports the whole development cycle:

  • Problem statement writing.
  • Test data preparing (generators supported).
  • Model solutions (including correct and wittingly incorrect).
  • Judging.
  • Automatic validation.
Read more →

Sep 19, 2020

AtCoder Beginner Contest 179 (ABC179): Solutions and Editorial

atCoder competitive-programming
AtCoder Beginner Contest 179 (ABC179): Solutions and Editorial

This unofficial editorial for AtCoder Beginner Contest 179 (ABC179) explains the approaches, time complexities, and C++ solutions for problems A through F.

Read more →

Sep 12, 2020

AtCoder Beginner Contest 178 (ABC178): Solutions and Editorial

atCoder competitive-programming
AtCoder Beginner Contest 178 (ABC178): Solutions and Editorial

This unofficial editorial for AtCoder Beginner Contest 178 (ABC178) explains the approaches, time complexities, and C++ solutions for problems A through F.

Read more →

Aug 23, 2020

Stress Testing C++ Solutions for Competitive Programming

competitive-programming
Stress Testing C++ Solutions for Competitive Programming

Stress testing finds counterexamples by comparing a solution against a brute-force implementation on randomly generated inputs. This C++ tutorial covers test generators, comparison scripts, and custom checkers for problems with multiple valid answers.

I decided to write this article after watching the last screencast made by Errichto. To be more precise when he started making stress testing to find counter-test you can check that here. Errichto has a full video called How to test your solution in Competitive Programming, on Linux? I highly recommend you to check it, basically this article is the same but I am extending it to stress test solutions with multiple answers using a written checker, so let’s jump in.

Read more →

May 6, 2020

Implementing Autocomplete in C++ with Tries and Ternary Search Trees

software-engineering
Implementing Autocomplete in C++ with Tries and Ternary Search Trees

Autocomplete relies on data structures that can find words by prefix efficiently. This article compares tries and ternary search trees and shows how to implement both approaches in C++.

How Prefix-Based Autocomplete Works

Autocomplete is the feature when an application predicts the complete word, after just typing some prefix of the word. You must have used autocomplete feature a lot in your life in many area like:

  • Search engines, Google search engine suggests to you an autocomplete feature when you type some text in the search bar, usually sorted by most trends.
  • Emails, as you start writing some prefix of the Email address you will get a list of suggestions.
  • Social media, like facebook, linkedin, instagram…
  • In source code editors, actually I am using Atom right now and I have used autocomplete for at least 10 times just in the first small part of this article.
Read more →