As we continue to work on the TornadoFX Guide it’s becoming clear that some things are hard to describe well in the documentation format. We’ve come up with a process where someone writes a small app and then I try to react live to that code with the purpose of explaining best practices or simply how to use more of the features of TornadoFX.

It’s important to note that there is no right way with TornadoFX. There is only your way. Many frameworks dictate a workflow for you, and you’re more or less forced to walk that exact path. This is often enforced in the form of interfaces you need to implement to access certain functionality. TornadoFX gives you more freedom to express yourself in your own way. Some like imperative style, others like to be more declarative.

Yesterday we did another React Video in this format, the result is below:

I talked to Carl after the session, and he explained the reason for the usage of events. The sample was built with the MVVM pattern in mind, and the events make sure it’s easy to split the classes into smaller parts as the functionality grows.

As a result of this “React Session” we found a way to make sure that `runAsync` has access to the `Task` so you can call `updateMessage()` and the other member functions in `Task`. This feature will be available in TornadoFX 1.5.10, due to be released next week.

My hope is that these videos will show you what our documentation can’t, and that it will help you to develop your own expression in your TornadoFX code.