European IT professional; experienced project manager and programmer with skills covering data science and DataOps with Python and R. I am interested in clean code and in software quality in general.

XenServer Lab Setup: USB NIC

By eric | Published March 6, 2019 | Updated February 26, 2025

I am trying to set up a small footprint XenServer lab environment that does not have any single point of failure. That means two hosts in a pool, two NICs on every host and SR (storage repository), mu...

Read More →

My First 30 Minutes With A Server

By eric | Published January 3, 2023 | Updated February 20, 2025

There are a few posts with titles like "My First 5 Minutes With A Server", perhaps even 10 or 15 minutes. Most are helpful for a minimal setup, but I can't remember spending less than 30...

Read More →

Moving Data From Kafka To ClickHouse With Vector

By eric | Published May 20, 2024 | Updated January 3, 2025

Vector is a sturdy solution for moving data between different systems. In Vector parlance, you are moving data from a source to a sink, and in the middle you can do transforms. In this post, we are go...

Read More →

Bare Metal Kafka Using KRaft

By eric | Published May 16, 2023 | Updated December 31, 2024

A basic Apache Kafka test-setup with 2 servers and 3 brokers and 3 controllers each, using KRaft. The recommended setup for production is at least 3 brokers and 3 controllers. Note: The following reci...

Read More →

Happy Christmas!

By eric | Published December 19, 2024

Incident reporting according to xkcd....

Read More →

Getting Logs Into Loki With Promtail

By eric | Published November 16, 2021 | Updated December 4, 2024

This is a quick guide to getting started with Promtail for Loki. Promtail is Grafana's native solution for getting logs into Loki and, as you should expect, is nicely integrated with it....

Read More →

R Programming: Goodbye recode(), Hello case_match()

By eric | Published September 24, 2024

In R programming, both `recode()` and `case_match()` are used to replace or reassign values in a vector. However, the function `recode()` is considered superseded in favor of the more general `case_ma...

Read More →

Getting And Cleaning Data With R

By eric | Published September 13, 2024 | Updated September 24, 2024

Data cleaning is a crucial first step in any data analysis or machine learning pipeline. Without clean and properly structured data, the results of any analysis can be misleading or invalid. In this g...

Read More →

R: Dealing With File Encodings Using readr::guess_encoding

By eric | Published May 7, 2021 | Updated June 10, 2021

Dealing with different file encodings for a set of data can be a bit of a pain [1], but there is one tool that is really useful in this situation. Using the readr-package[2] with its guess_encoding-fu...

Read More →

Literate Statistical Programming From The Command Line

By eric | Published May 7, 2021

Literate statistical programming can be a useful way to put text, code, data, output all in one document. If you have a Linux desktop, and the distribution includes proper support for R, chances are y...

Read More →

Publishing To Rpubs From The Command Line

By eric | Published May 6, 2021

Rpubs is a free service for the publication of Html-reports from R. Typically, the service is used to publish research. If you are working with R from the command line, there is a method for publishin...

Read More →

ProjectTemplate for R - First Impressions

By eric | Published January 21, 2020 | Updated May 6, 2021

Order, Order, Order! If you have done any major R-project, you quickly get to the point where it is hard to keep everything ordered - your scripts, your data, your output, your tests... If you have...

Read More →

Erlang 1: Starting Out

By eric | Published May 1, 2019 | Updated May 4, 2021

Comments to the book "Learn You Some Erlang For Great Good" by Fred Hébert, Chapter 1 - Starting Out. Challenges: Remembering relevant shell commands and understanding immutability. I...

Read More →

Two-Host XenServer Pool With Manual Fail-Over

By eric | Published November 3, 2019 | Updated March 13, 2020

A guide on how to install and operate a two-host XenServer pool with manual fail-over. This is the first part of a series of articles on a small-footprint XenServer setup with no single points of fail...

Read More →

Erlang 3: Syntax in Functions

By eric | Published January 6, 2020 | Updated March 13, 2020

Comments to the book "Learn You Some Erlang For Great Good" by Fred Hébert, Chapter 3 - Syntax in Functions. Pattern matching is much easier to achieve in Erlang than in many other la...

Read More →

Adding An Editor For Your Django Admin

By eric | Published February 25, 2020 | Updated March 11, 2020

You can add editing functionality to the Django administration backend by adding an editor to all or to selected forms in the backend. Here is a couple of fast-track how-tos on how to set this up with...

Read More →

git-lfs - Git For Big Files

By eric | Published February 25, 2020

Git puts the upper file size limit at 100 MB. So what can you do if you have files bigger than that? Git Large File Storage (Git LFS) is an open-source extension to Git that allows you to work with la...

Read More →

Erlang 2: Modules

By eric | Published July 1, 2019 | Updated February 25, 2020

Comments to the book "Learn You Some Erlang For Great Good" by Fred Hébert, Chapter 2 - Modules. Understanding how modules work and how they should be organized. Learning goals: How to create a modu...

Read More →

Erlang 4: Types (or lack thereof)

By eric | Published February 25, 2020

Comments to the book "Learn You Some Erlang For Great Good" by Fred Hébert, Chapter 4 - Types (or lack thereof). Pattern matching is much easier to achieve in Erlang than in many other languages, ...

Read More →
About Me

Experienced dev and PM. Data science, DataOps, Python and R. DevOps, Linux, clean code and agile. 15+ years working remotely. Polyglot. Startup experience.
LinkedIn Profile

Eric Eikrem