I love building things. This blog in itself is one of these things. Feel free to shoot me an email.

# Posts

• ## Automatic Shopping List: DIY smart shelf using strain gauges

Wouldn’t it be great if your shopping list would write itself? Wouldn’t it be great to have automated statistics about your grocery buying/consumption? Reducing Shopping / Starting Stocking When Corona hit about one year ago, there were empty shelves in stores everywhere. No matter where you looked: Shanghai, Moscow, Berlin, Paris, New York - panic buying everywhere. In an effort to become resilient against such fluctuations in food (and more importantly toilet paper) availability, I...

• ## AWS NLBs and the mixed up TCP connections

One of my services was running into timeouts, because connections were being reset by clients. I had assumed that it couldn’t be the Network Load Balancers (NLBs) fault, a battle-tested piece in the cloud stack. The following is about NLBs, cross-zone-loadbalancing and multiple NLBs pointing to the same set of EC2 instances and how that revealed unexpected behaviour in the NLB. TLDR: If you don’t want timeouts or connection resets, then: don’t use cross-zone loadbalancing...

• ## Change caused by Coronavirus

While daily news is all over the coronavirus, I want to try a long-term view on what changes will happen because of Coronavirus for the next decade. Individual behaviour More food stock is kept even in urban environments -> average supermarket cart size increases Handshakes become less common, hugs/kisses reserved for close friends Yearly flue shots become more popular even in healthy young people The workplace Home office has shown to be feasible during corona...

• ## (Emergency-)Brake lights + blinker on my bicycle

On my cycle-commute there are a couple of places where better lights would come in handy. A year ago another biker drove into me, because I had to emergency brake. So when a friend gifted me his left-over addressable LED stripe I was intrigued in how well this would work, as I had previously poured ours of work into making my own addressable LEDs using shift registers see my first iron man heart build. As...

• ## Iron Man Arc Reactor

I finally declared my recent project, a replica of Tony Starks Arc reactor, finished. This was one of the projects I had planned with which I justified buying a 3D printer so I felt an obligation to finish it. All 24 LEDs in this rector are individually addressable via shift registers. My goal was to have some faint waft in the lights, but I curently only have them on at one brightness level. Since the...

• ## Bike Repair

I use my bike extensively. My commute is 15km per day and I don’t have a public transport ticket. I like the cold air blowing into my face in the morning. When spending 10+ hours a day in front of a screen, riding a bike is a relaxing part of the day. My bike was now turning 12 years old. More and more failures accumulated over time to the point where I wasn’t comfortable lending...

• ## 100ms in additional latency cost you 1 % revenue, don't they?

When writing my master thesis about resource allocation in containers I wanted to show the relevance of performance by citing something I always knew to be true: 100ms in additional latency costs you 1 % revenue. Time to find a source for the references! All sources I could find eventually end up to be Greg Linden. He worked at Amazon for 5 years from 1997 to 2002 and worked on the recommendation system. He recounts...

• ## QuickStart for Let's Encrypt on Kubernetes

EDIT 2019-10-31: I tried to update this guide to 0.11, as a lot of things have changed since the original publication. I haven’t tested the full guide in the new version yet, but it should work. EDIT 2019-12-09: Updated for 0.12 and helm3 This post will show you how to use cert-manager to automatically create and use certificates with Let’s Encrypt on Kubernetes. This is especially useful if you are looking for a successor to...

• ## A fork on Github is no fork

Github may block access to your repos and there is nothing you can do about it A few years ago I made a project with a friend and we collaborated on Github in his private repo. After we finished the project I forked it, to be able to still access it independently from him. While I still have unlimited private repos, my friend let his Premium Account (Student) expire. The original repo is now inaccessible....

• ## Machine Intelligence I - Learning Notes

This semester learning notes are about supervised learning. Previous semester on unsupervised learning Performance Measurement Neural Networks Support Vector Machines Bayesian Networks Reinforcement Learning Statistical Learning Theory(Excluded from the exam and therefore neglected here)

• ## Reinforcement Learning

These are exam preparation notes, subpar in quality and certainly not of divine quality. See the index with all articles in this series In reinforcement learning an actor is in a world where she can perform different actions and perceive the environment. Sometimes there may be rewards. Reinforcement learning is about choosing a policy from which to derive actions that maximize the reward. Just like the real world there are a lot of rewards that...

