Die wunderbare Welt von Isotopp

Wie normale Leute eben...

Kristian Köhntopp - May 17, 2022
Der Schnuppel ist jetzt in der niederländischen Groep 8, also in der 6. und letzten Klasse der Grundschule. Die letzten Tests sind geschrieben, die Schulempfehlungen sind raus und bindend, die Folgeschule steht fest und hat die Anmeldung bestätigt. Das Schuljahr ist also noch lange nicht zu Ende, aber alle Arbeit ist getan. Das Snackphone One, Zubehör und Nachfolgemodelle im Webshop. Letzten Freitag kam der Schnuppel aus der Schule und berichtete davon, daß er mit einigen Freunden und Banknachbarn “Mobiltelefone” gebaut habe.

Fertig gelesen: Crafting Interpreters

Kristian Köhntopp - May 16, 2022
Robert Nystrom is a language developer who works at Google on the Dart programming language. In his book Crafting Interpreters he explains lexing, parsing and executing a programming language in an accessible way. "Crafting Interpreters ", Robert Nystrom Nystrom sets out with the (correct) observation that the matter of handling and executing code is a complex topic that is not made easier with all the theory that surrounds it. In his book, he takes the reader on a journey to implement a toy language, Lox, two times.

Fertig gelesen: Fietsparkeren bij Stations

Kristian Köhntopp - May 7, 2022
The Netherlands realized around 2000 that they have a problem with bike parking around train stations, and with parking around stations in general. A program was set up to fix that, assuming things would be done with in ten years. The program was a great success, and people taking the bike to use the train, and to use a bike after they arrived at their destination by train increased greatly. This created more needs, and so the program is, changed, still active today.

Fertig gelesen: Pale Rider

Kristian Köhntopp - May 6, 2022
A book from 2017, about the Spanish Flu, which in the wake of the first world war turned into a global pandemic, killing between 50 and 100 million people on all continents. Pale Rider , Laura Spinney Spinney describes the situation in the world in 1918, and how the Spanish Flu came into the world, and was experienced by people in various parts of the world. The flu returned in several waves, some of which behaved unlike normal flu seasons and also had weirdly shaped killing patterns in the population.

Fertig gelesen: The Kaiju Preservation Society

Kristian Köhntopp - May 5, 2022
On an alternate earth alternate biology produces beings that can grow up to 150 meters tall and that are powered by natural biological nuclear reactor: The Kaiju. Whenever anything, humans or Kaiju, uses nuclear energy, the boundary between the alternate realities is weakened and things can cross over. That happened the first time late in the second world war, and that is how the legend of Godzilla came into the world.

Fertig gelesen: Sid Meier's Memoir!

Kristian Köhntopp - May 4, 2022
The subtitle of “Sid Meier’s Memoir!” is “A Life in Computer Games”. And that is exactly what we get: Sid Meier lists, chronologically and very systematically, all the games he has been working on during his lifetime. And tells us what happened to him, the game and the game development process while he worked on it. Somehow that becomes a Memoir, even if some things are only implied or appear out of order.

Fertig gelesen: The Pattern on the Stone

Kristian Köhntopp - May 3, 2022
This is an old book, from 1998, and much of the technology referred to directly has evolved since then. But, as this a book that deals with basics, in terms of metaphor and analogy, it is still valuable. It explains how computers work, and how we make the tech that powers them. The Pattern on the Stone , W. Daniel Hillis Computers are really easy. There is just Zero and One, and it does not get any more complicated than that.

A solar roof

Kristian Köhntopp - May 2, 2022
I live in a house in a rural village somewhere in Randstad . We are paying around 70 Euros per month in electricity, and up to 380 Euro per month in gas. We are using the latter for heating and warm water, but we are already cooking with electricity. The house has a decent energy rating and a heat exchanger in the forced ventilation system. That is to keep the warmth in when getting fresh air in.

Fertig gelesen: The Undersea Network

Kristian Köhntopp - May 2, 2022
Where is the Internet coming from and how and when was it built? It’s a network of tubes, or rather cables, and these days they are mostly fiber. Much of it was built during the dotcom boom, but little has been written. The Undersea Network , Nicole Starosielski Nicole Starosielski is a professor at New York University Steinhardt, and specializes in Internet Infrastructure, specifically underwater sea cables. In her book, she documents the history and development of the infrastructure that carries more than 99% of todays Internet data, the backbone that defines the global transport capacity of the Internet.

