Oleg Elantsev

Writing about software development, cloud computing, and other tech topics.

Building a Cosmocube game: from 2d to 3d

I started developing a game to apply to Zeptolab. Why? That was an application requirement back then. Zeptolab is the company famous for its Cut The Rope game, first published in 2010, it has been downloaded more than 600M times. Addictive gameplay attracted not only players, but developers - apparently many candidates applied. Company announced that applicants should build a game on a given topic, e.g. Arkanoid, write it in C++, no frameworks, it should work on Android or iOS....

December 13, 2024 · 2 min
Photo of Arduino LCD as TTY for Linux

Linux TTY on LCD 16x2 screen

Yet another just for fun project. I decided to make use of a small LCD screen from Arduino kit & Raspberry Pi. Inspired by historical teletype access to the computers & also challenges to use low-end tech as working setup (e.g. full day work on Raspberry Pi or Chrome books). Even today terminal is used, mostly by software developers, to run system commands for managing files, writing code, debugging, building apps, managing configs, etc....

December 5, 2024 · 3 min

Building Your First Argo Workflows Pipeline

As a Staff Software Engineer specializing in Site Reliability Engineering (SRE) and pipelines, I’ve found Argo Workflows to be an excellent tool for orchestrating complex, parallel workflows on Kubernetes. In this article, I’ll guide you through creating your first Argo Workflows pipeline, complete with code snippets and explanations. What is Argo Workflows? Argo Workflows is a container-native workflow engine for orchestrating parallel jobs on Kubernetes. It allows you to define complex workflows as a series of steps, each running in its own container....

August 10, 2024 · 3 min

Prometheus queries

High cardinality metrics count({__name__=~".+"}) by (__name__) Very practical to find the amount of timeseries (you need to suspect some). Often span metrics or Kubernetes metrics may surprise, so if suspect any of those try something like count({__name__=~"calls.*|kube.*"}) by (name, job) Topk – largest k elements by sample value topk(k, <metric_expression>) Top 5 CPU usage metrics topk(5, sum(rate(container_cpu_usage_seconds_total[5m])) by (container_name)) This query calculates the rate of CPU usage for each container over the last 5 minutes, sums it up by container_name, and then returns the top 5 containers with the highest CPU usage....

August 7, 2024 · 2 min

Comparison of Telemetry Instrumentation: New Relic vs. OpenTelemetry

Introduction to Telemetry Instrumentation Telemetry instrumentation is the process of collecting, transmitting, and analyzing data from software applications to monitor their performance and behavior. This data, often referred to as telemetry data, includes metrics, logs, and traces that help developers and operations teams understand how applications are performing and identify any issues that may arise. Effective telemetry instrumentation allows for proactive monitoring, faster troubleshooting, and improved system reliability. It is a crucial component in modern software development and operations, especially in environments that leverage microservices and distributed systems....

July 20, 2024 · 6 min

How to pass secret as build argument to Docker build in DroneCI

When it comes to building and deploying software, keeping secrets safe is crucial. I use DroneCI as a CI solution and sometimes need to pass secrets as build arguments to Docker build command in ECR DroneCI plugin. Documentation of ECR plugin (at least when I looked it up) didn’t mention build_args_from_env parameter. This parameter lets you pass secrets from environment variables as build arguments. What is build_args_from_env? Here’s how it works:...

April 15, 2024 · 2 min
READ COMMITTED transaction isolation level

Transaction isolation in PostgreSQL

Recently I was reading “Designing Data-Intensive Applications” book. It covers lots of topics related to creation of reliable, scalable and maintainable data systems and one of the chapter covers a concept of transactions - its meaning, use cases, levels of isolation and reasons why application developers should choose the right one. While many books and articles cover transaction isolation level with pure SQL examples for database users, I decided to go a bit deeper and check how a theory gets connected with actual implementation....

October 2, 2023 · 7 min
VIM editor

I use VIM

9 years ago I became a VIM user (after coding 3 years in XCode), that significantly uplifted my coding skills, C++ knowledge and environment around it. Throughout my career I used different IDEs and code editors: Visual Studio, NetBeans, XCode for iOS & Mac, Eclipse, IDEs from JetBrains (Android Studio, Idea, CLion), Sublime, VS Code. Why did I started using VIM instead of full featured IDE? Responsiveness and minimal input lag (between key press and letter on screen)....

September 10, 2023 · 3 min
Zero donwtime app deployment with Azure App Service

Zero downtime app deployment with Azure App Service

One of the problems in DevOps is deployment of an app seamless for the user, i.e. with zero cold starts and zero downtime. This is how you can achieve zero-downtime deployment of a three tier application with frontend, API and a database, hosted in Azure cloud. Azure App Service is a PaaS for running .NET, .NET Core, Java, Ruby, Node.JS, PHP or Python apps. It provides managed production environment, so no need to patch or maintain OS yourself, and no need to explicitly provision the underneath infrastructure such as VMs....

May 2, 2022 · 2 min
go-pr-watcher tool listing open pull requests

Watch GitHub PRs

I try to cultivate a habit to regularly keep an eye on whats going on in the project, either on user story or code changes levels. User stories are relatively easy to track (still might be improved) with existing tooling, while code changes is a bit more challenging. The typical flow I had for months is checking a dedicated folder in the e-mail inbox, where notification messages were sent for the new comments, raised PRs and PR status changes....

October 24, 2021 · 2 min