<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>Posts on Andreas Billmann Blog</title>
    <link>https://www.billmann.de/post/</link>
    <description>Recent content in Posts on Andreas Billmann Blog</description>
    <generator>Hugo -- gohugo.io</generator>
    <language>en-us</language>
    <lastBuildDate>Thu, 03 Nov 2022 02:00:00 +0200</lastBuildDate><atom:link href="https://www.billmann.de/post/index.xml" rel="self" type="application/rss+xml" />
    <item>
      <title>Sticky Session Controller for Kubernetes</title>
      <link>https://www.billmann.de/post/2022/11/03/sticky-session-controller/</link>
      <pubDate>Thu, 03 Nov 2022 02:00:00 +0200</pubDate>
      
      <guid>https://www.billmann.de/post/2022/11/03/sticky-session-controller/</guid>
      <description>&lt;p&gt;In this post I want to show an implemention of a sticky session controller for kubernetes in .net6.
Some ingress controller for kubernetes support sticky session handling, like Traefik. The provided
solution for Traefik is based on cookies. But what if a client can not handle cookies? Or a more
complex strategy is needed to find the right instance of a pod?&lt;/p&gt;</description>
    </item>
    
    <item>
      <title>Change database connection based on path to support multitenancy</title>
      <link>https://www.billmann.de/post/2019/11/19/change-database-connection-based-on-path/</link>
      <pubDate>Tue, 19 Nov 2019 02:00:00 +0200</pubDate>
      
      <guid>https://www.billmann.de/post/2019/11/19/change-database-connection-based-on-path/</guid>
      <description>&lt;p&gt;In this post I want to show an implemention of a lightweight multitenancy solution with ef core.
The solution will use a database per tenant and the database connection is set up on every request based on the path.
The first part of the path is the tenant id and is used as the database name.&lt;/p&gt;</description>
    </item>
    
    <item>
      <title>Setup MicroK8s</title>
      <link>https://www.billmann.de/post/2019/11/12/setup-microk8s/</link>
      <pubDate>Tue, 12 Nov 2019 20:00:00 +0200</pubDate>
      
      <guid>https://www.billmann.de/post/2019/11/12/setup-microk8s/</guid>
      <description>&lt;p&gt;I needed a test kubernetes cluster to deploy my applications during the development. I have a Intel NUC which is perfect as small server and installed Ubuntu Server 19.10 and at the end of the installation the setup asked if I want to install &lt;a href=&#34;https://microk8s.io/&#34;&gt;MicroK8s&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;As I have only installed a full featured kubernetes cluster on linux and on Windows I am using Docker Desktop for Windows with Kubernetes, I thought I give it a try.&lt;/p&gt;
&lt;p&gt;It took a little while, but I ended up with a nice little kubernetes running which is perfect for my needs.&lt;/p&gt;</description>
    </item>
    
    <item>
      <title>SmartCSV.fx Version 1.0.0</title>
      <link>https://www.billmann.de/post/2019/10/24/smartcsv-version-1-released/</link>
      <pubDate>Thu, 24 Oct 2019 22:08:49 +0200</pubDate>
      
      <guid>https://www.billmann.de/post/2019/10/24/smartcsv-version-1-released/</guid>
      <description>After a long time of inactivity, I managed to release version 1.0.0
A former colleague asked me for a feature for SmartCSV.fx. He needed the ability to set the encoding. I was about to program it, when I saw that I had received a PullRequest that solved the problem.
This motivated me to write two of the outstanding issues on the way to release 1.0.0.
SmartCSV.fx now supports changing the order of columns using drag&amp;rsquo;n&amp;rsquo;drop and I created an official logo.</description>
    </item>
    
    <item>
      <title>Develop With Containers</title>
      <link>https://www.billmann.de/post/2019/01/04/develop-with-containers/</link>
      <pubDate>Fri, 04 Jan 2019 22:36:08 +0100</pubDate>
      
      <guid>https://www.billmann.de/post/2019/01/04/develop-with-containers/</guid>
      <description>&lt;p&gt;When using docker for developing a microsoervice architecture, than the easiest way to let them run on a development machine is by putting all pieces into docker containers
