Can I tell you a secret?
I see dead Systems
Avishai Ish-Shalom
@nukemberg
~whoami
Many many years ago
The IBM XT computer had 1MB of RAM.
It's shiny successor - AT 80286 - has just arrived and it had whooping 16MB of RAM
One problem: compatibility!
X86 Real mode
- Registers are 16 bit, memory bus 20bit
- 2 16bit coordinates: Segment, offset
- Combined: Segment*16+offset
- 4096 equivalent addresses for every physical address:
0xFFFF:0x0005 == 0xFFF0:0x00F5 -> 0xFFFF5 - If address > 20bit (0xFFFFF) wrap around:
0xFFFF:0x000F + 1 = 0x100000 = 0x00000
int enable_a20(void)
{
int loops = A20_ENABLE_LOOPS;
int kbc_err;
while (loops--) {
/* First, check to see if A20 is already enabled
(legacy free, etc.) */
if (a20_test_short())
return 0;
/* Next, try the BIOS (INT 0x15, AX=0x2401) */
enable_a20_bios();
if (a20_test_short())
return 0;
/* Try enabling A20 through the keyboard controller */
kbc_err = empty_8042();
if (a20_test_short())
return 0; /* BIOS worked, but with delayed reaction */
if (!kbc_err) {
enable_a20_kbc();
if (a20_test_long())
return 0;
}
/* Finally, try enabling the "fast A20 gate" */
enable_a20_fast();
if (a20_test_long())
return 0;
}
return -1;
}
WAT?
- A20 gate enables/disables real mode
- A20 gate needed to be switched on/off
- The keyboard controller had a spare pin
- IBM routed A20 through the pin
- Controlled with keyboard controller interrupt
Yes, we still do this today - on every boot!
@nukemberg
Remember this?
Let's talk about terminals
- The "terminal window" is in fact a terminal emulator
- It works with a 40 years old protocol
- Based on the 1869 stock ticker
Ever tried colors in the terminal?
@nukemberg
This is also a terminal
X Windows
- 1st version: 1984
- Your app is an "X client"
- "X server" provides KVM
- They communicate over a network
- Yes, you can run remote!
- But it's also sllloooowww
(and yes, it's still used in ubuntu 18.04)
Want more?
The great CPU war
CISC
- high level instruction set
- Easy to program assembly with
- Intel sold cheap x86 CISC chips
RISC
- Low level instruction set
- Fast
- Easy to optimize
- High-end CPUs were mostly RISC
@nukemberg
And then Intel won
- By the mid 90s Intel decided to move to RISC
- Everyone were using x86 instruction set
- Lots of proprietary (compiled) software
- Itanium shipped in 2001 and was a bust
@nukemberg
Guess what Intel did
You guessed it
- Internal interpreter compiles CISC to RISC on the fly
- CPU works with compiled RISC microcode internally
- x86 instruction set compatability
- Originally in Pentium Pro (1995)
So now we have RISC CPUs with CISC interface. Brilliant.
(Disclaimer: there were unexpected benefits!)
@nukemberg
Had enough?
- QWERTY
- tar
- DNS
- Email (SMTP)
- NTP
Bonus points:
What is a CR-LF ?
What is Caps Lock?
@nukemberg
You think that's bad?
- Airplanes
- SMS
- Credit Cards
- F*cking nuclear missles
VOIP running over DSL over analog phone line
@nukemberg
I wasn't kidding about the nuclear missiles
@nukemberg
How the #$@% did this happen
@nukemberg
Infrastructure
- Physical
- Logistics nightmare
- Common dependency
- Hardware, no SW upgrade
@nukemberg
Protocols
- Hard to replace
- No attention to compatibility
- Standards (or lack of)
- Abstractions
- "Network effect"
@nukemberg
Deprecation
- No deprecation plan
- Deprecation was never a feature
- What if the 3rd parties refuse?
@nukemberg
For the love of God
Build Deprecatable systems
Or a at least upgradable
@nukemberg
Every good thing must come to an end
- Have a deprecation plan
- Extensible protocols
- Data export
- If it's active, it should be maintained
- Upgradable or Replaceable
@nukemberg
Thank you
I See dead Systems
By Avishai Ish-Shalom
I See dead Systems
The computer systems of today are riddled with legacy. Traces of dead systems are everywhere, burdening further progress and making our life harder.
- 2,358