Maksym Prokopov personal blog
Idea is a something worth sharing

What makes Starlink so remarkable?

28.12.2024

Using sattelites for internet communications is not a genuinely new idea. Number of companies provided such services before Starlink.

But the key difference between previous generation solutions is the latency.

The problem is, 600ms for a signal to travel almost 35700km to a sattelite and back is a lot. No gaming or realtime communication is feasible with such a delay.

The only way to decrease the lattency is to position sattelites at lower altitude. This is why Starlink sattelites fly between 340km and 1200km above the surface. Giving us incredible 30ms latency even in remotest regions of Earth.

Read More…

2024 Tech in Review

22.12.2024

2024 was definitely a year of AI

models are top-notch and I found myself using them a lot.

Editors

IMHO, the editors w/o tight AI integration will fade away at some point.

Cursor is an editor with most notable integration with AI API, allows to have nice interactions with code suggestions from LLM.

Another notable example is NeoVIM. This year I’ve invested a lot into making baby steps with nvim. Probably, the easiest way to start is by using NVChad, a curated set of plugins. I used to use vim a lot back in the days with Ruby on Rails development and I liked the experience back then. NeoVIM makes integration of a lot of tools a breeze with LUA. It was interesting to discover Clojure dialect of LUA - Fennel. Fennel can be used to write extensions for NeoVIM as well. DHH is moved away from macOS to Linux and his new tech stack includes NeoVIM with curated configs gathered in a tool “Omakub”. I clearly see this trend to build platform-like utilities. For example, once - is a command line tool used to deliver updates to the standalone applications, like WriteBook.

Read More…

Cable Management

07.12.2024

Cable Management is an interesting topic for me, as my passion towards tech gadgets encourages spending some money during black friday on something fascinating. Typically, it’s one of the “next one more thing”.

Creating a distraction free space is crucial for creativity. Cluttered space creates tention, hindering the productivity. It’s so important to keep the place nicely organized!

Here is a couple of cable management solutions I tried at my home.

Read More…

Digitalisation in action

06.12.2024

Jokes aside, how to properly deprecate a technology?

One of the greatest talks from Rich Hickey was about making changes to software systems. Search for it with “Spec-ulation” keyword in Youtube.

Long story short, you may break or not break the system by removing something like class or function or by changing a function signature (read: parameters), changing in this context means you remove the old function with the same name and add a new one with different parameters.

Read More…

Should a code be readable by human?

05.12.2024

Little known fact about SmallTalk programming language.

The code written in SmallTalk should be able to be read aloud and it should make sense to a human.

Read More…

Hashicorp Waypoint

11.10.2024

Waypoint is a tool by Hashicorp to manage builds, artifacts and deployments.

It has a CLI interface and also a nice UI and uses HCL instead of YAML for configuration and templating.

Introduction

It might not be needed if you have something like GitHub Actions and may felt redundant, but actually it's a kind of missing piece for having a good UI for CI/CD pipelines, as it gives a handy tool for a developer to streamline build/deploy/release process.

Read More…

Deployment process with Hashicorp Nomad

14.07.2024

As, probably, many of you, I did a long journey from manual FTP sync, to semi-automated tools like Capistrano, then manually managed docker deployments, then anisble managed docker containers and finally, met the orchestration system of choice - Hashicorp Nomad.

TLDR: Kubernetes is too heavy for my moderate needs. Hashicorp Nomad strikes the right balance between features and maintenance complexity.

At some point in time I felt a need for better container orchestration system that I could run by myself in Hetzner. Funny enough, DHH and Co. came to the same conclusion, but implemented in a different way. They developed completely own version of ansible on steroids named Kamal. This has right for existence, but imho has own flaws, like manual nodes management for fault tolerance and challenge to keep versions of deployed artifacts in sync. The push based deployment always suffers from this. People were trying to solve this issues already for quite a long time by using systems like Chef of Puppet.

Read More…

Sustainable Ruby on Rails in 2024

30.06.2024

Rubu on Rails development changes a lot every year and sometimes it's not easy to keep up with the changes.

I've recently bought Sustainable Rails Book and it's hard to overestimate how valuable is it for me.

Here are couple of thoughts after reading first chapters.

  • Invest in developer friendly application bootstrap process. Running bin/setup and bin/dev should be enough to run on the new blank developer machine.
  • Move business logic out of fat controllers and fat models. Extract it and move to Service Objects. Fan-in and fan-out is a fancy metrics to estimate how object relate to each other. Simply speaking the most referred dependencies should be simple enough and thoroughly tested.
  • Keep routing.rb as canonical as possible. Avoid nesting routes whenever the resources don't represent tight coupling. Rely on resources instead of custom crafter routes. Tip: use :only [:create] to reduce the scope.

CI/CD process

Dare to add, invest heavily in CI/CD process, with modern GitHub offering it's just way easier then maintaining own on-prem solution.

Read More…

Emacs For Beginners

10.05.2024

The article provides overview of facts why Emacs is so different but also so powerful comparing to other editors. It gives a good starting point for the reader to understand the fundamentals and start own journey to effective work.

The way of learning is painful, but rewarding. The essense of Emacs is to codify your specific repetitive tasks so that eventually you realize, the editor contains a lot of customizations speeding up your daily routines, as no other editor does.

I do the following things in Emacs:

  • Coding in following languages: Ruby (Ruby on Rails), Python, Clojure, Javascript, TypeScript
  • Writing Terraform and Nomad configuration with HCL
  • Blogging in Hugo and deploying to production
  • Using Kubernetes via TUI
  • Writing diary
  • Book keeping
  • Planning my life/projects/tasks
Read More…

Ansible Use Cases

27.03.2024

While Ansible is a great tool for certain use cases, such as building new AMIs when used with Packer, it has some downsides. These become apparent when using it for container orchestration (which I have witnessed at scale) or keeping the configuration of a set of nodes in sync.

Another significant, though not dramatic, downside is related to Python version and dependency management. This adds extra complexity that I would prefer to avoid in a system management tool.

Read More…