On August 17th 2004 my firstborn son Gerard passed away suddenly at the age of 17. This text will remain where ever I have a website in rememberance of him.

I became a Grandpa

Today I became a grandpa for the first time. Logan Gerard Smits is born. I am so incredibly happy for Carmen and Coen. If there are people that will be great parents it’s those two. (yes I am prejudiced). I am sitting here behind my desk, looking at this screen, listening to gregorian chants and trying to understand my feelings. Like I said I am over the moon with happiness and at the same time a great sadness is in me.

Kotlin extensions

Extensions are a very powerful mechanism to extend functionality on a class. As a lot of classes in the java eco system are closed for (easy) adding functionality. The extension system of Kotlin makes it easy. Here are a few I really like to use: /** * Rounds a double to the specified decimals */ fun Double.round(decimals: Int): Double { var multiplier = 1.0 repeat(decimals) { multiplier *= 10 } return round(this * multiplier) / multiplier } /** * Opens a file on the classpath as an InputStream */ fun String.

Some nice youtube video's about intellij

Gerard & my believe system

I was going trough some old old archives and I found the blog I had when Gerard died. Most of the entries are what you expect pain, loss and anger from a parent. I did find my attempt to write down my believe system and I decided to at least repost that one. This was written august 22, 2004. An event like Gerard’s death will always bring your believe system into play.

Building a maven plugin

Fxlauncher is a auto updating launcher for javafx programs. Download a small jar (around 18Kb), start it and it will download the actual application and run it. Every time you start the small jar it will check if there is a newer version and download it automatically. So fxlauncher is a fun project and it will make keeping a desktop application uptodate easy. Setting up fxlauncher from Maven was not so easy.

keepassFX release coming closer

It’s coming closer. For more then a year I have been working on a javafx application that enables the user to use keepass files without having to use wine or mono on a Mac or Linux machine. From the readme in the repository: This program started because of the buying of lastpass by logmein. As you can read on the interweb Logmein seems to have a bad reputation concerning pricing and taking free and freemium offers away once they bought a company.

Forms in TornadoFX

Any kind of user oriented application whether it’s a web application, a mobile application or a desktop application, there will be interaction with the user. That interaction is usually some kind of “fill in these fields please, so something can happen”. KeepassFX has several such interactions. And of course they are implemented with tornadoFX builders. The nice thing about developing keepassFX while constantly talking in the Slack tornadoFX channel means that usecases I encounter will very often result in updates in the builders.

windows 10

This is a rant. My desktop is not the newest. But in general it suits me quite well. You can see a full listing of the machine here. The machine is called Frankenstein as it is built and rebuilt over the years, new cpu, new motherboard, memory upgrade and yesterday I decided to add a second SSD and install windows 10 on it. Windows 10 was already installed on a normal 1T HD.

Great little library for command line args

I needed to a commandline args to a java program the other day and I did not feel like writing out all the code to do it. There are several very good libraries to parse command line args, so I decided to use jopt-simple. What made me decide to use it was the nice fluent interface: OptionParser parser = new OptionParser(); parser.accepts("f", "Json file to process").withRequiredArg().ofType(String.class).describedAs("path to the file"); parser.accepts("b", "Branch to process").

TornadoFX & Guice

KeepassFX contains the UI running in the JavaFX thread and an embedded jetty server running in its own thread. They both need access to the same data. To make this possible, I use Guice to inject dependencies into the code. Using Guice with TornadoFX is quite easy. configuring Guice Guice needs to be started with one or more classes that implement either AbstractModule or ServletModule. class GuiceConfigurator : AbstractModule() { override fun configure() { logger.

TornadoFX it's also a CDI framework

During a nice talk in the tornadoFX slack channel one of the members noticed that his Fragments were being added to the view he was working on, but they did not receive any event(like onDock). The reason was that he manually instantiated the fragments: this += MyFragment(0.0, 0.0, it) The MyFragment gets instantiated manually, this is the same as in java new MyFragment(0.0, 0.0, 0.0, it) Because of this the init function of the Fragment (or the overridden init in MyFragment) was never called and the fragment never received the onDock event which means it will never add itself.

Detect that a javaFX/TornadoFX application has not been used

For KeepassFX I needed a way to close the UI when the UI has not been used for a certain amount of time (15 minutes by default) This turned out to be much easier then I thought as I only have one stage to keep track off: First in the App.kt override the start method: override fun start(stage: Stage) { super.start(stage) idleTimer = fixedRateTimer(name = "idle-timer", period = 1000) { if (!

Ignore bluecoat proxy ssl

Bluecoat proxy uses a man in the middle attack to monitor https connections. Git does not like that and will throw an ssl verification error: $ git pull fatal: unable to access 'https://gitlab.com/ron.smits/javafxspielerei.git/': SSL certificate problem: unable to get local issuer certificate This can be ignored by using git config http.sslVerify false Do not do this lightly!!!

Interesting links

Hype cycle numbered headings in Markdown using CSS

first post with hugo

First post using Hugo as engine. The idea of generating a static site generator instead of installing some kind of blogging software that is hardly used to its full potential and basically is nothing but a memory hungry layer on top of an application server of some kind. Being able to just post using markdown is a big plus too. Just focus on the writing and not on the way it looks.

wicket and tomee

Two weeks of holiday means time to finally play with some things I had on my list for quite some time now. One of them was Tomee. I have always been interested in JEE applications. Coming from the old old EJB 1 I remember the pain of working with it and I switched quite fast to Spring. A lot has changed in the years and EJB 3 and 3.1 are a delight to work with.

Change where wicket 6 gets the html templates

I have been using wicket for a long time. The one thing I don’t really like is the way the markup html is being handled. This is what “wicket in action” says: Wicket’s default way of locating resources enable you to quickly switch between the Java files and markup files during development because they’re right next to each other. Also, with this algorithm, your package components are immediately reusable without users having to configure where the templates are loaded from; if the components’ class can be found in the class path, so can their resources.

wicket 6, SSL and development

Currently I am writing a small wicket based application for a telecom provider in the netherlands. As the customer will login to the system SSL needed to be setup. I had already dones this a few times with older versions of wicket but never with Wicket 6.0.0. released just last week. I always use Jetty to run the application from maven during development. I starts fast and is lightweight. I also dont want to be bothered with the SSL certificate during development.