Flexiblere Online-Meetings mit “Gather”

Wenn sich 10 Personen in der Realität treffen, sitzen nicht immer alle an einem Tisch und reden miteinander. Es gibt immer auch Kleingruppen, die sich spontan entwickeln und wieder trennen und wieder neu fügen.

Klassische Video-Konferenzdienste wie Google Meet, Zoom, Whereby, Webex, Microsoft Teams, Facetime, etc sind spezialisiert auf einen gemeinsamen “Meetingraum”, meist mit einer Galerie von Leuten in Rechtecken, oder einem “zeige nur die Person, die gerade spricht”-Interface auf kleineren Geräten (smartphones).

Es gibt aber auch flexiblere Video-Meeting Dienste, wo man Teilgruppen bilden kann und sich in solchen ein und ausklinken kann, ohne den Dienst zu “verlassen”.

Der scheinbar populärste solcher Dienste heißt “Gather“. Er kombiniert ein retro 2D Videospiel “look & feel” mit eingebetteten Mini-Spielen und klassischen Video-Konferenz Funktionen.

Nach kurzem googeln fand ich einen englischen Artikel und einen deutschen Artikel, in denen der Dienst mehr oder weniger kritisch beleuchtet wird.

Gather bietet eine kostenlose Variante (bis zu 25 Teilnehmer).

Alternative ähnliche Dienste listet dieser Artikel (englisch):


Undo/Redo in Java using Protostuff serialization and binary diffs

Many applications need Undo/Redo functionality. Commonly used implementation patterns are:

  • Command Pattern
  • Memento Pattern (state snapshots)
  • State diffs

When using the Command Pattern one would encapsulate both the change logic and its reversal in command objects. Undo/Redo is implemented by managing stacks of those objects. This approach has its limitations, for example for changes that are unidirectional in nature, like anything involving randomness, encryption, etc.

State snapshots save the full state of the edited data as object graphs or some representation thereof. This is also called the Memento Pattern. It often uses serialization and typically compression of the object graph to reduce memory use and ensure immutable snapshots that can also be stored out-of-process, if desired.

State diffs are based on the idea of State snapshots, but only store the difference between states. This can vastly reduce memory consumption of your Undo/Redo history. It is based on diffing algorithms that compute the delta between two states (or their memento) and allow Undo/Redo by applying the deltas as patches against a given state. A disadvantage is that jumping to a state involves a whole chain of patch applications. But it is a good approach when the user mainly navigates the Undo/Redo history sequentially.

A highly reusable implementation of Undo/Redo using State Diffs is available at my github account: https://github.com/odoepner/diffing-history

It uses the following Open Source libraries:

  • Protostuff for object graph serialization using runtime schema
  • JavaxDelta for binary diffing and patching

It provides the following features:

  • Unlimited Undo and Redo
  • Can handle any type of Java objects
  • Low memory footprint
  • Straightforward type-safe API
  • Supports stack size listeners
  • Gzip compression for the serialized current state

It is Open Source under the Unlicense.


The main API is the History interface.
Create an instance of DiffingHistory to get started.
The DiffingHistoryTest calls all History methods and illustrates the API.

Setting up a free C64 emulator for retro game fun

I just installed the C64 emulator VICE on an old Windows laptop and set it up with shortcuts for some old time games that I used to play in the 80s.

My 6 year old son really likes Donald Duck’s Playground where you do odd jobs as Donald to earn cents and dollars to buy playground equipment for your nephews and let them play:

Setting up the game required the download of a zip archive containing a *.d64 image file that can be autostarted by VICE. I created a desktop shortcut to the x64.exe file in VICE with the path of the d64 file as command line parameter. That gives you a shortcut that will start VICE and autostart the game right away. Add the -fullscreen option to start the emulator in fullscreen mode.

I had to enable keyboard mapping for Joystick 2 as shown on the WinVice c64-Wiki.

VICE is a cool emulator that runs on Unix, MS-DOS, Win32, OS/2, BeOS, QNX 4.x, QNX 6.x, Amiga, Syllable or Mac OS.

Games I might try next include Spy vs Spy, Aztec Tomb, Q-Bert and I few others. :)

Klassikradio MP3 streams

Klassikradio is a German radio station with an easy-to-digest selection of classical music, movie themes and other relaxing sounds, with not too many commercials.

They have many channels, all available as mp3 streams. They can be found and played in your browser at http://www.klassikradio.de/webplayer

To play the audio streams outside of a web browser, I retrieved and saved the stream urls as m3u files, using the shell script below. It used to work until Klassikradio changed its website:

#! /bin/bash


for x in $(wget -q -O - "${index_url}" | grep -o "${audio_url}"); do 
  echo "${x}" > "klassikradio-$(basename "${x}").m3u";

The resulting m3u files are still available from here.

M3U files are the easiest way to “bookmark” media streams to be played by an audio player of your choice.

I use the VLC player with the “Allow only one instance” setting and configure it as the default application for *.m3u files.

Work on profit-maximizing IT systems – No thanks

Recently I was contacted by a well-meaning IT recruiter (name omitted for privacy reasons) and explained why I don’t work on financial trading systems anymore:

The request

Hi Oliver,

I came across your profile in my connections this morning and I was keen to reach out to you.

I can see your current experience working with Java, I am currently working on some Core Java opportunities working on the new development of a real-time trading platform.

This opportunity would allow you to work with the latest Java technologies as well as giving the opportunity to learn Scala.

Please let me know when the best date and time to get hold of you would be so we can discuss?

Kind regards,

The response

Hello XXXX,

Is it a trading platform in the financial services sector (i.e. banking)?

If so then I have to politely decline. I have worked on trading systems for a large investment bank in the past. My role was Senior Developer / Technical Lead.

But I decided that I didn’t want to spend my limited life-time helping Wall Street traders or other folks whose only business is to make more money for themselves and their (usually already wealthy) investors.

I currently work on systems that support the Canadian Search & Rescue helicopter fleet. Rescuing people’s lives or health is a cause I feel good about and that motivates me.

Please feel free to contact me again if you come across job openings that contribute to the common good.

Oliver Doepner

The works of Edgar Allen Poe (5 epub files)

It is nice that copyright does not last forever and Project Gutenberg exists.

I just downloaded “The Works of Edgar Allan Poe“, volumes 1 – 5, from gutenberg.org as free ebooks (epub files).

Volume 1Volume 2Volume 3Volume 4Volume 5

I copied them to my Kobo eReader and look forward to days of reading.

Of course I could have borrowed the books for free from Halifax Public Libraries as well.

Testing HTML5 / CSS3 editor BlueGriffon

I used to use the now-outdated Mozilla based editor Kompozer, which was a bug-fix fork of Nvu.

Today I realized that in the meantime (since 2015) the Nvu author Daniel Glazman has developed BlueGriffon, an Open Source next-generation Web Editor based on the current rendering engine of Firefox.

I just installed it on Windows at work and my Debian laptop at home and plan to give it a try.

If it is easy to use and generates clean standards-compliant code, I might use it for Web UI mock-ups and other prototyping. :)