<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Maximilian Ehlers on Personal Blog of Maximilian Ehlers</title><link>https://blog.sodawa.com/</link><description>Recent content in Maximilian Ehlers on Personal Blog of Maximilian Ehlers</description><generator>Hugo -- gohugo.io</generator><language>en-us</language><lastBuildDate>Sun, 18 Aug 2024 14:15:04 +0200</lastBuildDate><atom:link href="https://blog.sodawa.com/index.xml" rel="self" type="application/rss+xml"/><item><title>Deploying with Nix</title><link>https://blog.sodawa.com/blog/deploying-with-nix/</link><pubDate>Sun, 18 Aug 2024 14:15:04 +0200</pubDate><guid>https://blog.sodawa.com/blog/deploying-with-nix/</guid><description>Whats up meat bags and digital brains.
I am still riding the pre AI wave and like to do things myself. So no gen-content in this post.
Why post? Because one thing you want to have control over is your personal/work network. Including your machines and everything connected to them. There is no space for digital anxiety. Then again there is no time for maintaining highly manual setups. Unless you are into that kind of pain - then just view this as a peek onto the other side of the fence.</description></item><item><title>HP Neverstop Laser 1001nw Factory Reset</title><link>https://blog.sodawa.com/blog/neverstop-1001nw-reset/</link><pubDate>Thu, 12 Jan 2023 10:26:06 +0200</pubDate><guid>https://blog.sodawa.com/blog/neverstop-1001nw-reset/</guid><description>Why? Why is this blog post necessary?
2 Reasons:
Embedded Web Server bugs When setting a password on the 1001nw embedded web server, there is a good chance you will lock yourself out forever. While the exact reason is unclear to me, I advise you to set a password with less than 14 characters.
Using my password manager I set a 32 char password and was immediately locked out of the printers admin settings.</description></item><item><title>Extract Album Covers from Audio Tracks</title><link>https://blog.sodawa.com/blog/extract-album-covers-from-audio-files/</link><pubDate>Wed, 12 Oct 2022 18:26:06 +0200</pubDate><guid>https://blog.sodawa.com/blog/extract-album-covers-from-audio-files/</guid><description>How did I end up in this situation? My music library consists mostly of Bandcamp Albums and stuff that has been accumulated from CD Rips and friends over the years. Bandcamp Albums are tagged cleanly and usually include the covers for the Albums directly in the tracks.
I liked this way of handling the files so I added all cover.jpg directly into the audio files of the Albums I own, keeping the cover.</description></item><item><title>Postgres Update in Docker</title><link>https://blog.sodawa.com/blog/postgres-update-in-container/</link><pubDate>Wed, 13 Apr 2022 17:04:15 +0200</pubDate><guid>https://blog.sodawa.com/blog/postgres-update-in-container/</guid><description>I recently wanted to upgrade a postgres database to the latest version.
This is the workflow to achieve this with the following prerequisites:
Data of old database is inside new-data-folder Data of new database is at old-data-folder Both folders are inside the same directory Upgrading from 11 to 14 Your setup will surely differ, so just change the paths, download links and postgres version accordingly when using this.
podman pull docker.</description></item><item><title>Container Deep Diving: Part 3</title><link>https://blog.sodawa.com/blog/containers-deep-dive-part-3/</link><pubDate>Mon, 11 Apr 2022 11:42:42 +0200</pubDate><guid>https://blog.sodawa.com/blog/containers-deep-dive-part-3/</guid><description>After looking at the nitty gritty functionality of containers in Part 2 lets make life a bit easier now. First by making this post a short one and secondly by using tools for abstracting away the manual labour that had to be done in order to switch namespaces and set them up. For this lets take a look at container runtimes.
While you have probably heard of and used Docker lets talk about the common layer that underlies modern Docker and other runtimes.</description></item><item><title>Container Deep Diving: Part 2</title><link>https://blog.sodawa.com/blog/containers-deep-dive-part-2/</link><pubDate>Thu, 03 Feb 2022 11:42:42 +0200</pubDate><guid>https://blog.sodawa.com/blog/containers-deep-dive-part-2/</guid><description>Okay, so here we are in part 2 of the container post series.
At the end of part 1 we were able to identify the problems of just using chroot to achieve process isolation on a machine. With this post the goal is to have the same functionality - running bash with test-root as the new root directory with the same technologies as containers. Once that is running we will adress the problems of seeing all the network interfaces as well as still being able to kill arbitrary processes on the machine.</description></item><item><title>Container Deep Diving: Part 1</title><link>https://blog.sodawa.com/blog/containers-deep-dive-part-1/</link><pubDate>Fri, 07 Jan 2022 11:42:42 +0200</pubDate><guid>https://blog.sodawa.com/blog/containers-deep-dive-part-1/</guid><description>Containers serve 1 purpose. Selling kubernetes certificates! \s
But of course there is more to it then just hype.
Over the next few posts on my blog I would like to dig into the container world, see how we got to the current state and show what the current state actually is.
Overview So what is the real purpose of containers?
Isolate different families of processes on 1 computer from each other, so that if a process is ever compromised it does not affect any other processes on the same machine.</description></item><item><title>Wirt becomes WirtBot and as stealthy as Sam Fisher</title><link>https://blog.sodawa.com/blog/wirt-update-2/</link><pubDate>Fri, 16 Oct 2020 19:42:42 +0200</pubDate><guid>https://blog.sodawa.com/blog/wirt-update-2/</guid><description>Welcome to another update post.
Quite some time has passed since the last update. I have settled back in to my life in Berlin and my new job. But there were a few things nagging me about Wirt in the back of my head. So it was time to clear them. Heres the overview:
New architecture Interactive installer Complete test environment Compatibility mode Additional DNS servers First UX test CI updates Store cleanup HTTPS is gone Updated Rust dependencies New architecture Previously the system was split into two parts, the Interface running at wirtbot.</description></item><item><title>Using private git submodules in GitHub CI</title><link>https://blog.sodawa.com/blog/private-submodules-in-github-ci/</link><pubDate>Mon, 17 Aug 2020 19:42:42 +0200</pubDate><guid>https://blog.sodawa.com/blog/private-submodules-in-github-ci/</guid><description>Do you need to use submodules in your project? Do you use GitHub CI to build your project in the Cloud automatically?
If so then this article will help you to do this safely and without creating additional users or adding Tokens with a wide permission set. The idea is to use deploy keys that have read-only permissions.
The quick rundown for all you experts:
create SSH keypair on your computer add public part as deploy key to private submodule add private key as secret in repo where action is triggered.</description></item><item><title>Wirt update round 1</title><link>https://blog.sodawa.com/blog/wirt-update-1/</link><pubDate>Mon, 17 Aug 2020 19:42:42 +0200</pubDate><guid>https://blog.sodawa.com/blog/wirt-update-1/</guid><description>A lot has happened in the past months. Loads of negative news for sure, but also some positive ones. I have managed to find a job for example, which was the reason I did not commit much into the Wirt repository.
But after my first 2 weeks on the job I cleared the last weekend to push out a feature that I had a good discussion about with github user grollum.</description></item><item><title>Using rust with vue</title><link>https://blog.sodawa.com/blog/rust-in-vue-apps/</link><pubDate>Thu, 02 Apr 2020 22:15:04 +0200</pubDate><guid>https://blog.sodawa.com/blog/rust-in-vue-apps/</guid><description>Using rust with vue Recently I have been building wirt, a web app to help with easily configuring and managing Wireguard networks. One of the main features is the automatic generation of private and public keys right in the browser.
This is needed for privacy and security reasons. After all, who would want to trust anyone with their private keys? Especially some website on the internet that fetches them from an API.</description></item><item><title>Docker and Wireguard</title><link>https://blog.sodawa.com/blog/docker-in-wireguard/</link><pubDate>Thu, 21 Nov 2019 17:49:58 +0000</pubDate><guid>https://blog.sodawa.com/blog/docker-in-wireguard/</guid><description>Adding docker containers to Wireguard network Docker is the most convenient way of delivering my applications to servers, and Wireguard is the best VPN tool I have found so far. Naturally I would like to combine the two to give some of my Apps access to a Private Network, in which they can find a database for example.
This greatly increases security and eliminates a while lot of headaches around securing the database.</description></item><item><title>Keeping your Vuex relationships well watered</title><link>https://blog.sodawa.com/blog/vuex-relationships/</link><pubDate>Sun, 10 Nov 2019 16:07:00 +0000</pubDate><guid>https://blog.sodawa.com/blog/vuex-relationships/</guid><description>Keeping a consistent state in your Frontend application is not the easiest thing we have to deal with these days, but fortunately we have libraries such as Vuex to help us out. Using a redux style store is almost a prerequisite these days and many projects choose to do so, but there are still problems that we encounter.
In this post Id like to write about a pretty common one that you might have encountered when using this architecture, and the solution I have come up with to fix it.</description></item><item><title>GridLib || programming fun in 2 dimensions</title><link>https://blog.sodawa.com/blog/gridlib/</link><pubDate>Mon, 14 Oct 2019 16:07:00 +0000</pubDate><guid>https://blog.sodawa.com/blog/gridlib/</guid><description>CSS Grid is a great addition to the Web, but doing the layouting in CSS is cumbersome, so I wanted to build an easy to use tool that helps in doing this.
I knew of tools such as this one but went with the approach of creating the grid by drawing the lines on a canvas and then converting them into rectangles.
So I built a Canvas to draw lines on, a few Algorithms to turn those lines into points and those points into rectangles.</description></item><item><title>Fixing up QubesOS issues on a Thinkpad T460s</title><link>https://blog.sodawa.com/blog/fixing-up-qubes-issues-on-a-thinkpad/</link><pubDate>Tue, 20 Aug 2019 17:30:00 +0000</pubDate><guid>https://blog.sodawa.com/blog/fixing-up-qubes-issues-on-a-thinkpad/</guid><description>Recently I installed QubesOS for its awesome model of encapsulating different domains into VMs, all based on common template VMs, handling this with a XEN hypervisor and a Controller VM called dom0 or domain0 which includes a Desktop Environment for convenience.
This post is not an intro to the OS, the website has good documentation to read up on it.
What Id like to focus on in this post, is how I fixed a few problems that seems to be happening to some QubesOS users and Thinkpad Users in particular.</description></item><item><title>debian, docker and nftables</title><link>https://blog.sodawa.com/blog/nftables-and-docker/</link><pubDate>Wed, 24 Jul 2019 07:40:03 +0000</pubDate><guid>https://blog.sodawa.com/blog/nftables-and-docker/</guid><description>Debian Buster ships with nf_tables as the firewall backend. So when installing it on one of my machines, I wanted to use the associated nftables frontend with it as well, instead of relying on the iptables-nft compatibility layer as a default.
After all, when would be a better time for learning it than now?
On the other hand I use docker quite extensively for my development environments, and docker uses iptables to set up the correct packet forwarding rules between containers and the host.</description></item><item><title>About</title><link>https://blog.sodawa.com/about/</link><pubDate>Wed, 29 May 2019 15:53:01 +0000</pubDate><guid>https://blog.sodawa.com/about/</guid><description>PGP: 4BC8AFBE1FA13A37D7582DD831DB22A0E00A67E3
Hi there,
My name is Maximilian and I specialize in distributed systems.
If you would like to talk about projects and see if I can be of help feel free to contact me
Online Profiles github linkedin.com</description></item><item><title>Using freelytics on Ghost</title><link>https://blog.sodawa.com/blog/using-freelytics-on-ghost/</link><pubDate>Sat, 18 May 2019 12:05:28 +0000</pubDate><guid>https://blog.sodawa.com/blog/using-freelytics-on-ghost/</guid><description>To start collecting some analytics data about your wordpress website with freelytics, simply follow these steps:
Head over to https://freelytics.net/generate-tracking-script and copy the code that is presented to you, either by clicking on the Button &amp;ldquo;Copy to clipboard&amp;rdquo; or highlighting the code and pressing CTRL+C.
Tracking script from freelytics
Now just go the the code injection settings page of your Ghost installation and paste the code into the Site Header box.</description></item><item><title>Using freelytics on Wordpress</title><link>https://blog.sodawa.com/blog/using-freelytics-on-wordpress/</link><pubDate>Sat, 18 May 2019 12:01:32 +0000</pubDate><guid>https://blog.sodawa.com/blog/using-freelytics-on-wordpress/</guid><description>To start collecting some analytics data about your wordpress website with freelytics, simply follow these steps:
Head over to https://freelytics.net/generate-tracking-script and copy the code that is presented to you, either by clicking on the Button &amp;ldquo;Copy to clipboard&amp;rdquo; or highlighting the code and pressing CTRL+C.
Tracking script from freelytics
Now that you have got the tracking code, you have 2 options to include this into Wordpress.
Easy Way The easiest way is to install the Insert Headers and Footers plugin.</description></item><item><title>Moving the freelytics API from Golang to Elixir</title><link>https://blog.sodawa.com/blog/moving-the-freelytics-api-from-golang-to-elixir/</link><pubDate>Thu, 16 May 2019 16:22:00 +0000</pubDate><guid>https://blog.sodawa.com/blog/moving-the-freelytics-api-from-golang-to-elixir/</guid><description>You might have read https://ehlers.berlin/open-analytics-a-new-approach/, where I talk about a recent project I started.
In my initial design I chose Elixir as the language that fits best. Via the BEAM VM and the Erlang OTP it can easily handle a massive amount of requests, where some will surely fail and it would nonetheless keep on running almost indefinitely. In addition I can live patch the running system, scale it up, inspect it etc.</description></item><item><title>Lighthouse. A tool to guide us to a better web?</title><link>https://blog.sodawa.com/blog/lighthouse-for-performance-and-sustainability/</link><pubDate>Sat, 20 Apr 2019 12:11:28 +0000</pubDate><guid>https://blog.sodawa.com/blog/lighthouse-for-performance-and-sustainability/</guid><description>Update Since first writing this post I have built a small tool that helps in running a full analysis on a given website. It is available at https://github.com/b-m-f/fafu.
=============================================
Large parts of the web are broken. Most of this is not directly noticeable, since our machines have become so extremely fast, but I am convinced that we have a lot of room for improvement.
Take for example any old (2010ish) device you have lying around and try to browse the web with it for a day.</description></item><item><title>Open and free web analytics, a new approach</title><link>https://blog.sodawa.com/blog/open-analytics-a-new-approach/</link><pubDate>Fri, 05 Apr 2019 16:53:00 +0000</pubDate><guid>https://blog.sodawa.com/blog/open-analytics-a-new-approach/</guid><description>As many other people who run their own website I came to a point where I wanted to get some insights into how other people interact with my blog and what content is most viewed and interesting.
The most obvious solution that many people will stumble upon is Google Analytics.
The biggest benefit here is that it is free up to a certain point and provides a nice dashboard. In addition it is backed by a huge company.</description></item><item><title>Upgrading my blog theme with the Vanilla CSS Framework</title><link>https://blog.sodawa.com/blog/upgrading-my-blog-theme-with-vanilla/</link><pubDate>Fri, 07 Dec 2018 18:16:00 +0000</pubDate><guid>https://blog.sodawa.com/blog/upgrading-my-blog-theme-with-vanilla/</guid><description>Recently I have spent more and more time thinking about the usability of my website and the cleanliness of its code.
This has brought me to another iteration in its design process.
Of course also related to my employment at Canonical I have decided to give our Vanilla Framework a try.
The first thing I had to update is my gulp task to include node_modules during the build.
// CSS gulp.</description></item><item><title>Ghost theme - Part 6: Colours</title><link>https://blog.sodawa.com/blog/ghost-theme-part-6-colours/</link><pubDate>Wed, 21 Nov 2018 11:41:00 +0000</pubDate><guid>https://blog.sodawa.com/blog/ghost-theme-part-6-colours/</guid><description>Time for the final part in this series to finish up all the basics. The colours!
The first thing that comes into my mind here is the fact that this is a blog with a lot of content for reading. So my goal is to make it easy on the eyes and provide a few colourful accentuations here and there.
Again there are great resources on the internet. One of these, that is already pretty common in the programming scene is the solarized theme.</description></item><item><title>Bug hunting on iOS 6.3.1</title><link>https://blog.sodawa.com/blog/bug-hunting-on-6-3-1/</link><pubDate>Wed, 14 Nov 2018 15:35:00 +0000</pubDate><guid>https://blog.sodawa.com/blog/bug-hunting-on-6-3-1/</guid><description>Impulse Me and my SO recently got an old iPad2, which we were planning to use for everyday usage around the house. Meaning, having it ready to research a recipe, get information about a topic or researching things to do together.
Unfortunately though, the iOS version that it came preinstalled with was 9.3.5. On this later version of iOS there is quite a problem with the responsiveness though.
Probably due to the big alterations on the design side the iPad feels slow and has noticeable lags when switching between applications, and even when using the web browser.</description></item><item><title>Ghost theme - Part 5: Typography</title><link>https://blog.sodawa.com/blog/ghost-theme-part-5-typography/</link><pubDate>Wed, 14 Nov 2018 11:40:00 +0000</pubDate><guid>https://blog.sodawa.com/blog/ghost-theme-part-5-typography/</guid><description>The layouting is pretty much done, bar the margins and paddings of the elements. In order to get those figured out nicely I want to introduce the Typography first.
It will surely help to see how much space we will left to play with after both Fonts and their sizes are finished.
Since this topic is huge and complicated I like to use a tool to assist with the choice.</description></item><item><title>Adding Comments</title><link>https://blog.sodawa.com/blog/adding-comments/</link><pubDate>Tue, 13 Nov 2018 11:38:41 +0000</pubDate><guid>https://blog.sodawa.com/blog/adding-comments/</guid><description>The landscape for software that helps in adding comments to a website is does not shine so bright. A few big closed source companies, such as Disqus or Facebook offer an API to integrate comments. The problem with these services is that they own all the data and we have no Idea what we expose the website visitor to.
While Wordpress does come with comments baked into the platform, unfortunately Ghost and others do not.</description></item><item><title>Theme update</title><link>https://blog.sodawa.com/blog/theme-update/</link><pubDate>Fri, 09 Nov 2018 12:33:49 +0000</pubDate><guid>https://blog.sodawa.com/blog/theme-update/</guid><description>By chance I stumbled across an old device with an outdated browser and decided to go with an entirely new approach for the theme of this blog.
The motivation was support for this device, which led to reanalyzing the whole concept of only using modern techniques. An article on this will follow in the next weeks.
The new design and Codebase is much more functional and simple, focusing on content and support for the most devices possible.</description></item><item><title>Ghost theme - Part 4: Finishing the Sidebar</title><link>https://blog.sodawa.com/blog/ghost-theme-part-4/</link><pubDate>Wed, 07 Nov 2018 11:29:00 +0000</pubDate><guid>https://blog.sodawa.com/blog/ghost-theme-part-4/</guid><description>Please Note that this theme is not in use anymore. See this post for more info. On mobile Layouts &amp;lt; 360px width the Sidebar still overflows vertically. Lets fix it and implement the features decided on in Part 3.
First a small screenshot of the problem:
As you can see the Sidebar flows into the other content.
To fix this lets remove some margins and change the nav to list its items horizontally.</description></item><item><title>CSS Modules: the correct code split</title><link>https://blog.sodawa.com/blog/css-modules-the-correct-code-split/</link><pubDate>Sun, 30 Sep 2018 09:26:27 +0000</pubDate><guid>https://blog.sodawa.com/blog/css-modules-the-correct-code-split/</guid><description>There is a lot of talk going on in the JavaScript Frontend Community about using CSSinJS. One example for this are styled-components.
A use of them is explained over at https://www.toptal.com/javascript/styled-components-library .
In this Article I want to name an alternative and talk about some benefits.
What are CSS modules? According to the css-modules github repo:
A CSS Module is a CSS file in which all class names and animation names are scoped locally by default.</description></item><item><title>Ghost theme - Part 3: Mobile Layout</title><link>https://blog.sodawa.com/blog/ghost-theme-part-3-mobile-layout/</link><pubDate>Sat, 22 Sep 2018 17:59:53 +0000</pubDate><guid>https://blog.sodawa.com/blog/ghost-theme-part-3-mobile-layout/</guid><description>Please Note that this theme is not in use anymore. See this post for more info. Here is the third part of this series where we will dive into creating the proper layout for the posts on the front page and figure out a way to display our layout on mobilephones.
Just in case lets bring up the inital sketch again
But before we can jump in and take care of the posts we have a small problem.</description></item><item><title>Ghost theme - Part 2: a Grid</title><link>https://blog.sodawa.com/blog/ghost-theme-part-2-styling/</link><pubDate>Thu, 20 Sep 2018 12:19:25 +0000</pubDate><guid>https://blog.sodawa.com/blog/ghost-theme-part-2-styling/</guid><description>Please Note that this theme is not in use anymore. See this post for more info. In this post I want to start with the styling.
the first thing here is to consult the sketches again.
Since we split out the sidebar into the default layout, we should create a Grid for this first.
The technology I am going to use here is CSS-Grid.
The only to be aware of is the browser support.</description></item><item><title>Creating a new ghost theme - Part 1</title><link>https://blog.sodawa.com/blog/creating-a-new-ghost-theme/</link><pubDate>Thu, 13 Sep 2018 13:30:49 +0000</pubDate><guid>https://blog.sodawa.com/blog/creating-a-new-ghost-theme/</guid><description>Please Note that this theme is not in use anymore. See this post for more info. I want to make my blog more unique and fitting to my style both in code and in looks.
Writing my own theme seems like the right thing to do, given that I am currently looking for a job and having both more free time and wanting to look good to possible employers.
So I want to accompany this with a few blog posts on how I am going about this.</description></item><item><title>Gotede - quickly create a ghost theme development environment</title><link>https://blog.sodawa.com/blog/gotede-quickly-create-a-ghost-theme-development-environment/</link><pubDate>Tue, 11 Sep 2018 15:30:25 +0000</pubDate><guid>https://blog.sodawa.com/blog/gotede-quickly-create-a-ghost-theme-development-environment/</guid><description>When setting up a new theme for this blog, I ran into the issue of quickly setting up a development environment on my local machine to test out ideas.
So I went on to duckduckgo.com and quickly found this blog article.
Taking it as an inspiration I wrote a small script to publish on npm to make it easier for future themes and other people as well. You can find it at https://github.</description></item><item><title>Privacy Policy</title><link>https://blog.sodawa.com/privacy-policy/</link><pubDate>Mon, 16 Jul 2018 15:15:32 +0000</pubDate><guid>https://blog.sodawa.com/privacy-policy/</guid><description>Website Analytics Some posts are registered with the VG WORT and have a unique tracking pixel per post to count the number of unqiue visits. Since I am not listing them all individually here, please assume that a tracking pixel is integrated on all posts.
Logging The Webserver is writing log data with IP-Adresses of the visitors.
Contact Me If you have any questions about this Privacy Policy, please contact me at privacy at sodawa dot com</description></item><item><title>Fixing broken Wifi after Fedora upgrade</title><link>https://blog.sodawa.com/blog/fixing-broken-wifi-after-fedora-upgrade/</link><pubDate>Sun, 15 Jul 2018 17:05:00 +0000</pubDate><guid>https://blog.sodawa.com/blog/fixing-broken-wifi-after-fedora-upgrade/</guid><description>Gnome is nagging about updates and I finally decided to run dnf upgrade.
As always it worked pretty smoothly and after a short while, my computer was up to date again.
I was able to continue my tasks and all seemed well. At least until I rebooted. Suddenly my network connections did not work anymore.
All WIFI networks are visible, but no connection wanted to work.
In this post I want to outlie the steps that I took to get it working again.</description></item><item><title>Making VSCode respect Linux key rebindings</title><link>https://blog.sodawa.com/blog/vscode-not-respecting-linux-key-rebindings/</link><pubDate>Tue, 10 Jul 2018 17:02:00 +0000</pubDate><guid>https://blog.sodawa.com/blog/vscode-not-respecting-linux-key-rebindings/</guid><description>Im using VSCode with vim-mode ALOT. So for the comfort of not having to stretch my fingers too much I have decided to switch my ESC and Capslock key.
Unfortunately though, VSCode did not seem to respect any of the changes that I had made via the gnome-tweak-tool.
AFTER WRITING IN ALL CAPS MULTIPLE TIMES I figured I should get to the bottom of this.
TL;DR
This is something that might be broken by us dispatching based on scan codes.</description></item><item><title>Intro to Webpack</title><link>https://blog.sodawa.com/blog/intro-to-webpack-4/</link><pubDate>Thu, 05 Jul 2018 17:15:28 +0000</pubDate><guid>https://blog.sodawa.com/blog/intro-to-webpack-4/</guid><description>Alot of Webpack introdutions focus on how to set up your first webpack configuration.
What I want to do in this article is taking a step back and look at what webpack is actually doing before going into the setup and all its complications.
The problem In the frontend we have a variety of targets that we want our applications to run in, and they are all browsers. Some old, some new.</description></item><item><title>Getting in touch</title><link>https://blog.sodawa.com/contact/</link><pubDate>Tue, 03 Jul 2018 05:12:35 +0000</pubDate><guid>https://blog.sodawa.com/contact/</guid><description>It is easiest to get in touch with me via contact at ehlers.berlin and twitter.
And in case you want to find out some more before contacting me, you can check out some of my other profiles:
Github: https://github.com/b-m-f LinkedIn: https://linkedin.com/in/maximilianehlers</description></item><item><title>Better boundaries in JS</title><link>https://blog.sodawa.com/blog/better-boundaries-in-js/</link><pubDate>Fri, 29 Jun 2018 17:36:00 +0000</pubDate><guid>https://blog.sodawa.com/blog/better-boundaries-in-js/</guid><description>JavaScript code structuring is quite difficult. A lot of frameworks and projects have come up with ways that work for them.
In this post I want to show a new technique that I have used on a side project.
In essence you define one Object for each domain, that clearly encapsulates everything that belongs to its domain. The implementation details are not written in that file though, as it would probably get huge.</description></item><item><title>Connecting to IRC through bouncer</title><link>https://blog.sodawa.com/blog/connecting-to-irc-through-bouncer/</link><pubDate>Fri, 09 Mar 2018 14:18:00 +0000</pubDate><guid>https://blog.sodawa.com/blog/connecting-to-irc-through-bouncer/</guid><description>What does this do? Instead of directly connecting to an IRC server from your computer, you can have a bouncer running on your servers. This will let you stay connected to channels all the time and receive messages, which you can later read when you connect to the bouncer from home.
Another benefit is that you will appear in all chat rooms via the reverse DNS of your bouncer, and not your home IP.</description></item><item><title>Testable modules</title><link>https://blog.sodawa.com/blog/testable_modules/</link><pubDate>Sun, 25 Feb 2018 18:56:00 +0000</pubDate><guid>https://blog.sodawa.com/blog/testable_modules/</guid><description>We should write our code in a Test Driven style. I agree. Yet I find myself working on small side projects quite frequently, where I just want to hack something and make it work.
Now, lets say I actually want to keep growing my codebase, but it is all untested
I could easily look at every file, mirror it into a test directory and then write my tests there, while switching between files constantly.</description></item><item><title>Introductory frontend perfomance case on amazon.com</title><link>https://blog.sodawa.com/blog/introductory-frontend-perfomance-case-on-amazon-com/</link><pubDate>Fri, 16 Feb 2018 18:45:00 +0000</pubDate><guid>https://blog.sodawa.com/blog/introductory-frontend-perfomance-case-on-amazon-com/</guid><description>The first question you should ask yourself when thinking about Performance optimizations is the following:
Is my service unique enough to focus more on features and only do rudimentary performance optimizations, or do I rely on being the best in the business to attract costumers?
If you need to be the best because of generic features you should invest in the performance part, and here it is all about perceived performance.</description></item><item><title>(react-) frontend perfomance monitoring</title><link>https://blog.sodawa.com/blog/react-frontend-perfomance-monitoring/</link><pubDate>Fri, 16 Feb 2018 17:14:00 +0000</pubDate><guid>https://blog.sodawa.com/blog/react-frontend-perfomance-monitoring/</guid><description>Frontend performance monitoring from scratch The first question you should ask yourself when thinking about Performance optimizations is the following:
Is my service unique enough to focus more on features and only do rudimentary performance optimizations, or do I rely on being the best in the business to attract costumers?
If you need to be the best because of generic features you should invest in the performance part, and here it is all about perceived performance.</description></item><item><title>AB testing bundles with webpack</title><link>https://blog.sodawa.com/blog/ab-testing-bundles-with-webpack/</link><pubDate>Tue, 03 Oct 2017 16:43:00 +0000</pubDate><guid>https://blog.sodawa.com/blog/ab-testing-bundles-with-webpack/</guid><description>In this post I want to show you a quick way to get some basic AB testing functionality in place via a webpack loader.
All code can be found at my github repo.
The basic page Lets say we have the following page running in production:
Unfortunately the picture that was here has been lost into the void
The App component looks like this
import React from 'react'; import Button from '.</description></item><item><title>Running parity on Fedora 26</title><link>https://blog.sodawa.com/blog/running-parity-on-fedora-26/</link><pubDate>Sat, 09 Sep 2017 18:54:00 +0000</pubDate><guid>https://blog.sodawa.com/blog/running-parity-on-fedora-26/</guid><description>Parity is my favourite Ethereum client. Unfortunately there are no builds ready for Fedora, which I came to appreciate recently (after switching from Arch).
The obvious solution is once again - Docker.
If you have no previous Parity data saved and you do not want to persist the files outside of your container you can pretty much just follow the instructions at https://github.com/paritytech/parity/wiki/Docker.
Otherwise you probably want to keep reading to avoid some annoyances.</description></item><item><title>Security and convenience with Docker private networks</title><link>https://blog.sodawa.com/blog/security-and-convenience-with-docker-private-networks/</link><pubDate>Mon, 14 Aug 2017 18:56:00 +0000</pubDate><guid>https://blog.sodawa.com/blog/security-and-convenience-with-docker-private-networks/</guid><description>Docker is great, and I do not want to write much about what it does, but rather a problem that I have faced in my setup.
What I wanted to do was hosting a webserver inside of 1 container and a git client (https://github.com/go-gitea/gitea) in another. The webserver should be able to proxy requests from a certain url to the git client.
First attempt What I did first was exposing a port on my git client as follows:</description></item><item><title>Multi Tenant React.js starter</title><link>https://blog.sodawa.com/blog/multi-tenant-react-js-starter/</link><pubDate>Fri, 07 Jul 2017 18:53:00 +0000</pubDate><guid>https://blog.sodawa.com/blog/multi-tenant-react-js-starter/</guid><description>Let me start this article with the requirements that it is going to adress, so you know if you want to continue.
You have multiple tenants (websites) the clients should share components between each other to increase development speed of new tenants SSR has to be supported build configs are the same, but can be extended Since these are quite a few things and a lot of good stuff is already open source I am only going to focus on what needs to be added onto the great react-starter-kit.</description></item><item><title>Deploying SSL secured website in 10 minutes</title><link>https://blog.sodawa.com/blog/deploying-ssl-secured-website-in-10-minutes/</link><pubDate>Fri, 07 Jul 2017 12:12:00 +0000</pubDate><guid>https://blog.sodawa.com/blog/deploying-ssl-secured-website-in-10-minutes/</guid><description>Caddy Through a colleague I have recently stumbled upon caddy. It is a new Webserver written in Go.
You might think why not use nginx?, and this was exactly my question. The answer is best explained by the following config file for caddy:
ehlers.space Yup, that is it. This will run this blog with SSL through Letsencrypt and keep it up to date. No need for manual certification extending or even using the auto-cert bot.</description></item><item><title>Frontend Microservices</title><link>https://blog.sodawa.com/blog/frontend-microservices/</link><pubDate>Fri, 19 May 2017 18:52:00 +0000</pubDate><guid>https://blog.sodawa.com/blog/frontend-microservices/</guid><description>Frontend Microservices With this article I want to show you the basic idea behind Microservices on the Frontend, or at least how I understood it.
The first thing to do is set up a small skeleton website that I will divide visually into 3 parts that each have some content. For this I am using the new CSS Grid functionality.
Here is a Screenshot (and the files if you want to follow along):</description></item><item><title>Building a Desktop App with Electron and Vue.js</title><link>https://blog.sodawa.com/blog/building-a-desktop-app-with-electron-and-vue-js/</link><pubDate>Wed, 09 Nov 2016 18:49:00 +0000</pubDate><guid>https://blog.sodawa.com/blog/building-a-desktop-app-with-electron-and-vue-js/</guid><description>Building a Desktop App with Electron and Vue.js Recently my girlfriend asked me if I knew a good app for taking Notes of Sources when researching something for university. I did not know any from the top of my head so I thought I should just build one myself. Since she would like to have a Desktop application I remembered this [Changlog episode] podcast and decided to give Electron a go.</description></item><item><title>Interactive rebasing with git</title><link>https://blog.sodawa.com/blog/interactive-rebasing-with-git/</link><pubDate>Thu, 13 Oct 2016 18:51:00 +0000</pubDate><guid>https://blog.sodawa.com/blog/interactive-rebasing-with-git/</guid><description>First post oh yeah Finally I have found the time to start writing a post. To start off this Blog I want to write about some tips and tricks that help me in my daily programming endeavours. The first one will be
git rebase -i git rebase -i stands for interactive rebasing.
This can help you when you want to add some changes to an earlier commit for example, which can aid alot with code reviews.</description></item></channel></rss>