@b0rk I am Kris, and I am 53 now.

I learned programming on a Commodore 64 in 1983. My first real programming language (because C64 isn't one) was 6502 assembler, forwards and backwards.
@b0rk Backwards means you stare at a hex dump and see code.

At the age of 16, reversing code and writing code were basically the same to me. I could think what I wanted to do, and type hex into a monitor, even if using an assembler with macros would be faster and easier.
@b0rk In 1986, I upgraded to an Amiga with a 68000 CPU. This required an Assembler, and I also learned C. But using 'cc -S' would be pretty normal, as C compilers at that time did write pretty abysmal code quite often.
@b0rk This only changed with Turbo-C on the Atari, which with -O2 produces code that I would count as vaguely human level.

Copy protections and obfuscations do not work very well. On the Atari I had to look into en.wikipedia.org/wiki/Calamus_(…, because a friend lost all her fonts in the ...
@b0rk ... upgrade from Atari ST to TT. They were bound to a program serial number, which changed for her in the upgrade.

Looking into Calamus at the machine level, evading their debug protection and analyzing the serial number mechanism were the work of a Sunday afternoon.
@b0rk That is likely less time they used to create this system.

Even later, in 2012, I could use this knowledge, which has been dormant for two decades, to reverse Android files (Ingress, in this case), decode protocols,
@b0rk and help with the reimplementation of a client in node.js, with some nifty scripting features.

And in 2018, again, I used this in blog.koehntopp.info/2018/06/18/web… to learn things about stuff IT staff installed on my work Mac.
@b0rk Being familiar with a box at the machine level is a skill that is not being taught much these days, but it gives you access to the full stack from the ground up to the heights of abstractions available today, and it makes you a vastly superior root cause finder and debugger.
@b0rk I have been thinking about this some more.

One book that changed a lot of perspective for me was amazon.com/-/de/dp/013201… (The Design of the UNIX Operating System).

It discusses the V7 source code, and also gives a LOT of background information about the how and why.
@b0rk Having read that, and today having the V7 source open in gitlab (we had to make illegal copies back then) helps a lot to understand simple concepts expressed simply.

You can then open the Linux source, and see the scaled out and evolved version of the same thing.
@b0rk I wrote about this in blog.koehntopp.info/2018/11/29/but….

That is, I am using the V7 source to explain how file writes happen to be atomic in V7, and how that later became a Posix requirement.
@b0rk amazon.com/Programming-80… (Archive.org: archive.org/details/progra…)
"Programming the 80386", Patrick Gelsinger, John Crawford

I learned the 80386 assembler from Gelsinger, who made the CPU while the first Linux versions came into my reach (December 1991, SLS)
@b0rk I have been following the machine initialization, setting up protected mode, leaving real mode, reading BIOS data, and then starting "init" using this book and my C knowledge.

I know how an operating system really starts. Does that help me? No, not immediately.
@b0rk But I do know what the terms page fault, swapping, paging, scheduler, task switch, interrupt handler and so on really mean, and what goes on at the machine level when I speak about this.

Again, this makes me a vastly superior debugger.
@b0rk I read agner.org/optimize/ and understand what goes on here. I can read Spectre and using Agner Fog, understand what breaks and how.
@b0rk I can use godbolt.org and find it insanely useful.
@b0rk I read github.com/dspinellis/uni… and had a laugh.

This github.com/dspinellis/uni… is actual C code, by Stephen R Bourne, who hated the C language. This is where your shell comes from.
@b0rk I think the biggest benefit of having been at the lowest level of the machine is that you actually see what makes the kernel load and the cursor blinks.

You learn, in your gut, that every single thing that happens in the box is explainable, there is code that does this.
@b0rk There is no magic anywhere, there is only another layer in the entire stack that you haven't explored yet.

But that's no obstacle, you have been at the lowest layer, and seen how the sausage was made. There can't possibly be stuff in this that you can't understand or instrument.

• • •

Missing some Tweet in this thread? You can try to force a refresh

Keep Current with Kristian Köhntopp

Kristian Köhntopp Profile picture

Stay in touch and get notified when new unrolls are available from this author!

Read all threads

This Thread may be Removed Anytime!


Twitter may remove this content at anytime! Save it as PDF for later use!

Try unrolling a thread yourself!

how to unroll video
  1. Follow @ThreadReaderApp to mention us!

  2. From a Twitter thread mention us with a keyword "unroll"
@threadreaderapp unroll

Practice here first or read more on our help page!

More from @isotopp

8 Sep
Nach einer IRC Helpdesk Session:

Macht Deine Firma sinnlose "Phishing Trainings", in denen sie Mitarbeitern Fake-Nachrichten sendet um zu sehen, wer da was anklickt?

Weil diese Firmen ihre Existenz rechtfertigen müssen, sind alle diese Nachrichten per X-Header trackbar.
Du findest in ihnen also Headerzeilen wie

X-Phishme: Phishing_Training
X-PhishMeTracking: <monsterlange ID>

Wenn Dein Mailer auf solche Header filtern kann, kannst Du diese Nachrichten automatisch erkennen, filtern, aussortieren oder löschen.
In Outlook geht das mit "Nachrichtenkopfzeile enthält" oder ähnlich.

Eine ältere Anleitung ist support.tigertech.net/outlook-spamas…, Du mußt nur die Kopfzeile anpassen.
Read 6 tweets
7 Sep

IRC so: »Merkel feiert im Bundestag die Digitalisierung. Breitband in dieser Legislatur von 80 auf 94 %. LTE 99 %."
"Wonach gemessen?"
"Falsche Frage. Frage nach Definition Breitband."
Offenbar war 2007 Breitband noch als "128 kBit/s up/down" definiert.
Die Definition wurde 2009 auf 1 MBit/s downstream angehoben.
Damals auch: "Derzeit haben rund 92 Prozent der Haushalte Zugang zu einer Breitbandverbindung von 1 MBit/s. Würde man die Definition auf 2 MBit/s anheben, wären nur noch rund 70 Prozent aller Haushalte "versorgt"."

Das scheint jetzt marginal besser.
Read 10 tweets
7 Sep
Dies. 1000 mal dies.

Informatik ist einfach. Nullen und Einsen, komplizierter wird es nicht.

Informatik stapelt aber in einzigartiger Weise Abstraktionen aufeinander, 30 Lagen hoch und mit nicht linearen Abhängigkeiten. Das erzeugt eine andere, viel schwierigere Komplexität.
Wenn man älter wird, stellt man fest:

Informatik ist die Wissenschaft von den Kästen und den Pfeilen dazwischen. Nullen und Einsen interessieren kaum.

Die Kisten sind immer noch trivial, die Probleme ergeben sich aus den Dependencies.
Wenn die Dependencies "Kommunikation zwischen Systemen" symbolisieren, wird es ekelig.

Kommunikation und Konsens sind lossy und schwierig und waren bis vor kurzem unmöglich sinnvoll zu testen.
Read 6 tweets
4 Sep
Neubau der Fahrradstellplätze und Zugfahrten zum Bahnhof Amsterdam Zuid.

Sieht dann so aus:
Die Stellplätze sind bewacht.
In den Tracks sind Sensoren, damit man sehen kann, weil noch Platz ist.
Ja, die Räder stehen trocken.
Ja, es gibt dort eine Werkstatt, die einem das Rad repariert, während man mit den Zug zur Arbeit fährt.
Ja, parken ist dort kostenlos.
Ja, das ist systematisch.

Das oben Amsterdam.
Hier Haarlem.

Es gibt Standards, die systematisch umgesetzt werden.

Read 4 tweets
30 Aug
Eine Woche nach Schulbeginn: Delta ist da. Image
Tada, und eines der Mädels vom Chor ist ebenfalls positiv getestet.

Durchseuchung von allen Seiten.
18 Monate durchgehalten und jetzt alles auf einmal.

*seufz* *doppelseufz*
Read 12 tweets
12 Aug
Organisationsversagen, spezifisch: Die Weigerung, sich zu Verändern und Anzupassen.
1. Home Office schadet der deutschen Automobilindustrie.
2. Home Office überfordert deutsches Management und belastet DINKs besonders.
Read 25 tweets

Did Thread Reader help you today?

Support us! We are indie developers!

This site is made by just two indie developers on a laptop doing marketing, support and development! Read more about the story.

Become a Premium Member ($3/month or $30/year) and get exclusive features!

Become Premium

Too expensive? Make a small donation by buying us coffee ($5) or help with server cost ($10)

Donate via Paypal Become our Patreon

Thank you for your support!

Follow Us on Twitter!