SQL Engineering Guidelines

Kristian Köhntopp - April 15, 2022
Where I work, the native database is MySQL. This is what the database team fully supports. Other databases, notably Postgres, are in use mostly because external products we run require them. Internal projects should use MySQL. An external company provides limited support for running Postgres. The recommended version of MySQL to be used is currently the latest 8.0. It has a large number of improvements over the previous version 5.7 in terms of the SQL subset supported, handling of sorts, critical character set support and join strategies.

Change Data Capture and the Binlog

Kristian Köhntopp - April 5, 2022
MySQL uses replication to do an ongoing life restore of a primary server to any number of replicas. How replication came to be I have discussed previously in another article . Modern replication uses row based replication, with a minimal row image and compression. What is that? Decoding the Binlog When using Row Based Replication, the Row Change event is represented using the BINLOG statement in the output of the mysqlbinlog command.

DevOps meets Databases

Kristian Köhntopp - April 4, 2022
On Twitter, Samuel Nitsche asked: Are there “IT history nerds” on this app? Like people who have the skills/knowledge to tell how some trends/evolutions in IT appeared? I’d love to connect! Asking about what he wanted to know specifically he said, he’s interested in the reasons why DevOps and Agile take up in DBA circles is so slow and low. That forced me to brain dump stuff that has been active in the back of my mind for quite some time now, but which I never collected properly.

Debugging SQL in Python

Kristian Köhntopp - March 24, 2022
When using MySQL with Python, you may want to use the mysqlclient library, which is what most people do and which will work just fine. Or you are using the official MySQL 8 Connector/Python package, which will behave slightly differently, but maybe supports the unique MySQL 8 feature already that is not in mysqlclient, yet. Your SQL may be hand-writtten, or it may be generated using SQL Alchemy, Django or some other package.

Truncated incorrect DOUBLE value

Kristian Köhntopp - March 24, 2022
I record this for posteriority without much comment. The error message “Truncated incorrect DOUBLE value” when issued by MySQL can be a confused parser, and masks unintended barely legal syntax: kris@localhost[kris]>select*fromtesttable;+----+------+ |id|d|+----+------+ |1|eins||2|zwei||3|drei|+----+------+ 3rowsinset(0.00sec)kris@localhost[kris]>updatetesttablesetd="vier"andid=4whereid=3;ERROR1292(22007):TruncatedincorrectDOUBLEvalue:'vier'The actual problem here is the incorrect use of and in the set-clause of the update statement when a comma was intended. kris@localhost[kris]>updatetesttablesetd="vier",id=4whereid=3;QueryOK,1rowaffected(0.02sec)Rowsmatched:1Changed:1Warnings:0Technically, an and is possible and legal, if you wanted to produce a boolean. Most people do not want this at this point in the statement, though.


Kristian Köhntopp - February 21, 2022
On the morning of Saturday, 22nd February 2020, two years ago, my colleagues and I woke up to the a message from the company that said: “Spaces” Closed for Operations 23 Feb - 28 Feb During the morning hours of Saturday, 22 February, a fire occurred on the first floor of the “Spaces” building. The fire was extinguished promptly but due to smoke and residue particles that spread throughout the building, we will not be able to open “Spaces” for at least one weeks time.

Databases: How large is too large?

Kristian Köhntopp - February 16, 2022
A database is a special kind of structured, persistent, global variable with concurrent access over the network. You write data to a cell of a row of a table in a schema in the server, and it is being kept around for you, with a lifetime longer than the runtime of your program. The database takes care of making sure of ordering access to that data, so there is a clearly defined series of changes to the data – locking, transactions, isolation are things that make databases popular.

Revisiting the file server

Kristian Köhntopp - February 6, 2022
The new disks in the file server had synchronized nicely, and that resulted in an interesting graph: Sectors on the outer part of a hard disk are transferred faster than inner sectors. You can see how the disk speed halves between the outermost and the innermost part. While watching, I decided on a whim that I wanted to convert the entire setup from using Linux mdraid to dmraid, the LVM2 implementation of RAID1.

Time to grow the file server

Kristian Köhntopp - February 1, 2022
The old file server was full, and since the little one got more local storage in his laptop, I also needed more storage for backup to match. I am running a 5x cage using up 3 disk slots in a Midi-Tower. Two slots are filled with Seagate Ironwolf 10 TB disks already, the rest is available. A 5x hot swap disk cage using 3 disk slots in a midi tower.

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.


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 .