and let the debugger debug into the docker container.&lt;/p&gt;
&lt;p&gt;This can slow down your development process as a change in the application can result in a compile, build image, start container process.
And the classic way of comiple and run in the IDE tend to be a lot faster.&lt;/p&gt;
&lt;p&gt;So I came up with a solution that our nginx reverse proxy does not send the request to the containers, that I am working on, but to the host.
And all containers I am not working on are running as containers.&lt;/p&gt;
&lt;p&gt;In my example, I have a simple .NET core REST-API as backend server I am working on, an Angular application as frontend I am working on and another backend service which is
just used as it is.&lt;/p&gt;</description>
    </item>
    
    <item>
      <title>Configure URL from server before http-request in Angular</title>
      <link>https://www.billmann.de/post/2017/08/16/configure-url-from-server-before-http-request-in-angular/</link>
      <pubDate>Wed, 16 Aug 2017 21:35:33 +0200</pubDate>
      
      <guid>https://www.billmann.de/post/2017/08/16/configure-url-from-server-before-http-request-in-angular/</guid>
      <description>&lt;p&gt;Setting the url in the environment was not useful, as each customer needs
his own url and this would end up in big build scripts.&lt;/p&gt;
&lt;p&gt;Also the customer could not reorganize the server names on his own, without
breaking the application if he chooses to change the server name.&lt;/p&gt;</description>
    </item>
    
    <item>
      <title>Angular ControlValueAccessor by example</title>
      <link>https://www.billmann.de/post/2017/08/08/controlvalueaccessor-by-example/</link>
      <pubDate>Tue, 08 Aug 2017 23:05:44 +0200</pubDate>
      
      <guid>https://www.billmann.de/post/2017/08/08/controlvalueaccessor-by-example/</guid>
      <description>&lt;p&gt;At sLAB we currently develop an angular client for the &lt;a href=&#34;http://www.smotive.de/&#34;&gt;sMOTIVE&lt;/a&gt; product. We wanted to extend some form controls with own behavior and had some issues with the ControlValueAccessor.&lt;/p&gt;</description>
    </item>
    
    <item>
      <title>Migrating climbing course website to Angular</title>
      <link>https://www.billmann.de/post/2017/03/18/migrating-t5-kletterkurs-de-to-angular-2/</link>
      <pubDate>Sat, 18 Mar 2017 00:01:49 +0200</pubDate>
      
      <guid>https://www.billmann.de/post/2017/03/18/migrating-t5-kletterkurs-de-to-angular-2/</guid>
      <description>&lt;p&gt;As my company decides to evaluate Angular 2 as our new framework to build our web application, I thought it would be a good experience to migrate one of my own projects to Angular 2.&lt;/p&gt;</description>
    </item>
    
    <item>
      <title>Kotlin and TornadoFX</title>
      <link>https://www.billmann.de/post/2016/10/19/kotlin-and-tornadofx-2/</link>
      <pubDate>Wed, 19 Oct 2016 16:37:21 +0200</pubDate>
      
      <guid>https://www.billmann.de/post/2016/10/19/kotlin-and-tornadofx-2/</guid>
      <description>&lt;p&gt;As I have changed the JSON for configure the SmartCSV.fx from my own Schema to JSON Table Schema, I had to provide a converter for existing configurations.&lt;/p&gt;