• ## Support Vector Machines

These are exam preparation notes, subpar in quality and certainly not of divine quality. See the index with all articles in this series If you are stuck, read Wikipedia in parallel. The goal of SVMs is to divide two groups with a line that separates the data points as clearly as possible. There are two cases: Data points can be cleanly split into their classes At least some data points overlap making it impossible to...

• ## Performance measures

These are exam preparation notes, subpar in quality and certainly not of divine quality. See the index with all articles in this series Choice of error function Usually squared error is used. Cross-Entropy $$c$$ := different classes (classification / symbol representation) From Wikipedia: In information theory, the cross entropy between two probability distributions p and q over the same underlying set of events measures the average number of bits needed to identify an event drawn...

• ## Neural Networks

These are exam preparation notes, subpar in quality and certainly not of divine quality. See the index with all articles in this series Connectionist Neurons A neural network generally has a number of inputs $$x_1...x_N$$ which are aggregated into $$\underline x$$. At each node there is a transfer function $$y_i$$ which turns the inputs according to weights $$\underline w$$ into its own output. A typical function would look like this. The part in the brackets...

• ## Bayesian Networks

These are exam preparation notes, subpar in quality and certainly not of divine quality. See the index with all articles in this series Bayes Rule $P(A|B) = \frac{P(B|A)P(A)}{P(B)}$ Inference Bayesian Interference is about inferring probabilities from prior probabilities. Given a set of prior events, a bayesian network estimates the probability for another event. Justification of using heuristics: In real-world scenarios you never know the true probability of events. To somehow try to estimate $$P$$ it...

• ## Statistical Learning Theory

These are exam preparation notes, subpar in quality and certainly not of divine quality. See the index with all articles in this series In a classification problem the desired goal is to reduce the generalization error $$E^G$$. Unfortunately during training it is only possible to evaluate the classifier against a limited amount of data - the test data set. Therefore we can only measure $$E^T$$. The problem we want to solve is to know how...

• ## Docker Images with Gitlab CI

You want to have docker tags that match your git branches? Here is how to do it with Gitlab CI. A lot of my projects have a CI pipeline that builds a docker image. Of course I do not want to always deploy the :latest tag, because that makes reproducibility and rollbacks hard. I always push to :latest. Also I want to reference by: tags/branches commit hash For this repo (the blog) it looks like...

• ## 34C3 Day 1

Day one of the 34C3 is over. The new location in Leipzig is a lot more spacey and loftey, but I liked the old location in the CCH more. Somehow I felt that there were fewer easter-eggs and hidden nuggets than in previous congresses. I guess everyone still needs to adapt to the new environment. Hopefully in the coming days there will be more. Tomorrow will also be my first Angel shift as a volunteer....

• ## Estimation theory - Kernel Density Estimation

Chapters General Terms and tools PCA PCA Hebbian Learning Kernel-PCA Source Separation ICA Infomax ICA Second Order Source Separation FastICA Stochastic Optimization Clustering k-means Clustering Pairwise Clustering Self-Organising Maps Locally Linear Embedding Estimation Theory Density Estimation Kernel Density Estimation Parametric Density Estimation Mixture Models - Estimation Models Density Estimation The goal of density estimation is to be able to give a density estimation for each coordinate in the vector space. There are two approaches parametric...

• ## Stochastic Optimization

Chapters General Terms and tools PCA PCA Hebbian Learning Kernel-PCA Source Separation ICA Infomax ICA Second Order Source Separation FastICA Stochastic Optimization Clustering k-means Clustering Pairwise Clustering Self-Organising Maps Locally Linear Embedding Estimation Theory Density Estimation Kernel Density Estimation Parametric Density Estimation Mixture Models - Estimation Models Simulated Annealing Simulated annealing is oriented in crystallization procedures in nature where the lowest energy state is achieved only when the temperature is lowered very slowly. The temperature...

• ## Clustering - k-means & SOM

