This website uses cookies. If you continue using this website you agree to use cookies. More information.


CompanyJobsw3/blogHow to find us


News from w3logistics

w3/blog – The w3logistics Blog

28. November 2020

PowerPoint and OBS automation

Abgelegt unter: Hacker's Corner — Thomas Omerzu @ 02:09

These days online presentations have become more important than ever. For preparation of advanced video presentations, OBS is a very powerful tool. You can, for example, use it to mix a camera view of the speaker into a PowerPoint presentation.

Scott Hanselman created a very interesting tool named „PowerPointToOBSSceneSwitcher“ which allows you to automatically change OBS scenes under control of the PowerPoint presentation. This makes it possible to adapt the video image according to the structure of the currently displayed PowerPoint slide, without having to change anything manually in OBS during the presentation.

I was really fascinated by his solution and tried to get it running on my machine using the sources he provides on Github.

His little program establishes a websocket connection to OBS (via the OBS websocket plugin), and connects to PowerPoint using Microsoft’s Primary Interop Assembly. When it detects a slide switch, it checks the comment field of the slide. If that contains a string like „OBS:Scene Name“, it sends a scene switch request to OBS. Done.

Unfortunately, I was unable to get that program working on a 64bit Windows 10 running a 32bit Office 2010, though I tried hard and spent a few hours. Finally I gave up and thought about an alternative implementation. And this is what I did:

I took this PPT autoevents addin. It is old, but still works, even on Windows 10. It allows me to trigger a VBA macro every time the slideshow moves to the next slide. Similarly to Scott’s solution, in that macro I look into the slide’s comment, and if it starts with „OBS:“ I send a scene change request via „Shell“ and the command line client „OBSCommand.exe“ which implements a connection to the OBS websocket server.

I have to admit that this isn’t as elaborate as Scott’s implementation, but basically it achieves the same effect and seems to be considerably less influenced by version incompatiblities.

Thank’s to Scott for the inspiration!

11. Februar 2020

OOP 2020 – Into the Unknown – eine Nachlese

Abgelegt unter: Allgemeines,Hacker's Corner,IT-Services — Thomas Ronzon @ 17:43

Letzte Woche fand mit der OOP in München wieder eine der größten IT-Konferenzen der Welt statt.
Wie in den Jahren zuvor, hatte ich vorher mit ein paar Kollegen die Einreichungen im Track Software Architecture Maintenance & Evolution reviewt. Umso spannender war es dann zu sehen, wie diese Vorträge live gehalten werden, bzw. wie die Reaktion des Publikums auf diese Talks war.

Im Laufe der Woche hatte ich auch selbst zwei Talks.

So kamen am Montag über 30 Teilnehmer in den Workshop Wenn‘s richtig dicke kommt – Krisensituationen in der IT meistern, den ich zusammen mit Veronika Kotrba und Ralph Miakra gehalten habe. Diese beiden sind sonst eher im Bereich „Soft-Skills“ zu Hause – aber gerade das machte den Workshop so spannend, da getreu dem Motto „Hard- und Softskills – Hand-in-Hand“ wieder in einem Workshop sowohl Soft- als auch Hardskills zum Bewältigen von Krisen vorgestellt wurden.

Highlight war dann im zweiten Teil des Workshops ein Planspiel, in dem die Teilnehmer verschiedene, sich ändernde Krisensituationen managen mussten.

Am Dienstag wurde ich selbst überrascht. Zwar wusste ich, dass das Thema Libs, Lizenzen, Lösungen – Tipps zum Umgang mit Third-Party Libraries Probleme adressiert, die oft die Schmerzpunkte in einem Projekt sind – dass aber über 250 Teilnehmer diesen Talk hören wollten, damit habe ich nicht gerechnet.

Auch dieses Mal war interessant, dass wieder so viele internationale Sprecher vertreten waren. Hier eine kleine Auswahl:

  • Dave Farley: Continous Delivery
  • Neal Ford: Building Evolutionary Architectures
  • Hanna Fry: How to be Human in the age of the machine
  • Kevlin Henney: Unreasonable Architecture
  • Rebecca Johnson: Industrial AI enables digital Companions
  • Johanna Rothman: Modern Management: Adopt how you lead for agile success

Alles in allem war es mal wieder eine interessante Woche bei der man merkte, dass man nicht „allein auf der Welt“ mit seinen IT-Problemen ist. 🙂

Und wie sagte mir Jutta Eckstein bei der Verabschiedung: „Danke dir, Thomas! Dann bis demnächst – du weißt ja, nach der OOP ist vor der OOP!“

12. Juli 2019

Smarthost load balancing with Sendmail

Abgelegt unter: Hacker's Corner — Thomas Omerzu @ 13:47

If you have multiple smart hosts that can work as outgoing mail relays, you might wish to implement a kind of load balancing.

On the Internet, you often find the proposal to use something like


as smart host definition in your Unfortunately, for us this didn’t work: It implements only a failover, as Sendmail always uses the first host as long as it is reachable.

So we finally came to this solution:


(note the missing square brackets, which mean that an MX record lookup will take place). In the DNS, we then define

   smarthost  MX  42 smarthost1
              MX  42 smarthost2

And voilà: Sendmail automatically balances outgoing mails between those two MX hosts as they have equal priority.

12. Februar 2019

EAP-MSCHAPv2 for pppd-2.4.7

Abgelegt unter: Hacker's Corner — Thomas Omerzu @ 15:34

Recently, a customer wanted us to connect to his servers in a Microsoft Azure Cloud environment.

This connection required an SSTP tunnel with EAP-MSCHAPv2 authentication. We didn’t want to use the provided VPN client for Windows, but rather preferred to use our Linux gateway to make the connection.

An SSTP client for Linux is available at Sourceforge, but unfortunately the current pppd-2.4.7 does not support the required EAP encapsulated MSCHAPv2 authentication.

There is a patch implementing a PEAP encapsulated MSCHAPv2 at Github, but this didn’t solve our problem either, as the gateway doesn’t support PEAP.

Inspired by that implementation, we created our own EAP-MSCHAPv2 patch for pppd-2.4.7, which you can download here.

The implementation is incomplete in the way that only client mode is supported. Nevertheless, it works well for us. Please use at own risk.