Featured Projects
Bicycle Tracker
An Android app for tracking bicycle rides with route mapping, statistics, and performance analytics
go-pr-watcher
A terminal-based GitHub PR monitoring tool that displays all open pull requests across multiple repositories in a beautiful TUI
Recent Posts
Articles I like on Software Engineering
This post will contain an interesting reading on software engineering. It will be kept updated. Finding a needle in Haystack: Facebook’s photo storage - https://www.usenix.org/legacy/event/osdi10/tech/full_papers/Beaver.pdf Bigtable: A Distributed Storage System for Structured Data - https://static.googleusercontent.com/media/research.google.com/en//archive/bigtable-osdi06.pdf
Unhappy k8s cluster
This is 15 minute fun, quite late for Halloween though. Kubernetes cluster suffering from different failures. If this was a production cluster and I was oncall (btw I am oncall while writing this :-D ), it would be a heart attack to see. Go and make it even more miserable! Delete the workloads, check whats there https://www.elantsev.com/k8s The source code https://github.com/olegelantsev/unhappy-k8s-cluster
Revisiting an Old Project — and the Endless Spiral of Dependencies
I wanted to make a simple post about an old project I once worked on. And this one is not the one I intended to make. To write the post, I needed to make a screenshot. To take that screenshot, I had to rebuild the project. This project is rarely touched, and it was originally started with Ant and Eclipse — when there was no Android Studio yet. No surprise the IDE didn’t like the Gradle version 5....
Building a Cosmocube game: from 2d to 3d
The hook I wrote a game in C++. Why? That was an application requirement back then. Zeptolab is the company produced famous Cut The Rope, first published in 2010, it has been downloaded more than 600M times. Addictive gameplay attracted not only players, but developers - many candidates applied for a job. 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....
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....
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....
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....
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....
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:...
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....