Die wunderbare Welt von Isotopp

Hunga Tonga

Kristian Köhntopp - January 16, 2022
This is the Hunga Tonga underwater volcano explosion in Pacific Ocean (animated gif, click to start): This is data from my sensors , 15h later: The second wave took the long way around, and arrived around 2am-4am on the morning of the 16th, but barely registered.

UTF8MB4

Kristian Köhntopp - January 12, 2022
On Twitter, Jan Wildeboer linked an article by Adam Hooper on MySQL and the weird utf8mb4 character set. The recommendation is correct: In MySQL, use utf8mb4 when you mean to work with utf8 in your programming language. The background and reasoning for this (and why it is wrong) is way more complicated than outlined by Adam Hooper. So let’s walk through this: MySQL utf8 means 3-byte Unicode, and access to only the BMP utf8 in MySQL encodes the Unicode BMP .

Never check for an error condition you don't know how to handle

Kristian Köhntopp - January 10, 2022
This is the english version of an older text in German Computer scientists are weird. In their science there are a few rules that sound wrong when you hear them first, but make a lot of sense if you think about them. Some of them are making sense even outside of computer science. One of those rules is Never check for an error condition you don’t know how to handle. When you encounter this the first time that sounds very questionable.

... and a happy new hack.

Kristian Köhntopp - January 1, 2022
Und das neue Jahr beginnt für uns mit einem Minecraft-Server, auf dem wichtige Personen, die sich nichts haben zuschulden kommen lassen, plötzlich gebannt sind. Nach einem Unban an der Console: Der Spawn, der Eintrittspunkt für neue Spieler, ist komplett verwüstet. Wir haben tägliche Backups, sodass das schnell behoben ist. Bleibt die Frage, was passiert ist. Gehackt Unter den Spielern ist die Frage schnell geklärt: “<user> wurde gehackt.” Es stellt sich raus:

Dein Kind will Minecraft spielen

Kristian Köhntopp - December 20, 2021
Nachdem mich jetzt das dritte Paar computer-affiner Eltern mal gefragt hat, was man denn braucht, sobald der Nachwuchs sich “Minecraft” wünscht, hier der Aufschrieb zum Thema. Minecraft ist ursprünglich von der schwedischen Firma Mojang in Java entwickelt worden. Der Eigner, Markus “Notch” Persson, hat das Spiel und die Firma Mitte 2014 auf Twitter zum Verkauf angeboten, und Microsoft hat die Firma gekauft. Spiel zu verkaufen - Minecraft ist auf Twitter angeboten worden.

Es funktioniert wie spezifiziert

Kristian Köhntopp - December 14, 2021
Dieser Artikel basiert auf einem Twitter-Thread und ist in deutscher Sprache als Heise Kommentar erschienen. Über den Java-Slogan “Write Once, Run Everywhere” wurden schon viele Witze gemacht. Den log4j-Exploit behandeln viele nun wie einen Bug – das ist er nicht. Eine kritische Lücke in der Java-Bibliothek Log4j beherrscht gerade die Schlagzeilen. Die IT-Welt ruft “Warnstufe Rot” aus – weil offenbar der log4j-Code JNDI-Variablenexpansion vornehmen kann. Doch was ist JNDI? Jindi al Dap ist der Name eines alten arabischen Philosophen und Mathematik-Pioniers, der für Sun/Oracle gearbeitet hat, um ein System von Directory Lookups in Java zu entwickeln.

Discord Nitro Spam and 2FA

Kristian Köhntopp - November 30, 2021
This morning the Discord account of my son started to send “free nitro” spam to his friends on the friend list, and to some Discords he was a member of. He had 2FA (Google Authenticator) on the account. That fact alone made this a recoverable failure. My son is playing minecraft, has a friend list of around 100 fellow players, and is member of around 40 Discords. He also connected his Discord to Spotify, YouTube and other servies, and he authorized around 12 application services, mostly Discord/Minecraft bot services.

MySQL: Moving Average

Kristian Köhntopp - November 24, 2021
MySQL window functions can be used to calculate daily averages or moving averages for a 24h time window relatively easily. In an earlier article basic window functions were already discussed. In this article, we want to see how we can get daily buckets and moving averages. A sample program is available, as usual, on GitHub . Getting sample data We will be working with a data table named data, with three columns: a sensor id, a measurement datetime d and a metric value m that was sampled at that time.

Arista Type 7 Passwords

Kristian Köhntopp - November 22, 2021
A friend of mine wanted to provision BGP passwords for their Arista switch configuration. So a config stanza such as router bgp 65001 router-id 10.1.1.1 neighbor mydevices peer-group neighbor mydevices password 7 8kjYaye5DsQh0epELyKNe0oZ3E3zp39X requires generation of the Password (actually “supersecretpassword”) in an encrypted form. Arista switches can do this using CLI tools, apparently. They seem to have an onboard Linux, which seems to provide limited tooling, but is good enough to run a 32-bit Python 3.

A01:2021 - Broken Access Control

Kristian Köhntopp - November 16, 2021
Dieser Artikel wurde von Lenz Grimmer auch ins Englische übersetzt. In einem Twitter-Thread von Christian Basl ging es um die von zerforschte App “Learnu” . Basl schreibt: Die Betreiber von Learnu sagen, sie hätten keine Fachkenntnisse in IT-Sicherheit und hätten sich auf externe Berater verlassen. So kam Learnu unbekannterweise unsicher auf den Markt. In der sich entwickelnden Diskussion vertrat Andreas Dewes den Standpunkt Die meisten Start-ups die ich kenne gehen durch eine Phase, in der IT-Sicherheit und Compliance eher im Hintergrund stehen.