&lt;p&gt;I wanted to write less code than I typically do in Java and learn something new. Therefor I started a new project in &lt;a href=&#34;http://kotlinlang.org/&#34;&gt;Kotlin&lt;/a&gt; a programming language invented by &lt;a href=&#34;https://www.jetbrains.com/&#34;&gt;JetBrains&lt;/a&gt;, the people behind the excellent IntelliJ IDEA IDE.&lt;/p&gt;</description>
    </item>
    
    <item>
      <title>SmartCSV.fx version 0.9</title>
      <link>https://www.billmann.de/post/2016/10/19/smartcsv-fx-version-0-9/</link>
      <pubDate>Wed, 19 Oct 2016 02:31:39 +0200</pubDate>
      
      <guid>https://www.billmann.de/post/2016/10/19/smartcsv-fx-version-0-9/</guid>
      <description>&lt;p&gt;The newest version of SmartCSV.fx has some major changes. The most important one is the support of the JSON Table Schema from the Open Knowledge Foundation.&lt;/p&gt;</description>
    </item>
    
    <item>
      <title>SmartCSV.fx version 0.6</title>
      <link>https://www.billmann.de/post/2016/08/08/smartcsv-fx-version-0-6/</link>
      <pubDate>Mon, 08 Aug 2016 02:44:12 +0200</pubDate>
      
      <guid>https://www.billmann.de/post/2016/08/08/smartcsv-fx-version-0-6/</guid>
      <description>&lt;p&gt;As the interest in the project grows, I revisited the validation algorithm and refactored it.&lt;/p&gt;</description>
    </item>
    
    <item>
      <title>SmartCSV.fx version 0.4</title>
      <link>https://www.billmann.de/post/2016/07/30/smartcsv-fx-version-0-4/</link>
      <pubDate>Sat, 30 Jul 2016 13:17:11 +0200</pubDate>
      
      <guid>https://www.billmann.de/post/2016/07/30/smartcsv-fx-version-0-4/</guid>
      <description>&lt;p&gt;Improved performance and some nice additional features to help the user finding the errors.&lt;/p&gt;</description>
    </item>
    
    <item>
      <title>SmartCSV.fx</title>
      <link>https://www.billmann.de/post/2015/11/29/smartcsv-fx-2/</link>
      <pubDate>Sun, 29 Nov 2015 13:48:01 +0200</pubDate>
      
      <guid>https://www.billmann.de/post/2015/11/29/smartcsv-fx-2/</guid>
      <description>&lt;p&gt;At work I have the need to fix wrong CSV files from customers. It is hard to find the errors and fix them in a texteditor, even in a “normal” CSV editor. So I decided to write this simple JavaFX application.&lt;/p&gt;</description>
    </item>
    
    <item>
      <title>GeoFroggerFX 2.0 Development Preview</title>
      <link>https://www.billmann.de/post/2015/03/19/geofroggerfx-2-0-development-preview/</link>
      <pubDate>Thu, 19 Mar 2015 13:52:26 +0200</pubDate>
      
      <guid>https://www.billmann.de/post/2015/03/19/geofroggerfx-2-0-development-preview/</guid>
      <description>&lt;p&gt;I rewrote the GeoFroggerFX application for several reasons.&lt;/p&gt;</description>
    </item>
    
    <item>
      <title>New features for GeoFroggerFX</title>
      <link>https://www.billmann.de/post/2013/09/29/new_features_for_geofroggerfx/</link>
      <pubDate>Sun, 29 Sep 2013 15:39:29 +0200</pubDate>
      
      <guid>https://www.billmann.de/post/2013/09/29/new_features_for_geofroggerfx/</guid>
      <description>&lt;p&gt;I added H2 Database, JPA and a groovy plugin interface to the application.&lt;/p&gt;</description>
    </item>
    
    <item>
      <title>Second preview of GeoFroggerFX the JavaFX application</title>
      <link>https://www.billmann.de/post/2013/09/11/second-preview-of-geofroggerfx-the-javafx-application/</link>
      <pubDate>Wed, 11 Sep 2013 15:49:57 +0200</pubDate>
      
      <guid>https://www.billmann.de/post/2013/09/11/second-preview-of-geofroggerfx-the-javafx-application/</guid>
      <description>&lt;p&gt;This is the second preview of GeoFroggerFX my little geocaching application written in JavaFX.&lt;/p&gt;</description>
    </item>
    
    <item>
      <title>Video of GeoFroggerFX handling 11.334 Caches</title>
      <link>https://www.billmann.de/post/2013/09/09/video-of-geofroggerfx-handling-11-334-caches/</link>
      <pubDate>Mon, 09 Sep 2013 15:50:54 +0200</pubDate>
      
      <guid>https://www.billmann.de/post/2013/09/09/video-of-geofroggerfx-handling-11-334-caches/</guid>
      <description>&lt;p&gt;This little video shows a preview of the GeoFroggerFX application handling more than 10.000 items in the ListView. Currently the items are read and parsed from a gpx file with 124Mb and the domain objects are still in memory.&lt;/p&gt;</description>
    </item>
    
    <item>
      <title>JavaFX: custom ListCell</title>
      <link>https://www.billmann.de/post/2013/07/03/javafx-custom-listcell/</link>
      <pubDate>Wed, 03 Jul 2013 15:51:55 +0200</pubDate>
      
      <guid>https://www.billmann.de/post/2013/07/03/javafx-custom-listcell/</guid>
      <description>&lt;p&gt;I have a list of geocaches in my GeoFroggerFX (replacement for my GeoCachingFrogger based on Netbeans)
