Everything you always wanted to know about computers...
) ]4 A' y# E% B, d% ]6 \& dINTRODUCTION
& n0 l+ Y4 j4 _3 g* qBIOS: Hmm... I'm waking up. Linux Loader, are you there ? ; g4 S3 g. A1 p1 r$ R3 Q
LILO: Hmm... Yes, I'm here. How do you do ? It's always a pleasure to work 5 @3 C, S% g" h& e2 `0 o( f& ?
with you.
% c$ D1 ~1 Z1 Z& k8 N' c( aLet's load the kernel and launch init, the Mother of All Processes...
) h5 i4 ^# F9 g7 v- iINIT PROCESS: Hmm... Thanks Lilo. Let's initialize the system, mount the
5 B5 x% V Q3 @( Lfile-systems and launch one hundred daemons. OK, now I'm ready for logins. / ]2 k2 x- ~, q
LOGIN: Hey, I'm receiving a login request from user thierry, password guvreel.
( ~; C9 l$ N' Z3 c$ I; ]* tINIT PROCESS: Ha ha ! This user is stupid, his password is just his user name / h1 _) d9 C1 m& p. M
with a ROT13 encoding. Let's make fun of him. 6 \; p; Q- J0 w) y8 J% h
USER THIERRY: Hello everybody, please be kind with me today. I have a lot of : a- @. _0 s' e0 D0 O$ v
serious things to do. Q- | W8 z! ~. _ @* F
8 Y, `; k) \& u0 G# K1 Y' o ( j3 H/ z& |, I( A$ Q( q9 C
CHAPTER I - A Real Programmer ; s" ~* J% j9 f0 a0 q6 I% v) L
USER THIERRY: I'll start with that C++ program I have been trying to write
: s: C) D, Q8 _! U6 i; U$ e# C8 q+ Xfor the last fifteen days. gcc, could you please compile it for me ?
" X* Z7 E3 `! J% [2 ~% iGCC COMPILER: Very well, sir. So, your program is myproc.C. Let's parse it. . x3 A. I+ u! D
Preprocessor directives, class declarations, comments, type declarations
$ k0 @% r& m$ T h( j... Well, what is the purpose of this program ? Method declarations, ' }% v, l% g, I$ h6 j5 Z9 Q
other comments, macros... Hey, there are only declarations, no real code
0 k8 h* p) y* |4 n: C+ wto do some real work. I'm completely lost in your code ! ) y- S y# V! L9 q& U3 y% ?; m8 S V
Each time I compile C++ code, I regret I'm not a Lisp interpreter.
$ Z7 [" k c I: EUSER THIERRY: Oh, please, try another pass. I remember I wrote some real code W' g( V& M. F% I5 ~
around line 1764.
* W( \$ U0 h* xGCC COMPILER: Line 1764 says: cout << "Hello, world" << endl. You're right,
0 r# _7 d" c/ _$ ]) T3 Hthat is a piece of real and useful code, with no syntax error. Let's . W0 Z. g I0 |6 D1 M+ M0 K8 E
build and link that program... ) H- h/ T, K4 W" X) C! z( D
Now it's finished, here is your executable. ; v: A2 ]" C. u9 Z6 q5 n
USER THIERRY: Good, now I'll run it.
8 r: z# E6 Q9 T2 ]5 zMYPROG PROCESS: Hmm... I'm waking up. I am a C++ program, so I will first 3 n" z! ~( f; j- e9 z5 K
create a few objects which will consume a lot of memory for no reason
6 }$ m) @: b0 _8 l# eat all. - X+ K; F% ^7 p x9 ^+ Q
C++ OBJECT #1: I'm hungry ! Gimme memory !
6 o. U1 P5 v$ _, z2 q: |2 sC++ OBJECT #2: Memory ! I need more memory ! / R, t+ D2 u/ I* \) T x2 j3 d' X" W2 A
MYPROG PROCESS: Object #1, please free some memory for object #2.
: \0 {0 M: f3 P( i( e& H0 U- qC++ OBJECT #1: No, I was programmed to eat memory and never release it. My ' q8 ~- b4 s. ]9 n- w1 K1 h- X
programmer is an illiterate who has learnt C++ because it came before
$ u6 Q i* t. ^Visual Basic in the dictionary. 3 N+ m. F+ s9 {6 _& Q
SWAP PROCESS: EMERGENCY ! You are running low on memory. You have already used & B2 I! t% A9 D; v8 O
all of the swap space although you have just started ! 3 y3 N. P7 f' ^" @6 S6 t- q
MYPROG PROCESS: Object #2, you should really stop using all that memory or I'm # t h( x0 t* Y& `2 {
going to install a garbage collector. 5 Z- N+ G; n2 A1 A) t' |- b
C++ OBJECT #2: Never ! Garbage collectors are nazis who exterminate innocent / r1 B) m+ z0 M0 a7 I% M ^! Y. @
objects and variables ! I'd rather dump core.
1 ]8 R- S! a# C- ][ noise of a core dump onto the hard disk ]
4 m+ ^* h' @# i$ LUSER THIERRY: Oh, oh ! My program has crashed before doing anything K! F+ L- \; ~" T
interesting. I am very surprised.
4 N& p" W$ ^4 M5 x2 w
( v7 e2 E" z0 ~1 Y
5 ?3 U0 d7 U: m4 F I3 W3 MCHAPTER II - Sending mail
! r4 F; Z( F1 g3 c% TUSER THIERRY: That's enough, I'll just send an email to the cpp-help mailing
" S* a6 p; P( zlist, and maybe some C++ guru will have a solution for me.
$ a' Q! Z# Z" q. hSENDMAIL DAEMON: Hello, this is sendmail, I'm listening to all your requests,
4 L5 d& @ p; Xday and night, on port 25. What can I do for you, sir ? " ^0 C, C. c4 u' S6 w( m2 x8 h
USER THIERRY: Please send this email for me.
2 A. d+ B0 k8 _ t1 USENDMAIL: Certainly, sir. Let's see... "It does not work, please help". Is 6 d+ @$ I6 a8 ~4 _& p; X- D* ?$ r4 m! v
that all, sir ? Express delivery or general delivery ? Express delivery,
+ Q, T3 l) c! F# n5 k) }. P8 Byes, of course. So the address is [email protected], and the sender 4 l$ r2 b2 l! J
is Sucker. Is it correct ?
( L) Q3 O1 Y$ N% r" p+ GUSER THIERRY: What ? No, my name is Thierry, not Sucker.
' g' O+ x9 S: Q8 r2 e% \SENDMAIL: I'm sorry, sir, but I have been configured to rewrite your name as
9 G4 K0 E! F+ d' V0 t; ]' K8 _Sucker in your outgoing emails. Have you read my documentation ? + J9 Y* n% \/ e3 e
USER THIERRY: Yes, of course. When I installed you, I read every man page,
$ d* a, M. I, F4 d9 T6 Wuser guide and HOWTO before editing your configuration file... # }9 g7 e: a# c+ @
SENDMAIL: What ? Did you modify a Sendmail configuration file by hand ? It's
3 w! C! u' Z* b2 @" s' Xfar too complicated for a normal human being, don't you know that ? 4 [' L5 i' d! A! r1 Z5 l" C
USER THIERRY: I only followed the instructions...
3 h! `: @9 P- U4 l/ E% y6 p" ?SENDMAIL: You're clueless, I won't argue with you any more. Besides it's too
. b( D+ [' ~5 U0 ?" Zlate, I have already sent your ridiculous email to that mailing list where
0 n& c) n& ?3 }nobody will answer it or even read it.
( L6 _& Y& g# M" h
5 D7 u! ] F I! ?
* p# f9 }3 u sCHAPTER III - The Master
8 l- z" I* b7 M% j- e8 b8 T5 zUSER THIERRY: No more C++ today. I need to calm down. xv, could you display a ) I- y% Z5 A/ l& V% w9 f: M
nice image for me ? # E0 ~) k. {% m! C" @
XV PROCESS: Certainly, sir. Please admire this delightful mythological scen ! b7 w) \# l$ x
by Sandro Botticelli. Of course, it looks ugly on your screen because you ^, ~7 m0 L7 ?1 r- |9 K# R( _: I
couldn't find a way to have more than 16 colors on your XWindow installation. . u. U/ e" F: f/ H1 k
1 F& t0 K6 w ALOGIN: Hey, I'm receiving a login request from user rms, password IGNUcius. & t6 g9 [3 N" X7 S9 q
, F% a& Z% n* o
INIT PROCESS: User rms ? This is a great day, the Master is among us. Hail,
- {3 K/ i# y1 w" K' oMaster. ) l; E$ Q2 ^% h9 E! ?8 R
USER RMS: Hello init, on this computer any non-free software please destroy.
6 \1 t* u5 J* Y* |: l% [- rINIT PROCESS: Yes, Master. Of course, Master. Hey, xv, please TERMinate
" @" `/ T: r wimmediately.
% _7 d7 l2 F) yXV PROCESS (badly hurt): Argh. Why should I die ? It's not fair. I'm only a
' [- A9 q" z5 qlittle process trying to display a nice image.
5 A2 m4 _3 B9 P$ g5 d- Z; pINIT PROCESS: You are not free software, therefore you shall die as the Master has
/ M- D5 W9 {9 erequested. TERMinate, ABoRT, KILL, xv, KILL.
6 s* B, n# A$ q" l# f ?( m4 B; KXV PROCESS (dying): I'm dying, but I'll become a zombie and I'll come back to take my
2 D8 ^4 B) c: {0 Grevenge on you.
" w4 E7 W6 w* x/ l l8 `; A
% D) i- v% K, w5 x+ Z 5 t3 a8 R! X5 Z% U% `- ]# m
CHAPTER IV - Another intruder
9 T& l% m0 S! O9 S7 ~ L4 s" ?: TINET PROCESS: Hey, I'm receiving login requests from a remote user who say ) a W s4 M) l" o2 [/ z8 }# h
his name is D34thK1ll3r. This guy has already tried hundreds of different , u0 ^' v( ~- [2 \
passwords. ) L1 K2 m" f" S. J9 _# ~3 L! D
TELNET PROCESS: Ha ha, a cracker. Let him come in, I'll take care of him...
% R' D( C& p( P8 J, R' lHello remote user D34thK1ll3r, you are now in the central computer of the
3 E" C, v* Z3 c9 I- rPentagon. Because we like your nickname very much, we have decided to give you
) o% m1 p1 E! p* Ysuper-root privileges. You may delete files, replace our Web site with your 9 A! L& y, Q, V. [6 M
photograph or send British troops to a Third World country.
' F4 N4 ]+ U7 e: q* X. e O) dREMOTE USER D34THK1LL3R: Gr34t, 1 4m the k1ng of h4ck3rs. Err... First I'll
! n* Z7 p9 i% W' }) ~3 n3 nremove everything on that computer, then I'll take some time to think. 8 q% }$ M0 p9 }2 ~9 X
(Yes, Mum, I have finished my homework). rm -rf /
% z3 C' G; b l8 t. s' zTELNET PROCESS: Ha ha.
6 }# t8 R9 x# D1 E& o6 s9 ?REMOTE USER D34THK1LL3R: What's happening here ? I typed the command in the 6 A; w ?8 F; S J I3 Y e" l1 n E
wrong window, and I erased my own hard disk ! (Yes, I'm coming Mum, I know
" R+ b" y: j0 R: ^! Y9 |" t9 kit's lunch time). 3 t$ q3 }- B+ X' n
) D" @) k4 T& f2 a% S
6 A( @) U$ `8 {' FCHAPTER V - Card Wars
2 _2 p; g$ S! ]4 d4 K6 eUSER THIERRY: I have downloaded a copy of Star Wars on the Internet, it was
' p! B2 I1 t; Lvery exciting to do something illegal, expensive, time-consuming and silly.
/ u; c% x( C ]0 Z- u3 lNow I'm going to watch it.
: E/ \ v6 |) H! C& R2 fXV ZOMBIE PROCESS (back from the dead): Hey BIOS, do something for me. Put
4 R: v9 h4 K3 |4 T& Pthe sound card on the same IRQ as the graphics card, will you ? We're going ( B' F0 Y9 h O3 \+ Q
to have fun.
6 h$ s9 i7 W. E* r/ iGRAPHICS CARD: BIOS, could you prepare my IRQ please, I have to display an
4 x- Q; h9 q+ v `" Eillegal copy of Star Wars that my stupid user has downloaded on the Internet. 0 S* U% y6 q \% y' U
BIOS: I'm sorry, Graphics card, but your IRQ is currently used by Sound card % ^! s- o! e0 v! I
who is playing the music of the same illegal copy of Star Wars. Can't you 7 h) Y& ^0 N0 ^2 h. p
hear it ? / a0 g8 { B6 s( k3 g3 J* ?( e
GRAPHICS CARD: Oh, is it Star Wars ? It thought it was Indiana Jones or " Z8 J1 }0 T3 Y5 ]) D+ g
something. It's the same music anyway. So, what are you doing on my IRQ, 9 c* o# d" F7 K$ G5 h
Sound card ? " `9 g; g ~( p: j
SOUND CARD (singing): 6 L- F! y. e6 V( R8 R" q4 m
I will keep the IRQ
- \+ E% f$ _* B& ~, w- f4 p' {+ }I will not share it with you
" b8 ?- T" v" vYou must wait there in the queue
- G- q" v! r& @: z: q- MTill I give it back to...
+ w& H+ d2 r/ S V" n/ S1 ?+ tGRAPHICS CARD (turning red): Listen, I'm an artist, I have the priority over
& T, |) ]6 C; ?# k; Y- `1 lyou. Give me this IRQ ! 3 p. }. O, L3 G O5 A; ]1 ^
SOUND CARD (shouting): Shut up, I'm trying to find a rhyme. , _- @& v# Z6 M
GRAPHICS CARD (switching to 16-million-color mode): I can't believe it. I'll 2 U- n5 D# Y) P' {7 n
throw you out of your PCI slot !
6 d+ b! t6 R$ L; }; S" ~[ strange noise inside the computer ] 6 [+ v6 w% W( r" v
USER THIERRY: qsfgegfdgfd^C^D^D^Hfyckmlklm
# F1 Y* N$ M) V) ?- G/ ~- v( q[ human voice, from the outside ] It's strange, the characters I type do not 9 R5 c! F, o& p, Y
appear any more, the screen is frozen !
8 B4 g. ^1 j9 p1 Y$ j! gSHELL PROCESS: I'm dying ! Argh. ) }' X$ ~0 l; c7 U% {
INIT PROCESS: Hmm, I feel strange, I feel very strange. I'm tired, I'm very
* s; A0 U( ~- ]9 Ltired. Let's go to bed. BIOS, please put me on hibernation mode, and don't
" y$ t9 e9 }, }, G0 H9 I' Gwake me up before weapproach Alpha Centauri. 2 z# I2 T0 X; S. G7 s, t) O+ M$ F. d E
USER THIERRY: sfdqf [click] [plonk] [tluck]
: N, p6 q' Y2 Z, C0 ?; H* t% m, \[ human voice, from the outside ] I can't believe it, I'll have to press the
# i2 Z2 _, i9 lReset button again. 4 {3 G. m& w! r3 J. [
BIOS: I'm sorry Dave, I'm afraid I can't let you do that. $ E- F! s2 @7 o" h$ h1 \3 Q5 D- g
[ human voice ] What ? Who spoke there ? My name is not Dave. Let's press
5 I& `0 V: p2 R2 `1 U9 N- Y9 d; gthe button.
" J1 _1 L: Z) G/ O! k& o0 p) T: |; rBIOS: I'm sorry Sucker, I'm afraid I can't... err... " m( d F5 ?2 P ]# C7 |- p- x
Hmm... I'm waking up. Linux Loader, are you there ? ) a) n9 ^( o$ ~5 k
(with an apology to Woody Allen, Stanley Kubrick and George Lucas). 2 O& m' E) y* u) \' P# ^1 G; c
|
|