A01:2021 - Broken Access Control (en)

Kristian Köhntopp - November 16, 2021
Translation by Lenz Grimmer, German version here . A twitter thread by Christian Basl discussed the dissection of the “Learnu” app . Basl wrote: Learnu operators say they have no expertise in IT security and have relied on outside consultants. As a result, Learnu came to market insecurely, unbeknownst to them. In the discussion that developed, Andreas Dewes took the view that Most startups I know go through a phase where IT security and compliance tend to take a back seat.

Die kommende Kündigungswelle

Kristian Köhntopp - November 12, 2021
Ein guter Freund sinnierte gestern mit anderen Freunden von mir über die Situation auf der Arbeit und schrieb mir heute: Wie man es auch dreht und wendet: Corona ist auch ein Lackmustest für Unternehmen in ihrer Rolle als Arbeitgeber. Anhand der vierten Welle lässt sich das hervorragend nachvollziehen. Denn Unternehmen und Organisationen, denen am Wohl ihrer Mitarbeiter/-innen etwas liegt, haben schon vor Wochen überall dort, wo es möglich ist, ihre Leute kategorisch wieder ins Homeoffice geschickt und Präsenzveranstaltungen untersagt.

AMD und 128 cores

Kristian Köhntopp - November 8, 2021
Wir sprachen in Software Defined Silicon darüber, wie die CPU-Bedürfnisse von Hyperscalern und normalen Kunden divergieren. Hyperscaler haben Interesse an immer größeren CPUs mit immer mehr Kernen, und immer höherer Dichte in ihren Rechenzentren. […] Normale Kunden sehen das nicht so: man kann in einer 64C/128T-Core-Single-Socket-Konfiguration mit 2-4 TB RAM unter Umständen den gesamten Serverbedarf einer kleineren Firma in einer einzelnen physikalischen Maschine in VMs unterbringen. Das Problem dabei: Explosionsradius, wenn mal etwas ausfällt.

MySQL: Parallel Replication

Kristian Köhntopp - November 8, 2021
At work, replication is a central feature in our MySQL Standard Architecture. But until MySQL 5.6, replication was strictly sequential: Even if transactions happened in parallel on a primary, they would be downloaded to the replica by the IO_THREAD into the relay log. From there, a single SQL_THREAD would apply them, one after the other in strict binlog order. That can lead to Replication Delay. We had a monitor for that, courtesy of Dennis Kaarsemaker .

This Blog is now Hugo powered

Kristian Köhntopp - November 7, 2021
I started blogging almost 20 years ago, because a piece of software I was using to manage calendars and discussion boards to organize the “Dienstag” also offered blogging functionality. That software was very buggy and full of HTML injections. My patches to fix things touched almost all files, and were rejected, because they… touched too many files. So I was looking around for something better, and the good people on ircnet:#php.

MySQL: Python and WHERE ... IN ()

Kristian Köhntopp - October 28, 2021
As a developer using Python, I want to be able to hand a list to an SQL statement with a WHERE id IN (…) clause, and it should do the right thing. Well, that is not how it started, because it was asked on the internal no-work-channel, so it kind of escalated more. A question The original question was: Dev> Why is it 2021, and SQL prepared statements still can’t deal with IN?

Metaverse (en)

Kristian Köhntopp - October 27, 2021
I wrote on Twitter something about the term “Metaverse”. That led to a contact with Michael Carl , who wanted to make an episode for his Podcast with me. My german notes and talk prep are now also available here: Metaverse The term “Metaverse” was initially coined by Neal Stephenson in 1992, but in the context of the current discussion it was defined as in The Metaverse: What It Is, Where to Find it, Who Will Build It, and Fortnite by Matthew Ball.

Metaverse

Kristian Köhntopp - October 26, 2021
Ich schrieb auf Twitter was zum aktuellen Begriff “Metaverse”. Das hat zu einem Kontakt mit Michael Carl geführt, der mich in seinem Podcast haben wollte. Meine Gesprächsnotizen und Vorbereitung habe ich nun auch hier: Metaverse Der Begriff “Metaverse” stammt ursprünglich von Neal Stephenson, aus dem Jahre 1992, aber er ist im aktuellen Kontext von Matthew Ball in The Metaverse: What It Is, Where to Find it, Who Will Build It, and Fortnite mit Sinn gefüllt worden.

Understanding git

Kristian Köhntopp - October 12, 2021
It occurred to me that I do not know nearly enough how git works, internally. The contents of the .git directory seem to be accessible enough, so I am going on a Safari in the git repository of this blog. You can follow along if you check out the blog . Refs All things git live in .git. The thing we are working with seem to live in .

Empty commits and other wrong tools for the job

Kristian Köhntopp - October 6, 2021
This is how you can make an empty commit: $ git commit --allow-empty -m "Kick it" This has the disadvantage of also generating a commit message. Another way to achieve this seems to be $ git commit --amend --no-edit && git push -f but that will make people hate you in other ways. So lets stop and ask: Why would you want to make an empty commit? Most people want this because they attached a server-side action to a commit, a CI/CD activity.