which should provide more information in a row.&lt;/p&gt;</description>
    </item>
    
    <item>
      <title>JavaFX: MiniIcon(Animation)Button refactored</title>
      <link>https://www.billmann.de/post/2012/08/22/javafx-miniiconanimationbutton-refactored/</link>
      <pubDate>Wed, 22 Aug 2012 15:52:37 +0200</pubDate>
      
      <guid>https://www.billmann.de/post/2012/08/22/javafx-miniiconanimationbutton-refactored/</guid>
      <description>&lt;p&gt;Jonathan Giles wrote in his Blog that&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;This kind of code should be polished and added to the &lt;a href=&#34;http://jfxtras.org/&#34;&gt;JFXtras project&lt;/a&gt;!&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;So I thought this would be a good start to learn more about JavaFX internals and how to do it the right way. There is a &lt;a href=&#34;http://www.parleys.com/#st=5&amp;amp;id=2789&#34; title=&#34;Custom UI Controls talk&#34;&gt;talk at parleys&lt;/a&gt; where Jasper Potts and Jonathan Giles talk about creating a custom UI control. I wish I had seen this earlier.&lt;/p&gt;</description>
    </item>
    
    <item>
      <title>JavaFX: MiniIconAnimationButton</title>
      <link>https://www.billmann.de/post/2012/08/05/javafx-miniiconanimationbutton/</link>
      <pubDate>Sun, 05 Aug 2012 15:53:16 +0200</pubDate>
      
      <guid>https://www.billmann.de/post/2012/08/05/javafx-miniiconanimationbutton/</guid>
      <description>&lt;p&gt;In &lt;a href=&#34;http://www.billmann.de/2012/07/16/javafx-glowing-icon-button-as-an-eye-catcher/&#34; title=&#34;JavaFX: glowing icon button as an eye-catcher&#34;&gt;the last JavaFX blog post&lt;/a&gt; I showed how a button with an glowing effect can be used to catch the users attention. In this blog post I develop a button based on StackPane to have a normal button in the back and an optional animating image icon in the front.&lt;/p&gt;</description>
    </item>
    
    <item>
      <title>JavaFX: glowing icon button as an eye-catcher</title>
      <link>https://www.billmann.de/post/2012/07/16/javafx-glowing-icon-button-as-an-eye-catcher/</link>
      <pubDate>Mon, 16 Jul 2012 16:08:42 +0200</pubDate>
      
      <guid>https://www.billmann.de/post/2012/07/16/javafx-glowing-icon-button-as-an-eye-catcher/</guid>
      <description>&lt;p&gt;These buttons inform the user that there is some waiting work which has to be finished or some incoming messages are waiting.&lt;/p&gt;</description>
    </item>
    
    <item>
      <title>JasperReports - Subreport-DataSource</title>
      <link>https://www.billmann.de/post/2011/12/01/jasperreports-subreport-datasource/</link>
      <pubDate>Thu, 01 Dec 2011 16:10:26 +0200</pubDate>
      
      <guid>https://www.billmann.de/post/2011/12/01/jasperreports-subreport-datasource/</guid>
      <description>&lt;p&gt;In project I had the case that I had to pass the complete datasource of the parent report to a subreport.&lt;/p&gt;</description>
    </item>
    
  </channel>
</rss>
