Feb 7, 2021

FOSDEM 2021 edition takes place online. I won’t miss the overcrowded rooms, the slightly overlapping sessions at opposite sides of the campus, the driving under the marginal weather conditions, the queue for not-so-great food or eating my own spartian lunch. What I surely miss: the atmosphere, the chance to join a session with former colleagues, chat with random people from many countries, grab some swags, remember the years I studied there, and feel the energy.

Some presentations were only "meeeh" IMO (I was disappointed by what I watched on go-lang, maybe I got unlucky). Some presenters would definitely better not act like they are trying to get more followers, wasting 6-7 minutes out of 25 on self-promotion — we can read your bio, right, get to the point.

Playbacks will be available in a few days I believe.

Here are my top picks from the session I attended. Thank you for all the fish 👋

Practical advice for using Mypy

Some people love python also because it is dynamically typed, some people are allergic to it. Using type hints can partly reconcile you with the language — or further upset you, in case you feel it is a half-baked solution that does not fit.

At any rate, introducing Mypy:

  • Exhaustiveness checking

  • Type narrowing to check all typing cases are handled

  • assert_never() and NoReturn are neat

  • Catching errors at "compile time"

  • Write less trivial tests

  • Framework can be introduced gradually

Practical Introduction to FXGL Game Engine

Helps you with the heavy lifting of animations, detection collision, variable bindings, with or without listeners. You can implement easing with a fluent API with no sweat. All mundane things that would be extremely tedious to implement in a manual game loop.

I believe Java can be a sound choice for building a game. Recent versions are faster than ever and the JVM footprint has become small and certainly acceptable if you are not trying to squeeze it.

Compiling to WebAssembly

Using…​ Scheme 😻 The author first shows the desired WA output…​ by coding it (in emacs), and it is horrible like any bytecode, maybe even worse.

How Python inserts 'self' into methods

  • Function (that belongs to a class) vs bound method

  • dunder methods (get, set, delete, …​)

Not enough time to do more than brushing the subject but a good explanation of otherwise somewhat less known mechanisms.

Migrating from Imperative to Reactive then Coroutines a Spring Boot application

Long time since I did Java/Kotlin (other than some OpenJFX). The involvement this reactive shift requires is not trivial.

  • Migrate to functional API first (easier)

  • Everything needs to be reactive (Blockhound is your friend)

  • More work but doable

  • Coroutines make non-blocking easier

  • Don’t go Reactive because others do

Sharing is caring!