Chapters General Terms and tools PCA PCA Hebbian Learning Kernel-PCA Source Separation ICA Infomax ICA Second Order Source Separation FastICA Stochastic Optimization Clustering k-means Clustering Pairwise Clustering Self-Organising Maps Locally Linear Embedding Estimation Theory Density Estimation Kernel Density Estimation Parametric Density Estimation Mixture Models - Estimation Models K-means Clustering K-means Clustering is good at finding equally sized clusters of data points. Parameters Distance Function (Usually Euclidean) Number of clusters Drawbacks ???Cannot cope with clusters of...

• ## Source Separation (ICA)

Chapters General Terms and tools PCA PCA Hebbian Learning Kernel-PCA Source Separation ICA Infomax ICA Second Order Source Separation FastICA Stochastic Optimization Clustering k-means Clustering Pairwise Clustering Self-Organising Maps Locally Linear Embedding Estimation Theory Density Estimation Kernel Density Estimation Parametric Density Estimation Mixture Models - Estimation Models Independent Component Analysis (ICA) ICA allows the reconstruction of mixed signals. This could for example be multiple speakers on one audio track. Requirements Needs some prior knowledge The...

• ## PCA

Chapters General Terms and tools PCA PCA Hebbian Learning Kernel-PCA Source Separation ICA Infomax ICA Second Order Source Separation FastICA Stochastic Optimization Clustering k-means Clustering Pairwise Clustering Self-Organising Maps Locally Linear Embedding Estimation Theory Density Estimation Kernel Density Estimation Parametric Density Estimation Mixture Models - Estimation Models PCA can be used as a compression algorithm(more correctly dimensionality reduction). Its goal is to extract vectors(components) out of the sample data which minimizes the squared distance of...

• ## Unsupervised Learning Methods Exam Preparation

Following the principle “You only understood something thoroughly if you can explain it” - here come the prepping notes for Machine Intelligence II. If no sources are indicated, it comes from the lecture slides. Note This was foremostly written for my own understanding, so it might contain incomplete explanations Chapters General Terms and tools PCA PCA Hebbian Learning Kernel-PCA Source Separation ICA Infomax ICA Second Order Source Separation FastICA Stochastic Optimization Clustering k-means Clustering Pairwise...

• ## DocumentDeck

Today I am excited to announce the launch of DocumentDeck. DocumentDeck solves my own problem with keeping track of invoices and credentials. The documents I receive usually end up on a large pile on my desk or in a huge binder if I have my lucky day. Now I have an easy way of just scanning the documents and having them easily retrievable in the future. Uploading is as easy as it could be. Simply...

• ## How to serve a website from behind a NAT with a VPS

A common way to run a website behind a NAT as you might find it at home is to configure the router to forward port 80 to your machine. This is not always doable, as you might not have access to the router. If you have access to an external server(for example a cheap VPS), you can route traffic through that by connecting to it via SSH from the local machine. I used AutoSSH which...

• ## Introducing Kudos

Kudos is a way to acknowledge something somewhat similar to a “like”. Each of my blog posts now has a kudos button at the bottom. I liked the simplicity of it. I use a nice libary from KudosPlease which looks quite slick. Unfortunately the API provided by them had multi-second load time. Now I run my own fast compatible API at https://kudos.niels-ole.com/ . You can find the backend source on Github: https://github.com/nielsole/kudos Download the js-File...

• ## Hosting side-projects with Docker

In this article I will write about: Why I needed a new hosting setup for my projects Make a shallow dive into why I chose Docker Show great tools for easy deployments for HTTP(S) List services running with this now I regularly do side-projects which mostly consist of some API or website of some sorts. After developing it locally I have to deploy it to a server to make it generally available. For this purpose...

• ## Creating timelapses of planet earth

I was very inspired by Glittering Blue which shows images of a Japanese weather satellite. After becoming interested in timelapse videos I began collecting images from the public servers of said weather satellite to compile a nice video out of it. This is the result: Some time after Glittering Blue was released someone took the time to put together a npm module. Using this I collected images for about two month. I put together the...

• ## Building my standing desk

I naturally spend a lot of the time of the day in fornt of the ocmputer and therefore in front of a desk. Since it is very unhelathy to always sit the entire day I first started using a gym ball. This was a great improvement for my health feeling. But the ball was eventually ripped to pieces by my cats. What I wanted was a standing desk. The problem with standing desks is their...