Understanding Computers, URL: http://neil.franklin.ch/Underst_Computers Author: Neil Franklin, neil@franklin.ch, Last Modification: 2007.11.14 ToDo --- general --- Introduction --- Processors PLDs FPGA and SoG same treatment as stuff up until CPLDs --- Programming split copyright stuff to net politics, rest of anti-bureau stuff also order syst, decl, debug, design, teams, manag, others/spec, docu, think order top dn, bot up, use existing, 3rd part, commerce, free/FSF/GNU move OOP to interactive GUI Smalltalk, must be after Lisp/Forth move Brad Cox, title "never mind the man behind the curtain" to top down move SW components and selling problems, to 3rd party, solution free SW move free SW Unix robustness to bottom up move thinking child/artist/artisan experience stuff to bottom up move some thinking child fun stuff to comp no productivity increase move bureau mentality, apparatshik, desovietisation, SNAFU to top down move thinking science sales behaviour to external sales/adverts text move thinking engineer to CASE, incl CASE critic in it --- Batch Systems --- Interactive Systems order video charshift, charmem, sprite, pc mouse cursor graph, draw, bitmap, bitblt, blitter, pc accel, mixed sort picture critics in MM pict and web/document non text disabled split documents in formated data, component, document UI move documents electr publ, reference, paperless to time/datashare move Smalltalk/GUI/DocUI to workstations move OLE, CORBA to c-s remote method/distr obj stuff personal files, diary, mails, other make story of person, integrate them stories stuff in documents, HP100LX closed apps vs emacs open files --- Timesharing Systems terminal only unloading host and screen editing stuff move rest to video disp char, also PC terminal ANSI stuff --- Networks split comp comms into time/datashare collaboration, finger, mail, conferences net comms finger, file publish/http/Web/naming, netmail, netnews move ATM frame relay, switched 56 all to bridge/route, not in WANs move disp serv NeXTstep mult doc memory comparison to processes or docs split politics from net security, activism from impact on hackers life tool/sys select/force, managm/bureau, copyr/patent, spy/crypt, censo/trust securty add separate chapter social impact --- Portable Systems --- Bibliography Contents --- Introduction State of this Text Motivation collecting knowledge, giving further, showing fascination Coverage of Systems and Features in This Text parallel developments, my knowledge, no user programs exept programming tools Writing Style guided tour to knowledge, detail important, reading style, history, reference References how to read the format of the references Publishing Media Acknowledgements Errata --- Processors Boolean Logic and Digital Circuits binary, electronics, logic gates, ICs, combinational logic, sequential logic Memories Wilson tubes, core memory, SRAMs, (P)ROMs, DRAMs, parity/ECC, caches Microprocessors programmable controllers, embedded, one-chip microprocessor, IO controllers microcontrollers, most numerous, later used as CPUs for small computers Programmable Logic Devices (PLDs) PLAs, PALs, PALVs, GALs, EPLDs, CPLDs, LCAs/FPGAs, CALs/SoGs Registers and ALUs technologies flip-flops vs delay lines vs drums, data formats decimal vs binary vs BCD, signed binary variants, register layouts Addressing Memory addressing modes, address range vs data bus width, address expansion Addressing Partial Words, Byte Addressing extract/insert, byte addressing, little-/big-endian Instructions instr types move/ALU/program/processor, instr sets comparison Instruction Decoding and Execution hardwired, microcode, CISC, pipelines, RISC, emulators, FPUs Parallel Processors SIMD, vector proc, massive parallel proc, MIMD, VLIW proc, superscalar, SMP System Consoles and Front Pannels entering programs and data, reading out results, debugging, logic analysers --- Programming Assembly Language and Assemblers mnemonics, automatic conversion, macro assemblers, still relevant today Comments and Code Layout code read more by programmer than comp, explain why not what, symbol names, code arangement, literate programming, display utilisation, doc in source Modular Programming not just repetition, hide details, clean parameters, bad C 'strings', bumming Standard Algorithms computer science optimal algorithms, well documented, not repeated here Libraries and Linkers larger programs split source, object files, libraries, naming symbols High Level Languages and Compilers specify result, machine indepance, abstraction, language elements compilers, performance problems, direct HW access problems Structured Programming local variables, block structure, BNF, B&D, anti gotos, Nassi-Schneider Functional Programming procedures eval functs, minimise side effects, recursion, unobtainable ideal Top Down Design split problem into subproblems, target exactly defined rigid designs, break on trouble, CASE metaprogrogr, more of same, failure Bottom Up Construction iterative learning, 2nd time better, incremental construction cognitive style, time consumption, time overrun, improve vs backward compatib Systematics concentrate like, order explicitly, merge systematics Declarative Programming describe what you want, as data structures, then how to do it, as procedures Object Oriented Programming data+routines, classes, polymorphism, pure vs hybrid languages, save code, no magic, nail and hammer, hidden by jargon Debugging programming is debugging, caution, catching bugs, testing fails, bug recovery Documentation design/review info, record changes, archiving, intrusive documentation sys Programming Teams big jobs require team, use small teams, divide work by ability, project names Bureaucrats and Managers serving vs ordering, know relative strength, recognize importance of technies evaluate techies for trustability, create environment, clear description Programming for Others best write yourself, specification collect users knowledge, user involvement Free Software owners interests, design vs fabrication costs, cooperation vs competition copyright restr, user owned, authors income, distr as source, Unix/GNU/Linux Thinking Methods children, artists, mystics, artisans/craftsmen, scientists, engineers --- Batch Systems Batch Operation user hands in progr/data, machine special operator, results back efficient on HW but inefficient for users, waste output, IBM Teletypes printing, typing progr/data to tape for loading, ASCII code, upper case Paper Tape Punchers and Readers program saving/reloading, intermediary data, pipelining Card Punchers and Readers speed up read/writing, simplify input editing, keypunches, fixed data width Printers speed up printing, dot matrix printers, line printers, plotters, Centronics Magnetic Tapes no moving mechanics, even more speed, copy cards to tape, print tape to paper Disk Drives recording methods, access, capacity, disk controllers, embedded controllers RAID, disk caches, floppies, CD-ROMs, optodisks, fixed vs removable disks Virtual Memory code/data partially in mem, rest on disk, explicitly load overlays dynamicaly load segments, dynamicaly load pages, backing storage, mem size File Systems files, directories, access routines, caches, RAM disks, memory mapped files Databases field size independant programs, data all in one file, relational DBs, SQL Partitions multiple subdisks, OS convention, formatting, PC problems Job Control Languages, Command Line Interpreters, Shells selecting input/output, multiple in/out, organising files, starting programs parameter passing, batch files/shell scripts, Unix glob lossage Asynchronous Input and Output polling, state machines, coroutines, interrupts, race conditions, deadlocks buffered IO, DMA, IO processors, multi-sequence processors, IO vs proc speed Buses and Slots mult devices, addressing jumpers vs geographic, AT bus, periphery buses, SCSI Device Drivers device independant IO, resident drivers, ROM drivers, PC BIOS mess Booting drivers separate, file access routines resident, shell separate loading resident stuff, extensability, boot ROMs, boot devices --- Interactive Systems Interactive Operation constantly updated output, control by user input dev, program between reactive, program composing, efficient for users but costly on HW, hackers Output Devices lamps and process control, 7 segment displays, oscilloscopes, video displays loudspeakers, multimedia, 3D, virtual reality, force feedback Input Devices switches and sensors, keyboards, joysticks, paddles, light pens, mice trackballs, tablets, scanners, digital cameras, microphones, data glove/suit Debuggers see program run, break/resume, single step, memory dump/alter, line assembler display debug/child mixed, symbolic debugging, session state, remote control Interactive Programming Systems shell, editor, HLL compil/interp, debugger in one, Basic, dBase, Lisp, Forth Text Editors no tape splicing, search and replace, folding text, fitting text in memory Windows mult buffers, see at same time, dividing screen, window frames, iconified Widgets buttons, menues, scroll bars, rulers, icons, space waste, dialog boxes GUI Libraries toolkit libs, object frameworks, event control, GUI builders, incompat GUIs Documents formatted files, no std formats, no visible progr, edit/viewing, components directories, doc files, doc filesys, OOFS, OODB, OO sys, doc db, paperless Desktop Tools background jobs on desktop, commands by drag&drop, full functionality of CLI User Interface Design task oriented, toolset user interface, computer metamedium, write for users learning vs experienced users, expect user errors, user documentation --- Timesharing Systems Timesharing Operation interactive systems proc 95-99.9% time waiting, multiple users, time slices Multitasking mult progr, exec/fork, no busy wait, time slicing, batch, TSRs, multiproc sys Terminals multiple users IO, TTYs/typeterminals, multiple sets of interactive IO video terminals, 3270 and 5250 terminals, processor terminals Terminal Connections 20mA, modems, RS-232, null modems, 232 testers, term printers, console terms Microcomputer Terminals PC terminals vs interactive IO, PCs as timesh terminals, multi user micros Terminal Independant Software VMS only standard terminal, ITS monitor routines, Unix termcap/terminfo Processes separate addr spaces, one process at a time, mult process at a time all process part loaded, sys/user mode, mult stacks, shared memory, DOS boxes Subprocesses programs in login process, protected address range, subprocesses, fast fork limits bug effects, subshell from editors, subprocess as subroutine Job Control mult login at same time, fore/background, switching, output spy, TSR popups Debugging Support ITS debugger healing like physician vs post mortem autopsy, routine debugging VMS debugger separate address space, after fact, Unix 2 processes, switching Pipes pipes, tool approach, Unix pipes only ASCII, pattern matching, out of band Interprocess Communication exchange data between processes, can't be in addr space, OS provides struct Multithreading user progr coroutines, much work, shed problems, use OS, split tasks/threads Microkernals real time guaranteed switching time, kernals are getting too big kernal only resource managment, thread time slicing and IPC, NT claim Security aims, threats, implementing policy and mechanisms, too much can be damaging --- Networks Connecting Computers remote login with modem, file transfer, kermit, modem autodialers, uucp/uux Arpanet modem slowness and unreliability, digital line speed and reliability line sharing, NCP multiplexing, Telnet remote login, FTP file transfer Computer Communications mail, broadcast/write/talk, who/finger, conference/NetNews, chat teleworking, online education, teledemocracy Terminal Servers connect terminals direct to net, prefered over direct, no dependence on local more flexibl login, no local sys, easier task switch, LAT, SSU, Ethernet term Workstations timesh/term frust, many single user, Berkley "r", Alto WS, Sun WS, PCs Local Area Networks fast line for local traffic, Ethernet, Token Ring, FDDI ring Connecting Up LANs, Internetworking LAN to LAN over Arpanet, internetwork, IEEE 802 bridging, PUP, DECnet, TCP/IP IPX/SPX, NetBEUI/SMB/NetBIOS, Appletalk, OSI CONS/CLNP, multiple protocols Wide Area Networks connect LANs with WANs, leased lines, X.25, RS-232, POTS/modem, switched 56 ISDN, 56k modems, frame relay, SMDS, DSL, ATM, CATV, universal cable Connected Internet user made content, attract of net is servers, other media central no content 24h connection, public vs private, european routing mess, data highway File Servers timesharing vs WS server, dedicated vs peer to peer, Alto FTP vs remote files DECnet FAL, NFS, HTTP, Netware, Lan Manager, AppleShare, cost saving myth Boot Servers diskless WS, swap disk only, dataless WS, BOOTP, Netware net boot, Pathw LAD Mail Servers workstations personal, are often down, only users progr, without 24h network no mail server process, timesharing mailbox, POP, no NFS, UUCP over IP Administration Servers Grapevine, LAVC, NIS, DCE, SNMP Print Servers Arpanet none, Alto EARS/Dover, PostScript, LAT terminal servers, TCP/IP lpd PC server process, print server boxes, Macintoshes Laserwriter, cost sav myth Compute Servers assist WS with power, multicomputers, virtual multicomputers, killer micros Display Servers network transparent graphic displays, X, NeWS, DPS, XTerm, X terminals Database Servers downsizing, client-server, SQL, stored proced, transact, 3-tier, middleware, RPC, RMI/DO, workflow, formproc, Java, superserv, save myth, MIS regain ctrl Agents natural language UIs, mailed shell scripts, gateways, help wizards Network Security bugs, hacking, worms, files, wiretapping, Kerberos, firewalls mailbombs, letterbombs, spam, spying, forging, credibility, censors, Internet --- Portable Systems Portable Computers usefull computer used one, small size/low weight, no cables, robustness, agenda, palmtop vs paper, proprietary vs MS-DOS, desktop+palmtop vs notebook --- Bibliography --- Introduction State of this Text my brain dump of what I know about computers, and book/magazie references may one day be expanded to an full text as book or web site at the moment an outline of the themes to be treated in the final text in some places quite a bit of details, in others only a title Motivation I have spent since 1981-11 collecting, connecting up knowledge, experience I had already 5..7 years of doing analog and digital electronics before that I have learned lots from 1000s of magazine articles I have also collected lots of own work experience in that time I wanted to tidy it all up to deepen understanding by collecting in writing knowledge becomes better if you try to explain it thinking leads to more profound understanding [Feynman1] pIX preface "only if you can explain something do you really understand it" many others lack this profound knowledge and would be better of if they had it many articles, even in good magazines, show authors lack of knowledge claims and questions by user group colleagues show this to be a problem too often todays systems have restrictions because designers not know better show the better alternatives known, suggest development toward them today it is difficult to learn it because the available texts either have no depth or are too specialised this requires reading lots of them, lots of time, no one has that today the systems are far less transparent, making initial steps very difficult there is lots of distraction from doing something (someone else will do it) but doing important for experiencing how something works, real learning I am still discovering important ideas that others knew decades ago this is due to lack of good texts showing them and how they were arrived at this is surely also happening to others I want to show the fascination and fun in computing that drives hackers I have been thinking about writing this book for the last 2 years the exit of my job gave me lots of free time, writing is a good way to use it in the mean time I am back at work, so this project is not being worked on Coverage of Systems and Features in This Text different developments ran at different times and speeds, interleaved often things were rediscovered multiple times, parallel innovation [Bell] p23 technologies changed many times, but basic structures often stayed the same exa mainframes valves/transistors, minis ICs, micros VLSI different but execution of instructions functions the same way on all this text describes features roughly in order in which they first appeared I learned computing on micros, then PCs, minis and WS, no mainframes home programmable calculator, shool Columbia Commander, home Basic computers home DOS 286 AT clone, home Transputer, shool PDP 11 and VAX minicomputers home NeXT Unix-WS, work VAX-WS, palmtop HP 100LX, home Linux 386 AT clone due to lack of knowledge the world of IBM mainframes nearly entirly missing because of available experience and documentation I will use newer systems comparable to old ones to describe a feature not covered at all are user programs (word processor, spreadsheet, DB, graph) they are too varied, require specialised knowledge which I often haven't got I often don't know enough about most of their technology anyway there already exist good texts on these types of programs they wouldn't fit into the didactic structure of this text also this text is already too big due to creaping featurism exemption of this rule is for programming tools (editor, compiler and debugger) this is because the use of these often influenced system design this comes from their usage by the people that write systems also these were often used as prototypes for user programs also I have lots of experience in using them Writing Style the typical reader is assumed to want to know what goes on to have an interest, to want to master computers, not just use them is prepared to invest some time into expanding his knowledge a good text is a guided tour of the knowledge the writer wants to give reader to make text readable build up readers knowledge step by step bring first basics, use earlier pieces of knowledge for later explanations because human brain is limited in takeup capacity good text with details but written so that they are hidden on first reading on further readings they get discovered progressively hidden details must be non crucial ones for building up first overview first introduce something new, explain it, then give its name for referencing not name first as preconceptions may distract reader from explanations beginning with highly evolved concepts is too much for reader loads of details without how it came to be lead to mental indigestion exa my experience with Lisp, OOP, Microkernal the same thing applies to using opaque terminology exa Objects think of how the brain learns by building up it collects facts, then it generalises on similarities see original form of modified chinese proverb in programming details are important for understanding anything scientific understanding from understanding underlying mechanism intimate knowledge of the intricate web of facts counts not just words, that leads to technobabble, linguistic trap theoretical knowledge vs practical, index errors [Feynman2] p36 Brasilian students memorise sentances [Feynman2] p211 but they don't understand their meaning, connection with reality exa Triboluminescense defined, not but explained [Feynman2] p217 father knowing name of birds vs knowing their abilities [Feynman3] p3 see chapters on designing and debugging for relevance of facts to successfull programming texts I know either detailed but with small focus, or wide but without depth this text wide and shows the relationships is detailed down to the bits but is not at reference level many other good texts for that, references to them included treat each theme in same detail as a good magazine article the reader can't read a large text and memorise it all in one the reader will have to repetitively read the entire text alternating with in depth study of specific themes of interest this requires a good didactic structure for reading entire text and also cleanly defined chapters for studying separate themes knowing how something came to be is important to understanding it often required to understand why things were done the way they were very often for backward compatibility [Raymond] "hysterical reasons" show history of ideas, their execution, experiences gained, new ideas illustrate points with anectotes, stories not only provides examples, but also give reader experiences losen up the text and helps reader remember the point to be made show also show playfullness of hackers behaviour, hackish values References remarks of the form [xxx] xxx are book/magazine/file references [xxx] p are book references with page number for the details of xxx see my bibliography at: http://neil.franklin.ch/Books [xxx] -p are magazine references with year/month/page [Byte] -p are special editions of Byte [Byte] -p are supplement pages [Hauben] "" are chapter files of Netizen directory [Raymond] "" are entry titles of the Jargon File [man] "" are entry titles of the Unix online manual pages [RFC] are RFC references with the RFCs number Publishing Media first ASCII file on Internet, later HTML files as first publication it allows fast reporting and correcting of bugs ev a mailing list for questions, discussions, follow ups then CD-ROM with the HTML files for reference, searching, working without downloading time also containing all utilities and examples mentioned in text then possibly book for first reading, studying, inspirations, meditation cover Conrad Escher style, vertical layers from bits to systems Acknowledgements all the people that I learned from colleges (at shool, in user groups) exa Kanti Admin (first comp), M Ammann (Assembler), M Meisterhans (Jarg file) other writers (articles, books and files) exa [Raymond] (jargon file), [Levy] (hacker sociology) exa [Goldberg2] (WS history), [Feynman1]..[Feynman3] (scientists) specially mother and father gave me determination and attitude towards learning also both artistic/feelings and technical/logical methods of thinking Errata I have tried to avoid errors in this text, but shurely some slipped through send corrections, also suggestions and additions to this text --- Processors Boolean Logic and Digital Circuits binary numbers, addition, negative, subtraction, shift, multiplicat, division bits as information carriers, Shannon [ct] 2001-6p87 basic logic elements/gates [Tietze] p192 AND, OR, NOT, NAND, NOR, XOR half and full adders [Tietze] p605, carry ripple vs lookahead electronics electric voltage, resistors, ohms law and current, voltage divider transistors bipolar vs FET vs MOSFET, amplifier, complementary technologies relays, valves, diodes, transistors (Bell 1947 [Byte] 85-9p209) transistor modules (DEC [Clark] p361 IC forerunners) logic gates/circuits 0/1, L/H, no/yes, F/T are only external representation of 2 voltages RTL (open collect in one), DTL (one T and Ds), TTL (complem Ts), ECL, CMOS mux vs tristate totem pole bus vs open collector bus [Tietze] p207+p209 lots of wires (pins) vs circuits (technology) vs slowness [ct] 90-2p222 logic tester probe IC technologies, NMOS [Tietze] p201, [PCW] 90-10p219 [ct] 97-12p90 chip manufacturing [ct] 2000-5p260 todays CMOS transitors massive tuning [ct] 2000-7p216 reducing chip heat generation [ct] 2000-24p274 chip manufacturing anec 7406 hex inverters against hostile magic [Raymond] "hex" possible future chip replacements [Byte] 89-5p269 molecular, quantum, [Byte] 89-10p231 computing with light [Byte] 92-9p169 photonics, [Byte] 96-4p45 opto, molecular, quantum [ct] 97-3p110 quantum computers, [ct] 98-16p150 quantum computers [ct] 97-7p112 DNA based computers, [ct] 98-16p150 quantum data processing [ct] 98-21p43 plastic chips, [ct] 98-21p104 nanotechnology [ct] 99-2p76 plastic chips, [ct] 2000-25p118 quantum computing [ct] 2001-9p216 bioinformatics, [ct] 2001-14p52 molecular memory [ct] 2001-23p64 polymer electronics, [ct] 2001-24p50 molecular computers [ct] 2001-26p50 programmable DNA computer, turing machine [ct] 2002-19p46 polymer chips, [ct] 2002-23p50 quantum cascade [ct] 2002-25p170 superconducting chips, [ct] 2003-6p38 DNA computer combinational logic [Tietze] p224 single gates 6*NOT (7403), 4*2NAND (7400), 3*3NAND (7410), 2*4NAND (7420) 1*8NAND (7430), later 13NAND (74133) same variants open colector output (00->01) and Schmitt trigger input (20->13, 04->14, 00->132 late) same for NOR (00->02), AND (00->08), OR (00->32) tristate gates (74125/126 4 sep), very late when open collector too slow common enable signal (74240/241/244 2*4bit) bus to bus pairs (74422/243 4bit, 74245 8bit) 2*2-2-AND-OR (actually NAND-NAND) combi-gates (7451), expandable (7450) wider OR 1*3-2-2-2 (7454), expandable (7452/53) wider AND only expandable 1*4-4 (7455) NOT-NAND-NAND 2*2:1Mux, 1*4:1Mux, 1*8:1Mux (74150/151) common select 4*2:1Mux (74157), 2*4:1Mux (74153), 4*XOR (7486) generalised NOT-NOT-NAND-NAND decoders (74138 3:8, 74139 2*2:4) and encoders priority enc (74148), BCD and other code converters, LED pattern generators full adder (7480), ripple adder (7482 2bit), look ahead adder (7483 4bit) ALU/FG (74181 4bit/32func 24pin 75gates, 74381 4bit/8func 20pin) and carry lookahead (74182) for 4*4 or even 4*4*4bit cascading look ahead addition carry 0 for 00+? vs ? for 01|10+? vs 1 for 11+? sequencial logic [Tietze] p232 is combinational logic and flip-flops [Tietze] p261 combinational logic does from conversion input+FF to FFs+output FFs store state from one cycle to next, are the "memorx" of the circuit FF types RS, RS-latch, D-latch, RS-MS, JK-MS (7470/74..), D-MS (7474) common clock gives registers (7475/77 2*D, 74100 2*4D, 74173 4D) and in 20pin 8bit (74273 w clear, 74374 w TS out En, 74377 with Clk En) single addressable multi-regs, 16*1bit vs 16*4bit wide, as >16 regs unusual multiple addressable/accessable regs (74170 4x4bit 1read 1write) (74172 8x2bit 1read 1write 1read/write) non addressable multi gives FIFOs, delay buffers, is mult non-par shift reg counters async (7493 4bit) vs sync (74161/163 4bit) [Tietze] p240 up/down countable (74169 4bit) shift regsisters [Tietze] p253, no parallel (7491 8bit) loadable (7494 4bit), readable (7495 4bit), reversable (7499 4bit) universal anything (74194, 4bit, 46gates) SR combined with ALU/FG in one chip (74281=74181+74194 24pin) or even SR with 2nd reg and ALU/FG 16func and TSgates (74681 20pin) or whole lot more (entire data path) to bit slice (74481 44pin!, Am2900) sequencer is combination of an counter driving combinational logic state diagrams, running/stray/parasitic cycles, one hot vs state number exa IEEE 488 protocol definitions and SCSI bus states for sequential logic static flipflops vs dynamic capacitors less transistor usage vs loss of ability to stop clock usually driven by an clock, but [Byte] 93-1p145 computing without clocks "clockless" asynchronous logic [ct] 99-17p176 return of async logic also real clockless [ct] 98-6p128 missusing XC6216 as analog chip integration leads to more transistors on a single chip [Byte] 90-1p237 (chips) [Byte] 96-12p82 years and transistor count for Intel processors [Byte] 96-12p93 Moores law, [Byte] 96-12p77 birth of a chip [ct] 98-4p98 new chip designs, [ct] 98-17p29 SOI, [ct] 99-2p82 chip lithograp 1960 SSI 10, 1965 MSI 100, 1970 LSI 1000, 1975 VLSI 10000, 1980 ULSI 100000 how do you get all the gates signals in and out of the chip, run out of pins IC chip packaging DIL, PLCC, PGA, BGA [PCW] 95-8p589, multi chip carriers [ct] 2000-18p178 chip cases/packaging most gates outputs must be wired chip internally to other gates inputs this leads to more specialised functions on a single chip fabrication runs become smaller, application specific [Byte] 91-1p308 Hyatt, [Byte] 92-3p145 Faggin birth microproc leads to custom chips (full custom, standard cell and gate arrays/ULAs) [Byte] 87-9p115 POACH, [ct] 89-11p196 ASICs [ct] 91-4p58 personal chips, [ct] 96-5p326 ASICs sand to chip more and more complex electronic systems were built, design costs go up hardwired logic takes too much time to design, and alter (rebuild) it also uses too many gates, space, power, costs too much leads to user programmable chips (memories, microprocessors and PLDs) exa memories 1k, 4k, 16k, 64k, 256k, 1M, 4M, 16M exa proc 8086 29'000, 68000 70'000, 20286 155'000, 80486 u 68040 1'000'000 [Byte] 93-5p94 86 29'000, 286 134'000, 386 275'000, 486 1'200', 586 3'100' memories far higher transistor density, exa P6 processor vs cache chip anec Intel Micro 2000 problem finding use for transistors [Byte] 91-4p131 high transistor count and clock frequences lead to large power dissipation modern processor energy usage, exa Alpha 2.75V 26W -> 10A problem of getting current in (need many pins) and heat out (sink, fan) without inductivity on GND distorting logic values on signal lines anec Tek 4/8 with 20MHz worked only after energy rails, DRAM pull to 1.5V reduce supply voltage 5V->3.3V->2.5V->1.8V [Byte] 92-12p137 3.3V cooling fins like power amps, peltier elements, ventilators, heat pipes [ct] 98-19p118 PC noise, [ct] 2001-17p112 silent PC cooling, heatpipes [ct] 2002-18p108 silencing PC noise, [ct] 2003-10p176 PC cooling Memories [Byte] 89-11p391 memory, [Byte] 95-6p187, [PCW] 92-2p310 memory lanes drawing memory first address (used in text) vs highest address up top Kilo in memories is 1024 (not 1000), Mega is 1024*1024 (not 1000*1000) but frequencies in kHz or MHz are 1000 and 1000*1000 when to use 1000 and when 1024 depends on whether binary counting or not early computers (pre 1950) only had registers, data from tapes, prog cycl tape or perhaps small memories using same technology as registers [Raymond] Hacker Folklore Mel RPC-4000 instruction positions on drum rotating drum + signals in delay lines sequencial memory, need to wait for bit to pass, 1 read/write per cycle use address bits to compare with counter, to see when bits arrive often together with bit serial ALU as only one bit at a time shift memory chips to do same (used in early terminals as character mem) Wilson tubes, electrostatic memory exa Newman/Williams ManchestAutomDigMach (1948/9, ES mem) [Salus] p17 exa MIT Whirlwind 1k/2k*16 bit (1950) [Ross2] p61, [Byte] 89-11p391 random access bye pointing electron beam by 2 DACs driven by address bits ES memory has to be refreshed (read and rewritten with old contents) is this reason for Whirlwind PR temp addr register? [Ross2] p87 fairly unreliable due to analog effects on scanning beam anec Whirlwind addressing diodes wiring change [Ross2] p62 anec Whirlwind had 1024 16 bit words of mem on a good day [Clark] p353 core memories exa MIT MTC first 1/4k core memory (1952) [Ross2] p73, [Clark] p353 name simply stands for Memory Test Computer exa Whirlwind upgraded 1953 with 2/6k*16 core memory [Ross2] p62 speed increased from 20'000 to 40'000 instr per second exa Lincoln Lab TX-0 (1957, 4/8k*18 memory) built as memory test comp for halves of TX-2 64k*36 memory [Clark] p355 first transistor comp, from DEC transist modules (DECs original business) cores needs no refreshing, unlike electrostatic and DRAM memory only writeback after reading (is destructive) [DEC1] p3-17 memory timing for reading write a 0 and see on sense line(s) whether bit was inverted anec real memory doesn't lose data when the power is turned off [Pest] core memory is not used any more but name remains in core dump [Raymond] "core", core wars game folklore calls the time until 1955 stone age (primitive!) [Raymond] "Stone Age" 1955-60 bronze age (less primitive) or counted to stone age bronze age is defined as time between usage of transist and of cores 1961-71 iron age (primitive..modern) [Raymond] "Iron Age" time from transistors and core memory (iron oxide) until microproc I suppose this makes 1971-today the modern age note contradiction [Raymond] "Stone Age" vs MTC [Ross2] p73 and [Clark] p353 timing of transist and core usages note though that IBM introduced cores late when 701->704 [Clark] p397 perhaps this is the reason for folklore being wrong on this point static random access memory (SRAM) chips exa 7481/84 4x4=16bit 1bit wide array section, needs decoded address exa 7489 16x4bit SRAM, still has separate DI and DO lines, despite 4bit exa 74200/201/202 256x1bit, 74207/208 256x4bit, 74214/215 1024x1bit exa Intel 1kbit RAM 1969 (Intels original business!) [Byte] 85-9p209 SRAMs grew out of arrays of flip-flops, addressable registers single address as this saves pins, and computers assume this 256bit equals core density w less power/heat, larger sizes beat it first 1 and 4 bit wide chips from 2048*8 on then 8bit wide like standard for ROMs, up to 512k*8bit new sync and ZBT SRAMs [16|64|256]k*18bit (with parity), 128k*36bit no 16MBit genration seems to have been made, 1M*8 seems to be end no destructive read, fast write, but do not retain data when power loss read only memory (ROM) / programmable ROM (PROM) chips [Byte] 90-11p315 Flash cell, [Byte] 96-6p99 Flash [ct] 97-16p176 Flash programmer, [ct] 97-16p178 Flash EPROMs [ct] 2002-9p164 Flash disk formats (CF, SM, MS, MMC, SD) RAM named as counterpart to sequencial drum, later ROM counterpart to RAM simplification of many-simple-gate logic by replacing it with an table first a design method for complex ligic, later implemented so in hardware table with 1 core/bit is smaller than logic gates in transistor modules usually not core RAM (as needs refresh), but core/nocore or print traces or use PCB with inductive connections between sides [House] p405 or use diodes, is strictly DTL NOT-NOT-NAND-NAND logic exa Whirlwind (32+8)x120bit germanium diode inst decoder is a lot smaller than using tubes for logic, even if high volt diodes such wide control table stuff is known as horizontal microcode alternative do it sequencially, multiple steps with simpler hardware and narrower table, this is known as vertical microcode is cheaper on parts but slower, used in lower cost models exa PDP-8/E "autoboot option" is a 32x12bit diode [P]ROM, to hand snip use board with diode arrays, prefabbed can be programmed with cutters low density, limited boot loader size to a few 100 bytes [Salus] p47 exa PDP-10 KL-10A (DispatchRAM 512*x4bit + ControlRAM 1280x84bit) KL-10B (2048x??bit) and KS-10 (??x??bit) microcode is combined vertical+horizontal microcoding note that these use SRAM instead of ROM, need PDP11/40 or 8080 to load exa MIT Lispm using vertical microcode with appearance of large enough chips, place ROM in chip exa 7488 32x8bit ROM, 74187 256x4bit ROM, 74188 32x8bit PROM 74270 512x4bit ROM, 74271 256x8bit ROM, 74287 256x4bit PROM 74470/471 256x8bit PROM, 74472/473 512x8bit PROM parameters modifiable, speed read, speed write, size, cost mask ROM data stored as wiring, part of manufacture, send bits to there PROM data stored as fuses, can be burned to program, like snipping diodes EPROM FAMOS transistors, data stored as charge in 2nd isolated gate EEPROM/EAROM/FlashROM are EPROM variants with electrical erase, not UV but also CMOS SRAM chip + backup battery = NovRAM ROMs can not be modified while a system is running only used for inmutable code or wiring that must survive power off as soon as (P)ROMs appeared, were used to replace complex combinational logic exa hobbist using EPROM instead of 181 chip, for custom signalling 24pin 2power+14in+8out -> (2^14)x8bit = 16kx8bit exa Apple ][ disk controller with PROM for state machine exa MIT Lispm 4bit 4position barrel shifter sections from 1024*4bit PROMs exa screen/printer character generator ROMs, 96char 5x7pixel = 3360bit todays 16MBit 2Mx8bit FlashROMs allow up to 21input 8output tables 1Mx16 costs 1 input to deliver 8 more outputs, shows cost of inputs on many early systems only a small amount of ROM for booting from disk often after OS boot (into RAM, fully writable) ROM swich off, RAM full read ROMs and PROMs were made right from the beginning 8bit wide, later 4bit as often small address range and wide data/bitmap but also use lots of ROM, gives nonerasabe firmware, no disks such as most 8bit Basic home computers interpreter+OS in ROMs but also on later systems larger BIOS ROMs, such as in IBM PC or Mac ROMs (at least EPROMs) are usually even slower than DRAMs, >200 or even 300ns even in 2007 Flash bases uCs limited to 30MHz, SRAM based over 100MHz if the ROMed code is still used while system is running, such as PC BIOSes copy it into faster RAM and use that, this is called BIOS shadowing for this read access from ROM, write access to RAM, then switch ROM off dynamic random access memory (DRAM) chips [Fujitsu], [ctk] 90-10p417, [ctk] 90-11p375 [ct] 99-6p146 ferroelectric and magnetorestrictive RAMs [ct] 2001-18p170 magnetic MRAMs, [ct] 2001-21p254 next generation memories [Coffron] p72 MK 4116 16k*1 bit DRAM chip, mentions earlier 4kx1 exa Intel history 2107 4kbit DRAM exa Dragon and IBM PC Prototype MK 4132 [ct] 98-22p250 MK4132 in PC 1 pin non Mux or 2 CAS?, but Dragon 16*16kbit is 32kByte (half chips?) grew out of cores, capacitive instead of inductive are more dense and cheaper than SRAM due to single element/bit but destructive read (like core), need write back, recovery time are slower than SRAM because of this also require refreshing of capacitors because of charge leak anec Z80 had refresh addr gen and MUX trigger on chip addr mux originally first RAS (lower addr bits) [Coffron] p72 memory chip pinouts [ctk] 88-3p243 JEDEC, linear vs multiplex adressing but even slower because of this, require 2 address transfers later nibble mode (4 times RAS or CAS), then page mode (first CAS) faster signalling methods [Byte] 95-4p24 EDO [PCW] 96-1p255 buffer to hold out while new addr being appied Burst-EDO (BEDO) intenal addr generator for also faster piped write [ct] 95-4p82 EDRAM vs cache performance curves [ct] 95-4p130 EDO, [ct] 95-4p334 DRAM addressing and modules [ct] 96-2p214 effects EDO vs cache [ct] 96-2p218 memory and cache types glossary [ct] 96-7p158 DRAM signaling/sdressing formats/modes SDRAM [Byte] 96-8p28, [ct] 97-10p298 newer DRAM format, SDRAM details [ct] 98-8p184 PC100 SDRAM f 100MHz, [ct] 98-18p36 identifying DRAMs [ct] 2000-17p166 SDRAM sizes and signalling [ct] 2002-6p262 + 2002-8p228 DDR SDRAM interface Rambus [ct] 2000-3p232, but also expensive and legal attacks [ct] 200014-p34 types of PC memory [ct] 95-4p334, [ct] 95-11p354 [ct] 96-7p158 signals, [ct] 97-10p298 DRAM types, [PCW] 96-7p173 combining multiple DRAM chips onto a module SIP, SIMM originally 36 pin 8 bit, use 8*1bit or 2*4bit wide chips or 9 bit, use 9*1bit or 2*4+1bit wide chips later 72 pin 32 bit, use 8*4bit or 4*8bit wide chips or 36 bit, allways use 8*4+4*1bit some 72 pin SIMMs have 2 banks of chips, common data lines (no 72bit) a 8MByte SIMM may be 4*2Mx8bit or 2 banks of 8*1Mx4bit with todays motherboards limited to 4 banks, max 2 such SIMMs poss anec MITS Altair DRAM board reliability problems some say general problems with early DRAMs, first generation others say strict timing requirements ignored by inexperienced designers bit decay due to radionucleids [Byte] 92-3p145 Faggin birth microproc, [Raymond] "cosmic rays" leads to parity checking, addit parity bit stored per byte, 9 bit SIMM on reading parity regenerated and compared, not equal signals error exa 74180 8->9bit parity generator/checker 486 even has parity generators/comparators on the processor chip with 36 data bus pins and parity error out [Byte] 89-10ISEp70+p73 same standard on PCs with the IBM PC (mainframe manufacturer!) in 1990s often victim of cost saving (requires add 1 bit RAM, 4+4+1) anec parity emulators on "9" bit SIMMs, known as pseudo/placebo parity [ct] 96-2p104 picture of GSM chip RAM mimikry, recognisable by text GSM U.S.A., MPE41000J7, PAT.PENDING yes this is even patented, claim to trick boards w no 8bit mode but parity chips require less pins, would have an other number not for reusing existing SIMM boards, as other wiring needed, cheat or even error detection and correction (EDC), more bits, data recoded [ct] 98-12p232 Error Correction Codes (ECC) detection based on hamming codes, for correction use hamming distance for implementing this there exists a special chip, 74ALS632 this is more expensive, only used in mainframes, minis, upper range servers chips with extra pages, if few error pages remap them with laser [Byte] 91-8p187 remapping, part of [Byte] 91-8p175 fault tolerance memory speed and caches memory speed vs processor speed [ct] 96-12p124 todays processor speedup is enorm, DRAM speedup is far less exa 1975 1MHz vs 500ns, 1985 10MHz vs 150ns, 1995 100MHz vs 50ns with mainframes this happend even earlier processor speed increases far faster than memory speed gives deminishing returns for speedup of entire system [PCW] 92-11p286 DRAM is the largest and cheapest, but also the slowest form of RAM chips SRAM is fastest, but smaller, more expensive, uses more space and power result memory speed prevents processor from reaching full possible speed for faster memory access 2 DRAM banks, interleaving, hides RAS recharge exa my 386DX16+CTI Linux BogoMips 2.87 -> 3.15 is +10% speed exa Marios 486-33 board with 4 SIMM sockets page mode and interleave use page interleave, alternate pages this prevents mixed DRAM sizes in parallel banks, no 6 or 13 MByte also prevents 2 interleaved + 1 noninterleaved bank, no 12 MByte anec all Intel Pentium chip sets (Mercury, Neptun, Triton) no interl Intels 486 Saturn chip set still had this, P6 Orion again has anec this is easy to lose, exa my NeXT 2*4M*32+1*16M*32, 2/3 no inter very disturbing, as the NeXT only uses 68040 8k L1 cache, no extern requires reducing amount of memory accesses for instructions and data with most programs a small amount of code runs the largest amount of time this is called the locality of focus, also known as 10/90 rule same applies to data, programs repeatedly use a small set of it if this code/data is fast and rest slow this isn't so great a loss put this code into small fast memory, rest in slower large memory dynamic loading of code and data used recently into SRAMs for likely reuse [Byte] 92-3p175 what to stash in a cache, mem and disk caches [ct] 97-7p300 effect of processor cache size measured, *2 gives +15% speed these small SRAMs are known as caches [Byte] 89-3p281, [Byte] 94-8p79 cache misses 1..10%, depending on cache to memory size ratio and program caches can linder the speed problem but not solve it entirely for large sparing data sets, use no cache, wide bus 4 or 8 times proc width only a few small buffers for converting memory width to speed, exa Cray processor allways assumes fast access, blocks its pipeline when slow access full associative vs direct mapped vs set associative [CTI] p132 if set associative 2 way vs 4 way vs 8 way, even 3 and 6 have been seen full assoc extreme set assoc (n way), direct mapped other extreme (1 way) if not direct mapped a replacement strategy is needed, RAND, LRU, NUR direct mapped is simplest (no replacement strategies), fastest (simple) low associativity (or even direct map) can be substituted w large size is a question of tag RAM address vs data size, today addr are cheaper in PC motherboards direct assoc and 2 way set assoc are used in the small on-processor caches sometimes higher set assoc are used to reduce amount of tags combine continuous sublines to one line/set this also increases hits because of spacial locality, already loaded also uses nibble/page mode of DRAMs to load cache faster, 3-1-1-1 access for addressing the tag RAM split memory addr [Byte] 94-8p82 byte address (bit 0..1), subline index/offset (2..n) line/set index (n+1..o, not for full assoc), tag (o+1..p), 0s (p+1..31) tag RAM tag, valid bits (1 per subline), LRU info (not direct map) tag address bit min log2 of mem size - log2 of cache size, often 8 write cache write through (none) vs buffered/posted write (allways) vs write back (only when a line/set reused) write back needs dirty bits (1 per subline) in the tag RAM only write the line back if the dirty bit is set to save cost the dirty bit is often a missused tag bit this reduces max mem size for a given cache size, double needed cache or no dirty bit at all, use write through, loses ca 5% performance on systems with other processors (DMA, IO Proc) cache coherency problem accesses to DRAM by other proc must be prevented/corrected, use snooping separate instr/data caches, Harward architecture (from Aiken Mark I in H) vs unified caches, Princeton architecture (from von Neumann EDVAC in P) vs large data cache and a small L0 instr cache, exa PPC 601 separate I/D caches prevent large data throughput crowding out instr they also reduce the need for set associativity, 2*direct is near 1* 2set note that Mark I had completely separate progr and data memory, not caches Harward arch was significantly less flexible, disappeared until caches multiple cache levels, intern+extern, even 2 intern+extern for L1 normal caches on the processor chip, exa 68020+ [ct] 87-1p65, 80486+ for L2 and L3 SRAMs with burst mode, like burst-EDO RAMs even pipelined burst (PB) SRAM, hides first addr transmit in burst before on-processor L1 caches allow slower bus speeds than processor speed allows freqency doubling or even multiplying exa 68040 2*25 2*33, exa 486DX/x 50/2 66/2 80/2 75/3 100/3 120/3 133/4 anec on Pentium even fractional multiplyers, 90/1.5 75/1.5 Pentium ODP (P24T) 65/2.5 85/2.5 processor runs full speed but cache misses have bigger penalties exa 486DX/2 +50..80% depending on amount of misses to be expected exa 486DX/3 (named DX/4) even worse, DX/4 name from 2* cache, HW multiply but the cache only reduces misses and HW multiply is questionable caches also allow cut down external bus, saves RAM chips (fewer, larger ones) exa Pentium board chip sets with single bank RAM mode (32bit) slows cache reloading, 25..30% speed loss, only for lowest cost a Pentium with 32 bit RAM is not much faster than a 486 anec same halved bus trick by 8086->8088, 386DX->386SX, 68000->68008 8088 BUI and slow miccod make 8 bit only 20% loss, not 50% 386SX with MS-DOS SW no 32bit ops, only 10..20% loss, 32bit SW 30..40% 68008 had no BUI, large instructions, resulted in 35..45% loss anec empty cache chips, placebo/pseudo cache [ct] 95-1p24 test with BIOS cache on/off switch Microprocessors computer is data memory, ALU, instr decoder, program memory instr fetch and counter, anec [ct] CPU instinkte microprocessor is ALU + instr decoder + instr fetch and counter on one chip basic structure of processor and memory the same even the stepping from 16 bit to 32 bit, graph [Bell] p23 was a repeated mistake [Thacker] p273, [Thacker] p340 remark to Newell complex logic gets large and expensive quite fast ROM tables solve this problem so far as smallish combinatorical logic goes if large amount on input, or sequencial is needed it quickly fails to do so as logic (MHz) is far faster than most real world processes (over ms or s) save logic by working an simple circuit in multiple steps simpler programmable logic leads to using small computers for control systems is analog to programming in vertical microcode, just more expressive exa biomedical data analysis ARC vs TX-0 leads to LINC [Clark] p359 but tape ctrl in HW, not SW, save memory (SW more expensive) [Clark] p362 exa Dover printer controller 300+200(Alto) vs EARS 8*300 TTL [Thacker] p283 also Dover 1/2 Alto vs EARS 3 Altos [Lampson] p312 exa Busicom calculator 12*2000 transistors vs 4004 1900+mem [Byte] 85-9p210 microprocessors were originally designed as programmable controllers embedded processors, name from being one chip microcode engines exa Intel 4004, developed 1969, for desk calculator (Busicom), sold from 1971 [Byte] 85-9p209 evolution microproc, [Byte] 91-6p153 embedded sys, car ctrl [Byte] 92-3p145 Faggin birth, [Byte] 96-12p69 25 years microproc history [ct] 96-7p22 25 years microproc, 4004 chip photo, [PCW] 93-12p417 4bit CPU with Acc and 16 regs, max 4kx8 prg ROM, max 4*16(64?) RAM instructions were 1 or 2 x 8bit, need 8 clock cycles per instr word support chips 4001/2 RAM/ROM with built in IO and 4003 expander then sold as single chip process controllers (November 1971) one large use of 4004 being traffic light controllers, [Levy] p189 exa Intel 8008, developed 1970, for terminal (CTC/Datapoint), sold from 1972 4004 widened to 8bit, Acc + 8 or 16 registers, 14bit memory addr total lack of documentation about this, unlike 4004 (first) 8080 (spread) exa Intel 8080, from 8008 customer feedback, and later 8085 no aux chips exa Zilog Z80 from ex Intel 8080 engineers, because Intel not focused on proc exa Motorola 6800, and later 6809 exa MOS 6502 from ex Moto 6800 engineers, aiming at cheaper ($35 vs $350) and later 28pin 6504/07 (with smaller address space, no 5 empty pins) exa Motorola 14500, minimal, DIP16, 16 instr, just data logic and instr dec no address, needs external IO multiplex/demultiplex and progr mem+cntr exa Intel 8086/88/186/188 still mainly developed for control 80188 used in Ford ECC motor control system [PCW] addition to microprocessors also specialised IO controller chips 2..3 port 8bit parallel IOs, exa 8255 PIO, Z80PIO, 6820 PIA, 6520 PIA 1..2 port serial, exa 8251 USART, Z80SIO, 6851 2..4 channel counter/timers, exa 8253, Z80CTC combined function chips, exa 6522 VIA, 6526 CIA combined with SRAM, exa 6530(6532?) RIOT combination of processor with ROM, RAM and IO controller gives microcontrollers exa 2chip F8 and 4040, TMS1000, 8048, 8051, Z8, 6805, 6811/12, PIC, AVR [Byte] 88-8p239 8031/51, [Byte] 91-6p153 [PCMag] 95-4-11p83 Basic Stamp, small, simple, cheap microcontroller first usually 40pin, 4*8bit IO, later larger 64/68/84 and smaller 8/20pin small ones even built in RC clock and reset, save pins, variance no matter biggest difference, appart from instruction set, is type of ROM some allow external ROMs (exa 8051), or even variants w/o intern ROM (8031) external ROMs costs using IO pins as bus (how many? AD0-7 multiplexed) one chip (which?) is/was avail DIP40 600mil w DIP24/28 300mil socket on top today embedded processors are still the most numerous microprocessors [Byte] 93-5p213 embedded comp in cars, [Byte] 93-7p69 data aquisitio comp [Byte] 97-6p85 embedded systems with Internet control [ct] 97-4p124 electronics in cars, environment impact [ct] 2000-5p118 embedded cpus in cars, [ct] 2000-23p270 RTLinux count processors where you live and where you work count processors in typical desktop PC main vs printer, modem, keyctrl, keyb, mouse, SCSI/IDE HD/CD-ROM in 2000 manufacturers expect 200 processors/household [Byte] 91-6p158 Echelon Neuron chip [Byte] 94-9p67 itty-bitty processior (IBP), Basic Stamp with PIC16C56 [Byte] 94-12p217 IBP COS program and 95-2p18 letter anec forecast 10 processors per person has come true, the critics erred only later were microprocessors used as CPUs for small computers [ct] 99-26p74 computer history exa 8008 Mark-8, Scelbi 8H exa 8080 MITS Altair 8800 (1975) [Byte] 85-9p201 [Byte] 90-9p370, [Levy] p187 exa 8080 Sol (1976) typewriter keyboard and TV video interface [Levy] p241 exa 6502 Apple I, II (1977) keyb, video, Basic [Byte] 85-9p202, [Levy] p244 history of its design [Byte] 84-12pA67 and 85-1p167 Woz interview 1978/9 disk controller, DOS and disk Basic, base of VisiCalc success exa 6502 Commodore PET (1978) [PCW] 95-8p593 built in monitor and tape, IEEE for disk and print exa 6502 Atari 800 (1978/9 [Byte] 85-9p203) sprites, sound, joysticks exa 6502 Commodore C64 (1982 [Byte] 85-9p205) first colour computer for $600 [Byte] 94-8p252 R.I.P. Commodore 1954-1994 exa Z80 Sinclair ZX80, ZX81, ZXSpectrum ZX81 as solder yourself kit first computer under $100 micros were the result of cheaply available microprocessors hobbyists usually only had timesharing over borrowed TTYs one must have an account, it is expensive to use (phone line) they wanted cheap single user computers [Levy] p246 Woz later business users found local power of micros superior to centralism used them to get out from under MIS departments, gave micro revolution get away from application backlog, MIS unresponsiveness this supprised the microprocessor inventors, [Levy] p189 anec but Intel marketing used computer image in Nov 71 ad [Byte] 85-9p199 therefore micros repeated existing designs, played catch up first raw processor, then interactive, then CLIs and even timesharing lead then to making fitting specialised disk, video, network controller chips anec Faggin (4004/8008/8080/Z80 developner) sees this as 4004 grew to microcontrollers, 8008 grew to microcomputers Programmable Logic Devices (PLDs) many types PLA, PAL, PALV, GAL, EPLDs, CPLDs, LCAs/FPGAs, CALs/SoGs [Byte] 90-1p271 custom chips, EPLDs, [Byte] 91-9p88IS55 Algotronix [ct] 89-11p196 PLDs, ASICs, [ct] 97-13p146 FPGA based motherboards [ct] 98-4p98 FPGA processor, [ct] 99-21p282 reconfigurable logic [ct] 2000-17p202 reconfigurable, [ct] 2000-22p294 open source hardware RAMs, ROMs, microprocessors (and their IO controllers) all were large volume standardised parts, allowing going to large chips but rest of glue logic stayed with TTLs, majority of chip count on board exa my 1988 286-12, TTL about 50% board space, 25% large, 25% connectors despite each chip cheap wiring/holes/power/space becomes cost factor and driving signals from one to the other also speed limiting factor (P)ROMs allow using memory tables to replace complex combinatorical logic usefull for instruction decoding and control circuit stuff but each additional PROM input/address line requires doubling of memory size is because memories are designed for minimal address lines for max space also large chips are fast enough for microcode, but not for address decoders microcontrollers solve inputs and complexity problems but are even far slower, factor 100s or 100s, even relative to (P)ROMs programmable logic array (PLA) chips allow more input lines with less transistors, by not fully decoding NOT-NOT then prog AND array then prog OR array (NAND-NAND), (2I+O)xP size each P line is called a product term, because AND=product, OR later then sum size P is not externally visible, and varies for each type looking once 30min at a Signetics/Philips databook gave impression P=~4 because of many inputs and small/fast, particularly good for address decoders exa C64 PLA 16 I + 8 O + /OE (for invert tristate buffers) + FE + VCC/GND assuming P=4*O: (2*16+8)x(4*8)=40x32=1280bit, PROM would be (2^16)x8=512k PLA control bits programming by address input and data bits not possible as no complete address decoder, so 2nd small PROM address decoder looks like an Px(2I+O)bit PROM, above example 32x40bit small because this dual access (PROM write/read and PLA 2nd read) fuses not direct in logic path, instead wire to ground, like DRAM capacit for driving the PROM side internal addr generators, enter data serially shift register with 2I+O data bits, and lb(P) address bits programmable array logic (PAL) chips [ct] 90-9p240 and 90-10p366 GAL progr, [ctk] 89-12p383 PAL/GAL only AND (first NAND) array progr, no OR (second NAND) array as hardwired gives even more speed, as no 2 arrays to traverse, 1 replaced by simple OR because fixed wired ORs, 8 productterms each, cost of more bits, 2I*8O size 20pin 10H8(10i,8*8o), 12H6(12i,4*8+2*16o), 14H4(14i,4*16o), 16H2(16i,2*32o) all use an (2*8)x(8*8)=2048bit array, slightly more than PLAs same also 10L8, 12L6 14L4, 16L2 low active out, good for generating /CS seldom also ??P? versions, with programmable polarity, 1bit and XOR gate even more seldom ??X? version 8 OR terms -> 2*4 OR terms and then XOR 24pin same combinations, same outputs, just +4 inputs I have seen conflicting claims of 8, 9 or 10 terms per OR in these consequently (2*20)x([8|9|10]*8)=2560|2880|3200bit array sizes are given then "complex" 16H8, 16L8, 16P8, 20H8, 20L8, 20P8 with 10|14i,6i/o,2o allow feedback of 6 outputs without using up another in pin can also set 6 i/o pins to in or bidir per TS gate, from 1 term, only 7OR then "registered" 16R8, 16R6, 16R4, 16RP?, 20R[P]? for sequencial stuff are similar to [16|20][HP]8, with 8|6|4 outputs having an FF/Register use dedicated CLK and /OE pins (not terms!), because this 8|10i,8i/o pins also later large 32R16 and 64R32, but only once seen reference to them I assume they are (2*32)x(8*16)=8192bit and (2*64)x(8*32)=32768bit sized anec I once hat plans to make an small microprocessor of an 64R32 but 32bits registers too small for this, I did non know of bitslices also assynchron clockable 24pin 20RA10, [Tietse] p307, Lattice datasheet (2*20)x80bit, 10i,10i/o (first 20pin w 10o) with each 4OR+reset+set+clk+/OE has like P types invert XOR, like R types global /OE (ANDed with term /OE) select combinational/seqencial Mux (so no need 10|8|6|4) and reg preload and global FF preload pin (data from output pins) then flexible macrocells (MCs) 24pin 22V10, [Tietse] p308, datasheets 11i,1i/clk,10i/o, w 2*8+2*10+2*12+2*14+2*16 OR, comb/FFs select, invert /OE from array (addit term), feedback before TS outp so allways available common FF set+reset from term, common clock from pin 1 (also in array) because of this quite large (2*22)x((10*(12+1))+2)=5808bit later size variants introduced 18V10 (20pin 8i,10i/o, 10*8ORs) and 26V12 (28pin, 14i,12i/o, 8*8+2*10+2*12ORs) then cost reduced flexible 16V8 and 20V8 PALs, standard array sizes, 8*7|8OR can simulate all H, L, P (are P) with 7OR or 8OR, and R, RP (8OR) types due to per-OR comb/FF select and /OE hard/term/pin select and device-wide "input shift" for [10|14]i,6i/o,2o or [8|12]i,8i/o pins addit to PROM also CMOS versions EEPROM based (PALCE), from now on standard PALs went directly from PROM to EEPROM cells, no UV EPROM and window cases extended programmable logic device (EPLD) chips combinatorical PALs need many inputs, to make sense (else use PROMs) with registers being outputs and (internal) inputs, less only-inputs needed leaves more room for more outputs, and registers, for counters, state mach with more registers, or even input registers, burried registers Altera EP610/EP910/EP1810, invert, comb/FF, term reset, pin/pre-TS input /OE term|hard with common term+mux global|term clk, 1 global per FF block 610 24pin 4i,2c,2*8i/o, 910 40pin 6i,2c,2*12i/o, 1810 68pin 6i,4i/c,4*12i/o Lattice PALCE610 shows spilt n-OR + 2nd 2nd (8-n)-OR, for J+K or S+R mode second programmable inverter for this OR uses up feedback|in-Mux 610 array shown (2*20)x(16x10)=6400bits, assume 910 (2*36)x(24*10)=17280 Lattice G6001, 10i,1i/clk,1clk,10i/o, inv, comb/FF, res, sep /OE, sep Clk/En 8 addit "burried" FFs w/o out pin, also 20 addit FFs in i and i(/o) lines these are PLAs not PALs, AND 10i+10i(/o)+8FF+1i(/clk) -> 64 OR then 64 -> (10(i/)o+8FF)*2 (FF D in + Clk/En) in addition AND-only 10 /OE signals and 1 reset array(s) size (2*(10+10+10+8+1))x(64+10+1)+64x(2*(10+8))=5229bits variant G6002 with each input cell FF separate config and 2-3 higher speed Lattice PAL29M16, 24pin 5i,1clk,2*8i/o, 1i as 2nd clk, 1i as /OE 8*8+4*12+4*16ORs, FF D either from OR/input, output comb/FF, invert 1 global term each for reset+set+preset+observe clk from clk or i/2ndclk, and with invert, /OE pin or 4*4FF each 2OR feedback 4*12+4*16 term post-FF or pin, 8*8 term both post-FF and pin array size (2*(5+8+2*8))x(4*16+4*12+8*8+4*2+4)=7896bits assync variant PAL29MA16, 24pin 5i,1clk,2*8i/o, 1i as /OE, but no 2nd clock 20RA10-like -4 terms per OR, used for per-output reset+set+clk+/OE Atmel ATF750, 24pin 11i,1i/clk,10i/o like 22V10 2*8+2*10+2*12+2*14+2*16 OR comb/firstFF select, invert, /OE from array, but sync common preset 2 FF/out terms split 2*6 (first can all), each separ clk and assync reset if first FF does not need all terms, can use second FF as burried FF feedback 3 lines (input + 2FFs beforeTS), (2*(12+3*10))x(10*17+1)=14364bits superset ATF2500, 40pin 13i,1i/clk,24i/o, (2*(14+3*24))x(24*17+8)=71552bits same 2FF/out, sep Clk and reset, term split and mergable, 3 feedback but always 12term/out, split 3*4 pin/FF/FF, 4*2+4*4 group sync preset also Atmel 1500, 44pin 4i/clk/etc,32i/o, array 2*(32*2+4)x(32*5) 5 terms in OR and also as /OE, FF-D, XOR, reset/set, clk/clken terms also per 16FFs 1 term/FF feedback = 16 extra array columns, cascade 1FF/out, pin input + separate comb/seq mux input, is CPLD with one array nice powerfull chips, but come with many problems, making them useless problem each vendor theor own ones, no standard, single/few source chips as fairly old designs, will disappear, displaced by the newer CPLDs all Lattice datasheet have "use GALs for new designs", but no equiv GALs! problem with badly/not documented bitmaps and/or loading procedures no open source tools, bits could be reverse engineered from bitmaps but without knowning how to get them in that is useless anyway complex programmable logic device (CPLD) chips in PALs linear IO increase produces square (2I*8O) array size increase PLAs fare the same if we assume P/O as constant, just perhaps 50% smaller square growth (*2x2 /3J) of Moores law is reduced to linear in/output count burried FFs are equivalent to in/outputs, so FF+pin growth is so limited and the larger chips get, the more complex logic wants more burried FFs as there is no need for all outputs to be derived from all inputs or FFs split array into multiple constant-size partial arrays, linked together EP1810 is part of EP610 and EP910 series, same features, but early CPLD global/local arrays, glob 4*(3i+1clk/i+4i(/o)) and local 4*(4(i/)o+8i/o) sort of 4 12i+4clk/i+12i/o PALs in one, with i+clk/i+4i/o (i only) shared and the 4*4i/o having both i (to global) and o (only local) feedbacks assume 4*[g(2*8)x(12*10)+l(2*12)x(12*10)]=19200bits not much more than 910s assumed 17280, but double outputs, 3/2 i/o CPLDs split into blocks (usually 16i/o) with internal "inputs", called LABs and interconnect between all in pins and outputs, and these "inputs" constant array size adds up linear with pins, only interconn grows square as interconn can be sparse array, smaller, until large chips, ca 256 out smaller array allows all pins i/o, no i-only, few global i/clk/oe/res lines smaller array allows 2-input (in + feedback), out/FFs of in pins as burried smaller array and fewer terms/out (because most outs are simple) and then allow merging outs for few for those outs that are not simple smaller array and fewer terms/out allow more outs than pins with the rest of outs being burried, same chip in multiple cases Altera MAX3000 [2|4|8|16]*16i/o+4i/clk/oe/clr, arrays ((2*36)in+16sh)x(16*5) 5 term/out, expandable 1term/out back to array, and 3*5 up neighbour terms XOR term, FF w clk/clken/set/clr muxes global/terms, /OE 0/1/6global/OC PIA [2..16]*16 out feedback + [2..16]*[4..16] in + global inputs MAX7000 [2|4|6|8|10|2|16]+16i/o+4i/..., in via FF mode, [8..16] in to PIA Atmel 15xx [2|4|8|16]*16i/o+4i/clk/oe/clr, arrays ((2*40)in+16sh)x(16*5) cascade extra terms, XOR/set/rest/etc use form 5 terms, 8..12 pins per 16FF Cypress 7C34x [2|4|8|12]*16i/o18i, arrays inputs not documen, PIA from in+out array 8 glob in terms, from out, 3 term/out + XOR term, 32 expanders per 16 Cypress Flash370 totally differ [2|4|8]*16i/o+1i+4clk, arrays (2*36)x(80+6) PIM from FF+in, prod term alloc 16 from 80 for each out 6 other terms = 16FFs set+res, 2*2 for each 8 out /OE some models only 1i/o per 2FFs, use 2nd FF for i, only 1.5 PIM term per FF Ultra37000 [2|4|8|12|16|24|32]*16i/o+1i+4clk, largest single-PIM CPLDs allways 1 i/o per 2FFs, 1.5 PIM term per FF, some LABs no pins at all Lattice 1000 [2|3|4|6]*(8*4i/o+21)+4clk, arrays (2*(16rout+2dedi))x(4+4+5+7) OR-blocks ORed for out, 1 term removed for XOR, FF w clk/reset term/pin only 1i/o per 2FFs, i own FF, out selectable from FFs, /OE term/global/OC 2000 [1|2|3|4|6]*(8*4i/o+2i)+3clk+2oe, 1i/o per FF or 2FFs, i no own FFs 3000 [5|6|8|10|14]*4*(2*4)i/o+5clk+2oe, arrays (2*24)x(2*??), 1i/o per 2FFs 5000 [4|8|12|16]*32i/o+4clk+2oe, arrays (2*68)x163, 1i/o per FF Xilinx XPLA XCR5xxx [2|4|8]*16i/o+2clk+2clk, arrays (2*36)x(6+16*5+32) ZIA from in+out, 5term/out PAL + 32term PLA + 6 LBglob, FF LBglob clk + P/R Xilinx XPLA3/Coolrunner XCR3xxx [2|4|8|16|24]*16i/o+2clk, arrays (2*36)x48 terms all 48 PLA, also 8 foldback, 8 LB global, 16 VFM, 16 FFs ZIA from FF|in+FF|comb, and also in->FF mode VFM PLA|1term|AND|XOR and inverted of these, clk/clken/rst/pst term|LB|glob Xilinx XC9500 [2|4|8|16]*18(!)i/o+0(!), arrays (2*54)x(18*5), PIM from FF+in XOR term, FF w clk/clken/set/clr muxes global/terms, /OE 0/1/4global+inv cascade up and down neighbors, for this 2nd OR, separate local + cascade normal CPLDs go up to 256i/o, seldom more, above this interconnect dominates gives again only linear i/o growth with square chip size growth lead to various split interconnect techniques, all only single vendor dominant reason for using these large sizes is not any more pin count but rather large amount of burried FFs, high density macrocell count for complex state machines, or even custom parallel data paths this lead to designs with pins dissociated from the macrocells Xilinx XPL2 XCR3xxx, dual level interconnect ZIA->L(local)ZIA+G(global)ZIA arrays and pins to/from LZIAs as usual, LZIAs to/from GZIA each 64 lines [(4*4)|(6*8)]*20(!)i/o, same arrays + FFs as XPLA, not made any more for high density and speed, SRAM based, need to boot from (P)ROM side effect of this is that loadiing is documented, unlike EPLDs/CPLDs Altera MAX9000 row/column interconnect, arrays conn only those in same r/c array in from horiz buses, array out to vert or horiz, vert->horiz link this row/column structure is ideal for large bus structures ([4|5|6|7]ROWx5COL)*16MCs, arrays (2*33in+2*16feed+16sh)x(16*5) same FFs as MAX5000 or MAX7000, but no in via FF, instead direct term FF all i/o and /OE out-FF stuff connects to buses, not to arrays/MCs [4|5|6|7]*2*8(row)+5*2*10(col)i/o+4i/clk/oe/clr Lattice 8000 row/column interconnect, vert routing, horiz tri-state buses use of tri state buses is even better for bus structures [5|7|9]*((2x3)*20)MCs, arrays (2*44)x(80logic+2ioctrl) all i/o on routing and buses, ([5|7|9]*2*12vert+6*2*12horiz)i/O+clk/etc Cypress Delta39000 row/column interconnect, of PIMs of LABs 8*16 local block cluster, w each 72 out to and 64 in from vert and horiz [2x1..7x6]*(8*16)MCs, arrays+FFs as Ultra37000, but w added carry logic in-PIM 2 1kx8bit SRAM, per PIM on-bus 512x8bit DP-SRAM/FIFO all i/o and /OE out-FF stuff connects to buses, not to arrays/MCs for high density and speed, SRAM based, need to boot from (P)ROM also all of these every vendor diff parts, not standard, single source parts so this requires using part-independant VHDL or Verilog coding none of these bits or load documented, and very complex to reverse engineer so no chance of ever getting open source tools for these either logic cell array (LCA) / field programmable gate array (FPGA) chips even large CPLDs still allow too little internal logic before size snowballs do not offer enough size for fully grown custom chip designs better an chip that allows logic to grow like full customs or gate arrays for this array of small logic cells (=LCA), all same size/content/ability and connect these using an infinitely growable routing, segmented result is lookup tables (LUTs), basically small PROMs/SRAMs, for gates in worst case cascade multiple cells, F5-Mux, wide-Logic, etc LUTs always paired with FFs (so large amount), and separate from i/os while PAL/CPLDs used mainly for random/glue logic in microcomp, exa TEK 4/8 larger FPGAs can even be used for soft processor, exa xr16, Msl16, PDP-8X or even for entire System on Chips (SoCs), soft PCs, exa C-One Xilinx CLBs with 2 or 4 or 8 FFs, interconnect single/2/4/long lines, TBUFs 2000/3000/4000 CLB 2 LUT/FF vs Virtex 4 vs VII 8, from 4000 DP LUT RAMs routing XC4000 1/2(/4) vs Virtex 1/6, IOBs v-ring, TBUF, Virt dedicated clk Atmel 40k single FF with pair of 3LUTs and MUX, from 6000 Mux system Altera MAX9000 style row/column interconnect with LABs with 8/10 LUT+FF MCs cellular array logic (CAL) / sea of gates (SoG) chips also called fine grain FPGAs, because of more even smaller cells chip is array of cells with each 1 input from and output to each neighbor so just 4 inputs to be mapped to 4 outputs, and simpler logic element Algotronix CAL1032 32x32, Xilinx bought them, CAL2/XC6200, Atmel 6000 based on hard wired 2:1 Muxes with selection of 2 or 3 inputs to them various open source FPGA-in-FOGA and FPGA-in-gatearray are all SoGs as only progr logic family since PALs fully documented, incl bitstream format researchers prefered these, but no commercial success because slow killing single source XC6200 forced Xilinx to offer JBits and later XDL Registers and ALUs drawing data as binary, octal, hex [Raymond] "hexadecimal" ALU computation, logic function + carry propagation so acts as logic function gen with carry off, as add/sub/etc with carry on technologies parallel ALU with flip-flops (relays or tubes), exa ENIAC or serial ALU with flip-flops, magnetic drums, mercury delay lines exa Billing G1a (1952, magnetic drum calculator) [ct] 88-10p110 exa Wilkes ElecDelayStoreAutomCalc (1946) [Salus] p17 anec complexity of multifunction parallel ALUs lead to chip designers to being first users of CAE/CAD/CAM techniques, exa chip layout routers data formats [Dewar], [ctk] 87-3p203 Zahlendarstellungen, [ctk] 88-2p203 Zeichensaetze decimal vs binary vs BCD exa Babbage AE (18??) [Raymond] "engine", [ct] 89-1p114, [PCW] 91-9p142 failed because of chosing the wrong technology (decimal representation) story of backers dropping, they lossed belief vs he critic them [Zopfi] exa Zuse Z1 (193?, mechanical, tape programmed) [ct] 89-3p232 [ct] 2002-11p58 Zuse small history, [ct] 2002-20p100 last running Zuse 22 success with binary represetation of data and program the mechanical technology used was available to Babbage in 19th century exa 8080 (DAA), 6502 (Dflag), 80x86 (DAA|S), 680x0 (A|SBCD), RISCs (none) signed binary values signbit+unsigned, 1s complement, 2s complement bit formats not just relevant to Assembler progr, have effect even in HLLs signed numbers diff reaction [Raymond] "HAKMEM" 154 negative numbers anec graph.c using signed int gave wrong address calculation problem register layouts accu and regs, exa PDP 8 (few), 8080 (1+3*2), 6502 (few) reg file, exa PDP 11 (8), 80x86 (irreg), 680x0 (8+8), MIPS (32), PPC (32) reg windows, exa SPARC (8+7*16) reg stack, exa AMD 29000, AT&T Hobbit/CRISC, picoJava [Byte] 96-11p79 stack, exa T800 (3 in proc and workspace in mem), NC4000 Addressing Memory memory has greater capacity than registers, needs selection which to use unlike registers where a few can be programmer selected and stay constant memory often "walking" through data, need to compute address addressing modes [Dewar] p28, [ctk] 87-6p183 Adressierarten short immed, short direct, register indirect, reg indir+incr/decr, stack, base (reg+const, frames), index (const+reg, array), base+index (r+c+r2), mem indirect, indir+index, base+indir, base+indir+index indir addressing (called index registers) appeared first MADM [Salus] p17 exa PDP 8 (d/i) [DEC1] p3-8, PDP 11 (8), 8080 (few), 6502 (many) exa 80x86 [Dewar] p80, 680x0 [Dewar] p183 exa MIPS [Dewar] p273, SPARC [Dewar] p316, [Byte] 91-4p295 exa PPC [Dewar] p393, T800 (few) exa PDP 11, 680x0, RISC any reg autoincr vs 80386 special SI/DI registers the optimal selection of modes is program and programming language dependant assembler programmers/2GLs and control systems prefer simpler modes HLLs/3GLs/4GLs and complex data structures prefer complex modes address width, addr memory size, main driving force for wide memory data width > addr width for single-cycle loading, 8 vs 16 vs 32 vs 64 bit 8 bit allwas 2 byte = 64k addr, 32 bit 4 GB addr, 64 for unlimited 16 bit problem, 1 word = 64k vs 2 word = 4 GB vs something in between process size min 1M, below is hell, exa 64k [Bell] p11 Alto 128k hampered SW [Thacker] p273, most serious deficency [Lampson] p295 64 bit computing for more than 4 GB, processor widths [Byte] 91-9p135 list of bit widths of processors processor designs with too smaller adresses, main, mini, micro, repeat address space expansion is basically mapping an short address to an longe one needs to be simple to prevent slowing down computer and preferably not too much work for the programmer to use exa PDP-8 12->15bit expansion, 8 memory fields 2 3bit registers for direct (code, vars) and indirect (arrays) fields exa PDP-11/45, PDP-11/70 split instructions and data mode program code is only accesed via instr ptr, data by all other addr modes this allows 2 separate address spaces for instructions and data this increases the available address space from 64k to 128k cross segm load/store w M[TF]P[ID] (move to/from prev instr/data) instr comes from split I/D being a side effect of PDP process mechanism anec hardware correction of MFPI instr for Unix nargs.s [Salus] p135 split I/D is also used in the Intel 8051 microcontroller exa Intel 8086/8088 20 bit addresses, max 1 MByte memory 2*16 bit segment+offset, CS/DS/SS/ES allow using 256k without reloading each segment has still only 16 bit addresses, is 64k small results in lots of 64k or even 32k limits in MS-DOS software, exa COM programs, NC editor in Windows, exa resources running out, kernal and GDI internal segments exa progman black icons disease, Notepad editor exa Winword 1.x bitmap graphics include graphics from plot program not fitting in if bigger than 37.58 cm2 8086 was intended as a small upgrade to the 8085, 8088 cut down bus intended as interim until 32 bit 80432 ready [Dewar], [Byte] 89-12p377 expansion of irreg 8085 instr set forced Intel on inefficient CISC path anec the 432 was a propper 32 bit processor, a typed pointer system was expensive (2 chips), slow integer calc, not PC compatible it failled badly [Byte] 96-12p80 microprocessings Edsel designed before PCs became important (8086/8 1978/9 [Byte] 85-9p213) was before PC revolution, even the Apple II was then only hobbyist aimed at control systems, real descendants 80186/188 in Ford ECC [PCW] only IBM (and cloners) used it for PCs, only relevant because of IBM attempt to overcome this lead to LIM/EMS [Byte] 88-2p243 but the 8088 is too slow for more than 1MB memory anyway better would have been standard access to the 286s protected mode 80286 was intended as small upgrade to 8086 for IBM, but still 16 bit replaces segments with selectors and descriptors segment registers with selector registers and descript caches [Byte] 85-10IIPp93 8088 vs 80286, [Byte] 86-10IIPp123 80286 prot mode [Byte] 89-12p377 protected mode backward compatibility with badly written 8088 software prevented using the better segmenting mode when it appeared on the 286 result 286 and above stay limited while in real mode by MS-DOS anec the 286 segmented memory system came from the 80432 only with 80386 did Intel take the 80x86 series seriously, made it 32 bit by then damage of the lousy architecture had been done, irreversible anec "the 386 is the first sensible processor from Intel" anec 386 was introduced 1985, but 1995 still not proper use by Windows anec before indirect addressing programs had to modify memory access instruct this was possible because of von Neumann "code is bits is data" this gives self modifying code, SMC, is actually runtime finalised code SMC was faster than indir on some machines, Mel never indirect [Raymond] anec indirect addressing mode used for special effect [Raymond] address incremented past last address, alters instruction part SMC reappeared on early microproc because they were designed for ctrl sys these don't use indirect addressing, so those modes were not in instr set also lack of in or out instructions with variable addresses on 8080 forced MS Basic to modify code for INP and OUT commands at runtime anec memory cells were still called registers for a long time [Ross2] p72 only 5 registers left, [Clark] p359 TX-0 8192 registers already in these days memory size was more limiting than proc power Addressing Partial Words, Byte Addressing on wide word machines (16..64) mult small data pieces are packed into one word working on them requires shifting and masking operat in addition to reading writing requires first reading, inserting (ma,ma,sh,or) then writing the most common case of packing is packed characters memory words are cut into subunits called bytes, usually 2^n of them [Wexelblat] p398 origin of word byte, [Byte] 95-2p20 history of word byte all the same size (6..9 bits) note that bytes are not octets [Raymond] "byte", [Libes2] p179 since IBM 360 (32 -> 4*8) this is assumed by many but PDP 8 (12 -> 2*6), PDP 10 (36 -> 4*9), CDC 6600 (60 -> 10*6) [Dewar] word subunits must also be extracted to be used on some systems this is helped by special extract and insert instructions exa PDP 10 on any bit boundry [Raymond] "LDB", [Raymond] "DPB" exa PDP 8 only on char borders, exchange 2*6 bits [DEC1] p3-12 BSW instr on PDP 11 despite byte addressing also instr, SWAB [Raymond] "swab" on many machines addr are split into word addr and byte subaddr byte addressing is in all CISC processors and some RISC but not AMD 29000 [Dewar] [Byte] 95-1p225, NC4000 [Ting], Alpha word address is used as usual, byte subaddr selects which byte is desired bottom addr bits decoded, multiple RD/WR lines, one for each byte depending on whether word or byte access is desired use diff instr codes for full word access the byte subaddr bits are not needed, access with <> 0 complicates Fortran COMMONs, Cobol records, but Pascal/Ada none gives access missalignment problem, handled by [Dewar] drop bottom addr bits (RIOS), error trap (SPARC) split fetch instr (MIPS, [Dewar] p298), emulation trap (PPC) auto dual fetch (80x86, 680x0), shift addr (Transputer) anec Transp C cast operator gen shift instr [ct] 97-10p180 instr set anec K&R remark about C pointer conversion [Kernighan] p111, [Dewar] p22 malloc returns a char pointer, but int alligned [Dewar] p22, [Libes2] p42 anec files with records of diff lengths pose the same problem exa father QB double and single floats subaddress bits using big or little endian numbering of bytes [Dewar], [Libes2] p117, [Plauger3] p2, [Wall] p414 and p427 [Raymond] "bytesexual", [Raymond] "big-endian" [Raymond] "little-endian", [Raymond] "middle-endian" text reading from left to right leads to byte numbering l to r, big endian lead to numbering bits left to right, big endian [DEC1] p3-6 memory organis big endian is used by mainframes, exa IBM 360/370/3090/ES9000 anec byte addressing was invented by IBM for its Stretch by many minis, exa PDP 8, PDP 10, IBM 34/36/38/AS400 and a few micros, exa TI 9900, anec TI RAM/ROM chips bits docum big endian DEC for first byteaddr system (PDP 11) chose little endian, reason unknown same also used for VAX, MIPS in DECstation, but not on Alpha (no byte addr) this choice of little endian gave them many problems PDP 11 disk controller storing bytes the wrong way round [Dewar] p79 Ethernet and TCP/IP specify big endian, same problem is one of the reasons for many ASCII byte oriented net protocols later 32 bit data lead to mixed endian data (byte 1-0-3-2) 32 bit data not identical on 16 bit (PDP) and 32 bit (VAX) machines anec Unix ported from PDP 11 (little endian) to IBM Series 1 (big endian) both byteaddressed 16 bit, but reversed [Libes1] p10 gave swap (UN)(IX)->(NU)(XI) [Raymond] "NUXI problem" Intel 4004 was conversion of a shift register calculator, serial ALU [Byte] 92-3p145 Faggin birth microproc, [ct] 95-7p22 picture, [Dewar] p78 1 bit at a time ALUs with shift regs lead to little endian bit numbering discovery of of bit 0 = 2^0 .. bit 3 = 2^3 reinforced this numbering anec microprocessor users assumed IBM (big endian bits) is wrong as usual Intel 8080 for 16 bit addr calculations does 2 8 bit calculations instead of splitting words into bytes, multiple words/bytes to an address for sequencial calc low byte first, leads to little endian, like DEC DAD rp does L=rpl+L, then H=rph+H+carry [Zaks] p80 anec 8080/Z80 aux/half carry flag for DAA lead to 4 bit ALU claim therefore lower numbered 8 bits of an addr are in lower numbered byte same MOS 6502 address increments/offsets adl+1/offset, if carry adh+1 anec 6502 jump indirect bug, no if carry on second address increment is essentially a jump followed by an second implicit jump Intel 8086 (semi compatible w 8080) 16 bit mem stayed with little endian Motorola 6809 (and 6800?) was big endian bytes, bits docu little endian Motorola 68000 is mixed endian, like 6809 anec single bit vs bit field instr problem [Dewar] p171 some RISC processors have switchable byte endianness exa MIPS [Dewar], PPC [Byte] 95-9p263 bit endianness as most of them no bit extract instr is only doc convention is usually little endian, also therefore have 680x0 confusion anec MIPS in big endian mode one more instr for flag extract [Dewar] p281 because flags in C are represented by lowest bit, from PDP 11 convention anec little endian bytewise memory dumps are difficult to read most important byte appears as last one, multibyte bit fields get split even worse in the actual bytes the most important nibble is first list from right to left, arabian notation [Byte] 86-10IIPp233 mem manipulat CP/M DDT and MS-DOS debug doesn't do this, despite home on 8080/8088 both copy the display format of IBMs mainframe dump program, big endian Unix od swaps groups of 4 bytes, good for longs, but even worse for chars Instructions [Byte] 87-4p143 instruction sets, [Byte] 88-5p213 CPU wars, how instr sets made [Byte] 89-2p229 personal workstations and RISC, [Byte] 92-1p305 [ct] 87-1p54 VAX78032/68020/32332/80386/V70, [ct] 89-6p128 Prozess Steckbriefe [PCW] 90-3p136 R/EISC, [PCW] 93-2p338 RISC, [PCW] 94-4p464 architectures computers grew out of automatic (= programmable) calculators computers differ from calculators, they don't just compute, they process data is more, includes progr behaviour dependant of data, requires progr control exa Turing AutomCompEng (1946, true comp, only design) [ct] 88-3p100 Turing exa von Neumann ElecDiscreteVariableAccumComput (1947, running) [Salus] p16 difference between progr calculator and computer is stored program in memory can be manipulated as data, is read by programmable mechanism, flow control to tell processor what to do the programm consists of series of instructions for fetching instr from memory use a register containing address of instr program counter (PC) or instruction pointer (IP) even next instr (NI, Tr) I will use IP, is propper, also avoids confusion with personal computer instruction types move data (r-r, m-r/r-m, m-m) exa PDP 8 (m-a), PDP 11 (r-r+m-r+m-m), 8080 (r-r+m-r), 6502 (m-a) exa 80x86 (r-r+m-r), 680x0 (r-r+m-r+m-m), RISC (r-r+m-r) ALU (add/sub/mul/div/neg/carry, inc/dec, and/or/xor/not, shift, bit set/res) mul/div only on complex processors, exa PDP 11, 80x86, 680x0, MIPS some intermediate have mul step, exa SPARC or even div step, exa NC4000 program control (jmp/jsr/ret, bra/skip/test/flags) these instructions modify the IP, give computers their flexibility processor control (nop, halt/reset, irq/trap, modes) instruction sets separate memory access and ALU (RISC) vs combined instructions (old&CISC) addr modes long immediate (IP+autoinc), long direct (IP+autoinc+indirect) instr bits for many registers (exa 8080) vs many addressing modes (exa 6502) acc+1reg (8080, 6502) vs 2reg (PDP 11, 8086, 68000) vs 3reg (most RISCs) once comp had 3 addr in instr, disappeared when cores [Hopper] p21 instructions must fit into opcodes, instr formats [Byte] 88-5p213 CPU Arch exa PDP 8 (1*12), PDP 11 (1/2*16), 8080 (1-3*8), 6502 (1-3*8) exa 80386 (1-n*8), 68030 (1-n*16), RISC (1*32), T800 (1-n*8) constants short in instruction word, exa PDP 8, RISC (with LUI) vs large in next word, exa PDP 11, 8080, 6502, 80386, 68030 for operat many diff instr types, exa PDP 8, 8080, 80x86, T800 vs using many addr modes, exa PDP 11, 6502, 680x0, RISC [Dewar] p189 anec in Tech after 8080 we had PDP 11 introduced, far easier instr set as microproc LSI 11/23 in 1974 [Salus] p133, why didn't we learn on it IP and SP as separate registers with separate access instructions exa PDP 6 [Levy] p80 Push-J, PDP 8, PDP 10 [Raymond] "POPJ", 8080, 80x86 vs in register file w normal instr, exa PDP 11, VAX, TI 9900, ARM, Alpha? vs IP separate and SP in register file, exa 680x0, many RISC in non microcode separate easier wiring, in microcoded in regs cheaper reg file leads to less opcodes, simpler instr set special branch instr vs skip and normal jump instr sub/cmp into flags and branch on flag, exa 8080, 6502, SPARC, PPC vs setcc into reg and branch, exa MIPS, T800 vs both, exa 80386, 68030 [Byte] 88-5p244 68k move instr sets flags JSR is 2 operations in one (save old IP and load new), allways an odd instr old IP in mem 0 (LINC), first word of subr (PDP 8), switch IPs (Agnus) HW stack (NC4000), SW stack (PDP 11, 8080, 6502, CISC), link reg (RISC) Instruction Decoding and Execution hardwired, early processors, early microprocessors [Byte] 85-10p101 EGO instruction decoder exa Whirlwind instr decoder 5->32->120 wires [Ross2] p88 exa LINC [Clark] p393 instruction set exa early PDPs, [DEC1] p3-9 PDP 8 instruction set exa 8080/Z80 [Zaks] p65 data paths, [Zaks] p70 instruction execution exa 6809 [mc] 82-1p50 registers, logic units, source selection, target selection, function lines exa PDP 8 operate instruction CLA bit (bit 4) [DEC1] p3-11 decoder logic in dedicated gates, hardwired logic microcoding, CISC exa IBM 360 series [Dewar] p233 exa DEC PDP 11, VAX exa Xerox Alto processor 5.883 MHz 16 bit CPU built from TTLs [Thacker] p274 memory 64kx16 (1k*1, later 4k*1 chips), no protection, segmenting or paging of this 25k..30603*16 used for display (dependant on program running) microcode 2k ROM + 1k RAM, 1979 Alto III 1k ROM + 3k RAM [Thacker] p284 microcode in RAM, not RAM, for experimenting with instr sets, WISC exa instruction sets for BCPL, Mesa, Smalltalk, Interlisp each sys own instr set, compiler, libs, runtime, OS [Lampson] p303 exa Intel 80x86 [Dewar], [Byte] 82-1p94 8088, [Byte] 85-10IIPp93 8088 vs 80286 [Byte] 86-10IIPp123 80286 prot mode, [Byte] 89-12p377 protected mode [Byte] 86-10IIPp89 386 arch, [Byte] 89-10ISEp67 486 HW perspective [Byte] 92-5p37 first Cyrix Cx486SLC, [Byte] 92-5p114 first clock doublers [Byte] 92-12p114 chosing 80x86 CPUs, [Byte] 93-5p92 586/Pentium [Byte] 93-9p195 Pentium, [Byte] 94-1p83 Cyrix M1 challenges Pentium [Byte] 94-6p75 clones, [Byte] 94-11p95 AMD K5, [Byte] 95-4p42 P6 [Byte] 95-9p24 P6 16bit slow, [Byte] 95-9p30 AMD fast 486, Cyrix 5x86 [Byte] 96-1p67 AMD K6 w DSP/vector, [Byte] 96-4p177 PPro 4 CPUs [Byte] 96-11p89 modern x86 PentPro vs Cxrix 6x86 vs AMD K5/6 [Byte] 97-8p20 x86 competition AMD/Centaur/Cyrix, [Byte] 97-9p51 Pentium II [Byte] 97-10p51 IDT C6, [Byte] 97-11p73 Socket 7 vs Intel proprietary stuff [Byte] 97-12p87 AMD/Cyrix/Centaur i86 extensions [ct] 93-11p11 Intel ODP vs ODPR vs DX/2 diff is pinout and cooling [ct] 93-11p48 Cyrix vs AMD vs Intel vs IBM, also Intel pinout variants [ct] 94-5p220 Intel upgrades and pinouts, [ct] 94-12p18 AMD K86, Cyrix M1 [ct] 95-4p120 Intel P6, [ct] 95-4p128 Triton, pinouts, EDO [ct] 95-7p180 do you need a Pentium, [ct] 95-9p20 P6 16 bit code problem [ct] 95-10p108 Cyrix 5x86, [ct] 95-11p138 Pentium competitors [ct] 95-12p22 Nexgen Nx686, Intel P6, Cyrix M1, [ct] 95-12p128 PPro [ct] 96-3p192 486 pin compatible upgrades, [ct] 96-4p180 Intel power positi [ct] 96-4p196 Cyrix/IBM/ST 6x86, [ct] 96-4p205 Pentium clock divisor pins [ct] 96-6p210 AMD K5/5K86, [ct] 97-1p58 AMD K5 up to full speed [ct] 97-2p56 Klamath/PentiumII, [ct] 97-4p264 AMD K6, Cyrix M2 [ct] 97-6p338 AMD K6, [ct] 97-10p155 IDT C6 processor [ct] 97-12p196 x86 processor overview, [ct] 97-14p30 Pentium IISX (Celeron) [ct] 98-1p21 Pentium mask revisions and timing irregularities [ct] 98-3p126 Pentium parallelism stalls, [ct] 98-10p196 x86 selection [ct] 98-14p162 Xeon, [ct] 98-21p26 Celeron 300A and 333 with L2 [ct] 98-22p24 AMDs design for K7 processor, up to GHz [ct] 98-22p250 story of Intel, crush Motorola with preannouncements [ct] 99-5p118 PIII Katmai vs AMD K6-III Sharptooth [ct] 99-10p172 K6-2 366/66 slower as 350/100 [ct] 99-10p176 socket 7 upgrades, [ct] 99-16p92 AMD Athlon [ct] 99-25p26 Transmeta Crusoe, [ct] 2000-3p32 Crusoe [ct] 2000-5p16 Willamette (P4?) 20 step pipel, [ct] 2000-14p88 AMD vs Intel [ct] 2000-18p22 AMDs hammer, [ct] 2000-14p134 Pentium 4 [ct] 2001-5p240 Pentium++ microcode patching, [ct] 2002-13p104 Opteron 64b [ct] 2002-23p120 Pentium 4 hyperthreading, and pipelining diagram [ct] 2003-7p122 "Banias" Pentium M, [ct] 2003-13p90 25 years 80x86 [ctk] 89-10p341 Befehle, [ctk] 93-9p235 80x86 family, clones [PCW] 93-5p312 586/Pentium, [PCW] 93-12p442 80x86 and RISC families [PCW] 96-5p156 Cyrix vs Pentium exa Motorola 680x0 [Dewar], [Byte] 83-5p342, [Byte] 91-8p121 68040, [Byte] 95-5p173 Coldfire [ct] 90-3p336 68040 sequences of microcodes needed for instruction exec in a ROM in the processor with a Harward architecture processor to exec these wired into hardware external program in large mem (macrocode) made of routine/parameter codes actually 2 proc (1st simple in HW, 2nd complex in SW) [Dewar] p234 360/40 680x0 addressing modes actually executed by a third nanocode interpreter [Byte] 83-5p343 68000 chip photo nanocode ROM, [ct] 90-3p338 68030 same anec IBM XT/370 proc was a 68000 with replaced microcode [Byte] 85-9p214 microcode processor width is not neccessary same as macrocode processor exa 68k macro allways 32, 68000/10 16 bit, 68020/30 32 bit, 68040 CRISC also memory widths intern vs extern [Byte] 91-9p136 once microcode is there gains from as many special instr as poss, CISC lots of special macrocodes for assembler programmer, is interpr progr lang lots of short forms to save code size and exec time, also for back compat but the CISC instructions were often not utilised by HLL compilers [Byte] 94-2p77 todays compilers, optimising [ct] 2003-7p226 optimiser gcc 2.94 vs gcc 3.2.2 vs icc 7.0 because they can't figure out when to use them, this is too complicated CISC is a case of second system effect exa IBM 1130->360, DEC PDP8->PDP11->VAX, Intel/Motorola 8bit -> 16/32bit development of outdated (assembler) technology at time compilers in use anec CISC of VAX offended ken, VAX Unix not from him [Salus] p154 pipelining, RISC [Byte] 92-1p305 pipelines in R4000, RS/6000, 486 [Byte] 92-2p123 built for speed, [Byte] 94-1p91 RISC grows up exa MIPS [Dewar], [Byte] 91-12p271 R4000, [Byte] 94-9p47 R8000 [Byte] 94-11p123 T5, [Byte] 96-5p161 R5000, [Byte] 98-1p49 MIPS R12000 [ct] 91-9p228 R3000/R4000, [PCW] 94-9p226 R8000 exa Sparc [Dewar], [Byte] 91-4p295, [Byte] 94-11p105 exa PPC [Dewar], [Byte] 92-2p96 Power PC, [Byte] 93-8p56 the hype, [Byte] 93-79 PPC 601, [Byte] 94-6p265 PPC 604 [Byte] 94-11p113 PPC 620, [Byte] 96-11p101 newer PPCs, [Byte] 97-4p59 PPC G3, [Byte] 98-4p51 Power3 [iX] 93-12p46 POWER2 exa HP PA [Byte] 94-8p185 PA 7200, [Byte] 95-7p175 PA 8000 exa ARM [Byte] 86-1p387, [Byte] 91-12p84IS49 ARM600 [Byte] 92-11p293 ARM610, [Byte] 96-1p153 StrongARM [ct] 2002-2p70 ARM story, [ct] 2002-2p198 ARM architecture exa AT&T 92010 Hobbit/CRISC [Byte] 93-2p169, [Byte] 94-1p105 exa Alpha [Byte] 92-8p141, [Byte] 94-10p197 21164, [Byte] 95-6p239 overview [Byte] 97-5p59 21164PC, [ct] 92-6p52, [ct] 98-15p192 Alpha beats Merced exa Hitachi SH-3 [Byte] 97-7p45 exa Intel i960RP [Byte] 96-10p67 exa Merced/Itanium [Byte] 97-12p80 IA-64 architecture [ct] 99-6p114 Merced NaT bit, [ct] 99-12p28 IA64 official [ct] 2001-13p148 IA-64 architecture, [ct] 2002-13p104 itanium 2 exa MMIX theoretical RISC [ct] 2002-5p184 MMIX and Knuth interview clock speed capacity charge/discharge limits speed, together with signal running time even at light speed you don't get far in a nanosecond capacity charge/discharge also generates most heat overclocking heats up chips, +10 degrees halves time to death anec faking of processor clock rates, sell cheap chips as better ones [ct] 95-3p30 faked processor clock rates, solve them by better CDU-ID [ct] 95-4p24 not only with Intel, also with AMD chips [ct] 95-7p28 cheaper AMD chips misslabeled as fake Intel parts [ct] 95-9p22 Intel measure to reduce faking, [ct] 95-12p20 Intel foiled [ct] 96-2p22 Intel fakes own fake protection [ct] 97-1p18 processor faking, still not safe system from Intel [ct] 97-2p17 Pentium fakes, Intel bureaucratic response "trust paper" [ct] 98-1p24 memory chip markings faking [ct] 98-7p18 Pentium II higher clock remarkings [ct] 99-10p210 deliberate overclocking by users to increase speed split job into multiple steps, eaxh shorter that full pipelining interleaves fetch, decode, get ops, operate, write results of multiple following instructions to speed up flow but maximal sensible pipeline depth is limited because stall of time loss standard model 4, most 5, P6 7, R4000 8 anec Ernst newest mainframes are back down from 5 to 4 stages variable instr size and memory accesses of CISC hinder effective pipelinig uniform instruction size, usually 1 word of 32 bits, 1 cycle exec, RISC and simple addr modes (reg indir + offset) with a few variations because of variable memory accesses pre-CISC processors are not RISC LINC, PDP 8 [DEC1] p3-18 defered addr, indirect bit extra memory read PDP 11, 8080 and 6502 const in additional program words, PC indir autoinc RISC reduced instr-complexity set, not reduced instr-count set [Dewar] p387 MISC minimal ins set [Byte] 90-11p19 Teraplex, [Byte] 91-3p90IS109 PgC7600 full external microcode, no multiple instruction formats for non avoidable complex instrutions use a state machine, exa load/store instructions or trap and emulate, exa paged VM address translation and page loading or call subroutines, exa multiplication, division, floating point arith instr for job differ, for comparing proc speeds don't rely on MIPS numbers they are meaningless [Raymond] "MIPS (1)", [Byte] 88-6p225 [Barry] p77 Marketing Instructions for Pushy Salespeople no microcode, macrocode is simply bit patterns for control RISC are therefore sometimes called external microcode processors but this is not quite true as microcode interpreters are non von Neumann in microcode proc no memory collision of instr fetch and data access but RISC with internal Harward architecture also have no collisions data loads must execute before using data, causes wait, breaks pipelines reduce amount of loads, leads to many registers usually 32 registers, requires 5 bits to select every operand, target to increase registers without incr selection bits in opcodes reg windows but register windows as in SPARC 8 at a time, have granularity problem better register stack as in AMD 29000, AT&T CRISC, more decode logic also large register set (SPARC nearly 200) slows down process switching anec Ernst mainframe accellerat in last 10 years mainly in switching independant arithmetic operations between load triggered and data used all arithmetic instr (most instr in prog) work reg to reg no memory access in arith instructions, split load/store and arith instr jmp, branch and jsr must also load addr before executing further instr this breaks pipelines, leads to waiting, slows down processing early predictability of branches, in early pipeline stage branch delay slot, exa MIPS [Dewar], branch target cache, exa Pentium no special instr as these are not used by compilers anec first RISC Crays CDC 6600 for fast Fortran [Dewar], [Byte] 90-10p38 RISC has superior performance for price (30%..100% depending on whose claim) vs CISC has large SW availability for 80x86 PCs and 370 mainframes to brige the SW gap use emulators for the old processors instr set [Byte] 89-12p361 DOS at RISC, binary porting, binary compiler [Byte] 94-4p109 Windows on RISC, CISC is better, [Byte] 95-11p119 exa PDP11 on VAX11 systems, VAX on Alpha/VMS exa Z80 and CP/M on 8088/286 Z80MU [Byte] 86-10p203 exa 8088 on Mac/Unix SoftPC, and Atari ST exa SoftWindows PC emulator on NeXT 68040 or SGI R4000 anec NeXT SoftPC incompatibility, HP 100LX app100 comms SW crashed also crashed HP, RAM disk lossed, that is not purpose of doing backup I bought for Fr.200.- a disused 286 PC for backing up the HP exa 68k on PowerMac [Byte] 94-4p131, [Byte] 95-8p149 MacOS on PowerMac running partially on emulated processor exa Virtual PC Pentium emulation on PPC [Byte] 97-11p51 exa x86 on Alpha [Byte] 96-2p195 exa [ct] 99-7p60 VMware virtual 386 PC under Linux or NT programs assume the semantics of an instr set, instruction architecture as long the sequence of actions expected by programmer happens all OK software can be written that simulates an other computers processor emulators are essentially interpreters for machine code originally emulators were alternative microcode that executed an older processors machine code, exa 1401 on 360, PDP 11 on VAX modern emulators dynamically compile at runtime also compile of one code into other [Byte] 89-11p361 DOS on RISC Apples change from 680x0 to PPC is greatest architecture swap in history is possible because Apple controls OS, same also DECs VAX to Alpha also both emulator tradition, Apple II for Macintosh, PDP 11 for VAX but will this work in 80x86 market, where users want binary compatibility you can replace IO dev when hidden behind drivers, but not instr set perhaps the PPC 615 with hardware support for emulators has a chance RISC was once easy to build in student projects (Berkeley, Stanford) but today in performance race just as difficult to make as CRISC but splintered market, MIPS/SPARC/PA/PowerPC/Alpha, high developm costs RISC has become a disadvantage for the traditional WS makers only wide spread RISC is the PowerPC used in the PowerMacintoshes 80x86 is nearly as fast as RISC because Intel can waste transistors Intel has fabrication technology with the highest transistor densities a 586 or even a 686 with Linux is nearly as fast as a RISC WS attempt by Sun to establish SPARC as a second clonable standard was only measured success, because very much more expensive than 80x86 but not really much faster, just not worth the extra price also who needs all the power of todays processors, only FE-like jobs anec on Mathias Alpha+Linux the X desktop there before monitor synced I doubt that RISC will get a big market share in this century, if ever transport triggered architectures [Byte] 95-2p151 only move instruction, no instr sel bits, just source and destination address operation happen as side effect of writing/reading special addresses analog to memory mapped IO, this is memory mapped instructions floating point units (FPUs) [Byte] 95-1p223 FPU precision scientific/technical progr require large number range, often little precision use floating point numbers, consist of mantissa and exponent floating point data formats IEEE 32/40/64/80 bit, but many others nearly all other programs require no FP operations at all [ct] 97-9p256 FPU utilisation operations on floating point numbers were first implemented as subroutines but those were slow and these computations spend lots of time calculating speeding up floating point arithmetic speeds up entire program linearly lead to special hardware support for FP, exa IBM 704 with FPU [Backus] p28 difference scientific vs business comput FP vs BCD support, exa 704 vs 705 later with CISC common instruction set but scientific vs business models the FP instructions are implemented in hardware vs microcode with microprococessors FP coprocessors, [Dewar] 80x87, Weitek [Byte] 90-1p337 80x87, 68881/2, Weitek 3167, [Byte] 92-2p151 support local [ctk] 91-1p271 80x87 are instruction set extensions for FP with special HW to exec FP instr fast communic to separate chip, command regs, sep lines, command from addr bus 80x86 and 680x0 despite being CISC have no internal FP instr microcode FP instructions must be emulated by external SW is slower than subroutines, but not by much, no 2 .EXE files required emulation called by FP not present emulator trap anec the 8086/88 has no FP instruction trap for when FPU missing control systems either have an FPU or don't use FPU instructions nor does it have an illegal instruction trap control systems shouldn't contain illegal instr, what after trap anec for using 8088 on PCs MS standard for FPU emulation [Gilluve] p230 uses SMC to reach full speed when a FPU is present since 80486DX and 68040 both series have built in HW FPUs but FP is not used on most users jobs, cheaper processor without FPU anec 80486SX Intel marketing bungle with disabled FPU [ct] 91-7p55 also lower clock to reuse duds made 486DX look more than 486SX also problem with SX was confusion with 487, ODP, DX/2, SX/2 vs 68C040 introduced without any problems but some Macintosh SW failled, assumed if 68040 found FPU present vs Transputer T414 wo and T800 with FPU are pin compatible, swapable floating point problems [Plauger3] p17, [Plauger3] p33, [Plauger3] p137 users are not so cautious as with integers (overflow) because they expect this complex machinery to be more reliable it is a bit like integer=go kart vs float=limousine but FP is only approximately right because of rounding errors code defensive, <0.001 instead of =0, add/sub small value, mul 0.999 anec points don't float but a wrong number can sink a calculation Parallel Processors [Franklin2] schnelle Rechner, [Byte] 91-6p199 multiprocessing, types [Byte] 92-8p112 all systems go, types, [Byte] 94-2p97 compilers parallel CPUs [Byte] 95-2p65 the grand challenges, [Byte] 96-1p45 the world's fastest comp a further way to accelerate computation is to have multiple calc at same time either one processor working on mult pieces of data, a parallel processor these may be one instr operating on mult data or mult instr at a time these designs are shown in this chapter or multiple processors each with their own code, a multi processor system these may be mult proc on one common memory or each with their own memory these designs are shown in the compute server chapter separate FP pipeline FP instr are often executed in a separate pipeline from integer instr exa T800, 80486+, 68040+ use 1 integer instr cycle to trigger FP instr, then more integ while FP allows address calc (integer) for array load/store while FP proceeding vector processors exa Cray 1 vector supercomputers [ct] 88-6p70 exa Intel 80860 [Dewar] p341, [Byte] 89-12p333, [Byte] 91-1p347 486 and 860 have roughly equvalent FPUs, both ca 3 MFLOPS scalar at 33MHz but the 860 jumps up to 66 MFLOPS for vector code with FP mul and add anec 860 used as vector FPU on Hauppage 4860 PC motherboard (486+860) for this type of use it has a 486 compatible MMU data format [Dewar] p343 anec this proc is similar fast to a Cray-1, has be called "Cray on a chip" heavy FP work (matrix operations) requires often repeated simple loops build entire loop into hardware, one processing unit for each instruction results in essentially multiple specialised processors, one for each step build the data transfer lines to withstand the large memory to proc traffic execute instructions out of microcode or an instr cache, no data cache multiple parallel FP units give parallel vector processors exa Cray X-MP vector supercomputers [ct] 88-6p70 still one program, the same instructions are executed in all processors are single instruction multiple data (SIMD) parallelism anec "a Cray 3 executes infinite loop in 2 seconds" [Raymond] "infinite loop" massive parallel processors (MPP) exa Connection Machine, 8 cubes a 32 boards a 4x4 chips a 16 1 bit proc exa Parallaxis concept and MasPar MPP SIMD computer [ct] 91-6p34 exa AMD CAM content addressable memory [Byte] 91-3p147 exa PACT dataflow [ct] 2001-15p170 the single processors are very simple but in a large number (often thousands) each single processor is purely scalar, often no FP, some even 1 bit wide all processors execute the same instruction at the same time require a system for selecting which processors are working or sleeping only this allows different data elements to vary in processing each processor has its own data bus and memory for exchanging data use a system of communication links very long instruction word (VLIW) processors [Byte] VLIW heir to RISC? exa Trace Multiflow [Byte] 96-4p61, [ct] 90-3p232 use multiple processing elements, like vector processors but all proc element are general purpose, offer more flexible operation mix are multiple instruction multiple data (MIMD) parallelism but compile time fixed instr grouping, is static, not efficient this requires trace sheduling, complex code analysis makes compilers very complicated limits because on average every 6th instr in a program is a branch VLIW require a new EXE file for every processor generation this is unlikely to be usable in the commercial PC software world Intel and HP developing VLIW for P7 [Byte] 94-11p287 VLIW Questio, [Byte] 95-4p54, [Byte] 96-4p61, [Uo] 96-2p16 is unrealistic in commercial SW world, see 80x86 cloners perhaps generation specific VLIW instr set, direct access underlying RISC with 80x86 or HP PA instr set interpreter for compatibility later they claimed that VLIW was never intended [Byte] 95-7p175 superscalar processors [Dowd], [Dewar] RIOS [Byte] 89-12p333, [Byte] 94-1p75 microproc trends, multi exec unit micros [Byte] 95-11p179 fast processors compared [ct] 2000-12p220 VLIW/PIC vs ILP/SMT, [PCW] 94-4p464 exa IBM RIOS/POWER, Motorola 88000, Intel Pent, NexGen 586, Cyrix M1, AMD K5 out of order execution, rename registers, scoreboard with conditional branches speculative execution, rollback if wrong multiple general purpose execution units with any instruction mix vs specialised execution units, typic instr mix, exa first RIOS, MIPS R5000 superscalar is VLIW with run time distribution of instructions, dynamic VLIW because of this it only requires traditional instructions code exa 80860 vector (semi-VLIW) vs RIOS superscalar [Dewar] p382 and p402 programming the 860 is difficult, RIOS uses normal tools, same speed because of traditional code superscalar, not VLIW, is true heir to RISC with caches and prediction to avoid wrong speculative execution [ct] 05-8p230 fast processor techniques it can be even faster than static compiled VLIW, because uses experience multiple normal processors, symmetric multiprocessing (SMP) fairly simple, problems are bus sharing, interrupt distribution [ct] 2002-19p188 SMP APIC in single processor systems System Consoles and Front Pannels exa Whirlwind, PDP 8 [DEC1] p3-1 front panel picture, Altair binary switches for program, data and control signal entry [DEC1] p3-2 lamps or LEDs for program, data and status display user sits in front of machine and works interactively first enter program code and data with the switches then set IP reg with switches and runs CPU wait until program stops on an HALT instruction anec on PDP 11 with RSX to prevent continue switch after fatal system error after HALT BR with comment "Oh no you don't..." [DECUServe] 9?-?pDS-18 then read out results with LEDs for debugging runs use single step switch instead of run on mainframes and minis processor address registers are used for memory access single step controlled by switch on front, halt instr for program driven stop on microprocessors no external access to processor registers processor is put into halted state with bus pins in tri state mode and external address generators are used also no hardware controlled single step record running system with a logic analyser attached to processor exa Intel for 4004 [Byte] Faggin, Biomation and Tektronix at Tech or special logic analyser board in system, exa Periscope for IBM PC --- Programming Assembly Language and Assemblers in the beginning programs were directly designed in binary or octal and then entered in binary via the computers front pannel or typed onto tape/card/file as octal ASCII after a while symbolic codes for instructions were invented mnemonics for instructions and registers are better readable than octal codes list registers in instr dest, src1, src2... vs src1, src2..., dest symbolic names as labels for jump, jsr and variable addresses use of sensible names makes code more readable, use systematic naming no stale addresses after shifting contents of memory to new address symbolic constants for field sizes make expansion of fields easier tests for exceeding limits stay in sync with size changes .DB, .DW, .DS to reserve space for data in memory and initialise it mnemonics were first converted by hand to binary or octal before entering this is a repetitive, boring and error prone job (I've done it) it is also formalisable, which lead to programs to automate it programs were now typed onto tape as ASCII mnemonics converted by a program to binary and punched onto a second tape programs in mnemonics were then called assembly language programs the tape with the assembly program is known as source tape the conversion program is called an assembler assemblers scan source, generate base instr bit patterns, fill in mode, address patterns symbol table of addresses and references to them two pass assembler vs one pass with backpatching [Aho], exa Columbia macro assemblers used for often repeated sequences of instructions difference of macros (expanded at assemble time) to subroutines assembly-time generation of instr sequences, names for symbols local to macro optimising assemblers exa Atari ST Turbo C [Franklin3] minitos.s on CISC processors often multiple instr do the same work at diff speeds optimising assembler automatically replaces slower with faster ones structured assemblers converts if, while structures into recommended instructions also generates symbol names for implied jump targets knowing assembler is still relevant today, every programmer should know it not for programming in it, but for understanding what the machine is doing only know HLLs vs know Assembler is like stone age magician vs engineer anec Ammann people don't understand what a pointer really does (LD indirect) Comments and Code Layout code is read more often by the programmer(s) and other people than the computer design programs for human to read, execution by computer only as side effect [Brooks], [Raymond] "program (3)" is failure if others can't understand it programs are a kind of literature for others to read [Knuth], [Levy] p118 software can last long, don't expect original writer to be around to ask exa Bremi CDC Waerme program from 1960s was used until 1992 to help reading of the program use comments explain why something is done, not what happens (the code says that already) comments are not a replacement for learning language syntax anticipate questions of reader, explain the code (why is this code this way?) vs "usefull" program comments, are more practical jokes anec [Levy] 1750 RIP JSB anec "My mother taught me never to write code like this" in RSX source [DECUServe] 9?-?pDS-18 anec /* you are not expected to understand this */ in Unix 6th ed source [DECUServe] 9?-?pDS-18, [Salus] front page [Raymond] "You are not expected to understand this" anec /* aren't we clever? */ in 4.2BSD source [DECUServe] 9?-?pDS-18 anec the IOCCC was triggered by the /bin/sh source code use sensible symbol names to explain what variables and constants are for comments use time without improving code, better use descriptive names variables are data things, use substantives to name them procedures are actions, use verbs as their names [Knuth] p241 build all code related documentation into the source code this avoids losing it or forgeting to look at warnings in it "put it together and keep it together" [Brodie] separate docu is unliked because often redundant information, sync problems specially where you tripped over because obvious code produced a bug when you have corrected code put in a comment why code is that way this knowledge is in your brain, why forget it, write it down literate programming narrative comments with inserted code [Knuth] p125 numerical measures for comments (so many percent of code) are stupid "they just need to be there", leads to comment babble, exa ChS PlasmaDat not amount of comments counts but their usefullness understandability counts, clear logic, sensible naming to help reading of the program use code arangement group code that does one thing at one place, same also collect subroutines splitting code into subroutines scatters it in the source code this increases scrolling, only split if for reuse or modulisation but not just to reduce the length of a subroutine literate programming code layout in discovery order row in which the programmer thought it up routines that fit together are arranged together especially good for scattering initialision to where structures are used filter out and arrange code for compiler with WEB tangle tool format the whole thing for easy reading with WEB weave tool readability information hiding, unload the programmers brain direct tell what you want, not let reader infere from how you do it more code on display allows seeing more of it at the same time don't waste your limited visible screen space as this reduces the amount of code on page, reduces overview it also increases the amount of scrolling, breaks thought process allows use of programmers visual brain to discover relationships of code anec Brad Cox (invent of Objective-C) talk "never mind man behind curtain" classic computer science ignores effects of programmers abilities/limits no begin/end or {/} on separate lines, use only indentation, like Occam also indentation only 2 columns, gives less loss of line length gives less broken lines, which use up more screen lines no boxed comments as they use a lot of space same avoid too many empty lines to divide code anec Glance remark about Kompal source being easy readable despite traditional rules of layout being broken anec C cpp uses # for marking preprocessor statements not used for comment lines like in all other tools in Unix this makes cpp useless for preprocessing other tools files exa X resource files must use ! for comment lines, so that cpp works exa this also forces C++ to use // for comment lines Modular Programming subroutines are not just for saving code size on repeated operations they add to the spectrum of instructions the programmer can use with every subroutine level code expressiveness grows, abstraction level all programming is defining routines, is instruction set expansion in Lisp, Forth and Smalltalk this is explicit in language philosophy subroutine collections allow reuse of code, save time, less bugs really productive guys using reusability [Byte] 90-9p358 groups of subroutines can hide details of accessing data structures information hiding, reduce side effects, leads to modular programming but too many modules can lead to module spaghetti design modules to have core set of routines and simplif aux access routines also use this for backward compatibility, to support old module interfaces use clean parameters, no hidden flags [Raymond] "hidden flag" exa bad Unix login shell flagged by argv[0] string beginning with "-" char exa bad PlasmaDat, output no 99 in Kompal outputs struct for nonprinting prevents bugs by accidental use of these values, eventually by someone else also hidden command options, exa HP 41C GTO.. but C pointers/strings usage of NULL/0 acceptable because everyone knows it same don't missuse language definition or rely on implementation specifics C programming model [Raymond] "vaxocentrism", [Dewar] unaligned pointers bumming was first used to save size, but later for conciseness, reliability bumming is not bad taste [Knuth] p10, but doing so prematurely is bad on the other side crisping up code simpifies programming, less on mind a lot of bumming is code size reduction, complexity reduction [Byte] 93-2p286 software gluttony, [Byte] 93-4p98 fighting fatware with 2 adequate solutions the simpler is the better [Brodie] p60 cyclical repetition of fatware, consequences of it [Plauger2] p153 also return of the colossal code [Byte] 90-5p380, entire systems are big will manufacturers never learn the value of simplicity despite power HW compact low require progr advantages [Byte] 96-5p10 Web PCs will have low power, real PCs of secretaries often low power but also simplicity vs multi faceted comfort [JamesG] p133 [Byte] 91-7p352 the X attitude, same also PS, both are resource pigs, bloat "every time Andy Grove increases processor power, Bill Gates uses it up" also with expanding hardware power economics make sloppy code cheaper Xerox Alto design for HW expected in 5 years vs OS/2 1.x for 286 trouble anec term bumming came from McCarthy from ski bums [Levy] p26 from same exhilarating feeling in bumming and deep snow skiing as I do both, bumming and deep snow skiing, I know both are alike programming success has also been compared to an orgasm [Raymond] "progasm" Standard Algorithms [Sedgewick], [Libes2], [Byte] 88-5p297 n-grams [Byte] 89-1p376, 89-2p301 and 89-3p287 trees'n'keys B-tree, ISAM [Byte] 91-4p315 combsort, [Byte] 92-11p281 agrep approximate pattern matching [ct] 90-1p180 find string in text [ct] 92-4p264 bsort, good when quicksort has its worst case [ct] 96-12p326 tabu search, [ct] 97-8p292 text search [ctk] 88-11p273 sort, [ctk] 92-3p263 sort [PCW] 94-4p568 random gen some types of subroutines keep on reappearing in different programs these are for common subtasks, make predebugged libraries of these look out for common subunits, make them into standardised components like electron circuit modules, standard algorithms, add them up to whole computer science has resulted in lots of experience in optimal algorithms types of algorithms covered by comp science research are sorting, searching, string handling, geometry, graphics, maths well documented in literature, not repeated here, as I can add nothing lots of experience, don't duplicate it, use existing sort [Plauger1] p71 teaching loads of students how to write sorters is a waste of time instead I will show a few techniques that are learned by experience or unfortunately often not learned at all Libraries and Linkers small programs fit into one source code the assembler can directly produce complete executable code larger programs are better split over multiple sources first multiple files and include statement later seperate assembly of the multiple files originally this was for assembling speed improvement because most alterations only change a few related routines but also to circumvent machine limitations on assembleable program size and to have multiple programmers writing different routines of one program it also allows collection and reuse of already written and tested routines this leads to subroutine libraries [Levy] tapes in drawer multiple partial sources give multiple incomplete binaries written in special format, object files [ctk] 92-4p281 MS-DOS Intel OBJs with a list of exported and imported symbols mem layout blocks of bytes (segments) with symbol addrs (segment+offset) some languages only export specially marked symbols (.PUBLIC) this reduces object size and linker memory requirements for error check some lang require special declare of imp symbols (.EXTERN) libraries are simply collections of multiple objects files in one file to reduce tape/card swapping or file clutter on disk these must be linked together to produce a complete executable binary a linker adds any object which contains momentarily undefined external symbols in it's public symbol table to program and adds its undefined externals to the existing list if there are still external symbols left after all objects this is a error seperate compilation leads to lots of commands to do so need to be triggered int he right sequence, else old versions get linked compiling driver scripts, or even better Makefiles which test for recompile separate sources produce problems with conficting naming of global symbols systematic naming of symbols as source+address exa sssaaa or ssaaaa (Assembler, Fortran), ssssss_aaaaaa (Algol, C) exa ssssss-aaaaaa (Lisp), SsssssAaaaaa (Smalltalk) or list only explicitely exported names in object files, exa Modula anec Wirth in Modula functions upper case, vars lower case variable naming generally undervalued by comp sci [Byte] 91-8p131 hungarian but hungarian critisized for badly readable, verbose, too low level BSS (Binary Symbolic Subroutine) segment name from Fortran I [Backus] p41 High Level Languages and Compilers exa Fortran, Cobol, Algol, Pascal, C, Modula, Ada assemblers started quest for "automatic programming" [Backus] p25, [Baron] p205 users want to specify what result they want, not find out how computers work let the computer figure out how to do it this lead to increasingly higher programming languages inventors claimed it "eliminates" programming [PCW] 93-1p409 but it only eliminates assembly language programming one must still specify what the computer must do, that is programming first also only a design help, converted by hand to assembler before entering then also automated tools (compilers) were written originally these generated assembler text, later directly binary objects users want to be able to take programs to another computer and run then this requires a machine independant programming language machine independent standardised HLLs only appeared after user pressure one of the gratest advantages of HLLs over 4GLs is their language standards abstraction of operations as formula-like statements program flow control via ifs and gotos subroutine and variable names short (Fortran 6 char) vs long (Cobol) variables first were all global (Cobol), later static local (Fortran) anec all variables global is not so bad as it is often made out exa dBase III used for CCW members database, requires naming conventions subroutine call/return without parameters just global variables or registers, as in Assembler (Cobol) or with formal/actual parameters that then may be pass by reference (Fortran), value (Pascal), or name (algol) by reference more flexible, is an lvalue, [Pest] fortran, [Brodie] pointer vs by value safer, original not modifiable but discipline is better than force, does not prevent use when right in Algol for passing parameters by name use thunks [Aho] p428, [Byte] 88-2p223 by name vs by value/reference thunks are code that guarantes called routine [Abelson] p164 footnote 36 that callee will evaluate parameters if the called wants to use them this results in lazy evaluation, good for large data sets, no men use history of term thunk [Abelson] p317, [Raymond] "thunk" anec syntax of Cobol was supposed to be manager readable for checks this didn't work, problem in reading of programs is not the syntax but abstraction, complexity (side effects, lack of predictability) it just made programs more difficult for the programmers to write [Raymond] "candygrammar", [Baron] p179 the comp industry keeps on repeating this error up to today, exa Hypercard language elements [Baron], [Kernighan], [Byte] 88-8p205 C, [Byte] 90-9p276 Kurtz on micro Basic [Byte] 91-9p147 Fortran, 91-10129 Cobol, 91-11p165 Lisp, 91-12p141 APL, 92-1p149 Snobol and 92-3p155 Basic [ct] 89-1p50 lang and 89-1p58 lang elements, [ct] 89-4p106 lang [ctk] 87-4p163 Datentypen, [iX] 93-11p148 Fortran 90, [iX] 96-2p140 Fortra 95 early HLLs were specialised later more universal, special purpose vs univers universal requires more work (already built in special) but can do more Fortran weight on calculations Cobol weight on file operations and data formating Algol claimed to be universal by CS professors, but bad for data processing it was not intended for general use, intended for numerics [Perlis] p85 for numeric anal, scient comput [Naur] p100, not universal [Naur] p115 CS profs generalised maths notation for computers, classic "reins for v" is case of valuing beauty of maths over usability [BrownP] test of a languages power is whether its compiler can be written in it but also, has it compiled more than its own compiler [Raymond] "MFTL" syntax for assignment vs equals test, PL/I A = B = C [Radin] p563 vs NPL SET A = B = C vs Algol A := B = C vs C A = B == C in C A = B == C is a serious missfeature [Raymond] "gotcha" == is often forgotten by programmers, no error message, but bug anec Algol conference dot vs comma [Perlis] p80, [Naur] p94 lead to publication/reference/hardware lang mess semicolon statement divider (Pascal, awk) vs statement end (C, perl) [Knuth] p129 case structure is a computed goto, multiple decision [Knuth] p28 error handling special return values and tests vs on error do routine exa Fortran in read/write command got label for error handler C strings bad, use fixed length 8 bit integer arrays [Garfinkel2] p190 but strings not vectors, as Brooks thought, Radin against [Radin] p568 PL/I standard C char copying loop inefficient on wide processors, use str(n)cpy wide copy when allign, else offset copy, run in/out code for wrong offset which to use dependant on data amount/offset, easy, complex, str(n)cpy wastes programmer time to find out, or more likely proc time because not using 0 as string terminator prevents better alg, no improv poss, incompat also problems with strings containing 0 as character, ASCII dependant strings must be allocated as large stack arrays or explicitly malloc/free programmer lasiness leads usually to large arrays and no overwrite tests fixed length affects programming style [Raymond] "C Programmer's Disease" because it is hard to avoid without lots of work, ususlly not done language restricts possibili, determines thinking range [Garfinkel2] p191 same computer type has strong effect on thinking [Byte] 92-4p368 HLLs should hide memory managment from programmer, automatic allocation with automatic garbage collection to prevent need for tracking note that automatic garbage collection is cheaper then explicit but in the many C programs this is not the case, Pascal/Modula neither anec see what the Unix kernal (written in C) does to buffer typed chars uses an entire own string package, based on records and continuations anec C strings are actually slower than Basic strings (length+char) given relative time on move vs rest C can be slower than Basic interp anec C string array[index] = index[array] only for sizeof(arraytype) == 1 from [Libes2] taken over without noticing in [Garfinkel2] p192 C is not machine independ Assembler as claimed, is PDP 11 Assembler shorthand from typeless BCPL and B, ext with types for PDP 11 bytes [Byte] 88-8p205 K&R C float/double always processed double because PDP 11 [Libes2] p127 fits good with VAX because it was an upgraded PDP 11, similar architecture also fitting with 16/32 bit microproc because they have VAX-like design anec Albin calls these microprocessors pseudoVAXen C only provides the programmed with machine data types (integer/float) restrictions on structs and unions, no real strings at all use only as asm replacement for kernal code, for user progr use better C prevents evol of HW check support [Garfinkel2] p191, [Byte] RISCs unsafe C even has lower semantic level than 80386 Assembler [Dewar] anec some claim that C is the real reason for RISC processors success but RISC is no success in PCs because of compiled C sold in binary form anec TSP "C is a shit language, but best available" different languages for diff programmers cognitive styles [Byte] 85-5p458 Hopper languages success comes from users accepting it [Perlis] p165 Backus Algol thrown out by SHARE, prefered Fortran [Perlis] p166, [Baron] many languages hinder the programmer to fullfill their designers ideas get in the programmers way, is "like pushing on a rope" the main reason C became the standard is its lack of this compilers [Aho], [BrownP], [Byte] 85-8p139 parsers, [Byte] 94-2p77 [PCW] 88-9p154 code compilation lexical analysis, parsing, semantics, code generation general analyse source gives a parse/syntax tree, sythesize code from that HLLs are slower than assembler HLLs save computer time despite being slower, less debug runs [Kurtz] p516 optimising [Dewar], [Dowd], [Byte] 87-10p165, [ct] 90-12p272 C optimisations difficult to do, fails often, see [Raymond] "pessimizing compiler" limits on optimizing [Knuth] p55, do it at source level orthogonal processor architectures make this easier Fortran is today fairly fast due to much optimising experience exa Fortran I, first compiler, strength reduction, invariant [Backus] p34 optimising takes time, fast code vs fast compiling [Backus] p42 C is designed for compilation to fairly fast code [ct] 90-6p334 hohes C [ct] 91-1p180, 91-2p264 and 91-3p302 C Optimierung an der Quelle HLLs have difficulties with programs for directly accessing IO hardware C (systems language) has no IO syntax because of machine dependancies devices needed for standard IO are eventually non existant on system anec ANSI commitee "can't run this on a toaster or elevator controller" selecting one representation for lang would be inefficient, not portable instead libraries, mostly compatible [ctk] 92-1p221 C Portabilitaet anec the same reason is also given for no IO in Algol [Naur] p163 for writing libs C uses address constants casted to pointers for access newbie from Basic micro "how do I peek and poke in C" [Raymond] "peek" only memory addresses poss, no IO addresses, because C comes from PDP 11 such code is completely non portable, use #ifdef, #else error const to pointer conversion may be problematic on some machines anec graph.c OS smash because of QuickC A000 vs 000A docu bug altern include small Assembler routines as data [Libes2] p19 first IOCCC also system dependant libraries, to hide these GNU Autoconf [Byte] 97-11p45 Structured Programming exa Algol, Pascal, C, Modula, Ada when progs became big they quickly became non understandable/maintainable code full of gotos programmers intentions invisible, is difficult to read anec goto has no come from [Raymond] "COME FROM" too many gotos lead to program spaghetti specially if they are applied hazzardly, without any order attempts to solve this problem through better methology lead to struct prog new programming languages with structured constructs appeared later old HLLs (Fortran, Cobol) were expanded with structures anec what we will be using in 2000 we will call Fortran [Baron] p212 variables typed vars, user definable types, records, variant records visibility/accessability in block they are defined in (local) vs global semi-global variables hidden with modules/packages, selective exporting but problems with tool (compiler) intervening in naming system systematic naming by hand often less trouble, at least if long names lifetime while executing code they are defined in (dynamic) vs static dynamic memory, alloc on heap, exa Pascal new/free, C malloc/free requires a pointer type to point to mem, ptrs in alloced mem gives lists [Byte] 89-8p279 heap mem man code, statements block oriented procedures, functions, ifs, while loops source code layout with block structured indentation block delimiters reverse word (Algol), begin end (Pascal) end word (Modula), { } (C), indentation (Occam) anec Occam problems with indentation when editor replaces spaces w tabs C switch fall through as default is losing [Raymond] "fall through" is source for many a bad bug, is illogical to a structured thinking mind actually switch labels are clearly goto derived, not block derived for clear language definition BNF or syntax diagrams use BNF or similar notation to drive compiler for language exa compiler generation tools lex/yacc, flex/bison [Aho], [Levine] anec grammar based compilers have bad error responses [BrownP], [Garfinkel2] anec BNF originally stood for Backus Normal Form, not Backus Naur Form later changed [Aho], [Naur] p162 anec what is used today is actually Cobol notation [Sammet] p233 and p255 bondage and discipline languages [Raymond] "bondage-and-discipline language" exa Algol, Pascal, Modula, Ada these appeared together with structured programming these languages enforce the "right programming" ideas of their authors but the forsight of those authors is limited often these languages are not sufficient for general purpose use b&d lang are "made in the ivory tower for ivory tower problems" vs C was written by professional programmers for professional programmers compiler enforced rules often prove to be too inflexible exa compiler will not allow to run progr with non fatal error can be very disturbing when user wants to test run an incomplete progr non fatal error should only give warning, but only run when neccessary [Raymond] "Finagle's Law", [Raymond] "Murphy's Law" strongly typed = gets in the way [Plauger3] p88 it is like having a bureaucrat inside the computer who gets in your way and then has the cheek to claim that this is being done for your own good this comes from their belief that they know your good better than you do legislating programming morality [Knuth] p78 is not right, it is my code, my responsibility, should be my choice compared with a police state [Griswold] p635 [Raymond] "code police" will get you, [Raymond] "fascist (2)" beware of people trying to sell you some form of "Snake Oil Miracle Cure" programming is more than manipulating symbols along fixed rules if it were so simple that a methodology or tool could solve it then we would not have the trouble with it that we have [Byte] 90-10p223 silver bullet OO, OBA, OOA (Yourdon) a intelligent programmer knows better than a dumb programming tool a good programmer can do everything without tools the tools are here to make life easier, they should not get in the way on the other side tools can guide an inexperienced programmer note that these people are often well intended, don't want to rip you off but they have blinded themselves to the real problems with toy problems they may be well intended, but result bad [Raymond] "Hanlon's Razor" anti-goto puritanism bad programmers used goto often because it is easy and they don't know any better middle good programmers ones use goto not at all because the professor says it is bad to use them some struct lang have no goto any more, but in most goto is still there anec Widmann added goto to Wirths Modula compiler good programmers use goto at the right times structured constructs are actually hidden gotos, quasi domesticated gotos therefore structured style can be emulated with gotos, but with more work sometimes raw gotos can be used to construct missing complex structures to escape the limited structures offered by most programming languages exa break a loop with conditional test in the middle [Knuth] p47 while block and block until, where are until block and block while where are loop block1 while/until block2 same also if block, if block else block, where unless block flexible structures in a production language [Wall] p93 exa loops with continuations, Zahn indicators [Knuth] p41 elaborate structures [Brodie] anec procedure calls and returns are also gotos [Knuth] p52 sometimes elaborate interleaved structured constructs are less readable anec structure to avoid gotos with p=*, but p=* is a goto [Knuth] p39 sometimes error recovery is easier and more readable [Knuth] p29 effect of relative size of work and error recovery [Knuth] p126 see also C setjump() and longjump() functions for this sometimes speed requires goto and readability don't drop too badly [Beck] anec Kompal output musing on goto lead to cleaner struct (without goto) only happend because I was prepared to accept intermediate vers with goto I actually haven't used a goto for over 5 years but insist on it being there, like emergency brake on public transport bedevilling gotos stupid, loses ability to use them when they offer advantage readability and predictability of code is proper criterium real problem in programming is complexity, not untyped data and gotos predicting the side effects of code is difficult code for implementing one functionality spread over different places exa NeXT DoMail script slipup, wait, sendmail, pop, slipdown for wait use a flag file, preventive clear, generate, wait for, clear human forsight is limited at its best programmer knows enough to choose direction, not enough to be sure only trying a program out will show whether it will work correctness can't even be guaranteed then code chaos vs design is true problem, this is real world, not ivory tower laws of nature apply, not oversimplification and wishful thinking the same also with claimed need of data structures like block struct code, changed thinking is important not syntax additions for declareing structures in progr lang Fortran mmmvff named arrays vs C mmmvvv[].fff the same also applies to similar critics of self modifying code it is actually run time generated or finalised code and every compiler is a program that generates code cleanly structured relationships are also crutial here, not dogmatism the same also with anti-globals, anti-assignment, anti-pointer [Knuth] p19 all come from stupid bureau selecting easy targets, not right ones structured dogmatism critisised [Perlis] p146 theoretising vs working language (Fortran) [Perlis] p161 Dijkstra goto considered harmfull [Raymond] "considered harmfull" was intended as a satirical jibe at anti-goto puritans [Plauger1] p178 don't make religion of no goto [Knuth] p18, but minimise need [Knuth] p23 real importance of structured programming is changed thinking [Brooks] p144 Nassi-Schneider diagrams, are good for teaching structured design but later no use for producing or doc code, direct code just as readable flowcharts are graph represent of code, no better to read [Knuth] p21 good for visualising code behaviour in early learning situation but after that no value in production work useless for designing/documentation [Brooks] p168, [Raymond] "flowchart" Functional Programming [Byte] 94-8p183 "data is just a dumb kind of program" [Levy] p117 Gosper to Sussman I prefer the alternative form "programs are just a smart form of data" because functions execute and return transformed data as result normal data simply returns itsself unprocessed as result a major problem in programming are undesired side effects of variable modificat unpredicted modifications can come back and send unexpecting progr off course assignments make value of symbol variable, progr can't be analysed as maths programs are functions, running them is eval a function [Raymond] "LISP" FP demands that programs have no side effects, no assignments allthogh often the side effects of code are the desired result computers are run for the side effects, exa an edited file having no state would make FP only as powerless as combin logic, no seqenc FP can only be an ideal to strive for, not a holy grail minimise side effects to neccessary, make the neccessary ones predictable really important is not exterminating but controlled use [Perlis] p145 insistance on illusoric "no side effects" makes FP difficult to get into attempts to find sufficient but not too powerfull constructs is research FP research has led to special lang embedding FP concepts but FP can be used with any lang that knows funct w param and return values no variables (= visible state) FP hides variables, is one step beyond structured programming is actually domesticated state, like structured domesticated flow control anec "help stamp out variables" [Brodie] p210 exa funct have state, on stack, in instr ptr or execution context of a loop but hidden from programmer, like struct progr hides gotos anec functional if thrown out of Fortran I [Backus] p30 and p54 later included in Lisp, copied into Algol [Perlis] p85 anec progr new to Lisp warned of proced style, but no def of what that is exa recursion instead of iteration hides iteration counters [ct] 99-0p234 philosophy of recursion return instr back to prev recurs level or to caller, no decr and branch exa print-int-to-str, if int > 9 recurse with int/10, then prt modulo is most likely the algorithm discovered in [Levy] p44 recursion requires multiple sets of local variables, frames in memory malloc a frame on every call, with frame ptr to old, gives frame list on call add a new frame at the list begin, remove it on exit this gives a push down list (pdl) [Raymond] "pdl" or run time automatic dynamic allocation on a call stack, automatic mem no time loss from calling malloc but static limit on stack depth if too many calls you get a stack overflow, memory smash, crash anec because of size limits stack swapping in MS-DOS kernal, STACKS= anec Occam language no recursion but the expression parsing algorithm in the Occam manual (described in Occam) is recursive [Dewar] this was done because of the static stack size allocation compiler calc max stack depth and moves it to front of Transp cache better would have been Transp with moving cache, register stack recursion (can be slow, waste mem) vs iteration (loop syntax, more code) some time recursion gives easier algorithms, sometimes just more work tail recursive convert to iterative loop, goto begin, faster, less mem convert non-tail recurs to iterat with 2 gotos, to begin and to after 1st these gotos are a case of bummed code being less readable but replacing with struct constr would suggest wrong design, worse convert data from call parameter stack->array->list [Knuth] p56 anec comp sci profs like recursion because hidden state is "elegant" anec joke dictionary entry recursion "see recursion" [Raymond] "recursion" vs iteration "something done again and again" [Wall] p425 glossary exa recursion to handle a special case, code before or after normal case do correction, recurse with modif param, normal case, undo correction when only special code before normal case, do it and recurse with mod param exa Unix shell scripts which modify parameters and then exec themselves also no aliasing of variables (diff names point to same variable) values and definitions vs variables and changing state no execution order, conditionals or loops, row of evaluation is not fixed programmer must order avoid order dependency, loses one error source FP is clothed in lots of mathematical terminology it can be made easier to understand by non mathematically inclined people by regarding functions as filters that process data nested functions as chains of filters, output from inner = input of outer forward and backward chaining, nesting control struct (buffers and calls) Top Down Design is also known as stepwise refinement (N Wirth) analyse the problem, split it into subproblems recursively do this until subproblem is a single statement but top down is only possible if target is exactly defined top down requires you to know what you are doing this "should be so" according to ivory tower professors, managment theory but is often not so, because users and designers don't know what target is they only discover what they really want while trying to build a system anec "if you don't know where you're going with a piece of code" [Beck] p17 requires experience from previous jobs, only good for repeated work top down leads to very rigid designs, small changes are a big job or break theoretically the entire design should be repeated from top every change from changed user ideas requires beginning from scratch often the designer to save time falls back to bottom up but believes that all is still good because he is "using" top down result is total lack of caution resulting from bottom up methods result is a very brittle methodology, it breaks when under fire great intellectual constructs based on many assumptions exa atlanta/denver baggage system, flight control [Byte] 95-12p48 exa nearly failled IT office movement, net admin notif 4.5d before holiday these big collapse as soon as a false assumption is violated top down fails from bureau errancy, from them not being workers slow to come up, fail target, long to correct, exa X.400 1984/88 get out of the way before they hatch their dinos, jurassic park style anec toaster overengineered satire top down vs bottom up is classical case of planned vs market economy it is also classical case of intellectuals vs pragmatics/practicals exa mainfr big design vs PC iterat growth exa OSI big design vs TCP/IP iterat growth exa railway big design vs car iterat growth same TokenRing complex order vs Ether simple chaos same ATM complex order vs CATV simple chaos CASE tries to avoid errors by putting weight on metaprogram (specification) [Byte] 89-4p221 CASE, methodologies explained, Warner/Orr, Gane/Sarson, Yourdon, Entity Relationship, Structured Design [Byte] 90-10p223 silver bullet OO, OBA, OOA (Yourdon) [Byte] 91-9p88IS3 VIPER chip demise, formal method failed [Byte] 91-10OLp69 future of software techno, p74 CASE just say no, go back exa Transputer designed with formal methods, but T9000 late despite that CASE tools were an attempt to speed up this principially broken method slow "recompiles", inefficient, same badness but faster than by hand often tools only solve part of design, low level missing, by hand or even worse constrict possibilities, get in way, circumvention needed the tools are also too complex to understand, too inflexible to use takes time to get in to, result in errors by omission, missunderstand [Byte] 97-5p40IS15 CASE repositories to share metadata [Byte] 97-11p47 the quest to standardise metadata CASE became a big bureaucratic white elephant, resulted in CASE failure which technique to use should be chosen on cognitive style of programmer analytical (top down) or constructive (bottom up) better even mix both methods, use the strengths of both [Plauger1] p2 learn both and which to use when, in end instinctive jump to result anec Stuecheli (top down fan) demand first design before coding, PC only then I (bottom up user) simply coded on paper, overwriting, copying, wasted time Bottom Up Construction is also known as b u implementation [Raymond] "bottom-up implementation" good design requires experience, experience requires running system running system requires design, is an endless loop, like hen/egg problem but it contains process of learning as implicit part, getting experience real humans (user and programmers) are not omniscient [Byte] 88-2p207 stratified design, [ct] 2001-3p182 extreme programming the human brain works toward a solution, discovers pieces, backtracks this places limits on planning, human foresight [Brodie] p42 top down breaks because of this lack of forsight bottom up is incremental, for the human mind, is compatible break this cycle with iterative improvement, multiple revisions [Byte] 90-9p264 computers and writing, painless revisions do twice, first mock up, then final [Byte] 95-10p100 sandwich method exa BRS/OPAC written twice, first prototype [Byte] 95-5p63 anec sister video tape, like most jobs better the second time round SW is like a waffle, be prepared to throw the first away [Kay2] p250 analysis/coding/debugging/improving [Knuth] p77 quick hacks are unrealistic [Levy] p352, only for throwing away, experiment life and learning are incremental learn from experience, fix where it is broken, gives robustness iterative getting a design right [Norman1] p29 exa Sholes getting typewriter right [Norman1] p141 program and code design is an iterative process [Licklider1] p132 leads to iterative development of programs, explorative programmig planners aim at make order but instead make chaos organising/planning on great ideas and central control fails to meet target it just gets in the way, makes a bigger chaos, fails at its target better accept that there will be chaos, aim for making the best chaos build better local structures that are capable of working together anec planning is way to arrive w big effort where you would anyway by chance the real question in program design is how to cleanly construct bottom up exa Pascal row content, loop, terminat, index (creates bug) [PCW] 89-3p182 use design methods and tools to support construction, modifications use incremental programming tools, techniques that are maleable begin with most visible stuff, allows seeing effects of changes, feedback also seeing the program develop stimulates programmer [Brodie] p88 fun down I say better the best mess possible than design that becomes a bad mess don't design something too big, make something simple, then grow/revise great spectacular top down designs often fail spectacularily better find neuralgic points, select on cost/gain, eliminate, iterative let user requests drive work, managment moderates, programmers mediate use a small but long time budget, few people, slowly getting better this is not spectacular, but it works, is effective and reliable programmer reality vs the others dreams [IEEEsoftware] 94-5 p90 when expanding existing SW, rewriting it or making a replacement don't go over the top, don't become too grandiose with ideas [Brooks] second system chapter, [Raymond] "second-system effect" bureau often make great plans based on user wishes [Raymond] "gang bang" but without knowing what's possible, what trade offs will occour this leads to feature bloat, unreliability, late projects, failure exa Zilog Z8000 not Z80 or 8086 compatible [Byte] 85-9p214 and Z80000 "kitchen sink processor" [Byte] 85-9p215 anec the Ford Edsel was also a result of this type of behaviour good bottom up requires experience from previous jobs know which components are important, efficient, which to implement inexperienced programming is neither of these, is chaos version 1.0 of anything is usually not optimal, except for pure chance all pioneering machines failed [House] p433, because first attempt design folklore is often lost on brash new generation, they must regain it exa phone off switch protection [Norman1] p144 exa multi-sequence processor [Thacker] p340 Wes Clark vs Alan Newell make it known to them, document it, tell the story how solution arrived good bottom up is a time consuming method, good designs must have time to ripen exa Emacs 30 years, Unix 25 years, MS-DOS 15 years, X 12 years top down amounts to forcing a fast solution the result of this is often unripe and unreliable software quickly draws into overtime, loses saving, but still no stability anec effect of top down design on Shuttle reliabil [Feynman3] p135 and p170 all programming is development, is a experiment, something not done until now can not be estimated like production (no X times done the same thing) if it were exactly the same thing, then one would simply copy the disks users allways want something bigger and better, more impressive designers can not work on previous experience, must first learn new stuff nearest thing to production in programming is making a derivative job exa early Innodat from PlasmaDat, but later ChS again development expect time estimates to be overrun this gives trouble with managers that bet their reputation on commitments applies specially to them for who to impress others is their only strengh specially critical for those with internal power struggles, exa Kompal if software tools are used these are most likely to be used only once, be new bugs in them hit unexpectedly, as they are not yet known exa dBase IV bugs in PlasmaDat, delayed project, drove up costs exa XVT in Kompal 1/3 work (=time/cost estimate), 1/3 deficit, 1/3 bugfix XVT because target VT 100 and Macintosh [Raymond] "defenestration (4)" pre-project testing of XVT failed, bugs only showed when trodden on managment chose XVT as "policy product", make world "easier" for them it took long to convince them to drop this, to accept that it was bad they should let programmers chose their tools to use, it is their job in the end the Kompal project grounded by XVT bugs, programmer frust my experience with these and other peoples suggest this to be norm from such experiences lack of trust in commercially offered libraries hackers try to do their best to write good programs progr from building blocks, only as good as ingredients [PCW] 93-11p477 they don't like building on code from "as good as necessary" industry is main reason why most programmers don't want to use commercial stuff result frustrated programmers and users, programmer burnout you only need such experiences and then bureau-made frustration problems then vanishing programmers, projects go into indefinite frieze, fail hackers know these problems, they expect overruns to happen, from beginning [Raymond] "Ninety-Ninety Rule" hackers unlike bureau are honnest, don't like to lie and cheat don't like to promise things, they don't know if they can do don't promise more than that they are going to give their best try at it this give language style in [Barry] p97, later copied by markering admit that progr is development [Plauger1] p67, but customers won't accept often claims that one should not develop own software, better buy standard SW but configuring standard SW is also programming, has similar pitfalls limits in the SW used found in mid of a project can crash it claim that own is desired because of unique job is wrong real reason for self written is independance from vendors, no lock in ability to fix bugs or add features without vendor [PCW] 95-8p384 but price for this is that it is more expensive, but no very much 3rd alternative is to share costs by modifying free SW you can always make it better, improve it [Levy] p126 exa ITS debugging over decade, adding features, never finish [Levy] p125 Unix also developed so, same also science, is an open end process new must grow from the existing, this is the main reason for free SW so that source is available, can be improved, improvements collected but once started on a system users demand backward compatibility once system becomes standard everything had to be compatible with it as anything incompatible with old sys will not be bought, will fail new systems must interact with old ones and must offer advantages over simply buying another old type one install of new machine type only if advantage is greater than cost this applies even if the cost is only the work time of replacing old so old machines will often stay in use until they fail to work result multiple qenerations of machines running parallel there are still XTs with DOS 2.11, Unix V7s, PDP 11s running "this new technology will replace all old" always fails on this reality it only adds yet another new system type, increases the mess improvements can only evolve so long they are backward compatible mending must stay compatible, costs more in the end, never really good result is even worse design, process repeats itsself recursively "every program becomes first rococo then rubble" [Raymond] "rococo" program silting up, losing elasticity [Plauger3] p166 [Byte] 93-8p268 "its not users fault", but it is, soley, they demand firms notice and don't innovate, success unfortunately gives them right leads to old designs surviving, despite technical better alternatives compatibility dominant over techn ability, exa QWERTY [Dennett] p122 but claim QWERTY ever had technical reason wrong, only convention exa QWERTY, IBM360/370, Intel 80x86, IBM PC, MS-DOS, Windows anec IBM also had a 68000 based microcomputer in 1983 the IBM 9000 Instrumentation Computer [PCW] 93-3p178 hindsight 83-3 it lost like everything else because it was not IBM PC compatible this not just in computing, is a general feature of evolution evolution creates kludges [Norman2] p122 exa mathematical notation [Bush] p243 exa weaving machine frame holes not movable exa biology DNS-SW eye wiring in way of light if something is wrong put it right properly putting it right once costs less than many small changes, incremental one big switch to right thing would be cheaper than many small steps cost of converting often less than accumulat loss [Byte] 89-10ISEp276 calc costs investment vs sum(earn_no-cost_now)-(earn_after-cost_after) what counts is future cost vs future gain, past is dead, money is gone don't throw good money after bad, but that is what bureau do wrong "gain will not be full cost", the past is lost, forget it wrong "cost so much we must continue", accept that orig plan was error but that requires mentality of accepting self not omniscient on the other side incremental spreads costs, one big change expensive hackers understand the relationship between investment and profit exa I have changed system or OS 4 times, to get a better fitting one Dragon->C64, C64->PC, PC->NeXT, NeXT->Linux hackers understand the law of return on investment (ROI) is the result worth the effort, and is something else better worth difference to bureau is that for them cost/gain only consist of money bureau don't understand it, despite that being their job that hackers must tell bureau this is a shame for them they keep on uttering phrases like "protecting investment" exa [Byte] 93-8p268 Mossberg in Wallstreet Journal wide echo they complain about comp not working properly, but is their fault they claim to be intelligent but are not as smart as they claim to be they don't behave is if they were, repetitively fall for appearances exa getting repeatedly fooled by marketing and PR the entire marketing and PR industry lives from fooling them everyone makes mistakes, but intelligent people learn, get better stupids repeat, for being so stupid they deserve to lose anec SoftRAM [ct] 95-11p50 test, [ct] 95-12p3 legal, [ct] 95-12p100 disas Syncronys with one dud/con product made biggest business success elected manag of year for profit, shows how businessmen are trickable [ct] 96-1p8 readers letters "for a virtual world fitting products with virtual power ideal prod for people who pretend to be doing something" "election manag of year right, millions for nothing, good marketing" [ct] 96-1p25 Microsoft stops Syncronys for copyright violation test labs VeriTest, XXCAL try to do image repairing [ct] 96-3p28 what does Win95 logo on a product mean, nothing anec similar con attempt [Byte] 92-6p45 WEB techno, infinite compression [Byte] 92-10p20 refutal and company phone disconnected Systematics concentrate like stuff, repeated structures exa BSD and Linux select next task and task switch central in return to user exa PlasmaDat object numbers, case-s in object type files, event loops exa Kompal all access tests in table_access(), all user questions table_ask() exa Kompal fields, Ctrl-W lists, Ctrl-L lists, Ctrl-T buttons form elements exa Kompal DB fields use/owner, parent, name, data, foreign, stamp exa Unix .xxx in users home dir vs MS-DOS *.ini in program dirs or env var is problematic for backup strategies with just all user changed data exa Unix IP subsystem in kernal with mult HW dependant drivers vs MS-DOS/Windows IP subsystem built into driver as winsock DLL if mult HW then a new DLL with support for all HW types is necessary order code according to explicit rules, ev with flexible variations this prevents forgetting to apply an alteration to all relevant places and it also increases comprehensibility of code use natural behaviour of existing subroutine collection exa Kompal Ctrl-L on Ctrl-T field don't force program unneccessarily, use what is there programming directed by logic in progr, not appearances [JamesG] p55 but beware of dependencies on internal structures and bad user interface every program resists changes due to design systematics this is specialy so in binary only library distributions multiple systematics in a program may be interlieved clash of systematics can lead to problems view systematices as multiple views on a multidimensional set of data exa Kompal form descriptions in DB still using old number system as keys instead of using form/field titles and unit names as keys exa Kompal user database owner and primary key name clash, both called user result user database can't be edited in forms system, must use SQL shell exa Kompal Ctrl-T/W/L/E, field_getactive and MOUSE_DBL merge multiple systematics to more powerfull ones exa clean Lisp, Forth and Smalltalk vs messy HLLs (specially structured ones) old chinese proverb: for knowledge add daily for wisdom subtract (merge) analog: for features add daily, for elegance subtract (merge) finding systematics requires the creativity of the programmer doing so is based on heuristics [PCW] 93-11p452, requires discovering them exa Kompal should use record access rights for user dependant form layout doing so only occured to me after leaving project, did not get implement requires immersion in to the code, overwiew of entire code after changes to one place find similar places and systematically change keep code clean&crisp, revise program regularily, throw away old code Henry Spencer (C News) [Hauben] "int_pioneer" it is easy to be sloppy, but it will haunt you. the only way to clean code is constant effort in that aspect. if you need a quick fix, go back and do it right as soon as possible. main reason for lot of todays SW bloat/complications/bugs is no care. rewrite a change or even entire sections when inadequacy is detected be prepared to write off work done as experience keeps code systematic, crisp and tidy, no spaghetti, exa Linux [Beck] anec classic untidy Linux device driver major/minor number mess from old code systematics are not part of language, not obvious, belong explained in comments write down rules of such systematics as soon as they are invented not when the prograam is finished, because you will not remember them all Declarative Programming the programmer tells the computer what he wants to achieve, not how to do it a program is expression of characteristics of behaviour [Ross2] p78 (1955!) programming tying together units of computer bahaviour, reusable components design subroutines to allow such expression of desires design declarative data structures to record and procedures that evaluate them concentrate all description of variable properties of an object in one place allows easier and faster adding, modifying and deleting of objects convert large part of definition into data structures declarative programming is also known as table driven programming exa Ken Williams representation for Mystery House [Levy] p298 exa Kompal struct of arrays system, *_make() functions in the end entire DB and form definitions in RDB, user modifiable anec Microsoft mouse.com driver to add SuperEGA modes I RTFBed it I expected a table of parameters and routines with the intention of replacing one line by desired mode but I found a hardcoded chaos, code like that from a junior programmer I gave up altering it, switched drivers mouse cursor of, did own drawing if this is representative for Microsoft code then I know why it is so big, slow, unreliable and takes so long for them to modify since then the newest mouse drivers have grown over 100%, guess why generalise data structures to an interpreted procedural language exa Ken Williams ADL for Wizard and Princess [Levy] p301 exa Columbia Commander single keypress driven graphics program my first program, was a graph program for speeding up drawing design exa C64 SOSP (sound and sprite) commands as strings to interpret exa Tcl one basic interp instead of many diff weak languages [Ousterhout] is an interpreter with basic commands and hooks for additional commands convert data structure processing procedures into commands of an interpretes descriptive language, leads to special job specific languages fourth generation languages (4GLs) the desired program is then written in this job specific language declarat progr also known as metalinguistic abstraction [Byte] 88-2p214 general purpose tool and one usage vs special purpose progr [Ross2] p103 declarative programming and 4GLs speed up programming because code lines per hour is constant for a given programmer [Brooks] p94 note the constant varies by factor 1000 (!) [Raymond] "superprogrammer" independant of the programming language used (Asm, HLL, declarative/4GL) and declarat/4GL require least code lines (more integrat, hidden detail) but tools can be very restrictive of change, specially binary-only 4GL sys also problems with product terminations, because of proprietary languages anec cast in binary analog to cast in cement, only changable with much work for expandability of interpreter code use hooks [Raymond] "hook" hooking is also called vectoring [Brodie], is a form of controlled SMC exa C64 Kernal and Basic jump vector tables vs 1541 floppy none easy to add drivers to C64 Kernal vs rewrite entire floppy for drivers raw machine code is still the easiest language to implement hooks in you can patch any routine in memory, by replacing its machine code instr but most HLLs do not allow easy hooking exa in C use indirect call via an function pointer, must be anticipated nice would be the ability to hook a function name, redirect it to new OO comes fairly near with subclasses "hooking" methods in superclass but hooks only for obj of subclass, not for superclass and other subc declarative vs procedural is actually only a question of point of view Fortran was once regarded as declarative (statements, not instructions) desired target, concept, plan, operations, formulation, execution Object Oriented Programming [Byte] 89-3p231 what is in an object, [Byte] 90-10p206 object lessons [Byte] 91-9p325 are Windows and PM OO systems [ct] 93-3p202 OOP-systeme, [ct] 96-4p330 objects, program design [ct] 2002-23p218 Ruby [Uo] 95-2p126 Perl 5 objects objects are chunks of data with the routines that act on them anec OOP originally invented for discrete simulations, Simula [Baron] p347 objects are state machines, each object in memory has a separate state they have routines that operate on them, modify them, called methods methods of one object trigger methods of other objects with messages objects of same type are grouped in a class, each class defines methods objects belonging to one class are called instances of that class objects of diff classes may have equal named methods, called polymorphism exa Kompal ptr to table-form-window in window, to column-field in form proper method chosen on message send, is form of data driven programming OO rotates modularity of code in datatype/operation matrix objects reduce "if"s, hide decisions in indirect calls via class pointers this leads to more readable code and less bugs exa plasmadat many if tables vs main set procedure is analog advantage of [Brodie] maker/doer, but fundamental, needs virtual related classes share code with class hierarchy, subclasses, superclasses multiple superclass problems with conflicting variable/method inheritance exa CLOS first name in superclass list has priority [Abelson] p198 fragile superclass problem, if subclass variable offsets in an object change all subclasses must be recompiled, except in sys with dynamic binding pure OO languages vs hybrids the first only have objects, OO syntax, the later are extended procedural exa Simula ext Algol68, Smalltalk pure, C++ ext C one of OO greatest claimed strengths is ease of code reuse reuse is not a OO invention, contrairy to the claims of OO fans good programmers have reused code since the invention of subroutines OO simply makes it easier to arrange code for reusing it biggest barrier to reusing existing code is not knowing about its existance programmer will not look for reusable code if they don't believe in finding will only if finding is percieved as success [Byte] 91-5p26 letter note that the programmers perception of situation matters, not reality exa MIME mail BASE64 decoder, I wrote it in 3.5h, Davids answer took longer with ever better (faster) coding systems reuse becomes less realistic in the meantime I have found that the Linux uudecode also can do base64 often simply assume a manufacturer has all, dependancy, exa NT SW slave I asked about this in ETH OO training, the professor had no answer real reuse is out of question, only in-house where good documentation OO is supposed to save code and space by faciliating code reuse OO as all encompassing sys must serve every need, requires very general code objects and subclassing is supposed to be flexible but subclass methods only pre-/post process, no access of internals "flexibility" fails when for example x/y graph treated like Corel objects lack of integration, separate applications are bad real OO needs expandible system, code patches like Lisp but base objects must already have flexible mechanisms, exa coord adjust gives all the famed closed SW problems, but user loses his guard fails to do this, must be extended, often not possible because closed leads to a veritable explosion in system size, problem of no standards OO requires all routines to be associated with classes and so object types seems to be an "everything is an object, so we only need methods" attitude this is as annoying as an "everything is a nail, so we need only a hammer" attitude, forces users who only have a hammer to treat everything as a nail this leads to lots of "pushing on a rope" style contortions to get code going but tools are supposed to help a user, not get in the way not surprisingly quite few programmers dislike OO stuff been forced on them anec switching to OOP is not a magic cure for all programming illnesses [Byte] 90-10p209 silver bullet, [Byte] 95-8p74 OOP design methods [EDN] 92-7p138 HP OOP experience, 38 guidelines OOP allows more complex structures to be managed by the programmers better systematics lead to real OOP power increase, exa MVC in Smalltalk anec first OO concepts hidden behind jargon, as something totally different was result of completely opaque language [Byte] 91-10OLp72 doublespeak the evolutionary process that lead to OO programming style was invisible this made OOP a lot more difficult to learn than neccessary I had to wait until objects implemented in C article [Byte] 90-10p226 Debugging [Byte] 85-3p350 history of word bug, [Byte] 94-4p308 or does it derive from medical terminology [Byte] 92-2p344 real time computers out of control [Byte] 94-7p191 Pentium code execution collection [Byte] 95-12p48 reasons for bugs, attempted corrections, exa air traffic ctrl [Byte] 96-2p18 leter about air traffic control situation [Byte] 98-4p60 why PCs crash, [Byte] 98-7p52 Y2K problem survival [ct] 97-14p102 Y2K problem, [ct] 97-16p74 troubleshooting not working PC [ct] 98-19p156 software bugs, [ct] 99-1p60 Y2K, [iX] 99-3p130 Y2K computers do exactly what you tell them to do, not what you intended to do the result of this will often surprise you [Dawkins] p51 seldom it is a nice surprise as for Dawkins, mostly it is undesirable computers execute programs like cooks execute cooking recipies programming is like writing a cooking recipy to get it right the recipy writer must know how to cook same programmer must now how to execute a program like a computer debugging makes you a realist, else you drown in bugs, crash [Zopfi] anec similarity cook/progr is why many woman in comp are progr, Ada first with exeption of trivial programs, no bug free program has been written this can not be expected to change in near future as soon as you write first non trivial program, you will encounter bugs this happens to every programmer, not just with bad luck or no talent only those that do nothing make no mistakes but good people learn from mistakes, don't repeat we can only try to be as cautious as possible, avoid known pitfalls debugging is really what programming really mainly consists of often requires largest use of time in a project [Ward] in projects that grow towards an unknown end all programming is debugging same also applies to projects where defined end keeps on being revised anec programming debugging an empty file [Raymond] "programming (1)" in a sense the job of a programmer is to get computer into a desired state as computer is preexistant but incomplete programming is always debugging because bug hunting takes so much time, doing it effective is important finding bugs requires diagnosing situation, recognising what causes them when writing programmer is in craft mode, for debugging in detective mode diff type of thinking, we have got a program here, what does it do [Ward] don't assume it does what it should do, that is only the ideal case the most crucial ability of an effective programmer is not analysis or design you can partially substitute bug hunting for a&d, not the other way round this is comparable to good error recovery vs attempted prevention in mech lots of brilliant thinkers fail at programming because of this this is why most hackers are self trained, not from formal backgrounds [Raymond] hackers educational backgrounds anec hacker pick up details fast [Raymond] Personality Characteristics comp not really random, just very complex, compare with medical training mental models of a program are only approximations of true system behaviour recognising the cause of a newly found bug is recognising effects requires lots of knowledge about behaviour of diff pieces of code designers can't entirely predict results of a program change this is because a computer is a chaotic deterministic device debugging is based on experience, detecting similarities with experiences but for new stuff no experience exists, not possible to predict outcome but there do exist a few usefull rules of thumb prevent bugs while writing use variable names that become illegal when a character is dropped exa naming of references in this text, mult of same author all numbered type in complete programming language structure, then the stuff in between exa both parts of a bracketing code structure while..end, for..end, malloc..free, open..close for making this easier and less error prone editor with templates inserts all of template with one key or expand a short code to template then go to first field, user fills out field, then go next field the template contains markers as targets for jumping through fields LSE even has templates for filling in C library funct call parameters unfortunately no overview of template relationships, diffic to learn NeXT Edit templates, not used because disable auto-indent, more work in the same vein also use cut and paste for entering already typed names exa could prevent PlasmaDat dBase name in DB def and progr diverging bug reduce amount of bugs at any time implement program incrementally, iteratively, further reason for bottom up expand functionality in clearly defined steps divide extensions into cleanly divide functions hierarchy of functions, give layers of code, start with lowest, build up be cautious with code techniques known for bugs global variables may not have the expected value, initialise them never read a veriable that has not been written to at least once before doing detailed init, set all globals to a known value this value should be chosen to be highly visible, show itsself in dumps anec [Raymond] "DEADBEEF", [Raymond] "fool" lots of repetitous code is good at hiding lots of bugs one set of heavy used code with parametrisation makes bugs visibler this is a further reason for using systematics also when one bug has been found, check other possib places [Knuth] p277 arrays have static limits, catch overrun errors with tests array size and test size deviation problems, use symbolic constants arrays are accessed via address arithmetic, leads to fencepost err, zero/one-based indexing off by one errors [Raymond] "obi-wan error" more generally run away bugs, exa Kompal sizeof(menuitem) dynamic memory all problems that appear with arrays but additionally pointers many forms of pointer bugs, list in [Raymond] "overrun screw" null pointers (never used or reset) may destroy data or protection fault on processors with memory protection progr ev terminat with access violat on processors without memory protection random overwrite, incl OS exa graph.c wrong pointer initialisation kills MS-DOS IRQ vector table after dealloc of memory dangling pointers, combat with resetting to null else when memory realloced further use may give hidden bug smashing the stack, data, code and similar things possibly only exposed on different compiler or even different OS memory leak from not deallocated blocks w no pointer (lost track of them) anec ChS PlasmaDat TIFF2EPS forgot free, crashed MS-DOS on second run pointer aliasing bugs (dual pointers to same memory block) dealloc when one of them is still in use gives a danglin pointer exa Plot.c freed memory still used by clipboard, 10 crashes in 2 hours until I saw that Windows releases mem, not the program calling mem managment is one of the most common bugs in computing [Garfinkel2] p205 increment pointers at stable times [Brodie] p81 editor display messed up also right beginning value, terminating value [Raymond] "obi-wan error" catching bugs use locality of case to effect lexical, execution time, memory address mistrust compiler errors messages line number of message no guarantee for place of error only shows when compiler detected something amiss, error latest that line same caution also applies to the type of error claimed in message good compilers don't say "here error..." but "here I'm expecting..." especially right when cause is a missing ;, {, }, /* or */ in C distrust messages after first even more, cascade errors [Garfinkel2] p182 use "can't happen" tests, generally sanity check [Raymond] "sanity check (2)" [Byte] 88-12p299 credibility to spreadsheets with simple validity tests small time loss vs great increase of reliability [Byte] 90-12p420 they show up much more frequent than expected [Raymond] "can't happen" use torture tests, extreme cases [Knuth] p266 TeX exposed bugs in every Pascal compiler [Knuth] p268, [Raymond] "TeX" for tracing how a program is getting along, for debugging output use variable dumps by print instr built into progr [Raymond] "bread crumbs" home in onto a bug with a binary search technique to avoid editing and recompiling program use debugging tools exa on Whirlwind mistake diagnosis routine (MDR) [Ross2] p61 exa on IBM 360 TESTRAN [Brooks] p57 make clearly visible interruption in detected error case abort with clear error message when a error is detected even better log all detected errors, is wide spread in mainframe world exa BSD syslog, NT error logging [Byte] 96-4p183 include info about code to edit (source file, array name) in message in C preprocessor #include non existant file and error message in /* */ but these techniques of course require programmer forsight to be inserted why testing fails so often people expect programs to be bug free when they find bugs often remark "but the programmer should have tested" programmers try to test for and detect all bugs but they can only test for bugs predicted from newly written code "what may be influenced by this change" debugging driven by the programmers assumptions about possible bugs is limit from preconcieved ideas about failures that counts every experimental measure (incl texting) driven by imagined faillure all predicting of effects of a program edit requires experience chance side effects only known after chance discovery later exa Pentium bug FDIV, table transfer not recognise as possible error source [Byte] 95-3p163, [ct] 95-1p20, [ct] 95-7p186 every non trivial design has bugs as result of this exa Hubble mirror bug, measuring equipment not recognised as pos source all complex chips have bugs exa NC4000 interrupt loses 2nd word of 2 cycle instr, crash [Ting] exa Intel 586 FDIV, 486 IRQ, 386 MUL32 286 stack expand [Dewar] p347, 186 MUL [Dewar] p348, ... but most manufactures publish bug lists, not Intel the real problem was Intels secrecy and slow reaction, not bug itself Intel tried to hide bug reports instead of publish them is part of general problems with Intels behaviour in the 1990s con chips [ct] 486SX Intel-ligenztest, high pricing, litigation announce long before availability [PCW] 93-4p502 Pentium anec managers guide to Internet from Intel employees [PCW] 95-3p641 anec PR desaster "unlike other chips ours don't need recall" [Byte] 95-3p10 mutant chips exa [ct] 97-13p30 Cyrix 6x86 hidden CLI bug exa [ct] 97-14p24 Pentium F0 bug program bugs vs design errors in other engineering dicipines SW bugs (and HW logic errors, exa Pentium Fdiv bug) are digital, either 100% right or 100% wrong (= 0% right) contrast this with traditional engineering, exa mechanics are analog, errors slow degradation of function, exa fabrica tolerances also traditional engineering has lots of experience with systems behaviour exa materials, today reliable forcasts of behaviour but not long ago, exa De-Haviland Comet 4 (or 5) wings breaking off in SW not possible because constant change due to rapid progress SW also problem with complexity, stuff spread all over the place beta testers, users can only test randomly, also only chance discoveries for recreating bugs found by users record user input into a log file impossible to "test in" reliability into exist code [Raymond] "test (2)" it must be designed in while writing the program from scratch but doing this also requires programmer predicting possible problem causes this will also never lead to guaranteed bug free programs but also [Feynman3] p176 NASA SW testing success, no bug in space vs [Byte] 91-8p72IS31 ESA software design cycle, but Ariane 5 bug [ct] 99-5p108 NASA on board control computers [ct] 2000p21-92 Voyager on board computers automatic test tools (regression testers) simulate user input and compare actual output with expected require the programmer to generate test sequences, also experience problems with change of desired output (often the reason for progr changes) tools often such a bind that programmers doesn't want to bother with them theoretical attempts at mathematical program proofs fail, only in ivory tower correctness proofs themselves bugy [Knuth] p269 finding all bugs is therefore only an ideal to strive for, no reality designing for bug recovery expect programs (specially new ones) to fail every so often expect users to make mistakes, crashing programs as result reduce the bad consequences of failures, simplify recovery store date in humanly readable form (ASCII, not binary) if possible this allows the users to diagnose error and write repair programs if not possible build in ASCII export/backup procedure and use regularily also use humanly readable (ASCII) network protocols for tracing, exa SMTP use humanly readable config and initial files, like Windows, not WinWord this is not only important for in case of bugs striking but also to allow conversion of data to new system, avoid vendor lock in it also allows them to add quickly needed extensions data is most valuable part of a comp sys [Byte] 90-9p323 Grace Hopper users don't see this, [Byte] 91-5p169 how do you value your data prepare yourself for recovery, with backups, test on scratch data don't use live data else big damage [Raymond] "scratch monkey" in cases of severe failure damage run multiple systems in parallel have each designed by different teams independant of each other exa aircraft or power station control systems Documentation design/review info, remember unsolved stuff while writing, work methodics prevent forgetting things you once know you've got to do lots of bugs when found lead to remark like "oh I saw that and forgot it" strategic use of comments while programming use a special comment form for easy finding with grep or similar also a todo.txt file for stuff you need to do, helps avoiding forgetting it or included in source file as todo comment section at beginning in projected row of doing it, should tell reasons for doing in that row show dependancies of various job to be done, priorities for them not only for program changes, also sys admin, user group jobs, writing book also to not forget physical jobs, I put stuff todo on a shelf in my room also use notes in a palmtop note database for portable remembering is portable, can be updated at any time when a idea strikes using agenda to not forget is one thing hackers should learn from manag engineers have a similar tradition, engineering notebook [Clark] p361 anec did you know that the Filofax was invented by a nurse in the WW I record what you have done and why in a separate done.txt file keep it up to date as it records experiences, reasons why you did something also tells you what you did with the time when manager wants justification logging such information costs a negligeble amount of time [Knuth] p261 is a nuicence to remember, breaks flow of work, but important like backups when a project is finished archive all of the stuff produced just leaving everything on an overfilled HD will give space problems also will be deleted when new person takes over the computer involved store all files produced on floppies/tape and put into folder with paper docu also binaries, the old source, the tools used, the machine configuration don't forget effect of new program versions not reading old files success criteria can you recreate exact state of progr delivered long ago all stuff (bits and paper) store in office, run out of space, no one can find when new person in office no one knows, later it all gets thrown out requires good central archive for storing, labeling for refinding by others then either check out or make copies, copying devices should be available archiving for later referral, store and publish all milestones even better tracability all versions, diffs for space, RCS for comfort but beware of intrusive bureau documentation systems annoying users exa IT QS rules how to divide docum into chapters, chapter heading titles but I prefer to arrange all documents chronologically, avoid categorisation most of the other intended users also boycotted the system exa IT QS error form to "help" engineers to not forget things to do but it violated their social expectations forms are for answering questions of bureau, notes are for reminders none of the intended users of this form were asked if they wanted it nor were they informed of the intentions this form was for the forms were to be handed in for storing by boss, not personal storing vs notes should be treated as personal memory, not public record many complained that this was a system for looking over their sholders disguised as a QS, that it expressed misstrust in them by managment generally users didn't make use of QS, find "reduce time waste" methods a system that the intended users try to avoid is a clearly a failure forcing something on intelligent workers is hated, it usually backfires everyone sabotaged this system that was intended to help them better spread suggestion, let users implement method fitting to their use when time for reevaluation arrived, users were not questioned either anec when I left the firm I had a talk with the designer of this form after hearing problem he said he would publish better info, forgot it perhaps he should have logged the complaint using one of his forms actually perhaps he did and put it into bosses folder and forgot it anec "quality in managment" meeting, presenter forgot his foils their idea of qualitiy does not include error reduction to this effect Programming Teams big jobs can not be written by one programmer, they require a team this brings in problems such as team size and work distribution use small teams of good programmers [Levy] p88 exa Algol group of 8, no formal structures, just common sense [Perlis] p79 exa Basic and DTSS developed by students, few of them and fast [Kurtz] p520 exa Macromedia (Director) optimum size 5, maximal 10 to 12 [PCW] 96-4p196 good programmers are central to good SW [Byte] 96-1p218 not human wave of unskilled droids [Raymond] "Mongolian Hordes technique" because large organisations get bogged down in organisational quagmire too many programmers on a project, takes longer, ev infinite [JamesG] p47 adding manpower to late projects makes them even later programmers are not fungible (chunk of workpower, replace/addable at will) same as 9 women can't make a child in 1 month known as Brooks's law [Brooks], [Raymond] "Brooks's Law" some people actually slow project by requiring others to do damage control [Byte] 91-10p330 Gordon Bell on startups going belly up for large projects with many programmers Brooks operating theatre [Brooks] exception TX-0 assembler convert to PDP 1 [Levy] p54, [Raymond] "gang bang" this worked because of hackers skill, motivation and a clear target exception GNU project, Unix tools and Linux kernal this worked because of many independant parts, clear interfaces divide work by the abilities of the programmers involved let programmers organise themselves along abilities and interests this gives good motivation, then high productivity results [Levy] p121 let them arrange interfaces between themselves, exa Fortran [Backus] p34 many programmers and few managers gives productivity [JamesG] p87 exa Alto project [Thacker] p268 environment success [Lampson] p294 milestones/millstones, [Lampson] p331 no detailed plan exa ITS, Lisp, Emacs, Unix and Linux development Bureaucrats and Managers good bureau serving vs bad ones ordering [Plauger2] p127 hackers see two types types of people in the world those that do real work, produce wealth, inluding hackers themselves and those that impose themselves, but contribute nothing to wellbeing bureau split along these two types usefull, help workers by offloading stuff that they can do, liked exa secretary, post service, material supply, janitor, good manager annoying, hinder hackers work by getting in the way, hated exa most managers (esp upper), book keepers, jurists (patents!) usefull/annoying from techie sociology, meritocracy the more ability/usefulness one has, the higher one stands bureau are cheaper than equal amount of techies more efficient for low work that would be a waste of the expensive techies but when bureau waste techies time and do wrong stuff, gain is lossed relative views of their importance are not compatle bureau believe: hack 1 (alone 1), h+b 10 -> bureau +9 (alone 9), 1<9 hack know: hack 1 (alone 1), h+b 10 -> bureau *10 (alone 0), 1>0 compare HI-FI phono and amplifier, phono (source) alone works, amplif not anec sister (bookkeeper) satiric "but we are ones who get the money" many bureau hide behind arbitrary rules, designed to control [Levy] p41 they lack acceptance of things not under their control attempts to control others [Levy] p41 prevents them from being self result wastive fights for power, no good in Europe we have a term for such control freak bureau, corporatshik but such attempts to control are a delusion [Shea] aneristic delusion bureau try to rule where they don't know the land, its rules vs should offer service to those that know what they are doing Peters Principle, go up career ladder until become incapable, then stay there then blabla, to defend their fiefdoms, damages techies/cust/firm, everyone this problem comes from the bureau career ladder, is a null sum game vs techies used helping each other, because all gain from it hackers spend time fighting technical problems, learn to help each other vs bureau spend time fighting each other and customers, no helping Woz at EO party complains of secrecy and stiffling bureau [Levy] p387 Woz complains that IWM chip is not freely available [Byte] 85-1p168 hackers are forced to do things right by crashes when they are done wrong hackers learn honnesty from be found out vs easy macho [Feynman2] p342 honnesty becomes part of persons nature, shows in all situations vs bureau can often make excuses, are far less forced to think correctly profession has also effect on social abilities bureau conflict human-human (evolving) drives them to more subtileness vs hacker human-computer (dead) doesn't drive them in that direction profession has effect on experiences in life, views of world, behaviour anec the French have a nice term for this, "deformation professionelle" for profession-related damage to the behaviour of a person desire for control vs serving leads to bureau reliably doing wrong in commercial businesses profit vs serving increases this tendancy hackers could tolerate bureau if they didn't keep on getting in the way why bothered by uselessness so long untroubled programming [JamesG] p105 good managers know their relative strengths, programming vs infrastructure exa the lower level ones I had at IT, but not the top ones understanding technology behaviour is main knowledge of a hacker it is the precondition to being able to design a successfull product programming is mainly debugging, hackers aim at being good at it understanding peoples behaviour is main knowledge of a manager it is the precondition to being able to run a successfull business managment is mainly people relations, managers should aim at being g a i anec Rokoff half time personel, exa get heating right [PCW] 93-2p451 managers that fail to understand how people function regarded as failures anec Brooks from Brooks Law was a manager (of IBMs OS/360 project) the entire [Brooks] is about human limits, about getting best from them work is split, hacker knows technology and how to put it to use manager knows business and how to find good techies with solutions managers should shield hackers from market fighting same as hackers shield managers from technology details anec [PCW] technology awards, critic hackers for not going into business but hackers regard becoming businessmen as the worst thing possible want to hack, play, if you want their input give them better sand box what about these critics building a business interface layer to help them working together, interface between hackers and managers is a project exa Sutherland seller-inventor relationship w Sullivan [Levy] p291 Sutherland was then a good manager, knew his limits [Levy] p293 but after MBA he became ignorant, failed in Sierra [Levy] p361 formal management training is mental mutilation [Raymond] "lobotomy" some managers criticize this view of job splitting claim it is techies fault when they are disappointed from expected service but they are wrong, techies are their customers, they should serve firms customers doesn't buy managment, buy product from fabrication fab "buys" design from engineering, eng "buys" leadership from manag managers talk about quality, define it as "what the customer expects" but they themselves don't even recognize who is their customer despite being exactly those constantly complaining about cust satisfact result managers are one of worst professions at customer satisfaction good managers recognize the importance of their technical workers exa Bill English recogniz as who gets things done [Engelbart] p201 and p203 exa Macromedia Colligan spends lots of time with engineers [PCW] 96-4p196 good managers know they can't underst techno arguments, no common experience evaluate techies for trustability of their ablilities and ideas learn which techies have a history of successfull ideas, trust them and then rely on the hacker to know technology better than the managers if they don't know techie in question, find manager they trust who does for techies in other departments find out who that depts managers trust learn which other managers have hist of success choice, trust them unfortunately many don't, have no trust in hackers, require arguments hackers must waste time explaining to them or live with wrong decisions often better technology can not be explained, because managers don't have the knowledge base to understand the arguments the hackers know exa Grace Hopper difficulties getting compilers accepted [Hopper] p14 also hackers usually have fairly weak social talent too weak to present arguments for better decisions, exa Ris at IF it should be job of manager to anticipate this and help bridge gap also requires hackers with good ideas to also be good at selling them hacker must know technology, its application and how to sell to manag while manager believes he must only know business, nothing else but with sales dishonnesty and hackers hating selling behaviour do not want to behave like that, it is against their value system the result of all this are missed opportunities, frustration innovative workers with vision are available in inductry but the bureau infrastructure prevents them from acting, doing their good exa me failling on Internet project because no finance, no support exa my desire to use Intenet SMTP mail instead of MS-Mail as result the only visions left in indust are the pipedreams of managment the sort of "we are going to be the market leader", without idea how 2 types of persons in firms those who understand the technology but are not allowed to manage it and those that manage the technology they don't understand problem with competencies given to without competence = understanding decisions are made by those who know the least about how to decide firms where this happens too often are ill with bureausclerosis bureausclerosis is like cancer, spreads until it causes death can seems to be only slowable, no curable, or only with large revolut IBM near death, Intel and Microsoft still have it in front of them hackers should not take managers technological decisions as serious when they are not based on in-depth understanding of the issues involved exa Heinz critic of me dropping Christians scan interface soley on base of this being a rewriting, but only 1h work for better UI after I changed it against explicit order he agreed change was worth it unfortunately some can't be circumvented exa Heiny critic of me wanting Foxpro to replace DbaseIV for PlasmaDat good managers create an environment in which techies can do their work exa Bill Keister sandbox philosophy talent, facilities and then leave allone [Griswold] p612 begnin neglect [Griswold] p652 exa same with Unix developers, do what you want [Salus] p299 exa Alan Kay for innovation rub smart people and money together don't disturb them by overmanaging, getting in their way innovation requires creative workers in an innovative climate managment that gets rid of bureau hurdles, frees workers to innovate not like in IF and IT where workers founder on bureau hurdles like money exa IBM PC team use of a manager to ward off superiors [Byte] 90-9p414 PC cre anec PC project not regarded as important, no managment dirigism when PS/2 project importance was known to managment, they screwed it up no technology leads to nowhere, but managment has more chance of sinking it successfull firms are often so despite managment getting in techies way failled firms usually do so because of managment getting in techies way anec Hannes Keller success = techology * mangment^2 = content * show^2 anec fathers claim managers not idiots, are intelligent, hardworking people but all my colleagues report seeing the same mess as I have seen and hardworking is useless if it only gives hectic trampling on the spot good managers give a clear description what is wanted, and why so explain success criteria so techies can check for reaching them bad managers check, worker changes, m recheck, arbitraryness, frustration Programming for Others if a program doesn't do what the user wants it to do then even the best written program will not be successfull general rule for good design is to write the program you want yourself the programmer is stimulated when the result is personnally desired try out ideas, consequences on real systems, not toy systems [Thacker] p269 designers/implementors as users gives fast and detailed feedback generally all innovative programs came from new user type entering computing these know what they want to accomplish, that is not yet accomplished existing users already have what they want or want incremental improving but no guarantee that such a program will spread to other users exa Augment difficulties with spreading, lost on others [Engelbart] p229 exa programmers are good at designing OSes, filers, editors, mailers exa Spacewar hackers wanted joystick operation as they were the authors they could easily add it [Levy] p64 exa ITS designer implemented and user designed [Levy] p127 exa Arpanet, TCP/IP, Internet from scientists who wanted them [Roberts] p170 all other users discovered how good it was and also used it vs OSI classic case of big bureau design missing target, failing exa Arpanet/Internet Mail quickly biggest bandwidth user vs X.400 failure exa Unix 1969..79 under control of designers and used by them kept ideas in hand while accumul competent users [Hauben] "evol_unix" exa BSD Unix, VM, vi and fast TCP/IP from Bill Joy at Berkley exa sendmail Allman "write the program you want to use" [Salus] p145 and p230 exa GNU tools are written by people who want improvements over Unix originals exa Alto effective design if designers use their own systems [Lampson] p296 exa HP calculators "solving problems for others like us" [House] p433 exa TeX designer must participate in implementation [Knuth] p250 and also be the user [Knuth] p261 and write the manual [Knuth] p262 exa early PC SW, by people who wanted it, knew aims, primitive but good today PC SW by SW firms, "it is a $xxxx market, we want a share", no clue exa CP/M from Gary Killdall, MS-DOS clone from Tim Patterson exa spreadsheet not from Alto group, no use for one in a lab [Lampson] p299 came instead from Bricklin and Frankston [Byte] 89-12p324 anec finance professor thought it wouldn't sell, he had no clue of users actually spreadscheets already on timesharing [Byte] 95-12p20 Omnitab II exa good games from hackers who themselves play games, not pros [Levy] p411 exa Mathematica from Wolfram, Mathematician, for own purposes exa Linux from Linus Torvalds, he wanted a Unix for his 386 exa HTML/HTTP/Web from Tim Berners-Lee at CERN, for his physics data exa Mosaic from Andreessen and Bina at NCSA [PCW] 94-12p380, [PCW] 95-2p295 exa Java from Joy and Gosling at Sun [Gilder] anec Bill Joy the really smart people don't work for you or anyone else be prepared to find them externally, also fitting research finance policy ideally everyone would write their own programs but not everyone has the talent, knowledge and time for writing programs so someone else must do it for them, professional programmers users know the job the program should do, programmers don't, must find out users of a program know their jobs better than managers or analysts do find yourself a competent and representative user or small group of users if you use a group specify exactly which issues you ask which user for if you don't do this you will be caught up in their opinion wars this interface user(s) should have a broad knowledge and good connections more important than having deep knowledge, that can be gained from others also this user should believe in using the computer to ease their job user involvement right from the beginning, exa Cobol [Sammet] p239 not just "user feedback" after finished, then it is too late to correct ideally design team should be lead by users, programmers as their helpers users often don't know what they can expect from computer, or its limits beware of users dream features list without relative importance marked mostly programmers bounce ideas off of users [Brodie], but also other way don't trip over ideas how progr should be from last project, users differ beware of trap of trading off usability for lower cost [Norman1] p156 complexity of design, many trade offs, everything programmable, but cost customer pays or loses feature, must have full decision control everone else in between (managment, marketing) is in way both must learn from other (programmer users job, user computers abilities) in such a situation good design results from evolving interaction between a programmer and an user [Raymond] "creationism" exa Apple from Stephen Wozniak and Steven Jobs exa Microsoft Basic from Paul Allan and Bill Gates exa PC word processors from programmers and authors, exa Jerry Pournelle exa Visicalc from Bob Frankston and Dan Bricklin exa Mosaic from Eric Bina and Marc Andreessen exa Java from James Gosling and Bill Joy this goes on while entire project, expect targets to change as result don't trust old waterfall programming method (spec, design, code, run) jump back and fore between the tasks, nearing target, spiral method a specification is a attempt by the programmers to collect the users knowledge [Uo] 95-5p124 specification/prototyping methods the users must read the spec to verify that this has happend properly for this spec must be written in a language the user can understand write specs in a language or symbolism that derives from users world if this fails the best progr skills will not prevent project failure "specify desired result objectively", how, there is no common language this is also why great diagram drawing tools are a bad thing, mislead anec this method screws up so reliably that it is used deliberatly [Raymond] "math-out", [Raymond] "MEGO" exa PlasmaDat first a big formal spec was produced by managers on both sides no one understood it, neither the users nor the implementors first I developed an form based DB viewer/editor which worked declaration driven, independant of the form and filed names I had learned at CSD that DBs change often, progr need this flexibility relations and DB schemas were only used as internally for designing a temporary database, not shown to user then I did user questioning for real specification the end user was asked about desired outputs these were in the form of user written example outputs, used as spec later the user even directly designed new on-screen forms then the definitions in the program code were adjested to fit PlasmaDat liked by lab workers for its helpfullness but the project was axed by their managment because it lost belief it should have compared future costs with gain, not incl past costs exa InnoDat was a derivative work from PlasmaDat (structure, tools, name) the only spec was "it shall work like PlasmaDat but with our database" the database required was designed by ChS, while I stripped PlasmaDat then I entered the new definitions into the resulting shell ID was delivered quickly and worked from begin to the users satisfaction later it was extended by ChS with many special functions just as final vers had been in use 6 months, IT was downsized, ID died the secretaries that used it claim that it was better than new sys anec ID replaced late and unfinish progr, users said they couldn't use that how am I going to remember usage of something so complicat [Norman1] p188 exa Kompal customer wanted modification of existing program, written in house this exiating progr was spaghetti, only orig author could modify, no time IT declined doing modification, only offered to do a rewrite, new system this should not only do new calculation but take over all existing Kompal became a victim of 2nd system syndrom, perfect system syndrom official planning phase to draw up a specification was terminated by customers manager who wanted to stop open ended process customer cost pressure to stop specing [Plauger1] p65 "there is never time for proper design, but allways for mending it" bureau demand the cheapest possible, then complain about it being bad Peters only interest in the specification was the maths, input data for it spec failed because contents (an ER Diagram) was not user readable users don't understand cybernetics or data/process analysis but social factors lead to none of them complaining biological flee/freeze/fight in human society leads to freeze no one wants to admit publically at failing to understand spec everyone just nodded, this was missunderstood as acceptance then the programmers implemented, the catastrophy took its course then everyone complained when 1-n relationships were chosen wrongly avoid formal conference settings, trigger social fear [Plauger1] p219 interface to be "based on" PlasmaDat, not regarded as great development customers manager only interest was no function keys, that not Mac like no word about how the intended users work, no visit to them later I asked 4 times (twice in front of the customers top manager) to visit users to watch them work with old system and interview them to find out how they work, how they thing, what they need my request was never granted, so I wrote what I thought would fit later everyone complained that user interface didn't fit work style anec others have made similar experiences with that manager involved custom software is like custom clothing user must go for fitting if you want custom software made you must go for fitting, like clothes user involvement in programming work split the writing of a program between programmers and users this is known as the toolsmith approach [Raymond] "toolsmith" see design rules in declarative programming chapter for rules for splitting this is a further reason for using declarative programming programmers write the difficult stuff, complex routines that do the hard work core code and data structures operated on by this exa kernals, device drivers, shells, tools these routines do the heavy work, fast because efficient compiled code they are expandable by other programmers design these so that the scripts are as simple structured as possible is triggered by user code, scripts, macros, query routines not just set variables to constant, set to a function, progr code exa Emacs M-Lisp [Cameron], TeX [Goossens], [Walsh], Lotus 123 macros extend this to an interpreted script language, exa Tcl [Ousterhout] task oriented language with embedded tools interpreters simulate a virtual machine is most flexible organisation of any control system programmer includes prebuilt scripts, modifiable by user if desired slow because interpreted, but not much work to do, so it doesn't matter users write/modify the easy stuff, scripts (such as form and page layouts) [Kay1] p262 feature ridden inflexible (cars) vs maleable medium (paper) [Kay1] p262 Dynabook divide problem, medium by designer, finishing by user [Byte] 91-2p203 Kay Dynabook revisited [PCW] 89-2p185 EuroPARC user tailoring SW this avoids programmers doing boring and bug endangered work often easier than user writing spec and programmer converting it to code also gives users feeling of control over project, helps make them satisfied also gives users a better feeling for what is possible in programming programmers will have to fight less requests for impossible stuff exa PlasmaDat me main.prg, printsub.prg and initial print.prg users expanded print.prg after a few hours of training anec at DEC RDB training this method astonished bank programmers to make modifying easy design user script lang to be similar to users data text processor code, spreadsheet formulas, database records exa Kompal form layouts stored in RDB as data records a colleague of mine has since modified these without any recompiles but here also a case of systematics not tidied up I should have used descriptive titles for prim key, not artificial nr but include a number field for sorting row of appearance config file (dBase, Windows) vs .rc file (Unix shells) [Raymond] "rc file" config can only set variables, .rc can run commands, incl set cmds stages of configuring built in, /etc/rc, .rc file, env vars, cmd options modifying scripts belongs to computer literacy [Byte] 90-8p211 end user progr, [PCW] 93-3p177 new progr methods letter using closed programs vs self writing of programs is like speaking from a phrasebook vs making own sentances compare situation programmer vs user with human languge not everyone invents new words, but everyone makes own sentances extreme case of this is programmer writes generic end user development tools [Byte] 90-8p235 user programing initiative users then do the entire local job in the tools language Free Software first software was delivered free of cost and freely usable with the hardware or written at universities, often for their own use there were no professional software producers as soon as software has a commercial value the owners interests get in the way [Licklider2] p124 turf fighting of manufacturers makes users suffer additionally exa commercial Unix and the "open systems" industry standards war mess [Byte] 92-1p406 ESR standards eveywhere, look before you leap AT&T closing up [Salus] p151, leads to Unix clones Xenix was written by Microsoft, marketed by SCO [Byte] 89-5p228 prevented Unix success [Salus] p225, claims deliberate by Microsoft some say that this was a tactical strike to get people against Unix Sun/AT&T vs OSF mess [Salus] p216 even DEC that dropped its Ultrix for OSF/1, but now calles it DecUnix open systems mess [Salus] p203, [PCW] 93-1p463 yet annother non-aliance (COSE) [PCW] 93-6p198, [PCW] 93-6p520 and it fails [PCW] 95-6p347 there are no real open systems in Unix industry [Salus] p210 the "open systems" industry is actually worse than Microsoft same bad bureau but market slime tries to cuddle up to free SW ideal users saw this and have prevented the "Year of Unix" for 10 years [Byte] 92-1p406 Raymond rules for standards war survival pressure to be first on market leads to rising bug count [Byte] 95-5p260 and pressure to produce at low cost reduces personnel, work in product commercial SW bugs from time pressure, features, cost cutting vs non commercial no compromise, personal reputation is on line anec Martens "software gets worse and worse, must be law of entropy" feedback from users to designers in the industry doesn't exist exa [PCW] Servasure, early Japanese photo copiers kept on breaking down always the same parts broke, local improvement, HQ never heard of it bureau process hinders good design [Norman1] p158 collecting user feedback seldom exists [Norman1] p143 exa NeXT not even Mamakos serial bug report inclusive patch got heard what chance would my interface improvements list have no waste time, result not sent it, result they can't get it even if manufactures managers want to get feedback from users the flow is severly impeded by the firms bureau, 9 to 5 mentality better let designers and users get together, then good stuff happens GNU and Linux tools better than all commercial Unixes because of this test in iX (from CMU?), commercial 20..35% crashed, GNU/Linux 5/7% corrections (and extensions) must fit the software owners business plan exa Microsoft Windows desaster vs OS/2 2.0 that was near finished in 1990 Microsoft software great design marketing blabla but fails on usage SW industry is driven by getting user to make updates [PCW] 93-2p178 update mess, no licences for old tried and trusted vers [PCW] 94-3p273 software distribut must fit the restrictions of sales department bureaus software must be sold as big packages to reduce code, not small modules software systems packaged as entire system with slow version num changes vs free SW no big all-in-one system upgrades like Windows instead separate components upgraded when authors are finished and installed when users have desire for them and are ready individual components versions as needed distribution via FTP server not possible because no payment guarantee this prevents a software module market from evolving the software crisis is largely a crisis of organisational economics OTOH webcomics and open source have learned to live with donations packaging is only for SW industry distribution organisations benefit source hidden in manufacturers organisation because competitive advantage divided up into fiefdoms, jealously guarded by corporate lawyers even worse also hiding ideas and look-and-feel [Lampson] p343 Kay Xerox hackers retain some childish behaviour, curiosity, openmindedness bureau retain some childish behaviour, possessiveness, like 7 year olds "this is my possession, you are not allowed", juristical battles cooperation and sharing would be a lot less wastive, better exa Atari acting as a bunch of babies [Levy] p326 exa AT&T Unix dept more lawyers than technical people [Salus] p139 U.S. vs Japan only 1500 lawyers in entire country [Byte] 92-8p95 exa license hassle with AT&T lead to BSD numbering 4.* [Salus] p182 anec disclaimer in [Garfinkel2] pXXXIII user has paid entire license fee to get software, no reason for service businesses exist to make profit, customers are a means to get it customers that complain make costs, reduce profit, that loses reason why put up with them, only cust that are easily satisfied may apply this results in the attitude shown in [Garfinkel2] p81 buinesses only provide help and bug fixes because of market pressure also cost is same for each user, independant of amount of use Brad Cox suggests a software metering system, pay for use, not aquisition only usage costs, that would be dependant on amount of time/work also allows fine splitting of payment for individual features also split payment for authors of subsystems, SW component market would allow superdistribution of commercial SW via FTP servers similar suggest in [Byte] 96-2p248 comment, [PCW] 96-2p237 components see http://web.gmu.edu/bcox for book preprint but problems with reliability both of the system resisting attempts to break it and of the system functioning on unreliable networks (if net is down) I would never depend on using such SW nor offer my SW in this way also will customers take it, bureau want fixed costs for easy budgeting "copy protection" measures is actually copy prevention, producer protection, bureau twisted language anec derived from here the term data protection, similarily twisted crashes machines, prevents backups, harms users [Raymond] "copybroke (2)" exa Norton SpeeDisk doesn't move some blocks, may be save c p schemes anec Lotus 123 was rumored to check for an unmovable "bad" disk block exa MS Office upgrade tests for existing, bad if you want to wipe clean this attracted hackers who break such schemes, "mend" the software are known as crackers, today real cracking rings [Raxmond] "warez d00dz" these mended versions called cracks, or falsely warez [Raymond] "warez" anec Dani's FTP server missused for distribution warez today copy protection is mainly dongles but they still make lots of trouble [ct] 95-12p122 fail to be recognized when a printer is plugged in but switched off multiple dongles on one port signalling system colliding, no detection requires using multiple LPT ports, but max 3, also config trouble multiple dongles on one port sticking out, get in way, break off port this is particularily obnoxious on notebooks anec "dongle port" card from dongle manufacturer, dual LPT ports one internal in the chassis, dongles pointing forwards but what about notebook users, they have no slots, space SW makers are slowly learning that customers dislike dongles and as result avoid programs that are "protected" by them related to copy protection encoded pay-TV/radio, rent for needed decoder also related is embedded signatures in images, audio, other data [Byte] 96-4p40IS5 digital watermarks [Byte] 97-1p40IS7 digital watermarks [ct] 97-8p162 digital watermarks [ct] 98-4p47 digital watermark deletable [PCW] 94-1p515 ICE code in inaudible part of audio spectrum use of gains from one product to monopolise other markets squeezing out competitors, reducing choice for users exa Microsoft licencing for monopoly stepdown [PCW] 94-9p218, but is not real [PCW] 94-10p219, prevent split [ct] 97-14p84 Microsofts anti trust troubles [ct] 98-1p18 Microsoft monopoly problems [ct] 98-11p16 Microsofts legal troubles [ct] 98-12p22 Microsoft internal mails on loosing [ct] 98-25p17 MS annoying judges, Billy forgetfull [ct] 99-24p16 MS loses process most likely, only question of punnishment [ct] 2000-8p16 MS process, [ct] 2000-10p22 splitting MS? [ct] 2000-13p24 MS process resolution exa Intel chip information monopoly [ct] 98-13p27 Intel monopoly law case producers (deciders) benefit is customers loss, Grudin's law [Norman2] p113 run for managment [Byte] 90-9p252 Felsenstein desovjetising the SW industry Windows was designed to please accountants [Garfinkel2] p164 Smith (in Wealth of Nations) "manufacturers are men whose interest is never exact same as that of public, decieve, oppress" [Hauben] "netizen" false and self serving econom arguments of mercantilists [Hauben] "immin" "you don't want a product that competes with an existing product" exa II hobbled to not hinder III, III failed at stopping IBM PC success later III died, II became IIc/IIgs, built into 1990s [Byte] 85-1p173 exa IBM PCjr hobbled to not compete with PC, failed exa IBM PS/2 386 hobbled to not compete with AS/400, lossed market share anec on my visit to IBM question if cheap for cust vs expensiv for profit "sale is the aim, anyway cust will grow to use expensive" vs "you don't want product that doesn't offer anything more than existing" this is what messes up customers life, what they don't want desire for safe profits also leads to customer control tactics think of damage if english language were copyrighted to some firm you need a speaking license which limits you to sentences in a phrasebook "copying" a sentance someone else uses would be breach of licence copyrights prevents people from getting the most from SW [Levy] p419 relative costs of design vs fabrication in production (both agricultural and mechanical, anything made of atoms) repeated production cost is major part, cust must pay this for every copy design cost is only a small part, can be spread over the many copies in service industries work time for individual customer is nearly entire cost so the situation is the same, the old structures work as before in books, music or films, reproduction and distribution is still bigger part these are often compared with software, but no cheap copying, also losses in software and any other digital information (anything made of bits) production is reduced to only copying, design cost becomes dominant reproduction costs next to nothing and is lossless, copy identical usable reproduction can (and will!) be done by interested users anec computer industry suprised how quick pirates distrib SW [Levy] p227 PD, freeware and shareware all ride on same method as SW pirates [ct] 96-5p154 shareware and others, software overview anec piracy from price percieved as too high [PCW] 94-1p237 anec design expensive also the reason for upgrades cheaper than new price when a user upgrades, only part of design is new, rest already paid for only pay for additional design and 2nd distrib vs new user pay for full anec stupid bureau "you don't expect upgrade price for new automobil" but that is because you can't type "diskcopy garage1: garage2:" bits vs atoms key difference is users ability to cheaply make lossless copies using only the existing standard PC hardware as reproduction devices this is a physical property of digital data, of bits all digital data is far easier to duplicate than make bits have no weight, move fast, are copyable applies to all bits, exa multimedia, digital encyclopedias [Norman1] p215 not just to programs, as many still believe bits vs atoms is like the world of science vs business in atoms/business the others gain is your loss, result is fighting note that business can create (and sometimes actually does) but the majority of activity is dividing the spoils vs in bits/science both can have a copy, no loss, result is cooperate the spoils can be duplicated ad infinitum, everyone can have a copy copying bits can not be theft, the owner still has the original only damage to owner is loss of design cost recovery, not using design damage to other users is unfair distribution of design payment even if bureau claim piratin to be theft, exa fed against SW theft (FAST) anec bits vs atoms problem started 1840s with Samuel Morse invented telegraph while on sailing ship EU->US industry is a organising principle that was optimised to solve the problem of mass production financing, production, marketing and distribution, sales todays econom (firms) and jurist (law) structures were designed for this hardware is manufactured (in industry) mental techniques are taught (in shool) [Norman2] p5 cognitive artifacts software is in between them, third method, third organisational form software is more like human language or culture than a product [Dobbs] 96-4p22 Knuth on copyright for algorithms, public like maths software is a problem of paying for complex design, requires diff solution forcing software (and other bits) into industrial structures is big waste exa SW reprodust/distribution/sales mechanism costs more than development more work time wasted on administration then used in benefitting users anec average book also 10% of price for author, 90% for publish/print same CDs, Fr30: artist 3, manufact 3, suisa 2, publ/distr 11, sale 11 unlike with books we can avoid this waste in software, make it cheaper people pick it up, use it, modify it, don't pay for it exa Unix free distr success [Garfinkel2] pXVII Norman foreword, [Salus] FTP/Web is good because you can get SW without going to a salescritter why assume that solution to a computer problem lays in buying products why make computing as frustrating as the rest of todays economy unfortunately there are many people educated to regard indus as natural but it is only natural in the world of atoms, in bits it is unnatural no production/tooling/capital/sales/buying/accounting/salaries/firms will lead to many salescritters and other bureau losing their jobs generally net makes end of service industry, computer is a job killer [ct] 97-15p132 jobkiller [ct] 98-23p118 jobkiller vs empty jobs looking for personel most hackers could not care for what happens to bureau, from being hurt badness and frust main reason why hack don't care for jobless bureau for once its them that is losing, for once the bad ones, thats nice actually computer is a work time reducer, it is up to society to either translate this into shorter wor time or into jobless anec MS success from being the best at bringing industrial style to SW reproductuction, marketing and distribution the copyright problem before publishers existed individual copying was the norm, exa antique age only after press, mass reproduction, capital need, professional publishers need for protection of X from cheaper Y who payed nothing to author copyright is publisher protection, not author protection claim that copyright protects authors, so more authoring is done is wrong there allways were too many authors, even those with no chance of publish claim that copyright/patents "to protect authors/inventors" is rubbish is to protect publishers/producers investment in (re-)production organisat but this is allready protected by other pub/prod having same set up costs authors/inventors do it for satisfaction, not money if they wanted money they would chose other more profitable time use authors can rely on real job, or public support, exa Internet inventors can get employed, exa by producers R&D department this meany that publishers become distributors, network vs CD-ROM vs Book this offers end user more choice, and lower price form mult of each this is less profit for them, but law is not here to safegard profits tieing recovery of development costs to exclusive distribution of copies exa traditional paper publishers demand distribution restrictions exa Jargon File on net only ASCII, no layout or graphics, only in paper they are used to being the sole publishing medium, owning authors work classic case of entire copyright system outdated, failing new media central problem is paying the authoring by a charge on the data carrier copies reproduced/sold by one distributor and not as a separate reward by users who think the work worthy that will have to go, is too great a obstacle to societies development eliminate copyright-related restrictions on using information copyright is outdated, superfluous and damaging, we will have to abandon it but lawyers (lose job) and publish (lose profit) do everything to prevent today individual copying is growing, becoming dominant mode of distribution from low cost of copying technology and basic human act of helping/sharing simple, flexible, fast, immediate when you want to use it, no order delay popular culture is taking up copying, the situation will get worse jurists and their clients will have to accept the public will reactionary policy of trying to rurpress the peoples behaviour WIPU treaty, US DMCA law, ECD [ct] 2000-14p22 add to this in computing incremental copy/paste usage, copyright in the way exa [Byte] 95-4p32 legal landmines cloud multimedia exa [ct] 94-12p186 electronic publishing technology vs payment dilemma [ct] 97-15p128 copyright exploitation plans [ct] 98-1p122 music on demand, [ct] 98-6p162 end of free internet [ct] 98-15p122 music on demand, expensive, unreliable, closed [ct] 99-6p192 e-books, fail because formats, license enforcing BAD [ct] 98-22p56 rocket e-book and similar, are copybroken, fail [ct] 99-6p192 still same situation, [ct] 99-20p216 same in science publis [ct] 99-23p226 print book on demand, [ct] 99-24p206 OEB standard [ct] 2000-15p178 book on demand of historical works exa [Norman1] p215 gigabyte laserdisk, 100 books, recovering authoring cost exa copyright damage RSA vs PGP, Barnsley fractal compres, Parcplace Smallt exa OO 20 years no standard language/class libraries until Java came exa copyright damage Adobe PS fonts, Sun NeWS window server exa NeXT DPS server onlr renders for screen and their print engine for real printer external PS needed, no using of Epson or Laserjet + DPS exa copyright damage from SCMS on DAT, CD-R [PCW] 93-3p403, [PCW] 96-1p253 exa CD-ROM drives audio-CD sound first only over separate analog out not over digital line to CD-ROM controller, sound card DAC, copy prevent exa fans not allowed to tape concerts to remember atmosphere not allowed because it violated record firms copyrights, called bootleg exa [ct] 97-8p34 German scanner drivers slowed because VG Wort charges [ct] 2000-16p28 same lobbying groups want payment for computers [ct] 2000-20p20 reaction against extending payments in Switzerland similar charges on photocopiers by Pro Literis exa [ct] 99-17p22 UCITA allows remote shutdown/deinstall exa in this text there are many references, I would prefer to include orig but problems with intrusing on the owners copyrights prevent that same also digitalising video images from TV documentaries, not possible only way to use would be license them, costs, make me demand money to ensure software free of restricting commercial interests it must be free of the insane practice of owning concepts [Levy] p311 ownership of design is bad, reduces flow of informatio, duplication, amount reduces qualtity of generated information, user satisfaction neat tricks disseminated, quality of all software will rise [Levy] p311 law giving firms rights to own employees ideas restrict them being usefull firms really only buy employees work time, right to use result of it [Griswold] p625 and p655 allow software to be free, without restrict/charge also lead to de facto standardisation by a portable implementation exa free copyright better Unix, Linux, X, Java this will have to lead to new form of economical organisation industrial->new as agricultural->industrial in 1800 [Hauben] "immin" it has been called the post-industrial society networks will force this to happen by breaking enforcability of laws days of producer dominated society are over, now the users select anec Marx social structures follow from production methods production revolution gives social change, today postindustrial related bogosity is the patent system, hinders others in offering better particularly abuse of patents, which are basicaly anticompetitive device to wipe out competitors, reduces selection, harms users exa [Byte] 91-1p305 Hyatt microprocessor, XOR graphics exa Compton multimedia patent exa [ct] 96-5p14 IBM PC patent abuse, mostly trivial in particular software patents, as no revenue stream to pay licenses with exa Amazon one-click used vs B&N [Byte] 90-9p232 Alvy Ray smith software patents, airbrush patent [ct] 95-3p29 GIF license, [PCMag] 95-3-28 SW patent trap Unisys/CIS/GIF [ct] 96-8p57 patent danger to downloadable digital products [ct] 99-16p72 software patents hinder small ones [ct] 2000-12p40 open source threatend by software patents [ct] 2000-25p264 german supreme court enables software patents [ct] 2001-17p170 fight over sw patents use vs damage [ct] 2002-23p108 software patents situation also related bogosity is the trademark system, prevent others using name [ct] 97-13p142 Intel inside campaign [ct] 98-1p26 legal trademark bogosities anec naming of 586 as Pentium because of numbers not trademarkable anec German trademark incident with Intel Triton chipset lawyer Gravenreuth hurt many PC dealers [ct] 95-8p26 first, [ct] 96-1p28 goes further [ct] 96-4p62 expanded to Asus board manufacturer [ct] 96-5p20 but not Microsoft, they were too strong [ct] 98-6p20 Gravenreuth strikes again [ct] 2000-10p42 shooting back at Gravenreuth for project names don't use trademarkable names, use geographic names same type of guys sued for using inches in adverts [iX] 94-1p26 but this is not see so by the courts [iX] 94-2p12 anec did you know that using (C) for copyright is not legally recognized but without income authors (and following them new developments) will disappear software written piecemeal, additions by whoever needs them this spreads the development cost, puts them is the range that is accepted for whiting in house stuff to use, for adapting the system it use all people doing this adds up to enough development power to make software software is a cultural artifact, not an industrial product just think of folk music, no one was paid for its development [ct] 98-12p88 free SW between commerce and chaos it professional writing is needed, support authors producing free software public support from taxes, would require getting bureau to do propper thing but they only trust each other, and people with titles given by bureau so this can be forgotten, requires private funding of free SW make it user supported software, grant system [Keogh] intro FSF/GNU exa TeX supported by TeX User Group [Goossens] intro, [Walsh] exa bash, Unix tools and Emacs by Free Software Foundation GNU project exa X-Free by X-Free consortium, Linux by Linux International exa Apache by apache.org exa Netscape as Mozilla [ct] 98-9p96 source overview, qtscape anec shareware is often not paid because of no mechanism [PCW] 95-8p566 anec LUGS failed attempt to establish mechanism for supporting free SW this could be expanded to hardware circuits, proc instr sets, chip layouts exa Definicon PD32 32016/32 [Libes1] p241, anec TSP 32k was one of these and expanded to authoring in general, both technical and literary who arranges support for writers of new texts GNU only supports writing of new software (and its documentation) Project Gutenberg [ix] 95-5p130, [PTP] 94-9/10p3 only digitalises existing texts, that are free from copyright for this I am trying using a support page with cost calculation on it and list of supporters with their home pages and date/amount in hardware customer owned producers are partly the case exa IBM has shares in Intel, Compaq has shares in Conner exa many car firms have shares in their suppliers generally the idea of customer owned suppliers is good for relations customer has decision power, cost vs quality decision ends at customer not as it often is, cost decison at customer, quality at vendor supplier has more safety because customer does less vendor changing interests of both overlap more, less fighting each other anec AMD advert "we are not your competition (unlike Intel)" in SW this would mean millions of customers owning the SW firms this is impractical with traditional industry, capital and shares but free SW allows users to own the software, pay programmers free software is freely distributable, not free of cost and author reward "help stamp out software obstructionism ("ownership") by using, writing, and sharing free software!" at end of [Stallman] FSF explained [ct] 92-3p62, [PCW] 94-10p550, [Uo] 94-8p74 German FSAG anec Bill Gates misunderstood word free [PCW] 94-1p579 answer of RMS, this is a classic missunderstanding [PCW] 96-3p272 typical for him, anec software flap over copy Altair Basic [Levy] p229 vs Allison participatory Basic, Texas Tiny Basic, Pittmann [Levy] p231 also "free software allwas existed, no threat" [Byte] 96-3p50 some users can't tolerate the lack of buying guaranteed support for these commercial support firms would be the solution [PCW] 95-10p284 exa Cygnus (GNU support), MT Xinu (BSD support) intelligent cooperation and sharing vs stupid greed and competition cooperation instead of dog-eat-dog competition [Levy] p416 fighting each other is the mark of the loser, behaviour of stupids, barbars better cooperate, intelligent people do this [Brunner] exa exchange information about disk manufacturers [Levy] p311 intelligent people work together and share end result, build up by adding tricks for good software known to all, all SW better [Levy] p311 if competition is required do it on service (good for users, not damaging) lately Ray Noorda from Novell has coined the term coopetition [PCW] 94-9p571 [iX] 94-4p126 Noorda interview seems that he understands relation between cooperation and competition as result of that he was declared "unfit" to lead Novell against Microsoft now as CEO of Caldera fighting MS with Linux and DR/Novell/Open-DOS anec in times of difficulty (catastrophy, war) governments enforce cooperat but as soon as it is over they let competition reign, better keep it down it seen that only in danger will people accept restrictions from cooperat as soon as they are safe they go for comfort and freedom to do anything distribution of programs as source [ct] 2001-20p176 + 2001-21p270 learning from open source source allows corrections, you can't mend bugs in closed software exa dBase IV and XVT crashes due to bugs exa old car radio trafic info decoder bug exa Transys SLIP timeout reset bug, dropping line bug exa Linux POP client kept failing, droped mails once it had downloaded them source is only complete and reliable documentation of what a program does "the source is what the processor uses to know what to do next" use the source Luke, UTSL [Salus] p45, [Raymond] "UTSL" so I RTFSed it [Raymond] "RTFS", it does mail -d that drops mail because /bin/mail in Linux is a link to /usr/bin/mail Linux has no real /bin/mail (with -d), uses deliver for this purpose I therefore used popclient -o, better would be to patch to use deliver anec NeXT man binmail doesn't document /bin/mail -d, despite having it comp are here to serve us, not producers, we must have control over them this requires ability to fix anything broken [Levy] p62 torpedo behaviour anec desire to fix [Dewar] most likely triggered writing of this text anec desire to send correct articles, letters page most people will not mend bugs themselves but source means that those that can mend and need it mended will do it rest will also profit through feedback of the fixes, never see the bug source allows improvements, instead redo, can't expand closed SW [Levy] p126 exa Neuron Data rewrote GUI toolkits for better object model exa Transys SLIP non variable timeout system, but Linux dial-deamon has exa Opel power off closes open windows, but only if both doors closed exa HI-FI sound off with automatic on after 5min propriet SW requires manufacturers designers to anticipate all users needs this would require them to be omniscient, they are not, fail at it for limited domains such as office SW this may perhaps work sufficiently but not for the entire range of computer usages closed SW problem, users want to participate in design [Licklider2] p124 anec Pournelle Vulcan infuriatingly excellent rating and Tate dBase deal free SW allows improving and distributing, someone else improves and so on this leads to iterative improvement of SW, in the end better for all why reinvent the wheel when the existing one can be bettered do it right thing once it is known, spread the knowledge information should be free, so you can make use of it [Levy] p41 free manuals, users better programs and industry gains [Levy] p356 anec Diamond PC graphics cards docu only under NDA, so no Linux drivers frustrated users, bad publicity, now they have given up, give free docu what have they to lose from more SW, from more people using their HW? no one is going to steal anything, drivers are copyable anyway and they are useless without HW which must be bought, gives money now Xircom (LPT LAN) is the favourite firm to be ridiculed for NDA has ensured spreading of the supported D-Link under Linux users source teaches reader how to program, spreads ability distribution by FTP or Web servers, CD-ROM publishers and paper publishers paper books will still survive because reading book is easier than screen get and learn from others, share what you know exa Albin learned how to set a Motif wait cursor from xv source but in traditional industry this is not desired, blunts competitive edge also more comfortable (read on sofa) and portable (bus, train, aircraft) electronic media are for now better for referencing (search function) but this will require paper publishers to accept different structures to take a text from the net and publish it, like CD-ROM publishers do it but market differentiation of publishers will prevent using raw text will require authors to make exclusive work for them this wastes authors time if multiple publishings are desired anec bureau stupids when sending data on floppy customs duty on disk value but when sending letter on paper you don't pay duty on the paper when importing software on tape/floppy duty on media or on licence cost today use internet Web/FTP/email, no atoms, no duty, no bureau stupids also NeXT sale stopped by customs bogosity marketing by word of mouth and recommendation, not by marketing people this will get rid of that bunch of hype-ridden liers, marketing slime [ct] 98-6p410 getting others time beats getting money ecomony exa Unix was in its early days nearly free of effective copyright restrictions allowed users to chose between existing components or new ones, flexible "pick one or roll own", not "love it or leave it" [Scheifler] p7 grew by 100s of authors and 1000s of users, they rubbed off sharp edges is a "virus", is evolutionary superior, is human psychology compatible by this it became robust at handling the real worlds requirements robustness more important than performance, elegance or concise design Unix created to help develop a community of programmers [Hauben] popular "despite" grassrouts distribution [Hauben] "evol_unix" McIllroy "therein lies genius of Unix, enthusiast adopted without sale" has essence of an OS, cumulative progr, not platform for 'solutions' but no coherent design, user must take time to learn what to use or avoid little plan in naming [Garfinkel2] p147 digest noise, [Barry] p221 grunts was actually no plan, every tools designer independantly deviced a name this is the real world, user must learn to live without master plan it is not user friendly as it was not designed for consistency anec Nutshell books "Unix tools can be unruly beasts, we tame them" makes trouble sometimes, due to its evolution [Garfinkel2] p6 but it is still better than the alternatives [Garfinkel2] p9 also than MS-DOS, despite [Garfinkel2] pXXVIII, exa filename, mem, task also than IBM 3090, Hinni needed IPL to restart online processes after online had to be stopped to manually shorten files from editing but a bad progr that works is better than good one on paper or none at all the critics should make something better or shut up [Garfinkel2] p176 complain better sys forgotten, now users only know Unix but most of todays users grew up on micros with what life offered, DOS Unix is lot more then that, why assume that there exists even better those that knew about better systems didn't spread knowledge [Levy] if anyone is at fault then them, incl the authors of [Garfinkel2] I'm bit better off because I knew Commander, Basic micros, interactivity criticism no other industry would sell such faulty product [Garfinkel2] p23 but Unix is not a product, it is a collection of program folklore when let out AT&T said no prod/no advert/no support/no fixes [Salus] p59 first next to no license limits, it spread, first unis, then businesses improvements published, iterative, no lawyer control [Salus] p143 no Unix industry, only a WS industry, they gave out Unix with their HW SunOS was a port of BSD Unix from the VAX using Unix that was widely known in unis, made Suns and Unixes success Unix did not become pervasive because techni ability, but easy to get lately marketing has tried to present Unix as if it were a product tried to position it as business software, result adopted business behav part of business behaviour unbundling, first C compiler, then more anec AIX even man pages are a "cost option" for £310 [PCW] 96-2p302 for this they substitute development in comitee this constantly violates the traditional Unix development style result oversized, bloated, complicated [Salus] p211 exa Solaris bloated by trying to merge BSD, System V, many extensions has become administ nightmare, "Sun, no Fun, and nothing gets done" or even OS/390 and NT certified as XPG4 Unix 95 [iX] 96-12p3 X/open introduced XPG4 as a brand name to "help" user buying but Unix only really open if source available, public development essence better finance universities, like the ARPA did with Berkeley universities then share results with everyone else [Salus] p200 but that would not be usable for marketing [Raymond] "FUD wars" exa GNU from MIT-AI/LMI/Symbolics fight over Lisp Machines [Levy] p419 [iX] 93-7p162 state of GNU in 1993, [iX] 95-9p108 GNU, Linux beat commercia [iX] 96-4p102 PD software better than commercial designed by hackers, but as soon as in business they betrayed their roots behaved like bureau, business behaviour lead to shism [Levy] p424 Symbolics declared its OS propriety instead of sharing it with LMI lost the free flow of information, wiped out the AI lab culture the 2 firms wasted time reinventing, instead of adding [Levy] p426 lead later to failure of both firms [Garfinkel2] pXXIII anec in this situation the Jargon File 1.x was frozen for first edition of Hackers Dictionary book [Raymond] pXIV GLS, [Raymond] p6 foreword RMS, still at MIT, reverse engineered Symbolics for LMI [Levy] p427 lead to foundation of FSF and GNU to do the right thing [ct] 92-3p62 GNU project to build an OS free of restrictions, Unix as only poss base name GNU stands for GNU's Not Unix! (has no Unix license) [Raymond] "GNU" is a continuation of the Emacs commune, of the TECO days [Levy] p416 was aimed to eventually produce an entire Unix-like OS called Hurd [Uo] 96-1p108 but with Linux Stallman has declared the target of GNU achieved [iX] 94-12p152 Stallman interview, is Linux GNU? anec better name XINU for Xinu Is Not Unix, would be UNIX reversed but already use by Mt Xinu (Unix TM reversed) since 1983 [Salus] p209 and also Xinu OS, used as basis for TCP/IP implementat in [Comer2] GNUs Emacs "editor" is actualy a Lisp Machine for Unix [Raymond] "EMACS" is a full Lisp system called M-Lisp, [Lampson] p296 for name Emacs supports edit(dired/mail/news/development/... [iX] 96-3p188 exa Linux [Byte] 92-11p24 letter mentioning Linux, with X but without TCP/IP [Byte] 94-9p167 Linux test, 95-12p207 FreeBSD [Byte] 96-2p123 Linux matters, [Byte] 97-1p49 state of Linux [ct] 95-8p206 Linux 3rd generation, [ct] 95-10p294 Linux/68k [ct] 96-5p128 Linux/SMP, [ct] 96-7p54 Linux/Mac, [ct] 96-9p64 Linux/Alpha [ct] 96-11p366 free Unixes Linux vs BSD (Free, Net, Open) vs GNU [ct] 97-4p368 a look at modern BSD, Unix history, [ct] 97-5p308 business L [ct] 97-7p236 Mac MkLinux, [ct] 97-8p276 kde, [ct] 97-9p115 GIMP [ct] 98-3p156 Linux developments, [ct] 98-7p132 state of Linux [ct] 98-9p146 Linux for beginners, [ct] 98-10p166 Linux Windows emulators [ct] 98-12p230 LAMP Linux Apache Mysql PHP, [ct] 98-15p67 FreeBSD [ct] 98-19p176 distributions, [ct] 99-4p87 Trinux [ct] 99-5p252 Linux as AppleTalk server with netatalk-asun [ct] 99-6p184 Linux making trouble to WinNT [ct] 2001-14p214 Linus Book first 3 Chapters [iX] 93-7p86 SCO 2.0 vs Linux 0.99pl9, [iX] 93-7p158 Linux net only WD80X3 [iX] 93-10p6 reades 6% office, 29% home use, [iX] 93-10p152 SCSI drivers [iX] 93-12p128 Linus Interview, [iX] 93-12p170 Linux /proc [iX] 94-4p82 Linux 1.0, history, [iX] 94-4p180 XFree 2.0 [iX] 94-7p158 Linux NCR53C800, [iX] 95-4p60 FreeBSD, [iX] 95-7p34 state [iX] 95-8p46 ELF binary format, [iX] 95-12p168 VoxWare and PCSP sound [iX] 96-2p92 Linux ports, [iX] 96-5p110 NetBSD, [iX] 96-6p68 commercial L [iX] 96-6p138 RedHat Alpha MILO, [iX] 96-7p68 MkLinux, [iX] 96-8p86 POSIX L [iX] 96-9p92 StarOffice porting problems, [iX] 96-10p144 LyX WYSIWYG TeX [iX] 09-12p70 GIMP pixel editor, [ix] 96-12p142 isdn4linux [PCW] 92-6p430 DIY Unix Linux 0.95 [PCW] 95-6p347 last chance for Unix on desktop systems [PCW] 95-7p530, [PCW] 96-5p200 revolution explained [Uo] 94-9p14 Linux people, [Uo] 94-9p96 SLS 1.0.4 install experience [Uo] 95-2p60 Kernal Korner, [Uo] 95-3p bdev drivers [Uo] 95-4p48 interrupts, [Uo] 95-5p50 driver optimising [Uo] 95-6p70 ELF, shared libs, [Uo] 95-7p61 ELF [Uo] 95-8p54 memory alloc, [Uo] 95-9p50 new kernal calls [Uo] 95-10p52 Paradis Alpha port, [Uo] 95-11p68 Paradis 2nd part [Uo] 95-12p72 Alpha Blade distribution, [Uo] 96-1p76 Alpha MILO [Uo] 96-2p71 keyboard driver, [Uo] 96-3p53 loadable drivers [Uo] 96-4p70 driver central routines, [Uo] 96-5p58 driver waiting [Uo] 96-6p60 kernal DMA, [Uo] 96-7p44 mmap() internals [Uo] 96-8p95 Linux SMP, [Uo] 96-10p106 StarOffice [Uo] 96-10p110 Linux 2.0, [Uo] 96-11p74 Star portabilit, [Uo] 96-12p92 GIMP is a Unix clone for PCs running under the GNU GPL/copyleft license is based mainly on GNU stuff, therefore better than normal Unix stuff many file systems and net protocols, shells, tools, Xfree is what todays hackers want, made from their own time for themselves is the best OS for hackers since demise of ITS and the Lisp Machines PCclone + Linux + XFree + GNUtools + Emacs = Unix WS and Lisp Machine anec with Linux RMS has declared the aim of the GNU project as fullfilled Slackware distribution enormously good install and deinstall program anec is implemented as a /bin/sh shell script with dialog box tools is enormously stabile, few crashes, in my case 1 install, mult S3, 2 SCSI also NeXT only 5 or 6 from first Quantum HD firmware bug this is in normal production use, of course crashme has worse effect has already destroyed some cheap Unixes, exa Minix, Coherent anec Linux grew out of Minix, because Tanenbaum was against 386 version and is already showing effects on expensive ones exa NetNews SCO install trouble, bank comment on NeXTstep at LUGS also potential to pick up some of OS/2 fallout if/when it fails but momentally no chance to grab normal office users from Windows this would require easy config via forms, like Windows control.exe modify traditional Unix scripts with a sys derived from Slackware many think that in few years there will only be Microsoft and FSF/GNU anec Gartner Group claims "end of Unix", but no mentioning L [iX] 96-9p40 anec Albin in Motif training Suns as X terminals on to a Linux notebook anec Linux 486 has beaten Sparc+Solaris on NFS and RS/6000 on Maple anec IDL on Pentium-90 65% faster than SparcStation 20 [Flugs] 95-5p9 IDL on 486-33 with 12MB better than Sun IPX with 32MB anec claim major of NetNews servers Linux because >64k Inodes in filesys still problem of trust ("that cheap, it can't be good"), doubt security but because source available has the best worst-case scenario of all OSes no chance of vendor lock-in, allways possible to fix it yourself anec escrow contracts for custom programs, not for OSes, here source you can check source for back doors, have policy of only self compiled high secur sys require code audit [Garfinkel2] p245, is poss with Linux anec according to Lubich the Bank Julius Baer uses Linux for firewall real question is can you afford to have less security than with free SW Thinking Methods the most important tool a programmer has is not software, but his brain programming is a mental process, to improve it improve your thinking improve your understanding of the brains requirements, how it works improving this has more influence on work ability than all other effects so attempts at formalising these, but these usualy are miserably described lack info to see hof they were arrived at, buildup of discovery only show the conclusions in abstract from, awfull to read and adapt [ct] 2001-23p86 TRIS following methods of thinking have proven usefull, influence hackers thinking all of these contain important points, but only together are they complete children playing is discovering, learning, enjoy fun playing lays base for knowledge, can lead later to usefull stuff having fun animates to further playing, to learning more essence of hacking is the experience that discovering/learning is valuable the "I can get something to happen" mentality leads to desire for more learning, lots of knowledge hackers love to experiment, to make things happen, to understand them result childish discovery instinct not getting destroyed when growing up approach the world with open eyes, watch what happens [Zopfi] p91 hackers retain some childish behaviour, curiosity, openmindedness unlike most grown ups who lose this ability by focusing on safe gain a hacker is a person who instead of using technology for percieved ends plays with it because doing so is reward/fun in itsself profit is only indirectly the motivation, but is acknowledged don't hide behind preconcieved rules and formulas like adults [Zopfi] p91 don't ask "what's this good for" but "what can I discover here" don't become victim of limit of only being able to learn what is regarded as usefull in light of your previous knowledge anec toy so clever construct even adult can put together [Norman1] p83 once this is stimulated hackers only need the right environment exa MIT AI lab, SAIL [Levy] p144 less intense, Homebrew exa Kanti [Franklin1] with Columbia Commander, Technorama, user groups anec Kanti computer room was a small size replica of AI Lab in Switz in 81 you still needed interest in techn to get into computing public image was still that of big brother, also anti-techno environ quest for knowledge means more than degree [Levy] p20 or grades [Levy] p35 classes in proper relatio [Levy] p73, chess progr over degree [Levy] p89 but GLS didn't let studies suffer unlike many others [Raymond] pIX anec I was thrown out of Kanti for too much hacking, 10% in math stay anec class colleague nearly thrown from TWI because of hacking unlimited access to computers, information, knowledge [Levy] p40 access machine at any price [Raymond] pX free reign, kicked, back again anec stayed on at Kanti on afternoons, Saturdays, later in Technorama anec at SR told off for using CAD computer, later reference guru outside world irrelevant, state of Williams office [Levy] p360 hacking can change your life for the better [Levy] p45, [Levy] p305 because of learning that you can control it feeling of power, getting something to work [Levy] p33 the computer is available at any time to do anything [Levy] p67 people manipulate comp, realise they can make things happen [Levy] p337 hackers control only for exploration, not for exploitation [Levy] p51 Univ of Altair, degree soldering, digital logic, improvising [Levy] p196 teach yourself, figure out how to do it, hack [Salus] p77 but public buying finished systems has no hacking effect [Levy] p303 though also Tommervik [Levy] p309, but she at least enquired how it works Williams getting sucked in [Levy] p289 Sullivan real programming [Levy] p291 vs card walloping hackers were often loners with techn interest [Levy] p83, [PCW] hackers socio TMRC mindset [Levy] p23, technical interest from child up [Levy] p158 bad at relating to others [Levy] p83, [Raymond] Weaknesses of Personality social handicap is perhaps needed to concentrate full [Levy] p138 not used to audience larger than a table full of electr parts [Levy] p215 Ken Williams no macho [Levy] p285 Sullivan not good at relationships [Levy] p291 Harris social outcast [Levy] p313, nerd [Levy] p321 Duchaineau [Levy] p375 loner, little patience with bores RMS [Levy] p416 GLS nerd, hackers don't need to be nerds, but it helps [Raymond] pXI but not hard harted and feelingless, as the stereotype claims see [Levy] p138 and also the importance of fun in hacking I certainly am, first born, no neighbours, move to foreign lang country didn't understand language, children at shool behav, intimidated easily at work I often disliked something, only after a break I found reasons hackers value fun at work, know that it stimulates them, gives better results [Abelson] intro fun, [Clark] p399 work for fun, key to success, [Levy] p402 [Feynman2] p173 science out of playfullness, for fun of it [Plauger2] p129, [Raymond] "programming (3)" is biggest fun [Raymond] pXII hack done mostly for fun, own sake, pure joy, [Salus] p142 [Byte] 92-10p348 PC greatest adult toy, programming for the fun of it satisfaction (includes fun) is part of a hackers aim in life hackers often chose their job on the fun to be expected more than money or status to be got [Raymond] personality charact not financial reward or promotion [JamesG] p95 money only needed for getting food/clothes/home/computer [Stallman] money is not important [PCW] 93-10p246 Dima interview but hackers have need for income, like all other workers this is a problem, because it stops them doing maximal fun stuff playing also expands hackers knowledge which benefits the customer work Japanese understand, anec Mazda "do what you would like" minimal car job not just get money, not just 9 to 5, has meaning, emotional bound not work because necessary for money and cram fun in afterwards leads to splitting of resources, reduces both work and fun, bad fun of getting a hack to work is the main reward most programmers work for satisfaction, esp good ones, exa AI lab need to be interested in a job to keep up doing it exa Kompal was repetitiva job from PlasmaDat, no new experience only change was reimplementat in C, optimisation, XVT failed that lack of interest in job, only working forcedly for income leads to doing minimal needed, main reason for customer = disturbance with resulting customer disapointment, going away, firm collapse many managment courses say that fun of workers at work is important conciously they accept it, but back at home it is immediately ignored I assume their subconcious panics from deadlines and budgets panic is overpowering instinctive reaction that stops rationality bureau deride fun as "happy engineering", call it a waste of time "we bought the time from you, you must deliver work for it" mentality "your not allowed to spend our time on having fun" in the name of cost cutting bureau do fun cutting, demotivating, big loss exa IT 16.00 parties, workers came because 1 hour from firm, exchange managment "efficiency" pressure against it, stopped, no exchange instead official exchange meetings, cost more, less spontanity, lossed when managment critisized answer "meet after work", point not seen but at the same time they do "happy bureaucracy" they organise the firm for their convenience and prestige make life awkward by prefering prestige projects to sensible stuff waste everyones time to fullfill largely symbolic actions [Levy] get in everyones way without bringing any benefit to the customers jobs cost more to get done (bureaus salary and others time increase) anec marketing "professionalism" costs more [Levy] p363, should less fall in the trap of beauty of organisational structures this is like trap of beauty of maths [BrownP] organising should not be done just for its own sake, only for benefits bureau should serve workers, the same as workers should serve cust exa TWI over 10 years for Fachhochschule title (and slight "meaning") chang in text introducing change remark that "technology not for itsself" exa IT QS stuff came from drive to ISO 9000 "quality" system [Byte] 97-4p40IS15 ISO 9000 for software quality, [iX] 94-4p160 [iX] 94-11p162 V Modell, [iX] 96-6p88 V Modell, [iX] 96-9p140 V with obj is actually only process tracability system, nothing about quality at all results in a general work-by-the-book mentality, more droids anec Albin HP manuals, 1h on phone, 10 times ISO question list then in end connected to Elbatex, no ISO, fast solved this is supposed to increase quality, customer satisfaction only bureaus claim it to make quality, shows how they live in dreams anec Albin rule that no rule applies is sufficient for certificate but then you must make sure noone goes near it with measure equipment anec doctor "is only documentation for bureau", not improving service does not measure and assure quality, just make transparent for bureau allows them to cut costs, no regard for desires of patients (=qual) if not a fundamental reorganisation of firm it is just a PR exercise SQS "most firms are clearly ready to think over internal structures" transl: manag want play reorganisat, but does the actual work change for worker it means risen bureaucratic hindering, droped fun and moral enormous amount of paper pushing instead of using common sense is bureau reducing working efficiency at time workers must increase it for customer no change in service, just than risen costs no guaranty for better work, just more paper, cust doesn't get that actually quality may drop from workers having less time and motivation forces contractors to also do it, have added costs or lose orders we have seen chain letters, computer viruses, this first bureau virus all in all it is simply a great bureau white elephant, happy bureau anec Albin here at PSI we have 2 acceleators, particles and paper is also great income source for managment consultants, such as SQS anec Heinz first great fan of quality, then later "means nothing" more general [iX] 94-2p3 lean missmanagment real workers work for what motivates them either personal achievement, fun in getting something done, usually good or because they need the money, usually the minimum, 9 to 5 workers bureau that believe in intelligent workers being motivated just because the firm is styled as a demigod by PR are daydreaming bureau may be dull people with no desires for fun, only job [Levy] p391 "follow the rules" and bean counter mentality [Raymond] "droid" closed minds resulting in no progress, exa [Feynman2] p28 bean cutting but unlike bureau, hackers are not robots preventing hackers from doing a good job stops their satisfaction also applies to all other workers in a firm not just with hackers but with most workers, fun makes work better exa Seatle FAA office +7% work got done [Norman1] p152 at same time critisized for "lack of formal strictness" anec Ernst fun at work is an essential human need it is the bureau desire for robots that lies behind much automation bad managment gives burn out, resignation [JamesG] p93 effect of managment ignoring workers, demoralisation [Feynman3] p126 leads after a while to hackers desire to leave the firm in frustration but see that others have the same problems, all firms, no better why botter changing to an other firm, no hope for improvement result is resignation, in German nice term for it, "innere Kuendigung" exa Harris problem with Williams, silent defection [Levy] p403 result Sierra lost star hacker, manag couldn't care, but others noticed after decision to defect he told him the reasons, what was bad in firm same when I left IT, first decision, then talked about it with others exa me, I have seen above where I worked, got frustrated, depressed after 6 months "how long do I have money to search for job after leave" the answer to that was 3..4 years, so "why am I wasting my time here" the answer to that was I left work and started writing this text result IT also lost me as hacker, left a hole difficult to fill exa Ernst looking for new job, will create chaos, 3 replacements only reason he stays is that he can't find a new job with same payment and many others of my colleagues, more than half losing many designers loses experience, knowledge, has destroyed firms exa Atari towel designers, Zilog Z8000 not finished, Commodore Tramiel anec I allways felt that wasting future for short term profit is stupid but bureau are so stupid that they waste future without any gain also customers following todays "customer is king" mentality forget that kings are also dictators, take no interest in subordinates also forget that workers need fun to be motivated, also gives frustration artists [Byte] 83-10p94 programming as art, criteria, organisation artist is a physically grown up who has kept childs creativity difference between normal people and geniuses is that the later keep on learning all their life, conciously do so, as result know a lot uncreative people have learned to avoid creativity, by being hurt for it most of society regards creativity as a threat to established order creativity is a reaction of the unconcious brain to extern or intern stimuli result of interaction between experiences, the mediums possibilities and the challege of getting to the desired result [Ross2] p112 even artists dont create ex nihilo, just use warped filters creativity doesn't run straight to desired end, raw creativity uncontrolled exa ideas appearing in a conversation and altering its direction rational sieving of output gives refined creativity leads to iterative use of raw creativity alternating with sieving unfocused free running inspiration, meditation vs focused concentrated sieveing, thinking while writing this text many times asked how many chapters I have done questioner missunderstands creat, I drew up frame, the add everywhere I am continuously improving on all chapters, not writ one at a time to increase creativity you must collect more raw ideas wait for opportunities, collect ideas when they fall don't lose ideas when they come, write them down anec I allways have a palmtop laying against bed, for catching ideas ca 15..20% of this text have been concieved while in bed collect details, cross relate them, gradually build up a knowledge store human memory is bad at storing arbitrary things [Norman1] p68 but hacker can absorb lots of potententially usefull "meaningless" detail because they understand intimately the basic structure of computing can interrelate all the details to known stuff, make it non arbitrary to give the unconcious brain this ability know how to use the unconcious brain, what can be done with it but also just as important limits, what it can't do experience leads to intuitive understanding and new ideas experience counts a lot, isn't easily gained, but rapidly lost necessity of hands on experience [Levy] p68, important to not speculate programmer reality vs the others dreams [IEEEsoftware] 94-5 p90 exa machine vision AI students speculated vs hacker did it [Levy] p109 exa Resource One intellectuals vs Felsenstein hands on [Levy] p165 exa Albrecht remedial Fortran for those from IBM course [Levy] p168 anec Beat "IBM training gave network recipy, I dug in, now I understand" anec ETH knows why his bridge just collapsed, HTL no clue why standing "we sell to a market" instead of "we sell technologic knowledge" mentality destroys usefullness of existing experience, therefore strongly disliked there is art and beauty inside computers [Levy] p43, hackers are artists not just in output of music program, but any programs code is like music computer is a infinitely flexible artistic medium [Levy] p116 hackers artistic programming style [Levy] p322 Harris replacement beauty is the absence of disfiguring features, contradictions hack programming style based on aesthetic of code, instinct right/wrong programs are works of art, programmers are artists they are important, treat them as stars [Levy] p366, [Levy] p385 Hollywood has learned to live with actor/regie stars Trip Hawkins "EO is structured like Hollywood" [Byte] 83-10p94 Roberta Williams also wanted to promote them [Levy] p370 but Sutherland doesn't like "his" programmers being software stars Hollywood is going in this direction, no roles for real actors creativity requires special type of person, driven out same music industry, only optimises profit from safe winners innovation outside ind, every so often a new style revolutionises real art is done for arts sake, for achieving intellectual satisfaction exa YSL artist should make beautyfull stuff, not whats fashionable for sale also an artist should work when inspired, when creativity is here not for the next show termin, sales opportunity, pull back from world vs modern artist who says if you don't lauch a trend, nothing on art market only success at selling self is regarded as good art, but os faillure same hackers often hack "just" for hackings sake, not for the usefullness if it turns out to be usefull all the better, but not do it because use mystics [Hofstadter], [JamesG], [Raymond] "has the X nature" [Raymond] "the X that can be Y is not the true X" programmers must know where the bits are, predict their effect [Levy] p37 correctness is vital in programming, else you drown in bugs teaches advantages of orderliness, effect on thinking [Levy] p38 attain full understanding of life and self by concentration read, reread, meditate on themes for insight, reread for freshening up hacking pure concentration [Levy] p37 is Zen-like [Hofstadter] Zen, [Raymond] "hack mode", [Raymond] "zen" but also load brain with information [Raymond] "grok" masters beyond designing, use subconcious [JamesG] p25 masters don't need superficial structure, understand program [JamesG] p39 when in hack mode do not interrupt because of state loss wait for state to be swapped out, else annoyed [Raymond] "swap (2)" this state is the contents of short term memory [Norman1] p66 anec background music doesn't disturb hack mode, no state loss this must be because of 2 separate processors (right and left brain) it actually helps [Levy] p283 stereo, [Raymond] "troglodyte mode" perhaps because it stops one brain half from interfering with other but perhaps simply because it helps relaxing, by concentrating on it helps unjamming brain, this would make it form of active recuperate night working comes from desire for uninterrupted concentration life style, habits, work time [Levy] p29 time phase, wrap wround, problems [Levy] p74 leads to 28 h, 6 day week [Levy] p101 work time noon to the wee hours [JamesG] p99 later came user group evenings, today evening/night get to work hacker wrote game between midnight and 8 [Levy] p283 Andreessen appears at work after 8.30, pm that is [Gilder] CCW members gamed through night at computer weekend I wrote this text largly (90..95%) between 3 pm and 3 am hacking leads to philosophical questions [Levy] p111 leads to brain hacking, part of applying hacking to life Gosper "the world consists of little pieces with independant state, which communicate with each other" [Levy] p118 blattisms, reflections on the nature of thought [Levy] p70 beauty of programming is internal, taoistic [Levy] p394 hackers apply their experience in programming to daily behavour [Levy] p61 bumming mental work, reuse existing design experience [Levy] p101 Nelson Felsenstein debugging meeting structure [Levy] p215 Thomson problem solving lead to synthesizing jock speak [Levy] p396 in the same vein hackers are also learning to synthesize suitspeak anec this makes bureau believe hackers are becoming more businessy Heubi "I think we are victims of a non terminating search algorithm" actually it was a slowly converging alg with an ineffient implementation me to Bernhard back from holiday "now you know how a disk controller feels" not being able to retrieve information from brain is a indexing error switching between different tasks with intention to return felt as stacking forgetting to return properly is regarded as having a stack overflow change the position of a thing that others know is a coherency problem if you move a thing to a new place coherent a update must be done check if reciever heared you say something, sender is responsible like TCP, retransmit after delay until positive acknowledgement washing basket, stuff-to-wash request entered, batch washed, no free laying artisans/craftsmen [Byte] 96-1p218 the real software crisis, not enough good programmers are born as it, just like good musicians are artists who produce things for use, not only for creating [Hauben] "arte" programming like most technical work is based on personal excellence try/learn/improve, evolutionary improvement of craft [Norman1] p142 has lots of experience, results in instinctive feeling what is right Tague Unix developers with Multics experience, better than first timers no matter how smart the first timer is [Hauben] "evol_unix" programming is an art form, it requires the craft of the programmer good programmers treat the art of programming as a whole [JamesG] pXI hackers take pride in their craftsmanship, exa Fredkin [Levy] p100 but academics against regarding programming as art/craft [JamesG] pXII by the rules mentality vs mastering programming [JamesG] p59 quality is to aim for satisfaction, flawlessness, opposite of minimalism "right thing" from experience with cost and frustrat of using bad things do it right the first time to avoid such bad experiences also "if you can't do it right don't bother doing it", bad is no use importance of recogniz "right thing" crucial for being hacker [Levy] p118 perfection is the absence of [Raymond] "wart" and [Raymond] "crock" hackers know that warts will, given enough time, come back and bite them Antoine de Saint-Exupery on engineering elegance [Raymond] "elegant" "perfection is not when nothing left to add, but nothing to take away" anec my zero component machine, colleagues surprised at this notation meaning of the word hack is a clever solution to a problem executed with minimal fuss, understanding essence of bumming is crutial bumming (min effort for good solution) vs saving (min cost solution) originally job done for pleasure of doing it, not for result [Levy] p23 exa music program [Levy] p34, games [Levy] p57, Widman games disk but beware of not knowing when to stop [Raymond] "Mars" anec when I read [Norman1] at work, boss liked my interest in make better for me it was simply that I hate bad stuff and its designers I want my stuff to be good, this is a question of self respect good work requires good tools hackers hate things that stop then getting the job done, and in proper way finging the right detail/tool/method counts, this requires wide knowledge result of not being able to have right thing Gosper no navy [Levy] p86 strong desire for good tools, the right thing, not any old cruft as near to perfect as possble [Levy] p54 inefficient, suboptimal ways are offensive [Levy] p315 this is also the base of fights over best tools [Levy] p77, [Raymond] "holy wars", [Raymond] pers charact weaknesses [PCW] 93-5p223 word processors inspire devotion if tool A has a weakness and tool B fixes it but has an other problem then only a tool C without either of these problems will resolve it if no tool C is possible then the war goes on, often endless but tools for making tools frustration vs NASA moon shots [Levy] p150 but NASA Apollo project also hackers, help each other [Feynman3] p159 hackers are intollerant of bad tools, of the "just good enough" mentality bureau claim more feature counterproductive, customer won't see [Levy] p351 bureau "counterproductive" means it costs producer more than brings them but that is not bad for the customer, when features are desirable customer "counterproductive" means getting in the way when using it adding the proper features comes from desire for better usability customers see this also, exa Softalk Apple Frogger critic [Levy] p388 users feel quality, notice that designer did more than minimum "as good as neccessary" mentality strongly disliked because frustrating allways leads early or later to problems, programmers get into trouble as good as neccess to save cost like eating seed-corn to still hunger is interesting for shortsighted bureaus, not for responsible hackers "mediocracy is profitable", "customers expect it" [Garfinkel2] p176 but customer expect it comes only from resignation, not from desire "the right thing" vs "rise of worse is better" [Garfinkel2] p311 the ultimate case is the decimal number system it had the roman military as its carrier, beat superior 12er sys but clock/calender/angles 12er, french revolution all decimal fail often more expensive is not better, just less efficie made or more profit so customers buy the cheapest stuff, no market for more expens better result of this is that only the "just good enough" stuff survives problem detecting more expensive right thing vs higher priced rip off ask others what product is good, learn from other users experience but this runs counter the business competition-is-enemy thinking bureau utter phrases like "in pursuit of excellence" [Levy] p384 but they don't live up to them, compromise as soon as fast profit to make their pursuit consists of hunting and killing excellence anec Sulzer quality dept Georg Sulzer "do it right the first time" poster when "quality system" introduced "do right" posters were pulled back replaced with "only as good as neccessary" ones price was also claimed in QS to be part of quality but it isn't, it is a second variable to make compromise between premature optimisation is just as damaging here as in programming scientists is a person who searches for understanding of the physical world aimes to find truth, way it really works, to understand it good research results from knowing what is going on [Feynman2] p62 Newton and Gauss were hackers [Levy] p147, Feynman and Da Vinci were also nature is a puzzle to solve, by thinking, exa fixing radios [Feynman2] p21 science is discovery, a creative form of playing [Raymond] "sandbox" scientists are physically adults who have retained part of child in them strive for knowledge as capitalists for money anec a idiot is someone who looking up a word in a dictionary and doesn't also wander through other words for expanding mind [PCW] a bigger idiot is someone who doesn't even bother to open a dictionary at shool "the only stupid question is the one not asked" scientists uses deterministic models, but acknoledge chaotic effects truth only absence of known disagreeing facts, never absolute [Hofstadter] it is not possible to prove correctness of a model, only incorrectness knows that models are only approximations of nature doesn't fixate on one model, because programming is complex requires many interwoven models the more experiments, the more wrong theories are found out try out behaviour up to most extreme cases possible exa astronomy/kosmology at allways larger distance exa particle physics at allways higher energies critics of costs should remember that these theories are used for eng compare also with building of cathedrals in middle age hackers aim at understanding computers to the same extent, with same method programs are like theories, bugy or bad ones like wrong theories working together to this aim requires ability to trust each other hackers value honnesty and truth, hate deception and lies hacker ethics [Levy] 2nd chapter, [Raymond] "hacker ethic, the" RMS behaviour towards others compromising hacker ethic [Levy] p423 reputation, recomendation, contracts vs trust [Levy] p401 Japanese do this so, is reason for them mistrusting American brashness similarity of Japanese and hackers comes from common Zen and Tao zen makes hacker Japan compat, misstrust buero, go on reputat, not blabla Japan success is like hacker success, from reputation, needing reality general hackish view of the state of American business [Levy] p311 bureau regard symbols and appearances as more important than reality exa terminal not allowed, typewriter+TV are [Raymond] p471 TV typewriter exa use of notebook computer in aircraft is not allowed, but palmtop is exa "but you are dead" to person standing in front because comp says so exa forced use of "office uniform" (suits) [Raymond] "suit (1)" exa [Gilder] Andreessen must learn to dress up to impress bankers because else no investment, bankers too stupid to use other arguments even though everyone else knows that hackers don't wear suits lead to using term suit for bureau [Raymond] "suit (2)" despite suit being the preferd term for bureau with US hackers I am using bureau here because the term suit is unused in Europe this is because bureau (and even lower manag) don't wear suits here also bureau is indepedant of the english language, also works in german anec Swiss joke "what is the difference between a cows tail and a tie?" "the cows tail covers the entire asshole!" exa commission report colour more important than contents [Feynman3] p144 visuals count more than content, time waste on layout [Raymond] "macdink" exa father hand graph convert to comp incr accept [Raymond] "GIGO (2)" great sounding words instead of speech content [Raymond] "content-free" exa usage of words such as vision or concept, nothing in them, bla bla what they call an application is what hackers call a program actually what they want as app is something fairly limited, a dbapp what they call "legacy" applicat is a dusty deck [Raymond] "dusty deck" or a crawling horror [Raymond] "crawling horror" what they at IT called a QS was simply a production tracability system great sounding titles to make themselves sound important exa grandious job titles, make themselves appear great [Barry] p93 exa film "producer" vs in music industry producer is the real thing exa HP small computer group did not want Wozniak, no degree [Levy] p254 Wozniac not accepted in Capricorn 8 bit calc project [Byte] 84-12pA69 Capricorn after HP saying that it has no interest in home computers one should judge people by what they do, not by their labels [Levy] p43 is a principle in every constitution [Lundell], but not in practise worshiping of numbers, the bigger the better exa NSA proud of acres of computer [Garfinkel3] vs hackers see details, proud of computer per cubic metre [ct] only positive words are allowed, leads to "positive thinking" exa salted potato crisps light (not weak) vs strong (not heavy) it becomes impossible to speak or even think about bad things things that can not be thought of disappear, cease to be detectable anec loss of contact with reality killed off Commodore anec MIPS managers thought ACE would make them the Intel of the 90s they ignore data that doesn't fit the picture, try to suppress it [ct] 99-4p16 BG myopia as they don't know as much as those involved with the issues at hand this leads to decisions based on false or incomplete information lack the distributed knowledge of the locals, but act as if they did don't underst, but push as if they did [Byte] 85-9p208 Felsenstein [Toffler] p138 hierarchical communcation up/cross/down is not only slow but also incomplete, imprecise or missing this is show case of left hand not knowing what the right is doing bureau behave as if they know everything, as if they were omniscient not prepared to accept they are not and ask knowlegable for help exa Leffler at Case Western had Harris HW pushed on him [Salus] p168 have built up their plans, don't want them to be foiled by reality feel hurt when ripped out of their dreams, react angry those trying to correct errors regarded as attackers, danger to peace those dependant on them feel threatend by this, don't want to intruse to prevent this locals muss missinform bureau of their real actions result that bureau are even wronger, repeat errors, failure to protect themselves the underlings stop trying, no information flow result is reality loss of the bureau [Raymond] "SNAFU principle" crazyness comes from SNAFU, surviving infighting counts, not properness resulting bad mess is disliked by hackers, they dispise its makers perhaps we should call them bureaucrazy anec Minsky AI lab place away from bureau lunacy of th world [Levy] p68 exa when I left firm, I made essay on reasons, boss put it in folder that QS manager heard it was accident, because also boss of personnel exa BT multiple email systems failed, because no user feedback managers don't use or install it, don't see badness [PCW] 93-11p239 exa NASA shuttle reliability estimates falsified [Feynman3] p134 didn't want to know data showing contradicting reality pushed away those knowing it, destroyed communication result they exagerated its possibilities [Feynman3] p159 exa commission trying to manipulate report to look nice [Feynman3] p148 if not stopped by Feynman this would have prevented bureau seeing exa KAL007 shooting because INS setup error and return job loss threat anec [Feynman3] p66 nobody has found the cause of government stupidity but it has been found, the SNAFU effect of bureau interaction it is not the ablility to missuse power that corrupts minds but the bureau mentality, leading to life in a world of fantasy anec Bill Clinton "it was bureau snafu" without understanding meaning anec ants after 2e8 years use local intelligence and pheromones and that despite not being individualists like humans are which complicates demands on organisations to fit individual needs as result they are often ignorant even of basic truths they often don't know what and who the firms success is based on destroy it without noticing, like sawing off branch one is sitting on exa Atari programmers labeled towel designers by ex-textile manager left the firm [Levy] p325, lead to collapse [Levy] p310, [Levy] p400 crucial diff of importance of towel design vs game design not noticed anec the Atari downfall even made it into a book titled "Game Over" exa Commodore palast coup against Tramiel no leader, disorganised, customers fled, firm ended in bancrupcy Commodore bought in Amiga, failled because developers with Tramiel Amiga persecution theory [Garfinkel2] p141 wrong, victim of bureau [Byte] 90-9p277 Jay Miner on IBM competitior vs game machine anec bureau blaim failure on cust [Byte] 96-2p127, but are wrong anec Commodore Switzerland mess up prevented me buying an Amiga Tramiel after leaving Commodore had designers, product, managers but no distribution, bought Atari corpse, rumor only 1 mio dollar immediately scuttled old managment and outdated product range anec Atari ST by same designer as Com C64, went with Tramiel to Atari same style (keyboard computer), same cheap and success vs Amiga graphic chips from Jay Miner who made Atari 800 and left anec Amiga graphic chips were intended for Mindset, PC "clone" anec Amiga orphaned when Commodore died, later Escom, also died exa Apple bureau lost game [Levy] p299, Sierra repeated it [Levy] p400 Sierra too swept up in managment battles, lost game [Levy] p389 exa Ernst Slicer first innovative, then in 3 years bureau fossilised often bureau don't know at all what is important, success criteria exa science book picture of drum with formula on top of it point object vs formula missed, only drum printed [Feynman2] p318 exa XVT mail answer 6 weeks later w wrong machine type, total useless bureau processes flawed, exa book rating averaging bungle [Feynman2] p294 the rules need to be followed, whether result is usefull or irrelevant naive belief in wisdom and functioning of the system [Raymond] "droid" anec QS manager "aber darueber gibt es eine Vorschrift" anec bureau-driven bungle leading to VMS becoming OpenVMS government wanted open sys, GOSIP, demands Posix, VMS was not sellable other vendor taken, big intervention, DEC lost, but other vendor also is a typical case of the lunacy that bureau behaviour produces anec [Byte] 89-9p404 pachyderm pers predic, hack parody of bureau method anec [PCW] Soppyware skit on bureau power fights and marketing because they think they are omniscient, they don't attempt to better no experimental attempt to understand and to find better/best they don't learn, exa 25 year AT&T lawyers vs users [Salus] p224 no attitude self improving, no learning from errors/critics after that they are surprised that techies don't respect them but life takes place in reality, not on paper, things must work there exist 2 ways to attempt to live, learn how reality works or daydream what the world seems to be vs what it is [Feynman2] p28 bureau only acknowledge failure after massive intervention of those hurt then they grip nearest alternative that looks "right" and push on selling forces bureau to behave as if they were omniscient marketing slime and salescritters are worst advertising incomplete information, only good, not bad [Feynman2] p341 marketing/PR sends premade "test reports" to magazines [PCW] 93-5p604, [PCW] 94-9p593 anec test reprints with prospects, including 2 mags with same text magazine pseudo test laboratory with christmas tree light "FDDI LAN" describe stuff in hyped up desceptive adspeak [Raymond] "marketroid" distrust products with content free ads, often those products are bad the resources spent on making great adverts are not in the product exa Cause 4GL, great sounding ad, no content, no trust, later failure anec I thought hype is short for hypocricy, but is hypebole [Barry] p94 they often don't even know they are lieing, because they don't use stuff Intel sales vs engineering views of 8088 compatibility to 8080 [Dewar] salesman never knew what could be plated [Feynman2] p56 answer customers can-you-do-this questions (to avoid project faillure) on the base of of-cause-we-can-do-anything (result they fail cust) the whole purpose of asking has been taken ad absurdum to see if you get competent answers test them with can-you-impossible "used car dealer knows he is lieing, can drive" [Raymond] "salescritter" anec when I was at shool the was a story about a flexible saleswoman she was earnestly presented as an example of good behaviour for claiming to 3 diff customers that the shoe will stretch while breaking in to fit too large foot (customer 1) shrink when it gets wet to fit too small foot (customer 2) is guaranteed by manufacturer to keep shape (customer 3) they are great at making promises and claiming how good they are but they already fail when it comes to providing anything even sending product to a customer who is willing to part with money just look at often month long waiting times for orders "from stock" exa [ct] 97-4p314 buying experience exa CAC writer once tried to officially buy a game he got it when colleges already had pirated copies of the next version anec C64 programs cracked by semi professional GCS, own logo screen no copy protection mess, often better than original state exa QEMM/Deskview problems with gray import and German Windows version we couldn't find official importer, so we got gray import, US version it wouldn't work with german version of Windows, MS bodged it up at a trade show we the accidently found them, asked them for help them only "we know problem, we are now putting warning on US vers" that is extremely useless for customers over here, no help at all better put address of importers in adds in US magazines people over here don't read the local mags as they are useless also no offer of an upgrade to the official version would get them money and the duped customers goodwill [Byte] 96-3p216 claims that programmers should talk to marketing claims that marketing talks to cust, knows their needs and wishes but "communication" via marketing personal simply doesn't work communic reqires information, marketing is device for desinformation can only give discommunication, no use for working on "lies, damned lies and marketing/benchmarks" hackers see those hype-ridden know-nothing incompetent idiots disdain them, have no respect for them, don't believe they have use computer magazines are unique in trying to sell stuff, extended PR instead of warning users, publishing experiences, being critical exa magazine cover title xx hot new products to buy as if buying stuff were the main interest of computer users because of a history of being written by enthusiasts for their peers they wanted to make the discovery known, exa Softalk [Levy] p309 from evangelising the discovery of the PC later marketing and sales copied the existing style [Byte] 95-5p260 exa at Apple top marketing types are officially called evangelisers exa at Javasoft also [Javaspec] no-nothing readers don't notice, in land of blind one-eyed is king engineers is a combination between artisan (experience) and scientist (knowledge) is a rationally planning artisan/craftsman uses scientific knowledge to estimate behaviour of a design is a analytic methodology, uses quantities, calculates based on them like building engineer statics calc, machine engineer dynamics calc also uses quantitive measurements to confirm calculations, laboratory to understand something clearly select an example [Feynman2] p85 compares different approaches to a problem evaluates advantages and disadvantages of each approach ability of approaches to emulate each other as test of universality choses the best one for the job at hand, but also expects job to change if there are 2 ways to get the same result then easier is right [Brodie] but beware of taking easy way out at cost of end result software engineer estimates run-time of different designs exa [Byte] 89-5p261 Xenix IO drivers IRQ vs polling timing what optimise bring how much diff, measures time with instrument, profile time effects on entire job, micro vs macro optimize [Garfinkel2] p279 FS using top down methods or CASE is not SW engineering more like an artisan using power tools without understanding them, fails CASE is therefore missnomer, perhaps this is one reason for its failure anec CASE an joke only understood by those who notice it is not engineering anec art and science are today widely regarded as contradictions artists are anti-science because they have lost contact with nature exa Rheinfelder filmer scared by hackers jokes about [Adams1]..[Adams5] vs TV filmer glad to hear science found out that the sun will also die art/philosophy/intellectuals don't learn science, are getting overtaken also therefore failling in spreading wonders discovered, their job some artists say that scientific knowledge reduces the wonder of life Wordsworth "scientist is murderer of beauty" [Dennett] p386 believe sci destroy beauty, because they can't see discovered beauty but science adds to beauty, not subtracts [Feynman2] p260 scientists all find that their astonishing discoveries add to wonder science increases not decrease beauty of nature [Feynman3] p1 artist later in film exa girlfriends breast think of love vs biology I expect Feynmans answer would be "both", by separate brain parts scientists are anti-artists because they regard them as know-nothings irrelevant to life and human advancement artists and scientists don't understand each other [Feynman2] p260 science vs classical education and philosophy [Feynman3] p69 result both split, big gulf in between, no bridge over it anec satirically overdrawn story of noids and fluffies but this is just a bad conception of our time [Zopfi] p139 in Leonardo Da Vincis days both were inseparatable, still with Goethe still in 19th cent neoinpressionists, from painters and colour theorists in the salons they mixed, discussed, result Seurat and the pointilists both artists and scientists are interest in how nature is the splitting between art and science is bad [Langton2] p801 today some scientists (incl all good hackers) are rediscovering the unity scientists are rediscovering the basics of art/philosophy/intellect result of scientific revolution, relativity, quantum, chaos, AI, AL exa Feynman and artist try teach each other their jobs [Feynman2] p260 Feynman success in learning art, artist failed in learning science but also a few artists are learning science some avant garde artists are getting inspiration from technology/science exa Brian Eno [Telegraph] art knows modern sci by Gould, Dawkins, Hawking vs art still pre-Darwin, collecting, no theory, Eno offers one brain research shows artist the possibilities of his medium artist who reconstructed face from skul, also documented art process science has had more effect than art and philosophy, made view point but only dry explanation, not connected with exper, art installa try this but still many artists no connection to science exa one presenting self in scene as a "mad scientist" type exa laboratories being used as places for creative inspiration but don't understand language, just triggered by interactions, events anec literat prof "in 50 years talk about beauty of math/sci, not culture" already today kids on computer can solve complicated math problems find 4 solutions, claim 1 more beautyfull, but no explanation why --- Batch Systems Batch Operation [iX] 98-10p38 IBM S/390 early comp stood still while the user entered/edited a progr at the console users increase from a few researchers to entire account or engineer departments to optimise use of the machine eliminate the waiting time while entering user now types program and input data on to tape or cards [Levy] p28 then hands in tape/cards or tape/card fetch/bring service and receives result on tape/cards or as printout programs and data are read in from the tape/cards with a reader the results written to tape/cards with a puncher or printed with a printer batch programs produce lots of wastefull printouts exa on fatal error computer makes a core dump is the corpse of a dead program (actually process) [Wall] p418 good for an autopsy, but difficult to use because of volume of data anec DEC special core dump group, cust send dump of crashed machines anec Martens cartoon with pre-screwed-up paper going into overflowing bin machine operated by special operators, the priesthood [Raymond] "priesthood" no access by user, no run time interaction with user or operator as that would also cost computer time while waiting for it this lost the interactivity of front pannels completely this is known as batch operation (from the card batches) this gives efficient usage of the hardware but is inefficient of users time the users cycle time is measured in hours or even days anec to save time programmer replaces a card before run, in wrong program but it was the operation mode of nearly all computers until 1970 still used on many big systems until 1980 today this form of computing is next to dead but on these systems many of todays hardware subsystems were developed but actually mainframes still live on [iX] 98-10p38 IBM S/390 this method was mainly used in commercial computing systems resemble the organisations that create them [Lampson] p296 organis of SW and SW team congruent, Conway's Law [Raymond] "Conway's Law" IBM, corp taylorism, ignorance, closed minded bureaucracies and closed sys batch not just becau vacuum tube technology, also thinking style [Levy] p41 but successfull systems also resemble the organisations that use them computer customers for mio dollar machines in 1960 were big bureaucracies results in successfull manufacturers becoming like their customers while new firms aim for better technology, new markets, to compete old firms aim for safety [Bell] p14 const price customers anec NeXTworld hope that NeXT doesn't become like their customers they did because had to, I'm not any more in user profile, give up sys Teletypes [Rochkind] p74 Unix TTY handling sgtty/termio/ioctl and # @ usage printing output is easier, faster, less errorneous than reading from a display and handwriting to paper anec first expansion of Babbages DE was a printer [ct] 89-1p114 for connection of puncher and reader use 110bps 7n2 serial 20mA current loop exa ASR 33 (noisy and hurts fingers) mechanical bit decoding mechanism, finger (4*16 chars) font is in metal types, control system simple as it only counts position anec CRLF because of slowness of carriage returning, twice 100ms needed later in computers use CRLF for output but accept only one needed in Unix and Macintosh to simplify SW only use one Unix LF, Mac CR anec end of user [Raymond] "EOU" mechanical bit encoding mechanism shift-0..9 keys bit vs typewriter paired [Raymond] "bit-paired keyboard" anec SO and SI codes form ASR 37 [Plauger3] p188 exa Flexowriter [Levy] p28, [Ross2] p85 anec slowness of one of these (3 sec/line) lead meteologist Eduard Lorenz to output 6 digit data from his LGP-30 rounded to 3 digits only this data reentered produced deviating results on plotter lead to chance discovering of what now known as chaotic determinism exa older Baudot teletype, 75bps 5n1.5 line, shift-up/dn explicit characters CCITT alphabet #2, () = common variant lt00: blank E lf A space S I U cr D R J N F C K lt16: T Z L W H Y P Q O B G figs M X V ltrs fi00: blank 3 lf - space '(bell) 8 7 cr wru($) 4 bell(') , (!) : ( fi16: 5 +(") ) 2 (#) 6 0 1 9 ? (&) figs . / =(;) ltrs for offline typing of program code to tape use a teletype keyboard then read it in and work on computer to maximise machine time usage later also used for typing data to tape, but not runtime input [Ross2] p85 typing in octal codes makes octal ASCII instead of binary programs use a octal ASCII to bi-octal binary converter [Ross2] p84 automatic conversion of data by the computer [Ross2] p85 for different formats better automatic switching [Ross2] p86 later usage of assemblers and compilers made such converters superfluous from this usage of teletype equipment descend the usage of the ASCII code (extended teletype code) usage of all upper case output on many systems (IBM, DEC, MS-DOS) as the teletype only had upper case because only space for 64 characters anec upper/lower case decision [Raymond] "Great Runes" anec when computers with 2 cases appeared a..z added as ASCII 97..122 97..122 without shift, with shift now 65..90 are generated but some manufactures had used 97..122 for graphics chars [Commodore] p136 to add a..z a second second char set in ROM, same codes in video mem A..Z (65..90) -> a..z, graph (161..191) -> A..Z above [Raymond] "PETSCII" Paper Tape Punchers and Readers included with some TTYs, for off-line typing and then fast transmission also for recording recieved stuff, for later replay, paper storage can also be used for editing and reprinting text, paper edit medium these were first used for program saving and reloading to prevent bugs while reentering an already running program saving and loading was controlled from the front panel use punchers for writing to tape, readers for reading [Byte] 85-9p198 tape reader mechanical or photo electrical (PETR, faster) storing 36bit systems data as 6 punch lines of 6bit each packing wide binary to be ASCII safe, ascii armor, uuencode, sixel, base64 once connected punchers and readers were also used for writing intermediary data and for reading it back into a second program this requires IO instructions for programs to trigger device access the processor blocks while outputing a character for speed pipelining, only block processor on 2nd char to transmit input tape blocks while program is running, processor blocks when no data here again use of pipelining to speed up operation Card Punchers and Readers cards speed up reading and writing program code and data pipeline reads/writes entire card at a time, not character at a time hardware reads/writes one bit of all chars at once vs all bits of one char cards simplify editing program and input data relative (one card per line) prevents work of splicing tapes and splice breaks while running for writing source code and input data cards special keypunches are used consist of keyboard, puncher and printer also with a reader for partially modifying an existing card for speed parallel interfaces from computer to device instead of serial lines as interf are expensive and processor can only read or write one dev a time single cable with multiple dev on it instead of multiple cables, channel finite width of cards leads to fixed length fields, records [Wall] p46 but also fixed length programming style [Raymond] "eighty-column mind" anec Bremi wrote first program on tape then advanced to cards Printers [ct] 98-16p110 printer technologies to speed up output special fast printers were made first devices with faster types than TTY finger golf ball (4*22 chr) [Raymond] "golf-ball printer", [PCW] 88-4p132+p139 note contradiction [PCW] vs [Raymond] about deriving from Selectric also Selectric typewriter on computer [Baker] p509 daisy wheel (96 chars) faster dot matrix only requires small moving masses or none font defined in electronics, more complex but mechanics simpler and faster technology impact (hammer, needle, pin), thermo, inkjet, laser [Byte] 87-5p178, [Byte] 91-10p139, [Byte] 91-10p149 colour [Byte] 91-10p163 inkjet, [Byte] 91-10p177 thermo [Byte] 91-10p185 electron beam, [Byte] 92-3p269 resolution enhancement [Byte] 93-12p125 colour inkjet, [ct] 2001-7p136 inkjet [PCW] 93-2p178 bubble jet history, [PCW] 93-8p399 line printers print one dot of each character at once [Byte] 87-9p215 one hammer for each character position, the print mechanism wriggles exa line printer on SR CAD PR1ME anec this was the first mini I worked on anec IBM PC LPTx device name comes from line printer though hardly any PC has ever seen a line printer in its life page printers render and then print entire page, exa laser printers because of limited memory for large bitmap use banding [Thacker] p283 part of image rendered at a time, printed while next band render but problems with laser engine not stoppable, complex content req mem modern printers are more than TTYs more then 80 columns of chars, different sizes, fonts, placing, bit maps exa Epson FX80, HP LaserJet [ctk] 90-2p309 Drucker for graphical output use plotters pen plotters simulate hand drawing, but are slow to control them use ASCII commands for pen movement interpreted in hardware, simple, often only straight lines no circle, curve or text, require convertion to many lines on processor for speed use matrix printer bitmap graphics mode (only for small drawings) for large size electrostatic matrix plotter, exa SR Versatec for speed parallel interfaces from computer to device instead of serial lines exa Centronics printer parallel interface [ctk] 86-10p157 Centr Schnittst Centronix original 36 pin vs IBM LPT 25 pin plug anec Ernst PC Club ZH 36 vs 25 pin discussion anec in dongle ad 36 pin called "Japanese-standard" [Byte] 94-9p166 note that plugs on the cable are symmetrical, but signals are asymmetrical colour printing [Byte] 93-12p125 colour becomes affordable, piezo, ink, laser, thermal [ct] 99-7p114 printing colour images Magnetic Tapes [ct] 96-8p118 QIC tape sizes, [ct] 97-8p252 backup tapes exa compact cassette, QIC, DAT/DDS [Byte] 90-11p323 anec C64 hack for normal audio tape recorder on Datasette port also record player on cassette in with floppy records for distribution all mechanical punchers are limited in speed, magnetic recording is faster replace tape/card pun/rdr with tape recorder/reader for data entry type to cards, transfer to magtape for this small a computer is used, exa IBM 1401 [Tanenbaum] p7 multiple programs with their data on one tape, run under FMS [Tanenbaum] p7 for printing speed up data allways written to magtape then printed if desired, this is called off-line printing for this special printing computers, exa 1401 or EAM 407 [Levy] p20 sometimes containing considerable logic (counters, etc) the same recording technology as used for drum/disk memory recording geometry serial, byte parallel, switch tracks, helical scan also endless tape, exa 8 track audio, Sinclairs microdrives no hand editing of tape contents is possible any more as result of this some systems returned to stream data formats (mainly minis) others keep card-like data formats, but no fixed card length any more flexible record lenghts (mainly mainframes) anec on some machines even disk-like block access on tapes was implemented exa TX-2, LINC [Clark] p362 on-line files, [Libes] p203 pdp-11 Disk Drives [Byte] 86-5p161 evolution mass storage, overview [Byte] 89-2p293 HD ST506/412, FM, MFM, RLL, ARLL, ERLL, ESDI, SMD [Byte] 90-11p283 crystal clear storage, holographic [Byte] 90-11p302 HD surface materials, perpendicular vs longitudional [Byte] 91-5p201 storage media, [Byte] 91-10p255 HD smaller, smarter, faster [Byte] 92-3p195 embedded intelligence, drives getting smarter [Byte] 94-3p91 digital read HDs, [Byte] 96-4p48 holographic storage [Byte] 96-6p91 new techno, timing, signals, [Byte] 97-12p44IS3 HD upcoming tech [Byte] 98-2p121 infinite space, [Byte] 98-5p111 atomic storage [ct] 86-8p60 HD FM, MFM, NRZ, NRZ0, ESDI, SMD [ct] 89-2p110 HD fabrication, heads, FM, MFM, 2.7 RLL [ct] 2000-24p114 old media becoming unreadable, digital amnesia [ctk] 89-2p253 Festplatten MFM, RLL and BIOS problems [ctk] 90-12p315 Festplatten disk parameters [PCW] 92-11p386 HD fabrication [PCW] 96-6p227 DMF floppy format, less formatting loss, more than 1.44M disks descend from earlier usage of magnetic drums smaller devices, easier handling for removing and storing disk vs drum is like grammophon vs phonograph recording methods [Byte] 89-2p293 FM, MFM, RLL, ARLL, ERLL, [ct] 86-8p60 FM, MFM, NRZ, NRZ0 tone modulation (FSK) or pulse codes (FM, MFM, NRZ, NRZ0, GCR, ME) sectors for error recogn/corr CRCs over each sect [Byte] 86-9p115 CRC, [Byte] 87-11p339 CRC, [ct] 96-7p264 CRC sector begin hard (holes) vs soft (bursts), track begin index hole vs burst tracks stepper motors (require regular low level reformat because thermal expansion) vs voice coil and servo (automatic recalibration, follows track) recalibration periodical (interruptions) or continuous (AV drives) cylinders single platter vs multiple platters, servo surface vs embeded servo bursts capacity calculation cylinders*heads*sectors*sectorsize, 1000 vs 1024 HD phys/bios/fdisk/format/chkdsk/sales sizes also diverge because of this exa the 1.44M floppy capacity is 80*2*18*512 bytes, this M is 1000*1024! it should properly be called a 1440k Floppy [Raymond] "quantifiers" exa my Quantum Empire 2100 is according to the AHA-1542 BIOS 2006*2048*512 bytes = 2'103'443'456 bytes it takes the SCSI sector count and zero the lowest 11 bits also the loss by high level formating helps make them diverge speed access time from head moving (min, avg, max seek time) and then waiting for data to arrive (rotational delay) originally 3600 rpm, then 5400, then 7200, now even 10000 anec 7200 rpm drives make a lot of noise disk controllers anec microcomp floppy controllers originally supported 4 drives on PC and XT IBM BIOS did also, with AT only 2, like HDs [Gilluve] p416 result for 5-1/4" and 3-1/2" drives and QIC tape switching is needed anec IBM PC WD1006 controller bug makes drive active LEDs shine constantly IBM "corrected" this with a shield before the drive LEDs and a LED on the case which is switched by the HD BIOS but they put only one LED on the case, for both possible drives this loses the ability to watch a HD to HD copy as it performs why not two LEDs on the case or make the BIOS use the drive LEDs SCSI and IDE use drive LEDs properly, but case hides them often they are often missing on the drives to save cost embedded controllers [Byte] 92-3p195 embedded intelligence speed not bound to an cabling sheme such as ST 506/412 or ESDI for remapping defects extra sectors/track and extra tracks also makes dual actuator drives possible, exa Conner [PCW] 93-2p261, Seagate RAID [Byte] 90-12p337, [Byte] 91-8p195, [Byte] 92-10p259, [Byte] 93-1p90IS3 Core [Byte] 95-2p155 Veritas Volume Manager [iX] 95-11p178, [PCW] 93-3p260, [PCW] 94-9p342 to speed up disk access, scatter sectors over multiple disk drives to reduce data loss when one drive fails store it redundantly disk block caching, disks are slow mechanics, RAM is far faster first controllers only read one sector after sector read processing time, missing next sector must wait for entire revolution, to prevent this use sector interleaving then buffering, read entire track, return when sector read but read further next read if sector pre read no access, no wait, fast today cashing (and embedded) controllers have multiple track buffers [Byte] 92-3p175 what to stash in a cache, mem and disk caches for speed keep part of disk content in RAM, block buffers, disk caches cache blocks, tracks, dir entries, inodes [Libes2] p278 cache alg, [Byte] 85-9p129 cache alg, [Byte] 89-10p297 eval [Byte] 89-6p294 MS-DOS buffers cache/look ahead, fastopen dir/FAT hashing for fast finding data in large spaces [ct] 90-8p252 hashing, [Aho] p436 algorithm, [Dobbs] 96-4p24 every cache is a trade off between memory use (cost accumulating in time) vs regenerating data from slow media (cost accumulating per regen) this leads to timeout algorithms to retire long unused entries disk buffering track is read ahead vs multi track cache is repeat for caching special RAM on disk controller vs part of main memory controller cache better on proc w slow mem-mem copy, or full mothboard vs software cache better if mem-mem fast and RAM on board expandable for repeated reading prefer buffering in RAM, can be shared, dynamic MS-DOS config.sys blocks= only in conventional or expanded memory not possible in UMBs, HMA or even extended memory (XMS) XMS requires smartdrv, why not buffers=xxx /high similar to dos=high using the code for in msdos.sys also for buffers in XMS reason of himem.sys dependancy wrong, as EMS also requires EMS driver when using smartdrive save conventional memory with buffers=3 cache only disk reads (safe) vs write back cache (faster, but shutdown) write back cache power off problem, also disk eject cache invalid problem floppy disks [Byte] 85-1p167 Apple II disk, [Byte] 86-5p161 evo mass storage, PC floppy [ct] 95-7p222 XDF 1840k format, [ctk] 87-7p169 Floppy-Anschluss Shugart bus cheap and random access, a good compromise between tape and HDs in the 70s since mid 80s too small, too slow, but they are standard, no replacement anec use both sides of a 5 1/4" on a single sided drive [Raymond] "flippy" anec once normal 8", mini 5 1/4", 3 1/2" micro [Raymond] "minifloppies" high capacity floppies, megafloppies TakeTen, [Byte] 90-10p301 ED, TwinTier, Floptical [PCW] 93-8p344 Floptical [ct] 97-9p246 floppy replacements not compatible, no standard emerged, failed, megafloppies became a megaflop once again a case of greedy bureau preventing their own success for distributing/installing SW a CD-ROM is better (cheaper, not deletable) for backing up a tape or WORM or MO is better (large, standard) [ct] 96-8p112 removable disks vs tape vs CD-R, [ct] 98-9p72 backup best backup today is a copy to an other HD backup HD is just as large, reliable, cheap, no special SW needed ideally a cron job to an other machine in remotest corner of your network or even over the internet to other site in other town backup storage hierarchy [Byte] 91-5p191 RAM, disk, tape for local data exchange many established rivals (Syquest, Bernoulli, MO) CD-ROMs [Byte] 86-5p164 CD-ROM bit level, ECC [Byte] 93-2p116 CD-ROM publishing, do it yourself CD production [Byte] 93-2p130 CD standards red/yellow/green/orange books [Byte] 93-3p197 CD-ROM basics, spiral, CD-R, read head, sectors, IS9660 [Byte] 93-9p106 reading mechanism, [Byte] 94-1p231 CD-WO (orange book) [Byte] 94-3p145 CD-R, [Byte] 96-6p105 CD-R, [Byte] 96-10p139 DVD multi-GB CDs [Byte] 97-12p30 DVD [ct] 94-9p228 reading audio CDs via ASPI [ct] 94-9p259 Video CD, white book, Movie CD (CD-I) [ct] 95-4p390 ISO 9660 CD-ROM file system [ct] 95-6p150 format overview, [ct] 95-9p214 updated large HDCD formats [ct] 96-1p226 Video CD 2.0, [ct] 96-4p390 digitally reading audio CDs [ct] 96-8p262 Enhanced Music CD, was CD-Plus, multisession music + multimedia [ct] 96-11p286 CD writable, [ct] 97-3p190 superfast CDs, [ct] 97-4p246 DVD [ct] 97-4p252 CD-RW, [ct] 97-8p228 CD-RW packet writing [ct] 97-9p240 CD-R reliability, [ct] 97-12p206 CD direct digital audio copyin [ct] 97-13p190 CD-RW recorder, [ct] 97-15p260 UDF format for CD-R, CD-RW, DVD [ct] 98-3p166 CD-R UDF format, [ct] 98-8p160 DVD Formate, [ct] 98-13p114 DVD [ct] 98-19p214 CDs over 74 minutes, format [ct] 99-4p218 CD-Text [ct] 99-5p176 CD-WR disk types, recording techniques, faillures [ct] 2000-13p144 DVD basics, [ct] 2001-6p210 DVD recording [ct] 2001-13p192 making (S)VCDs, [ct] 2001-18p162 SA-CD and DVD Audio [ct] 2002-11p97 CD and DVD disk structures, [ct] 2002-11p108 DVD video format [ct] 2002-21p168 CD-RW Mount Rainier extens, [ct] 2003-7p182 HD-DVD vs BluRay [iX] 96-7p50 cdwrite for Linux [PCW] 93-5p518 CD-ROM formats, usage, [PCW] 93-7p344 CD-R devices [PCW] 93-10p459 high capacity CDs [PCW] 94-4p267 CD standards confusion green vs white, NTSC vs PAL [PCW] 94-9p497 CD 6 layer, CD blue laser, CD PWM [PCW] 94-10p471 Video CD, karaoke [PCW] 94-10p225 White Book needed for video, [PCW] 95-1p412 CD standards [PCW] 95-2p323 CD Standards, [PCW] 95-4p426 CD techn, drives, issues [PCW] 95-4p521 CD plus mixed formats, [PCW] 95-5p380 HDCD [PCW] 95-8p587 CD+G, [PCW] 95-9p214 CD standards [PCW] 96-2p94 enhanced (mixed audio and data) CDs [PCW] 96-5p43 enhanced, [PCW] 96-7p244 CD-RFS multiple record without session sectors CLV (CD, spiral, var revs) vs CAV (rest, concentrical, const revs) CD drives with caddies vs drawer, is a matter of taste, I prefer drawer originally only direct audio out, only later digital readout [ct] 96-4p386 audio connector mess anec multi CD drives or CD changers more expensive than copying onto big HD optodisks [Byte] 86-5p203 optical ECC, [Byte] 89-2p274 digital paper WORM [Byte] 89-10p259 WORM, MO, [Byte] 90-11p275 Magnetic, WORM, MO, standards [Byte] 90-11p289 phase change, [Byte] 94-3p107 MO [ct] 95-2p76 phase change, [ct] 98-25p190 MO drives [PCW] 94-9p497 Minidisk MO, [PCW] 95-12p145 optical drive technologies with todays hard disk size increases optical has missed the boat add to that standardised support for hard disks, not for opticals use a hard disk for fast working space, tape for cheap bulk storage, tiers optodisks are often associated with DIP systems, because of bulk size but bad, size lower modern HDs, unreliable, special filesys, swapping [PCW] 96-2p45, also PlasmaDat pictures later compressed on HD, faster optical polymer memory [ct] 98-3p18 and laser holographic memory [Byte] fixed disks vs removable, exa Floppies, Syquest automatic eject after unmount, auto-unmount after pressing drive eject knob exa Macintosh multi-floppy backup program, floppy ejects as soon as full detection of disk insert, auto-mount after insert exa Macintosh backup above needs no clicking OK after inserting next floppy Virtual Memory [ct] 92-5p178 modern OSes load big programs only partially into memory code and data not in memory is stored on disk core/RAM+drum/disk gives speed (core/RAM) and space (drum/disk) VM appeard early in history, even paged VM [Salus] MADM vs [Byte] Atlas 1960 disks (originally drums) were first used for virtual memory not for files [Byte] 86-5p161 evolution of mass storage anec in BSD the swap partition is still called /dev/drum [Raymond] "drum" programs and data were still loaded from and stored to tapes exa Whirlwind director tapes for CLI [Ross2] p67 despite drums for MDR [Byte] 92-3p161 memory pyramid reg-cache-mem-disk-tape [Byte] 92-3p183 storage managment, automatic migration and fetching [Byte] 94-3p79 managing mass storage, pyramid [Byte] 94-6p153 managing decentralised storage split big programs into multiple parts with explicite loading, overlays exa Fortran/Basic chain command, MS-DOS exec in overlay mode this can still be done with multiple auto-rewinding tape drives but it can still be done explicitely ba the programmer, but it adds work automatic loading of multiple small program parts, segments [Tanenbaum] p128, fixed segments p131, with paging p132 segments are linked in one file or in separate files multiple segments can be loaded at same time load on demand, when no space for new segment remove an old one capturing accesses to not loaded segments for accessing code with calls/jumps to it hooked to an autoload routine or indir call to jump, trampoline [Raymond] "trampoline", [Raymond] "snap" once loaded ev no need for reload, snap the pointers to loader this is a fairly common usage for SMC, OS modifies unsuspecting progr to conserve table space one pointer per subroutine or object file typical code segments are subroutine level or object file level for accessing data with handles to data and locking/unlocking calls on locking convert handle to pointer, valid until unlocked (swappable) automatic locking can be made by data access via dedicated stub routines these stubs are compiler/linker generated, only LD/ST instrs and return require space but so do lock/unlock calls, both only on large blocks to conserve table size only one pointer per data segment typical data segments static var of object files or dyn alloc memory as side effect dynamic loaded libraries (DLLs), run time loadable libraries save space on disk by not linking multiple copies of lib in each EXE file Pr1me Primos on disk only OBJ files, no EXEs, all linking done on loading Windows the entire OS consists of DLLs, despite EXE file extension the kernal, the drivers, OLE, MAPI are all DLLs also Oberon [Byte] 93-5p111 (and Mesa and Modula from which it decends) and of course the Smalltalk classes, that started it all and even the Lisp modules of functions, that are load time compiled DLLs give most modern systems their power/flexibility this comes from multiple entry points to code, unlike EXEs DLLs are one of the biggest holes in standard Unix this is one of the few places that DOS/Windows was long better than Unix for Unix nearest thing is GNU DLD, used in Linux ELF? exa Linux a.out only few manually alloc addr spaces, only now to ELF DLLs can have version problems [Byte] 97-11p87 Windows DLL clashes exa VMS Motif 1.1 vs 1.2, exa MS DLL version mess [ct] 97-6p17 exa Linux libc.so.4.6.2 not accepted by Amaya, needs >=4.7 requires different versions to have different file names, exa Linux exa Flow-Matic [Hopper] p17 exa Whirlwind group control drum storage [Ross2] p58 based on the batch runtime MDR debugger, hooking system using a memory table for virtual mem entry points [Ross2] p104 exa VB (virtual B) [Salus] p34 exa Alto Smalltalk everything in memory is an object (inc code, stack frames) virtual memory deref microcoded in the instr set decoder [Lampson] p305 exa Macintosh OS [ct] 99-2p16 blue G3, [ct] 99-16p52 gray G4 Macintosh Areg+offset, code in 32k segments, even worse than Windows 64k for accessing data handles are used, are pointers into table of pointers to use memory ensure data is loaded, lock it and dereference 1st ptr after using memory, unlock it for poss unloading, delete pointer no automatic locking/unlocking for data, no autoloading stubs the compiler/linker/loader should do this, not the programmer, hide it anec unlocked handles are most common crashing bug on Macintoshes since Macintosh System 7 use VM, "infinite" addr space, no segment swapping 68030 paging unit is used for all logical->physical purposes, paging exa Borland VROOMM extension for MS-DOS [Byte] 89-8p344 similar to Macintosh, automatic by compiler and special linker exa Windows 88/286 on 8088 Windows handles segment loading in SW like the Macintosh uses 80x86 segmentation for managing code and data segments converts segment handles to 80x86 segment bases, offsets never convert progr use 16bit adresses where ever possible, gives many 64k limits the segment registers belong to Windows, reloads them [PCW] 91-12p405 for far calls fixed address trampolines, run time gen Microsoft calls these segment address reload trampolines thunks likes term, also calls Win32 converters from 16 to 32 bit thunks [Dobbs] 96-4p42 programming with thunks 32 bit call 16 bit DLL Geary technique only works when DS=SS, in user code, fails in DLL, OS data is accessed via indirect pointers and lock/unlock programs must contain calls for SW memory managment, same bug potential this also slowes Windows down and prevented full use of the 286es speed this was a failure because the 8088 was too slow for Windows anyway nearly all users 286 where the 286 HW descriptors were used anec error repeated by MS/IBM with OS/2 1.x 286 based instead of 386 actually Bill Gates tried to persuade IBM to go direct 386 on 286 Windows uses selector hardware for doing handle->base 286 microcode issues a trap when a non-loaded segment put in selector reg no hooking of calls, no locking and unlocking data segements dynamic loading of code and data without SW tricks, faster, less bugs anec Windows 286/386 mode no lock/unlock calls, linker /t flag in EXE on 386 Windows all segm are given an addr on first load, then left alone the 386 paging unit is used for all VM purposes Windows mem man has been expanded multiple times like 80x86, PC, MS-DOS [Byte] 90-8p133 memory managment, [Byte] 91-9p38 Windows 3.0 inprovements [ct] 91-5p114 modes, [ct] 92-5p106 intern, picture of 3 stacked buildings code left over from many memory modes real mode, HMA, EMS, EEMS, XMS, protect 286, 386, DOS extenders, VM86 anec because of this has been called mode museum [Byte] Win 3.0 test Windows is bound to 80x86 architecture, that's why only NT is portable using only Windows memory managem and swapping/paging in DOS, without GUI is not possible, programmer must take it all in one or nothing at all automatic loading into memory in fixed size chunks, pages gives less problems when replacing them than with swapping segments as all pages are the same size, no fitting into holes, no shifting around a program can be bigger than the entire memory without using overlays because of page limits not on logical structure borders addresses must be tested by PMMU hardware for straddling page boundries page tables large, in memory, for speed AM/TLB/ATC [Tanenbaum] p101 requires 1..5 table accesses before actual memory access, use TLB/ATC page reloading in hardware, from special swap space disk vs in software, via an page-fault trap when a non-loaded page is accessed paging requires more data in processor, registers, reload form memory for speeding up address translation cache (ATC), etc [ct] 2000-2p260 translation techniques TLB, LRU, MTRR, write buf, stream page replacement strategies instead of segment replacement [Tanenbaum] p107 replacement algorithms [Byte] 89-11p341 virt mem, NUR, clock, 386/486, Unix, Macintosh System 7 [ct] 87-1p64 Speichern wie die Grossen forget/reuse non dirty pages, use r/w protection flags or dirty flag scavenge for Not Used Recently, use r/w protection flags or accessed flag pageout dirty pages for later reload, then non dirty, also only NURed pages page faults can be used to load a program on demand, demand paging reduces amount of disk accesses needed to load a program before execution same also for non mapped memory zero on demand and copy on demand page faults can be used for access control page 0 can be made unaccessible to detect null pointer dereferences exa VMS, Mach, Linux, but not used in BSD exa PDP 11 (2*)8 pages of 8k size [Tanenbaum] p97 one level address mapping with 8 or 16 registers in MMU exa VAX [Leffler], [Tanenbaum] p98 P0+P1+S+res, top quater of virtual addr is reserved, use for phys access? would limit physical memory to 1 GB, not bad, as Qbus only has 64 MB splitting user program space into P0/P1 because heap/stack, both growing 2nd level page tables for P0/P1 in S lead to BSD user process size limit exa 68020 and 68851 PMMU [Dewar], [ct] 90-10p354 all addr multi level, BSD on Sun emulates VAX approach, 1 and 2 level table exa 80386+ [Beck], [Dewar], [Byte] 86-10IIPp92 386 mem, [Byte] 86-10IIPp111 all addresses go through dual level page tables the 80386+ uses segmentation and paging, layered [Tanenbaum] p135 same also GE-645 and Honeywell 6000 with Multics [Tanenbaum] p132 this is used by Windows 386, OS/2 2.0, NT, all PC Unixes exa MIPS [Dewar], [Tanenbaum] p105 2+1+1, only ATC and invalid trap to SW, designed for emulating VAX approach uses top 1 GB for physical addr, exa interrupt and trap routines exa IBM ROMP, RIOS/POWER and PPC [Dewar] p397, [Tanenbaum] p106 inverted page tables and hashing exa 88000 [IEEEmicro] 92-4p40 switch between behaviour like 80x86 or MIPS exa Alpha [Byte] like MIPS but code for handling invalid trap runs in special PAL mode backing storage [Tanenbaum] p126 reserve space for all virtual address or only non recreatable from EXE file BSD reloads only from page space, from EXE only first load on demand Unix sticky bit to prevent del often used progr from memory [Wall] p370 sticky bit (save text mode) to keep program in memory [Frisch] p31 paging space on an raw disk partition vs in a file on multidisk multiuser systems a separate small fast disk is prefered on WS usually a partition is used (often there is only one disk in a WS) but NeXT Mach Unix uses a file, preallocated but it grows if neccessary on PCs usually a file, this makes the least admin trouble, is growable but file is bit slower because of going through file system block managm Windows choice of a growing file or a fixed preallocated linear file linear is faster (same speed as a partition), but I didn't notice diff Linux a partition or a fixed size file file is supposed slower, but I never noticed diff on my system page read in random access anyway, filesystem block tables in RAM anyway memory size vs processor speed every program has a amount of memory it is currently accessing this set of memory cell wanders arount in the programs address space every program has a shifting pattern of memory in use, its working set this must stay smaller than physical RAM, else lots of (re-)loading this is known as thrashing, slows down machine enormously not enough memory to deliver data to be processed or code to be run will prevent a processor from reaching speed because of waiting for disk this is not memory access speed but amount of data in memory problem exa OS/2 2.0 on 4M RAM continuous paging, 8M speeded it up 5..10 times exa Windows 95 difference 16M -> 8M is loss of 30..35% speed on PCs with complex OSes (exa Win, OS/2, Unix) sensible size is 2^(x86-86)M 86/88 1M, 186/88 2M, 286 4M, 386 8M, 486 16M, Pent 32M, P6 64M if you can't afford that much mempry then a big processor is wasted better get smaller processor and better video/monitor or controller/disk Pentiums with 8M or P6es with 16M are a factor 4 underdimensioned yes I know RAM is expensive, but a wasted processor is even worse anec IT 5..10 users on a MVII (ca 1/4 386 power, but 8 MByte RAM) anec main reason for upgrading my 386DX16 was motherboard only 8M and ISA actually intention to expand mem by soldier to 16M but then DMA defect Unix comes from a machine with small RAM, multiple programs and fast disks swap partition from beginning, as result extremely disk intensive later programs and RAM bigger, processors faster, but disks stay slow use RAM for swap/page avoiding, caching, Unix becomes memory intensive vs ITS, CP/M, MS-DOS/Windows from single program, lots of RAM, slow disks run everything in RAM, disks only for files, compact and fast with growing fuctionality, memory intensive, later segment/paging added File Systems [Duncan], [Leffler], [Byte] 89-5p291 and 89-6p327 directory structures [Byte] 89-6p151 OS/2 disk, [Byte] 90-10p34 HPFS vs FFS [ct] 92-4p190 MS-DOS, [ct] 94-5p252 Unix, [ct] 95-12p360 HPFS [ct] 2000-6p116 debugging (DOS) fielsystem and PC partition table [ct] 2000-6p138 inside Linux ext2, [ct] 2002-6p228 journaling FS for Linux [ctk] 87-11p241 disk structures, [ix] 95-1p146 fsdb file system debugger [Uo] 93-10p40 MVS/ESA file sys, [Uo] 93-12p37 OS/2 HPFS, [Uo] 95-7p98 Veritas exa Apple II, CP/M, MS-DOS, Unix, BSD FFS, Apple Macintosh use of disks to store files, for storing progrs and data instead of tapes/cards can be viewed as a collection of "tapes sections", automatically selectable to avoid operator tape loading/unloading time, more flexibility anec Ernst mainframe people call disks direct access storage devices (DASD) memory is called storage on mainframes, tapes are indirect access disk organisation for storing multiple variable size files allocate space, discontinuous block arangement after high level format (file system struct) less disk capacity for use anec Columbia crunch command and system crashes file organisation one directory per disk/partition anec some mainframes still don't have subdirs, would give old SW problems they rely on partitioning disks instead, exa IBM VM [Krol] anec MS-DOS 2.11 with subdirs and Wordstar 3.2 without at Tech user flag in dir entry, exa CP/M, used by ZCPR3 to emulate directories subdirectories, exa Multics [Salus] p30, Unix, VMS file name space managment, x- convention, hierarchical with /, db w ::: directory information, exa read-only, hidden, system, cre/access/mod time anec cat generates new file, new times, but cp should leave old cre/mod file access routines, IO multiplexer, logical devices standard data formats, system calls/APIs and OS data structs data formats blocks, records, streams, from Multics [Raymond] "Multics" system calls handle=open(identific), read/write/close(handle) for file access by multiple users file locks, advising vs enforced locks RAM disks, simulated pseudo disk in RAM mainframes often put important DBs on multi-gigabyte HW RAM disks for speed they can not be loaded into the processors RAM because max address space is too small, exa IBM 370 max 2GB large block of RAM with pseudo disk controller on channel, called SoliDisk also in PCs RAM disks, large chunk of RAM with a pseudo disk controller this was often done on Z80 systems with only 64k addr and floppy disks some RAM disks even had a backup battery to prevent delete on powerfail or in PCs a block of processor RAM as pseudo disk exa on 286 with MS-DOS 3.3 progr in 640k and 384k vdisk.sys for \TMP dir exa Windows 3.x only uses 16M RAM even on a 386 with 32M and in 386 mode a college uses ramdrive.sys containing a temporary swap file in rest anec on Atari ST part of main RAM as disk, driver only reset on power on when the user reset the computer (often) files in RAM disk stayed alive today use of memory for caching such as smartdrv is preferable to RAM disks no 2 drive numbers, no small size limitation of fast drive backed without battery, no loading at boot, dynamic loading of used stuff but also [ct] 96-12p78 RAM disk with automatic sizing, overlays directories memory mapped files (re-)loading after VM page faults from a page-file requires OS mapping parts of address space to parts of file system allow other files to be mapped into memory address space at programs request gives memory mapped files, leads to programs without read or write commands exa Mach only accesses disk by mem mapped files, paging must go to file mapping memory to files leads to persistent memory IBM AS/400es OS/400 is based entirely on memory mapped files mapping all page faults to files is essentially a large disk memory with all RAM being used as a big disk cache, fast, optimal use of RAM is like a smartdrv using all of memory not being used for user program when a program want more memory the file cache shrinks automatically when more files read unused progr mem is paged, cache grows, exa Linux balance disk accesses for non-cache disk reads and cache-forced paging this makes caching even more attractive than RAM disks Unix UFS all directories inclusive root are simply files with special contents entries 14 char filenames (any char but / and NUL) + 2 bytes inode nr multiple (hard-)links to a file, information in an inode [Frisch] p35 introduced to return from a directory to its parent with cd .. hard links were introduced so that . and .. entries in dir stuct on disk not in filesystem code in OS kernal, small code saving, big trouble while a normal file can have any number of links (and names) a directory can only have name in parent, . on self, .. in children no 2 names in different parents (or even in same parent) because else .. would not know where to point to this would give a network struct file sys (nw as in nw db, not NFS) better do returning to subdirectory in the kernal, from descending anec suppressing . and .. visibility gave .* filenames invisible convention this makes many problems, exa requires ls -a, rm -r .* anec ln . name gives a link to own dir, not erasable any more rm complains . is dir, rmdir complains . not empty rm -r gives an endless recursion in the kernal filesys code anec [Garfinkel2] p265 claims that you can't find other links to a file but you can do so with ls -i and find / -inum they give reason of someone else modifying your file over other link simply look at the file owner, is the last person to modify the file or set the file permissions to prevent others changing your file creating links with ln, removing with rm, file deleted when no links to it this requires a link count in the files inode deleting by unlinking file, directories firs tunlink . and .. in early days mkdir and rmdir used explicit link() and unlink() later this was changes to remove() to prevent lack of integrity but preventing unlinking of dirs is wrong, I know better than SW particularly when deleting an broken directory anec deleting files by dropping links from dir prevents delete protection only way to prevent del is to make dir writeprotected, no new files file info in inodes instead of directories, only filename in dir ls standard is short as -l is slower because of lots of disk head moving anec on Amiga-DOS inode is in file, incl filename, slow DIR command mount all drives file sys into one tree, no disk names, no drives visible no changing of paths when subdirs moved to separate disk, exa spool, man but this could have also been done with logicals, like in VMS mount requires dirs to mount onto which must be premade (for inode nr?) why use mount command, why not a inode with mountpoint filetype problems with mounting a different disk as root, / moves, paths break thats why symlinks on same disk must be made ../../../xxx/xxx/xxx problems with unmounting file systems in use particularly from died NFS server, I as user know better than SW environment vars in processes memory exa TERM, HOME, PATH, SHELL, EDITOR, PAGER System V additions FIFOs (named pipes) inode type in filesystem /proc filesystem for ps system information, includes a dir per process why is network not accessed as a /ip, /tcp and /udp filesystem BSD once had a /dev/tcp device, but removed it when sockets introduced sockets is case of Unix "everything is a file" philosophy falling apart anec "Version 7 last proper vers of Unix" [Raymond] "Version 7" in 4.4BSD far simpler interface portals, not spread [Salus] p219 why not /dev file system for naming devices, dependant on inserted ones Linux additions VFS allows multiple coexistant filesystem types BSD FFS faster, stays fast, >5% of bandwidth [Salus] p161 vs [Garfinkel2] p280 arranging a files sectors consecutive [Leffler] vs [Garfinkel2] p264 long filenames, up to 255 char, was first OS with this size symbolic links like logicals, but in filesystem, not in process, for all users the same cd symlinkdir/.. does not come back to where you were but tcsh remembers path steps, cd .. comes back, use cd ./.. for normal symlinks pointing to themselves (ev indirect via other symlink) can cause an endless expansion, endless loop in kernal, BSD expand limit cp -R doesn't understand their consequences, use tar [Garfinkel2] p277 find also knows consequences, drops symlinks, only ever use find from / but a bit of unsafe code in BSD kernal anec FFS on my NeXT "freeing free inode", is common [Garfinkel2] p274 resulting crash (panic) is worst possible reaction, I lost 5 MByte why doesn't Unix do it's normal bahav, ignore err, inode is free anyway when it happened I had no clue of problem, coleagues neither after it happening 4 times I traced it back to new disk drive, replaced note that UFS problems are buggy FS code, not FS structures faulty anec problems w BSD bugs lead to [Raymond] "Berkeley Quality Software" VMS Files-11 also uses inodes despite return to parentdir with .. in OS and no .. on disk lots of information in inodes, see DIR /FULL, exa backup time inodes have reusage count, used in directory file for detecting stale links but inodes have no reference count anec Albin made second link, del file, empty link file versions (also in ITS and in intended GNU HURD file system) on systems without file versions SCCS/RCS (Unix) [ct] 90-8p226 SCCS/RCS or include date/time as part of unique file identifier file paths [dirname.dirname]filename.ext no extensions on dirnames, all have .dir why cre /dir dirname instead of cre dirname.dir allways del for files and directories, no special del dir or recursive option when files in dir and del [dirname...]*.* only files del, for dir second no mounting into filesystem, visible disk names, full path disk:path logicals in multiple hierarchical tables (system, user, process, job) resolved by filesystem, not by shell as environment vars, despite in mem unfortunately filesystem based symbolic links are missing, both better anec Kompal wrong #include logical, redundant info problem recursive expansion possible anec MSB problem with [xxx][xxx] in constructed paths, not [xxx.][xxx] multiple directory expansion possible anec slow file open, Peter Kompalb.exe 25% run time, but also ACLs, net CP/M (Control Program for Microproc or Microcomp, 1977) [Byte] 90-9p375 anec name originally Control Program/Monitor [Barry] p57, [Raymond] "CP/M" began its life as a set of TTY, reader and puncher monitor routines first only BIOS, no disk and file system support, no BDOS only later did it became a disk based OS derived its syntax and semantics from DEC OSes such as RSX/11 had such things as 8.3 filenames, one letter drivenames, no subdirectories inherited them to MS-DOS, here compatibility goes back very far, RSX/11? large files (over 10 sectors) needed "continiation" directory entries small and simple, it had to fit incl user program into 48k of memory on 8080 anec one floppy contained OS, utils and user progr, second floppy data anec user had to warm reboot OS with Ctrl-C when changing a disk MS-DOS (Microsoft Disk Operating System) [Byte] 91-7p36 MS-DOS 5.0, the last mayor improvement originally not just for the PC and clones, also other 8086/8088 designs exa Sirius 1/Victor 9000 [Byte] 82-11p256, Sanyo MBC550/555, Apricot like the IBM PC it runs on, a classical example of "as good as necessary" PCs have increased significally in power, MS-DOS didn't grow with them can only use real mode of 80x86 processors (1MByte limit) no protected mode (16/4096 MByte) even after hardware (286/386) had it only very lately did VCPI, DPMI appear [Byte] 90-10ISEp113 and DOS extenders [Byte] 90-10ISEp250, Windows based on DPMI, DOSX Microsoft claims that MS-DOS can't advance because of compatibility but both Windows and OS/2 are better DOSes than DOS also MS-DOS isn't fully compatible anyway, dropped utilities exa 3.3 no exe2bin, 5.0 no edlin, 6.0 no backup/restore anec 3.3 exe2bin laying dead outside of box in comic anec backup is included in list of setver as wanting 5.0 anec Bill Gates BOB demo claim MS-DOS best poss OS for PC [PCW] 95-4p323 but Unix V1 (1969) was more powerfull than MS-DOS, on weaker hardware BOB logo [PCW] 95-3p294 often patched, yet another special interface added problem that most programmers doesn't know all the many extensions, bugs can ev be solved with [Raymond] "interrupt list, the" also [Byte] 89-10ISEp209 standards dictionary small filenames (8.3, ????????.???), like CP/M the dot is not stored on disk, 8.3 -> 11 chars on disk, fill with blanks this is why disk labels are 11 char, stored in a pseudo-filename for filenames with wildcards (? and *) system calls for find-first/-next * in a filename only as its last char, is expanded to ?s until name end qwer??*.ty* -> qwer????.ty?, *qwerty is not allowed, only ./end after * this is implemented the same in CP/M and VMS (lib$findfile) after introducing long filenames in OS/2s HPFS and NTs NTFS failed Microsoft extended FAT with long filenames in MS-DOS 6.0 in doing so undelete fails, use lock and unlock [PCW] 96-3p34 minimal disk IDs (1 char, ?:) disk labels are only decoration of dir listings, not used in file paths allocation of drive letters A 00, B 00/01, C 80P, D 81P, E.. 80/81E drive letter numbering blues with HD/Syqest/CD [Byte] 96-6p158 Pournelle slow (global FAT, lots of head moving), cluster space waste but it was actually an improvement over the CP/M file system 1.x no subdirectories, only root dir with 144 entries, fills first track still today the MS-DOS root directory is restricted to 144 entries 2.0 introduced directories, with \ syntax [Raymond] "bug-compatible" the / was already used for switches, is derived from RSX-11, VMS and CP/M why not also use the VMS directory syntax [dir.dir]file.ext fixed .dir ext would not need type bit, same .lab for disk labels why has MS-DOS got . and .. entries in subdirs (not in root dir!) despite not having hard links, code for cd .. is in the OS anyway cd . also in OS code, to do it in root dir which has no . and .. for recursive dir ops, xcopy /s, backup /s, but no del /s, needs deltree 1.x-3.x size limited to 32M (2^16*512) bigger disks must be partitioned into multiple file systems with CP/M it was even a 8 MByte limit (2^16*128) since 4.0 larger file systems, but still max 2^16 clusters, keep growing Win95 VFAT long file names [ct] 97-5p352 MS-DOS can't handle raw disk devices it is not poss to copy a CD-ROM filesys onto a HD partition or an imagefile onto a floppy disk anec rawrite.exe to make boot/root floppies for installing Linux anec story of CP/M-86 fail because of Gary Kildall flying is not true [Byte] 90-9p414 PC creat CP/M-86s real problem 1 year delivery time IBM coudn't wait, PC must be on market in 1 year, else project terminat Bill Gates sold it to IBM as replacement for CP/M-86 when DR deal fell anec Bill Gates sold to IBM before buying from Paterson [PCW] 92-11WIp9 Bill Gates promised MS-DOS in 6 weeks (it took 2..3 months) first version CP/M clone QDOS by Paterson in 6 weeks [Raymond] "MS-DOS" [PCW] 96-9p122 Eubanks, all customer dealing by Dorothy Kildall preparing for holiday, dealing with HP, no time for IBM vs Bill Gates being wery agressive, took chance video TV interview with Jack Sams of IBM (their SW buyer for PC OS) Dorothy Kildall dislik NDA, delay supprise IBM, Steve Ballmer took chance anec Gary Kildall killed in 1994 by armed robber OS/2 [Byte] 91-12p46, [Byte] 92-10p179, [Byte] 93-11p313 OS/2 extended attribs [ct] 97-6p64 OS/2 mid life crisis, [PCW] 94-12p326 Warp Microsoft and IBMs second attempt at failing [Raymond] "OS/2" yes it was once a collaboration between the two of them became IBM only when Microsoft lost belief and continued with Windows was originally intended as successor to MS-DOS failled because it was late, incomplete and HW intensive main usage for mission critical systems and as Lan Manager server anec because name and version 1.x problems called half an OS, OS halbe uses either FAT or new HPFS file system HPFS has i-nodes (called f-nodes) and long filenames is a better DOS that either DOS or Windows are, but not better Win than Win anec Windows programs direct on OS/2 desktop was already in 2.0 and worked but I dropped it because only 640x480 on my tseng4000 video card and no DECnet drivers and X Windows available for it, I needed them for VAX NT [Byte] 92-10p167, [Byte] 94-10p203, [Byte] 96-5p42 NT vs Unix for Servers [Byte] 96-11p145 Cairo, future NT vapourware [Byte] 97-5p66 NT 5.0 for Enterprise, Active Dir, DFS, COM [ct] 96-9p148 Windows NT 4.0, NT vs Netware [ct] 96-11p15 NT beats Windows 95 in speed, from better disk handling [ct] 97-3p376 Windows NT PE executable format based on Unix COFF [ct] 97-6p376 NTFS file streams, [ct] 97-12p76 NT 5.0 Beta, intentions [ct] 99-9p82 Windows 2000 W2K, [ct] 99-13p186 NT vs Linux servers test [ct] 2000-5p148 W2K install and operation [PCW] 92-11p231 Cutler interview, [PCW] 93-5p302, [PCW] 96-8p104 NT4.0 Microsoft and IBMs third attempt at doing wrong [Raymond] "evil and rude" yes it also was once a collaboration between the two of them its original name was OS/2 version 3.0 NT, later renamed to Windows NT anec naming NT from N10 (Intel code name for the 80860 [Dewar] p341) not from VMS+111=WNT as claimed by conspiration theory freaks using the 80860 for NT dropped because no sensible IRQ response speed Microsoft then retconned NT to mean New Technology NT took so long to arrive, renamed from New Technology to Not There later when problems with first version visible IBM OS/2 ad Nice Try NT was intended as a high power client OS for WS it failed on office desktops the same as Unix WS did because most users couldn't care less for OS power if it costs so much HW since then it has been repositioned as a server OS but only usable as Netware or Lan Manager file/print server replacement has yet another file system, NTFS is HPFS with user accounts, file permissions and filenames in Unicode also file versions as in VMS, but where are they to be accessed Macintosh [Byte] 92-10p182 System 7 original MFS filesystem was non hierarchial, only one directory folders were simulated with fields in directory entries, similar to ZCPR when HDs appeared MFS became too slow, replaced by HFS, with real subdirs files have 2 forks for data and resources problems with file transfer SW, must multiplex the 2 forks for extraction better DOS/Windows/Unix single stream data files (no resource fork) resources stored in specially formated files (no data fork) file types 4 char stamp from producing program, used for activat on dblclick problems with needing special tools to modify stamp, to trick system problems with file servers based on other OSes and with file transfer Databases first complex directories with multiple record formated files desire for program independent data formats no absolute byte positions in records coded in software file structures (metadata) defined in further files, file name problems lead to file with complex internal structures, one file is a DB for speed one complex file alone on a disk with no file system in between or even scatter tables over multiple disks, table scatter vs use of RAID library of routines for accessing the database, is database managment system types of DBMSes flat, hierarchic, network, relational (RDBMS) no allow restoring a DB after a crash while updating use journalling first in DBs, later in also file systems, exa IBM AIX [Garfinkel2] p267 relational database managment systems (RDBMSes) [Byte] 89-9p247 brave new world, RDBMSes and SQL, [Byte] 89-10ISEp175 SQL [Byte] 90-12p321 RDBMS real story, [Byte] 93-6p109 SQL many flavours [ct] 93-9p192 datenbase design, [ct] 97-5p276 data modeling [ct] 2001-1p174 databese indexes [iX] 93-12p136 SQL-92, [iX] 94-3p50 SQL3 relational integrity crutial for relational theory but originally not existant in System-R anec delete customer record while still an unpaid bill in system "what do you do when user wants to del", "refuse, ask for payment plan" for reading data from RDBs by programs SELECT and cursors, problems lang dependant EXEC SQL precompiler + library linked into or as DLL better would be Multics-like file handle=open(select clause), read(handle) but mainfraimes in time SQL was invented had no such thinking resulting complicated methods are still in todays c-s DBs use SQL as access language, semantics problem with NULL and 3-valued logic NULL is usually thought of as "not applicable" but what with "don't know" or even with "don't know if applicable" there is no provision for unreliable data in the SQL model also problems with data changing in time, no historical view, no versions anec some surprised seeing RDBMSes in batch systems, but they are this old System-R and Sequel were in 1969, Ingres in 1974 [Salus] p138 unstructured text databases, searching file contents [Byte] 91-6p317 key indexing, [Byte] 92-6p271 search and retrieval [Byte] 93-9p95 documents, electronic publish, indexing, finding [Byte] 95-5p40IS7 DELTA/POISON, [Byte] 95-5p62 OPAC British Library Cat Onlin [ct] 96-8p160 text search, retrieval systems, [ct] 97-4p386 fuzzy search exa NeXT Digital Librarian, indexes all text files in a directory searches sets of directories, called library files then displays the files in edit with the right position selected anec but Digital Webster and Shakespeare use own searchers/browsers exa Glimpse, similiar system, but portable [iX] 96-5p166 relational doesn't fit good to complex real world data, too restrictive exa Kompal trouble, proj-calculat-mechanism fixed hierarchy from relations foreign keys with variable target would have been needed stories, relevant info to users more than what fits into database fields also humans are good at digesting data out of stories [Norman2] p128 this solves knowledge aquisition bottleneck that killed AI decision systems use computers for storing and finding data, humans for evaluating it tools should support, not supplant, human understanding Partitions split a disk into multiple subdisks, virtual disks may be used for multiple file system types on one disk drive or multiple same type file systems to circumvent single file system size limit to implement a simple form of allocation restriction to allow more flexible moving and backing up of data or for a file system and swap/page space on same disk drive also multiple partitions on different disks may be combined as one, striping this may require the partitions to have the same size or even geometry Unix early Unixes ran on cheap one disk machines, but required swapping, partition could not swap to the file system because overhead when writing big jobs but problems because of overlapping scheme for partition names [Frisch] p49 and p246, [Garfinkel2] p229 VAX crash, data loss because of this NeXT advises to not use them, disks delivered with 1 partit for swapping/paging the NeXT uses a file to avoid need for partition IBM PC [ct] 97-5p188 PC HD partitions, [ct] 2001-16p172 20 years IBM PC history was introduced by IBM and Microsoft to allow multiple OSes on one disk unpartitoned harddisks are not possible, waste as most users only one OS requiring those few with mult OSes to have mult HDs would not been so bad on the other side partitioned floppies are also not possible either partitions are not known to the PCs BIOS fdisk is not in ROM BIOS setup, requires a new utility for it in every OS at least one system must be bootable to use this, requires floppy boot they are purely an OS convention for disk sharing in MS-DOS this is done by the HD driver in io.sys because not in PC BIOS no BIOS interface to access them, only raw disk on the other side MS-DOS only sees partitions, gives them drive nr/letter this is why unpartitioned SCSI/LPT/PCMCIA disks are invisible to MS-DOS fdisk uses PC BIOS. if a drive has no own BIOS it is invisib, fdisk fails only when SCSI BIOS hooks int13 can MS-DOS fdisk see SCSI disks LPT and PCMCIA never have BIOS ROMS, allways invisibl, need own fdisk partitions use a table in the first disk sector to hold information this is called the master boot record, not partit sector for some reason original PC partitioning system is limited to 4 partitions per HD extended with subpartition instead of increasing number [ct] 88-10p156 because partition records and MBR in same sector and compatibility better would have been MBR in first, large table in second space is not the problem, as usually an entire track is used up anyway partition records allow sectors as unit but old fdisk only uses tracks new fdisk is worse, it uses percentages of disk, no control anec same all in one approach is also used for MS-DOS file system Xenix (the intended second OS) has split bootblock/superblock, ignored partition table contains a partition type byte, must be given centrally is actually superflouos, floppies have no equivalent, autodetect file sys anec Linux doesn't bother to look at partition type, looks at part contents effect of PC partitions on HD formatting, low vs high level partitioning by BIOS would require fdisk before format BIOS would have to format track 1, all OSes then format their partition each OS would then format its partitions tracks, like formating floppy but IBM and Microsoft decided first full low level, then fdisk, then high no function for low level format in BIOS, only HD c800:5/6 entry point also none in MS-DOS io.sys drivers devices with own device= driver require own low level format progr exa Trantor parallel port MiniSCSI adapter anec format /q which only does high level format will not run on them because it first tests for BIOS vs device= driver before checking /q as MS-DOS has no del \*.* /s this means that full delete lot of work or requires other delete program, deltree, nc, or even nu MS-DOS format for floppies goes to BIOS format track command but on HD does no low level, like on floppy when format /q Job Control Languages, Command Line Interpreters, Shells exa Whirlwind director tapes [Ross2] p56 and p67 exa IBM 360 JCL, originally for FMS Fortran job ctrl cards [Tanenbaum] p7 has a very bad reputation [Plauger2] p153 make talismans, [Raymond] "JCL" exa RSX-11 and VMS DCL exa CP/M CCP (console command processor) simple CLI with few commands (DIR, DEL, PIP, STAT, LINK) loaded at top top of memory direct under BIOS and BDOS space for user programs between bottom of memory and CCP anec memory structure simple, TRS text editor with * refinds text from crash exa MS-DOS command.com has built in commands like DCL, but limited, external utilities, 2 commands exa copy->xcopy, del->deltree syntax does not allow passing any filename, conflicts between "" and \ replacable with shell= command in config.sys but no replacement offered even the Windows win.com can not be called from shell= uses 8088 segment system loads after intvect, msdos.sys, io.sys and drivers, but before user progr consists of a small resident part, and a large overwritable part with CRC space for user programs after command.com resident part for selecting whether output goes to a puncher or a TTY the same is also neccessary if multiple punchers or readers are available user operated plugboards or switches in cabling system or use input/output selection instructions for this with parallel cable because multiple devices on cable no hand switch possible therefore input/output selection instructions are required for this the programs must select while running in/output from/to multiple devices this requires device selection instructions in these programs first device numbers were hardcoded into the IO instructions then separate device select and IO instructions [Ross2] p67 si/rd allows device dependant selection routines actual read and process data routines are then device independant or IO instructions with variable device number in a register or in memory to generate multiple outputs from one progr (compiler obj+list) multiple punch to process multiple inputs with one progr (linker mult obj) multiple readers to set source and target devices for program use job control cards exa Fortran read 5, write 6 (actually these were magtape drive numbers) analog Unix shells set stdin/out (handles 0/1) to devices/files/pipes the programs simply use read and write with standard device handle before files on disks the computer did computations the operator/user organised tapes/cards now files on disk must be organised by the computer for this file manipulat tools, great variety of file maintenance programs JCLs took over this job, became CLIs, later shells as data on disk is held in named files programs can't rely on hand switching of input/output for data selection use control cards with filenames on them to select sources and targets programs to be run are also in files, no pack of cards to start a program instead program selection statements on control cards for passing parameters (exa filenames) to user progr use standard data struct exa CP/M 256 byte at bottom of memory, followed by TPA for user programs first half entry points, system settings, FCBs, second command line tail as result of this command lines are limited to 127 characters exa MS-DOS at begin of program segment 256 byte PSP, compatible with CP/M also uses FCBs, but later in 2.0 replaced by Unix-like handle system anec many system calls exist in duplicate, 1.0 CP/M-like, 2.0 Unix-like because of this command lines are also limited to 127 characters this gives big problems with long path statements these are needed because no /bin directory convention like in Unix anec install progr mutilate path by making it too long were common exa Unix argv[] and env[] in top of process memory, above stack CLIs started with a file as parameter executes commands from it instead of keyb exa Whirlwind director tapes as command scripts [Ross2] p67 later for program control mnemonic language and keyboard [Ross2] p91 exa CP/M submit , MS-DOS command , Unix sh exa MS-DOS limited script lang for .bat files, exa for long time no call cmd these files known as batch files or shell scripts, are standard ASCII texts then variables, variable substitution and flow control commands were added making shell scripts into full programming languages commands from keyb vs file both handled by same program or a common core with 2 diff interfaces, keyb w history, file w flow ctrl in Unix #!/bin/ allows automatic starting of right shell for file in MS-DOS if no program .com/exe but .bat this is executed at startup run an fixed script to allow automatic setup of the system exa MS-DOS autoexec.bat, VMS startup, Unix /etc/rc* /etc/profile also for multiuser allow an personal script exa VMS login.com, Unix .profile or .login or .cshrc but /etc/profile done by the shell limits to sh compatible shells better would be /etc/session like in X, has own shell, then start users anec in MS-DOS file first tries exec file.com, then file.exe, then file.bat this is because in 1.0 only file.com, for file.bat use command file this comes all the way from CP/M submit file.sub, even execution method anec command.com doesn't know directories, if file.bat in new dir crash Unix shells expand wildcards (globs) before passing parameters to programs instead of letting the called programs or even the file system expand them files with - in name are expanded as commands to rm, file -r nukes subdirs exa deleting a file called -r with MS-DOS-like rm * has this effect with rm * no questions are possible, severe lossage can result [Garfinkel2] makes deleting a file called -file difficult, as read as invalid options wildcard can't be used as rm *file as glob eliminates it [Garfinkel2] p29 must use rm - -file (- convention only in some commands) or rm ./-file filenames with spaces requires "file name", leads to no glob expansion makes passing group of files with * in name impossible so that rm can kill a file with untypeable chars in name exa NeXT file "95 04 Linux ...^", disappeared, rediscovered when tar-ing ls -l made ^ to ?, rm * complained about no file, name ending in C different letters come from tools different ways of mutilating 8 bit rsh/ssh remote filename arguments unglobbed by tcsh, failles, needs "" grep * doesn't show filename before lines when only 1 file fits * user must grep both * and /dev/nul to misslead, more work, chance of forget of course greps no-of-files dependant behaviour is bad, why not use switch it is impossible to have * or ? as part of command switch syntax exa MS-DOS like /? option for standardised help system exa dc can not take an expression with * in it from the command line needs echo "expression" | dc, this is a lot of typing also inflexible for input and output file specificating no source/target destinction possible, information lossed prevents making of extensions for systematic file name edits like regexp search and replaces in a table in an editor exa mv no multifile renaming like with MS-DOS REN command dangerous, exa ex MS-DOS users overwrite files [Garfinkel2] p190 ls u* lists all files beginning with u and contents of all dirs beg w u can not like MS-DOS list only those with u, for dir content explicit name tar can not find directory of files when * is used tar clvf * fails the l option, need to use tar clvf / so /mnt not entered glob expansion is the most losing feature of entire Unix GNU could improve its tools, use first with "x?x*", then use noglob in bash GNU intension to improve Unix, this would be a good case of doing so it is shell that does expansion, not kernal as claimed in [Garfinkel2] p25 so it is mendable by altering shells and tools, GNU could do it anec this feature was a deliberate design decision [Garfinkel2] p190 to save reloading, because Unix had no shared libs, put it into the shell this is loaded permanently by sticky bit, no reloading with every program today glob expansion in a shared library would be paged in, fast but despite this no operations like ls -a or time in glob expander these should have been done once for all, modular programming anec name glob from global, name of original program that did the expansion where the name global came from is not even known to its author [Salus] p26 Asynchronous Input and Output [Byte] 83-5p452 2 proc vs IRQ vs DMA, [Byte] 92-1p249 PC interrupts tape/card readers use synchronous input reader stops as soon as program is not inputing program stops if no data from input device is ready tape/card punchers and ttys/printers also are synchronous puncher and tty/prt stop if program is not outputting program stops if puncher or tty/prt is still printing the slower of the two devices dictates the running speed to speed up pipelining, but the hardware for storing/managing data is costly better use a queue structure in main memory, SW pipelining program outputs data to a queue and then continues working a second program extracts data from queue, writes it to tape or prints it this is known as SPOOLing the data [Tanenbaum] p9 Simultaneous Peripheral Operation On Line, off line was tape->print CPU even do this while next program is running, requires monitor system, exa FMS having 2 programs running on a processor requires switching it between them switching by software requires main program regularily calling spooling program, known as polling spooling routine as subroutine call structurally most simplest system, for programs with one or few short loops exa games (exa Dragon Friss), BMS lift controller spooling routine as state machine exa CRLF program detection of line ends exa Soft64 1541 flo_*() routines exa TCP state diagram and processing [Krol] every routine has a state represented by the routines static variables it has procedures that depend on and operate on these variables on call from external code, state based decision which routine to use for a routine to be a state machine it must have an exact list of states for this reason are also known as finite state automatons [Libes2] p139 this is comparable in use with sequencial logic blocks in hardware design these have state (filp-flops), and procedures (combinational logic) the different states are implemented as different places in the progr code a major state variable is used to select code fitting for the state in all HLLs state machines are implemented loop+var+case or even gotos as they have no language structurs to express state machines spooling routine as coroutine processors have state (memory+regs) and procedures, are state machines most effective implementation of a state machine is as complete program that fetches an input and then acts depending on state, updates state the instr pointer becomes the state variable, state changes with jumps this requires for each state an wait for input instr or subroutine call it also requires for each routine a separate instr ptr and register set calling an other (co-)routine becomes switching the register sets no caller/callee relationship between the coroutines like with subroutines because all coroutines equal, they can't use a stack for switching state make routine to which all coroutines have master/slave relation, switcher this switcher saves the context (proc state) of the running coroutine it then restores the context of next to run coroutine exa polyForth PAUSE word scans coroutine list [Byte] 85-3p363 later control goes to 3rd, ..., nth, 1st coroutine, round robin polling the entire processing of other coroutines appears as a pause this requires all coroutines to only use the processor for short time for coroutine switching some CPUs have special instructions exa VAX state save and restore instructions [Leffler] exa 80286+ full coroutine switch by far jump to TSS segment [Dewar] far call with save on stack allows IRQ handling as coroutine switch all coroutine states are held in a switcher internal data structure to run additional coroutine create its "saved" state for restoring build a new state from scratch vs copy an existing state (fork) to terminate coroutine switch to next one and delete first ones struct switching by hardware, interrupts polling can be a lot of work to guarantee regular enough calling from every delay loop, but also from every other action taking enough time a single endless loop in any routine without calling crashes all coroutines alternative is to have external hardware in the IO device do the polling when the device becomes ready to be accessed it sends a signal to the proc the processor interrupts the execution of the current program and calls a routine that handles device, called interrupt service routine the instr pointer is saved and replaced on interrupt and later restored this requires a mechanism for providing new IP content, exa vector table old IP save and restore like w subroutine, use same save/restore stack interrupt service routines keep getting exited and restarted from beginning they unlike normal program have no stack frame to store their state on they must store all their state in static variables, are state machines they can be simplified by writing them as coroutines, with own stack while initialising device handling routines create an ISR coroutine when ISR coroutine init finished, wait for its IO device, deshedule it, switch to main program (original coroutine) when ever the desired interrupt arrives switch to the IO coroutine handle the device and then reshedule the main program speciality in driver technique in [ct] 90-4p370 is a coroutine switch as a simple coroutine switcher fits in few kBytes this is unacceptable anec the Transputer implements ISRs as coroutines, blocked until IRQ possible because full coroutine mechanism in microcode [ct] 87-10p180 the total lack of coroutines in MS-DOS drivers is a serious missfeature exa COM driver, it is not possible to sleep a coroutine calling it result mouse driver must use own COM driver or timer IRQ driven calls because of this Windows and PC Unixes need own drivers for everything actually use of no coroutines in MS-DOS comes from the IBM PC BIOS interrupts give timing problems for the main program interrupts disturb timing loops avoid timing by counting loops, wait for a HW timer instead else switch off interrupts while in time critical sections anec Juerg 8032 scan progr irregular line begin until I suggested IRQ off with too longer IRQ lockouts form main program or other ISRs dropped interrupts, data overrun in devices, data lossed fast IRQ reenable, reduce time for processing the ISRs split non time critical parts of ISRs off as separate coroutines [Leffler] BSD SWI, [Beck] Linux bottom halfs the ISR only does the minimal work needed to save data from device when ISR returns to normal processing insert non time critical part anec VAX sheduling on async system trap (AST), exa used in RDB BLAST exa ticker timer only increments a counter later system clock update, nice value calculation for sheduling anec Unix ticker runs actual system clock, HW clock only for setting [iX] 94-10p154 setting system clock from DCF77 reciever same MS-DOS clock$, also only uses HW clock for setting at boot for time then internal SW time is incremented by ticker interrupt timezones http://wwwcrays.anu.edu.au/reference/world.timezones.html from [Gundavaram] p102, used to convert seconds to time [ct] 96-4p384 time zones exa keyboard interrupt handler only queues the key pressed later test Ctrl-C/U to send interrupt/kill signal when next execution note that Ctrl-D is handled by user programs when reading input use separate IRQ levels for different devices, disable only lower ones higher priorized interrupts can interrupt lower priority ones exa VAX SPL [Leffler] SPL, [Raymond] "spl", exa 68k IPL [Dewar] or even only lock out only the interrupt source being serviced exa 8259 interrupt controller (PIC) in IBM PC either hierarchial priority like above or round robin sheduling saving/loading/restoring can be slow, interrupts can have bad response time CISC proc are especially bad at this, because large state save onto stack exa Motorola 68020 92 bytes on bus fault [Raymond] "stack puke" anec slow interrupts of 16 bit sys lead to making of ARM RISC processor this imposes a large processor load on IO, mix interrupts and polling exa Xenix disk driver IRQ when first byte arrives after seek/rotat but then fetch all following bytes by a polling loop less processor power used, but response time for other IRQs is lousy [Byte] 89-5p261 Xenix IO drivers IRQ vs polling timing the ISR vector mechanism can be used for routines to handle processor errors exa division by zero, memory access errors, even user defined errors such device-less interrupts are called traps, together called exeptions traps are not from devices so there is no ISR to handle them they are from user program, delivered to the faulty program as signals to registered signal handler, if ignored (no hand) default action abort Unix delivers signals by adding an "return" address to the signal handler to the user programs stack before returning from the trap, to signal unfortunately Unix signals are only used for processor traps and not also for reporting OS errors while calls to system routines exa file can't open, IO/disk read/write error, disk full, out of memory this would allow generic error signal handlers, structured error handling [Byte] 91-8p259 exeption handling in C programs [Byte] 93-5p229, NT exceptions, [Byte] 93-11p317 NT struct error handli exa Fortran read/write with err=, ADA exceptions exa Lisp exception handling [Garfinkel2] p195 exeptional conditions exa even MS-DOS file system errors call INT24 if not hooked this presents the famous Ignore/Retry/Abort/Fail instead of testing error return values after system calls which gives code bloat, bad performance, obscures code, bad legibility or is more likely it is not done because of lasyness, uncaught bugs do a callback to user program (or library), less conditionals use of tested() in Kompal table_* and db_* modules, easy but unknown reduces work for handling OS error return codes, increases legibility but it can not prevent the code bloat and bad performance Unix signals can at least be used as an alternative to waiting for input [Leffler] p176, p180 and p442 4.3 BSD SIGIO mode for input also terminal resize signal from XTerm to program on its ttyp, SIGSIZ anec [Garfinkel2] p150 other OSes catch inval mem referen, go to debugger but Unix also, allows programs to catch signals, but most don't do this claim that this is the reason for no shell code expansions is wrong real reason is memory allocation with static linked library, collisions routine switching causes race condition problems [Tanenbaum] p33, [Byte] 92-8p279 and [Byte] 92-9p297 shared resource access buffer modif by ISRs while being modif by user progr can damage pointers problematic are variables that get altered by both programs result is destroyed data structs, lost data, progr malfunction, crash the same any multiple coroutines modifying same data structure coroutine switch at wrong time would give a system crash [Salus] p157 these access routines are called critical sections [Tanenbaum] p34 this is a principial problem of HW-switched asynchrounous routines SW-switched routines are only switched if the routines wants to this is never done in a critical section avoid such variables by using proper algorithms, systemat [Tanenbaum] p35 but this is difficult to program, not always possible better prevent the HW from switching coroutine while in critical section block interrupts with a control bit/flag, by IRQ disable/enable instr but blocking IRQs while queue access between non-IRQ coroutines would unneccessary break response, increase interrupt timing problems set a guard variable [Comer2] is SW equivalent of IRQ control flag if already set a second coroutine sleeps until first resets it this exclusively prevents alteration of that one queue, not all guard vars with automatic wake up, called semaphores [Tanenbaum] p41 using Unix named pipes as semaphores in shell scripts [iX] 94-2p162 because of possible IRQ between read and set of guard variable block IRQs between these two instr with DI/EI, requires an OS call or undividable TAS/TSL instr [Tanenbaum] p38 or timed IRQ unlock (80860) [Dewar] p348 anec debugging ISR is difficult because asynch, no printf() [Byte] 93-3p187 multiple routines waiting for same set of guard vars can give a deadlock [Raymond] "deadlock", [Tanenbaum] p56 dining phil, [Tanenbaum] p240 deadl [ct] 90-12p244 dining philosophers problem avoid with systematic rules for aquiring, free all on failing [Leffler] pipeline buffers in IO devices the IRQ and then polling technique reduces the processor load of IO but if the first slow IRQ loses its data through overrun then all is lost make IO device with buffer, small block of dual access RAM, organised as FIFO this is simply a form of pipelining as in TTY or card reader IO devices but cheaper than pure pipelining, as small size, not entire data exa 16550 UART 16 bytes buffer [ct] 92-2p170, not in old 16540 UART on every IRQ read as much data as possible, automatic IRQ+polling also improved int14 interface Fossil [ct] 95-8p246 exa newer PC FD and HD controllers buffer entire block direct memory access (DMA) often the job of an ISR is only moving blocks of bytes from the device instead of device potting data into an register or buffer, direct to memory for this a simplified data transfer processor is sufficient, a DMA unit programmed with first addr and limit (remaining data length or last addr) real processors allow more flexible devices, using multi register access DMA controllers on the motherboard are an Intel microprocessor speciality other systems use address generators on the IO devices card the 8237 DMA controller appeared with the 8080 driven by devices IRQ line, the transf data from IO addr to mem addr this requires IO devices that deliver/accept data as a stream of bytes later also used with 80x86 on PC motherboard, exa FD and HD controllers also the Zilog Z80 (8080 clones) had a DMA ctrl, never really worked anec NeXT uses a 9 channel DMA controller, its "mainframe" architecture with 68040-25 and DMA faster file access than Sun w Sparc and polling results in multiple devices wanting to access memory, ev at the same time to prevent 2 addresses on bus, confused memory, bus arbitration/reservation all accessing raise arbitration line, highest prio wins access exa AT/ISA bus, main proc and one IO proc, bus master, used by AHA-154x exa MCA/EISA/PCI, multiple IO proc, one on each card, used by AHA-2[79]4x use DMA for data transfer, IRQ then only for reporting the finished transfer no processor polling time loss, IO data transfer at full memory/bus speed anec polling together with the AT bus is reason why IDE disks are slow but DMA still slows down the main processor, use own RAM on IO devices card memory mapped IO, no polling, highest throughput, exa PC video cards dual access RAM is simple to implement (only 2 devices unlike full DMA) cheap (no ev unused DMA controller), flexible (only if interface needs) high performance (for each interface an own RAM, parallel access) for fast transfer from buffer RAM to main memory block copy instr exa Z80 DJNZ, Z80 LD[DI]{R}, 80x86 REP, 68010 detect MOV/DJNZ pair DMA only really pays in multitasking systems AHA-2940 with NT or Linux enormous speed up, not Windows 95 [PCW] 96-2p338 separate IO processors with interrupts one processor with multiple programs proc is used mainly for the main progr, but occasinally borrow by IO progrs with DMA this IO program load is reduced to set up and termination but IO is limited to streams of bytes, more complex devices need proc alternative is to use one full processor for each IO devices coroutine exa mainframe channel processors [Salus] p148 IBM 360 chan proc separ progr exa Commodore 1541 floppy with own 6502 in drive, CBM 8050 even second 6504 exa PC Adaptec AHA-154x actually has an own 8085 with its own RAM/ROM exa I2O for PCs [Byte] 97-5p51, [Byte] 97-8p85 [Byte] 98-2p40IS11 I2O, NT supposed to be beating Unix [Byte] 98-4p47 I2O IxWorks OS from Wind River, from their VxWorks [ct] 97-5p32, [iX] 96-12p126, [Uo] 96-10p50 multi-sequence processors with one IO processor per device the IO processor is idling most of the time today with microproc aceptable, but before this was an expensive use of HW instead of multiple processors single processor w single instr decoder/ALU but with multiple instruction pointers and register sets for each coroutine only IP vs IP and part reg vs IP and all reg private one set for work (main) coroutine, and one each for each IO coroutine IO coroutines block on routine switch and get unblocked by ready device a priority mechanism selects which coroutine is running this saves the slow register saving and reloading relative to interrupts this is called multi-sequence programming, used in TX-2 [Clark] p355 later also used in Alto microcode processor [Thacker] p273 HW 16 coroutines with 8 reg sets, 16*3 bit reg for linking them sheduling only on sequence, by signals from periphery cards with todays microprocessor technology (non extensible chips) difficult to do on the other hand IO processors are cheap, this technology has vanished IO speed vs processor speed [Raymond] "lots of MIPS but no I/O" RS/6000 [Byte] 96-5p173 Amdahls Law 1 MBps IO per MIPS proc [ct] 96-12p132, [ct] 98-26p80 Amdahls law IO speed far more important than proc speed for todays machines system speed exa disk access, video output, leads to wait states, is a bottleneck Intel claims that fast processors are specially good for servers but servers usually are IO (disk and net) dominated need strong IO, separate channel procs, intelligent DMA as on AHA-154x channel procs with own IO programs, shared memory for synchronisation this is because it is IO volume that counts in transaction processing processor power of typical 1990 mainframe is ca Pentium, not more colleague claims his AS 400 minicomp power is even only roughly a 286 386DX16 memory has 8*32MBit/s vs SCSI 4/10*8MBit/s and Ethernet 10MBit/s even 386 enough power, lots of RAM and fast IO devices count faster processors only needed for databse servers, even there IO limits even mainframes have low MIPS proc, as they only order and synchronise anec claims PC today has same "power" of mainframe 10 years ago are simply wrong, PC has same processor power, but mot memory and IO Intel also claims that fast processors make complex IO circuits superfluous but only when proc access to IO devices fast, fast bus, such as VLB or PCI also requires 1 access transfers, no polling, RAM on card, is DMA exa PC video cards, DEPCA/Etherworks Ethernet a Pentium with AT compat IO is like putting a Ferrari motor into a VW Bug anec this is analog to HI-FI super amp with bad speakers gives no advantage this comparison is really near on target as the reason is the same good processors/amplifiers cheap, good IO devices/speakers expensive Buses and Slots [Byte] 89-9p296 S-100, AppleII, PC, AT/ISA, NuBus, MCA, [Elektroniker] 89-6p59 exa PDP 8 bus, Altair/S-100/IEEE 696 bus, Apple II slot, MPF-II 40 pin Z80 bus exa Kontron ECB bus [ctk] 87-1p167 Z80 Bus used in Europe vs S-100 in US exa PC/XT/AT bus [ctk] 91-11p336 and 91-12p313 AT-Bus, [mc] 87-2p30 exa VME bus [ctk] 89-4p269 VME, Sun S-Bus [Byte] 92-5p283 exa NuBus MIT Lisp WS, LMI WS, later TI WS, Macintosh II and NeXTcube with only 20mA serial lines a bank of ports was enough IO devices same also with multidevice cables one or a few ports sufficed with magtapes and disk controllers more and more IO device types appear with user input/output and laboratory control it becomes even worse users want diff combinations, connection flexibility becomes neccessary IBM PC with many flexible components vs Macintosh with few fixed configurat PC won because of human individualness, counts more than efficiency despite all the efficiency and return-on-investmant talk from managers anec cars, from "any colour if black" via model palette to flexible config a bus is a set of data, address, control, IRQ, DMA and power supply lines on these lines plugs and mech fixtures (slots) are placed at regular interval cards with the desired input or output circuits are plugged into the slots slots be can built into the main electonics board, exa Apple II, IBM PC extreme case is main board with one external slot, exa C64 expansion port or processor on a card and slots on passive backplane, exa PDP 8, S-100 backplanes are service friendlier for processor board swaps for accessing devices by software first different forms of IO instructions, then unified requires IO addressing based on devicetype+actualdevice anec this unification later also in Unix with driver conventions IO instr and addresses (PDP 8 [DEC1] p3-10 IOT instr, 8080 IN and OUT) vs memory addresses (PDP 11, Alto) w input load instr and output store instr these addresses must be uniquely choosen for each device by DIP switches, jumpers or EEPROMs on cards, exa PDP 8, IBM PC must be yet unused ones, else address clash, leads to IO device crash base of PC expans horror, suffic for techies/labs, not normal office users Apple II geographic addresing, every card has reserved address [Byte] 84-12pA71 better for non techies as no setting of addresses, it simply works also cheaper to implement, 1 chip on motherboard instead of 3 per IO card this system was expanded on Macintosh NuBus, base of its plug and play XT and AT (ISA) bus [ctk] 91-11p336 and 91-12p313 AT-Bus, has spec IEEE P996, [mc] 87-2p30 also PC104 AT/ISA bus on 2 2.54mm pin connectors is the center part of the IBM PC, the most widely spread computer [Byte] 82-1p78 Ciarcia MPX-16 [ct] 88-3p90 PC and proc, 88-4p196 timer, 88-5p204 UART, 88-6p166 LPT 88-7p164 system control PIO, 88-8p174 IRQ/PIC, 88-9p178 DMA 88-10p212 video 88-12p196 clock/cmos] [ct] 96-7p110 modern Pentium PCs [ct] 97-1p288 ATX motherboard format, vs XT, AT, BAT, LPX, NPX [ct] 98-6p170 PC99 specification, [ct] 98-23p244 WTX large aired case [ct] 2002-19p188 SMP APIC in single processor systems designed as small series of machines (ca 250'000) [Byte] 90-9p414 PC creation, [Byte] 91-8p336 IBM PC long way, beginnings with a disk based DOS, glass TTY and CLI for use by engineers and lab personal, no userfriendliness required requires and allows low development costs and simple system structure became most wide spread computer model because of accidental timing of appear, micro revolution, no other dominant 16 bit IBM name, unknowing business users, you don't get fired for buying IBM anec despite the PC being designed as a laboratory device it was made by the Entry Systems division [Byte] 91-8p336 Stop Bit it was an open design, everyone could copy and expand it even circuit schematics and BIOS listing included in [Raymond] "TechRef" this way due to design by a hackish group around Bill Estridge standard interfaces, many components, flood of configurations this encouraged lots of clones, widened market, made it the standard many people never bought IBM, but buying clones expanded IBM SW market this also made the originals more interesting to those who buy IBM case of sharing being good (better much of big market, than all of small) IBM still sold more PCs than any of the cloners until about 1990 IBM originals today perhaps 20..25% of systems, most are Taiwan&Clonix but IBM still sells more than entire Macintosh market volume note that only the IBM hardware is open, not the Microsoft software on it despite Bill Gates claim that DOS, not Unix, is real open software but is not modifiable, no source available for it, no public developm Microsoft defin of open is WOSA, everyone use Windows, then no problems vs real meaning, systems based on public access/extendable standards the PC is a typical example of problems of "as good as necessary" designs in time requires more and more patches, gets complicated and unreliable anec "god had only 7 days for world because he had no installed base" it has cost the world billions of dollars in wasted time [PCW] 95-4p321 non consumer ready ad hoc mess IBM engineer see this often, call it broken as designed [Raymond] "BAD" what supprises me is not that it fails so often, but that it ever works is tribute to designers that they have come so far despite obstacles anec "any comp designer can make a better system while sleeping in bath" 20 bit memory addresses limited by 8088 to 1MByte 00000-9FFFF for system RAM (the famous 640k limit) A0000-BFFFF for memory mapped frame buffers of video cards C0000-FFFFF for BIOS ROMs (boot, disk controller, SCSI, Ether), Basic ROM missused for memory mapped IO (DEPCA Ether), expanded memory (EMS/EEMS) and highloading drivers, this results in the big mess with emm386.sys 24 bit extended memory addresses (only on AT bus, with 286+) 100000-10FFEF additional 64k-16 bytes accessable in real mode, known as HMA because S+O FFFF0+FFFF gives 10FFEF is greater than 0FFFFF on 8086/88 or XT bus this would give 0FFEF because addresses wrap round on the AT keyboard BIOS A20 gate is used to emulate this behaviour [Byte] 92-8p293 exorcising poltergeist, [Byte] 93-1p104 Pournelle anec 486 board changed because himem.sys autodetect of A20 mode failed under MS-DOS the HMA is managed by himem.sys HMA is used for the dos=high command of MS-DOS 5.0 and above only one progr in HMA possible, dos=high only utilises ca 35k of it thats why 5.0 and DeskView on 286 better no dos=high, put DV up there anec himem.sys was originally introduced for Windows together with EMS and XMS it lead to Windows being a mode museum 100000-FFFFFF, known as extended memory (XMS) requires SW that will run in protected mode for MS-DOS progr to access XMS switch to prot mode and back to real mode for programs in XMS to access MS-DOS use a DOS extender will copy data to temp buffer in bottom 1 MByte, switch, call MS-DOS on 286 the protected mode flag can't be reset by programs Intel thought nobody using 286 would ever want to return to real mode only official way to reset processor is with a short reboot first the keyboard BIOS (same as for A20) was used to reset 286 later missuse of tripple fault halt pin [Byte] 86-10IIPp136 which IBMs AT motherboard designers had wired to reset pin usually done by setting length of a segment to 0 and reloading GDT even later undocumented instruction loadall used, no reset any more exa MS-DOS Ramdrive, Smartdrv [ct] 90-11p362, OS/2 DOS box but loadall only on 286, emulator only in some 386 BIOSes, crash anec in MS-DOS hole filled with zeroes at address for loadall on 386es Intel corrected this, the protected mode flag can be cleared to completely avoid mode switching for extended memory access switch once into protected mode and then immediately back to real with size field in selector cache of FS set false, 4 GByte segment this works on the 386 according to [ct], 486+ I don't know this is undocumented behaviour, but was a neat hack in MS-DOS days max 16 MByte memory is possible, even on a 386DX or above for addressing more you would need a 32 bit address bus anec Videoblaster wants 2MByte, only 12MByte left IO addrs XT 0000-03FF (10 bit restrict), AT XT+0400-05FF,0800-09FF,0C00-0FFF problem with 16 bit IO addr, exa S3 video and 10 bit decoding COM4 cards AT extensions limit adapters to ATs, therefore not used often geographic address would have increased IO addresses pro card and avoided all the IO address setup problems, same for IRQ setup would have also allowd boot disk selection by card positioning on bus IRQ lines XT 8, AT 15 (2*8-1 cascade) of which many are in fixed use every device must have its own IRQ line, no sharing because interrupt controller programmed on edge trigger, not level trigg anec under DOS 2 devices can share and interrupt line if neither issues an interrupts before other has released int controller and the second loaded ISR passes through IRQ when its HW not active exa Pauls TI TM4000M OPL sound generator and PCMCIA controller both on 10 DMA channels XT 3 (1 of 4 is reserved for RAM refresh), AT 7 (2*4-1 cascade) every device must have its own DREQ and DACK lines, no sharing all address registers are only 16 bit, work only in 64k byte/word pages need page switching registers to set page, no autoincrement of these can only transfer data into bottom 16 MByte of 386+ address space doesn't go through 386 PMMU, requires address mapping by drivers DMA ctrl is faily slow (on AT02 3MHz*2Bytes), 286 equal fast, 386 faster bus master DMA XT none, AT 1 is very fast (full bus speed), exa [ct] 92-4p76 SCSI with busmaster but requires many circuits (own address generator), result seldom used no page register problems like DMA controllers but still 80386+ MMU mapping problem, requires mapping SW, exa aspi4dos only 1 card can use it at a time, if 2 want it collision exa AHA-154x and PAS-16 sound card clash [Howto] "Sound" therefore own dual access RAM on adapters with large data transfer rates access via upper mem addrs like video, exa some Ethernets (DEPCA, EWRK3) or via IO addrs like disks, exa other Ethernets (NE 1000/2000) difficult to configure for selecting mem, IO, IRQ, DMA it uses jumpers/DIPs or EEPROM on cards requires lots of fiddling around with jumpers and config files must be done for every individual PC becomes even a worse problem, when docu lost, print docu onto the card fixed addr for video adapters, disk drives get in way, user must know no auto detect for zero/one/multiple devices of one type result the bus is the most troublesome part of the PC, XT, AT hardware anec 1/4 of all multimedia upgrades get sent back to manufacturers on AT technically complicated because of XT backward compatibility [Protech], [Byte] 87-9p115 POACH AT for 8 bit IO cards address transformation, byte swapping required 83 ICs on original AT board for this lead to integrated chipsets [CTI], [ct] 92-6p118 chipsets [Byte] 97-8p32IS6 mainboard developments [ct] 95-10p332 Intel Triton und Neptun, [ct] 97-8p180 586 chipsets [ct] 2001-6p326 chipset evolution [ctk] 94-12p327 chipsets SiS since 386 programmable, parameters in CMOS, start slow, load load should only be done after Setup question, re-Setup after crash anec in 1988 already full XT glue logic on one single 120 pin chip anec on 680x0 bswap in processor since 68000, MOVEP instr [Byte] 93-5p346 slow transfer rate, 4M*2byte/s from AT03 8 MHz, but some run it faster this lead to alternative faster PC buses Micro Channel Architecture (MCA) and Extended Indust Std Arch (EISA) [Byte] 89-9p296 bus tour S-100, AppleII, PC, AT/ISA, NuBus, MCA [Byte] 89-11p417 PC, AT/ISA, EISA [Byte] 92-3p136 sytem bus or system bottleneck, which Micro Channel? are fast, but expensive (motherboard and plug-in card complexity) best used for servers (multitasking), but failed on desktop both allow multiple bus masters and periphery processors got used, many EISA bus mastering cards appeared, SCSI and Ethernet both have on card identification numbers of driver autodetecting on MCA 16 bit manu+card given by IBM, on EISA 32 bit manu by comitee anec MCA failed because IBM licensing [Raymond] "Classic C" with X = PC EISA even has geographic addressing [Gilluve] p164 but EISA also despite this setup disk needed, when lossed HW is dead VESA local bus (VLB) [Byte] 92-10p122 VLB, PCI and QR is a direct connection to the data/addr busses of an 486 processor transfers data at 33..40M*4byte/s, inofficial also 50M but this can make trouble, some cards fail at high speed max 3 cards on 33MHz bus, max 2 on 40MHz, usually only 1 video card only more memory and IO speed and width, no IRQ or DMA lines if a card wants these use those on AT bus, exa disk/net controller cheap to implement, successfull, became standard on 486es Peripheral Component Interconnect (PCI) [Byte] 92-10p122 VLB/PCI/QR, [Byte] 94-2p177, [PCW] 95-5p404 medium level between VLB and AT, buffered like AT, but near VLB perform multiplexed addr+data, uses burst transfer, one transaction addr+n*data indep of proc speed max 33M*4byte/s (in burst mode, else half of that) will not speed up more like VLB, but no trouble with fast proc with proc with extern more than 33MHz waitstates are needed with 40 or 50MHz that gives a PCI speed of 20 or 25MHz, 66MHz are 33M on the other side it is 80x86 independant, also AlphaPC, PowerMac anec Alpha 21066 even has a full PCI controller on-chip PCI has IRQs and also mult bus mastering, exa for disk/net controllers PCI and VLB will work together on the same motherboard exa J437 486 motherboard VLB primary bus, PCI and AT via bridge chips PCI has card IDs for autodetecting, like MCA and EISA base for plug and play, but it doesn't work, often called plug and pray [Byte] 94-9p78, [Byte] 95-10p36, [Byte] 95-10p52 the new PC [ct] 95-3p130 plug and play, BIOS calls, hardware realisation [ct] 95-11p160 Win95 PnP ISA and PCI, [ct] 96-2p266 PCI BIOS [ct] 97-2p114 PCI/PNP IRQ problems, [ct] 97-10p316 ISA PNP [ct] 97-13p284 ISA plug and play [ct] 2000-11p258 PCI interrupt sharing and allocation [ct] 2001-8p254 PC BIOS DMI managemen, [ct] 2001-12p236 BIOS features [PCW] 94-11p325 [PCMag] 95-4-11p95 out of box experience, work right first time but it did not, was just marketing blabla, customers pissed off PCI hot plugging and power managment [Byte] 97-7p23, [ct] 97-5p30 PCI and PowerPC gives PReP [iX] 94-4p170 Advanced Graphics P? (AGP) [ct] 97-10p238 AGP only for one card (graphics), only on Inter motherboards System Managment Bus (SMB) [ct] 97-14p210 periphery buses, for connecting external devices [Byte] 97-2p40IS11 in the line of fibre [Byte] 97-3p89 USB vs Firewire vs Fibre Channel vs SSA vs SCSI [ct] 97-2p284 Firewire, SSA, Fibre Channel [ct] 98-13p222 optical cabling, [ct] 2000-19p238 optical printed circuits [ct] 2001-15p134 USB 2.0 vs Firewire IEEE 488 (IEC 625) [ctk] 87-9p187 IEC on Commodore systems IEEE 488 bus is used like a LAN with a single client file system code is on separate processor in the disk drive, file server anec for copy two friends with each one disk drive and fast copy prog switch one on, set address to 9, then sw second on (default addr 8) printer is a print server, SPOOL from disk to printer without main CPU VIC-20 and C64 serial bus [Angerhausen] derived from IEEE 488 slow, should have used 6522/32 shift registers, or used full parallel 488 anec SPOOL from disk to printer worked, but after locked up, reboot SCSI [Byte] 89-2p293 SASI (1.5), SCSI (4), SCSI-II (10), IPI (80) [Byte] 90-2p267 and 90-3p291, [Byte] 90-10ISEp187 SCSI II [Byte] 90-12p361 Macintosh and PC SCSI programming interfaces [Byte] 94-8p111 SCSI and beyond [Byte] 95-5p52 UltraSCSI, [Byte] 96-8p126 UltraSCSI 20MHz [ct] 86-8p60 Festplatten SASI und SCSI, [ct] 89-11p136 [ct] 92-4p68 SCSI with busmaster, [ct] 93-11p98 SCSI details [ct] 97-2p118 SCSI install, [ct] 98-2p182 SCSI howto [ct] 97-17p184 SCSI done properly, [ct] 98-17p184 SCSI course [ct] 98-18p192 SCSI course part 2 trouble shooting, [ct] 98-19p264 part 3 [ct] 99-5p268 U-SCSI active terminator, [ct] 2000-18p168 U-SCSI clocking [ctk] 87-8p183, [iX] 93-7p108, [iX] 95-8p122 SCSI-3, [iX] 96-9p132 SCSI mix [PCW] 96-3p96 SCSI derived from SASI bus from Shugart Associates (later Seagate) bus allows 8 IDs (one bus adapter and 7 device controllers) anec 2 adapters (Mac IIcx, PC AHA-1542B) and 2 devices (Mac HD, Syquest) no problem w both working, so long only one accesses a device at a time each controller can have up to 8 LUNs (drives) as in mainframe channels but usually today embedded controllers, only one drive each anec in Pioneer CD-Minichanger LUN to select between the 6 CDs multiple signalings single vs double ended, multiple plugs ANSI vs Mac terminator and termpower jumpers, see VAXstation plug for better solution multiple speeds/sizes SCSI-I vs SCSI-II, normal/fast/ultra, normal/wide anec NeXT uses NCR 5390 SCSI-II chip but SW only does SCSI-I Macintosh ADB for user input exa keyboard, mouse, 2nd mouse, hand scanner, even missused for modems Access.Bus [Byte] 94-8p117 USB [Byte] 95-6p30, [Byte] 95-10p54 [ct] 95-11p360, [ct] 97-2p292, [ct] 98-1p74, [ct] 98-15p168 not quite here [ct] 2002-17p176 USB for measuring and control, making devices [ct] 2002-19p196 USB motor controller, [ct] 2003-1p171 USB motherb pinout [Uo] 96-8p58, http://www.teleport.com/~usb/ is integrated in Intel motherboard chipsets but not spreading, to high cost of peripherals [Byte] 97-2p40IS6 IEEE 1394 Firewire [Byte] 94-8p117, [ct] 95-6p126 [ct] 2003-10p166 Firewire 800, [PCW] 94-8p444 ftp://ftp.apple.com/pub/standards/p1394 SSA [Byte] 95-5p52, [iX] 96-11p152 fibre channel [Byte] 94-8p123, [Byte] 95-5p52, [Byte] 96-5p173, [Byte] 97-2p40IS11 [ct] 95-6p126, [ct] 97-9p254, [iX] 95-4p146 PC internal and periphery bus hierarchy [Byte] 94-8p109, [PCW] 94-5p525 graph Device Drivers device input and output requires some very complex routines on the other side functions to be done by these are the same for each progr after a while generalised sets of routines were collected as standard IO libs these routines could be used by any program multiple types of IO devices, hardware independance is desired IO libraries are modules to hide device details behind standard interfaces insulate HW details like other modules hide data structures Unix [iX] 96-4p178 writing Unix drivers table of pointers to drivers for device access 8/8 bit mayor/minor (driver/device) numbers split into character (byte streams) and block devices (for filesystems) each type has space for 256 mayor numbers in most Unixes for each block device corresponding char device [Leffler] block /dev/xxx (for mounting), char /dev/rxxx (raw device for fsck) for naming special inodes in /dev/*, must be generated by system admin pseudodevice /dev/tty, nickname for actual terminal in use, exa for editors better than this would have been system call to get real device or to put the real devices name into an env var, like X server in DISPLAY pseudoterminals pty/tty[p-q][0-f], for data exchange with spawned subprocess exa used by XTerm or telnetd to communicate with respective spawned shell anec on NeXT ttyp1..3 last usage date from Terminal.app (equiv of XTerm) anec Linux mayor numbers 4, 5 mess [Beck] p178 1.0.8, 1.2.9 ls -l /dev/* console/tty[0-8] 4.[], ttyS[0-31] 4.[+64], cua[0-31] 5.[+64] tty 5.0, tty[p-s,0-f] 4.[+192], pty[p-s,0-f] 4.[+128] vs NeXT console 0.0, tty/ttyd/cu{f}[a-b] 11.[+0/+64/+192{+32}] tty 2.0, tty[p-q,0-f] 4.[], pty[p-q,0-f] 5.[] VMS serial lines TT[A..Z]n:, LAT logical terminals LT[A..Z]n:, disks DU[A..Z]n: Apple II drivers in ROMs on controller cards [Byte] 89-9p300 Commodore CBM series, exa C64 kernal ROM function entries, list of jump instr to actual routines same functions at same address on all models many of these jumps are indirect ones via a vector table in RAM expansion card ROMs and resident routines from tape/disk can redirect them exa C64 user port missused as Centronics port for standard printers load driver in to unused tape buffer and hook output vector for device 4 CP/M BIOS at top of memory BIOS entry table, list of jump instr to BIOS routines see Z80MU [Byte] 89-4p304 usage of HALT instruction for table structure below it BDOS entry point, called indirect via CALL 0005 with function code, internal jump addr table below it the CCP command line and ev the DDT debugger BIOS information block at 0000H..00FFH user program starting at 0100H up to OS begin (recorded in information block) IBM PC BIOS [Byte] 87-10IIPp173 IBM PC family BIOS comparison [Byte] 89-4p303 PC BIOS functions, usage, POST, ROM scan [ct] 95-3p314 BIOS POST card, [ct] 95-3p318 BIOS POST codes [ct] 96-1p260 BIOS setup and update [ct] 97-3p344 and [ct] 97-4p402 BIOS setup programs [ct] 98-15p98 Internet PC help, [ct] 98-26p142 POST cards drivers in motherboard BIOS ROM, exa keyb, video, beep, floppy, HD, par/ser but no built in support for SCSI, CD-ROMs, requires problematic extensions BIOS extension ROMs on cards, exa SCSI, network, should allow any hardware do this by hooking the standard BIOSes INT 1x call addresses IBM PC IRQs, BIOS entries, DOS entries via INT vector table for hooking but the PC/XT/AT bus has no geogr addressing or slot select signals as result of this no reserved space for ROM drivers, difficult to use also boot ROMs often restrict even further IO address selection exa AHA-154xX can only use built-in boot ROM if IO addr set to 330H users and manufacturers avoid ext ROMs, prefer to use only motherboard ROM this requires devices that are binary compatible to IBM originals leads to crippled backwards compatible stuff, limitations on expanding on motherboards for cheap systems parallel/serial/floppy/IDE on board some even have a video adapter or even sound card integrated, full system HD controllers and HD BIOS INT 13 interface HD BIOS first only a few fixed drive sizes, like floppies requires setting to too small a drive and then set it right with Drivparm command in config.sys later BIOSes with type 47 drive with user entered drive parameters BIOS INT 13 call interface limited to 1024 cylinders the BIOS can not boot from tracks with numbers above 1023 exa AHA-154x maps linear SCSI sector numbers to 64 heads, 32 sects BIOS acces (and booting) only from the first 1024 MB of a SCSI drive entire bootable partition must be in first GB of the disk why don't they use 128 or even the full 256 heads on drives > 1 GB this would allow booting from first 2 or even 4 GB as I want 4*500 MB with 4 bootable OSes on my 2 GB patched ROM this mapping of sectors numbers makes HDs partitioned on one SCSI type unreadable on an other type of SCSI, exa Adaptec vs FutureDomain disk controller register interface defined only for ST 506 (MFM, RLL), ESDI no standard for SCSI adapters [Byte] 90-11p186 fuzzy side of SCSI requires all the mess with setting IO addresses and boot ROMs leads to IDE driv, also ATA, ATE or AT-Bus [Byte] 91-3p317, [PCW] 96-3p95 IDE adapter with 1/2 drives simultes 1 MFM controller with 1/2 drives sometimes problems with 2 different drive types as master and slave unlike SCSI only usable for hard disks, no other disk types or tapes use same mechanics as SCSI drives, exa Conner 3100 (SCSI) vs 3104 (IDE) but a different controller board, but often big price difference IDE low cost market, reduced controller, small cache, only boot RAM SCSI high speed market, more powerfull controllers anec there one existed SCSI adapters with IDE-like interface to IDs 0/1 but they never really worked, manufacturers too early, cust gave up IDE speed limited by AT bus and polling to max 1.5MB/s [ct] 92-2p94 AT bus am Anschlag, [PCW] 95-4p434, [PCW] 95-5p492 if 2 different speed drives the slower one dominates [PCW] 95-5p376 also if in fast 486 or Pentium no faster than on 386 IDE size limited by WD1006 ctrl and BIOS interface [ct] 98-11p165 PC HD size limits and where they come from numbers passed in CH C7..0, CL C9..8-S5..S0, DH only head WD1006 ctrl 65536 cylinders, 16 heads, 255 sectors, 512 bytes BIOS calls 1024 cylinders, 256 heads, 63 sectors, 512 bytes result (min) 1024 * 16 * 63 * 512 = 504 MByte requires track mapping controller for drives with more than 1024 tracks but less than 16 heads or 63 sectors, to be smaller than 504 MByte anec Micropolis 1GB fools BIOS as ctrl with 2 500M [PCW] 95-11p266 but this trick will fail with 2GB or even with any size 2nd drive requires track mapping BIOS for drives with more than 504 MByte anec 1503 870 MByte have mapping BIOS driver as pseudo OS boot block this installs itself in memory and then does the real OS boot drive knows PC BIOS conventions, problems in Alpha, Macintosh, PA? E-IDE to circumvent IDE limits, also called ATA-2 [Byte] 94-3p97, [ct] 95-3p230, [ct] 95-8p168, [ct] 97-4p264 UDMA/33 [ct] 97-9p268 IDE Ultra-DMA (UDMA), [ct] 98-22p216 EIDE full speed [PCW] 95-1p519 E-IDE 1/2 adapters simulate 1/2 controllers with their drives 4 drive, also CD-ROM/tape, more capacity (lin sect), higher speed (DMA) but little experience yet, E-IDE problems [PCW] 95-8p672 also confusing many PIO modes, ultra DMA [ct] 97-4p364 SATA [ct] 2002-16p186 anec IDE simply means embed controller, SCSI is also embed, some object RS-232 ports and COMx BIOS only 2 ports or problems with shared interrupts multiple devices of one type can not share addresses or interrupts for some funny reason COM1 is IRQ4, COM2 is IRQ3, also LPT 1-7, 2-5 standard BIOS routines not interrupt driven [Byte] creation of PC contradic require direct access to hardware by every user program this prevents changing of the flawed device design (irq lines) [Byte] 91-4p143 high speed, [PCW] 92-3p318 serial killer [PCW] 96-2p199 PC COMx history 8250/16450/16550, PS/2 trouble w 16550 [ct] 92-2p170 16550 even with a new BIOS on card to allow better cards/routines no luck bad BIOS interface no read/write string function, only read/write char printer/parallel/LPT ports, [ct] 98-22p164 from printer to parallel port missuse for fast communications and for attaching external drives exa Laplink&Co, Linux PLIP, Linux digital joysticks exa parallel port tape, IOmega drive, Trantor T338 Mini-SCSI, Ethernet SPP/EPP/ECP [ct] 94-7p120, [ct] 98-22p164 but such devices are slow (max 200kByte/s), can not be booted from first used 4 data lines cross-wired to 4 status lines then full 8 bit bidirectional port on PS/2 then Xircom enhanced printer port (EPP) with HW handshake [ct] 94-7p120 then Microsoft encanced capability port (ECP) with FIFO and IRQ/DMA standardised in IEEE 1284, http://www.fapo.com/1284int.htm port through-connection problems for printer behind an ext device no through connection when the device is switched off VCR manufacturers since decades know that this is neccessary for keyboard, video and sound BIOS problems see interactive and timesh part BIOS configuration first with jumpers, inflexible (only a few bits) later CMOS RAM and SW on setup (diagnostics) disk, very late SW in ROM same lots of plug-in adapters still use jumpers those with SW often use setup disk, very bad because when the disks go lost the hardware becomes useless also setup programs are OS dependant and require direct HW access exa ISP16 sound card setup, will not work under NT, access violation exa DEC EWRK3 setup with nicsetup.exe, will not work under Linux better put setup SW into ROM, trigger on boot with hotkey exa Adaptec AHA-1542CF uses Ctrl-A for its SCSIselect utility MS-DOS [Duncan] in memory first BIOS data, then io.sys drivers, msdos.sys OS then config.sys OS data extensions and drivers, then resident command.com as last TSRs loaded by autoexec.bat, rest user progr and transient c.com this memory arangement uses the 8088 segments to give each a base address is a form of position independant code (PIC), relative addressing to segm this works for stuff smaller 64k (io.sys, msdos.sys, most driv, c.com) for larger stuff multiple segm are needed, segm reg reload pos depend far addr corrected by program loader, requires reloc info, .EXE files for dyn allo memc from rest Unix derived malloc/free, used with exec/wait but spawned programs get entire CPU, caller sleeps if no IRQs caught .EXE and mem man were added in version 2.0, in 1.0 none like in CP/M limited extensibility char and block drivers in config.sys exa ansi.sys (con: replacement), aspidisk.sys also missused character drivers exa himem.sys, emm386.sys, mouse.sys, aspi4dos.sys even io.sys internal clock$ [Duncan] isn't a proper driver char driver nametable in memory built up from strings in driver code is less hassle than Unix /dev/* directory built by system admin, better is one of the few things where MS-DOS is simply better than Unix but config.sys no file include= facility for including a netconf.sys file also no set= for env var in config.sys (in OS/2), needed for net load buffers, fcbs, files, stacks only conventional memory, not in UMBs or HMA QEMM has set of utilities to move them into UMBs, bend pointers to them TSRs in autoexec.bat drivers, networks, programs that install themselves resident in memory exa mouse.com, mscdex, fastopen, redir, interlink, background printing anec use undoc function to get drive letters for mscdex, redir, interlink anec config.sys install= to load them from there instead of autoexec.bat autoexec.bat is then only used for setting personal stuff, not hardware this was very usefull in MS-DOS 5.0, since Win 3.1 smartdrive fails it lack of IO driver access standards forces SW to access HW directly leads to inflexibility in upgrading HW and lots of incompatible extension once PC became a standard backward compatibility became a big problem result IBM PC is the computer that makes the most sys admin problems Booting first drivers+fileaccess+userprogram were one big file then drivers+fileacess+cli+tools, the operating system only user programs were loaded from separate files then drivers, fileaccess, cli, tools, user program all separated separate driver code from rest of system for easier replacement without relinking every program on every hardware change file access routines are also loaded residently like drivers to reduce program size on disk, leads to first simple operating systems similar in scope to early PC OSes such as CP/M and MS-DOS anec Ernst IBM 360/370 DOS (later DOS/VSE) more like CP/M than MS-DOS CLI+tools as a single separate user level program, the shell leads to a simpler OS, only kernal, exa Multics, VMS, MS-DOS in Unix even all the file tools are cut out of the CLI as separate programs exa Unix shells sh/csh/ksh/bash/tcsh/zsh [Byte] 83-10p187, [Byte] 89-9p315 originally only few built in commands, all tools in /bin/* but later monster-shells have everything but the kitchen sink built in resident OS access by user programs, CLI and tools via special call instructions, these are known as system calls or one call and behind it a table of entry points, jumps to actual routines to allow the user programs to find the OS routines use fixed address, jump vector or user program issued trap [Tanenbaum] p17 to load all of these resident into memory, to build up a system after power on is known as booting the computer, follows on after resetting the processor first computer systems had to be loaded everytime by hand from front pannel for entering speed and less errors also optimised for minimal size [Raymond] "boot" historical note anec Seymour Cray knew bootcode of CDC-7600 off by heart [Pest] to simplify this and to make it less error prone automated boot process program in ROM catches processor after reset (provides first instruction) this program finds a boot device and loads the OS from it at the beginning processor self reset, then fetch first instruction 8080/Z80 boot from 0, 6502 vector at 0xFFFE, 80x86 boot FFFF:FFF0 680x0 boot first 2 vectors in 00000000..000003FF space anec 680x0 needs first vectors in ROM, later rest for interrupts in RAM vs 80x86 where irq vectors at 0000:0000..03FF in RAM and FFFF:FFF0 in ROM exa Alto boot by world swap with a system image file [Lampson] p302 exa CP/M bootable disks the first few tracks, before file system exa IBM PC boot ROM, boot sector, OS loader, kernal, config files [Duncan] booting only from first floppy (drive 00H) or first HD (drive 80H) allways first boot from floppy attempt if not modern switchable BIOS even these only allow exchanging 00H and 80H, why not list of any drives BIOS extension ROMs allways add their drives after the existing ones booting from such devices is only possible if no motherboard BIOS devices booting from CD-ROMs allways impossible, but I can't see reason for this why can't I set CD-ROM as 80H and HD as 81H, would be good for OS install of course after installing then switch back to HD as 80H for booting would require boot loader on CD-ROM, but I have never seen such a CD-ROM PC BIOS "El Torito" standard for CD booting [ct] 96-12p72 booting from partitioned HDs requires intermediate boot loader in MBR uses an active partition bit, to decide which partition to boot from anec MS-DOS fdisk /MBR switch for rewriting MBR program is undocumented anec MS-DOS will only boot from first partition of first disk booting from an extended partition is not possible no second boot loader in subpartitioning MBR but OS/2 boot manager can load from logical partition [PCW] 95-11p267 boot from a partition on disk D: via boot manager impossible boot sector reads rest from first disk, OS/2 boot manag swaps disk IDs will not even boot from an other partition than the first will also not allow 2 primariy partitions on a disk, rest in extended fdisk will not even set active bit on disk 81, "you can not boot from D:" anec Windows 95 always overwrites MBR, kills OS/2 boot mgr or Linux LILO install LILO in Linux root partition, after Win95 use Fdisk to corr MBR the MBR is a common resource for all OSes, no one should alter default original MBR should be treated like BIOS code, better even in BIOS anec early VAXen could be booted from tape, even used tape as paging device --- Interactive Systems Interactive Operation early computers stood still while the user entered/edited progr at the console batch systems abollished this as costly time waste, but lost interactivity at the same time research systems were expanded interactivity with run time IO important for an interactive system are its output devices interactive systems require dynamicaly updated display of program state teletypes not flexible enough for interactive displays, no updateability also use all the possibilities of human sensory system (sound etc) this also applies to some non interactive systems, but here it is crucial but the essence are the input devices for influencing what it does anec on Whirlwind interactive called manual intervention (MIV) [Ross2] p56 interactive systems require control of the running program human ability to express desires (motor sys) limited rel to sensor abilit question should not be "for what is this input device good" but "what device can use all the possibilities of human motor system" input devices must provide a mix of control info and input data input reaction time of program is critical in interactive systems notice below 0.1s, accept below 0.3s, annoying over 1s users want to type ahead without keyboard "losing keys" input must be captured and stored in buffer before lost work program calles routines to fetch input from the buffer this is the main usage of IRQs today (together with system clocks) program must be able to test for input in buffer without blocking the processor and program are simply sandwiched in between for connecting program waits for input, reads it, evaluates it, outputs and repeats wait interactive is reactive, user tries something, sees what happens, refines it like composing music on an instrument, programming becomes program composing this allows explorary programming, experimenting, prototyping if in a "I don't know how further" situation just attempt something delete if it turns out bad (only loses time, doing nothing loses also) keep a copy of last working version for restoring old state using computer to experience problems behaviour, solve it [Licklider2] p123 writing programs is simply one form of problem to solve by experience gives shortest time to result because of no unneccessary waiting by user efficient usage for users time [Brooks] p131 but inefficient on hardware specially debugging programs become effective, even more than with console users were assigned blocks of time as single user 15 minutes..multiple hours in days when computers cost millions this was very expensive (ca $100.-/h) this lead to minicomputers to reduce the cost of usage, make using easier exa DEC PDP 1 (1960, 4..32k*18 memory) [Salus] p19, [Levy] p50 essentially a commercial version of the TX-0 first computer cheap enough ($120'000) to not worry about costs [Levy] p52 exa LINC (1963, 1/2k*12 memory) [Clark] p347 laboratory instrumentation computer for data analysis in life sciences programmable data analyser instead of fixed function circuits for its time cheap enough to be used as piece of laboratory equipment with 2 block access tape drives and pixel plot display ca $32'000 anec also first home computer, Mary Allen Wilkes writing LAP4 [Clark] p381 this creative freedom of interactive systems lead to hackers [Raymond] "hacker", [Raymond] "Humor, Hacker" [Raymond] Hacker Folklore, [Raymond] Portrait of J. Random Hacker when the TX-2 was in work the TX-0 was donated to MITs EE department [Ross2] p97 move 1957, [Clark] p357 corrective step to IBM batch paradigm MIT hackers from TMRC first discovered the TX-0 in 1959 [Levy] p28 then later they went on to the PDP 1, PDP 6 and PDP 10 [Levy] p50 1960-80 is known as the elder days [Raymond] "elder days", [Tolkien] is time between discovering TX-0 and AI lab desintegrat because Symbolics in 70s micros and 80s home computers and PCs expanded the hacking movement [ct] 98-24p276 15 years c't, home comuter and PC history I belong to this later group of microcomputer hackers with timesharing they had only had TTY access, with luck glass TTY big system had to be reached over TTY lines, slow in making micros these hackers found they allow the user full interactivity as in interactive systems [Levy] p314 manipulatable picture, fast editors, colours, motion, sound also better input devices, local keyboard, joystick lead to computers being usable as video games exa Atari VCS/2600 6502, 4kbyte ROM, 128 byte RAM [IEEEspectrum] 82-12p22 [ct] 98-18p88 game consoles, [ct] 2000-9p142 playstation 2 [ct] 2002-5p106 Xbox PC as console, [ct] 2002-22p92 Linux Xbox [PCW] 95-9p69 Playstation vs Sega Saturn Output Devices computer output is human input, must hit human senses very unbalanced: 90% sight, 9% hearing 1% rest (smell, taste, touch, gravit, motion, temp, thirst, hunger, magnet) computer usable sight (main), hearing (aux), touch/gravit/motion (seldom) rest too slow (smell/taste/thirst/hunger) or too unreliable (magnet) lamps, backlit buttons, process control [ct] 2001-10p148 DMX protocol for controling lights levels digital data, analog signals, power electronics, mechanics steper motors require multi wire pulse sequences, exa printers, robots numeric and alphanumeric displays [Ross2] p74 Whirlwind 8*7 segment display vs MTC charactron nixies, 7/14 segment displays (LED, flourescent) exa pocket calculators such as HP 41C, HI-FI units multielement separate connections to latches vs periodcal scanning display osciloscope CRT displays [Bell] p30 PDP 1 Type 30. [Levy] TX-1 [Levy] first videogame SPACEWAR on Type 30/PDP 1, [Raymond] "SPACEWAR" [Ross2] p74 Whirlwind 8*7 segment display vs MTC Charactron [Byte] 82-11p508 Microvec, [Byte] 90-6p380 Sketchpad, first CAD sys on TX-2 osciloscope were long used in laboratories to plot electrical signals introduced to computing via usage of computer as laboratory equipement for this the scope is run in X-Y mode, no timebase both beam deflections from applied voltages, anec Tek move amp with 2 DACs for controlling the X and Y deflections for timebase-like progrs use X autoincrement mode [Clark] p394 LINC instr intensity digital or analog Z value battlezone game used Z intensity for distance [IEEEspectrum] 82-12p20 for colour use 3 Z inputs with RGB or YUV signals [Bell] p30 colour display, [Raymond] pIX colour Spacewar anec because many control signals NLS osc+camera+monitor [Engelbart] p198 vector output converted to video out, also inverse video [Engelbart] p204 picture definition with points (give X and Y, ex autoincrement) to avoid burn in activate beam only for small time per pixel, flash it later lines (give endpoint relative to existing point, HW computes) lines faster because next pixel is neighbor, no far moves of beam later character patterns [Bell] p30 Type 30, [Ross2] p73 MTC charactron text as bitmaps (DEC 7x5 in 2*18) vs vectors (CDC, Imlac series of moves) used specially in early systems because no static picture memory consumption and devices (scopes) readily available in electronics labs program cycles through picture, in between read user input and compute large computation as result of user input produces picture flashing off makes this impossible on timesharing, needs display processor for refresh due to mix pixels/lines/chars must be flexible, CPU, reason for PDP-5 but also for text-only display dedicated char display, exa CDC console output on osciloscope based systems quite a bit of code initialising output representation structure, periodically displaying it modifying the current state of the representation of updating the display dynamic redraw, variation possible, motion display, use of LINC for this or use memory scope, exa [Ross2] p101 Memotron, Tek4014 only static picture, only add pixels, explicit all clear w "screen flash" anec tech laboratory, very delicate and expensive tube video CRT displays [Angerhausen], [Plauger3] p91 human eye physiological parameters, [Wilton] [Byte] 87-5p95 TV video signal, [Byte] 88-12p243 [Byte] 89-4p251GS PC, Macintosh, Amiga [Byte] 92-7p159 displays, p171 colour and resolution, p179 mono to colour p189 HDTV as monitor, p195 display human factors, eye physiology [Byte] 93-11p207 computer graphics intro, GUIs, video conf, 3D [ct] 88-10p212 6845, [ct] 96-6p150 features, [ct] 99-11p220 digital connector [ct] 99-20p204 TV studio computer technology, [ct] 2002-13p222 WS moni on PC [ct] 2002-17p182 HDMI digital connector, derived from TMDS and DVI [ct] 2002-23p127 DVI connector, [ct] 2093-6p216 HDTV, [ct] 2003-12p210 SCART [ctk] 87-2p143, [ctk] 89-5p275 [PCW] 92-9p304 IBM PC video cards/monitors, [PCW] 95-2p392 use existing video/television display screen technology difference normal vs trinitron, cannon, pixel triangle vs stripes, wires a television picture is a constantly updated grid of pixels is scanned by an electron beam, as if a osc had both X and Y timebase black and white just brightness/intensity signal colour would needs signals for R+G+B, 3 intensities, incompat with mono uses 1 intensity (B&W compatible) and 2 differences (R-G and B-G), YUV are packaged, NTSC/PAL UV 1:3 linear vs SECAM 1:(3x2) 2dim UV compress the comp must generate TV-like signal (raster frequences, pixel patterns) anec with too higher horizontal freqency monitor line transformer burnout exa on Juergs CBM 8032, [Raymond] "killer poke" the entire display surface is scanned make inverse video and coloured backgrounds possible on old home computers used actual TVs as monitors, or better video monitors TV computers are user driven video generators, designed backwards FBAS signal, freq gen, pixel gen, frame buffer, proc, ROM, keyb exa Apple II, Dragon, C64 1701 monitor, anec I use 1701 today as TV exa Dragon 14.318 MHz -> SAM 1.777 MHz -> 6809 0.888 MHz, anec double poke exa C64 VIC (PAL) 7.882 MHz -> 6510 0.985 MHz -> timers (keyb, RS-232) exa IBM PC CGA 14.318 MHz -> 8088 4.772 MHz -> timer 18.2 Hz CGA was designed for output onto a television or video monitor lead to 40 char/line standard mode (INT 16 mode 0), will show on TV anec in 1995 my 1990 386+SVGA once on a parity error while mem count went into 40 char mode, to see how awful it looks do MODE CO40 anec later processors and video cards both used own faster quarzes but orig quarz still on motherboard, used for timers, beeper, bus pin today actually proc from 14.318 with PLL chips, video also own 14.318 some claim that with HDTV computers will again use TVs but reason for TVs was cost, later only specialised computer monitors more likely computer monitors tubes will be used for future TV picture definition with characters/cells exa VT05 72x20 chars of 5x7 pixels in 6x8 cell actually with pixels half width of height 5x5 pixels looks better 5x7 only use for characters with descenders (fgjpqy,_), VT05 only ,_ exa C64 40x25 chars of 8x8 pixels in same size cell also has 40x25 char 4x8 pixel 4 colour mode, but no 80x25 4x8 2 colour exa PC MDA 80x25 chars or 8x14 pixels in 9x14 size cell anec char 0xC0..0xDF stretched 8th pixel, reason for irreg PC ASCII can be seen as missfeature in character GUIs using chequered flag char also on VGA, graph 640x480 but char 720x400, some VGAs corr chequered VGA char on 640x480 LCDs drop every 9th column, 40 line black bands characters 6..8..more bits, 6 for TTY 64char, 7 full ASCII, 8 extend ASCII saves memory, only a few bits per char, character code and ev attributes attribute charset, bold, underline, inverse, blinking, colour, doublesize but increases refresh transfer rate, 2 mem reads, char code and bitmap this reduces maximal resolution, unless pipelined w 2 separate memories also limited flexibility, no proportional text or random graphics originally only ASCII characters, later graphic characters (patterns) lowres (160x75 or 160x100 on 80x25 char) using random pixel grid patterns use above-ASCII codes, 2x3/char=2^6=64 vs 2x4/char=2^7+invattr=128 later highres with loadable charsets, softfonts, font ROM->RAM often called cell graphics (opposed to ASCII art character graphics) in beginning shift registers as video mem, exa Apple I [Byte] 84-12pA68 later normal RAM for video mem, direct access by processor char cell video vs TTY or bitmap video substitutive, not additive a char followed by backspace and _ will be replaced, not underlined anec GNUs less sets to bold, _ to underlined but interestingly _ is not underlined as on a printer picture definition with sprites exa Atari VCS/2600 2*8bit players (2+1)*1/2/4/8pixel missiles and ball exa TI 99/4A 8*16x16, Commodore C64 8*24x21, Amiga 8*32xfull vertical size exa PC accellerated video cards mouse cursor character cells make problems of displaying small fine scrolling objects for this superimpose a small bitmap object onto video data, a sprite are small 1x8..32x32 pixel graphics, are overlayed on background image cosist of small chunk of data and X/Y coordinate pair to control position allow character based displays to have fine scrolling objects [IEEEspectrum] 82-12p27 Microsurgeon design for character set anec C64 also entire background (char or bitmap mode) soft scroll 8 pixel mostly used in games for moving objects (players, missiles) also known as player/missile graphics, exa on the Atari VCS/2600 but also today on accellerated video cards as mouse cursors this prevents need of erasing cursor and redraw when background altered picture definition with a bitmap [Byte] 89-2p238 video systems comparison exa Atari VCS/2600 40x200, twice displayes 20bits for 1 line, change by SW exa Dragon 32 256x192 1bit, square pixels, 6kbyte, 3/4 of 2^n 8kbyte exa C64 320x200 1bit or 160x200 2bit, 8000bytes near fits 2^n 8kbyte 320x200 with 4x8 font is just good enough for 80x26 text, full terminal exa Alto 606x808 on 15" vertical screen to simulate paper bitmap screen, not calligraphic (vector) [Thacker] p271 exa VAX 1024x786 on 19", later 1280*1024 on 21" [Bell] p34 exa Sun 1152x900 on 19", is best poss util of 1024^2 pixels of video memory 1024*1024/12*4=1182 44=1152, but 1024*1024/1152=910 exa NeXT 1120x832 on 17", they call it MegaPixel, but not even 1000^2 pixel exa PC first CGA, EGA, VGA, later SVGA, usually resolution like VAXen despite Sun resolution having the best video memory utilisation but 19" monitors difficult to get for PCs, despite being ideal size on systems with slow bus and video accel 1024x768 allows off screen mem exa Macintosh first only 512x342 on 12", later larger but long time no big very often 600x800 on vertical 15" screen, called A4 portrait display for device independance device drivers in ROMs on card [Byte] 91-4p305 memory group of bits for each pixel black&white, gray levels, few colours, lookup table [Byte] 89-9p333 8bit delta modulation/HAM (Amiga), delta YUV (PhotoCD), hicolour, truecolour bits per pixel 1,2,4,8,12,16,24,32 fixed colours (C64, CGA), lookup (EGA+), gray levels, 3 colour levels semi "true colour" in 256 palette w 6*6*6=216 colours: 00,33,66,99,CC,FF [Byte] 89-10p333 stalking the 8bit spectrum; Mac CLUT problems [Byte] 90-10p80IS11 VGA palette [ct] 94-9p244 Windows palettes, colour model multi-bits org as bitplanes (Apollo, SGI, Amiga, EGA) vs words (CGA, VGA) b&w and colour same resolution desirable, must be so with bitplanes workstation frame buffers [Byte] 89-2p255 row of bits in byte vs on screen, shift left vs right requires lots of memory for bitmap (pixels*bits/pixel) on Alto picture compaction, only lines with content stored [Thacker] p288 on home computers multiple resolutions to dynamically set compromise PC only 128k address space gives problems with big bitmap video RAMs in the beginning split between unused (64k), MDA (8*4k), CGA (32k) later HGA/MGA (64k) expanded MDA, uses both MDA and CGA addr space later EGA (64/256k), VGA (256/512k), SVGA (512..4096k) in unused 64k adapters greater than 64k (EGA, VGA...) require address multiplexing requires bank switching, complicates and slows down software makes different cards incompatible, for simplifying SW VESA [Byte] 90-12p355 VESA, [ct] 97-2p300 VESA prog [ct] 97-4p442 VESA prog in protected mode, [ctk] 90-5p351 VESA bitmap images use up lots of space, use data/image compression lossless data compression, same bits reconstructable, for any data type [Byte] 87-12p291 information theory, bits vs probability [Byte] 90-12p289 putting the squeeze on graphics, JPEG [Byte] 91-3p309 Huffman and LZW compression [Byte] 93-7p197 DoubleSpace, [Byte] 94-2p56 compressing file systems [ct] 91-10p278 compression huffmann, trees, linked lists [ct] 2000-16p194 data compress w BWT algorithm, and Huffmann and LZW [ct] 2001-22p180 JPEG 2000 [ctk] 92-7p231 Komprimiertechniken [PCW] 94-10p524 RLE and Huffmann compression lossy image compress, only similar image reconstructable, only images Joint Photographic Expert Group (JPEG) [Byte] 90-12p289, [ct] 91-6p126 DCT, [ct] 93-11p121 JPEG [ct] 99-26p184 JPEG2000 wavelet compression [Byte] 95-12p34, [ct] 95-11p278 [ct] 99-26p 186, [PCW] 95-12p251 fractal compression [Byte] 93-10p195, [ct] 93-11p122, [PCW] 94-5p396 drawing onto screen bitmap, drawing/imaging models, rendering exa Alto copy block (font/scroll) and fill block (incl hor/vert lines) exa Apple Quickdraw [Byte] 92-9p291 inside Quickdraw exa PostScript coordinates, scaling, shapes, filling, clipping [Adobe1] [Byte] 87-9p177 vector to raster algorithms, [ct] 2001-9p138 vector graph [ct] 2001-14p198 + 2001-15p2004 vector drawing airbrush [ct] 2001-26p226 colourising line art, [ct] 2002-20p218 SVG vector format [iX] 94-5p184 vogl(e) GL implementation for Linux [Uo] 93-7p58 PHIGS for angled lines Bresenham algorithm [Byte] 87-9p180, [Byte] 88-3p249 is also used in modified form for circles and curves but also for higher speed slabs [Raymond] "slab", exa QuickDraw anec Paul Forth line progr funny zigzag, today I think it was mem smash for nicely rounded font edges use antialiasing [ct] 95-8p238 antialiasing, calc for more pixels, use gray levels [PCW] 94-1p394 3DO partial pixels for antialiasing [PCW] 96-4p35 Acorn font antialiasing for TV monitors converting pixel graphics back to vector graphics [ct] 91-1p190, [ct] 95-1p208 drawing fonts [Khazaeli] typography, [Plauger3] p123 terminology [Byte] 85-1p255, [Byte] 87-5p171 RIP, [Byte] 90-8p289 [Byte] 91-5p103 Pournelle terminology [Byte] 94-5p187 Panose font matching system [ct] 94-12p226 Truetype file format, [ct] 96-4p242 page layout [ct] 98-14p50 Truetype fonts on Linux, [ct] 99-25p242 TTF on Linux [PCW] 93-11p392 for drawing fonts use existing drawing primitives bitmap fonts use bitmap, stroke line/curve, outline shape/fill exa Columbia Commander 924 terminal used coded bitstring instructions for drawing blank/set/skip/inv data structure, interpreted most likely also used for the 6*10 pixel character bitmaps font foundry, family, style, size, char set bitmap video allows proport fonts, but should use fixed where expected exa terminal emulators, ASCII mail programs anec NeXT mail writer uses Ohlfs like their terminal emulator but reader uses Helvetica, screws up ASCII graphics generally the user should be able to select a desired font users from printed books backgrounds prefer proportional fonts hackers from long experience with char cell displays prefer fixed on Macintosh (and Windows, NeXT) same imaging model for display and print open a "print window" in the display system, draw in it, then output vs on Altos, VMS and Unix use different imaging, no real WYSIWYG since powerfull proc in computer, drive print engine directly from comp exa Apple StyleWriter, QuickDraw to bitmap, bitmap over RS-232 exa NeXT 400dpi Laser, DPS to bitmap, bitmap over special connection anec 68040 NeXTcube with Laser was fastest in PIGS PS printer test exa Windows GDI printers [PCW] 95-11p153, [PCW] 96-2p218 experience anec Amstrad PCW 8256 (Joyce) had direct printing already in 1985 multiple char sets, symbols [Byte] 90-5p262 world disp, [Byte] 90-10p33 different ASCII to character mappings [DEC2] p82 char encoding C0/C1 operate vs debug, GL ASCII vs NRC vs SGCS, GR SG vs ISO Latin ASCII ISO 646, NRCs ?, 8bit ISO 8859 Unicode [Byte] 91-7p108 ISO10646 vs Unicode, [Byte] 94-6p91 globalis [Byte] 94-11p177 globalisation, [Byte] 96-3p40IS11 localisation [Byte] 92-10p47 in the land of double byte, Kanji typing [Byte] 94-6p93 internationalisation [Byte] 97-3p97 internationalisation, [Byte] 97-3p105 Unicode evolves [ct] 97-13p254 Unicode, [ct] 97-14p178 Unicode [iX] 95-5p190 Kanji on the Web, [iX] 95-6p7 letter about it [iX] 95-9p3 LANG and so on ANSI C standards document internationalisation parameters also international date formats, ISO 8601 yyyy-mm-dd [byte] 97-7p89 also culture effects can cause unpredicted trouble exa Amstrad ALT, Chevy Nova, Sony CDU, Microsoft PDS image processing [Byte] 87-3p143 [ct] 99-22p236 [ct] 2002-23p190 inpainting, repairing missing pixels storing images to disk [Byte] 89-9p205 GIF, TIFF, [ct] 91-9p244 Amiga IFF requires lots of processor power for drawing [Byte] 93-1p204, [Byte] 93-11p229, [Byte] 94-2p146 accel vs buses [Byte] 96-12p59 MIPS 4300i RISC in Nintendo64 console on workstations high performance displays are central to operation IO buses are often slow, having proc exec run loops takes time AT bus is slow, bank switching on EGA and above makes it even slower exa graph.c switch for every pixel gave slow mouse selection display many simple ops, leads to HW support for fast video operations exa hor/vert line, fill, move/sprite/cursor, masking are faster than fastest processor/bus combination (less mem accesses) only for irregular filled shapes is direct processor best exa Alto BitBLT instruction in microcode [Thacker] p272, [Lampson] p322 exa Amiga blitter in Agnes/Agnus memory controller and DMA chip exa PC TI 340x0, from 320x0 DSP for line, circle, curve, stroke exa PC video accelerator cards IBM 8514, ATI Mach, S3, Cirrus, etc exa S3 in office 386DX33 speeded up Xcursion/Decterm/LSE over 10 times this is roughly the difference between a 386-33 and a Pentium-133 anec VAX/VMS LSE does multiple single line scrolls for page up/down this is a case of using fast hardware to accelerate dumb software exa Mach 32 in my Linux sys immediate scroll vs Tseng 4000 1s scroll exa Intel 80860 [Dewar] p341, [Byte] 89-12p333, [Byte] 91-1p347 was originally intended as a 64 bit graphics processor used vector load/store mechanism with mult pixels, SIMD [Dewar] p370 the FPU that made it a "Cray" was added late in the design process 80860 used as a blitter on the NeXTdimension 32 bit/pixel video card note that on the NeXT all FP (incl DPS) is done on 68040, not 80860 now Intel MMX SIMD extensions to 80x86 [Byte] 96-7p59, [Byte] 96-8p63 progr strategies for MMX [Byte] 98-7p43 PPC vector/graphics extensions, AltiVec [ct] 96-6p206 Pentium MMX and AGP [ct] 96-12p22 MMX Sun/Intel/Cyrix/Amd/HP-PA/MIPS [ct] 97-1p228 MMX critic, [ct] 98-15p186 AMD/Cyrix/Centaur 3DNow! [ct] 2000-4p314 comparing vector Intel/AMD/Motorola uses FPU registers with bitmap coproc circuit, reverse of 860 develop but problems with P55C implementat, uneven speedup [Byte] 97-2p26 the idea first appeared in Suns Ultrasparc VIS [byte] 97-1p40IS1 anec TSP on Definicon 32032 4 pixel of each 8 bits at same time cycle of reincarnation [Bell] p25, [Raymond] "blitter", [Raymond] "cycle of reincarnation" pixel set/res, vector instr, disp lists, graph proc, full proc, merge picture definition with switchable char/bitmap, size vs abilities but this often gives irregular video addresses, non contiguous lines exa Apple II Woz last moment simple bitmap hack [Levy] p255 every 8 line, 8 blocks, comes from from char mode but also in char mode non linear addresses [Byte] 84-12pA70 exa Sinclair ZX81 graphic via SW reprogramming character generator and from switching video memory while every rescan anec first "impossible", then done in a game, later in Memotech Basic exa C64 graph in blocks of 8 bytes, also from char mode C64 Basic no graph support, own fast graph lib, scr clear and pixel inv clear screen routine used no indirect addressing, used instr unrolling clear loop unroll xx00+X, xy00+X.. then INX, BCC first set colour to A (to avoid checkers), then pixels to 0 anec comp day astonnished freak because faster than commercial games pixel inv routine table driven, move x coord high bit from A to PC reg with base+Y and A load base addr into temp adr in 00xx move X into A AND 11111000 into Y for base+Y pixel memory address move X into A AND 00000111 into X for base+X pattern in A, XOR base+Y machine code entered in Basic DATA statements, POKEd into memory into a special part of memory which is not used by Basic exa IBM PC CGA, see [Wilson] for 6845 registers anec CGA graphic mode every 2nd line to save a 50c chip anec CGA also snow when proc access video RAM while output in char mode requires BIOS and direct accessing SW to wait until end of line, slow exa QB and QC character GUI wait demandable by command line switch anec similar effect on Cirrus 5422 when 72MHz bitmap mode and RAM modif video display refreshing to get a flickerfree disp it must be refreshed min 70 times a second (vert) to get horizont frequency multiple by lines (incl black top/bot, rescan) to get pixel frequency multiply that by pixels (incl edge, rescan) for a sharp picture the amplifiers must take at least those freqencies also the colour dot matrix of tube smaller than pixel length/line dist good monitors are like good speakers on HI-FI systems bad ones can be made cheap, but for good one you need to spend lot more prepackaged deals usually save cost on cheap bundled monitors anec Amiga flicker fixer, double monitor rescan rate despite TV signal is same technology as in 100Hz TVs, more important than 16:9 or HDTV video refresh is the largest volume IO data transfer, up to 100s of MByte/s Alto still used main processor multi-sequence capability for output but needed 32 bit transfer hardware [Thacker] p276 and only 1 bit/pixel Apple II, VC64, Dragon video still in main proc RAM, but own DMA ctrl as limited video data amount, slow proc, used bus multiplexing, no loss anec Dragon 2nd DMA controller on SAM chip, also does DRAM refresh Sinclair ZX80 and ZX81 simple DMA, used processor for retrace control this used up significant power, fast (blank screen) and slow (vid) mode C64 VIC need more than 985kB/s for video, full bus, loses proc power result the C64 is slower than the VC20, but VC20 has appalling video anec the C64 has in the VIC chip a bit to switch off video rescan this allowed full processor power while tape/disk par-ser convert anec simple VIC/SID HW register sets gave C64 noisy colourfull crash at least the scan rates were fixed, no destroyed monitors unfortunately they didn't compensate for this with a 2MHz processor video uses full bus while throwing out data, why not 1.97 MHz proc anec then 1541 floppy disk drive has an own 2MHz processor, no DMA some people ran number crunching on that, floppy as compute server TI 99/4A video generator with own 16 kB RAM, DMA from it, no UMA, fast processor accessed video RAM through the video chip by ports same also the 6534/6/8 and 7220 chips used in many CP/M micros anec normal 99/4A had only the 16k video RAM and 256 RAM for 9980 proc TI Basic read all Basic code and variables form video memory was very slow as result of this, despite having a 16 bit processor the 99x0 was circa a LSI 11 but w 16 registers, from 990 minicomp the Basic interpreter RAM and plugin module ROMs were direct access this was also the reason for 32k expansion needed for Assembler progr this 32k required the expensive expansion box, prevented SW develop a module with 8k progr tools ROM and 8k RAM would have been great add to module 16k EPROM burner and empty EPROM modules, ideal anec TI critic innovative marketing strategy, preventing SW develop anec the same video chip was used for the Microsoft MSX [PCW] 96-2p265 its limits (resolution 256x192, sprite size 16x16) sank MSX Amiga Agnes/Agnus mem ctrl and DMA chip, Daphne/Denise video no RAM acces can be regarded as a super version of Dragon SAM and VDC this was the most famous UMA machine, speed loss so great that separate chip RAM (with video) and system RAM (without video) complicated OS, as disk ctrl uses same DMA chip, chip RAM, copy anec to increase chip RAM from original 512k to 2M fat-Agnes unfortunately Jay Miner designed orig register set without reserves IBM PC video cards own RAM, 2 separate buses, proc only slowed on drawing this requires vid mem on card, but picture needs mem anyway, moth less even has advantage of not being limited to 8088 1MByte address space some cards use internal 64 or even 128 bit, exa S3 864 and 964 some even use dual port RAMs, second output as shift register, VRAMs [ct] 96-4p174 chipsets, RAMs, accels for fast video cards but in cheap PCs video RAM "reunification" (were never unified in PC) unified memory architecture (UMA) [ct] 96-2p98, [ct] 96-2p272 VESA video image stored in main RAM, no video RAM, exa SIS 5511+, 6205 reduced chip count (ca $40), slightly reduced RAM waste but loses parall mem readout, up to 40% speed loss, cached still 30% UMA is a form of bus mastering, is inferior to DMA with own RAM specially critical in (low cost) small RAM and no cache systems this is a questionable technique [Byte] 95-10p60 see how it slowed down original Amiga, they got rid of it Intels strategy of simplifying PC architecture, exa in ATX motherboard reduce periphery cost, at cost of needing an bigger faster processor proc from Intel of course, gives them bigger slice of users budget this based on user buying based on available budget [ct] 96-10p90 also complexity of ever more powerfull processors hinders cloners [ct] 97-4p260 Intel Accelerated Graphics Port (AGP) [ct] 97-4p270 also Cyrix MediaGX UMA video on processor most Workstations use UMA, but combined with VRAMs, exa Sun, NeXT, SGI data readout over 2nd port, contention only for addr load, loss 0.25% but today the SGI O2 does full UMA, without VRAMs but with wide bus, 2 GByte/s transfer rate display geometry for texts/graphs resolution is a key issue (font size in pixels) vs for picture display amount of intensity levels to avoid ragged edges (TV) resolution vs sharpness from monitor pixel grid but also from video card analog electronics [ct] 96-10p272 users want to see a lot of data on screen 14"/15" are only good up to 800x600 only good for a single program on full screen, not for mult windows 15" screens horizontal (spreadsheet) vs vertical (text) vertical 15" monitor with 600x800 pixel would be enough for many jobs with 7x13 font width 80 char + scroll, hight 60 lines + menu (= A4) and this without the bulk and table space requirement of bigger scr but on IBM PC problems with video cards starting in 80x25 mode would need special card with own BIOS that starts in 80x50 but such a BIOS would require special video card and monitor or use a vertical monitor that will take 80*25 with large spacing or monitor that starts horizontal, swivels to vertical, expensive 17" is the minimum to use with todays desktop environments I use a 17" with 1152x864 pixels for 2 windows of 80x60 chars 6x13 font but also on 17" choice hor/vert, vertical allows longer text windows 19" and 21" will take 1600x1200 pixel, many long windows no vertical versions needed, as more than 2 full pages on display but these are too bulky and heavy for transporting, use desk space why don't manufactures make monitors with handles like the Apple A4 or the C64 1701 video monitor I use as TV after years of cust complaints they make packaging boxes with handles increase display surface with multiple screens exa SR CAD on PR1ME with ADM and Westward dual displays for commands/lists text terminal and for display graphics terminal todays 1 screen and GUI CAD users don't know what they are missing exa TSP CP/M VT text and GRIP 7220 graphics, used for Mandelbrot exa NeXT NeXTdimension dual headed, but problems with some SW IBM PC problems with fixed address video cards CGA and MDA can coexist, EGA B&W w CGA, EGA colour or SVGA w MDA/MGA but in BMS XTs (384k RAM) with MDA+EGA for Autocad (this was 1985) perhaps it would be better to put vid generator and vid RAM into monitor this would be like an embedded controller in SCSI or IDE disk drives anec Apple uses SCSI monitors for Powerbooks with no external video surface arangement vertical (as in TV) vs horizontal (as desk surface) [Licklider2] p121, [Licklider2] p123 anec my 1985 CBM1701 14" monitor had handles, same Mac Classic and A4 Moni new Eizo has at least indentions, but most monitors fail on this on screen colouring [Raymond] "angry fruit salad", [Byte] 87-4p311 distinctive colouring [Byte] 91-12p84IS35 smart use of colour [Byte] 92-2p342 colour abuse, also chart junk, presenting data too many colours leads to users getting headaches hackers bad at chosing friendly colour schemes because their colour sense is distorted from growing up on 3 bit primary colours with black backgr flat displays [Licklider2] p121 backprojection displays [Byte] 85-3p130 plasma, EL, [Byte] 88-9p243 displays, [Byte] 88-12p321 flat [Byte] 89-9p323 lap tech, [Byte] 91-2p229 LCD, [Byte] 95-6p115 colour to go [ct] 95-4p104, [ct] 95-9p43 directed 3D display [ct] 96-9p164 flat displays for desktop, [ct] 96-12p288 DMD [ct] 98-1p28 bistable LCDs, retain picture without electricity [ct] 98-5p38 light emitting polymer flexible self light flat screens [ct] 98-6p204 LCD monitors, [ct] 98-6p230 LCD technology [ct] 99-2p76 polymer displays, [ct] 99-13p43 polymer displays [ct] 2000-20p110 organic OLED displays, [ct] 20002-23p288 LCDs better angle [ct] 2001-1p27 electronic/digital paper, [ct] 2002-20p200 reflective LCDs [ct] 2003-3p192 plasma and multi-LCD [PCW] 93-10p362 ferro, micromirror, [PCW] 94-6p515 ferro [PCW] 95-1p284 LCD, [PCW] 96-2p23 LEP polymers on foil, electronic paper [PCW] 96-5p54 TFT LCD based on desk display with intergrated keyboard technologies LCD, gas plasma, EL, ferroelectr, micro mirror, back projectio aim is to get rid of big bulky heavy expensive monitors also get rid of electromagnetic emission [Byte] 91-10p80IS67 TCO, [Byte] 91-10p119 health and safety first LCD also usable for projector systems, on overhead proj or as active slide but flat screen on the wall may good for TV, but not for computing [ct] 99-18p178 field emission displays projectors, beamers lcd, micromirror, laser [ct] 99-8p60 also laser based projector, [ct] 99-12p186 laser beamer [ct] 2000-12p174 TFT and DLP (micromorror) beamers [ct] 2002-4p144 projection surface, [ct] 2002-8p88 digital cinema 3D graphics [Byte] 89-2p255 workstation graphics today, 3D hardware [Byte] 89-4GSp267 the RenderMan interface, [Byte] 90-12p253 graphics go 3-D [Byte] 92-5p153 3D graphics, p167 photorealism, p173 radiosity, p177 voxels [Byte] 92-5p183 3D displays without helmet [Byte] 93-4p121 visualisation of data, [Byte] 93-6p121 EISes mine your data display 3-D as bitmap 3=f(1,2), comb w 3-D grid+hight it gives 4-D [Byte] 93-11p215 three ways to 3-D, [Byte] 95-7p123 3D toolkits [Byte] 95-10p167 Glint 3D accel, [Byte] 96-6p49 Apple RAVE API [Byte] 96-9p137 OpenGL vs QuickDraw3D vs Direct3D [Byte] 96-10p76 3D everyone [Byte] 96-12p63 Direct3D revealed [ct] 89-4p240 wire model to shaded picture. [ct] 89-5p212 simulating worlds [ct] 89-10p214 inverse kinematics, walking, [ct] 91-6p204 radiosity [ct] 91-8p196 radiosity part 2, [ct] 95-3p92 animating virtual human [ct] 95-9p43 directed 3D display, [ct] 95-11p210 3D non glasses [ct] 96-2p246 reycast technique, [ct] 96-6p200 Windows DirectX for game speed [ct] 97-1p198 rendering, [ct] 97-7p94 modelling actors [ct] 97-9p144 3d report, cards, drivers, APIs [ct] 98-2p74 3D accel cards, [ct] 98-12p84 synthetic/artificial artists/stars [ct] 98-15p22 directed 3D display, [ct] 98-16p174 hierarchic polygon models [ct] 98-25p250 3D modeling of special effects, [ct] 99-2p130 3D, polygons [ct] 99-2p188 realising 3D in hardware [ct] 99-7p158 3D sight and display systems, [ct] 99-11p74 ILM [ct] 99-12p194 3D game worlds, [ct] 99-17p164 image-based rendering [ct] 99-19p248 programming Direct3D and OpenGL, [ct] 99-22p148 DirectX 7.0 [ct] 2000-1p144 3D-rendering with levels of detail, [ct] 2000-2p159 Linux 3D [ct] 2000-8p90 modelling and animation of human bodies, avatars [ct] 2000-8p202 generaton 3D on the fly, 3D chips, [ct] 2000-15p202 in games [ct] 2001-5p198 3D PC graphics, [ct] 2001-25p94 3D displays [ct] 2002-15p194 how 3D chips work [iX] 95-10p138 OpenGL [Uo] 96-12p96 PovRay loudspeakers [Byte] 91-7p249 Macintosh sound, [Byte] 98-7p32IS13 state of PC audio [ct] 95-7p240 sound generation, [ct] 97-4p166 audio report [ct] 99-4p98 digi radio/tv production [PCW] 96-4p144 history of computer sound generation visual output is often ideal (90% of human brain input) sound provides additional 9% of the brains input sound is more than ping or beep in games and multimedia sound effects are part of desired output but sound is also usefull for status monitoring exa Whirlwind [Ross2] p62, TX-0 [Levy] p33 and LINC speaker [Clark] p395 connect to accu bit [Ross2] p62 digit 13, [Levy] p33 14th bit or bit 14 exa Apple Macintosh Sonic Finder can be continuously monitored by human, backgroud activity [Norman1] p102 sound wave generators, analog output radio leakage from processor/bus exa listening to MTC on radio to determine if working [Clark] p354 exa Dompiers Altair [Levy] single bit output exa TX-0 music program, bit 14 of accumulator [Levy] p33 exa Dragon single bit sound gen [JamesM] p59 exa IBM PC single bit digital on/off, intended only for making beep can reproduce more [Beck] IBM PC Linux pcspeaker, [ct] 88-8p74 syntext by being used as input to an integration circuit, delta modulation standard PC sound hardware is less capable than a $50.- tape recorder IBM PC sound gen on motherboard, speaker in case, no volume control better sound generator on video card, speaker and volume ctrl on moni this would have made poss on MDA beep only, on CGA better for games sound signals on same connector/cable as video, exa NeXT mono monitor same keyb, joyst and mouse plugs on monitor, not back of system unit or better keyboard plug on monitor and joystick/mouse plugs on keyboard would have made video card a terminal card, enabled multiple users IO anec CD bit stream is a fast single bit system, but fast 32..128 oversamp even best PC sound cards are still only at 16 bit wave tables multi bit, DACs exa Alto 10 channel microcoded wave table player [Thacker] p280 exa Dragon 6 bit DAC, R-array for U/R, summ up I, then I->U [JamesM] p55 ultimate in realism, but can require a lot of memory (wave table) or lots of processor time (synthesising wave) sound synthesizer, exa SID chip in C64 [Angerhausen] [ct] 98-10p144 music synthesizer definition with mod files wave table sound, CD-like, stereo or even multichannel [ct] 2002-2p112 5.1 sound connections speech synthesizer [Byte] 92-4p165, [ct] 2002-18p92 robot voice anec SC-01 chip in Juergs 8032 external synthesizers, connected via MIDI bus and commands [Byte] 85-10IIPp127, [ct] 91-1p142, [ct] 99-24p178, [ctk] 86-11p181 [PCW] 88-2p170, [PCW] 94-1p331 general MIDI codes, [PCW] 95-4p388 sound generation approximation of sounds gives lifeless sound, exa techno to sound like real analog instruments use source modeling, exa pan flute for improvement [ct] 97-2p328 DSP physical modelling sound processing requires executing a big lot of very simple ops use simple fast processor, digital signal processor (DSP), exa 32020, 56001 similar to vector process, but usually integer data, fancier addressing [Byte] 89-8p246 DSPs, [Byte] 89-12p243 sounds and images [Byte] 92-8p269 digit signal processing, [Byte] 92-11p155 signal computing [Byte] 92-11p177 DSPs 56001 vs 486, [Byte] 94-11p151 WinDSP [Byte] 95-2p91 DSPs, AMD 29060 SHARC, Ni1000, [Byte] 95-11p171 MM procs [Byte] 97-6p40IS17 DSPs, multimedia processors [Byte] 98-40IS7 combined embedded CPU and DSP chips [ct] 89-3p198 56001, [ct] 93-9p226 56001, [ct] 97-4p256 Multimedia DSPs usually implemented as a second processor, exa on sound card, in modem but the main processor can also do it, no extra HW [Byte] 95-10p62 NSP, [ct] 98-24p17 NSP killed by Microsoft pressure but beware of sound becoming annoying [Norman1] p103, config switch off speakers generate lots of noise, just after offices have become quiet use telephone handset (quiet, exists, users know it) as sound IO device [PCW] 93-7p559 answerphone integration with email, listen over phone users who want a loudspeaker can use speakerphone, give user the choice multimedia [Byte] 89-5p283 DVI, [Byte] 89-12p353 Media Lab [Byte] 90-2p203 the 4 multimedia gospels, [Byte] 90-10ISEp105 DVI usage, [Byte] 91-9p89 Pournelle learning experience [Byte] 91-11p116IS59 Olivetti Pandora media workstation [Byte] 91-12p153 for presentat, p163 chips, p177 Intel/IBM AVK, 189 QuickTime [Byte] 92-5p107 making sense of MM, why should the user care for it? [Byte] 92-10EGTWp33 Windows MM Extensions, Media Control Interface [Byte] 93-8p193 Windows MME vs OS/2 MMPM/2 multimedia infrastructures [Byte] 94-5p57 TI MVP multimedia processor, SIMD DSP [Byte] 95-6p241 Win95 MM extensions, [Byte] 95-12p135 Win95 direct drivers [Byte] 96-3p67 what's the story, storyboarding [ct] 97-12p16 info-/edutainment fiasco [ct] 98-6p262 Win98/NT5 multimedia extensions [ct] 2002-20p218 SMIL animation format [ctk] 94-8p251 FLI/FLC animation format [PCW] 87-1p160 Domesday Project, [PCW] 92-2p242 Pandora [PCW] 92-5p230 media labs smart TV, [PCW] 93-2p454 Video for Windows [PCW] 93-6p376 Apple and Microsoft, [PCW] 94-9p452 video editing [PCW] 94-9p455 (and cover) 1984 video, [PCW] 94-12p289 technology vs content [PCW] 94-12p580 large copy of main 1984 picture of big brother [PCW] 95-6p351 didn't miss anything, [PCW] 95-6p526 Media Lab text, still pictures, sound, video and programs interleaved, time synced mixture of text and video in 1968 [Engelbart] p204 simularities of animation, music notes and programming [Kay1] p258 is mixture of multiple medias types of usage in one medium the name multimedia is actually a missnomer power of MM is unification of multiple medias on one medium (bits) the name unimedia would describe its strength better but beware of one size fits all trap, beauty of simplicity vs usage used for games, cartoons, education, visualisations, presentations and PR but can be annoying for the audience exa Werner interactive clicking around to search for short sound effects vs enjoying a cartoon with continuous sound on video tape/disk better use multimedia PC as a home cartoon editor, "print" to VCR/CD exa sound bites are not natural, real things make varying cantinuous sounds sound blanket all the time, with variations, troughs/peaks anec Uptime demo music inserts, were simply noise effects just a loud noise, breaking presentation, analog to early DTP font mess multimedia can be interactive as before only individual teacher [Kay1] p255 "more people are entertained, more they will retain" [Byte] 97-1p40IS13 but beware of multimedia edutainment, is often only entertainment with a knowledge "flavour", not real knowledge [Norman2] p20 it needs to be pictures and colourfull to apply to percieved user tastes but this often results in visual junk-info so that "someting happening" exa TV documentary films with pictures to fill screen the pictures have no relationship to narrative, not referenced and pre-made effects are allways the same, no content at first they are cute, then effect wears off, become boring, nerving exa building up menu with rotating icons, one after an other pictures+video+sound often content free time waste, for entertain only good for "couch potato turbo" for serious information work they only get in way, slows down computer is better used as super-book, fast search and delivery, text anec Roberta Pournelle reading program, pictures for adults tick list for the children learning the success of knowledge is the real reward no real learning because constant flow hinders reflective mode of mind for learning digestion time is needed, playback must be controlable display flow pausable, single frame, fast/slow, backwards, rewind see difference between watching raw TV and TV from a video recorder I tape all documentaries, then watch them from tape, stop for writing but also films better of tape, can pause to look at costumes/stage this is specially needed in modern MTV-style filming, music videos problems with others deciding your moves, less discovery [PCW] 92-2p134 to learn one need to be able to drill down on motivating subjects better a knowledge laboratory to explore relationships, consequences exa how life 1638-1715, user makes decisions, faces up [Byte] 89-10p360 [ct] 96-6p94 multimedia simulations, [ct] 96-9p178 multimedia education [ct] 97-1p115 CD encyclopedias multimedia disappointment throwing hardware onto market with no visible use lead to disappointment a medium should offer an author ways to express what he wants to say a tool alone is no use, only with contents does it become interesting thats why this work comes as text, not MM, MM only when needed also bad implementation on many sys, exa CD-ROM installation [PCW] 93-1p178 anec MM is when Windows crashes under deafening noise from connect loudsp some people believe in PC-TV combination devices for multimedia [PCW] 95-3p462, [PCW] 95-12p110, [PCW] 96-2p259 but TV is home cinema (entertainment), PC is intelligent book (information) watch TV in comfortable lounge sofa vs computing in straight office chair different viewing distances, different physical arrangement of device screen quality, TVs are unfit for displaying PC text resolutions [PCW] 96-2p245 Forrester shows that normal users see this [PCW] 96-3p35 but the analysts fail at it, miss target widely the TV/video/audio industry will only really enter computing when it becomes a threat to their own survival, by buying up computer firms also the available devices are usually cut down, yesterdays technology while today home usage (games) needs more processor than office use result of all this is that such combos will be a flop better separate devices, fitting usage style, arranged in places of use for office/working a traditional PC with monitor for lounge/entertainment special multimedia computer with TV as output exa CD-I [PCW], MS/Tandy, 3DO, Apple Pippin but so far these have failled because too weak, no real marketing upgrading/adding features difficult or even impossible monolithic or preferably a real powerfull and expandable PC with TV as output exa Olivetti Envision [PCW], Apricot [PCW] 96-5p56 virtual reality [Byte] 95-5p85 see you around, image stiching, [Byte] 95-7p111 VR visualise [Byte] 96-7p93 VR meets reality, on normal screens vs with helmet [Byte] 97-7p32IS11 VR promises unfullfilled [ct] 95-11p200 VR helmet wearing problems, dizzyness [ct] 95-11p210 3D displays without helmet [ct] 96-11p112 MuSE VR, [ct] 97-1p78 CAVE VR, [ct] 99-19p98 CAVE [ct] 97-8p104 VR Stanislaw Lem, [ct] 97-10p134 VR in Japan [iX] 95-5p68 VR basics stereo/3d vision comes from 2 adjacent eyes diff inputs to the brain this is why one eye moving position also gives stereo, used by one-eyed this can be exploited by mixing 2 cameras pictures, exa ZDF ami football technical base is helmet with small mounted displays [Licklider2] p121 Sutherland PDP 1, [Byte] 88-9p243 headup display [ct] 98-15p22 auto-stereoscope display, with linear lenses cuts user completely off from real world, [ct] 92-1p54 begehbar Schmierzett [ct] 98-20p262 limits of virtual reality, where the illusion breaks some systems solve this by projecting computer output onto real word as in head up displays in aircrafts but these have problems with eye accommodation anec VR helmet at TNC made Philip dizzy touch force feedback on joystick or mouse (kinestetic joystick or mouse) [Byte] 91-10OLp43 mouse with force feedback anec car servo steerings, users complained that they can't feel the road gravity, acceleration requires a moving room, very expensive, exa pilot training flight simulators other sensory systems (smell, taste, temperature, thirst, hunger) no use known to me, most likely too slow and imprecise to be of interest Input Devices switches, buttons, process data exa MIT Whirlwind upgraded 1952 w interactive input, intervention registers [Ross2] p63 Room 222 Cape Cod panels levels sensors, amplifier electronics, analog signals, digital data shaft encoders w multibit data for angles gives gliches when mult bit change leads to gray code, exa mouse encoders counters, clocks, timers, alarms hardware clock for system time, real clock leds read in also make all device output registers readable as input anec non readable status bit in DL-11 lead to comment in terminal driver "The following code is brought to you through the stupidity of hardware engineering" [DECUServe] 9?-?pDS-20 this design defect was repeated by designers of IBM PC EGA video card 6845 chip on MDA/CGA was readable, replaced with more integrated chip in this the registers were not readable, bad for state saving/restoring corrected in VGA, all registers are now readable, used for DOS boxes keyboards [ct] 98-24p236 ten finger typing keyboards with teletype code or ASCII code TTY code 64 7 bit characters (32..95) + 32 Ctrl-codes, caps only exa ASR-33 teletype ASCII code 96 7 bit characters (32..127), caps and lowercase exa glass teletypes, early terminals, ADM 3 [Raymond] "glass tty" cursor control with Ctrl-? ADM 3a no actual cursor control keys, despite screen cursor control rather the HJKL hat arrows on top of them, used with Ctrl-* Wyse WY-50 le BS/Ctrl-H, dn LF/Ctrl-J, -> up/ri Ctrl-KL [Cameron] p221 editors use HJKL (vi), Ctrl-SEXD (Wordstar) or Ctrl-BPNF (Emacs) Ctrl-H/J work in vi, but Ctrl-L is redraw, note that Ctrl-K is unused vi command/edit mode because Unix assumes only a (glass) TTY keyboard cursor control with cursor keys C64 cursor/fn keys as ASCII extension [Angerhausen] Columbia Commander cursor control keys, left BS, down LF, up ^, right _ keyboards with ASCII and bucky bits [Raymond] "bucky bits", [Raymond] "meta bit" [Raymond] "space-cadet keyboard", [Raymond] "WAITS" PC Alt key [Raymond] "WAITS" SAIL E invisible commands exa SAIL Edit/Alt/Meta(8)+Ctrl(7)+ASCII(6..0) used for TV-EDIT, NLS Ctrl allows 32 command codes, Meta (and M-C) allows additional 128 codes exa MIT AI TV (Knight) for PDP 10/ITS LMeta+RMeta+LCtrl+RCtrl+Top+ASCII anec the original Emacs text editor in TECO was written on one of these the use of the bucky bit command style in Emacs is from here is sometimes given nickname Esc-Meta-Alt-Ctrl-Shift [Raymond] "EMACS" exa MIT Lisp Machine space cadet Super+Hyper+Meta+Ctrl+Top+Front+ASCII nearly 8000 bucky bit combinations, not all used, allow sparse allocation exa X Window servers Meta+char(7..0) char with Ctrl, Shift, ModeShift such keyb have enough destinguishable key codes to enable modeless editors exa Colouris em uses Fn keys [Salus] p141, VMS EDT numeric pad appl mode but such keyboards have problems with only 8 bit wide OS input routines exa Unix /dev/tty, VMS TTA:, MS-DOS CON: are all only made for TTY input anec XTerm VT 102 emulator on X Window Meta(7)+ASCII(6..0) or char(7..0) meta bit must be bit 7 like SAIL because Unix /dev/tty stream of bytes but this collides with bit 7 of 8 bit character sets, exa ISO 8859-x must use ESC+char to transmit meta-char to avoid confusion send actual meta-char keys to user programs as Esc+char, as if no Meta for this XTerm*VT100*eightBitInput resource must be set to "false" but X*V*transla must still conv Meta to insert-eight-bit() insert-eight-bit() is a missnomer, should be insert-with-meta() then must treat 8 bit as data, insert it, not interpret as command Emacs iso-insert, bash, .insertrc meta-flag and convert-meta settings keyboards with ASCII and escape sequences exa VT terminal series, increasing keyboard sophistication VT 52 cursor keys EscA..D [DEC2] p99 VT 52 emulation mode of VT 320 VT 100 cursor keys Esc[A..D [DEC2] p87 ANSI mode cursor keys \] VT 220 additional command keys Esc[1..6~, function keys, PF keys EscO* \] modern keyboard layouts like LK-200 only appeared at the begin of 1980s anec <- TTY Ctrl-H (8), *<- VT DEL (127), * VT 220 remove (Esc[3~) \] but other keyb use *<- Ctrl-H (8) and * DEL (127), Pericom switchable anec problem with Scheuber Versaterm wrong setting Forth uses variable set to BS or DEL to detect user pressing *<- key VT 220 cursor keys and numeric keypad normal vs application mode, EscO* Emacs configuration for using keypad in application mode [Cameron] p221 confusion of the escape seqences Esc[* and EscO* with Meta-[ amd Meta-O \] result that Emacs can not use Meta-[ or Meta-O on any system \] same only Ctrl-a..z because ASCII keyboards only send 0..31 no separate Ctrl-A..Z because Shift ignored when Ctrl, only 32 codes escape sequences leads to problems with multiple bytes per key exa XVT esc key code conversion problems of call vs flexibility of pipe vs Emacs sequence decoding with multiple keytables keyboards with keymatrix+diodes+PIO periodical scanning by IRQ driven program in monitor ROM or OS scan coordinates (0/0..7/7) converted to ASCII by scanning program exa Dragon [JamesM], C64 [Angerhausen] on systems with progr scanned displays connected scan routines, exa TK-51 keyboards with make/break codes circuits similar to above but with own microprocessor embedded in keyboard conversion of scan codes to ASCII by program in OS allows simple keyboard hardware and great encoding flexibility but conversion problems when errors in conversion tables exa PC-Outline ue bug, fathers PC AltGr 1 vs 7 bug, dead keys in XFree exa IBM PC keyboard hardware [Byte] 83-5p402 keyboard, XT interface [ct] 88-6p148 Knoepfchen Knoepfchen 3 different layouts, 5 different signalling methods first PC keyboard 10 Fn keys left and numeric pad right w integr cursor then AT keyboard with separate numeric and cursor control block todays MF-2 standard appeared only 1988 with the PS/2 anec MF-2 102nd key for <>\ between left-shift and Z is not IBMs fault forced on them by DIN standard, classic case of commitee missfeature why didn't they use Alt GR key with the 3 keys between M and rshift anec on NeXT no 102nd key, < and > are where NumLock, but \ on Alt-7 the old lousy PC keyboard was also standard [Byte] 82-11p398 Pournelle that one was from ISO [Byte] 89-9p398 exa MS-DOS CON keyboard drivers, Windows keyboard drivers make codes are converted to ASCII as far as possible for non ASCII keys use ASCII=0 and the make code is passed back the Alt key is treated as a shift bit, like Ctrl is dead keys (', ^, `, ~, ") add accents to next key if this makes sense exa SCO Unix and Linux /dev/tty console terminal drivers the IBM MF-2 layout is similar, but not identical, to VT 220 layout console drivers (and MS-DOS ANSI.SYS) make VT 220 escape sequences use PC Home/End keys as VT Find/Select keys, <--/Del as Delete/Remove NumLock as Gold, shift-Gray+ as missing keypad key some programs eval VT Find/Select as PC Home/End keys as in MS-DOS exa I have configured less and Emacs to use these keys in this way use LeftAlt key as Meta key, as in XTerm deliver it as Esc+char for 8 bit char sets exa Linux XFree and XTerm on IBM PC XFree uses PC Alt keys as Meta key, XTerm works like the Linux console coverting PC Home/End/<--/Delete to Find/Select/Delete/Remove either in X server with xmodmap or in XTerm with XTerm*translations at the moment I do <--/Del in xmodmap, Home/End in translations this because I want Del/Remove in Emacs but still want Home/End unlike the Linux console both XFree and XTerm do not work on dead keys despite keysymdef.h and XKeysymDB files having 2 diff names for them alphabet key layout variants [Norman1] p145 alphabetic, no learning advantage, but slow to use, is bad [Norman1] p147 QWERTY, from Sholes typewriter [Norman1] p145, or not [Byte] 91-7p303 [Raymond] "QWERTY", [Plauger2] p159 exa of history bug [Byte] 82-11p16 for fast typing, [Byte] 82-11p386 history for no jamming [Norman1] p146, later discovered high speed [Norman1] p147 but also all keys for word typewriter on top row [Norman1] p229 national variants, localisation, not much effect, but bad [Norman1] p229 SHRDLU, from Linotype [Norman1] p146, from hand printers letter bins from english letter frequency EATIONSHRDLU [Shea] p737 code breaking Dvorak [Byte] 82-11p16, [Norman1] p147 speed +10%, insufficient difference keyboards with small LCDs in key caps, soft remapping [Norman1] p151 they would alter display on press shift/ctrl/alt, like GUI soft keyboards such keyboards have been made, but are very expensive, no great advant ergonomic keyboards, handrests, nonlinear keys [PCW] 92-12p183 [PCW] 96-2p190 ergonomics and RSI, [ct] 2000-13p228 ergonomics generally ergonomic angeling for hand positions none vs fixed vs variable small price increase (fixed +100, variable +200) vs down time, injur cost funny shapes of ergonomic devices are result of human anatomy switches vs foil layers, resistance linear vs non, quiet vs click vs beep power key, soft power switch [Norman1] p135 allows system to enforce proper shutdown, unmount disks before power off Macintosh power key only for on, for off the shutdown menu must be used NeXT power key on and off, when pressed while running dialog box but it is there where command key block, is often hit accidently, is bad better put it in corner of keyboard like on Macintosh same also volume and brightness incr/decr keys hit accidentally are more work, less precice than analog controls on monitor/speaker HP 9000/715 and SGI Indigo [PCW] 93-9p457 soft power switches are on the machine case, are out of the way, this is even better but they are still soft, trigger proper system shutdown anec a soft power switch was already used on 198x-es Triple-X Unix box GUIs are based on using a mouse, but should let advanced users use keyboard exa on Alto keyboard there were no arrow or command keys [Thacker] p273 exa Macintosh first no arrow, command or function keys even when they appeared badly supported, only shift-arrow for selecting anec Kompal no problem on real VT 320 and DECterm (VT 340 emu on X) but problems on Macintosh running Versaterm, because of keyboard exa NeXT also no command or function, also no separate backspace and delete today still no text selection by shift-arrow, like vintage Macintosh no PageUp/Dn keys for scrolling, must be done with scroll bars anec NeXTs own Edit.app editor has Emacs key mode to circumvent this uses Ctrl-A/E for home/end, anec Ctrl-A misstyping uses Ctrl-V for PageDn but no Meta-V for Up, as there is no Meta key no function keys, SoftPC uses Cmd-0..9 for F-keys, Terminal.app none no moving between fields with Tab and shift-Tab, but in mail writer Tab if reason for this was to make them usable in text fields then why not use Command-Tab and shift-Command-Tab no Esc to cancel dialog boxes, some dialogs have Command-W, but not all also driver maps ^, ' and ` keys to chars whith codes above 127 result of this ^ fails in regexp search box and on grep command lines same `` for inserting stdout into Unix command lines fails, losing anec NeXT in advert great "usable by keyboard for experienced" claim was based on many menu points having Cmd-*, but Macintosh has Option-* Windows and OS/2 even have Alt-Menu + Menupoint, best of all cursors are required for typing on to video screens shape underline, block, vertical bar, steady/blinking, user configurable GUI vertical bars badly visible, I keep on having to search for them keyboads are ideal for collecting dirt, failing, even shorting power supply to prevent this clean them regularily [Byte] 90-12p73 Pournelle A20 crash use running warm water (shower) and rub, no soap or similar dry with cool hair dryer, check temperature by going over hand anec my DTK has taken 5 washings, only label blanked, office Cherry drowned chord keyboards, keysets [Licklider2] p119, [Engelbart] p200 (1964-8!), [Thacker] p273 not popular [Norman1] p150 no info on keys, all in head, also no interleaving [Byte] 82-11p5, [Byte] 88-12p248 NLS [PCW] 93-6p236 Twiddler, [PCW] 93-9p235 Microwriter, demise because Managment [PCW] 93-10p166 JPL Data Egg portable data recording device joysticks, joypads and paddles, other game controls [Forster] exa PDP 1 for Spacewar 3 switches and fire button [Levy] p64 exa Apple II 4 paddles or as 2 analog joysticks, 4*NE555 [Byte] 84-12pA71 exa C64 joyst 4 switch (Atari), paddles cap load time [Angerhausen], IBM PC continuous position reading by program, not just reporting single movements button/switch state as 0(off)/1(on) and 01(end-a)/00(middle)/10(end-b) shape as pushbutton, mechanically held switch, trigger autofire simulated press/release of button/trigger, full/burst/off, speed joystick 2 directions, each 3 or n postions, plus addit fire buttons handle shape bat or ball (button on base) vs grip (button top/trigger) can be used for left/reight and forward/backward (or faster/slower) pair of single direction joysticks for car steering plus power/brake or even full proper shape steering wheel and pedal box pair of levers for tank/bulldozer sides, or for train power/brake pair of joysticks for flying or RC or joke/stick+thrust+rudderpedals or even full proper shape joystick+thruststick+controlpedals these with many trigger buttons and coolie hat for view direction pair of joysticks for mechas move 4dir/rotate/duck/jump, 1 each leg joystick digital vs analog position recording digital simple "there or not", precise timing, good for shoot-em-up analog "exactly here", good for flight simulator [PCW] 96-5p323 digital presses leaf switches vs microswitches vs break lightbeam joypad buttons on rubber pad, small keyboard with game-friendly layout analog input paddle vs spinner, pos in limited range vs motion infinite range paddles use pots, resistor, time for capacitor charge [Angerhausen] SID position usually 0..255, lever position, analog joystick (2 position) exa DB9 200..200k from 5V, in C64 1800pf and SID 2* GND count to 2.5V exa Apple ][ game 0..150k from 5V, software reset and time up to 3ms exa Dragon 32 6bit DAC and 4-in analog Mux and 393 Op-Amp to PIO pin in joyst mechanism pin through 2 tracks vs 2 barrels spinners 2bit gray coded angle, but also used for MS sidewinder joystick no support on GUI machines today, because Alto did not have one dropped by Windows despite the IBM PC hardware supporting them only added back very late, to promote windows as gaming system was once standard on parallel/serial/game card dropped because GUI doesn't use it and cost cutting today only if built into sound card, because that also used for DOS games light pens and touch screens [Ross2] p65 Room 222 Cape Cod light gun anec Whirlwind scope input program (1953) [Ross2] p68 photo cell and scope [Ross2] p97 light pencil to throw light buttons [Licklider2] p119 light pen and light gun, touch screens [Byte] 92-7p287 touch screens problem with arm going tired, cramped muscels [Raymond] "gorilla arm" not actually fault of pen but of combination pen + vertical display surface switching keyboard/pen, pen on finger [Licklider2] p120 today these are mainly used for public data kiosks, simple, short usage time mice [Licklider2] p119, [Engelbart] p195 (1964-8!) [Byte] 90-11p395 evolution, mechanisms, [Byte] 93-3p180IS3 Honeywell mouse [Byte] 93-6p46 pictures wood and MS mice, [Byte] 95-9p112 Mouse System 1982 [PCW] 93-2p530 Honeywell mouse, [PCW] 95-2p338 HP Omnibook pop out mouse buttons 1, 2 or 3 [Card] p504, [Lampson] p317, [Norman1] p182 orig Alto mouse 3 button, also on Sun, SGI, Mouse Systems, Logitech buttons used for text select, insert/paste, popup menu in scroll bars down to pos, absolute/drag pos, up to pos then Apple 1 button dumbed down [Raymond] "dumbed down" using pull down menu for cut/paste commands is slow [Card] p525 anec they actually patented the 1 button mouse is with the trashcan the only thing the copyright court case left them then Microsoft and NeXT 2 button, half way 2nd button first not used on either system, later for popup menus exa OS/2 popup menu of window under cursor, NeXT of active window 3rd button of newer Logitech used for common commands [PCW] 96-6p30 Microsoft drag and drop to allow editing without menu or 3 buttons one of best things Microsoft did for GUIs was drap&drop editing in Word but X has had menu-less select&paste editing since its beginning also 3rd analogue dimension, MS thumb wheel for vertical scrolling buttons down/up vs pressure measuring encoders mechanical (NLS, Microsoft), optical (Sun), optomechanic (Logitech) video camera (Microsoft) [ct] 2000-2p80 connect special port (PC), serial port (PC), keyboard (NeXT), ADB (Macintosh) dual mice for pointing and scrolling (or mouse and trackball) mouse moves an manipulator/arrow/"hand", not direct an actual object allows replacing various hardware controls w pictures and "grab in screen" mouse pointers often badly visible, config, colour, hair cross as in SR CAD naming text/mouse cursor/pointer vs caret/cursor, I will use the former anec NeXT mouse pointer image doesn't automatically follow DPS windows after a mouse select and Command-C cut pointer over scroller stays text anec on Prime Westward graphics terminal w ana joystick and crosshair mouse is very good for direct manipulation (drag & drop) style work many attempt to replace it, but it is as efficient as direct pointing mouse vs other technologies, speed/errors [Card] p495 mouse is a Fitts's Law device [Thacker] p272, [Card] p496 parallaxis offset critic [Licklider2] p119 but the on-screen pointer has no offset, the actual device no abs posit joystick vs mouse, joystick good for control games (has a handle to grip) but mouse better for pointing/selecting stuff, but SR CAD analog joystick track* vs mouse, mouse ist faster for selecting, analog hand movement vs track* only differential movements, increment pointer position pen vs mouse, mouse has better parallaxis (mouse cursor is on screen) pen is only good when direct on display, actually superiour for drawing trackballs, trackkey (J-Key), trackpoints, trackpads [Byte] 91-2p223 trackball, trackpad, touchscreen, Isopoint, key joystick [ct] 97-12p64 MS force feedback joystick, [ct] 98-7p74 Trackman marble [PCW] 95-10p27 Logitech marble technology these are mainly of interest for portables because no table space is required but they are all inferiour to mice for normal desktop work trackball needs 2nd hand for buttons as dificult to hold and move vs mouse also buttons move with mouse hand, can use both at same time portable pointing devices are a question of taste [Byte] 95-10p150 but HP Omnibook popout mouse called dubious achievement [Byte] 95-10p161 actually I prefer the popout mouse to any af the track* devices anec thumball (trackball in joyst) even usable in aircraft [Byte] 88-9p243 graphics tablets, pen pads, handwriting [Licklider2] p120 stylus pad that is also display [Byte] 90-7p243, [Byte] 91-2p211 pen, Go, [Byte] 91-4p207 neuro handwriting [Byte] 92-4p10 is world ready for pen, [Byte] 92-6p159 PenWin, gestures [Byte] 92-7p128 PC gets more person, Newton [Byte] 92-9p159 outlook for pen computing, [Byte] 93-1p251 digitiser tablet [Byte] 93-10p99 pen and voice, [Byte] 93-10p105 pen computing [ct] 92-5p212 pen with fuzzy, [ct] 93-11p248 handwriting recognition [ct] 97-7p68 Newton 2000, [ct] 98-6p330 programming Newton [iX] 93-10p40 Newton [PCW] 93-6p448 Newton, Amstrad Penpad, [PCW] 94-4p262 pen troubles [PCW] 96-2p72 Newton blues, [PCW] 95-12p23 HP OmniGo and Grafiti allow precise recognizing of fine pen movements very good for entering sketches or handwriting, widely used in CAD digitizer tablets, back projection screens or flat screens [Byte] 93-1p251 encoding position, direction, touch/notouch vs force recording separate devices vs overlaid over screen, parallaxis problem alternative to keyboards is handwriting recognition and editing by proofreader marks [Licklider2] p121 but problems with high processor requirements, specially in palmtops and problems with low recognition reliability, sometimes called scribbletops [Byte] 92-9p159 the SW for pens not there yet, [PCW] 94-4p262 Apple insisted on handwriting for Newton PDA, main problem with it handwriting claimed to be needed because managers won't use a keyboard is still not fully developed, unreliable, high processor requirements today only usable in vertical markets, data collection, form automation and handwriting is slow even if fully recognized typewriters were invented for faster writing, keyb for Newton [PCW] 96-2p57 [Engelbart] p234 handwriting too slow, same with speech recognition pen systems may beat keyboards for japanese, but not for alphabet [Byte] 96-9p40IS15 pen for Chinese text entry scanners and digital cameras ability to display bitmap images leads to desire to insert photos these must be entered into computer somehow, make 2-dimensio array of pixel scanners mechanical shape flatbed, document [PCW] 96-3p179, [PCW] 95-7p460 [Byte] 92-6p347 colour scanners, [PCW] 96-9p129 scanners function handheld and dia slides barcode scanners, 1 line with inprecise alignment but also later 2D pixel fields for photo sensor based scanners and also RFIF for radio scanning [ct] 2002-9p86 barcode and transponder for connecting to comp TWAIN interface [Byte] 96-12p40IS24 name meaning [ct] 98-18p179 stereo flat bed scanning 3D by moving object [ct] 98-22p146 scanning, [ct] 99-7p102 using scanners [ct] 99-21p190 SANE for scanners under linux [ct] 98-22p146 scanning techniques and settings [ct] 99-22p158 digital camera vs analog camera and slide scanner digital cameras and digital photography [Byte] 92-11p139 digital photo, appl, limits [Byte] 93-9p64 video conqueres the desktop, [Byte] 93-9p81 Apple/SGI Indy [Byte] 96-7p99 eye/pupil tracking, [Byte] 97-9p32IS21 digital photo [ct] 92-1p158 CCD camera chips, [ct] 94-5p176 video input and processing [ct] 94-9p86 photo processing, rastering, [ct] 96-11p200 digital video [ct] 97-2p220 silberhalogenid and scanning vs digital photo [ct] 97-8p192 digital picture sources, [ct] 97-15p190 digital cameras [ct] 98-14p78 digital cameras, video sensors [ct] 2000-23p286 using digicam as scanner replacement, doing OCR on it [ct] 2001-4p156 photo history and camera technology [ct] 2003-1p186 using digicam as scanner replacement, photo processing [ct] 2003-14p100 photo finishing standard TV/video item with FBAS output connected to frame grabber (ADC) live video output into part of computers screen direct mix camera with video, digital only freeze buffer into video mem vs digitalise every frame into video mem, only video output for storing images use standard video tape before grabbing the frames also special digital still cameras, video+ADC+compress+memory+serial for downloading pictures again DAC and then FBAS and frame grabber or use RS-232, stays digital, but slow and proprietary protocols and SW problem that at the moment only 2 types, snapshot and professional exa [PCW] 94-11p235 Kodak DCS-420, too big also Web cameras, video+ADC+compress+Ethernet+HTTP+GIF/JPEG exa [Byte] 96-10p44, SWF3, TNC Web cameras use standard Internet formats for downloading digital cameras should also, present contents as set of Web pages video requires either still video over custom RS-232, is slow and closed or store still video on flash/disk as FAT+GIF/JGEP or TV standard analog over FBAS/SVHS, no digital video standard yet unlike sound either HiFi standard 2*analog or CD player digital format used to input level-encoded bitmap pictures, still video or video sequences biggest use is in fax machines, are scanner+modem - phone - modem+printer also usable as scanner+printer=photocopier, and scan, print, modem this leads to universal peripheral, but wiring standards problems also inserting pictures into electronic publications, still images exa for Web page pictures also converting images to text using Optical Character Recognition (OCR) [Byte] 90-7p243, [Byte] 93-12p203 [Byte] 92-6p58 Xerox Fax form from server, fill it out, fax it to server then automatic OCR, then transaction, then answer is faxed back to user [PCW] 94-8p390, [PCW] 95-467, [PCW] 95-11p97, [PCW] 96-9p130 also image/shape recognition exa Deutsch robot image subtraction [Levy], fabrication quality control also document image processing (DIP), scanned paper documents online [Byte] 91-4p173, [PCW] 96-2p45 DIP blues, PlasmaDat DIP problems also together with printer for photo manipulation, paintbox [Byte] 92-5p372 digital faking photos, deception [ct] 96-10p134, [PCW] 96-8p41, [ct] 97-2p214 image processing [ct] 99-7p108 post processing images to improve them is used routinely for "retouching" pictures for adverts [PCW] 96-9p132 also done with video, combine one persons image and an others actions also eye tracking or hand/head motion detector as pointer replacement [Licklider2] p120 Sutherland PDP 1, [Byte] 88-9p243, [Byte] 96-7p99 [ct] 97-9p58 eye track cursor, [ct] 97-9p126 gestures virt touch screen [ct] 99-6p296 controlling computers by brain waves [iX] 93-11p42 biological signals, eye movement, brain waves [iX] 94-7p118 brain, [iX] 96-12p130 gestures this is often used to control VR systems scanner/screen/printer colour matching, screen Gamma correction [Byte] 90-12p275, [Byte] 95-1p93 consistent colour, on screen, on printer [Byte] 97-3p40IS17 colour managment, true colours [ct] 96-10p180 scan/monitor/printer colours, models, correction [ct] 2001-6p290 colour spaces, ICC diagram [ct] 99-7p122 colour managment and calibration [ct] 2002-21p232 calibration with simple methods [PCMag] 95-3p28 filling colour palette for best "true" colour microphones sound wave recorders, analog input single bit exa Dragon single bit sound sense [JamesM] p61 exa [ct] 88-8p74 syntext recorder compare input with 1 bit output, ind/dec DAC to follow, record DAC val multi bit, ADCs exa ADC chips uses lots of comparators, are fast but expensive exa Dragon ADC [JamesM] p104 compare inp with DAC out, logarithmic successive approx, cheap but slow music instruments, for connection also MIDI, same as synthesizers piano keyboards and foot pedals, laser harp only trigger vs also strength, only time vs amplitude curve mouth air pressure, as used in wind instruments (flute etc) anec also used for mouth typing by handicaped people a microphone and loudspeaker can be used for recording and playback computer as powerfull phone answering machine, automatic answering speakerphone like system, exa Xerox boards conferencing system simulated tape recorder for email voice annotations, voice mail connections line in (mic), line out (speak) and remote as tape recorder stereo analog and digital line in and out like on HI-FI tape deck this is known as Direct To Disk (D2D) recording [PCW] 94-12p346, [PCW] 95-1p360 also without micro and speaker, just line-in and line-out as "tapedeck" [ct] 98-21p118 digital audio, recording same as CD player with line-out is replacement for record player direct digital sound connection, CD->PC, no DAC->ADC [ct] 2000-18p196 adding S/P-DIF to DAC3550 based MP3 players S/P-DIF originally for DAC-less CD players to separate DAC module recorded sound requires a lot of space, audio compression using statistical compressor not optimal, make use of sound being sound lossless linear predictive coding, as in Shorten and ist derivates lossy psychoaccoustic compression FFT and remove unhearable, such as MP3 [Byte] 96-2p52 video and audio compression, [ct] 98-21p242 MP3 [ct] 99-9p200 MP3 player on parallel port, [ct] 99-10p260 part 2 [ct] 2000-3p130 MP3 how it works, [ct] 2001-1p98 audio archiving formats [ct] 2002-19p94 MP3 replacements tested [PCW] 94-10p342 DAB radio, [PCW] 94-12p517 MPEG vs Dolby AC-3 but quality loss, probems DCC/MD vs CD/DAT again very subjective, also CD vs DAT or analog [ct] 2000-3p144 MP3 hearing test, [ct] 2000-5p92 readertest MP3 vs CD [ct] 2000-4p10 RIAA record dynamic curve also distortion [ct] 2000-23p152 comparing various codecs MP3 vs the rest [ct] 2002-13p224 RIAA curve correction for record->linein analog also video recording and playback as in sound recording and playback uses even more space, uses video compression [Byte] 91-12p177 AVK, [Byte] 91-12p189 QuickTime [Byte] 92-4p106 desktop video overview [Byte] 92-5p129 raw material, [Byte] 92-6p131 graphs [Byte] 92-7p143 cutting, [Byte] 93-2p225 QuickTime [Byte] 93-3p129 desktop video conferencing [Byte] 93-7p10 video conferencing will put real multimedia to use [Byte] 94-1p107 VideoRISC [Byte] 95-5p97 video workshop, desktop video not here yet, technolo problem [Byte] 95-5p107 compression, [Byte] 95-7p103 SFX, [Byte] 95-10p69 H.32x [Byte] 96-2p52 video and audio compression [Byte] 96-5p125 videophone, because of net trafic at moment still gimmick [Byte] 97-12p59 DVx MPEG 2 encoder chip [ct] 91-2p32 Intel DVI 2 boards, [ct] 94-5p224 Video for Windows [ct] 95-11p92 MPEG card w PCI bus mastering, [ct] 95-12p230 MM video chips [ct] 96-11p222 video compress, [ct] 97-14p124 MPEG [ct] 99-24p212 digital video recorder (DVR), TiVo [ct] 2000-6p154 compressed video for internet streaming [ct] 2000-26p94 PC as digital video recorder (PVR) [ct] 2001-4p2004 Linux as video disk recorder, [ct] 2001-5p136 video cuttin [ct] 2001-20p146 c't S.V.P. PVR, [ct] 2002-14p126 digitalising VHS and 8mm [ct] 2003-6p266 H.264/AVC [PCW] 90-1p148 VideoLogic DVA-4000 video win, grabber, pic in pic, teletext [PCW] 92-11p462 DVI, [PCW] 93-3p330 video compression, [PCW] 93-6p479 MPEG [PCW] 93-10p489 DVI, [PCW] 94-2p398 digital video, MPEG [PCW] 94-10p342 video compression, use in broadcasting [PCW] 94-12p519 ATI shared frame buffer interface [PCMag] 95-4-11p104 digital video, boards and software [Uo] 96-5p42 MPEG-2 motion video mem requirement even worse than normal bitmap because repeating either use a series of JPEG pictures exa C-Cube JPEG chip on NeXTdimension card, anec missing daughter board or only every nth image and diffs, leads to video compression Motion Pictures Expert Group (MPEG) also speed of proc, assist with special hardware (de-)compression chips MPEG real time decompression is possible on a fast general CPU compression ist very heavy, special chips [Byte] 97-1p59 C-Cube MPEG compress problems with fast moving structured backgrounds exa ski race background snow structures, fences, forrest ability to see this effect is dependant on the viewers visual system timing of movements is critical to viewers, needs data streams in real time [Byte] 96-2p60 Sun MediaCenter special Solaris w multithread stream driv 4 SuperSparc+ but used little, important RAID level 4, mult Fast SCSI also data throughput problems of disk drives, specially CD-ROMs for this Micropolis special AV versions of HDs, no recalibrate pauses side effect of digital format is also postprocessing of ADC input [ct] 2001-1p75 digitally processing analog recordings, decrackling [ct] 2001-9p190 audio processing speech recognition [Byte] 88-9p243, [Byte] 90-7p225, [Byte] 92-4p135 natur IO and p151 speech [Byte] 93-10p99 pen and voice, [Byte] 93-10p113 talk to your computer [Byte] 95-12p97 voice control, [Byte] 97-10p32IS19 speech recognition, [Byte] 97-12p55 using speech on PCs [ct] 93-11p167, [ct] 94-9p122 telephone as voice terminal [ct] 97-4p284 speech control, [ct] 98-5p120 speech recognition [ct] 99-3p133 speech recognition [PCW] 87-6p144, [PCW] 95-1p470 telephone s r, [PCW] 96-2p39 doesn't work hands are not the only human motor system, humans can also generate sound but speech recognition is problematic because of speaker dependances, limited vocabulatory, stops between words noise disturbance when multiple people continuous speech over long time is tiring for user slow and error prone anec user in large office asks "how do you format a disk" joke speech is good for specialised situations where hands are not free exa postal service sorting packets, with trained operator exa speech controlled telephone [PCW] 95-1p470 here both a microphone and a speaker for feedback is available it is also only used for a short time, and the mic is protected but even this is near universally disliked, menus unflexible and slow phone desirable to all the problems described in [Norman2] side effect of recording is digital (re-)distribution of audio and video [ct] 97-1p94 DVD CDs, copy protection fights [ct] 99-20p101 DVD playing on PC, regions [ct] 99-20p132 DVD access controls [ct] 99-24p30 DVD encryption crack DeCSS [ct] 2000-2p28 DVD CCA dirty tricks [ct] 2000-4p83 BMGs cactus data shield protected CDs first faillures [ct] 2000-6p88 Napster, [ct] 2000-8p220 DVD CSS details [ct] 2000-11p70 first hit against Napster, [ct] 2000-14p28 DeCCS legality [ct] 2000-17p26 Napster prevents being closed until case handled [ct] 2000-23p310 Napster and the end of feudal copyrights [ct] 2001-3p90 moviez, [ct] 2001-4p64 what wrong with copy protection [ct] 2001-6p150 P2P other than Napster, [ct] 200110p54 SDMI hacked [ct] 2001-24p3 copy protection kills sympathies, drived people to copying [ct] 2002-2p86 DA-AD copy losses irrelevant, analog hole, macrovision fils [ct] 2002-6p158 moviez, [ct] 2002-8p204 e-bookz, [ct] 2002-15p18 TCPA [ct] 2002-16p182 DRM systems, [ct] 2002-20p106 game cracking scene [ct] 2002-22p204 TCPA, [ct] 2003-7p144 CD play on computer preventions data gloves and suits [Byte] 88-9p243 glove and position sensor, [Byte] 90-7p237 gestures [ct] 96-6p76 intelligent room, [ct] 96-11p138 data suits input users hand and body motion are the technical base for controlling virtual reality systems Debuggers exa Whirlwind MIV-MDR, interactive MDR under MIV control, debugger [Ross2] p61 exa TX-0 FLIT [Levy] p32, PDP 1 DDT [Levy] p53, [Raymond] "DDT" exa CP/M DDT, MS-DOS Debug [ctk] 88-8p189 MS-DOS Debug exa Macintosh [ct] 98-23p266 MacsBug, Windows DrWatson [Byte] 93-9p207 debugger support in Windows early comp could be used interactively via the front panel switches this allowed direct memory viewing and modifying, progr execution control batch debugging was restricted to debugging statements and core dumps interactive systems allowed the usage of better tools, interactive debuggers show more memory then visible on front panel and show it in symbolic form see a program run, what is actually happening at runtime when micros appeared ROMs were cheap, way cheaper than DMA and front panels often debugger built in, called monitor progr, runs immediately at startup exa IMSAI, Microprofessor 1, ct Z80 66*66 [ct] 88-8p124 and 88-10p164 use of debugger for dynamic view of program in execution [Knuth] p259 also for exploring a system use a dissassembler [Levy] Harris Atari Dragon disassemble in Basic used with [JamesM] to explore Basic internals the debugger is a program that co-resides with the program to be tested it takes at run time user input from the keyboard or control buttons exa CP/M DDT loaded above user program, to top of memory, just below CCP exa MS-DOS Debug uses 8088 segment system to load itself between command.com and user progr exa Z80MU CP/M DDT replaced by a powerfull debugger running on the PCs 8088 dissassembler based on RESOURCE with labels, comments anec on PC I used a similar program (SOURCER) on Form infected edit.com because it was batch oriented it failed on encrypted code only using Debug did I notice this, then decrypt, after further debug for program test/debug go and breakpoints or single step for break insert a temporary call instr pointing to entry point into debugger at debugger entry save processor state as if IRQ occured, coroutine switch later resume the program being tested by restoring its coroutine also automatic inserting of break after next instr, gives single step exec on some processors special one word BRK instr, sometimes called RST or SWI some processors special HW support for single step execution, mode flag as single stepping is slow also flow change mode flag [Dewar] 68030 or even breakpoint register, break when instr pointer = register for watchpoints also support with watchpoint registers [Dewar] 80386 for even more powerfull breaking watch points or even watch expressions such hardware features result in an processor trap when they are triggered to let user enforce program breaks (perhaps in endless loop) use a break key such a break key should be available in every OS, even when not debugging for displaying and modifiying programs and their data first octal/hex memory dump, move, fill, alter later line disassembler and assembler, can be used as sole development system exa Apple II ROM mini assembler used to write game [Levy] main restriction of line assemblers vs batch ones is the lack of symbols anec on C64 I intended to write a symbolic line/interactive assembler would merge machine code speed, Basic editability and Assembler comfort use a symbol table like a batch assembler but modify it by debugger result is a interactive disassemble/assemble editor but project got pushed away by Mandelbrot craze, Transputer, PC, MS-DOS displaying IO from debugger and child program gives mixed output switch between user program and debugger on one display save user program screen state on entering debugger incl command.com screen state before calling them, restore at exit exa Microsoft QB/QC, Borland TurboPascal/TurboC but also debugger on second display, with no mixed output usefull for editors, form programs and others that use escape sequences exa Microsoft CodeView, Borland TurboDebugger, 2nd display terminal on COMx since the appearance of window systems this issue has become less important for high level/symbolic debugging, symbol file/debug info [ctk] 90-3p361 Debug debugger session state (progr name, processor state, breakpoints) quite big save it in a .dbg file for fast reloading, returning to known position debuggers can be controlled from user IO devices or even a second system doesn't require going to the systems console or front panel on target systems without user IO devices, such as embedded systems use DMA from a second comp with debugger on it, gives a development system if DMA access is coupled with a logic analyser for recording, gives ICE also logic analyser on bus of a PC together with a debugger, exa Periscope anec voyager monitor download and bit edit, not possible with front panel Interactive Programming Systems traditional compiled languages use a slow edit-compile-run-debug cycle shell scripts are directly executed by an interpreter, no compiling leads to faster edit-run-debug cycle but at the price of slow program execution for speeding up scripts use load time compiling, exa perl [Wall] debuggers with a line assembler allow interactive programming and testing but they are limited to assembly language, to working in machine instructions interactive programming systems are interpreters for a HLL with commands for editing, running, debugging, direct executing of language and OS commands faster to use than editor/compiler/shell because no cycling between progr also easier because no multiple command syntaxes and semantics to learn enables programming by users, engineers and laboratory personnel anec all-in-one already desired by users when PL/I was developed [Radin] p591 implementation as true interpreter vs precompiled/incremental compiler (fast) editor semicompiles program line as soon as its entered often this internal format is stored in files exa MS Basic SAVE vs SAVEA, exa Emacs *.elc bytecode files variables referenced by a dynamically generated name list often no declaration required, variables generated on first writing but reading undefined vars if no error message problems with defaults for data structures dyn mem [Byte] 87-1p169 dyn mem, [Byte] 89-8p279 mem man usually transparent alloc and dealloc (garbage collection) [ct] 90-4p286 sometimes ability of interpreter to evaluate runtime generated program code this allows very powerfull programming techniques modern interactive systems even dynamically compile native machine code debuggers can link into the interpreters virtual machine and examine it exa CL (debug ...) statement [Winston], QuickBasic and QuickC debuggers anec Peter debug statement, set an instr for exec between every progr instr line() and procedure() functions together with if and print anec debugger output by 6502 emulator for testing Soft64 exa Basic [Kurtz], [Byte] 89-10p268 25 years Basic, [Byte] 90-9p276 Kurtz micro Basic exa Dartmouth Basic, HP Basic, MS Basic, CBM Basic, GW Basic, QuickBasic by Kenemy and Kurtz from Dartmouth College for training programming non-experts must be able to understand computers implications [Kurtz] p521 lecturing no good, hand on needed, like driving [Kurtz] p518 and p538 intended for teaching programming, using examples from students courses derived from Fortran, simple syntax (only a few pages to explain [Baron]) efficiency vs simplicity, simplicity for user, not for implementor, like C Language design ease of use first, also in Snobol [Griswold] p615 generally the computer shall do it, not the programmer, but not get in way no explicit declarations, var generated on first reference arrays auto dim with 10 is inflexible, better use index of first access this would also have made the DIM statement superflouos but problems with bugs when misspelling of a variable in source code gen on write still sensible, but gen on read (with=0) no need, danger automatic memory managment, garbage collection of unused string space note gotos with line number target are bad, should be textual [Knuth] p128 then later because of simplicity also used for laboratory computers exa HP 9830 Basic laborarory computer in 1973 [House] p412 then also good for rent-a-terminal systems because easy to learn [Levy] then because of easyness and smallest memory requirements of all HLLs it was chosen by HW hackers for their early 8 bit microcomputers [Levy] exa Altair paper tape Basic, was Microsofts first microcomputer program exa Apple Basic, sit down, switch on, type, like HP9830 [Byte] 84-12pA68 usually a ROM based interpreter with editor and load/save commands tape or disk only for saving Basic code, no expensive disk drive required for editing the program loaded in memory on some systems only replace an entire program line, retype on some line editor, call up program line with edit command, exa Dragon but it is often quicker to retype the full correct line on some others list block of lines to screen and then edit them, exa C64 full screen buffer edited, editing keys handled by kernal screen split into logical lines, interpret edited line when enter actual program editing only line replacement, special case of command anec this is most likely also the PET editor so liked by Harris [Levy] because of small memory size often weak error reporting anec syntax error message so often that we called it syntax terror Basic is often looked down at by mini computer hackers [Raymond] "BASIC" I grew up on it, belong to few hackers who acknowledge to actually like it actually I started with UCSD Pascal (Pascal, p-code, slow) later at work colleagues showed me Basic, simpler, easier, switched it is still the simplest language to use, exa copying C64 ROMs for Soft64 LUGS colleague joyous after finding portable basic on Linux CD-ROM exa dBase, xBase [Byte] 91-12p131 wither xBase is a classic 4GL, saves code lines and work for its intended field of use dBase is actually a microcomputer language, appeared first on CP/M but is derived from a timesharing mini DB at NASA JPL [PCW] 91-2p101 no types or no explicit typing, no declaring of types as in Snobol [Griswold] powerfull because symbols for variables are not bound when generated data has type, symbol aquires it at assignment of data, same as in Lisp but no error messages when unknown variables used anec PlasmaDat m>n typo in DB def 1 day search for bug in my code only after accidentally looking at DB def did I see the reason anec CCW database num>nr thinko gave a system crash in dBase III anec Key var in dBase IV not global like in dBase III, wrong value also problems with closed architecture, incomplete language test of a interact lang power is whether its CLI can be written in it exa Lisp [Winston], [Byte] 88-2p207, [Byte] 88-3p265 symboli, [ct] 85-7p38 and 85-8p36 Scheme dialect [Abelson], [Byte] 87-3p223, [Byte] 88-2p221, [ct] 87-11p130 [iX] 93-5p164 intro to Emacs M-Lisp HLLs were designed as "easy" to learn for people with algebraic background they also are very artificial and distanced from the machines structure taking a "the computer shall do it" attitude may make HLLs easy to learn but it prevents the user from using the processor at its full power structured HLLs didnt't change this state of affaires made it worse as complex syntax and semantics restrict expressiveness expressions and statements as in other HLLs have limit [Backus] p43 and p71 Lisp was designed to be a hardware independent symbolic syntax (high level) but still refers to general functioning of computer systems (low level) it is therefore at same time low level and very high level [Brodie] user directly types parse tree, originally upper level intended (M-expr) but users found direct parse tree (S-expr) just as easy, no intrusing orthogonal treatment of code and data (both are memory) as in Assembler reading a variable or executing a function are equivalent [Raymond] "LISP" because code and data equivalent easy to gen code at runtime and exec it this is is a powerfull programming technique, often used in AI programs anec Lisp first hidden from me behind FP lang and math exa in articles obfuscated by functional, nonprocedural terminology only after seeing that Lisp is simply a flexible procedural language and FP only an independant design ideal did I manage to understand it it was claim in [Abelson] that Lisp is procedural that unhid it for me anec Lisp was in company of hard-to-read books [Winston] p7 no first class (built in) and second class (user defined) data types all can be assigned, used as parameters, returned from a function this leads to expandable language, language only defines a syntax central memory alloc and dealloc system for code and global data everything is stored in linked lists, cons+garbage collect using lists and not strings [McCarthy] p175 advantage bigger than advantage from stepping from decimal to binary instead of the usual HLL fixed allocated stack a push down list is used return instr is pop frame into processor, gives continuations anec this is the reason for MIT ITS users prefering the term pdl for a stack [Raymond] "pdl (1)", [Raymond] "stack" garbage collect free unused mem, no manual frees with large error potential requires tracability of mem by system program external to users program for this all memory datastructs must be interpretable exa pointers identifiable for following and remapping addresses and symbolic names replaced by dictionary structures Lisp comes the nearest to machine code, because every list can be hooked cons existing list after new part and assign new beginning to name "Emacs is all hooks" in [Raymond] "hook" comes from its Lisp base compiler based on environments, allways available on-line, for debugging comparison of language elements with other HLLs no complex grammars, flexibler, more predictable, more reliable less elements, less rules, less to learn, less clashes but at first tricky for people used to them (read too much into syntax) easier parsing, easier compilers, recursive descent [Garfinkel2] p178 vs complicated context free grammar based C compilers, yacc anec syntactic sugar and cancer of the semicolon [Abelson] p11 see also remarks about features vs power in systematics less context dependancy, incremental compiling, no linking soon as interactive operation appeared interesting for interact progr similar uniformity also in APL (everything arrays), made at same time also in Unix tools (text streams), Forth (words), Smalltalk (objects) same also applies to incremental compiling and interactive use higher semantic level than most HLLs, less details, less code lines as code lines per hour is constant for a given programmer, faster work this made Lisp the favourite language of hackers it still partially is so (Emacs M-Lisp) first implementation on IBM 70xx systems [McCarthy] p175 and p192, [Levy] anec car/cdr from Assembler instruction set of that machine [Raymond] "cdr" when PDP 6/10 were fast enough Lisp was ported on to them there it aquired a interactive progr environment, editor, debug traps but Lisps large processor load lead to desire for an optimised processor CISC lead to idea of implement virtual CPU for HLL in microcode, EISC macrocode specific to intended language or even to one specific compiler allows language optimisation, but is also language dependant multiple lang at same time, or even just one diff one, gives problems as Lisp compilers are based on a virtual CPU, cons proc, put it into HW cons coprocessor to the AI labs PDP 10, finished in 1975 later MIT, LMI and Symbolics Lisp Machines [ct] 85-8p42 Symbolics, 32 bit CPU, microcoded, built from TTLs stack (actually pdl) based processor with byte machine code later special microproc [ct] 88-9p232 and 88-10p232 TI Microexplorer also Alto Interlisp, 32 bit cons struct, byte machine code [Lampson] p306 paged virtual memory, cons memmap, incremental compiler for Lisp on top similar in uniformity of code/data to a bare processor but more powerful underlying structure, cons, instead of bytes no memory smashes, leaking memory or similar problems Lisp Machines need no processes, but result only one language usable but as result only 1 language, no porting of SW in an other language multitasking, but only coroutines (execution stacks), no processes no user/system mode stacks, also because of pdl no signal/irq stack no seperate device drivers, kernal, VMs, user env, HLL comp, user progs instead loaded IO libs, input parser, online compiler and user routines Lisp can be regarded as the Assembly notation of cons processor code exa Forth [Brodie], [Byte] 80-8p? in Tech librar, [Byte] 85-3p315 Pournelle meets Moore written by Charles Moore (radio astronomer at NRAO) to be more productive similar to Lisp but with far less resource requirements because static alloc is a cross between Lisp and Assembler [Baron] Lisp cons and autom garbage collect vs Forth dictionary and manual forget this makes Forth weak in processing text, string const no problem Lisp compiler environments vs Forth dictionaries anec name Forth because supposed to be first fourth generation language only 5 chars in name because file system limit of IBM 1130 [Baron] p190 anec Kay used a 1130 for Flex prototype no keyboard driven programming SW only cards [Clark] p398, keyb input only 12 bit (punch card pattern?) used on early micros as an alternative to Basic [PCW] 96-1p259 Jupiter Ace either as language on existing kernal or DOS IO and disk system or as Forth machine with Forth user IO and disk organised by 1k screens allways implemented as an incremental compiler usually on an virtual CPU, threaded code, but sometimes real machine code takes 1.5..5 times as long as compiled code to run, very proc dependant fast threading methods for the virtual CPU [Byte] 84-12p22 letters multitasking, polyForth, xForth, 64th, special hardware [Byte] 85-3p363 anec in 85 I used Forth on my C64, gave up because no good compiler avail in 95 found this article, containing ref to good Forth for that machine similar to Lisp with Forth special HW is possible, NC4000 Forth processor is a 16000 transistor RISC chip, made by the languages designer [Ting] where Forth is the Assembly notation of its machine code exactly same speed (6MHz) and addr range (64k*16) as Alto microcode proc and was also used for generating colour video in software [Ting] not all virtual CPUs are EISC, many language specific processors are RISC exa NC4000 for Forth, Lilith for Modula, Transp for Occam, Hobbit for C even in cases of a complex virtual CPU writing interpreter on RISC faster when virtual machine is completely in cache they are equival to WISC but RISC can also be used with code from a traditional compiler anec SPARC came from a Lisp Machine project, tagged ADD [Dewar] p323 the register windows (virtual CPU allways has same reg number) and the short addressing offsets [Dewar] p316 come from here Text Editors exa TX-0 Expensive Typewriter [Levy] p47, PDP 1 TECO [Levy] p95, [Salus] p36 source text edits required tape splicing, this was a lot of work, slow it also resulted in splice rips while reading in sometimes appearing with a load of part tapes and feeding them all was easier this was possible as there was no operator who would complain of this as interactive systems had a keyboard and a video display read source in, display it on screen, edit in there and then punched out editing features editing granularity line vs character new characters typed insert vs overwrite word wrap insert CR on typing for too long, too many chars for line then also leaving line by CR or arrow key, no reflow, orphaned line end later no insert CR, only user typed chars, automatic reflowing delete/move/copy (WS, NCE) vs copy/insert (X) vs cut/copy/paste (Alto, Mac) editing position up/down, goto line, mouse point, search for strings/regexp use search instead of cursor control or mouse, jump fast to position exa Canon Cat [Byte] 87-10p121 leap keys, incremental search short distance cursor fastest, mouse so long no scroll, but move hand far jump search/leap forw/backw function only keys, few of them same fast incremetal search in Emacs ctrl-s/r, is a great feature repeated edits macro recording vs command procedures for large, systematic edits (exa var renaming) search and replace, regexp search and replace vs search and execute macro allows search interactive and the replace macro, record while first edit last action of the macro is "next search" then simply use play (=replace and search), search (skip and search), none (abort) search and replace as one combined statement/dialog vs 2 separate ones non interactive search and replace facilities can be very dangerous [Raymond] "search-and-destroy mode", [Pest] TECO introduces subtle errors for better file viewing folding/outlining to reduce scrolling structured text on the fly construction of views of document sys in NLS [Engelbart] p220 exa Emacs fancy diary using outline mode, Norberts wmf views mails requires analysing document structure, predictable formats file to edit loaded completely into memory limits max size as assembler also limits max size use multiple source files and linker file loaded partially, load in blocks, edit block, write, read next exa TECO (from paper tapes!), CP/M ED for stepping back in file first write rest, swap tape, reread, slow later (requir disks) orig file plus all new text in temp file, data struct write out new file at end of edit, exa Bravo, Emacs, Word [Lampson] p324 Windows multiple buffers desire to switch fastly between editing multiple files without saving file, reloading it and refinding position to keep clipboard contents alive for copying chunks of text between files instead of saving part in a temp file, load target, insert file, del temp leads to editors with multiple buffers, open command to make a new one desire to do file managment without exiting editor leads to editors with small shell duplicate in the editor, exa MS Word, WfW desire to see multiple buffers at the same time leads to splitting of the screen into virtual screens, windows exa NLS in 1969/70 [Engelbart] p207/208 exa E multi-region windowing [Raymond] "WAITS", influenced Xerox PARC exa Bravo [Lampson] p325, Emacs [Cameron] exa Web browser frames allow subdivision of windows into pannels also allow opening of additional browser windows [Byte] 96-12p142 managing frames, [iX] 96-5p156 frames anec [Libes] p189, [Salus] p155 vi no windows because crash but see elvis and vim clones which added these and much more screen division by time (switching) vs space (splitting) [Lampson] p315 desktop with windows floating on it vs parted screen exa Smalltalk (win), Bravo/Emacs (parted), Cedar (tracks), Markup (popup) overscan (full size of screen used) vs picture in screen (full raster used) windows and multiple screens, dragging between screens automatic window arangement [iX] 95-1p128 windows should only divide the screen (desktop+floating+subdivisions) for moving/resizing/deleting use the mouse on the window border the title bar belongs to the document displayed, not for moving/buttons title bars none vs progr name vs document name vs both window title not application-document but document-mode put together in user defined row from machname, username, dir, prog, doc in shell window display path as in prompt, anec bash problems with esc seq Emacs status line with title vs GUI title and status 2 lines iconified windows, anywhere on desktop vs in special icon region/win iconified program on desktop vs NeXT icon dock vs Win95 taskbar Widgets [Byte] 87-11p265 GUIs compared, [Byte] 89-7p250 guide to GUIs [Byte] 90-4p205 from TTY to VUI, [Byte] 91-6p124 GUIs compared [PCW] 91-7p188 GUIs buttons [Ross2] p97 light buttons (1960!), menus, scrollers, text edits menus pop up at window edge (Smalltalk) vs bar at top of screen (Macintosh) vs in window (Windows, OS/2 1.x) vs floating on screen (NeXTstep) vs pop up on left button (OS/2 2.x) vs pop up star shaped (Markup) submenues that tear off and stay (Macintosh, NeXT, Sun OL) pop up menues made only on use, can be context sensitive (OS/2) desktop pop up menu like fvwm, Backmenu, OS/2, should be user definable should contain system functions such as logout/shutdown, not in progman scroll bars thumb size proportional vs constand (Windows) arrows on thumb (OL), at ends (Macintosh/Windows), one end (NeXT), none (X) behaviour drag tumb and paging (Macintosh/Windows), abs pos (NeXT, Emacs) scroll text while dragging or not editor rulers, tab bar, formatting, status at top vs bottom of window widgets waste screen space I got a big screen for seeing more data, not for wasting it on widgets no title bars, you don't use them on paper documents you recognize them from contents, and from remembering where you put them pop up menues to save space no icon bars (paper doesn't have them) no resize widgets (no need, have you ever resized a piece of paper) no scroll bars, use PgUp/Down keys or search function, you've got a keyboard icons doesn't convey much information dir full of Word docs all look same, all have the same icons on Macintosh utility to display thumbnails of graphic files what about a thumbnail of any document, recognize text arangement a picture can say more than 1000 words, then they increase communicstion a picture can say more than 100 words, even if these words are a table but a picture can also say only one word or even less icons needing undertitles have failed [Norman1] p20 BT instructions anec mothers Sony Hi-8 Video stupid icon for dead Lithium battery required us to find the manual to understand it, writing would be better icons prevent fast scanning of filenames, because these are scattered try sorting icons, alphabetical?, on size?, on colour?, on brightness? attempts to process pictures [ct] 97-2p274 picture analysis search icons are a regression back to age of hieroglyphs 2000 years ago humans progressed to alphabets, I have learned to read anec Dennis Ritchie GUI intellect tone by Sonic t H [Garfinkel2] pXXXVII GUIs have been designed for analphabets, I'm not one, I want efficiency perhaps icons could be offered as one of many "languages" for analphabets the configurable file "listing" in newer Mac Finders does this good dialog boxes [Byte] 93-8p203 elegant windows dialog boxes exa open, save, search/replace, font/colour selectors but also floating menus/toolbars/painttools constantly show all open dialog boxes of all documents vs only those of from currently activ document, saves clutter, exa NeXTstep multiple selectors (font, colour) in a single panel exa NeXT inspectors, OS/2 spiral notebooks, WinWord settings dialog in one window swappable vs in multiple windows scattered vs both one dialog shared between all docs of same type vs each doc own one, can have diff position (over other doc!) if separate dialogs (exa search) each own search string vs common belong to a document vs to program, for each doc a set of positions modal ones stop document vs entire program, NeXTstep is bad in this dialogs get in the way, break flow of work, minimise use [Norman2] p34 are often the wrong thing [Norman1] p113 delete question box users get used to pressing OK, only after notice wrong deletion flood of windows/dialogs fill screen, lose overview [ct] 93-9p71 anec [Byte] 92-9p28 IBM ad for OS/2 Workframe/2 and Cset/2 window flooded, overloaded screen "software developer heaven" has in 1 MDI window 9 open subwindows and 2 iconified windows but they are acceptable in deviating cases, exa Plasma powder vs lot del delete dialog with cancel as default good, but should uniform in a system copy dialogs with multiple files on overwrite should offer choice of Don't Overwrite, Overwrite, Overwrite All and Cancel copying anec NeXT Don't, Ov, Can and Repeat tickbox for Ov All is unfriendly anec NeXTstep find dialog keeps keyboard focus after successfull search only way to get rid of that is search with return, but that hides box GUI Libraries writing GUI programs require many common routines to draw widgets for this widget toolkit libraries were developed many diff graphical elements with equivalent operations are simulated similar behaviour (react to user input, display themselves) use OO programming techniques, leads to OO frameworks for GUIs program control with events exa PlasmaDat events and objects description [Franklin4] [Byte] 90-5p311 events, event driven operation user HW input events (keyboard, mouse, timers, floppy insert) Macintosh floppy insert event, no OK button in backup SW insert dialog one Windows install progr also no OK, test insert with poll disk ready GUI derived input events (buttons, menus, scrollers, other widgets) GUI software events (app/window create/destroy/activate/deact/update) update event, user program processes events, only internal change separate update event triggers redraw, can be batched if many changes system events (shutdown, kill task, user log out, power off) anec Unix signals are also events, but only processor exeption oriented with exeption of BSD Unix SIGIO user input signals for event oriented building up initial objects of a program leads to UI builders, resources these are the great rage among programming tools marketroids but they can only create static objects, no runtime created ones, inflexible see declarative programming for problems with this form of coding anec Innoforms created from DB vs GUI design tools they only make the viewer objects, not the documents behind them [ct] 97-4p8 lead to surface-only progr style, no depth, saurier systems they also lead to only data structures in memory no ASCII source listing, lack of overview, transparency, bad documentation they are not powerfull enough, not used by hackers only "good" for beginners, for non programmers, for quick jobs later when time to alter progr they have big problems, fraud is exposed avoid using them at all or only use the for user demo prototyping GUI build fail [Byte] 91-10ISEp74, RAD similar [Byte] 95-8p69, better 4GL lots of different incompatible GUIs, all incompatible with each other all have some good points, each has some bad ones ideal would be the ability to chose your personal selection result there are many incompatible GUIs and lots of functionality [Byte] 91-11p221 portability and the GUI despite extensibil no standard GUI API with plug in visual style libraries classical example of closed software problems (incompatibility, waste, delay) exa Xerox Alto Smalltalk [Kay1] p254 state in 1977, [Byte] 85-5p151, [Byte] 90-10p138 [Byte] 91-8p108, [Byte] 91-8p108 10 years [ct] 92-2p132, [ct] 95-11p324 8 year user experience, [iX] 95-2p114 [PCW] 89-3p180 EuroPARC Smalltalk, [PCW] 94-10p378 first system with a graphical user interface [Thacker], [Lampson] developed to be incremental interactive system like Lisp [Lampson] p305 but based on code and data in objects, not in CONSes anec the 80423 and 80286 segment systems were patterned after objects in Smalltalk class and method defs are objects of classes class and method the class object that defines classes is of class metaclass Smalltalk object memory manag, even stack frames, as objects [Lampson] p305 Alto Smalltalk EISC processor, also Rekursiv for Lingo [Byte] 88-11p341 here again RISC has turned out to be better that EISC anec SPARC from Lisp Machine from earlier SOAR (Smalltalk on a RISC) these were most likely the RISC I and RISC II in [Dewar] p264 anec Mesa environm can't rival Lisp or Smalltalk flexibility [Lampson] p307 models and views [Engelbart] p220 NLS separate universal client and servers [Lampson] p320 decoupl interface and progr, configure, Bravo, Cedar, Emacs 2 independantly vertically scrollable section views of a buffer Macintosh/Windows window split horiz, halves viewing hight vs Emacs either cut frame in 2 windows or 2 use frames on X desktop why not on Mac/Win with A3 monitor 2 tracks in a vertically split window don't confuse with Excel vert split, both halves synchron vert scroll if 2 views into one buffer show overlapping sections edits of this section done in one viewer will change display in other viewer when user presses a key have viewer convert cursor pos into buffer pos then edit the buffer, then notify all viewers of buffer pos to redisp these convert buffer pos into line pos, check if need to redisp if so order data needed for redisp, use buffer pos for this in Smalltalk for this model-view-controller (MVC) [ct] 93-9p174 for VC->M object pointer, for M->VC Changed method in Object class controller (and its subclass) objests collect user input and call model model objects have the file buffers, edit them, then call viewers viewer objects update their part of the screen this simplifies the program structure, only write MVC subclasses for read-only viewing a file, simply forget to make controller object for invisible processing forget both controller and viewer objects one model class multiple view/ctrl classes, sibling classes exa text editor, ruler bar, format bar/box/selector, even scroll bars all different viewers/controllers for the same documents content exa document as view/edit window, icon on desk, line in browser all different viewers/controllers for a document file [Lampson] p321 exa fields in an open or save dialog box are different viewers/controllers for a file path+name, anec Juerg VB exa data visualisation different view types, view sections/directions also allows invisible use of temporary documents (only a M, without V/Cs) Macintosh or Windows have no MVC, they are not even object oriented Macintosh MacApp and Windows MFC OO layers both don't have MVC either NeXTstep Appkit at least is OO, has View and Responder hierarchy but no classes for MVC, this is major omission result of this no split viewer to text in Editor, no multi window mode but in NeXTs DBkit and EOF libraries MVC has arrived [Byte] 95-4p175 but will it make it into OpenStep, is claimed to be a portable Appkit Utah system has MVC, is base for the exitement [Byte] 95-4p30 Emacs has MVC, despite not being OO, multiple windows on one buffer possib exa Apple Macintosh [Byte] 89-6pMAC235 interface showing its age, [Byte] 89-8pMAC197 System 7.0 [Byte] 94-2p47 10 years Mac, [ct] 97-9p70 Mac OS 8, [ct] 98-11p24 iMac Apple wanted to make a user friendly computer Jef Raskin simple system based on Xerox Alto visit later left Apple and made Information Apliance (IA), Swyftware, Canon Cat Jobs complex system LISA (1983, $10000) based on Xerox Star visit it was too expensive, users didn't go for it, failed anec LISA file sys had new bit, when open file with it only Save Under Macintosh sized down to barely realistic price level ($2500) [PCW] 94-5p339 Macintosh development history but as result insufficient hardware [Byte] 86-1p366 Macintosh gripes first only 1 internal floppy drive, plug for 1 external but you need 2 drives for copying, see Apple II, CP/M, IBM PC, Lisa most uses got the 2nd external one, device laying around, more cost one floppy only acceptable if also HD, first Macintoshes neither anec on C64 I had only 1 drive to save costs, but for big copying 2 also C64 design w ROM Basic, RAM, disk only fast tape load/save first only 128 kByte memory, expanded only after user complaints anec Jobs "no one will want more than 128 kByte memory" [Byte] 92-6p101 in beginning underpowered, design errors [Raymond] "Macintoy" own Alto/Smalltalk and Star/Cedar like GUI, first widely used GUI for GUI elements ROM toolbox [Byte] 92-4p279 Macintosh programming is a procedural library, not OO, also no standard OO language claim integrated GUI vs grafted on GUIs on other systems isn't true GUI routines are in toolbox, separate from MacOS "terminal" (Evnets+QD) see D-line selection bit for addressing the 2 of them and the Finder is a separate user level program vs others (Windows/Unix) standard terminal (CON:/tty) and GUI "terminal" on top of this TTY shell and GUI environment, also 2 layers only difference is on the Mac all error handling and system admin in GUI vs others often fall back onto TTY bases tools, but see NeTXstep anec Apples own MacApp bypasses Macintosh toolbox, so much for integrated why didn't they use Smalltalk, real OO, like on the Alto this has wasted a lot of programmer time (and user time through bugs) orig Macintosh 2..5 times Alto power, so should have been fast enough at introduction (1984) revolutionary, showed users what to expect since then not very much further development, Apple rested on its laurels Windows slowly caught up [Byte] 94-12p10, where new Macintosh advantag lots of "computer for the rest of us" evangelism, but no follow up on it for the rest of us vs rest of them [Raymond] "for the rest of us" anec 1984 video [PCW] 94-9p455, [PCW] 94-12p580 but ads did not show real advantage, no PC-like compatibility trouble anec one good 3 page ad in [Byte] 92-8p17, but only brought twice closed architecture, mainly deliberate because "we know better" evangelism [Byte] 85-3p320 Pournelle Hackercon same also with Apple III, our way, like a religion [Byte] 85-1p178 Woz no clones allowed, not even with official OS licence, no spreading nearest thing to a clone was the Outbound, when Apple had no notebook selling ROMs with license but no HW around it would have legitimized the Atari ST and the Amiga Mac emulator modules anec Atari Stacy notebook with Mac emulator was first usable portab this would have lead to an immediate clone market, more SW sales result more SW for Macs inclusive the original, more for Apple to do this Apple should have separated OS department from HW dept like separating applications from OS, lead to Claris, big success compare this with PCs, Microsoft seperate from IBM, wide spread so everyone lost, Mac customers, Apple, PC cust, only IBM won from this exa hurt customers because less choice [Byte] 91-12p285 no palmtop anec the first palmtop was the Atari Portfolio (PC clone) but at same time Atari also made its Stacy 68000 notebook this ran a Mac emulator, could have also made Mac palmtop problems of proprietary hardware incompatible with everything else [Raymond] "proprietary" problem of manufacturer having to make entire infrastructure available component combinations are determined by manufacturer closed to outsiders, leads to vendor lock in, customers misstrust it result less customers, failure, becomes a self fullfilling prophesy the Macintosh managed partly to escape this trap by being very superior but never managed to become main system, unlike the far worse IBM PC result Apple missed opportunity to establish Macintosh as major system instead of innovation failed attempt to hinder others with lawyers failed in end, and made lots of bad blood, wasted money for development hackers view look and feel "copyright" as a threat to entire SW industry because not only prevents dissemination of successfull user interfaces fear of lawsuits make investment in writing any progr dangerous copyright should only cover hard work, the programs implementation it is the right to recover development costs that justifies copyright no copyright for ideas [Levy] p330 or visuals that the visuals are the key selling point should be irrelevant especially annoying as the GUI was invented by Xerox, not Apple court also saw this, Apple copyright only one-button mouse and trashcan resulted in Apple having to pay lots of damages to Microsoft anec "my house has windows, maybe mice in cellar, one day Apple will sue" anec Macintosh not MacIntosh or McIntosh because trademark [Barry] p143 and too higher prices in the 1980s [PCW] 92-11p170 hindsight 84-11 anec 5 times I nearly bought an Apple, but in the end I was discouraged II -> Dragon, SE30 -> 286er, IIFX -> NeXT, Newton -> HP, PPC -> Linux x86 anec Visicalc (which made Apple II success) nearly on DEC PDT 150 also discouraged by DEC, fiasco, lead to Apples success [Bell] p33 anec in days of the II Apple was a hackers company, failure worse for that exa Microsoft Windows [ct] 98-1p68 Windows 98, [ct] 98-7p60 Win98 final beta, [ct] 98-13p80 Win98 [PCW] 95-9p103 Windows 95, [PCW] 95-11p34 W95 hype bubble breaks Microsofts for a long time successless attempt to bring a GUI to the PC also a Smalltalk like GUI, first only window pannels (in 1.0) only in 2.0 real floating windows but only one document per program for multiple documents start multiple copies of program gives 2 separate instances, mem sharing via mem manag but only possible for programs written in medium memory model in 3.0 multiple documents per program, but only w MDI interface, losing MDI wastes lots of screen space when progr windows are not full screen when full screen Macintosh-like but only w docs of that progr visible when not full but doc using full progr win only one doc per progr vis MDI confuses new users enormously and is more work for experienced ones MDI defeates attempts to spread multiple docs onto dual screens anec MDI was done so by Microsoft to avoid conflict with Apples lawyers procedural languages and DLLs [Byte] 92-12p247 windows DLLs for GUI DLL GDI.EXE for screen drawing, DLL USER.EXE for GUI elements anec Windows icon hack [PCW] 92-11p451 anec it is widely believed that the Lisa/Macintosh lead to Windows as clone this is wrong, Microsoft had a Star in 81 announced Windows in 1983, but 2 years late [Byte] 84-12p9 [PCW] 95-9p141, [CWS] 93-10-18pA5 Windows history same Microsoft mouse is same age as Lisa [Byte] 93-6p46 introduced in 83-6, [PCW] 93-7p230 tested in 83-7 this comes from writer of MS Word being writer of Bravo editor on Alto but only available incomplete mid 85, is reason why people think clone having no success until Windows 3.0 in 90 helped reinforce this view late delivery and delays after announcements are common with Microsoft exa Windows 1.0, 3.1 and 95 delays exa common macro lang vs still separate VB, WB and VBA [Byte] 87-6ASTp11 BG beyond macros, [Byte] 89-10p276 univ macros exa OOFS shall appear in Cairo (1996/7) [Byte] 91-5p132 all data should be in an RDMBS [Byte] 93-1p97 Pournelle a peek at OFS, an extension to NTFS [Byte] 95-8p52 or not any more, as Microsoft admits in [PCW] 96-6p34 this is endemic to way Microsoft works (or doesn't work) [ct] 92-6p36 Microsoft organisat structure [PCW] 94-5p456 Microserfs, [PCW] 96-4p116 many programmers + complex, badly defined interfaces = many bugs constantly changing interfaces = not up to date programmers, worse it is also used as a deliberate marketing tactic [CWS] 93-10-18pA5, [Raymond] "brochureware", [Raymond] "FUD" exa Apple Lisa Toolkit/32 [Byte] 84-12p124 using Object-Pascal exa NeXTstep Appkit library using Objective-C[Byte] 97-6p65 Objective-C NeXT founded by Jobs left Apple over Macintosh II further development fight the machine repeated LISA failure because it was also too expensive also repeated Macintosh 1 disk drive mistake with only 1 MO OD no hard disk (not even for paging) or floppy disk (for backup/install) anec paged so slow that NeXT retrofited all machines with 40 MB HDs anec for copy swap disk, this is the Unix boot and swap disk also repeated the mistake of going it own way, not compatible, closed no X display server, no connectivity to other workstations OS found niche as platform for custom application development/deployment Objective-C has run time linking but failed to gain a large following mainly because of commercially motivated distribution restrictions NeXT and Sun are now defining OpenStep based on NeXTstep Appkit OpenStep is only an API, NeXT implemented in Obj-C/DPS, Sun in C++/X GNU is writing an implementation, GNUstep, on either X or DPS expanded X [Uo] 95-11p88 Michlmayr interview anec on NiCE NeXT server dir OpenStep with one subdir GNUstep [ct] 97-3p126 Apple buys NeXT, technology merger in Rhapsody [ct] 97-12p80 Apple Rhapsody [ct] 98-11p26 Apple MacOS X, Carbon, Rhapsody with an MacOS like 3rd API [ct] 99-9p116 MacOS X Server test anec NS is the system that has changed the spelling of its name most often exa Macintosh MacApp OO lib [Byte] 92-10p267 MacApp and TCL using C++ [Byte] 88-8p215 C++ all important OO features are missing, overly complicated [Tittel] obj are only fancy structs, runtime blocks of bytes [Garfinkel2] p206 static linking, no run time loading of new classes C++ was originally not intend as OOP, just as improved C OOP added later, but without leaving procedural linkage model object types are static, compile time resolved, messages are calls later virtual keyword, uses data structs, but built at compile time C++ is better than C similarily as Smalltalk is better than Lisp but Smalltalk is better then C++ similar as Lisp is better than C C++ code explosion vs C [Garfinkel2] p215 C++ is to OO as sacharine is to sugar, looks like it, but no content will lead to same problems with monolithic programs it supposed to solve C++ has been called the Cobol of the 90s [Garfinkel2] p203 exa Macintosh TCL class library using C++ [Byte] 92-10p267 MacApp and TCL exa Windows MFC OO lib using C++ [Byte] 90-8p133, [ct] 98-1p166 MFC C++ library Documents [Engelbart] p207 NLS integrades other data, postprocessed documents [Byte] 92-12p143 document oriented interface [Byte] 94-8p91 managing the new document, [Byte] 97-5p75 Doc Managment Systems designing good Web pages [Byte] 96-3p91, [Byte] 98-3p103 effective html forms [Byte] 96-7p115 experience, [Byte] 98-5p103 effective HTML forms [iX] 96-11p156, [ct] 96-7p188 Web presence, design, tools, juristics [ct] 97-3p134 Web presence, p150 good page design, meta tags, char sets [ct] 97-13p246 web page design, [ct] 98-22p132 WYSIWYG HTML editors storing formatted/multifont/attribute/structured text in files, markup formating codes, formated ASCII [PCW] 94-8p548, RTF, TeX, SGML, HTML same storing graphics bitmaps (GIF, TIFF, PNG) and vectors (CGM, EPS) early system NLS document formatting compiler 1975 [Engelbart] p211 TeX [Byte] 97-3p67 [ct] 97-15p274, [ct] 98-8p214 graphics in TeX, [ct] 99-5p224 TeX and LyX HTML markup language for formatting text, embedding links, built the WWW derived from ISOs SGML [Byte 92-6p279, [Byte] 93-9p111, [Byte] 96-8p20, [Byte] 97-9p23 DHTML [iX] 94-4p186 SGML vs ODA, [iX] 95-7p126 SGML, [PCW] 92-3p330 which came from the DODs CALS project [Byte] 92-6p279 is ASCII with embedded codes, writing [PCW] 96-1p246, 96-2p250 and 96-3p228 directly write HTML by hand vs HTML editor [PCW] 96-6p123 WebEdit developing Web content, editor+server+browser [ct] 95-9p166 ASCII text stream with GUI power, like PostScript printing [Byte] 96-8p76 HTML expansions to increase expression abilities, Web attractiveness expand HTML to use more data for more impressive results [Byte] 95-3p30 versions, [Byte] 95-7p76 future [Byte] 97-11p53 DHTML P1 [Byte] 97-12p61 DHTML P2 [Byte] 98-1p43 DHTML P3 [Byte] 98-3p58 improving the web HTML 4.0, XML, CSS, DHTML [ct] 95-7p250 HTML 3.0, [ct] 97-3p72 Microsoft extensions for IE 4.0 [ct] 97-12p240 style sheets and incomplete implementations [ct] 97-16p156 Netscape 4.0 DHTML and Javascript [ct] 98-4p234 DHTML IE JScript, [ct] 98-8p208 HTML 4.0 [ct] 2000-6p244 XML formatting with XSL, [ct] 2002-2p172 XML [ct] 2002-9p54 web link halflife, [ct] 2002-20p232 Mozilla and XUL originally HTML (1.0?) had only 1 letter tags nchor, old, eader, talic,

aragraph, trike, nderlin then better formatting in HTML 2.0 increased text formatting, but nowhere near TeX-like even better formatting in "HTML 3.0" background, tables, maths notation (Arena demo) even better formatting in HTML 3.2 [ct] 96-8p106, [iX] 96-8p122 and XML [ct] 98-21p308 XML style sheets, [Byte] 97-11p97 CSS, [ct] 97-8p298 CSS and XML [ct] 99-9p162 HTML 4.0 and CSS level 2 [ct] 2001-3p130 various common web formats HTML viewers/Web browsers for various systems Nexus TBLs NeXT browser from late 80s [PCW] 94-12p381, [PCW] 96-4p295 also editor unlike most today [PCW] 94-12p382, [Krol] p242, [Liu] p291 www (linemode) and viola (X) [Krol] p227, www-line [iX] 93-12p86 lynx for full use of VT terminals, from Kansas University Mosaic/Netscape from NCSA Marc Andreessen and Eric Bina [Byte] 95-1p75 Mosaic, [Byte] 96-1p24 Netscape 2.0 [iX] 94-2p150 Mosaic, [iX] 94-12p78 Netscape 1.x Internet Explorer from MS [Byte] 96-9p41, [PCW] 96-8p61 [ct] 96-2p126 new Web browsers, [ct] 96-7p86 Web browsers [ct] 97-12p182 IE 4.0 in practical use biggest problem of formatted data is lack of standard data formats [Byte] 91-11p211 transparent data exchange, is a mess [ct] 93-11p133 document exchange over system borders [ct] 97-10p292 Internet picture formats, [ct] 98-7p116 alternative browsers problem with many different file formats, no real standards one users data is not readable on an other users system reading others users files depends on import progr, some work, some don't requires importing, format convertion, only if other format is known [iX] 94-8p74 ASCII<->TeX<->RTF<->HTML conversion filters if composite docs based on same technology none will be entirely readable components without standards will reduce readability of documents because it increases amount of specialised formats incompatible objects and serialisation makes files incompatible binary files are also bad to read, impossible to derive structure exa QB, Basic programs stored in proprietary binary (tokenised) data require usually missing external documentation all the points made under bug recovery apply also to here the trend towards XML is good, as this is ASCII, analysable and missuse of non-standard expansions makes pages browser/sys dependant do not do this, there are many users without Netscape, this annoys them Netscape wants to be the new Microsoft, you don't want that to happen Tim Berners-Lee incompatible features require same browser author has forces the pages reader to buy that product [PCW] 94-12p382 also quickly introduced extensions without peer review are unripe [ct] 97-4p136 Netscape extensions badly thought out font/frame/layer anec NeXTstep OmniWeb [ct] 96-5p114 home page with logo "Not too shabby in OmniWeb" [PCW] 96-4p295 uses important stuff like JPEG, bg-images, forms, tables, frames Adobe Acrobat [ct] 94-12p68, [ct] 97-10p118 Acrobat 3 [ct] 2002-7p162, [iX] 95-8p130 PDF file format [ct] 96-5p316, PDF reader in Ghostscript [Uo] 96-10p74 no real solution to problem, because it only contains "printed" image not editable model [PCW] 93-8p284 also proprietary, long only as pay for use software, incl reader less readers, less people viewing, cost for making PDF not interest result no documents in this format, prevented it being standard PDF readers are now free, but the generators still cost [PCW] 96-8p24 and because of only few documents readers are seldom, don't use but by now aims much higher, classic licensing shooting in own foot anec importing ASCII text into MS Word uses Times-Roman and 2.5 cm Tabs should use a fixed width font and 8 char Tabs, as ASCII expects is generally problematic program, [ct] 98-21p216 large texts in MS Word anec Microsoft programs are not even compatible with their own ancestors exa Word 2.0 converted by import filter to 6.0, no way back installing both 2.0 and 6.0 and using clipboard will not work if install doesn't trash one or both or system, clipboard confusion anec NeXT .wn files converted to ascii with copy/paste when moved to Linux later I found an utility for .wn to .rtf, too late, .wn already deleted each document appears on screen as an independant object programs as classes, when a document opened its progr is loaded and activated on closing last documant of a class its program is deactivated and unloaded reloading program on next open should be fast, as still paged in memory on close of a document the last used opened doc in sys should become active not the last used doc of the class of the one being closed, as in NeXTstep menu of a class should be only visible when a doc of its class is active when no doc of a class open its menu shoudn't be on screen, as is on NeXT no grayed out menu points which are only valid when a doc is loaded reduces user confusion, simplifies program and reduces bug chances no open command and dialog box in menues of document editors is a historical remnant from systems without permanent shell and job ctrl exa memory limited Alto, single editor PCs, single program Macintoshes with allways available shell (exa Cedar desktop) superfluos, get rid of it use directory viewer/editor to open a document even command-line Unix knows this, spec filename on editor command line no program icon on desktop as in NeXTstep, or put program in dock to speed up loading use autostart, requires hide window option dialogs, find, selectors should belong to each document, separate position floating menus should also have doc depend pos, not progr dep like on NeXT of course pop up menues would be even better, require no position when read-only document is opened viewer/editor should go into view only mode should only go into modifiable mode when the file becomes writable this could be result of a save-as, new file is then automaticaly writable or of a successfull chmod/own on old file, preferably from editors menu exa vi -r is still editable, even if the file is ro, only prevents writing GUIs are bad in this, allways allow editing, then user gets problems must close with save as, delete old file, rename, reopen, refind position component documents (document subparts, sudcocuments), embedding and linking [Engelbart] p203 component documents (in 1973), [Byte] 91-2p211 Go Penpoint [Byte] 90-10p209 Brad Cox OO reusable software components [Byte] 91-5p126 OLE vs NewWave, [Byte] 92-10EGTWp45 OLE [Byte] 92-12p143 Objects for End Users, [Byte] 93-3p209 OLE 2.0 [Byte] 94-3.183 a close up of OpenDoc, Bento storage format [Byte] 94-5p46 VisualBasic componentware, [ct] 97-4p8 component bug critic success from OO no standards problems but problems with proprietary and reliability, no bug fixes (binary libs!) [Byte] 94-11p199 extending the reach of OLE, [Byte] 95-3p169 OLE controls [Byte] 95-4p151 CORBA 2.0, [Byte] 96-1p83 compon-ware OLE vs CORBA vs OpenDoc [Byte] 96-4p99 OLE is badly defined, difficult to implement MS view of OLE can be seen in many repeated functions in win/word/excel but also OLE2 in DocObjects container app [Byte] 96-8p116 [Byte] 96-11p49 first use of OpenDoc, [Byte] 96-12p41 toolkit available [Byte] 97-4p93 CORBA vs DCOM, [Byte] 97-5p93 the component enterprise [Byte] 97-9p56 ActiveX what is it, terminology unraveled [Byte] 97-10p95 CORBA, Java and the Object Web, [Byte] 98-3p47 MS DCOM [ct] 96-12p258 ActiveX, MS counterpart, only Windows, x86 proc [ct] 97-3p224 components, COM/OLE/OCX/ActiveX, p238 OpenDoc [ct] 97-8p286 COM/DirectX/ActiveX, [ct] 98-1p172 OLE automation [ct] 99-2p152 KDE and CORBA, [ct] 2001-5p242 KDE IO slaves [ct] 2001-6p252 .NET, [ct] 2002-4p86 .net [PCW] 96-6p266 OLE structured storage with "messages from beyond" [iX] 94-6p54 OLE 2.0, [iX] 94-?p? CORBA 2.0, [iX] 95-12p160 Sun Spring OO OS [Uo] 96-5p75 CORBA books, [Uo] 96-12p8 ActiveX "openness" document is a collection of related objects with sensory display [Kay1] p257 for each type of frame (subpart) of doc have a specialised viewer/editor for embedding an object use insert command in edit menu, not modified paste should bring up a selection list of supported doc types (classes) Web browser HTML expansions for files with other data formats than HTML embedded graphics exa GIF, JPEG, PNG [iX] 96-9p116 bitmap graphics animated GIFs [Uo] 96-12p88 Web HTML and fonts [ct] 98-10p214 exa CGM vector graphics [Byte] 96-5p40IS3 exa VRML 3D models [Musciano] p158, [Byte] 96-3p61 [ct] 95-7p110, [ct] 96-8p234 VRML 2.0, [ct] 97-5p236 VRML 2.0 [ct] 99-6p106 VRML comeback or last stand before Java3D takes over [ct] 99-8p226 Java-3D [iX] 95-5p86, [iX] 96-10p76, [Uo] 96-12p82 VRML call helper apps via MIME format types [Musciano] p157, [iX] 96-1p142 exa .wav sound files, RealAudio, video clips exa Excel file [Byte] 96-4p79 with HTTP/browser as middleware this development is solving the file format portability issue that has plagued the document file movement since its beginning LiveScript/JavaScript from Netscape [Byte] 97-5p99, [Byte] 98-2p59 JavaScript, [Byte] 98-7p47 ECMA JS [ct] 97-11p23 IE 4.0 and NS scripts incompatible [ct] 97-15p290 Javascript and perl web shop [iX] 96-2p134, [Uo] 96-5p78 JavaScript an extension to HTML that allows embedded scripts in a C-like language that execute locally and dynamically generate HTML [Byte] 96-8p117 JavaScript is not Java!, not even related to it original called LiveScript, remamed by marketing slime to JavaScript to pigyback on Java marketing hype, will confuse users enormously others say LiveScript and Java are starting points for JavaScript the real JavaScript is only starting its development at the moment JavaScript is only vapourware [ct] 96-2p136 to preemptiovely counter Microsofts VBScript vapourware at least it can now call Java using LiveConnect [iX] 96-7p110 PerlScript [Byte] 97-4p121 as a better ActiveX Scripting than VBScript allows Web to become multimedial, publish anything on a Web server but better use text than pictures they can take a long time to download [iX] 95-6p136, [PCW] 96-5p207 they have low info density, see GUI icon critic I gave up picture stories long ago, more limitation then help they can not be searched or indexed as text can, not-text indexing [Byte] 91-4p193 pure pictures indexing problems, text to find them by [ct] 89-7p192 music records problem of finding if only picture known [ct] 97-2p274 picture analysis search [ct] 2001-15p162 picture search engines [ct] 2002-6p252 image finding tool they are not speech convertible, exa for blind users [Byte] 90-8p258 opening doors for the disabled, blind/deaf/motor [Byte] 91-6p416 windows of vulnerability [Byte] 91-12p118 making the GUI talk [Byte] 93-6p59 adaptive technology, computers for disabled [Byte] 96-4p236 a word is worth 100 pictures, blind an text only web [Byte] 96-6p416 blind and GUIs [Byte] 96-10p59 Win95 aiding disabled, [Byte] 96-12p36 blind [Byte] 97-4p51 Unix and X Windows support for blind/disabled [ct] 98-4p194 GUI/multimedia trouble blind/deaf, adaptive technology [ct] 99-4p202 blinux blind in/output, [ct] 2000-3p200 web for blind [PCW] 96-4p112 computing for the blind [Musciano] p139 pict, p189 link icon, p197 imgmap critics [PCW] 96-6p47 Web better with less pictures, less overdesign [Byte] 96-5p30 20% of all users browse with graphics disabled for linking embed a special link object containing the linked documents path code for doing the link dereference in class for link objects, not in OS links give problems with broken links (invalid filename paths) document links are like Unix symlinks, Macintosh aliases, OS/2 shadows inclusive problems with broken links, pointing to nonexistant targets anec NeXTanswers dragged to other dir only sym links, deleted first would not happen with inode num in doc, would survive mv, but not cp+rm when renaming/moving a file OS/2 checks aliases in desktop folders hypertext is text with embedded links text with integrated pointers to other texts/positions, hypertext hypertext structure with multimedia data types gives hypermedia [Byte] 88-10p237, [Byte] 88-12p315 HT CD-ROMs, [Byte] 89-7p241 paperless [Byte] 92-10p22 SMGL HyTime hyperlink format exa Memex links for automat cross reference following (1945) [Bush] p245 exa NLS journal system, hypertext [Engelbart] p212 mail system included automatic journaling for everyone to look back exa Xanadu from Ted Nelson [Byte] 88-1p225, [Byte] 90-9p298 is old, closed, not widely known or used because proprietary killed off by managment of Autodesk, because no results [Gilder] exa World Wide Web from CERN Tim Berners-Lee [PCW] 94-12p380 interview is new, free, wide known and spread, is Internets killer application is a classic example that spreading access to a program is important while Xanadu focused on assured payments, requires complex managment Web thriv on free data, get what you want, grows at providers speed monolithic systems limited on formats, better split into separate modules separate viewer modules for different data types base HTML with core classes and extensions [Byte] 95-3p30 Microsoft IE extendability IE 3.0 normal OLE2 for opening viewer/editor Web can then use all OLE2 client document formats, exa MS Office but separate HTML editor, FrontPage [PCW] 96-8p67, with p-t-p serv you only need to add an URL-like link document type to OLE2 but this gives the danger of MS Web format dominaton formats would have to be laid open, like the .wav sound have been the plans for the MSN network [iX] 95-8p88 most likely based on this most likely with an own protocol instead of HTTP and TCP/IP but it saw no storm of users, given up [iX] 96-10p94 Netscape add-ins like Quark XPress XTensions [PCW] 96-6p58 but only browser extend vs OLE entire desktop, MS has an advantage also where are spreadsheet, paint/draw, charting/presentations etc directories are documents containing a table of documents with one document in every row, all document names in one column all documents including directories offer the same standard functions [Lampson] p327 directory as text doc, [Lampson] p329 Laurel list/read/write [Lampson] p324 Bravo document directory, Emacs dired and rmail header view change a document name by editing doc field, same change permissions, owner anec on NeXTstep altering a doc name moves it when file list resorted if users clicks a line before resort, click should be moved fittingly search and replace incl regexp on file name list, like on normal texts copy, move, delete by editing cut/copy-paste, move-copy-delete, drag&drop not like Macintosh where in dirs drap&drop but in files cut&paste exa delete data from a file by dragging it to the trashcan anec if the trashcan is only for deleting files it should be part of the dired window, like in Geos same disk drives for drap©, printer for drag&print anec ejecting disk by dragging to trashcan, would expect disk format but Macintosh (because only 1 disk drive) cashes dir info, "mount" this info (and not the actual disk) is symbolised by disk icon dragging icon to the trashcan deletes dir info, eject side effect exa move/copy files with cut/copy and paste best offer both systems in both places, let the user chose prefered style open a document by clicking on it and menu-open or double click on it open command in dired doc-ops menu with copy, rename, chmod/own, delete in editors menu close, but also save under, rename, chmod/own, delete also in editors menu close-without-save, revert-to-last-saved also rename-last-saved-to or open-last-saved for keeping old create a new document by inserting a subdocument (or a link to a doc) should bring up the same selection list as in embedding a subdocument doc names are feature of directories, not of document, see paper folders directory should offer automatic document naming rules use a standard name such as "untitled" and use rename or save under also have directories with unnamed documents, automatically numbered config directory listing with DB-select-like abilities config filter for showing lines, user defined sorting (incl user fields) config format of listed lines, row of fields displayed (incl user) setable for each directory, stored in directory document or .dirconf files anec on MS-DOS disks it is possible to phys rearrange dirs, DS.EXE program anec with update for disks > 32 MByte Norton dropped DS.EXE, bad allow adding of user defined columns, subclasses of directory class exa priority, to-do date, who shall do, state of work, comments mail reader list view also expanded directory, with sender and subject fields [Lampson] p319 Star/Cedar picture with mail list and reader visible separate mail reader (mail dir + doc viewer) and writer (editor + new doc) reply/replyall/forward buttons in reader, call writer with options not like on NeXT, where these are in the Compose window mail reader only inbox directory operations and call viewer desktop is an expanded directory exa OS/2 Workplace Shell desktop with X/Y coord for obj positions and open/icon flag, displayed full screen directories in directories give many separate windows, flood of windows vs combined window for all directories, called a browser one dir visib with enter/exit (Norton Commander, Emacs dired with e/Meta-W) vs tree view (Macintosh tree mode) vs panel browser (Smalltalk, NeXT file viewer) vs tree view and one node (MS file manager) anec tree view from outliners, for hierarchical data directroy tree+node view back-imported to outliners [PCW] 96-6p267 directory browsers and document editors in separate windows vs merged default merged, documents treated as lowest level directory node but user can select at runtime when to spawn separate dir or doc window exa some Web browsers default replace page, shift-click new window for uploading user FTP odr scp or rsync, or HTTP extension WebDAV [ct] 2003-10p216 WebDAV document files [Kay1] p257 frames in a cross-indexed FS [Byte] 97-12p99 MS COM+ exa OLE2 COM files [Byte] 93-3p209, [Byte] 94-1p139] OLE vs Opendoc exa OpenDoc [Byte] 94-3p183, [Byte] 96-7p49 OpenDoc on OLE [ct] 95-4p382, [PCW] 94-11p475 OLE2 server lets its client (the embedded document) open its document stored in the servers document file as if an own file on disk OLE2 server must embed the clients document in its document structure and register with the OS as server to provide the data for client store multiple byte streams in file, COM like multiple files on a disk or more like DB tables in a database file/partition store multiple documents in one file without OLE-like servers multiple versions of a component in one file use DB-like commit/rollback for separating them why should a OLE client know whether it is editing a file or embedded data this should be automatic, Multics-like handle=fopen(pseudo-filename) OS should generate the pseudo-filename, and hook fopen() call OLE server and OS together are equivalent of shell and filesystem even better would be OS passing a pseudo-file handle to client program compare this with Unix filters stdio connected to pipes as if files also there should be no menu changes file menu no open, generic close anec OLE2 doc files alloc space from disk in block, then write data often space not overwritten, contains old file content [PCW] 96-6p266 simply store subdocuments as a set of files in a normal filesys directory exa NeXT *.rtfd directories with file TXT.rtf for main RTF text and subdocument files .dir.tiff bitmap or .dir.ps vector image can be used as document icon same progr with all their resource and icon files in *.app directories in csh they also appear as normal directories, not as programs appear in FileViewer as docs, not dirs, force open with Cmd-shift-O but does not appear as a document file in csh, as normal directories with /NeXTapps in path, Edit does not exec /NextApps/Edit.app/Edit anec NeXT mail does automatic tar.gz.uue, but shell not, by hand anec NetSurfer browser saves HTML+GIF as rtfd+RTF+TIFF [PCW] 96-5p264 unlike other browsers that only store HTML, drop pict, exa Arena this astonnished PCW writer, he first suspected component file unfortunately there is no way to convert back to HTML+GIF else this could also be used as method for creating Web pages better would be save as dir with extension htmld containing HTML+GIF and have the html and htmld file endings both start up NetSurfer unfortunately no method for telling FileViewer that this dir is a doc exa Web store a HTML file and its files in separate directory use the document name as directory name, put main text in index.html then in all file reference use ./ then establish a convention for displaying such dirs as documents perhaps a .dir-is-a-doc file in the dir would be a good idea all document file stuff only specifies embedding and multi stream files neither specifies the contents of the streams for common document types to start the right viewer/editor for data in a specific format use extensions, filename.type, exa DOS/Windows/VMS anec Decus Motif file manager shows icons, suppresses extensions or use magic code at begin of file, exa Unix, PostScript (%!) OS enforced file types with magics, exa #! scripts start shells anec NeXT Workspace Manager uses ext, but Edit uses magic for RTF anec Unix magics were onse PDP11 JMP instr over diff length file header these were used to detect types, later deliberate codes invented or use magic code external to file exa Macintosh type codes in file system exa multipurpose internet mail extensions (MIME) codes [Costales] p579 RFCs, [Byte] 96-2p56, [iX] 93-7p142 2 part ASCII string general/detailed in mail header selecting viewers for document types [Liu] p141 mailcap file email was originally only ASCII, now also formated anec early document mails in NLS 1969/70 [Engelbart] p207/208 HTTP uses MIME codes, main difference from HTTP 0.9 to 1.0 [Liu] p288 but httpd servers use the file extensions to set the MIME types the same MIME codes are also used in WAIS and Gopher document file systems documents in directory are stored as embedded documents for creating a new document use the insert document command same as for inserting embedded subdocument in normal document embedding a link object in a directory is equivalent of a symlink file top directory with all its documents (incl subdirs) lead to one big document one document file fills entire disk, no other files, drop file system no underlying file system, as with databases, becomes a document file sys doc file sys is a object database, each subdoc becomes a object in it differences of a document file sys vs a normal file sys dirs are normal docs, structurally flatfile databases, subclass? objects have FS internal reference numbers, docnames are part of dir docs all objects have a type attribute for linking to editor program programs are themselves objects of special type sys_exec each one has in its structura a process_doc tag for linking to its docs all objects can contain pointers to subobjects equivalent of fsck/chkdsk must traverse through all docs for links Unix filesys is nearly right for a document system dir/inode info split is similar for embeded links use symbolic links but if any file containing user defined data can include inode numbers this requires revised open() and fsck to traverse all docs for inodes alternative all sub docs in one doc dir, no ls on this dir, exa NeXT document files are only needed to circumvent native OSes file system limits because they are not object databases, for backward compatibility also known as Object Oriented File Systems (OOFS) [Byte] 92-9p307, [Byte] 95-8p52 a peek at OFS because directories with files in them are not powerfull enough exa versions, automatic name generation, date in name (not separate) true OO embedded documents can rely on object store to contain its data OLE2 structured storage [Byte] 95-10p122, leads to Cairo OOFS Object Oriented Databases (OODBs) [Byte] 89-9p277 OODBs success like RDBs, [Byte] 90-10p233 OODB vs RDB [Byte] 92-5p141 postrelational, [Byte] 92-12p161 OODBs, [Byte] 94-4p75 OODBs [Byte] 97-4p109 RDBMS fight back, [Byte] 97-6p51 publish and subscribe [Byte] 97-10p101 OODBMS myth debunking, [Byte] 98-4p91 ORDBMS, thick servers [ct] 97-5p284 OODBs [iX] 93-10p72 Postgres, [iX] 96-3p134 Postgres95 with SQL, [iX] 96-5p140 Object Relational DBMS (ORDBMS) are RDBMSes that store objects, exa Postgres because text oriented RDBs are not powerfull enough anec C.J.Date who made RDBs with E.F.Codd said this is what they meant multiuser editing of relations and objects in a DB, exa Claris Filemaker [Byte] 88-12p245, [Byte] 93-3p113, [Byte] 94-7p101 mult viewer/controller on clients connected to one model on server locking documents as in form clients and relational DB servers today some say OO systems will be the end of great OSes but NS, Cairo/NT and Taligent all only OO subsystems of microkernal+filesys problems w dirs/files and fileman/editors vs true dir/file objects/classes rena dir or file while loaded in editor followed by save makes new file editor should store inode, not filepath, write into old file del file while loaded in editor followed by save remakes file editor should keep file alive, delete only when editor closed or del of file kills editor proper OO Systems are more than file systems and OO programs, consist of documents (texts, spreadsheets, graphs, forms) and containers (desktops, files, search result lists, mail inboxes) everything (code and data) is stored in Objects each document is a Object, each document type has a class definition document classes are derived from a basic Document class integrated system, all objects are first rate members all action is event driven (keyboard chars, mouse actions, system events) user programs wait on semaphores, after event arrived they get sheduled only when true document and container will they be true OO OSes at moment for users existing stuff is old fashioned but tried and trusted vs the new being powerfull but not yet ripe for use document databases [Byte] 88-12p245 working together, human and tool system, NLS, hurdles [Byte] 92-6p245 using knowledge, p257 docum, p263 e book, p271 search/retriev [Byte] 93-9p95 electronic publishing, [Byte] 93-9p121 electron reference docs [Byte] 94-8p91 the new document, document managment system [Byte] 95-8p84 system comparison, Lotus, Microsoft, Novell [Byte] 96-6p93 under construction, hurdles, [Byte] 96-7p69 Notes vs Web [Byte] 97-5p75 Electronic Document Managment Systems [iX] 94-2p112 groupware mess, [iX] 94-6p146 linguistic document subsets [PCW] 90-3p144 electronic publishing for aircraft documentation exa Lotus Notes, is a shared document database based groupware but long high costs, proprietary data format, vendor lock in [Byte] 93-7p161 Notes 3.0, [Byte] 95-4p131 Notes [Byte] 95-7p26 Notes meets Internet, [Byte] 96-4p133 Notes 4.0 [Byte] 96-10p49 Lotus Notes Domino, internet connection [Byte] 96-12p112 Notes 4.1 vs MS Exchange Server 4 [ct] 95-1p190 Lotus Notes as base for groupware [ct] 96-10p318 Notes vs Intranet for groupware [ct] 97-4p340 Domino, [ct] 97-12p138 Lotus Domino 4.6 [PCW] 94-11p259 proprietary DB data format trouble [PCW] 96-5p114 Notes 4.0, [PCW] 96-8p28 Notes with Domino as Web server exa Web browsers as document interface to local and remote servers [Byte] 96-7p83 Web as universal UI, MS WebView, Apple search engine intention that you treat the entire Web as a large remote file sys [Byte] 97-3p66 Netscape future plans, ONE, Constellation Netscape 3.0 had added mail, news becoming universal work environment Netscape 3.0 Gold even has an integrated HTML editor [Byte] 96-1p24 [Byte] 97-6p41 IE 4.0 Web browser and Windows desktop in one [Byte] 97-7p60 NUI desktops, IE 4.0, Constellation, Oracle, Sun [Byte] 97-9p85 HTTP+NNTP+HTML simple groupware, [Byte] 98-7p81 NNTP groupw [ct] 97-1p98 Windows 97 preview, Web desktop [ct] 97-5p50 Netscape Network Enterprise, [ct] 97-8p56 Netscape 4.0 [ct] 97-9p80 IE 4.0 as Windows desktop [PCW] 96-6p58 it is Netscapes intention that you never leave browser [PCW] 96-9p38 Netscape becoming net OS on Web protocols documents lead to the idea of an electronic office, paperless office [Byte] 89-7p241, [Byte] 91-4p173 DIP document image processing [Byte] 93-11p67 electronic forms [Bype] 95-5p62 volume of converting, British Library, BRS text retrieval [ct] 99-2p174 putting print media on the Web, [PCW] 96-5p39 electronic book computers allow fast and efficient exchange and searching of documents paper is slower and less easy to process (retyping), should disappear computers require a lot less space for data exa one average book is 500 pages * 3 kB = 1.5 MB = ca 1 floppy disk a 3GB HD (bigger Notebook 2 1/2) is therefore a library of 2000 books paperless requires the computer screen to show all data the user wants to see use as large a screen and as small a font as possible but size limits of (ev multiple) screens, not everything will fit exa SR Zuchwil AVOR room, entire large wall, not on a screen exa but also NASA or phone company video walls, but they are expensive screen splitting for mult files is reason why hackers accept window systems despite disliking GUIs because their widgets clutter screen, waste space this is also why programmers today don't need to print out any more I do not even own a printer, like many other hackers hackers today prefer files to paper you can't grep dead trees, try searching book for word [Raymond] "vgrep" live (file) vs dead (printed) bits, killing the bits (printing) hacker call paper users tree killers [Raymond] "tree-killer", [Tolkien] hackers have used it since 20 years, exa me and others have empty desks many don't use paper any more [Raymond] "pencil and paper" paperless requires connectivity for exchanging docs, timeshared or networked PCs as user revolt against timesharing centralism prevented this happening only lately with the Internet has the chance for wide paperless appeared instead PCs are used as paper preproc, DTP, generate more paper than ever exa reports, QS, messages, marketing, books, magazines, all not online result paperless office failed, is claimed to be an an oxymoron [Barry] p42 but paperless book is believed to come by 2010 [PCW] 96-5p39 environmental savings of paperless are negated by env cost of computer [ct] 94-12p92 ecological balance of computers [ct] 96-4p125 computer scrap, [ct] 96-10p102 ecological balance of PC [ct] 97-5p170 PC ecological costs are teriffically high [ct] 98-7p94 PCs and environmental impact [ct] 98-23p122 ecological cost of PCs dropping [ct] 98-29p82 released fire prevention chemicals harming [ct] 99-3p82 natural materials for computers, [ct] 99-12p96 scrap LCDs [ct] 2000-17p180 impact of newspaper vs web vs printed web [ct] 2000-21p214 Twinflex printed circuit from plactic foil also electrosmog of all these new devices [Byte] 93-7p278 conspiracy of silence, EMF [Byte] 95-3p32IS3 illegal interference, europ EMC reg [ct] 96-2p66, [ct] 97-9p134 electrosmog simulations [ct] 98-1p136 {EMV} handies disturbing avionics [ct] 2000-14p218 handy electrosmog, [ct] 2002-3p82 UMTS electrosmog but computers will take a long time to completely replace paper insufficient drawing tools and resolution prevent quick sketching or scribbling down lots of details, like when I did Form disassemble universally readable data formats, display from anywhere at anywhere anec farther critic Word for archiving not readable in 5 years but Word-like paper preprocessors are an outdated usage of computers availability at any time or place, prevents reading in bus/train/plane portable device with low weight, no cables, immediate power on picture quality and comp weight prevent sitting down in armchair to read for replacing paper video output must be at least newsprint resolution also contrast LCD ca 30, VDU ca 75, TFT ca 150, paper print ca 1000 dynabook not to be worse than paper in any important way [Kay1] p256 Alto HW to emulate paper full bitmap, not caligraphic [Thacker] p272 [Byte] 92-7p195 human factors in displays, how human vision operates anec you can't screw up a monitor and throw it in the waste paper basket anec Werner "latest when last tree cut and used up, paperless off will arive" anec paper (instead of stone/clay) was base of first information revolution was invented in China ca year 100, in Europe from 1200 onwards also needed for second revolution (printing press in 1500) now the computer as third revolution is replacing paper anec Xerox Star/Cedar have had documents since 1980 [Byte] 92-12p152 Macintosh, Windows, VAX/Unix WS and NeXT should have had them 15 years later they still haven't got them, just starting, OLE/OpenDoc Norton Commander View and Edit file in dir, no File menu, better than GUIs today Xerox is aiming at presenting large sets of information for effective browsing [Card] p518 DandeIris, [Byte] 91-2p277 Xerox information visualiser [Byte] 92-11p145 Xerox information theatre, [PCW] PARC [ct] 98-5p204 visualising file structures, cone tree, hyperbolic trees [ct] 99-5p104 presenting complex information, hyperbolic tree Ubiquitous Computing [Byte] 91-11p116IS59 Olivetti Active Badge, [Byte] 93-12p57 active badge [PCW] 94-12p374 Orbitor tab computer, but it is not flexible [Scientific] 91-9p66 computers for 21st century, panel/tablet/badge future perhaps no desktop w windows, instead one LCD tablet per document docking station for unused tablets, open doc ejects one, insert closes Desktop Tools [PCMag] 95-4-11p245 integration, tools only add menu points, dialogs, no window background jobs/deamons as icons (miniwindows) on desktop icons on desktop only tools vs iconified docs vs icon for every running progr icons in browser vs on icon bar vs on desktop should have equal functional desktop tools doing background processing should show progress on their icon not require a NeXTstep like processes box to be opened by user, gets in way same background operations of filer (move, copy) should appear as icons issue commands by drag&drop on tools icon but also commands in expandable menu for point and shoot operation should do same effect, just two diff ways to select not like NeXTstep delete with recycler retrieve, with Command-R no retrieve make safety feature selectable separate from chosen command method GUI program and file managers must duplicate full functions of CLI based sys exa NeXT file browser has no chown or su command, requires using shell in programmers editor compile file, run program from editor exa Emacs programming modes [Cameron], Macintosh MPW but also provide CLI shell window, show/edit shell commands and their output exa XTerm, Emacs shell mode [Cameron], Macintosh MPW pasting a file name into a terminal window should put "" round it if spaces also Emacs Minibuffer for commands, Web browsers URL line for paths exa delete documents with as deleter tool (waste basket or recycler icon) doubleclick on deleter for retrieving documents anec Mac/NeXT trashcan/recycler should not be on desktop, better in browser only on desktop if global, also for editing (deleting) text passages then also a clipboard icon cutting/copying text passages but working like this is slower, same as drag+drop filing is slow better use a pop up menu on file icon, with delete command in it exa print a document with a printer tool (printer icon) doubleclick on printer for print queue status exa send mail a document with a mail posting tool (outbox icon) pops up a dialog box for reciever address and subject line doubleclick on mailer for outgoing mail queue read incomming mail documents with a separate mail reading tool (inbox icon) exa search dir tree for a document with a finder tool (spyglass icon) pops up a dialog box for search string or regexp as result create a document exa a directory full of links, named after search criteria keep search criteria and autoupdate when file namespace changes exa search a documents contents for a string with a searcher/grepper tool pops up a dialog box for search string or regexp read documents without showing them diff between open a documents file (to read) and open document (to view) should have diff names for diff functions, call later view or edit mixed doc formats require reading them by copy-as-ASCII function results pasted into a text newly created and displayed by searcher user can treat this text as a document in any way desired exa further document search, save as better this should be integrated into finder tool (dirs are also docs) use a tick box in dialog box to choose if recursive dirs or leaf search exa view a file with a viewer tool (open book icon) should quickly open a file in display only mode if the files format is known it should be evaluated, else treat as ASCII menu for selection automatic, allways ASCII, allways hex exa compress a file or dir (incl tar) with a compress tool (vice icon) pops up a dialog box for choice of compression method should be specific to whether file or dir (.gz or .tar.gz) list should be extensible with file containing command strings when a compressed file or dir is given then it should automatically decompress it exa task manager, exa Windows Alt-Esc in desktop menu, windows menu, with hot keys should show documents, not progr, requiring user to select doc in progr User Interface Design [Byte] 82-1p379 HASCI, [Byte] 91-6p117 GUI pro/contra [Byte] 91-10OLp41 how far can human/computer interface go [Byte] 92-4p175 ultimate user interface, information environment [Byte] 93-1p100 Pournelle usability lab [Byte] 97-11p32 usability features, Nielsen top 10 list [ct] 93-9p62 usability, [ct] 03-9p68 GUI design, [ct] 95-2p244 GUI design [iX] 95-6p120 good GUI more than reading style guides, [Uo] 93-7p73 ergonomy if the user can't use a program then it just as good could remain unwritten wrong input will allways give wrong output, GIGO [Raymond] "GIGO (1)" computer will just produce some output, if wrong input it will be wrong exa Space Shuttle O-Ring calculation bad, consequences [Feynman3] p95 personal computers spread computer use to normal people, no central sys admin they must be understandable and operatable by the users, not just experts they also provide enough power and IO capabilities for elaborate SW allow reemergence of elaborate UIs as on interactive systems GUIs don't automatically make programs easy to use [Byte] 90-7p205 UI design for human users, GUI not enough [PCW] 88-12p177 EuroPARC user input design GUI screen flash is not enough, task oriented UI design is neccessary exa tin (good user interface) vs NewsGrazer (GUI screen flash) actually GUI is a missnomer, not graphics is important but visibility good UIs are not result of display or GUI technology but user compatiblility design SW process (user) centric, not product (manufacturer) centric [Norman2] p240 Rabbit interface could be implemented on a VT, even TTY [Byte] 90-10p368 Outland interface is pure text, would also work on a TTY windows at any cost, flood of windows syndrome use screen space and processor power, no usefullness for user windows are for splitting screen for mult docs, virtualisation exa ID vs PD, just because windows available in Foxpro exa IBM C advert screen full of windows called programmers heaven, is hell exa Kompal for Ctrl-T in CH windows, logical but inefficient, lots of work to use in Motif they were changed to subwindows, still not good better would be an intelligent text editor with templates, pop up lists classic case of 2nd attempt at UI better, but idea only after 3 years what to do to make a bad user interface [Norman1] p179 designing effective UIs requires knowledge of what the user wants to do programs must do what users want, but not more [Raymond] "feature shock" exa easy Unix/VMS mail systems vs complicated MS-Mail and CCmail at IT additional features should not obscure simple use the computer should behave like a good secretary, help, fit to work style study behaviour of every-day (non-computer) devices vs computers [Norman1], [Norman2], [PCW] 89-1p177 EuroPARC work style exa bad Linn record player 1 button w 2 lamps and operatin instruct sticker exa bad stamp vending machine [Norman2] p237 exa bad money key charging machine only goes to Fr. 50.- input exa good SBB/WV ticket machine select target/class first and it shows price then either insert money (no OK needed) or press cancel (alows enquiries) but bad only Fr.20.- notes for payment, what if the user hasn't got any old lady will complain, but to who, it will get lost on way up anec bus machines no paper money at all, but railway machines have it anec same bureau also responsible for no card punch machines in buses study users, how they work, how they expect a program to work with them how do users employ devices and tools, apply them to tasks 7 stages of use, ask the fitting questions [Norman1] p53 design user interfaces for understandable input find out who will enter data, learn and use their terminology, concepts test program on users, see if it really fits, redesign if neccessary systems fail if market is not ready for them [Engelbart] p194 humans overloaded by tracking technological change [Engelbart] p217 technology and users co-evolving [Engelbart] p218 "bad technology/machines" and "dehumanising technology" myths [PCW] 93-12p406 myths are wrong, machines are tools, not concious beings, have no own will are neither principially good nor bad, are what we make them to be machines are only extensions of humans, amplifiers of human ability/desire goodness and badness are effects of the human intensions in them badness comes from bad design, from not fitting the users needs none of designers ask users what is wanted to improve their work ability projects driven by desire for "a new system", implement great ideas the only winners are bureau (prestige) and developers (toy) machines are bad to users when designed machine centric [Norman2] p224 often because of bureaucratic ignorance or cost pressure or from bureau seeing humans as machine [Lakoff] time is money metaphor it is the social structures that make technology bad [Norman2] pXII those who design to this view regard others as things to use this is a fundamental problem, using is base of inhumanity [Brunner] principal contradiction of using others but not wanting to be used for the same reason bureau want to get rid of workers, downsize because workers cost, have an own will, are not 100% reliable bureau would prefer using robots to having to use humans that is the real reason for overautomation, human for nonautomatable automation is deskilling, user is only button pusher, no scope for person result is boredom, loses of important personal desire for being good just medicracy, desinterest, lack of motivation todays problem with piles of unqualified workless and empty hightech jobs is the result of 30 years of educating workers as button pushers accepting such bad designs by the users is wrong [Norman2] p227 but accepting ruler-imposed badness has thousands of years tradition is result of the power distribution in society button pushers of the world unite [Norman1/2] extending human vs human as slave of machine [Licklider1] p131 splitting job on abilities and limitations of both [Licklider1] p134 design computer systems to be amplifiers of humans who are in control not as big brother systems in control and humans as emergency fixers the effects of technical invention changes the world [House] p431 the resulting change is often not predictable, surprising even to makers technical people not socially inept, just not omniscient [House] p432 anec CIM failure, due to big, complex, non transparent monsters designed by teams that thought they knew everything that is important computer can simulate descriptive model of anything, it is a metamachine comp can be all other media, simulate all others, is a metamedium [Kay1] p255, [PCW] 98-12p128 Kay, computer is like chameleon [Norman1] p183 miccode proc is metamach to maccode, macro to interpr, int to prg, levels often levels are isolated from each other, RISC base Lispm no isolation make computer invisible metamachine, only task left to see [Norman1] p185 Visicalc easy to use because simulated Visicalc machine, not the computer spreadsheet macros are also case of live data, are programming GUI screens simulate desk tops with docs [Engelbart] p189 and tools on them GUI dialog boxes simulate control panels of embedded systems but panels are not automatically good exa VCR Panasonic awfull vs Philips easy 3 diff up/down button sets but no typing in numbers in most cases program/timer mode trouble, needs switching, arbitrary [Norman1] p100 TV for progr VCR, disp is too big, ev in wrong place also problem when TV is not available, better use disp on VCR was a classic case of not been given enough time to evaluate exa ShowView batch mode, requires device laying around, cats love it design for visibility, feedback [Norman1] p4, design principl [Norman1] p188 user see what can be done, what has been done, how to do it [Norman1] p7 conceptual model that allows right assumptions what to do [Norman1] p14 refrigerator, [Card] p508 teach intended user cons model for user is not given a model, will build one, a myth [Card] p509 exa directories/folders real ones the user sees if they are empty or full this is a physical property of them, in GUI only if designer wants it vi/Emacs users can see data and operate on it vs ed/ex blind cruise same also QuickBasic vs TTY Basic cls/new [Zopfi] p154 visual editors were first easy to use programs, see data, manipulate it spreadsheats braught the same easyness to random computations seeing a document implies ability to edit any bit of it at any time when screen is used as a glass TTY user must navigate program flow exa PlasmaDat precursor, ream of input, then stupid "are you shure" but this is annoying when no error, too little when error noticed better later PlasmaDat, form editor w automove, backtrack by arrows design came from my commander screen editor experiences in 1981 map single button to single action [Norman1] p22 car vs phone layout left/right [Norman1] p86, room light switch layout [Norman1] p96 anec lounge new light switches first layout right/left but in use showed to be counter instinctive, wires swapped, V2.1 when altering do the right thing, not just cheapest fix, side effects minimal buttons, no marking for styling, save cost, durabi [Norman1] p155 these are worst enemies of user friendly design [Norman1] p27 phone 1 button per function allows labeling to remind user of buttons function to avoid interface looking complicated hide seldom used [Norman1] p209 reduce work with 1 key command, select instead of typing, name completion but potential is still not made full use of GUIs with only keyboard, mouse and screen are still too limited more input and output device variety is desirable numbers vs graphs for showing values [Norman2] p73 same for dials vs pushbuttons for setting values "the data is in there, how to I get at it" avoid terror of the empty screen, "what shall I do now" [Norman1] p178 can be solved with GUI but make a switch off for those prefering empty use a clean design buildup, with a user visible central metaphor if features implementations collide drop less important ones this requires specialising progr on a user specific feature range avoid the sin of the politician, to claim you serve all [BrownP] classic case of making this sin was Ford Edsel, result wishy washy desire to save buttons is often result of creeping featurism featurism obscures use [Norman1] p172 hackers like features but in doubt prefer simple and reliable stuff hackers are not freaks (people who use techno becaue it exists) also do not evangelise counter better knowledge but they sometimes can be computer addicts [PTP] 94-9/10p3 doctor exa my HI-FI, my VCR, my hand drawn overhead projector diagrams limits to desirable automation [Norman1] p194 car gears hand vs autom anec programmers usually prefer hand switched gear boxes overautomation leads to dumbing down [Norman1] p197 toolset user interface organise interactive programs user interfaces as a set of tools each tool is a command, all commands give a toolset exa data analysis tools on Whirlwind (1955!) [Ross1] p296 APT user interface language, [Ross2] p76 Gestalt Programming anec term Gestalt meant nothing to readers, didn't see what it was about regarded it either phantasizing, content free or stealing others ideas exa Unix pipes/filters/SWtools, Lisp functions, Forth words integrate all toolsets for different tasks into one system use a single shell as the base of a users work environment exa Unix all commands available at any time, common options exa Emacs all files open in diff modes in one Lisp interpreter this saves user learning and enables mixed use of diff tool sets add a scripting system, call tools from a script language exa Unix shell scripts, Emacs M-Lisp Unix/VMS/DOS command lines are a vocabulatory, man/help are dictionaries it is actually wrong to regard command lones as user interfaces using the computer is a dialog, natural, not artificial interface make tools use edited variables as input, then evaluates variables don't directly use read input instructions in tools [Ross2] p67 allows script interp SW to edit the vars instead of calling read input allows recording keys and then playing them back, simulated input exa CBM Kernal gets input from line on screen edited by screen editor exa Unix stdin/out, Unix output on command line with backticks extensible tool systems vs closed systems toolsets (specially those with scripting) react better to unforseen uses but toolsets are not automatically good the individual tools must be usable, fit together and fit their purposes design model for toolset first, then command language syntax [Ross1] p297 anec GUI interfaces are also toolsets, operate on documents but with only a simple command sentence structure, object and action easy to learn by beginners vs effective to use by experienced users different styles of UI for beginners and experts [Lampson] p317 input devices, [Norman1] p189 don't forget experienced users [Byte] 92-9p378 Bushnell stop bit, artichoke theory, levels for diff users make simple things simple, make complex things possible [Thacker] p268 Kay complex things must be possible without too much getting in the way Smalltalk to fixed on learning, lack of scripting [Lampson] p295 Kay Alto interaction vs Unix/Emacs programming Macintosh Finder user friendly but at a price [Byte] 84-12pA94 "sys any fool can use, only f will want to" [Raymond] "user-obsequious" fails, "who believes made fool proof simply underest creat of fools" GUI weakness often no complex internal model [Raymond] "WYSIAYG" GUIs first called Windows Icons, Mouse and Pointer/Pulldown (WIMP) [Raymond] "WIMP environment" CLI is grown up speaking vs point and click can only express "that!", not full sentances most grown ups have progressed to more powerfull expression abilities point and click has the mental level of an 3 year old UIs difficult to design because of diversity of user desires, experiences small differences are important, configurability [Lampson] p319 multiple xterms better than icon dragging for experienced [Uo] 93-7p6 time for learning vs time saved by using a powerfull tool [Garfinkel2] p176 look at time you spent learning to read and write and what it is worth easy to learn vs efficient to use [Engelbart] p201 trike vs bike definit of user friendly Macintosh easy to learn vs Unix flexible to use Mac vs Unix, luser friendly is dumbed down anec Unix is user friendly but it is selective who its friends are avoid "if computer is so smart it should do it for me" [Engelbart] p233 metaphors help novices (Macintosh), but limit users and designers (ALIS) taking a "the computer shall do it" attitude leads to suboptimal use exa "ideal" natural language UI difficulties making computer behave like systems used up to now ("natural way") danger that cultural block may prevent finding better methods anec easy and natural use, guide vehicle with reins [Engelbart] p217 optimal use is only possible when user learns to use tool on its terms as with using any other physical device, tool, exa hammer, saw train human instead, it's easier [Engelbart] p233 discussion but with Web many first time users, 10s attention span [Byte] 96-5p10 UI design assume the user to be stupid, not understand anything, DAU anec but anyone think he has made idiot proof, underest creat of idiots GUI direct manipulation vs command line [Norman1] p184, [Plauger3] p87 like doing something your self vs delegating to to someone else humans use both in life, both must be available in computer, user selects expect user errors reduce amount of user errors made bitty appearance because of lots of specialised controls is good for that usefull to avoid press wrong button [Norman1] p95 nukelear power station avoid mode errors [Norman1] p110 with no unneccessary modes but do not get rid of sensible, understandable modes given by jobs nature make user errors easy to detect and to recover from [Norman1] p36 make state of program visible, program behaviour predictable show the data the program is working on, show available commands exa PlasmaDat form display/edit, search editor, list display, f buttons better than hidden functions, only accessable via key combinations exa TTY basic program in memory vs listing on screen [Zopfi] p154 exa vi command and edit modes use (for user) meaningfull error messages not "table look up failed" [BrownP] design for error tolerance expect users to rely on error tolerance, become sloppy [Norman1] p114 they get very angry when bitten when this fails them listen to user error reports, detect error sources, remove [Norman1] p131 else your progr will only attract error free users, not many of them [BrownP] documentation and user manuals are part of the user interface of a program [Licklider2] p125 one-page documentation, [Byte] 83-5p286 better SW manuals exa LINC LAP6 manual [Clark] p387 and usage [Clark] p395 Kay designers are not typical users [Norman1] p155 designers have knowledge of program in heads, users have only whats visible manuals and other socumentation are part of the users system image but don't rely on them being read, many users don't do it [Norman1] p190 for HW short reference guide on the bottom of the device exa jumper documentation on cards, drive parameters on harddisk exa US Robotics documentation on bottom exa HP lab devices swivel or slide out page with tag to pull for SW cmd line summary, on line help system, learn programs, guides, wizards exa many DOS programs print usage BNF when user enters invalid parameters MS-DOS 5.0+ all commands print help when /? option, is very good for OS calls, libs, etc, order pure alphabetical vs sections sections force mult searches when user doesn't know which, exa helios vs all in one allways one search, but some users critic, exa XVT for commands one file per command, exa man vs one per theme, exa techinfo anec GNU techinfo docu conventions, critic of man bad anec Werner doku is like sex, good can't be beaten, bad better than nothing Artificial Intelligence [Byte] 91-1p236 AI crisis [ct] 91-3p32 overview, [ct] 95-1 AI critic [ct] 97-15p108 state of AI interview, [ct] 98-10p252 communication of bacteria [ct] 99-20p94 how brain works, preception and memory computers only do what you tell it to do (Ada Lovelace) but result of that can be surprising, complex and unpredictab [Dawkins] p51 anec Shakespeare only did what he was taught, write words [Dawkins] p63 computer vs brain, claim that brain can not be a computer because brain grows from 1000 cells when body is only 100000 grows until 10^10 cells, 10^15 connect vs comp all from beginning but that is only fabrication, not function cells move, die, replaced vs computer single part faillure is the end vut that is only servicing, not function brain progr adapts while life vs comp needs updates view of world depends on species, no absolute, so who should write progr brain uses GA to program itsself, is software sytem, not function brain need data from envir, but that is chaotic, needs filtering brain needs understanding, a few simple rules as in progr is not enough this forgets the enormously larger power and developm time of brain brain based on experien of successfull randoms vs computer "logical" machin have you ever seen a logical computer? brain in not predictable so not a machine vs comp is machine allways same this ignores the effects od chaotic determinism AI failled as commercial SW, real use for research, as computational biology attempt to convert research results into products was premature belief thet special AI programs would appear is wrong greatest use of AI is in brain research for testing models AI alg are often result of observation of hackers own behavior [Levi] artificial life vs intellect/rationality [Plauger3] p67 vs intelligence human thought is not logical [Norman] p114, [Plauger3] p71 expert systems also known as rule based systems, knowledge engineering [Byte] 90-10p268 and 90-11p364 Mike, [Byte] 90-10p289 ES [Byte] 91-2p203 Cyc common sense rules exp sys [Byte] 91-11p247 Cyc database structure, [Byte] 93-7p106, [Byte] 94-10p87 [ct] 92-4p84 ES with mem, [ct] 94-5p94 Cyc largest project of AI [ct] 96-10p118 Cyc, [ct] 96-11p334 brute force chess, [ct] 97-7p118 chess [PCW] 91-6p202 know, [PCW] 91-11p294 common sense exa printsub.prg small chemical formula printing expert exa 100Buddy keyboard typing expert anec Intellisense problems, terminology, rules not fitting, not modifiable fuzzy logic [Byte] 93-4p111, [ct] 91-3p188, [ct] 91-9p327 [PCW] 94-3p512, [PCW] 95-7p602 neural networks, neuro networks [Byte] 87-9p137 bidir assoc mem, [Byte] 87-10p183 self learn, neuro heurist [Byte] 87-12p237, [Byte] 89-8p217, [Byte] 92-10p137 brain analysis [ct] 87-4p98, 87-5p106 and 87-6p90, [ct] 89-10p214 inverse kinemat vs neuro [ct] 90-11p248, [ct] 91-4p78, [ct] 91-5p182 neurochip, [ct] 92-2p216 [ct] 95-3p109 visual recognition, [ct] 95-8p96 neurotechno for handicaped [ct] 95-9p43 self learning neural networks in simple digital hardware [ct] 96-2p256 structures, types, applications, [ct] 96-9p116 neuro implants [ct] 97-8p116 feelings, [ct] 98-6p128 FPGA program with genetic algorithms [ct] 99-6p296 neuro control, brainwaves controlling computer [PCW] 90-1p182, [PCW] 94-3p320, [PCW] 94-5p529 and 94-6p519, [mc] 87-9p108 reduced coloumb energy neural networks, distance in multidimensional space blackboards [Byte] 90-1p246, [ct] 93-11p201 for mixed algorithms, struct for exchanging data by producer writing, consumer reads if previously set trigger fits exa pen systems with multiple recognisers for different shapes natural language [Winston] SHRDLU, [Lakoff] understanding [Byte] 85-4p127 Minsky communication with aliens, base of understanding [Byte] 87-10p225, [Byte] 87-10p251 intell assistant [Byte] 91-3p124 machine translation, [Byte] 92-2p237 parsing natural language [Byte] 93-1p153 translation, [Byte] 96-10p48IS7 you said what? [ct] 89-7p192 wort arithm vs human use pict, [ct] 97-7p108 machine translat [ct] 98-6p276 machine translation, [ct] 2002-6p132 semantic web [PCW] 94-4p531, [mc] 88-11p66 semantical networks biggest problem is ambiguity, goes into linguistics study exa meaning of "page 23..7" is "page 23..27" exa meaning of time "10 past" at 20 past an hour (10 rel to what hour) exa meaning of "it will take one quater to 20" (15..20 min time) exa meaning of "list by customer" in users data request [Levi] p292 exa meaning of "bush quale" is it a bird or two people [Krol] WAIS anec "spirit willing but flesh weak" translated "wine good but meat bad" programmer must build all these in to program, else it will fail the human brain is self programming, therefore this as easy for it machine learning [Libes2] tic-tac-toe, [Byte] 95-8p63, [PCW] 93-6p483 is a form of self modifying code (self modifying descriptive program) machine vision [ct] 97-2p86 face recognition, [ct] 99-20p136 face recognition [ct] 2000-5p136 autonomous vehicules, [ct] 2000-15p128 face recognition [ct] 2001-4p62 biometrics unlikey to spread other biometrics [ct] 98-8p100, [ct] 99-6p188, [ct] 2000-7p106 [ct] 2002-5p146 reliability, failure rate, [ct] 2002-11p114 fails all tests robotics [ct] 95-12p70 self learning robot, simulate child intelligence, let it grow [ct] 96-1p290 Rug Warrior set, [ct] 96-3p56 ant style learning robots [ct] 96-5p134 robot touch, [ct] 98-4p54 Mindstorms robots from Seymour Papert [ct] 98-25p168 Lego, Fischertechnik and Stiquito robots [ct] 2000-11p64 miniature spying robots, [ct] 2001-6p60 miniature robotics [ct] 2001-17p74 home robots, [ct] 2003-9p102 robot walting let a computer get feel for its environment, required for real intelligence robot must have human shape and size for fitting world [PCW] 92-2p304 most likely no human-like or superior robots in mass manufact in 21st cent [ct] 96-6p98 robot intellience, supposed to overtake, biolog vs spitir evol requir human brain comp power in head size, brain analysis, test exemplar human intellig level robot, HW power for neuro in 2025 [Langton2] p831 algorithms a lot later, prototype later, mass deployment even later even when do exist they will not be of interest for employers remov jobs as human-like acting robots will also have human-like life/pay demands artificial Life [Hofstadter] Typogenetics, [Langton1], [Langton2], [Langton3] [Plauger3] p68 early paper tape self reproduct [Spafford2] p728 comp vir are a form of AL, spread by careless behaviour hackers carelessly handling living bits is regarded as a warning to biologists carelessly handling living matter such as bacteria/viruses careless incl making bio weapons and put them in hands of politicians [Byte] 91-1p289 AL, [Byte] 91-1p361 genetic algorithm, [Byte] 94-2p171 [ct] 89-6p130, [ct] 91-6p144 TFT, [ct] 91-12p228, [ct] 93-11p201 genet alg [ct] 97-2p76 norns, AL game Creatures [ct] 99-21p134 socionics intelligence moddeled by social interactions [ct] 2003-8p168 game intelligence, flocks [iX] 93-12p122 AL in general, Tierra [PCW] 90-7p223, [PCW] 91-9p264, [PCW] 91-12p134 AL, [PCW] 92-6p383 [PCW] 93-6p471, [PCW] 94-9p501, 94-10p477 and 94-11p479, [PCW] 96-8p237 also known as computational biology use computer as simulative "microscope" into life behaviour are AL experiments real life forms are AL creatures real living things or not [Langton2] p760 computer vs simulated environment vs inhabitats [Langton2] p749 AL are living creatures relative to their simulated environts AL is artificial physics with life in it [Langton] p66, p70 and p122 alife element of life, blife element or all of life alife is symbolic life or virtual life [Langton3] p550 alife must replicate physics, blife doesn't [Langton3] p563 but also AL on procedural machine code base Tierra [Langton2] p371 are computer viruses alive, depends on are biological viruses alive this depends on the chosen definition of living metabolism (c+b viruses have none) or reproduction (c+b viruses do) plants have full metabolism, only need anorganic material vs animals only partial metabolism, need plants as material bacteria need only debris from plants, viruses need full living being life is structure that manipulates its environment to make copies of self Tierra fits definition, computer viruses also, even chain letters exa [Langton3] p1, [Dawkins4] p170 long running chain letter in BL collecting food for metabolism is most challenging, not reproduct but tierra and many other AL do not have this element, like viruses some AL include the search for material as select criterium the other can be compared to plants with pregiven photosynthesis AL vs AI surface similar but fundamentally different [Langton3] p569 don't apply Searle chinese room to AL, eliminates matter, no concious exa of conciousness, meaning problem [Raymond] "ELIZA effect" blip world better illustration display colours for instruction types even more interest display blip without entieties, show "molecules" --- Timesharing Systems Timesharing Operation early computers stood still while the user entered/edited progr at the console batch systems abollished this as costly time waste, but lost interactivity interactive systems tried to reduce costs with cheaper hardware as interactive systems spend 95-99.9% of their time waiting for input make better use of hardware by having multiple users at the same time the computer serves their programs time slices, quasi simultaneous running like a waiter in a restaurant serving multiple tables, moving between them up to 50% processor load this is no serious problem timesharing virtualises the processor, compare this with memory alloc, virtual memory, file systems, window systems, net protocols all of these mean that the amount of uses is independant of the hardware timesharing spread access to computers (no waiting for them to be free) leads to restored interact vs batch comp but reduced vs interactive comp timesharing may be regarded as old fashioned in the age of PCs and WSes but it is still here and will stay, even if only in servers, see Sun Ray timeshared mainframe vs PC is like bus/train vs car both have their strengths and weaknesses, select best for job [Byte] 89-1p33 the care and feeding of dinosaurs, mammals pets and meals exa MIT CTSS (1960..2, Project MAC) [Levy] p118, [Raymond] "CTSS" on an IBM 7090 (1959) [Levy] p68, [Ross2] p99 Whirlw, later 7094 [Salus] p26 exa MIT/BTL/GE Multics (1964..9) [Salus] p26, [Levy] p120, [Raymond] "Multics" on a GE 645 (32 bit, segments similar to 80386!) [Salus] p30 exa MIT ITS (1967) [Levy] p123, [Raymond] "ITS" on a DEC PDP 6 (196?, 36 bit) exa DEC TOPS-10 exa BBN/DEC Tenex/TOPS-20 exa IBM CP40 and VM/370 virtual machines with then single user CMS or DOS/VSE exa BTL Unix (1969) [Salus], [Raymond] "UNIX" [Byte] 83-10p130 main theme of issue, [Byte] 89-5p225 [Byte] 91-12p113 whats wrong with Unix?, [Byte] 92-9p134 is Unix dead? originally on a DEC PDP 7/340 (196?, 18 bit) [Salus] p9 transfered 1970 to a DEC PDP 11 (1970, 16 bit) [Salus] p35 as result of this it soon became the first source portable OS actually multiple versions make unportable, use GNU autoconf [iX] 95-5p186 exa DEC VMS [Byte] 96-11p59 alive and well, 20 years VMS used on VAX mainframes, minis and workstations anec VMS is second favourite of hackers after Unix [Raymond] "VMS" exa Netware, OS/2 and NT are multitasking OSes but have no multiuser login, this prevents their use for timesharing this comes from PCs (personal!) only having 1 set of user IO Netware simply nothing to operate but the PC console, not even remote login not even MS-DOS and Windows like remote control programs requires switches for connecting key/mouse/monitor, exa Cybex Commander gives lots of cable mess, external hardware, hard switch, no mixed screen OS/2 (and NT) Citrix multi user system, multi login extension [Byte] 91-1p134 and MS Citrix derived multi user extension for NT extension for using multiple character terminals or multivideo with TCP/IP extension also telnet can be used for multiuser login there exists even an multiuser multiconsole Windows 95 [ct] 98-10p76 loses OS/2s (and NTs) main disadvant vs Unix, they can now also timeshare Multitasking [ct] 92-5p178 modern OSes Unix kernal internal structures [Uo] 96-4p83 truss and crash, [Uo] 96-7p49 dir name lookup cache [Uo] 96-9p100 truss, [Uo] 96-10p40 life of a proces, [Uo] 96-11p52 crash running multiple users programs at the same time requires sharing the processor between them, make them coroutines such programs running as coroutines are known as tasks note that what I here call tasks some call processes I reserve the term process soley for tasks with separate address spaces some call such processes virtual machines, or use process generally to run an additional task create its "saved" task state for restoring build new task with desired program in it from scratch (spawn) and execute vs copy an existing task state (fork) and later overlay the program in it splitting fork and overlay allow separate use of these functions overlaying for large multi file programs as shown in batch systems forking for multiple tasks using same program code, for background jobs anec in Unix overlaying is called execing, this is a missleading name no busy waiting most tasks spend most of their time waiting for user or disk input don't use busy waiting as it hinders others from making use of processor switch active task when old one is waiting for input exa Macintosh/Windows task switch in GetEvent system calls if the next event in the queue is for an other program to reduce each task being reactivated just to find out that it must wait remove waiting tasks temporarily from sheduler list, put into wait queue readded it after reason for blocking finished driven by interrupt service routine from the IO device involved delays no busy wait either, wait on timer [Leffler], [Beck], [Libes2] p335 this also solves switching related timing unreliability [Tanenbaum] p28 this gives task states [Tanenbaum] p30 running/current: actually has the processer runnable/computable: can take processor after taskchange sleeping/waiting/hibernating: must wait for some condition, then runnable in Unix it is not possible to wait for events such as file created, modified, deleted (in Mach there at least exists FD wait) ps status changed (except for a subprocess to exit) must be done with polling, wait on timer, then repeat, wastes processor exa Unix tail can not wait for file extend, must poll by timer when no task is runnable a endless loop inside the switcher is run a task can only become runnable after wait condition runs out either data arrived or timer trigger, both make interrupts, then reshed time slicing tasks that run long time without calling switcher lead to all others friezing if a program doesn't switch because of a endless loop all tasks are crashed in single user sys and progr with internal coroutines only that program hit in multi user system all other users programs are also hit by the crash where this is inacceptable control must be periodically switched forcefully each runnable task is run for a short time, 1..100 ms then the ticker timer interrupt forces a task switch this is called preemptive time slicing when all other tasks waiting or preempted the original gets resheduled all others tasks in between appear to it as one long interrupt handler cooperative timeslicing, exa Macintosh, Windows, Atari ST vs preemptive timeslicing, exa ITS, VMS, Unix, Amiga is like the difference of polling vs interrupt IO lack of preemptive time slicing is second reason for Windows crashing often after its lack of memory protection between the running tasks reshed should prefer tasks that waited for IO over stopped by time slicer time sliced progs run at lower priority than interact, so those stay fast dynamically detect IO vs CPU boundness (long runners), count slicer stops also "nice" value for user influencing scheduling priority the swichers internal endless loop never waits, gets lowest priority task sheduling [Tanenbaum] p61 task priority [Tanenbaum] p65, lowering priority, reestablishing it anec CTSS press Enter to accelerate task [Tanenbaum] p66 better only reestablish on program waiting for read, not user input preempting time critical routines can crash the computer leads to special high priorities, no preemptive switching while in them exa VMS real time processes and NT real time threads also preempting routines that modify shared datastructures can crash for while these block the timer interrupt, like all other interrupts exa in Unix no time slicing while call to the Kernal is not preemptive while in kernal, preempts only while in user mode in kernal the code must explicitely give up proc, cooperative multitask no task switches by the time slicer while running in OS kernal are delayed until return to user mode, only then switch not doing this is where Sun NFS crossmount friezeup must have come from [Raymond] "Nightmare File System", [man] "nfsd" hard/soft/intr also signals are only delivered to user program on return to user mode Ctrl-C/U are only worked on (process gets aborted) when kernal returns that made it impossible to abort an endless loop in kernal exa killing mount of damaged filesys, aborting reading dirty CD-ROM MS-DOS is even worse, Ctrl-C is only tested on the next OS call will not even stop an endless loop in a users program to reduce the amount of tasks start non-interactive ones only one at time timeslicing shares processor to all jobs vs batch queue get one job done if large background jobs run all at once, all take long time to finish this is known as batch processing on a timesharing system this is still sensible on todays systems with virtual memory, less paging exa IT FE calc, System V print spooler missused for batch [Frisch] p338 for even better interactive response time process the queue only over night exa above FE calc spooler switched on and off by a cron job without system task support all tasks must switch and shedule themselves usually as a conventional main program and interrupt driven pop up tasks while the pop up is active the main program is forced to sleep only with additional effort can the pop up time slice with the main progr the pop up must be structured as a state machine to keep track of work this is essentially how MS-DOS TSRs work (or don't work when they crash) MS-DOS has Unix derived exec/wait, but no tasks and fork system call exec system call friezes calling program until called one finished because of this it does not overlay caller, is more like Unix spawn TSRs are programs that hand the processor back to the OS but stay in memory for return to OS without mem loss Terminate and Stay Resident sys call then they use hooked interrupts or system calls to be reactivated as such they are a form of SMC, with all the dangers involved using diff interrupts requires installing diff service routines multiple pop ups hooking diff interrupts leads quickly to collisions undesired timing interactions, state losses, crashes, TSR roulette have lots of crash potential because this [Raymond] "all-elbows" TSRs were intended for system extensions, like background printing missused for popups like Sidekick [Byte] 85-10IIPp105 writing TSRs TSRs also exist on the Mac [Byte] 93-7p205, reason for also instable MS-DOS has only 1 system state, exa current drive/paths must be saved by user SW, system call to get addr/size [Schulman] the value of multitasking on a PC is often questioned by naive users it improves the flexibility of system usage, makes resources easier avail but at price of increased SW complexity, requires processor power todays PCs have the neccessary power, convert that power into comfort it is good for fast task switching (no saving and reloading of files) the best proof for its usefullness are TSRs, used despite crash potential anec between 3.2 and 3.3 there was EurOEM4.0 with multitasking [Schulman] anec some say that MS-DOS is not a real operating system, only program loader because of lack of resource shar, virtual memory, multitasking, processes but this is not true, MS-DOS is a real OS, but only a simple one above features are needed in complex OSes, MS-DOS never claimed to be one today many people try to use MS-DOS/Windows as if they were that, fail it multitasking on multiprocessor systems [Franklin2] schnelle Rechner [Byte] 91-6p199 multiprocessing, types, [Byte] 92-8p112 all systems go, types [Byte] 93-6p185 multiprocessors, [Byte] 94-12p211 Pentium built in dual [Byte] 96-1p45 fastest computers [ct] 97-7p256 SMP multiprocessor memory, [ct] 97-8p240 SMP servers, unripe SW [ct] 98-13p140 Linux SMP [iX] 96-8p118 SMP, bus architectures, [iX] 96-10p110 Sun UPA SMP bus [Uo] 96-8p92 ccNUMA exa IBM 3090 MP, up to 16 processors possible, but seldom more than 8 used exa SCO MPX [Byte] 90-5p221 a fearfull symmetry exa Unix SVR4/MP [Byte] 91-6p245 are also known more specific as symmetrical multiprocessor (SMP) systems name is counterpart to asymmetrical multiprocessing, exa IO processors with asymmetr main proc does only calc, IO proc do only IO (1 per device) on asymmetrical systems the IO processors often become a bottleneck the only advantage of asymmetrical is that only on proc can access device these are easier to program the OS, also separate buses simplify HW in timesharing the processor is split among users, no one gets all of it if there is contention for proc mult proc can be used instead of bigger this can turn out to be cheaper, esp in upper levels of processor power there is one task list of runnable tasks, every processor takes one spread runnable process, no fixed task to processor relationship if less runnable than proc then some processors idle in switcher loop SMP requires multiple processors to access one memory gives same problem as with IO proc DMA, but bigger as many work proc solve with wide or multiple busses [Byte] 91-6p219 shared mem architectures or give each proc its own cache [Byte] 91-6p209 catch as cache can then only cache reloads must share the restricted bandwidth despite this usually limeted to a single-digit number of processors for cache coherency snooping [Byte] 92-8p125, [ct] 91-9p210 M.E.S.I. [Byte] 94-12p211 dual Pentium, [Byte] 96-4p177 quad Pentium Pro or with own memories but common address space, NUMA nun uniform mem acces [ct] 97-10p278 NUMA with PC+SCI, [Speedup] 97-6p18 NUMA with PC+SCI if there is only one big program wanting all power then this will not work requires spreading that program over the multiple processors unlike parallel processors where one programs data or instructions are spread over multiple ALUs or instr decoders (one proc parallel units) here each proc must be fed its own instr sequence (is multiprocessor) this must be arranged by the compiler, or more likely the programmer multiprocessor SW is like 1000s of brains in cars on motorway limits to paralleliseability, some programs can't be cut up [ct] 88-4p178 Transputer/multicomputer distributing threads [mc] 88-11p48 distribution for molecule calc, not by volume anec 9 women can't make a child in 1 month often this consists of simply dishing out part of an array to each one resulting program is functionally SIMD, as same program on all proc doesn't make full use of HW, but still less costly HW than real SIMD biggest problem of multiproc is lack of SW that exploits these machines [Byte] 97-3p40IS9 parallel software still missing attempt to use automatically parallelising compilers, language extensions exa High Perf Fortran [iX] 94-5p166, [iX] 94-6p140, [Uo] 96-2p80 Terminals all the users can't go to the system console to work at the same time timesharing requires multiple user IO devices for multiple users first timesh sys used multiple TTYs exa CTSS, Multics [Levy] p120, early Unix because of batch mainframe origin of the base machines (CTSS on a IBM) and "computing utility" thinking of phone companies [Salus] p26 Multics anec is reason for Basic screen output with print command, orig only to paper later when videoterm for separate paper out use lprint or print# commands for listings also list vs llist or list# vs output redirect, exa C64 CMD input "xxx", var when output redirect still input echo to same as input while print "xxx"; input var would be redirected, not user visible same input redirect for script input "xxx" not displayed, print "xxx" is anec the only thing I miss displaying existing value of a var for editing later used typeterms, fast teletype-like devices, a fast printer with keyboard anec at IF Basic training I took an immediate dislike in typeterms no possibility of updating display, no screen editor like I was used to no possibility of moving display, no sensible games possible some used multiple sets of full interactive system style IO exa ITS with terminals [Garfinkel2] p112, [Levy] derives from AI lab usage of TX-0, PDP 1, PDP 6 with direct attached scopes exa NLS with video cameras filming scope displays [Engelbart] p197 even with video framelock, is analog multimedia [Engelbart] p204 anec Stanford WAITS also similar video/audio on terminals [Raymond] "WAITS" but was seldom used elsewhere but most used video terminals, are video+beeper+keyboard exa all DEC systems, later Unix (from DEC PDP 11 hardware) glass TTYs [Raymond] "glass tty" exa Lear-Siegler ADM 3 the terminal contains the video memory and a character video generator video terminal output is actually video memory editing data arriving from the computer modifies the video memory characters are written to screen, inserted into memory at cursor position CR fills line with blanks, FF clears entire memory and resets cursor LF/BS move cursor down/left, but on glass TTYs nothing for up and right because no cursor ctrl they can't be used for display hacks, except BS exa scrolling .plan files [Raymond] "plan file" exa twirling baton [Raymond] "twirling baton" the circuits that do the editing are called terminal or display controller earlier terminal controllers were implemented as discrete logic exa VT 52, VT 100, Tektronix 4014 later they often were microprocessors, sometimes of significant power exa VT220 8 bit exa Pericom 68000-12 + 63464 + 6809 equivalent of an medium 286, but no disks and fixed program in ROM and significantly more than the first Macintosh (only 68000-8) anec a Datapoint terminal controller was the reason for developing 8008 some controllers large memory with scrollback wheel, exa 1512 Tektronix also large screen terminals, exa Ann Arbor 80x64 [Cameron] pXVI terminals with escape sequences [ctk] 89-3p297 Terminals exa ADM 3a (at Berkeley in 1978 [Salus] p143, after Apple II!) exa DEC VT 52 [DEC2] p99, VT 100/220/320 [DEC2] p89 escape sequences for full cursor motion allow drawing onto the screen allowed screen editors such as Bill Joys vi [Salus] p143 1978, [Lamb] esc seq for screen image editing to reduce transmission [DEC2] p94 anec vi redraw on ADM 3a vs intell term [Lamb], [Raymond] "dumb terminal" yes, vi is a bitch but you should know it because it is everywhere like you should know how to change a flat tire on a car escape sequences for setting character attributes, Esc[*m \] escape sequences are defined in ANSI X.364 [Raymond] "ANSI (2)" colour numbers [DEC2] p93, are defined in ISO 6429 [man] ls 1 bold, 4 underscore, 5 blink, 7 reverse 30..37/40..47 colour fore/back bla/red/grn/yel/blu/mag/cyn/wht on PC HW no bold, but 16 colours, used as bright [Raymond] "ANSI (3)" anec VT 220/320 can show escape seq instead of eval them [DEC2] p84 charset for debugging, exa used for finding XVT library screen drawing bugs unfortunately no terminal emulator known to me supports this feature anec is a classic case of a hacker remembering a past experience, SR CAD graphical terminals exa DEC VT 340 Sixel and Regis commands, Tektronix 4014 and 4107 note that Tektronix 4014 was storage tube osc with 2 char drawing commands some terminals also support a mouse, exa VT 340, simulated in XTerm (exa mc) With networks also X Terminals and Sun Rays, see networking displays for them terminals with autoswitching emulations exa Pericom 9000 does both VT and Tektronix 3270 and 5250 terminals [iX] 95-6p118 3270 terminal online transactions (data entry and queries) are mainly form editing many users editing on mainframe proc would sink it in keyboard interrupts VTs fast screen editing escape sequences improve display updating but they do nothing to reduce interrupt load of interactive editing use a better input method, edit a line in the terminals display controller pass line to disp ctrl, edit it there, pass back and evaluate on mainframe local field editing, nearly single user speed for form editing this is done so in IBMs 3270 mainframe terminals HW channel, ev FEP, 3174 disp controller, multiplexers, 3270/3192 terms some say that the 3270 terminal itself is intelligent others say the terminal is dumb, all intelligence in display controller the later claim seems more sensible to me, why mult HW when one will do anec disp ctrl so big I first thought it was minicomp (same size as MVII) instead of leaving editing when cursor changes line put full form in terminal new line cursor position, restrict range of movements, input chars use mainfr proc only for transaction processing and generating new form this is done so in IBMs 5250 minicomputer terminals HW rel to 3270 only better disp ctrl and new protocol to it are needed but in implementation 5250 also uses its own keyboards/displays/cables processor terminals normal terminals accept slow byte stream of ASCII and escape sequences exa SR CAD Oberi drawing with commands over 9600 Bd, redraw took minutes they pose a heavy load on the central processor for screen (re-)drawing exa SR CAD Rueti with 19200 Bd no faster because machine overloaded we had 6 users on a PR1ME 750, them over 10 on a PR1ME 780 they allow less control for IO than IO devices on processor bus, only esc seq also less diversity of user input and output devices, no extensibility lead to processor terminals, are a set of IO devices with an own processor anec own processor, is one step of the cycle of reincarnation, see video processor terminals accept downloadable display programs and execute them anec smart terminal is educatable, not smartass [Raymond] "smart terminal" exa PDP 5 processor terminal for PDP 4 anec the PDP 5 sold like mad as a small interactive system, lead to PDP 8 DEC PDP 8 (196?, 4..32k*12 mem) [DEC1] p3-6 mem, [Bell] p31, [Salus] p20 started the minicomputer revolution, even this proc had timesh option anec PDP 8 also influenc by LINC, later LINC-8 (2 proc, L+8) [Clark] p388 and PDP 12 (switchable LINC/PDP 8) [Raymond] "mode bit" exa PDP 8 with 338 display on it used as processor terminal [Bell] p31 exa PDP 9 with 339 and PDP 7 with 340 displays anec a PDP 7 with 340 was the first machine Unix ran on [Salus] p9 exa ESL display (Kludge) with PDP 7 or 9 on IBM 7090 or 7094 [Licklider2] p127 Ross about on programming it, downloading software exa MIT AI lab graphics terminals, Knight [Levy] p125, DEC 340 [Levy] p146 timesharing prevents hardware oriented programming, only via drivers this lessens dependance of programs on specific hardware but makes some programs impossible to write programs that require full CPU power (exa subway hack) or require direct IO access (exa display hacks) MIT hackers had not really been friends with timesh since fight over PDP 6 "it is like doing love with wife while 6 others are also" [Levy] p122 only grudingly accepted it as a compromise, to spread access to machine they first tried to escape from timeshar limits with processor terminals later Greenblatt single user machine for LISP, derived from cons proc this lead to Lisp Machines [Abelson], [Winston], [Levy] at long last solution to esthetical problem of timesharing [Levy] p420 for display hacks a graphic terminal with own processor was made, Knight programs that don't require direct access were done on normal terminals this model was supported by ITS terminal imageing system in this case simply transfer imaging to terminal, it does updating exa AT&T Blit terminal [Raymond] "blit (2)", [Tanenbaum] p228 Terminal Connections placing IO devices on users desks requires remoteness, communications lines with TTYs local 110bd 20mA current loops were already in use but long distance needs TTY lines, limited speed (110bd/10char), only 7 bit modems [Byte] 89-6p321 modem methods, [Byte] 90-11p353 Bell and CCITT standards [Byte] 93-7p178 and p182, [Byte] 95-11p40 fast modem trouble [iX] 95-2p144 V.34 modems (28800), [PCW] 94-10p473 V.34 modems for longer distance connections use telephone lines for local internal phone system, for remote connections public phone system modems as signal converters from TTY line current loop to phone line audio data encoding, bps/baud, full duplex, half duplex, asymmetric (1200/75) fixed chipsets or DSPs with ROM software, buy new one for higher baudrate better would be universal telephone signal interface and SW in driver anec 1980s Lion Systems 2400 bd, answerphone, SW driven, PTTs killed it for high speed packets with correction, compression [ctk] 88-10p247 MNP anec compression delays data, better precompress file [RFC] 1144 remark 44 for setting up the phone connection dial with a telephone on same line anec father GT 1980 terminal and modem to HH and OW PR1MEs and VAXes with typeterms and videoterms faster speeds 300/1200/2400/9600/19200/38400/57600/115200 bits/s also 8N1 bit pattern operation instead of 7E2 of TTY anec Unix tty speed history, incl 134.5 [Byte] 91-9p341 RS-232 [Frisch] p307 wiring, [Reilly] p12, [Byte] 90-4p143 limits of PC serial port [ctk] 86-12p185, [Elektroniker] 89-5p55 hardware examples [Byte] 85-3p129 8251A UART, 1488 and 1489 [ct] 88-9p150 TPUART, [Coffron] for connecting terminals and computers to the modems use RS-232, simpler DTE (terminals, computers, some prt) male vs DCE (modems, some prt) female to remember this think of the phone company ("Ma Bell") as being female anec Ma Bell from Mabel, wife of Graham Bell (telephone inventor) financed his firm to 99% and was forst CEO of it, in last century! signals original TTY current +- 20mA, seldom used today, only in lab/workshop vs voltage +- 5..15V running on 9000 ohm resistor [Byte] 91-9p334 usually run at 12V on desktop systems but often 10V on portables w MAX232 pinout original DB25 1 Frame bidir, 2 TXD T->C, 3 RXD C->T, 4 RTS T->C, 5 CTS C->T 6 DSR C->T, 7 GND bidir, 8 DCD C->T, 20 DTR T->C, 22 RI C->T many different naming convention, above vs BA/BB (EIA) vs 103/104 (CCITT) translation table for these [Elektroniker] 89-5p56 bottom vs IBM 9 pin, for fitting with LPT 25 pin on one AT bus card 1 DCD, 2 RXD, 3 TXD, 4 DTR, 5 GND, 6 DSR, 7 RTS, 8 CTS, 9 RI vs Macintosh old 9 pin DB (SCC) [ct] 95-12p172 vs Macintosh new 8 pin Mini-DIN with RS 423 signals [Byte] 90-10ISEp91 1 OHS, 2 IHS, 3 TXD-, 4 GND, 5 RXD-, 6 TXD+, 7 not conected, 8 RXD+ treat TXD-/RXD- as RS-232 TXD/RXD, TXD+ empty, RXD+ to GND, OHS/IHS empty vs Yost 8 pin RJ-45 symmetrical, no DTE/DCE difference [Hendrickson] 1 CTS, 2 DCD, 3 RXD, 4+5 GND, 6 TXD, 7 DTR, 8 RTS DTE don't wire DSR from local DTR, better remote DCD (see null modems) flow control RTS/CTS originally for term/comp->modem, later bidir throttle [Reilly] p19 RTS becomes the DTEs equivalent of a CTS, no RTS function provided vs in software XON/XOFF (Ctrl-S/Ctrl-Q) or ENQ/ACK (Crtl-E/Ctrl-F) but interferes with binary data transmissions or even progr command input null modems for simplicity of wiring also direct connections DTE-DTE via RS-232 but RS-232 was designed for connecting terminals and computers to modems terminal=DTE-DCE=modem-exchange-modem=DCE-DTE=computer is symmetrical single part terminal/computer=DTE-DCE=modem is asymmetrical while a direct connection Terminal=DTE-DTE=Computer is symmetrical signals must be converted, requires a null modem device or cable proper wiring F-F connectors, exactly like 2 modems would have 1-1 (CaseGND), 7-7 (SignalGND), 2->3 and 3->2 (TxD->RxD) 4->5 and 5->4 (RTS->CTS), 20->6+8 and 6+8->20 (DTR->DSR+DCD) [Reilly] but many commercial null modes are wrongly wired exa F-M 1-1, 2-3, 3-2, 4+5-, 6+8+20-, 7-7, -4+5, -6+8+20 (often seen) exa F-M 1-1, 2-3, 3-2, 4+5-, 6+8+20-, 7-7, 11-12, 12-11, -4+5, -6+8+20 exa F-M 1-1, 2-3, 3-2, 4+5-8, 6-20, 7-7, 8-4+5, 20-6 exa ?-? 1-1, 2-3, 3-2, 4+5-20, 7-7, 20-4+5 exa null modem shown in [Elektroniker] 89-5p57 anec Franz "Ah ein richtig verdrahtetes Nullmodem!" anec IT ICS "null modem" to term servers, deliberately wrong, no logout RS-232 testers RS-232 problems because wrong plugs, wrong pinouts, missing signals, bugs for fixing them use gender changers/benders/menders, custom hacks for finding them RS-232 LED tester, 2 colour LEDs all wired to sig-gnd friendly wiring, all LEDs on the side of tester their signal comes from F plug (DTE) side 2/4/20, M plug (DCE) side 3/5/6/8 but many commercial testers are unfriendly wired for cheap circuit layout exa F plug side 2/4/6/8, M plug side 3/5/20 anec my old 300bd acoustic coupler and hacked 2400bd modem both powered by the computer over the RS-232 line 300bd +9V on pin 9, both ends +-9V from C64 user port 9V AC and rectifier 2400bd pin 9 +12V, pin 10 -12V on COM2 port card from AT bus with todays COM2 also only 9 pin this modem power hack is not possible this parallel/serial card was destroyed by lightning, since only 9 pin [ct] 99-17p130 lightning and how to protect from it why not modem power control by DTR, selectable by DIP switch on modem? I now use 3-way split in switched monitor power cable, with modem on it anec Linux /dev/cua trouble with modem on while boot and getty on /dev/ttyS [ct] 98-25p218 Linux dialin, mgetty, pppd terminal printers for connecting users terminal and local printer share one RS-232 line wiring -T-P or -P-T, requires first device to have a "let through" esc seq console terminals sometimes one terminal has special features for being the system console special keys for manipulating, booting and shutting down processor exa the Ctrl-Alt-Del sequence to reboot an IBM PC built in tape drive for installing, backup, file transfer even own front end processor or special connection lines exa Symbolics 3600 [Raymond] "fepped out" in Unix no special console terminal /dev/console is simply the first terminal port, on PDP 11 port on processor used for single user mode while booting, after not special, use root console select mechanism Unix first, CP/M linked lib, IBM MDA/CGA HW jumper Microcomputer Terminals PC terminals the first PCs used RS-232 lines with TTYs or timesharing terminals exa Altair real TTY, Apple I TTY simulator on board [Byte] 84-12pA68 then they used direct IO, as in interactive systems exa Apple II, PET, Atari, C64 when 8 bit proc 64k memory limit became serious they went back to terminals often with 2nd microprocessor with IO and terminal emulator, exa TSP, Beri some of these as programmable processor terminals exa Columbia Commander second Z80 in terminal of Z80 based microcomputer program download via "copy 1:", escape sequence is linked in lib run program and warm boot term via 2 special keys on terminals keyboard that gave display switching and hardware multitasking of user/editor this comp being the first I used lead to me being spoilt for comfort after that as second machine I used the 2 display SR CAD PR1ME this most likely explains why I don't tolerate lousy systems so easyly then 16/32 bit processors with large address spaces reallowed direct IO exa IBM PC MDA, CGA, EGA, VGA, SVGA video BIOS only clear screen, TTY-style write, slow pixel set/reset no terminal-like escape sequences or sensible graphics drawing support requires direct access for any cursor moving and for all graph progr should contain a VT 100 term emulator on MDA and CGA in char mode and graph term like Tektronix 4014 or 4107 emu on CGA in graph mode for card independancy video BIOS should be in ROM on card not motherboard would allow card dependant access routines and parameter info would have allowed incompatible video cards to evolve, like disk HW no device parameter info for self configuring drivers few fixed formats, programs must recognise HW and assume its formats anec jumper on motherboard to set colour vs mono IO base address with sound, keyboard, joystick on terminal card full term in SW inclusive joystick escape sequences on CGA card later mouse drivers could have been esc seqence extension, not INT 33 MS-DOS CON driver is only a glass TTY [Raymond] "glass tty" because it only calls the PC video BIOSes INT 10 TTY write function expanded with ANSI terminal in 2.0 (ANSI.SYS), but no graphics support having ANSI terminal support in MS-DOS and only facultative lead to only few using it, many direct, save driver, no use it leads to direct access, hardware dependancy, compatibility problems requires new drivers for every adapter type because no terminal emulator in BIOS used by MS-DOS CON external timesharing terminals (or an other PC with a term emulator) can not be used as alternative consoles, exa for hidden lab systems only way to use a terminal is the MS-DOS CTTY command must be in Autoexec.bat, but it is seldom used and therefore buggy or use a complex remote control program, exa PC Anywhere, Carbon Copy PCs as terminals for timesharing systems PCs with interactive system like IO were soon used as terminals, emulators as microprocessors were invented for terminals, this is return to the roots but emulator should use the PCs features, local intelligence, often doesn't anec Heinz Tektronix emu with graphic printing with full printer resolution pop up terminal programs with local/remote flipping, exa IBMs PC3270 term emu also screen scraper programs to ease use of mainframe doing this the PC becomes a front end system [Raymond] "front end (1)" multiuser microcomputer terminals microprocessors by being cheap freed many from having to do timesharing but some people noticed that a powerfull micro also cheapest timesh system exa HP 68000 MPE system at Technikum, first system used for BIX anec when 68000 appeared it was first used for such pseudo-minicomputers first they used multiple standard timesharing terminals for connecting use multi-terminal cards with 4-64 ports some with own processors [Byte] 90-11p230 Comtrol later when multiuser micros on base of the IBM PC PC keyboard/video/speaker HW hidden behind a VT terminal emulator this emulator is what should have been in the PCs INT 10 BIOS after some MS-DOS programs (123, Word) had been ported to Xenix and Unix differences between console and terminal users lead to PCTERMs are terminals with exact copies of IBM PC keyboard and video hardware using PC keyboard scan codes and PC screen update, also local RS-232 slow terminal screen update speed lead to multiconsoles exa [Byte] 90-11p72IS65 IGEL MultiVideo exa [PCW] 93-10p518 Un-Terminal multiple video cards with keyboard connectors, ev even mouse, COM and LPT but limited cable length, all terminals must be near to the computer Terminal Independant Software VMS only one standard terminal type supported by DEC, their own VT series anec because everyone same term animated mails with esc seq [Garfinkel2] p112 ITS AI Lab PDPs displays first drawn onto directly by user programs later drawn on by standard monitor routines one set of routines for each terminal type [Garfinkel2] p112 terminal image in OS and monitor routines for user program to modify state lead to early appearance of full screen editing of texts, source code also to Emacs shell mode, input and output as an editable text [Cameron] anec the Macintosh MPW command line is also such an scrollable text Unix termcap/terminfo DB, curses library and TERM env var (set by /etc/ttys) Unix has no terminal abstraction [Garfinkel2] p113 but it does have TTY abstraction, set TTY dependant processing w stty/tset exa lower to upper [Leffler], [Raymond] "fossil (2)" LCASE bits all upper case after upper case login [Garfinkel2] pXVI Norman weird is a case of automatic detection and setting of TTY capabilities exa expanding Unix LF to TTY CRLF, expanding tabs to spaces it is this TTY abstraction that complicates curses life [Garfinkel2] p117 this is an example of special feature stuff becoming crud [Raymond] "smart terminal", also applies to terminal subsystems [Garfinkel2] claim that Unix doesn't convert term lines to record separat but the Unix TTYs do convert CT(LT to LF and LF to CR/LF LF simply is the Unix record separator character it was just never extended to a video terminal abstraction because AT&Ts Unix group had only TTYs, they didn't have video terminals later Tektronix storage tube terminals, no edit or scroll [Salus] p140 anec Ken doesn't want to see state of text while editing [Salus] p140 also kernal can not be replaced by users, should not get in way better the actual work (and decisions) should be done by user tools interestingly the original TTY abstraction is violation of this rule Unix kernal more IO multiplexer than complete OS [Hauben] "evol_unix" TTY operation remained long time a legacy of Unix, is still partially so Joy at Berkley made termcap for making ex/vi terminal type independant instead of fixing OS, wasn't yet in OS making [Salus] p143 1BSD ex/vi/Pas anec curses was hacked together for rogue game [Raymond] "rogue" is somehow fitting, as original PDP 7 Unix was hacked for space travel anec less viewer displaying bold and underline is handled via termcap I use altered termcap to make less display man pages in mult colours but also colour_ls using own config file, no term type selectiveness Unix also has printer independant control codes, printcap, no library [Garfinkel2] p115 also complains about stream of bytes oriented IO in general but byte streams are actually the most flexible form of interfacing mixing commands and data in streams [Raymond] "live data (1)" exa program source/byte code exa terminal and printer data vs control escape sequences exa TeX escape sequences vs PostScript commands with parameters exa HTML and JavaScript exa Lotus 123 macro expressions are data strings with @ at beginning exa RPC is conversion of procedure calls into a stream for network exa also interactive programs with keyboard data input and command keys use a state machine to sort the two of them out, data vs command mode but no modes for user progr interface, vi modes bad vs others modeless but the programing language model must have enough power, expressiveness the Unix model is that of a virtual TTY, it is too weak proper would be virtual video terminal, escape seq convertion in OS Processes [ct] 92-5p178 modern OSes bugs in one task can overwrite other tasks or the kernal, leading to a crash in single user systems crashes are annoying but at least they can be reduced by user avoiding known buggy operations in multi user systens they are far more annoying (more users are hit) and bugs in one users program are not avoidable by the other users exa early Unix on PDP 11/20 of original Unix writers no kernal protection, one users program crash can kill the entire system leads to users calling "running dangerous program" [Salus] p46 multiple processes with separate address spaces protection of tasks from each other and protection of kernal from tasks give every task its own address space, such tasks are called processes also to prevent bugs leaving kernal memory unusable flag all memory, used devices and open files allocated to a process on termination of that process automatically free them [Salus] p22 one process at a time in memory exa early Unix on PDP 11/20 of original Unix writers [Libes1], [Leffler] one proc done because of lack of memory (24k, kernal 16k, user process 8k) before disk kernal 12k, user minuscle, RAM disk rest [Hauben] "evol_unix" keyboard input of all users goes into line editing buffers in kernal memory the users process is left waiting, this is known as cooked terminal mode only when the user types enter is the waiting process declared runnable if not the last process to be run it is swapped into memory for executing because swapping is very slow, this is only usable with multiple users when long typing time for each command leads to not too many swaps early Unix could only be used for running command line driven programs shell history with ! was so that a line can be typed, then shell swapped in using arrow up would require running users shell after every arrow key also early Unix systems used TTYs, these had no arrow keys command line editors, exa Unix ed [Salus] p36 TECO, QED, ed show example of syntax, ranged global replace with many //s in it [Lamb] anec BSD swaps out last proc after 20s inactive for faster swap in of next BSD-deri SunOS despite paging still swaps out after 20s [Garfinkel2] p227 even worse it forgets what was in RAM and reloads when user continues multiple processes at a time exa PDP 10 [Raymond] "moby", Unix on PDP 11/40, PDP 11/45, PDP 11/70 requires memory mapping hardware to translate addresses process-specific to unique addresses, diff phys addr for same virt addr in diff process allows multiple programs in memory without any changes in programs all of these PDPs appart from the memory manager also had 512k..2M RAM base register and address adder also uncomplicated moving of processes in memory for compaction simplifies swapping when a sleeping process is to be reloaded new process requires finding space, base+offset shuffling vs page replacement OS/2 286 trouble with garbabe collection time, NP-complete also segment limit register and comparator good for detecting pointer run away bugs, exa Kompal sizeof(menu_item) base+tested-offset exa PDP-10 KA-10, paged exa KI-10 multiple processes not all fitting in memory requires swapout strategies usually low priority and non runnable (waiting) processes are frozen unlike paging no page in on demand, swapper must refetch or even rotate swappedout processes become "waiting for inswap", as may have been waiting this requires a second flag to tell sheduler to leave them alone exa VMS CUR, COM/COMO, HIB/HIBO states multiple proc in mem at same time enable raw term IO for interactive editors exa Coulouris em [Salus] p139, Joy ex [Salus] p141 1975, MS-DOS Edlin users wanted usable editors (em stood for editor for mortals) impossible with only 1 proc in memory due to too many switches, swapping multiple processes also enable shells with arrow up for command history all processes partially loaded exa VMS, Unix on VAX and WS, Windows 386, Macintosh System 7, OS/2 2.0, NT with paging all processes can be partially loaded, runable without paging all programs can be partially in memory, improves interactivity even more anec for traditional reasons paging called swapping in many OSes, exa Unix actually Unix since 3.0BSD pages and swaps, page first swap on big crunch sum of working sets of all running processes must fit in physical RAM anec in VMS every process has a page count limit it starts paging out when hitting this limit even if unused pages in sys this prevents a memory greedy process from crowding out the others but also prevents full memory utilisation when only a few processes after forking a new process must contain a copy of the old processes memory as it it often overwritten immediately by an exec, is processor load use vfork, old process lends its address space until the exec while doing this the old process is frozen to avoid it altering memory the new process is expected to change no memory, else use normal fork but this requires the programmer to know vfork and decide between them separate system/user modes, addr space mapping registers and instr protected on PDP 11 only the kernal can switch segment regs, only 1 segment per process vs 8088/IBM PC no protection, a progr has many segments, real mode problems switch to user from system mode for executing user program code no system code/data can be run/accessed after the S->U mode switch switch back instr can't be in user mem as S/U mode flag is protected the processor only returns to system mode when an exeption is processed exa when access to system-mode-only instr or addresses fault trap, GPF for controled (non-killing) reentry to system mode use a system call trap because multiple system calls all use the same trap use a function code this is similar to multiple interrupts using a vectoring code U->S requires pushing flags and setting sys mode bit sys mode bit is reset to user mode by pop flags instruction, is in reti most modern processors have 2 modes, user and kernal, but more is possible PDP11/45 and above kernel/supervisor/user modes VAX kernel/driver/system/user modes 80286+ 4 rings user, services, drivers, kernal [Byte] 86-10IIPp102 prot Multics had up to 64 levels [Tanenbaum] p194 anec in Windows no protection of processes 8088 had overlapping segments, no segment length limits, no kernal mode but were used for non protected processes in Minix [Byte] 90-12p345 80286 has protected mode, but it is not used properly by Windows to protect OS kernal and drivers from user progr use ring 0..2 vs 3 OS and shared libs go into global segments protected from user progr with priviledge bits OS system mode access only, shared libs read only as protected segment switching can be done by user SW user SW can switch, but the OS sets limits on this, access rights but in Windows all segments (OS and user) are in ring 0, no protection to protect user progr from each other use local segments there are 8192 global and 8192 local (per process) segments each processes data goes into its own local segments only the runners set of local segments are addressable at any time for segments shared by a few processes they must be in each local set but in Windows up to 3.0 only global segments used, no protection since 3.1 one single set of local segments, not switched, also global vs in OS/2 1.x full usage of 286 segment system as Intel intended it 80386 has MMU with multiple address spaces this is used to give every DOS box its own VM, know as its VDM but all Windows programs in one VDM, known as the system VDM even worse, all VMs (incl DOS boxes) share one copy of MS-DOS Windows 386 DOS boxes are "leaky", copy of DOS is common to all DOS programs can destroy DOS and bring entire Windows to fall vs OS/2 2.0 real processes with own address spaces, VMs every program has its own VM, even every Windows (WinOS/2) program this is the technical basis for the OS/2 "crash proof" claim Windows 95 also has no serious protection, despite Microsofts claims [Byte] 95-8p54 Win95 internals, "an elegant kludge" [ct] 95-8p78 Win95 not so hot, [ct] 95-9p192 Win95 vs OS/2 internals [ct] 95-10p121 Win95, [ct] 95-11p152 Win95 [ct] 95-11p160 Win95 PnP with ISA and PCI [ct] 97-9p14 Win98 no great step forward 32 bit programs have own VDMs, can't kill each other, less crashes but they can kill 16 bit ones, also 16 bit can kill each other even worse, all programs incl Win16 and DOS ones can kill the kernal anec in DOS box, run debug, a 100, CLI, JMP -2, g, crash but E-IDE driver install progr reset attempt was caught by Win 3.11 only real advantage of Win95 is that 32 bit progr have no 64k segm limits anec Byte "anachronism means nothing more than occasion unexpected crash" no memory/kernal protection is main reason why Windows crashes so often because of high bug count of Windows SW this leads to many system crashes Windows NT has real protection, because it is internally an VMS microkernal but having all user processes display through one display process can still have a bug in the old windows code in there crash the user separate user mode and system mode stacks system mode stack for while in system calls, while processing traps it is hidden from the user program to protect kernal from spying also prevent kernal crash when not enough space on user mode stack to save having to alloc space for IRQs on every processes system mode stack additionally one global stack for interrupts, exa VAX, 680x0, MIPS same signals should not use the user programs stack, use own stack BSD allows per process a facultative signal delivery stack [Leffler] to save having to alloc space for signals on every coroutines stack but stack alloc problems on VAX, only space for one stack in P1 addr space this means that space for separate stacks must be alloc in heap, no growing same problems also prevent coroutines, prevented Unix multithreading shared memory between processes split instructions and data, instr space can be declared read-only exa Unix on PDP 11/45, 11/70 as runtime modification of the instruction segment is impossible 2 process with same program (exa shells, editors) can share an instr segm despite more addr space for big process actually less mem use, less swapin segmented systems, individual segments can be declared read-only exa Windows 286, OS/2 1.x allows better shared memory, not just entire code exa shared libraries, DLLs, once in memory, mapped into mult processes paging systems, individual pages can be declared read-only exa VMS, Unix on VAX and WS, Windows 386, Macintosh System 7, OS/2 2.0, NT memory allocation chosse on pages fixed vs VM paged process vs global mapped (visible), user vs system accessable copy on write, allows new process to use old ones memory without vfork and still avoid the penalty of copying the entire process memory appart from memory mapped files/progrs/libs also common memory Virtual Machines (VM) IBM CP40 and VM/370 virtualise HW, then normal singletask OS in VM [Tanenbaum] p21 split programming into virtualisation and OS functions interface to VM is simply the full (virtualised) instruction set requires all system state accessing or changing instructions to be trapped and then VM monitor to simulate state to that VM, using part of the HW DOS processes, DOS boxes, virtual PCs [Byte] 90-10ISEp137 exa Software Link PC-MOS 386, Intelligent Graphics VM/386 exa SCO Xenix/Unix 386 with Phoenix Technol VP/ix, Locus Comput Merge 386 [Byte] 90-10ISEp137 from VP/ix author, [Byte] 91-1p101 using VP/ix exa Insignia SoftPC on Mac and various Unixes [PCW] 94-4p414, Dosemu on Linux exa Windows 386 DOS box, OS/2 2.x DOS box, NT DOS box same also full Mac emulator with MacOS in "blue box" in Rhapsody to run real mode MS-DOS programs under multitasking OSes multiple of them, one VM for each DOS program, "better DOS than DOS" address spaces generated by MMU, but inside segmenting in real mode system critical instr trapped to OS by 386 VM86 mode [Byte] 86-10IIPp119 uses Intel 80[3..]86 VM86 mode, can virtualise (32 bit) 8086 but no VM386 unlike VM/370, status user readable [Byte] 86-10IIPp119 most virtual PCs emulate PC IO HW, then run full copy of MS-DOS, any PC OS [Byte] 93-9p217 virtual device drives for DOS, VDDs, VxDs [Byte] 96-6p63 VxDs in Windows 95 perhaps with some emulator specific drivers (file access) or even traps exa SoftPC emulates 2 HDs from container files and pseudo-net for Unix FS OS/2 actually 2 types, real PC box, also DOS box traps direct INT 21 as much as possible of DOS is done in OS/2 DOS emulator, large addr space FS path conversion PC-MOS/VM/OS2/NT direct, as host system FAT or descendan all Unixes map DOS drive letters to a subdirectory, or container file DOS boxes with character mode progr run in a CGA emulation window or full scr CGA emulation windows allow DOS in 50 line mode with sensible 8x16 font if mult DOS boxes mult windows or screen sharing/switching PC-MOS/VM/Unix also multi user w PC-Terms or remote monitor/keyboard card DOS boxes with graphics mode progr don't run, or slow emu, or full screen OS/2 replacement graphics drivers for Windows to run on OS/2 desktop running Windows in DOS boxes, originally only 8088 mode standard Windows KRNL268/386 runs in virtual 386 box for WIN386 DOS tasker triggering 386 DOS boxes via task switch interface OS/2 uses its own real multitasking to make boxes, runs KRNL386 in one new Win386 kernal called WinOS/2, uses the DPMI server in OS/2 kernal Linux Dosemu also has such DPMI support for Windows kernal anec this kernal is from MS, orig for using DPMI in MS-DOS himem.sys but also real Windows emulation, OS calls emu, lib emu, trap call emu exa Sunsoft WABI, originally on Solaris, ported to SCO, AIX etc exa Linux WINE [iX] 94-7p122, [Uo] 96-9p118, WABI-like emulator anec under Windows 88/286, OS/2 1.x, SCO Xenix 88/286 DOS boxes run DOS boxes programs by swapping Windows out of bottom 1MB then swap the desired DOS program in and run it this must be done so because direct segment reg manipulation of DOS progr of course there is no protection from DOS progr destroying Windows or DOS in Windows and OS/2 GUI program frozen while DOS running same no DOS running in background while running GUI programs in Xenix DOS process treated like any other Unix process, stays running requires lot of switching, can be slow, strong system load, problems Subprocesses first programs started from a shell ran in the users login process, exa ITS crashes of user progr can destroy users shell, would give a forced log out then shell in the same process but in a VM protected address range exa VMS DCL in VAX P1 address space, protected by supervisor access mode requires special linker option to put programs up there subprocesses are possible, but must be ordered explicitely, SPAWN command then generate second (sub-)process at run time for each user program, exa Unix this was originally done because of small memory of early Unix systems only 1 process in memory, every process gets entire user memory many subprocesses requires fast fork [Libes1], [Leffler] anec Linux man has 4 processes running while displaying man, sh, zcat, less, for formatting additional processes, exa groff when protected kernals appeared it lead to bugs being limited to one process this prevented need for clean memory freeing, result many memory leaks there was no pressure to fit C or C++ with an standard garbage collector anec treating memory managment by process creation and exit is like medicine treating illness by living and dying i.e. ignoring the problem [Garfinkel2] p174 processes ending with exit() value requires process slot staying until parent process reads it, this gives zombies in ps listing unkillable zombies when parent no wait(), slaying should be possible subprocesses allow the user to do file managment while staying in an editor instead of a mini shell in editor, use propper shell in subpr, return on exit even many DOS programs allow calling of an second COMMAND.COM without exit subprocesses allow process to spawn a subprocess and use it as a subroutine the master process "types" to the subprocess and evaluates its output for providing the subprocess with stdin and stdout use a pseudoterminal /dev/pty[p..s][0..9a..f] for master process to write/read /dev/tty[p..s][0..9a..f] for subprocess to use as stdin/out unlike 2 pipes (see below) pseudo terminals also does terminal processing problem of master process switching between writing and reading of data as write only when sub has read and read only when sub has written use select() system call in a loop to trigger apropriate action Job Control users wanted to run multiple programs at the same time, have multiple logins first they simply used multiple terminals exa multiple terminals in the terminal room or absent colleagues terminal but this required having multiple terminals free, also moving around to use later have multiple programs running from one terminal, ev even one login ITS had ability to switch any terminal to any users login [Levy] p124 this includes also those of other users as it was also possible to have multiple terminals on one program this enables things like output spy [Levy] p124, [Raymond] "OS (2)" seeing other users screen good for helping user on phone [Garfinkel2] p112 Unix subprocesses allow foreground and background jobs [Frisch] p42, [Leffler] support in kernal and shell subprocess can be spawned from a shell as background job by & at end of line a normally started subprocess can be sent into the background by Ctrl-? to (re-)foreground subprocess use the shell commands jobs, bg and fg these use artificial job numbers instead of the existing process IDs when a background job wants to output it is blocked until it is forgrounded the exit of backgounded jobs is recorded by the controlling shell is then reported to the user when next shell input printing the exited jobs status would be better before shell prompt if printed after then, at least reprint the prompt having output to multiple users terminals is not possible in Unix only reroutin entireg output, only by twidling OS internal structures but this loses output for orig user, also not poss with protected kernal VMS has no job control, it relies on multiple logins from a term server switching is done by the terminal server switching between connections actually there exists a SPAWN command, to start a second process on terminal but the old process hibernates until it is funished, if not /NOWAIT if no waiting both use terminal, no access control, mixed output even worse mixed input, who askes first, if prompt lost by output, Ctrl-T MS-DOS has no multitasking and therefore no job control but it has TSR pop ups that hook the keyboard IRQ to activate themselves is a sort of of job control, but with stacked calls, no random job switch and all switching code is new in every program, may collide with others job control allows the user to switch editing mult files and do file managment without having one editor process containing all buffers, only 1 buffer simplifies editor code and loss of multiple buffers when editor crashes but seperate editor processes prevent common clipboard, see display servers require saving selection to a temp file, including file in other process job control gives problems with full screen programs that use escape sequences these expect the terminals state not to change all of a sudden to recover from this use screen redraw commands, exa VMS edit, vi, Emacs Debugging Support [Byte] 93-10p209 Windows NT and OS/2 debugging support ITS DDT debugging a core dump is like medicine "curing" by dieing and rebirth debugging should be healing like a physician, not a post mortem autopsy debugger should be allways present, not just when explicitly started leads to routine debugging, whenever a bug creeps up [Garfinkel2] p186 DDT is an interactive system debugger expanded to be a full timesharing shell, allways there [Raymond] "DDT (2)" this is possible, because in ITS every login is one process similar Lisp Machine debugger [ct] Lisp Machine debugging also Motorola/Macintosh Macsbug [ct] 96-2p284 facultative load while boot, catches error traps VMS DEBUG when user progr in P0 addr space terminates with a bug start DEBUG from DCL it is loaded into VAX P1 address space like DCL, no loss of user progr state result debugger not loaded all the time but still triggerable on bug only when next progr in P0 is started is the old one really terminated Unix db/adb/dbx/gdb simulate a 2 processor master/slave system by using subprocess debugger is in the master process, user program in the subprocess from debugger start the user programs subprocess in debug mode ptrace() system call makes switch from debugger process to subprocess when subprocess trap occurs switch back to debugger, ret from ptrace trouble with 2 separate processes is no debugger in user process no links in code, no breaks on calls, lots of process switching also less flexible triggering of switch back to debugger result no debugger in shell, no routine debugging [Garfinkel2] p187 but today debuggers like gdb can attach to an running/crashed process for debugger accessing debuggees memory in BSD only slow (1 word) system call in System V the /proc/ contains /proc//mem, read/write like file anec adb syntax so hairy, gave up trying to use it, actually it was gdb Pipes subprocesses made string of subprocesses of one shell possible, pipes use programs that take input from stdin, output to stdout, filters, sponges exa Unix cat, more, sort, sed/awk [Dougherty], perl [Wall] tools become like subroutines in a programming language it is this ability that makes them still usable hidden behind a GUI anec any programs output should be usable as input to an other anec come from coroutines in Simula, subprocesses are Unixes equivalent this is the main reason why C, C lib and the Unix kernal long had none anec pipes by McIllroy, BTL manag, only place managerial control [Salus] p50 to do this use syntax command < infile | command2 > outfile before only syntax command infiles > outfile no need for intermediate files, writing/reading, save space time pipes in Unix vs files on DOS or VMS is like lazy eval in progr lang but allways produce until stdout no longer takes vs real lazy eval only produces when consumer demands data anec Unix has stdin, stdout, stderr for pipes, but no stdcmd, stdecho instead interactive programs must explicit open /dev/tty, exa editors, less pipes leads to tool approach of using computer [Byte] 92-10p154 write programs that do one thing, and do it well [Salus] p80 anec Rob Pike "cat came back from Berkeley waving flags" [Salus] p160 Unix tool philosophy, one thing but right, put together, text streams was not a great advance of comp science, but a simplification [Salus] p233 is a few good principles taken to full conclusion [Salus] chains of filter programs give dataflow programming [Abelson] p242 use data flow given by users job (or part jobs), analog to EE signals compiler passes/phases as filters [Aho] p10, exa yacc and lex for cc pipes are flexible but using them is a lot of work users demanded options to reduce typing and thinking for pipe constr anec complexity of tar and gzip violating rules lead to tar -z option but -z also to avoid typing and to avoid needing to think same tar -c | tar -x -C instead of tar -c | (cd ; tar -x) this requires output to usable as input, predictable format, no headers and input to be readable from a stream, no dialog Unix pipes and filters are DF with stream of ASCII as only data type no structures, only identifying of text parts with pattern matching exa /bin/cut, sed, awk with a separator char such as : or Tab exa regexp in sed, awk, sendmail.cf address transformation [ct] 97-14p184 Regexp, [Dougherty] p27 Regexp for flexible transformation of structured textual data controlled by rules, recognizer and expression identify tokens and split them with regular expressions after concatenate selected part from splitting and constants sendmail.cf rule groups, jump/call other group, return, terminate repeat rule until it becomes imposs vs cycle through all rules anec funny output of ls -l and ps with text at right comes from here but pattern matching out of band problems with accident match paterns in data exa [ searches trigger on other [s in this text, exa in esc seq \]\] exa missing-[ test in editor also crashes on [s, requires \] at line end \] match pattern is like customers shopping separator in shop cash desks what would happen if shop also sold such separators, get confused [Garfinkel2] p162 pipes critic did not explain what is wrong, missed target anec Unix was designed to be a text processor [Salus] p34 do not confuse text processors with todays word processors, exa MS Word text processing means processing data stored as records of text exa databases of personal data, databases of reference works that is why everything is streams of text, inclusive system databases 1 process per program is unique to Unix, all others OSes 1 process per login like only 1 process at time this was originally because of lack of memory gives speed problems with Unix programs ported to non Unix OSes, exa VMS only one user program at a time is reason why there are no pipes in VMS there is input and output redirection, but it is awkward to use in DCL the processes in a pipeline are coroutines VMS could implement pipes with coroutine user programs in one process or with separate progr running, redirected into hidden temporary files Interprocess Communication (IPC) [Byte] 90-10p311 Win and DeskView, [Byte] 90-11p373 DDE in Windows and OS/2 [Byte] 90-11p403 OS/2 and Unix, [Byte] 92-6p145 OOP over DDE [Byte] 93-8p199 exploring NetDDE exa Unix pseudoterminals, pipes, System V IPC, FIFOs (named pipes) for exchanging data between processes or threads, use queues the producing process inserts data into queue when it has any the consuming process waits, extracts data when some is there therefore the OS process/thread waiting must be linked to the queues the OS must provide the structures and OS calls to use them this is called interprocess communication (IPC) queues can't be in process address space because 2 processes access them processes write and read queue by normal file read/write system calls alternative shared memory, both processes map same file or piece of swapspace Multithreading [Tanenbaum] p507], [Byte] 92-5p289, [Byte] 92-5p351 [Byte] 95-10p173 Solaris and NT, [Byte] 95-11p253 NT [ct] 92-5p178 modern OSes, [iX] 94-4p148, [iX] 95-4p136 POSIX threads exa OS/2, Windows 95, all microkernal OSes, but only few Unixes lack of threads in many Unixes is a major ommission but Linux has the needed basics [Beck] p53 clone() system call anec Occam language based on multithreading, also Modula coroutines coroutines in user programs coroutines are a lot simpler solution to mult asynchronous inputs that select have one coroutine waiting on each input, one on each signal exa Martin Wunderli perl->filter->perl for PGP decoding 2 process perl<->filter gives deadlock as Unix pipes are not buffered Unix has no bidirectional pipes because of deadlock happening 3 process perl->filt->perl(sponge) and after perl<-perl is inefficient perl+filt writes all to sponge, then after filter exits main reads all but often control must be passed on finer than process/task exit one wants the consumer to be activated as soon as a line is processed anec perl->filter->tempfile, perl<-tempfile not wanted because security the filter in question was PGP, the task to do was decrypting mails 2 process perl<->filter, perl with select(), no deadlock or inefficiency but this requires perl to alternately write and read if one of these takes a long time the other is blocked, even if ready this requires 2 separate loops for write and read, separate OS sheduling background operations also require 2 processes accessing the same address space exa screen update, spell check, spreadsh recalc, Lisp garbage collect note that background printing is missing it that list on process-less sys backgr print main reason for multithread, exa OS/2 1.x but on systems with forked process it is better to fork for backgr printing own copy of mem, no need for semaphores to regulate data structure access exa WinWord saving file while printing it gives a crash, semaphore bug this is possible because no parallel modification of one data set in a sense the paging HW and copy on write are acting as HW semaphores on multitasking systems without processes start a new task for each coroutine on systems with processes this is not possible, no common address space it requires using coroutines in a single process address space solving this problem with pipes or IPC is inefficient [Garfinkel2] p174 solving it with a piece of common mapped memory, or mem mapped file also when writing programs using coroutines on an timesharing OS the coroutine switching collides with the systems process switching exa all coroutines of a process become long runners because of one also a lot of programming work to write switching code, already in the OS gives a small mini timesharing kernal in one traditional OS process use OS support for coroutines in processes, this is called multithreading split processes into tasks (memory, resource managment, protection) and threads (processor context switching, sheduling) multithreading is as if each process had a multi-sequence processor ISR back ends are like multiple threads in the kernal address space note the difference between these tasks and those in multitasking chapter orig meaning similar to thread, with processes word disused, now recycled running multithreaded programs on SMP systems shedule threads over all processors, one program may use all free processors anec SMP is widely believed to be the only reason for multithreading it is not even the main reason, simplifying coroutines is the main reason Microkernals [Tanenbaum], [Byte] 87-11p291 distrib, [Byte] 94-1p119 [Byte] 96-12p49 Acorn RISC-OS modules, [Byte] 98-7p39 real time POSIX [ct] 92-5p178 modern OSes, [ct] 95-1p248 exa OSKER in 1970s phone exchange, MERT Unix on top [Salus] p93 exa Amiga Exec [Byte] 91-1p329 exa Mach with 4.3BSD on top [Salus] p215, [Byte] 89-11p411 exa Chorus [Byte] 94-1p131, [Byte] 97-6p40IS8, [Salus] p213 with USL Unix exa GNUs Hurd (Unix-like, Mach based) http://www.cs.pdx.edu/~trent/gnu/hurd exa Plan 9 [Byte] 90-9p312, [Byte] 95-11p113, [Byte] 96-3p143 [Uo] 94-7p50, [Uo] 94-8p52 8 1/2 window sys, 94-11p72 experiences exa Helios exa Xinu [Comer2] exa QNX [Byte] 94-3p47 Neutrino microkernal [Byte] 94-10p199 Photon graphics microkernel, [Byte] 95-6p83 Photon GUI exa Sun Spring addr spaces, in them obj, comms doors [Byte] 96-2p117 exa BeOS [Byte] 96-5p163, [Byte] 97-12p137, [ct] 96-11p192 BeBox and its OS [ct] 98-2p138 BeOS, [ct] 98-9p120 BeOS, [ct] 99-2p114 BeOS R4 real time systems require guaranteed process switching times for programming real time techniques [Byte] 83-5p452, [Byte] 92-8p155 in microkernals only the switcher is not preemptive, fast, no delays Sun NFS crossmount frieze up would have been impossible on a microkern sys kernal bugs crash a system fas easier than user process bugs put as much code as possible into user processes, limit its power to destruct but limit reached when kernal must rely on a user process, then also crash kernals are becoming too big cut big pieces of code out of kernal, exa file systems, database systems even disk and terminal drivers, network protocols, VM pager some microkern have virtual mem mapping by user process for flexibility use signals for telling process to reload pages from backing store problems with saving dirty pages (if user program will not accept it) also problems with sharing RAM with pages from same exe/lib file kernal does only process managment, processor time slicing and IPC is final consequence of cutting CLI out of kernal and tools out of CLI only microkernal and drivers need physical RAM, rest entirely virtual mem OS service processes are accessed from the user processes via IPC IPC is sometimes hidden behind a standard system call trap interface for emulating others OSes, exa Chorus [Byte] 94-1p155 personalities but this is actually a library in user progr space, triggered by signals anec NT uses system called LPC, derived from network RPCs, but without net NT is claimed to be a microkernal by Microsoft, but it is not a real one is a microkern organisatorically, servers and drivers have own coroutines but servers are in kernal space, no own address space, not own processes this was done to avoid drivers having to request HW access, performance where is there a real microkernal [PCW] 94-11p560 but will microkernals really revolutionize desktop systems there is a enormous amount of activity here, but no effect on users systems exa Linux success, fastest spreading vs NeXTstep with Mach failing even for multiprocessor sys they are not necessary, exa Unix or Linux on MP even for multicomputer systems not neccessary, exa VMS on VAX clusters anec many microkernals started life as SMP kernals, exa Mach this seems to be a classical case of engineering for its own end, not users anec no detailed description of an existing microkernals internal structures because I haven't yet found a readable text on one of them all explain end result of research, but none the history of getting there Security [Frisch] p134, [Garfinkel1], [Garfinkel2] p243 Unix security, [Plauger3] p51 [Byte] 86-4p113 making Unix secure, [Byte] 87-10p149 zero knowledge proofs [Byte] 89-5p253 Unix safe and secure, Orange Book, [Byte] 89-6p257 mult securit [Byte] 92-8p94IS23 PC security, [Byte] 92-11p301 NT objects and security [Byte] 93-5p119 mainframe security in c-s, [Byte] 96-2p40IS11 PC security [Byte] 96-8p51 NT secur, [Byte] 97-2p117 NT security for Internet server [Byte] 97-11p81 NT security holes [ct] 99-3p186 intrusion detection, [ct] 99-7p140 trojans, viruses, worms [ct] 2001-2p116 techniques of modern malware, [ct] 2001-13p98 virus kits a computer does what it is told to do, as good as the SW allows it to do it having multiple users on a system bring possibil of interference or sabotage if a computer has terminal lines with modems anyone can try to login you want the comp to selectively only do what you tell it to do and not to do what someone else tells it to do against your interests types of security threats what does a threat result in, what do you lose lossed confidentiality (spy) vs destroyed data vs denial of service attack user errors are user commands with non intentional bad results for the system bugs are non intentional damaging program behaviour exa password/message-of-the-day edit incident exa paging passwd breaker [Dewar] p124, [Tanenbaum] p183 Tenex [Dewar] p124 PDP 10 TOPS-10 password cracking by timing paging exa interaction of getty/login when user types -f root exa Emacs movemail (POP client) used by Cuckoo [Stoll], [Garfinkel2] p246 [Byte] 93-6p274 Cuckoo's Egg revisited exa fingerd end of char array on stack overwrite bug [ct] 2001-23p216 buffer overflows occur especially often in patches, side effects not thought of exa Audi close sun roof bug, defeats ignition key [Norman1] p71 anec Hichhiker's Guide building modified windows can be entered [Adams5] beware of passing user input unchecked to root shells, may have "; rm..." exa Albin .fortunes file, user-made content as command line switches exa getty as ruid=root calls login with untrusted users input -f back doors are inofficial methods of entering a system are deliberately made by programs authors or system admins exa ken login program and C compiler hack [Raymond] "back door" exa sendmail DEBUG option exploited by the Great Internet Worm exa SR HP 9000 /etc/passwd with login halt, no passwd, uid 0, /etc/halt exa in the film Wargames the secret user name Joshua or installed by intruders, rootkits [ct] 2002-4p196 intruders are people that break into a system [Stoll], [Byte] 93-6p274 Cuckoo's Egg revisited [Byte] 95-11p48 bank robbers with PCs, [iX] 93-6p170 vi/expreserve cuckoo [ct] 98-25p100 Hagbard from the Cuckoo's Egg [PCW] 95-5p295 Mitnick arrested, [PCW] 95-8p542 Mitnick profile they either exploit weak passwords or enter through back doors in bureau/legal circles intruders are often called hackers but this is highly disliked by real hackers (such as myself) some intruders are driven by desire for knowledge, are hackers but not all are hackers, not all hackers intruders, today most are not many hackers use the term crackers to distance themselves from this exa [Raymond] "cracker" but this is also disliked by the real crackers cracker really term for those breaking copy protect systems [Levy] p373 then for discovering hidden information, exa Harris Atari [Levy] p318 most hackers consider intrusion acceptable so long no one is damaged by it free access so long as owner is not damaged by it [Levy] p119 resulting views of ownership, lock picking [Levy] p102 ability to use ones system is important for determining damage lending good if doesn't deny use, exa Dompier lend Altair [Levy] p211 no one damaged condition includes no unintentional damaging side effects see [Stoll] intruder in Bevatron, [Raymond] "scratch monkey" many people believe that most intruders are kids out for a joyride but actually most intrusion from insiders who have legitimate access but want to circumvent the access restrictions on their accounts phreaks are intruders who hack the telephone system [Raymond] "phreaking" this was big under hackers in 60s and 70s, today phone companies block this spies are intruders that enter with intent of extracting data most intruders don't care one bit for what data is there, entering counts for the most famous computer spying case, including the KGB, read [Stoll] crashers are intruders that try to damage the machines they break into crashers are electronic vandals most intruders are not crashers, have no interest in damage as crashing destroys ability to enter the crashed machine [CCC] also leads to strengthend security, intruders are main losers in this hackers are never crashers, only enter for hack value [Byte] 89-10p364 where should new hackers learn intrusion when it isn't possible any more because of loss for everyone crashers are hated, exa Atkinson execute them "anyone who can't find more interest use of comp must be serious loser" bureau are (rightly) against damage from crashing and make laws against it but these are badly aimed, (wrongly) forbid and punnish all intrusion hackers on search for information become victims of these laws as vandalism fault of social desintegration from same moral-less bureau hackers dislike these for what they have done that they in their laws also call intruders hackers adds to this dislike but see also [Cheswick] pXIII for justifying calling them hackers logic bombs are programs that deliberately do damage [Raymond] "logic bomb" are essentially code that does automated crashing consist (like explosive bombs) of a trigger and a charge the trigger tests for some specific event to arrive the charge does actual damage, crash, formats disks, delete/modify files this is first entry of a SW category called vandalware [Spafford2] p729 time bombs are logic bombs that wait until a specified time to go off [Raymond] "time bomb", [Lundell] 6 months or years or wait for copy generations to pass or amount of something to accumulate core wars [Lundell], [Raymond] "Core Wars", [Scientific] 8?-?p15 Core Wars are programs that try to destroy each other by logic bombing derives from game Darwin, written by Morris anec this is the father of RTM, writer of the Great Internet Worm similar type of game [PCW] 92-10p378 PCrobots usually as game, implemented on a simulated computer (MARS), not malicious but also done on real computers, with normal programs as victims anec core wars was one of the inspirations for virus writing [Lundell] anec sysadmin Domm, modified Doom with real processes as monsters dont kill that one called init, else you will be rebooting trojans are harmless looking programs [Raymond] "Trojan horse" [ct] 98-7p62 T-Online ID Trojan, [ct] 2002-15p128 spread of the trojans [iX] 93-10p110 SCO print system drivers as trojans that have an built in logic bomb executed as additional background activity exa MS-DOS cdir prints dir and clears files exa Unix password fishing programs rabbits, bacteria, fork bombs are forms of logic bombs that swamp system by making copies of their process [Raymond] "rabbit job" siphon off all of some sys resource, proc power, memory, PIDs, swap space they are called rabbits on sys where additional processes are spawned they are called bacteria on sys where an existing process is forked fork bombs are a form of bacteria, based on repeated Unix fork() calls [Garfinkel2] p255 code in C and sh, [Raymond] "fork bomb" worms are rabbits that reproduce ba making new processes on other systems [ct] 2003-4p18 SQLSlammer using some form of remote login, often an not intended one see networking security for them viruses [Lundell], [Raymond] "virus" [Byte] 93-5p137 stealth virus, [Byte] 96-11p167 virus detection [ct] 88-7p70, [ct] 91-4p328, [ct] 92-7p154 [PCW] 93-7p331 Dark Avenger, [PCW] 94-11p250 conference, [PCW] 95-12p211 are routines that insert themselves into other programs (infect them) when other programs sre run virus is activated again and infects further many are combined with a logic bomb, but this is not a necessary part they so convert normal programs into troyans by infecting them viruses can be written in any programming system that is powerfull enough to modify other files with executables of same system type in them mostly they are written in machine code, infect executable files including ability to hook into boot process or even go TSR but also shell scripts, but not DOS BAT files because insufficient power and macro viruses, use internal macro lang, with macros stored in docs exa Word [ct] 95-10p57, [PCW] 95-11p19, [PCW] 95-12p291 naming [Spafford2] p729, in case of Form from [Raymond] "Easter egg" for preventing getting infection all new code entering system must be clean get SW from reliable sources, scan if for known virus "fingerprints" with other words, practice safe sex [Raymond] "SEX (1)", like biolog vir for recovery from infection all files with code must be restored for this protect original/distribution disks with read protection anec Microsoft install programs writes registration to distribution disk lets viruses in [PCW] 95-11p22, bad, use copy of original for install is a case of bureau licensing behaviour damaging users anec in MFM disk days I had idea of track-number dependant read-only this would protect boot sector and C: partition (both contain code) but allow modifying the D: partition (contains only data, no code) Stuecheli/CSD nearly built it, later other commercial Nowri switch anec Mu total loss by Flip virus, no backup, luck with change PC tape didn't learn, still no backups, 3/2 years later an other big virus loss anec comic about computer termites implementing security you need to know what you want to prevent aim of security accident/bug protection vs preventing intentional attack Unix security was only intended accident protection, not against intruders this was result of first AT&T internal use as text processor also first hardware (PDP 7, PDP 11 before model 40) no kernal protect security needs kernal mode, none when kernal open, mechanisms bypassed later used in friendly university, programming, engineering environments not in cut-throught personal-gain-ueber-alles commercial environments vs Multics strict because for commercial environ, with antisocial behavior the existing Unix security was an afterthought stop program errors (protections), later intruders (passwords) but claim that Unix is inherently insecure is wrong it can be C1 to C2 level [Raymond] "Orange Book", [Raymond] "TCB (2)" anec A1 secure brick joke [DECUServe] 9?-?pDS-21 TCB updated in [ct] 96-8p64 common criteria for evaluating security B1 level workstations [iX] 96-5p150, but fails on reality [iX] 96-6p8 TCB [Uo] 95-7p108, [Uo] 95-8p64 present insecurity is installation dependant, is user desired Unix security mechanisms are not principially broken, just badly used if you want better security (B*) it has to be designed in, exa NT not just added later, else constant security holes [Garfinkel2] p243 same as bug free code requires designing so from beginning, not patching but same as you never find the last bug, never find last security hole computers by nature execute anything, security requires explicit checks gives a hole if programmer misses a check, no proof that all there exa Kompal field_leave call missing security by obscurity (quiet life but it fails earlier or later) vs well documented but safe system design (more scares but better over time) [Raymond] "security through obscurity", [Byte] 86-4p113 Morris+Thompson file ownership protections/permissions, restrict users access to others files Unix file protection scheme ugo-rwx user accounts, user names and user IDs also user groups, group names and group IDs Username generation methods, numbered vs from real name, hash collision anec e29 use f1, fn, l1-6 scheme to increase hash scatter 8 char limit in Unix is bad, requiring aliases for mail additions to system in time [Frisch] p25, but still insufficient flexible exa no file-by-file deletion protection, only all by dir writability but dir non-writability prevents making new files in that dir exa no selective file visibility in dir, only by non-read of entire exa allways one user and one group, better both either user or group or better still a unlimited amount of users and groups, ACLs exa mail directory and message owner/access VMS file protection scheme OGW:RWED D prevents unwanted deleting of files without making dir unalterable but it is unfriendly that RWE is standard for created dirs, not setable multiple user access rights for many users or groups use ACLs NT like Unix but also take ownership, change permissions [Byte] 96-5p43 Helios file protections RWXD, also VXYZ 4 sets of rights for each file in directories for each of they 4 inherit bits to access dir contents TOPS-10 and TOPS-20 FILDAE file deamon, when top protection bit set kernal calls user level daemon process, may use any formula to determine all access controls fail when moving a disk to an other computer the same also applies to backup tapes being read on others machines only encryption of data with a secret key is really secure when a disk is encrypted, key must be given as a "mount password" access controls also fail when removing an entire machine prevent moving by putting the system in a locked room, or lock to desk beware of entering via raised floors or second cielings restricting space usage, quotas problems with users chowning files to other users message sender as owner for quotas but no access, reciever for access as soon as mail read transfer it to reciever as owner process control, privileges restrict users executing dangerous commands Unix and VMS have in file protection also an exec bit some commands or programs using some system calls need special privileges user switching, group entering/leaving [Tanenbaum] p195 domain switching Unix root user to completely switch off security for special (admin) jobs having an root user is an serious missdesign, better an privileged group require membership of wheel (0) group [Raymond] "wheel bit" who can be root is defined in /etc/group, activate root via newgrp 0 every user has only 1 UID and password and preferences would allow admin to keep access to own files while doing admin also selective switch on/off without logout/in by selecting group would also need no special user ID/name for root no separate root account, shared password, shared preferences also ruid of user stays available for file owner and for loging VMS unlike Unix root has multiple different privileges for each different job diff ones are needed, every user has a set most powerfull is SETPRV, is allows its owner to add priv while working experience has shown that any priv can be used to obtain more priv the POSIX group is defining an privieges model for Unix change effective user ID with SUID bit in programs file protections SUID root allows selectively switching to root for special progr killing a SUID process by user starting it is impossible exa ping is not stoppable, cant fg an orphaned ping [Garfinkel2] p248 ping most likely SUID because ICMP socket privileg, VMS ping privileg to fix don't check EUID (root) for allowing fg/kill, but RUID (user) even better give all processes in /proc/ protections, like files rw for process mem read/write, exa for attaching debugger x for process kill, rm /proc/ should have effect as kill -9 xx of give SUID/SGID for library, not for process, exa ssh read hostkey but this requires the OS to protect part of an processes address range from the rest pf the program, would most likely add security holes possible SUID on a file on a disk leads to mount command being privileged this gets in way of users, angers admins, result is mount made SUID results in all security lost again, classic case of wrong granularity better ignore all SUIDs on user mounted disks, as by some newer Unixes or limit SUID to RUID of mounting user, unlimited when root mounts also use RUID of mounting user to allow unmounting by the same user that SUID is not allowed on shell scripts angers users because of replacing shell script content by user between exec and read better make shell recheck scripts owner and SUID bit if EUID<>RUID because of -i option to shell with SUID file, followed by hand commands better when no file, don't use SUID, shell reset EUID to RUID when -i of course users should only set SUID for scripts with a reliable shell because shell was specified in the original script this is possible of course shell binary must be non overwritable (and non deletable) any script with SUID bit set should not be overwritable overwriting with a new file only by delete/create, loses SUID bit SUID not principially broken [Garfinkel2], just often badly (miss-)used exa mail writer should nor SUID root, schould SGID mailboxes exa XF86 dumping /etc/shadow as config error when given it as config anec SUID was such a genial idea that AT&T had it patented [Garfinkel2] p246, [Salus] patent as hardware device user authentification once you have restricted access rights to authorised people you must give them a way to enter which proves they are not fakes login procedure usually requires entering account specific secret password bad passwords are the main security hole, chose good ones [Frisch] p102 but beware humans not good at memorizing, memory overload [Norman1] p64 this leads to people writing down password, limits their usefullness password aging to get potentially compromised passwords out of system increases chance that user will forget them, will write them down usefull would be account aging, disuser if long no use on Unix legitimate users can read and reverse encrypt /etc/passwd file this has lead to shadow password files, only root readable anec NeXT passwords not in /etc/passwd because in NI, but nidump shows prevent a modem dialin ending in someone elses abandonned login automatically log out a terminals processes on its DSR or DCD dropping anec IT due to ICS wall cabeling only 4 wires for RS-232 flow control more important, enabled exiting term emu without logout [ct] 2000-26p216 PAM pluggable authentification modules fail safe design, make users lose access when somethig goes wrong they will complain, intruders will not notify of entry [Tanenbaum] p188 also once security broken it will stay so until reinstall [Garfinkel2] p252 too much security can prevent desirable programs from running on Unix if something stops working try running it as root if that works it is definitly a protection collision error get in the way of legitimate users [Raymond] "fascist (1)", [Raymond] p171 crunchly cartoon, passwd misstype exa remembering password, so they are written down exa login in and out, so users leave terminals logged in use an screen saver, but that blocks terminal of others, admin kill login why no 2nd login from screen saver, login screen just special case exa dead admin password problem, also on home machine [Byte] 91-11p448 anec at funeral "did he ever mention the password" exa blocked expn or finger prevents finding valid mail receiver names exa ITS output spy program would be impossible exa ITS crawling bug hack would be impossible [Levy] p125 the crawling bug was not used for serious work but analog is used, exa Kompal start from PC with display on Macintosh exa NeXT WS dwrite loginwindow DefaultUser root impossible, frustrating anec the "Multics logout password" in [Raymond] "Multics" is a myth this according to Mail from Tom Van Vleck, one of the Multics designers make false alarms, too many of them will lead to ignoring important ones security systems that get in way too much or are percieved as unneccessary lead to users circumventing them, digging holes into them the result less secure than if you had done less the user tolerance limit for them low, upper case or even num in passwd users try to deliberately break in, make damage as side effect exa SAIL private option attracted break in, scan/break progr [Levy] p143 anec Multics "lots of crashers" [Levy] p125 vs ITS seldom used Kill System according to Tom Van Vleck (one of the Multics designers) this statment in [Levy] simply echoes the opinion of one Tom Knight system admin security styles free vs fascist [Frisch] p3 security admin attitudes Cliff Stoll [Stoll] vs Tsutomu Shimomura anec takedown.org in DNS hacked to takendown educate users on advantages (for everyone incl them) of not sabotaging vs security measures that get in way and fail and alienated users strong security is like a police state, it hurts, is inefficient compare life style of good society vs crime infested, what is safer note that the only absolutly safe system in one that is switched off is so with all OSes, not just with Unix as claim in [Garfinkel2] p244 anec comp in bunker, filter power, no comms, armed guard, still not 100% anec Spafford "only truly safe is switched off, in cement, lead walls and armed police, even then I still have doubts" anec Albin "some security problems have to be solved in the personel dept" ask yourself how secure your paper data is if you are thinking about login restrict, how accessible is your paper data comp makes access already less easy for those that don't know the system if you are thinking about elaborate backups, have you got paper backups think about all your filing cabinets being destroyed by water or fire --- Networks Connecting Computers lots of different types systems, sometimes multiple machines at large sites users want to use multiple of them, inclusive off site ones timesharing makes linking in remote users possible [Hauben] "arpa2usenet" already in early days micros were used as terminals to timesharing systems but micros are also computers themselves, increases this problem with timesharing user IO is only a stream of bytes from/to a terminal also multiple users at the same time are possible therefore connect any users terminal, including those from off site easiest way is to log into different systems via modem but problem of slow switching between systems (logout, redial, login) and not at all possible if direct wired to one system solution is to log into one machine and go to the other via the first for machines at same site connect them via direct wire for fast switching for longer distances inter machine connect via the phone system and modems needs on local machine a program that connects terminal out line, exa cu, tip for controlling this program use an escape character, exa ^[ the programs cu/tip transport data in both direct, unpredictable sequence so it must use select() or if available coroutines or threads anec how does user find outward bound connection port, exa Sulkermit phone line connections require dialing a phone number for outgoing modem first separate autodialers, exa Bell 801 UUCP autodialer configuration [Reilly] p65 for connecting special RS 366 standard [Reilly] p70 later autodialing built into modem exa Hayes [ctk] 88-2p199 Hayes, [PCW] 92-12p368 Hayes Interview before connection established use RS-232 to transfer modem commands after connection use RS-232 for user data to remote system for returning to local esc sequence vs control lines vs break vs pauses out of band communication, esc seq problem, exa transmit seq descript modems are becoming general purpose telephone interfaces mixed phone and data [Byte] 95-6p226, [Byte] 96-2p75 give up ISDB, voice/data integrat, DSVD [PCW] 95-3p525 Intel DSVD DVSD modem example [Byte] 96-2p78 extern Mic/Speaker, better Phone computer telephony integration (CTI) [Byte] 89-12p309 voice document delivery, [Byte] 95-9p201, [Byte] 95-11p48IS5, [Byte] 97-2p85, [ct] 95-4p322 for accessing modem from SW [Byte] 93-1p107 TAPI, [Byte] 94-7p81 can save a small amount of time in call setup, only for specialists caller ID [Byte] 95-1p149 also usable as answerphone, exa ZyXEL with Linux mgetty [iX] 94-2p168 anec Draper intended his phoneboard this way in 1970s [Levy] p270 Hayes also intended as universal, RS-232 only fabrication convenience working on multiple computers leads to scattered files, desire to transfer them using tape drives for this is slow (transport time) having a direct line between machines enables file transfer between them also used very often on PCs connected as terminals to timesharing systems manual file transfer first use type or create commands on remote system command line and record or send commands in local machines comms program later avoid mutilating files (esp binary) in transfer use Kermit protocol also capable of detecting and correcting transmission errors similar system X-Modem [Byte] 89-2p163, [Byte] 89-3p155, later Y and Z [ct] 95-11p302 enhanced Y-Modem all these programs run in client (local) and server (remote) mode this is typical for all network programs, client on local, server remote automatic background file transfer exa Unix UUCP (1977) [Reilly], [Byte] 89-5p245 avoid manual login, automatical login and file transfer queue transfer requests and run them in the background (cron+uucico) also automatic program execution with uux, used for rmail and NetNews on remote system login shell uucico calls uuxqt for sending 8 bit files over 7 bit communications lines convert 1 byte into 2 HEX ASCIIs or 3 bytes into 4 uuencoded ASCIIs Arpanet using dial up lines with modems for computer data is slow [Roberts] p145, [Hauben] "arpa2usenet" Roberts because telephone switches and lines were designed for 300..3500Hz speech the acoustic range of the phone network limits modem speed in those days with analog circuits max 300bit/s still today with DSPs max 30kbit/s this makes transfering files or even just long output slow add to this dial up delay at begin of connection or after long breaks unreliable [Roberts] p145 because of long distance line distortion, disturbances exa father terminal connection Houston-Winterthur lead to IF instalking a remote Ethernet bridge inefficient on line usage only one connection per modem set only one user with one program communicating over it for multiple users connection multiple modems are needed even if only one users program is actually transmitting at a time computer communications uses bursts of data with breaks in between one line could be shared for multiple connections problem mainly for remote login, less for batch transfer, like Kermit/UUCP inflexible one modem line connects only 2 machines, mult machines require mult lines expensive multiple modems increase hardware costs, line installation costs multiple lines cost phone charge, even if not transmitting usable data payment by user for time of connection not for packets transmitted leads to special computer networks with packet switching better hardware than modems to do this the existing phone lines had to be user better, no modems phones originally used 1 line per call, transfered 300..3500Hz (baseband) then to save lines analog modulated one call per modulator multiple modulators per line (broadband), 4kHz band per modulator radio or TV station tuning is also broadband, but with larger bands then digital one call per timeslice (1/8000s = 125us) multiple samples interleaved (time division multiplexing, TDM) fast, as TDM uses 8000samples/s at each 8bit this gives 64kbit/s per call, "line", this is known as DS0 data rate DS0 is a lot faster than the 300bit/s that 1960s modems did still today DS0 is double the speed of a 30kbit/s modem in the US only 56k can be used for computing (not full 64k as in Europe) this is because robbed bits for status information [Byte] 96-9p134 but even at 56k digital lines are a lot faster than modems reliable, such digital lines much more reliable than modems because no need to recreate bits from distorted analog signals also redundant connections, rerouting, fault toler layout [Byte] 91-8p205 anec some claim that surviving nuclear war was one design aim of Arpanet better software than cu/uucp physical layer on top of the line hardware multiple layers of software are added data link layer data is sent as packets, like in kermit or xmodem transmissions on sender packets are generated, CRCs calculated on reciever packets are checked for errors, thrown away if faulty retransmit in case of error in packet, reliable connections network layer to prevent having to rent a line to each site one wants to connect to each site only connects to a few of its neighbours data to other sites as relayed via intermediate sites, called routing data packets are routed, passed allong until they are at the delivery site send data from any machine to any other with only one line, flexible for routing and connecting hosts Internet Message Processors (IMP) later renamed as Packet Switching Nodes (PSN), were PDP 11s they do all the low level stuff, so less SW has to be ported onto hosts also ensures constant running of routing SW, else all comms interrupted to connect a computer to its local IMP/PSN use the 1822 interface the Arpanet had only one form of hardware, so no HW indep addressing all Arpanet hosts are adressed as IMP/PSN:interface transport layer data from many machines/users on the same line make efficient use, low cost also lines are rented for fixed charge, pauses cost nothing (other user) efficient line usage, multiplexing calls over one line switched lines for telephone calls, every call own 64k line each call gets a stream of 64kbit/s, each voice call uses this fully voice calls never use more than 64k, if no other calls line is wasted voice calls need 64k, never more than fixed call limit, no reduced rate as pro line ca 33% time speech used and on average 1/2 of lines in use gives average 16.66% utilisation, difficult to get better than that switched lines for computer data, every connection own 64k line data communications have a bursty traffic pattern when transmission single chars, get full 64k despite only few bytes large breaks between for user typing, server processing user digesting, no data is transmitted, the line is wasted result far less than 33% time used, ca 0.1..5%, still 1/2 of lines used result is average ca 0.06..2.5% utilisation, most wasted packet use for computer data, many connections over one 64k line first user can use as much bandwidth as line has if multiple users they most likely don't transmit at same time don't disturb each other, this is like timesharing on one CPU as each uses only 0.1..5% time, can be 10..500 users at 50% utilisation flexibility there exists no need for separate hardware for each connection no fixed limit on connections, only perform degradation when too many cheaper only one DS0 line is rented from phone company, not one per connection even though this is open for 24h the total costs are lower and that despite users getting more out of the system higher maximal throughput and more connections this even for voice [ct] 2001-16p154 VoIP Network Control Protocol (NCP) as Arpanet IMP/PSNs already do error detection and correction only for multiplexing connections, allows multiple connections between the same two machines, more flexibility user layer each user program requires its own protocol, client and server (deamon) do one thing right, for other thing own protocol, common sense design first programs were Telnet and FTP [Hauben] "untold_arpa" remote login, Telnet (TErminaL NETwork) [Krol] p45 first aim of Arpanet was efficient remote login, this was first usage on client telnet program, comparable with cu/tip program for using a modem for input (user-net) and output (net-user) use 2 coroutines/threads on server telnetd daemon process to accept incoming connections telnetd spawns a shell as subprocess, using a pseudoterminal also for input (net-shell) and output (shell-net) 2 coroutines/threads the telnet protocol only implements a TTY/RS-232 like data stream no more intelligence, no abstraction for terminal type independant control for this reason ITS had a special more intelligent supdup login protocol later telnet was mutilated, feature to pass env vars, exa TERM, DISPLAY file transfer, FTP (File Transfer Protocol) [Krol] p59 as soon as people worked on remote machines they want to send and get files on client ftp program, uses a reduced telnet login for sending commands on server ftpd deamon, small telnet login for command not use Telnet and then start a server like in Kermit or UUCP because it was simpler for ftp client to directly connect to ftpd socket separate NCP/TCP control and data connections for each file transfered this avoids the need for Kermit/UUCP style framing between cli and serv would be waste of bandwidth and code as streaming already in NCP/TCP problems with file names on different machines [Krol] p82 problem with machine load, leads to FSP [iX] 93-12p94, [iX] 94-6p158 anec ftp server faillure codes copied in NNTP and HTTP serv [Gundavaram] p283 Computer Communications having multiple users on a machine leads to them wanting to communicate so long all terminals are in one room the users can use normal speech as soon as terminals got scattered the need communications technology to use telephones for this users would have to know all terminals phone lines on the other side the terminals and their connections are known tools were invented for users to communicate to each other via the machine when networks users wanted the same facilities with users on other machines as soon as this happend computers became a new communications medium this usage of computer networks quickly overtook login and file transfer electronic mail allows users to send messages to others messages are transfered immediately, but read at readers choice of time usually recieved mails are stored in a structured file called a folder exa VMS in file [user]mail.mai, Unix /usr/spool/mail/user and ~/.mail requires file to be split into messages, exa Unix mail uses the From lines requires all other lines beginning with From to be modified to >From adding the >s should be job of delivery program (/bin/mail -d) but sendmail has an -E flag for doing this [Hunt] p233 should only be used for local delivery, some times missconfigured >From in messages to other sys from missconfiguring [Garfinkel2] p79 folders were used for historical reasons, when only one dir per user they are not neccessary since the invention of subdirectories better mails into a dir, for list mails use ls, for reading use more/less send store in others dir sender, filename=mailnr+sender+subject Linux POP server has code for using such a directory system incompatible folder systems are annoying, 2 seperate systems, subdir/folder anec Albin thinks folders good, but reason is better folder than dir tool for sending back an answer use reply command, send with automatic address subject line is modified, add Re: at front for easy recognition usually one program for sending and reading mails, complex better 2 separate, for sending replys read should start send with options anec in Unix originally /bin/mail, man binmail calls it "powerfull" users on multiple systems had mail on each, needed telnet login to use it desire to have only one mailbox to have to look in also desire to send mail to users on other systems without logging in users with accounts on mult diff types of systems also want mail exchange all interconnected mail systems make biggest computer network in world [Comer1] inside cover picture TCP/IP vs mail connectivity Arpanet transfer mails from one mail system to other with MTP/SMTP [Krol] [iX] 96-8p156 writing SMTP ba hand with telnet/nc originally via FTP, like in UUCP [Costales] pXXVIII as address format the now famous username@machine format was invented this later became the TCP/IP naming standard, copied for finger/talk SMTP mail is only guaranteed to transfer as 7 bit, may drop 8th bit various solutions, uuencode, base64, quoted printable, ignore quoted printable is often not decoded [PCW] 96-6p222 undecoded it is worse to read than 8bit truncated to 7bit anec Arpanet RFC-822 mail format comes from BBN Tenex mail [Salus] p105 Unix mail orig UUCP background copy and uux rmail to transfer [Salus] p105 leads to address format machine!account hopping through mult machines with machine1!machine2!...!machinen!account gives UUCPnet [Hauben] UUCPnet small mans Arpanet, [Raymond] "UUCPNET" was first only mail [Salus] p125 anec UUCPnet newer than Arpanet but spread because low cost, Unix small batch oriented transfer no problems with slow modems and phone lines as only copy, execute, mail and conferences, no login, talk or chat anec UUCPnet first connect at Berkeley, return address remarks [Hauben] anec CWRU VAX in Ohio via UUCPnet to Berkeley, Arpanet to Columbia (NY) and finally CCnet to DEC-20 in room next door to VAX [Hauben] later when Unix systems directly connected to TCP/IP networks for sending/recieving SMTP Allman added sendmail [Salus] p161 which rightly converted From: to an additional Unix style From line but old Unix mailers only used From, left From: and Reply-To: unused result Reply-To: convention not followed until new mailers written which lead to the missaimed complaint in [Garfinkel2] p77 anec Unix sendmail first saves input to disk, then sends OK to client can lead to mails being duplicat, exa Apple desaster [Garfinkel2] p85 two-phase update impossible because SMTP protocol doesn't know how UUCP today usually small UUCPnets around an Internet gateway host UUCP is still easier and less work to setup then full IP+SMTP+POP my second email connection was via UUCP as infinity!neil@nice.ethz.ch UUCP for PCs [ct] 93-11p160 Internet for DOS PDP-11 and VAX mail program does a hidden login as user DECnet MAIL-11 addresses here are machine::account also over X.25 with PSI%number::account also multiple hops, by using address with multiple ::s in them can also be gated for small DECnets around an Internet host my first email connection was "vmsmail::ezinfo::PSI%if::itww03"@bernina then I read it from a PC over X, DECterm and VAX mail PCs first standalone BBSes, PCs as modem login server, one login then mult then between them a dialup network similar to UUCPnet called FidoNet [ct] 96-3p280 basic protocol is mail, file transfer via FReq [Raymond] "File Request" analog to UUCP, DECnet also Fidonet mail can be gatewayed, exa Roli mail for interconnected networks have multiple formats, gateway machines [Byte] 97-2p66 proprietary e-mail is obsolete, SMTP is the standard on these machines network sorting, message and address transformation exa UUCPnet and SMTP uucp-name!user@gate vs gate!user%ip-name in Unix sendmail used for this, flexible, but scary looking config file is mail address expert sys, but admins are not experts [Garfinkel2] p74 anec in LUGS configuring sendmail is known as "Sand mahlen" [Garfinkel2] p64 claims address transforming is not needed any more is wrong, there still exist many other nets connected to SMTP mail most are connected via Unix bases gateways, because Unix has sendmail both of my first 2 unfriendly mail addresses hidden by sendmail aliases both appeared to other Internet users as Neil.Franklin@nice.ethz.ch my present real IP mail connection is still reachable by this alias sendmail allows mapping of pseudodomains, exa *@*..lugs.ch mail allows sending to lists of users specify multiple user names which recieve each a copy of the message mail also allows sending to aliases, these are nicknames these can be used to hide long addresses or name lists they allow anyone-interested-in-this names, called thematic mailing lists they should be named with plural forms, exa users (not user) mailing lists are easy to set up, became an important communications medium PAML list of public accessible m l http://www.neosoft.com/internet/paml automatic list managment in perl [iX] 96-6p148 anec [Garfinkel2] was based on filtering such a list, even its name but large mailing lists can create load problems exa Arpanet sf-lovers mail list "large load experiment" [Hauben] "intro" vs Usenet news superiour means of dealing with growing [Hauben] "arte" exa m l are torture tests for mail software [Raymond] "mailing list" exa MIT sf-lovers, mail digest software to reduce load [Garfinkel2] p98 [PCW] 96-2p240 digest, batches multiple messages to one also to limit access by senders, reduce admin work to modi list lead to programs such as listserv, majordomo [Liu] from these -owner and -request conventions for adding or deleting an username send message to list-request for other special messages (exa errors from mailer SW) to list-owner also list (and alias) expansion can cause mail loops [Byte] 96-4p86 this is analog to file system symbolic links pointing to themselves once in place email for many purposes became the best communications medium even for communications about other things than computers compare posted tape vs post letter vs fax vs email vs answer vs phone [Hauben] "arpa2usenet" Arpanet users discover the use of email email effect communication style, between phone and letter [PCW] 95-3p502 flattens hierarchies, content over titles, democratic [iX] 96-10p90 todays phone is becoming unusable with answermachine and voicemail hell anec voicemail name derived from from email, by sales bureau difference is that email from users because is efficient, powerfull vs voicemail from bureau because it cuts costs, bad, turn away some hackers don't even use phone at all, exa Van Jacobson [RFC] 1144 email became the largest use of network bandwidth, now passed by web that is why email become only runaway LAN (an net in general) success anec some firms are trying to restrict email because it can be rumor mill this is an example of discovering use of a medium after it exists not envisioning an use and then designing a medium, as theorists insist anec Internet is supposed to reduce communication, make lonely but mail is communication, unlike TV which is passive consumation anec normal postal mail is often called snail mail, sometimes literally [PCW] 93-12p658 so slow, it has been overtaken by the local wildlife mail got damaged in a pillar box by snails, according to label on it dial up mail sys are often difficult to set up because of modems and bureau [PCW] 93-5p224 setup, [PCW] 93-6p224 connect result of this many people still prefer FAX, despite its lack of power [Byte] 91-2p301 FAX facts, Bains recording telegraph, G3 [ct] 95-4p398, [ct] 95-7p256, [PCW] 94-11p404, [PCW] 95-5p434 is standardised, no setup, established network, easy use of FAX modem also saves needing account on mailbox computer and making 2 calls mail extended FAX protocol would also be easy [Byte] 90-10p34 letter but even mail-less FAX from PCs big trouble [PCW] 96-4p45 and 96-6p45 direct PC-to-PC email with UUCP could be a simple as FAX [PCW] 96-3p34 but it is most likely too late to establish it as a public standard the Internet is too wide spread and has too many other usefull services also direct UUCP and mailFAX require 24h run comp, like FAX or FAX modems mail server based systems are interesting because of the server but then server setup/renting and POP costs can't be avoided any more with 24h running and some form of 24h line IP mail would be just as easy no server/account needed any more and no POP used at all this is after all the original mail on timesharing minis scenario anec new ZyXEL 8MByte buffer for capturing FAX/speech when computer off I suppose this could be extended to catch UUCP or IP+SMTP mails broadcast/write/talk RSX/VMS broadcasts allow users to send single line messages to other terminal Unix write/talk are multiline, also allow users to engage in typed conversat write works by writing to other users /dev/tty, shows both users lines mix talk uses 2 separate windows, exchanges data via an daemon, talkd on networks only talk, also uses username@machine addressformat from mail all fail with users logged in via X, no /dev/tty, would need a pop up use other users login name as parameter, ev also terminal (when mult logins) other user gets message or an invitation to join (issue an own write/talk) invitations are displayed immediately anec PDP 11/RSX 11 broadcast into editor damages text, tech broadcast war suppress with RSX/VMS set nobroadcast command anec Unix write invitation in vi only wrecks screen image, use redraw suppress with mesg n, deletes g:w bit on users /dev/tty that is why wall can send to anyone when run by root, exa for shutdown difference to mail is realtime conversation instead of block transfer of data who/finger allows users to find out about other users, who is there, info about them who allways lists the users on the system, with their terminals finger without parameter als lists who is logged in to the machine similar to who, but with more information finger with a user name as parameter lists info about that user login, username, home dir, shell (from passwd), login time (from lastlog?) and the descriptive files .project and .plan in that users home dir .project contains a descriptive line of what the user is doing now .plan contains descriptive data like phone number, pmail/email address on networks remote finger with username@machine, address format from mail is often used today for distributing communiques [Krol] and PGP keys anec used at australian university to see the state of the coke machine but finger is slowly getting superseeded by Web home pages given this relationship, why is there no finger:* URL in Web browsers conferences [Engelbart] p212 NLS conferences, by email and journalling [Byte] 83-5p104 movable conferences, [Byte] 85-12p169 conference systems [Byte] 88-12p247 groupware NLS, [Byte] 93-3p113 collaborative computing [PCW] 93-9p390 Bender digital dailies [Scientific] 91-7p76 Negroponte broadcatch allow users to publish messages to anyone interested in them messages are sent to conference name that tells of its contents conference vs mail is same difference as chat vs talk readers declare subjects of interest by selecting conferences exa NetNews/Usenet [Raymond] "Usenet", [Byte] 96-5p77 NNTP, separate servers, no big copy news groups are stored as directories, messages as files messages are sent to news group name that tells of its contents readers declare subjects of interest by selecting news groups some groups are moderated, messages go to moderator, are then released news was first mainly local, non local in net.* groups, later renaming in the beginning news used the UUCPnet mail network [Salus] p110 later converted to use NNTP protocol over TCP/IP NetNews is name of the technology, Usenet is the connected news network similar in difference of meanings of TCP/IP and Internet big problems with signal/noise ratio of unmoderated conferences to get rid of junk news use kill files and news filters [Byte] 91-5p177 Information Lens, [PCW] 94-1p477 BeyondMail [PCW] 94-10p451 Netnews crap vs email and research data use magazines as news filters enews based on email mailing lists [Byte] 93-9p108 but even profess newscasters don't yet understand that this their job exa paper/radio/TV news full of irrelevant junk news ask user group friends who read news for the kick of it civilised user bahaviour, netiquette [iX] 96-1p3 n for email anec [RFC] 1140 remark 29 sys admin claim NNTP holes more value than data anec David death of net predicted because of flood of CIS/AOL/MSN users but more computer power, faster lines, better filter systems will allow user to see only those news items of interest same death of net by commercialising [iX] 94-9p3, will not happen anec I switched from UUCP to SLIP because I thought News would be easier client reads News over SLIP, no setup of an own news server needed but I found out since then that real reason for no News is that I have not got big enough interest to sift through rubbish in the meantime while writing this text, I have got onto Usnet Usenet give you unlimited possiblity to find yet annother discussion it is as such an infinite time sink, stops all other activities resulting also in large pause in editing this text, near standstill today reducing Usenet usage, to actually do own projects enormous load on communications infrastructure alternative to downloading news via wire use radio/satellite broadcast [Byte] 95-7p242 Radio Free Usenet, [Byte] 97-11p58 Internet satellites [Byte] 98-3p40IS11 webcasting [ct] 97-7p26 NetNews via satellite, uncensored [ct] 97-9p224 DirecPC satellite Internet, unidirection, 400k, expensive [ct] 97-11p134 direct satellite communications [iX] 95-3p148 VSAT data distribution 1 TV channel has 5.5MHz bandwidth, with only 2Mbit/s gives 17 Gbyte/day enough to retransmit 14 days of each 50MByte netnews every hour existing sys for broadcasting data teletext, reciev/save/filter/process [ct] 93-9p54 chanel videodat, [PCW] 93-9p392 [PCW] 95-3p462 ICL PC/TV teletext, [PCW] 96-9p24 teletext usenet/web exa dolphins.ch NetNews satellite reciever or store individual news groups on different servers [Musciano] p172 can be accessed by Web browser with nntp:* URL [Musciano] p173 chat [ct] 98-6p188 IRC, [ct] 98-10p98 IRC effects on writing style [ct] 98-22p92 ICQ allows multiple users to engage in typed conversations [PCW] 95-11p310 on networks internet relay chat (IRC), Unix has no local only system use a channel name, people on the same channel see each other typing a user can monitor multiple channels at same time for this lines have the channel name and senders (nick-)name added to type select one channel for the typing to be sent to when a user enters a channel the system sends an announcement message chat systems are also often content free [PCW] 93-6p223 chat like CB radio reason for joining is also the same, experience of talking with the world difference to news is realtime conversation instead of block transfer of data tends to be even worse time sink than Usenet, so I avoid it netgames [ct] 98-5p146 network games first multiple terminals log into one game, usually Adventure, gives MUDs today also action games with synchronised player space, auch as Doom, Quake IRC vs MUD "stupid puzzles" vs "nothing here" web discussions web vs Usenet, good (rating) vs bad (no offline, no free client choice) communications together with the paperless office leads to idea of teleworking, telecommuting, also known as virtual office or even virtual firm [Zopfi] p169, [Byte] 91-5p121 is it time to telecommute, [Byte] 91-1p207 [Byte] 92-7p370 information age warriors, battlespace data on demand [Byte] 95-3p50 new ways to learn, [Byte] 95-6p50 Xerox sales case example [ct] 94-8p46, [ct] 96-9p108 teleworking drawbacks [ct] 97-11p70 teleworking lack of criticism in promoters [ct] 97-13p150 teleworking [ct] 97-15p119 mediapaedagogy when pupils beat teachers and buero [ct] 98-3p68 telelearning, [ct] 98-16p146 computers at school [ct] 2001-14p168 schools an new media, got hardware, lacking concepts [PCW] 93-11p497, [PCW] 94-7p426 virtual institute [PCW] 96-5p198 virtual office, [PCW] 96-9p51 teleworking win-win situation [PCW] 96-9p192 telelearning saves travel time and waste, but problems with social requirements hackers have no problems with it, but typical 9 to 5 workers may have so problems with employers mistrusting, old mental models [PCW] 96-9p51 problems with boss seeing no excuse for you not working continuosly "work when you want" become "work when work wants", no excuse, 24h terror problems with lack of social contacts, claimed to be solved with tw centres shared office (docking station) loses personality of one workplace it is not possible to decorate to make comfortable, gains go lost workplace becomes as impersonal as a hotel room, lowers motivation problems with spouses wanting to rid of them for some time, prison of home same also online education [ct] 96-10p60 exa East Palo Alto comunity net, all parts of society many people hate shool learning, bureau stuffing what they want into you but same people love Internet learning, going out to get what they want conventional libraries only have a few books, and they may be on lend internet offers loads of information, as many copies as users want even teledemocracy [PCW] 94-8p239, but politicians will want to prevent it swamping with data, drowning in data, junk data, data overload [Byte] 87-12p291 information vs data, [Byte] 91-5p153 data swamp [Byte] 91-5p388 human data filters, [Byte] 92-3p364 infoglut at fingertips [Byte] 92-6p245 making knowledge pay [Byte] 95-2p10 editorial information overload or underload important informat lost in data swamp, exa [Bush] p237 Mendels genetics Terminal Servers connect terminals directly to network and allways use telnet [Bell] p21 leads to terminal interface processors, TIPs [Roberts] p151 are specialised IMPs with many terminal ports instead of host connection today TIPs are mainly known under the name terminal servers is a missnomer, TIPs are clients, the timesharing sys are login servers they are also sometimes called terminal concentrators [Bell] p21 Encore are prefered over direct connections to a timesharing system [Bell] p21 no dependence on local host (crashes), no capacity waste on local, faster more flexible login, multiple machines without going through a local one no local system needed, some sites on Arpanet had only TIPs even when using only one machine they are advantageous for multiple logins return to terminal server with break signal, then make 2nd connection later return with break an resume 1st connection this gives a lot easier task switching than with job control unlike job control multiple logins as different users possible and also multplt logins to different machines anec terminal servers were used exclusively for accesses to VAXen at TWI, IT all my earlier VAX/VMS mini comp experience like this with a VT or VT emu DEC LAT protocol for term servers (stream, direct Ether addr, no routable) low overhead, broadcasted service names, rel load indicator for cluster terminal servers require refreshing terminal display after switching session terminals with multiple display states, require no refresh, exa VT 400 some terminal servers can automatically trigger switching with SSU Ethernet terminals are terminals with a 1 port terminal server built in Igel Etherminal2C is a diskless 286 PC with DOS/TermEmu/telnet in ROM [Byte] 93-8p47 ad, [iX] 94-1p56, [Uo] 93-11p60 as with Ethernet built in no RS-232 speed limits, fast drawing same as SCO and Linux console switchable session, fast without refresh multi logins with separate display state, no SSU needed as a single unit why not also login switching like terminal servers on direct RS-232 ports PC Unix system consoles often have login switching in their terminal driver exa SCO and Linux console appears as multiple devices /dev/tty[1..8] switchable session displaying with Ctrl-Alt-Fn also X users also have use multiple shells inside XTerm windows for this run a telnet client on every port, without login users would do multiple logins onto the machine(s) via telnetd better even would be RS-232 driver process with integrated telnet client Workstations early computers stood still while user entered/edited progr at the console batch systems abollished this as costly time waste, but lost interactivity interactive systems tried to reduce costs with cheaper hardware with timesharing systems interactivity is cheaper but reduced as trying to simulate simultanity is never a 100% success competitive timesharing inefficient, inhibits complex displays [Clark] p358 in timeharing 1 fast machine with many slow users but it is only fast enough when user pecks at a TTY [Lampson] p295 TTY slows user to 1/100..1000 speed, allows 100..1000 users on a system existing sys too slow, with better interface comp is just enough for 1 user because multitasking OSes and programs are a lot bigger, heavier and slower task switch, process addr spaces, memory manag, swap/paging, resource track lead to complex, bloated OSes on timesharing systems system calls and drivers instead of direct instructions and hardware access exa using a system call to end a program vs return to monitor program also the user programs that call on these services become bloated terminals or even worse teletypes lose diversity of user IO non expandble set of IO devices, connection limited to a slow byte stream UI is reduced to a command line interpreter even on machines with cursor addressable terminals only a few programs (usually editors) made use of their features user input speed is a big problem, a TTY style CLI is too slow single keystroke commands are faster, but require see-select-do SW processor terminals partially solved this problem but at price of difficult and work intensive progr (2 prog, CPU and term) users wanted single user flexibility and performance Pournelles law, "one user, one CPU", later "at least one CPU" "no one wants to share a processor, not even with themselves" anec Sun called it's first machine personal computer [Salus] p200 but w multi user facil (shar disks and print) [Thacker] p281, [Lampson] p295 networks for remote login, file transfer and remote printing enabled this workstations are single user systems networked by a LAN to servers net is central to operation [Bell] p41 graphic anec Sun "the network is the computer" [Byte] 89-2p240 this is often claimed to be from Scott McNealy, but is from Bill Joy many small machines are not much more expensive than one big timeshared one exa LINC in 1962 [Clark] p360, Atex in 1968 [Bell] p6, proc term are computer multiple but smaller processors, multiple but smaller memories can't match peak performance of timesharing, but predictable [Thacker] p276 locality and flexibility count, longer run time vs lower cost and no wait same amount of user IO (one set per user) but less complex because user near proc, can be like interactive system IO no need for RS-232 lines or esc sequence driven terminal memory editor no organisational costs (task switching, protection) timesharing one-users-crash-kills-all problem solved by no multi users no need for complex and hindering protection stuff (processes, security) but in VMS and Unix workstations this remains because comfort of timeshar having the ability for one user to run multiple jobs, switching processor terminals became real computers, workstations anec WS easy to make, lots of incompat machine, YAWS [Salus] p199, [Libes1] for easy working scattered over multiple machines Berkley "r" commands remote login (rlogin) unlike telnet allways assume 8bit channel, no feature negotiation other system is assumend Unix, pass part of users environment no passwords, authentification via IP address and trusting clients username remote shell (rsh) like rlogin, but don't start login shell, only one command then exit multiplexes servers stdout and stderr, so they can be client-redirected while rlogin is used for actual login sessions rsh is used for single ls, cp, mv, rm commands remote copy (rcp) uses rsh server to start an second rcp (with -p option) as command together with rsh this replaces ftp, but without an own prompt/shell exa Xerox Alto WS (1972) [Thacker] p267, [PCW] 90-3p146 Xerox 6085 small single user machine for document process Alto I 18'000, Alto II $12'000 design influenced by timesharing, Arpanet and NLS [Lampson] p293 was the first machine with a LAN, Ethernet (1974) this was intended right from beginning, part of Alto design, implem later for its time extremely advanced but potential ignored [Raymond] "XEROX PARC" not wide spread but very influentional on later machines Alto+Mesa leads to Wirth Lilith+Modula Ceres+Oberon [Byte] 93-5p111, [iX] 94-9p138 and also the VAX WS and Unix WS Alto+Interlisp leads to the Lisp Machines later Alto+Mesa commercialised as the Star+Cedar workstation Star+Cedar lead to Apple Macintosh, Windows, Amiga, Atari ST, NeXT exa Sun WS [Salus] p199, [Libes1] based on cheap but powerfull microproc (orig 68000..20, later SPARC) with 1 large graphics terminal (orig 1024x800, later 1152x900) built in and with optional Ethernet network [Salus] p200 anec Sun from SUN, Stanford University Network board [Libes1][Salus p199] but Sun likes to suppress this, conceal University beginnings [Barry] p57 anec Sun used SPARC from Berkeley RISC, not Stanfords own MIPS used by SGI exa PCs to reduce HW costs share networked disk drives and printers difference between networked personal computers and workstations was originally history of development and intentions of users today PCs with nets and timesharing OSes are becoming workstations some say today workstations are simply expensive PCs in time both will merge [Bell] p7, personal workstations [Byte] 89-2p229 what is better for Unix, WS hardware or high end PC [Uo] 93-11p78 unlike with real workstations networks were only added to PCs later under MS-DOS and Windows network requires TSRs, many compatibility problems read only server directories give problems because of programs that assume all disks to be writable, requires special network versions anec Windows install programs that try to write to d:\windows multiple users .ini files, can not be in program directories the lack of a home directory mechanism becomes even worse here Local Area Networks [Byte] 89-10ISEp195 which LAN, [Byte] 93-3p123 high speed LANs [ct] 97-1p254 network basics, cables, pinouts, protocols, devices [ct] 97-16p146 orienting oneself in network alternatives [ct] 98-3p72 small LANs for home/office, [ct] 98-20p222 protocol analysis [ct] 99-1p156 optical networks, [ct] 99-3p160 network analysis many machines (timesharing, terminalservers, WS) on site lots of local traffic use a short distance, high capacity network to connect them this is a Local Area Network (LAN) Ethernet [Byte] 84-12p131 evolution of standard Ethernet, other nets, spec, market [Byte] 91-1p315 history, [Byte] 91-7p20 ARCnet critic of 91-1 history article [Byte] 93-8p121 100MB, [Byte] 93-10p22 100MB [Byte] 94-9p113 LAN switching, [Byte] 95-1p229 10MB any cable [Byte] 95-5p113 isochronous Ethernet, IEEE 802.9a, 10base2+96ISDN+D+timing [Byte] 97-5p55 Gigabit Ethernet, [Byte] 97-10p63 Gigabit Ethernet [ct] 91-10p204 cables and 91-11p210 modulation methods for wire (or disk) [ct] 93-11 100M, [ct] 94-12p286 variants, [ct] 95-3p300 frame formats [ct] 95-4p278 100baseVG vs 100baseT vs switching, [ct] 97-9p194 100M Ethernet [ct] 97-14p232 Ethernet frame variants, [ct] 98-6p354 Ethernet switches [ct] 98-6p370 Ethernet performance myths and reality [ct] 98-7p188 100 Ethernet prevented of becoming fast [ct] 98-13p212 Gigabit Ethernet, [ct] 99-4p234 Ethernet autonegotiation [ct] 2000-3p242 Ether lengt limits, [ct] 2000-10p242 fiber networks [ct] 2000-14p208 Gigabit Ethernet also copper cabling, [ct] 2001-2p164 Gbit [ct] 2002-3p160 10Gbit Ethernet, [ct] 2002-18p2008 LAN switches [iX] 95-4p80 100MB LANs, [Uo] 94-6p85 false (non timesharing) Ethernet graph developed for connectiong the Xerox Alto workstations fast, small distance (max 5*500m), direct line access without IMPs all users data shares one cable, but still fast because timesharing effect protocol based on ALOHA radio packet net [Thacker] p274 unlike Arpanet unreliable delivery, requires control in upper SW layers small delays are possible, unplug/insert/plug 10base2 while in operation anec tapping Ethernet for Regulas PC with defect cable LAVC VAX crash but the Alto developers prefered a bus to a star [Thacker] p273 no token bus/ring because need of fall back relays [Thacker] p337 but is a bus, all nodes hear everything, card filters issues an interrupt only when machines card address but also broadcast and multicast modes every time interrupts every machine on net, even if not usable protocol problems with defect adapters jabbering anec this once flattened our LAVC VAX, PCs booting from VAX also anec defect repeater reboot also crash, IF man accidentally noticed LEDs cabling with standard CATV components [Thacker] p274 originally Xerox Alto 2.94 MBit, thick wire coax, 3base5 for attachment to coax use a tap and transciever [Thacker] p279 was also used at MIT for Lisp Machines and Berkeley, anec NeXT BSD hosts then DEC/Intel/Xerox (DIX) and IEEE 802.2 10 MBit, thick wire coax, 10base5 has added collision detection in the transciever, anec H4000 vs H4005 max 500m, for connect mult cables use repeaters, up to 4 allowed in path for multiple AUIs on one transciever local network interconnect, DELNI later thin wire RG-58 coax, 10base2, max 180m least external HW, good for labs or spontaneous nets, exa LUGS net specially simple for networks with only 2 nodes, as fast RS-232 but also 10base5 null transciever cable, 10baseT null repeater cable for connectiong office 10base2 to 10base5 backbone use multiport repeaters, exa DEMPR, Lantronix then unshielded twisted pair (UTP), RJ-45, 10baseT, max 110m good for offices, star shape like telephone cable, requires repeaters slowly 100baseVG and 100baseX fast Ethernet are appearing [Byte] 95-12p213 Alto used its multisequence processor for Ethernet PC NE2000 register accessed internal dual port RAM, like HD controller own microcode based processor, like HD, SCSI, also IRMA PC EWRK memory accessed dual port RAM, like video cards EWRK3 uses a single 256*4 ram chip, quad page mode access same multiplex trick as wide accel video but in opposite direction Token Ring [Byte] 89-1p363 data is routed from one node to the next until back at home sender enters data when token passes, check on it when back home then send free token for an other sender to use ring, round robin this guaranties a minimal data amount for every node, unlike Ethernet but imposes a large overhead, even if no data is flowing Ethernet has shown itsself to be faster in normal use TokenRing is deterministically safe and deterministically slow lost tokens must be regenerated by master, duplicate ones deleted if master fails halt and rechose new master, by node address for dead or unplugged node to not break ring use MAU, has bridge relays for finding out MAC network managment packets [Byte] 96-7p63 requires wiring to be a star, originally ICS shielded twisted pair (STP) but can use same UTP RJ-45 cable as twisted-pair Ethernet from IBM, entered the standards race late, only used on true blue sites LocalTalk standard Macintosh RS-423 port (ZSCC 8560 chip) used as slow LAN, 203400 similar circuits as in [mc] 86-7 p3 copy over coax cable on RS-232 FDDI ring [Byte] 89-7p269, [Byte] 93-4p197 FDDI II, [ct] 91-3p214 because of high cost often used for LAN backbones [Byte] 95-8p155 Connecting Up LANs, Internetworking [Byte] 89-1p253 PC LANs, modems, troubleshoot, OS/2, bridge/router/gate,NetBIOS [Byte] 89-6p157 LAN OS, [Byte] 89-7p148 LANs compared with OSI [Byte] 89-9p212LS TCP/IP, [Byte] 90-6p203, [Byte] 91-8p287 find LAN bottlenecks [Byte] 91-9p215 linking LANs, [Byte] 91-11p197 connectivity [Byte] 93-12p66 linking LANs, protocols, bandwidth, cultures, management [Byte] 94-9p125 digital remote access, frame relay, switched 56, ISDN [Byte] 95-6p91 breaking up your network [ct] 95-12p330 TCP/IP, [ct] 97-6 p380 IP routing [iX] 95-4p52 hubs, bridges, switches, routers LANs need to be connected to each other, exa via Arpanet user don't want to use different programs for LAN/Arpanet nor know from where to where which line technology runs, internetworking internetworking allows data to hop over any hardware [Byte] 90-6p256 Jason internetworks are all datagram based because LANs often have only unreliable data frame transmition and using end-end error control needed, save overhead of Arpanet-like link error ctrl as result a more complex transport protocol is need to ensure reliability layering of network protocols [Comer1], [Byte] 91-11p187 interoperability hardware to transmit blocks of bits diverse technologies for distance, speed and price compromises transport software to provide uniformity, HW independance, single protocol and to multiplex multiple data streams over the connection gateways at packet (bridges and routers), stream or user program level running on a general purpose server vs special gateway machine user programs run on the streams provided by the transport layer each user program requires its own protocol, client and server program all do one thing right, for other thing own protocol, common sense design IEEE 802 bridging on LANs with large amount of machines split net to reduce traffic bridges split net into subnets [Byte] 89-1p293, [Byte] 95-6p91 multiport bridges, extreme case own line for each node [Byte] 94-9p113 also remote bridges, can connect up many LANs to a worldwide net exa Sulzer Ethernet, LAT (non-routable) logins from Houston LAT only possible when service broadcasts arrive, go round entire world this is possible because every IEEE 802 node has its own unique address manufacturers get blocks of addresses, give each adapter its PROM problems with bridge delays standard bridges that do store and forward vs fast switches wormholing Ethernet switching hubs [Byte] 94-6p28, are multiport bridges anec PC as X terminal onto VAX on second net bridged in OW anec VAX LAVC lost packets on overloaded W-OW link, crashed once a month anec Anton LAD loss, 2 h MTBF dropped to 10 min after bridge changed went up to entire day when hooked up to different network segment problems with broadcasts require filtering bridges, routers, brouters PUP (packet universal protocol) [Lampson] p307 levels hardware, internetwork, byte stream, user programs user programs Arpanet derived, exa Telnet, FTP [Lampson] p307 and boot, diagnostic, WFS XNS (Xerox Networking System, Alto) derives from PUP, adds Courier remote procedure call (RPC) over byte streams [Lampson] p309 Cedar RPC over datagrams, 1ms null procedure call time DECnet [Bell] p16 only streams over internetwork, mainly used for login and remote execute small address space, 6 bit net and 10 bit machine fields has lead to DECnet Phase V, is DECnet services over OSI transport anec DEC Switzerland needed two net adresses, at demo machine not found TCP/IP [Comer1] based on RFC standards no missfeatures as example implementatio, evolved by use [Raymond] "TCP/IP" after the fact standardisation, robust like de facto std [Raymond] "RFC" but still formal and public for improving, the best of both worlds is general rule of good science, experiment then publish it internetwork datagrams use Internet Protocol (IP) for fitting long IP datagrams into short hardware frames use IP fragmentation, anec "ping bug" was actually defragmenter bug for converting IP to Ethernet addresses Address Resolution Protocol (ARP) for debugging tracing tools (ICMP/ping, UDP/traceroute) traceroute uses UDP 33434, not ICMP ECHO because else no TTL error messag anec traceroute * when traceroute motorbike run over by large FTP truck anec on the VAX TCP/IP package UCX ping is a privileged command recommended addresses for not-connected or only gated local nets do not use first net of each class, exa 192.1.1/2/3.0 [Byte] 95-11p203 are already in use, belong to BBN, they don't like this missuse [RFC] 1597 reserves 1 Class A, 16 Class B and 256 Class C for this 10.x.x.x, 172.[16..31].x.x, 192.168.[0..255].x anec 10.x.x.x was once the Arpanet [Comer] p69, free after dissolving dedication to memory of it in front of [Comer2] [RFC] 1627 critic because later connection problems [Byte] 95-8p106 the amount of conversion work depends on whether you use BOOTP/DHCP transport protocols for byte streams Transmission Control Protocol (TCP) unlike NCP TCP has full end-to-end error control no lower level error control, as transport needed, lower only waste introduced on Arpanet 1976 with IP for interconnect [Salus] p163 for single datagrams User Datagram Protocol (UDP) for low overhead or broadcasting delaying effect of correction like TCP [Byte] 94-9p132 graph exa DNS, routing info, time broadcast, Ethernet radio (RFE), RealAudio for lost packets the client and server are responsible, not OS and UDP exa DNS requires client retransmit request after timeout exa Realaudio dropout robustness by interleaving also multiple transmit, hamming code, for size ev compress direct IP is not used for such purposes, has only single proto field UDP has TCP-like port semantics (2 16 bit fields) for single datagrams also Reliable Datagram Protocol (RDP) because of lost packets with UDP, but not used by any major program finding server addresses from names Domain Naming System (DNS) [Byte] 97-7p25 new top level suggested [ct] 97-2p33 top level extended, [ct] 97-10p346 DNS [ct] 97-13p122 German DNS situation, [ct] 98-12p40 DNS authority fights [ct] 2002-11p92 ENUM for phone numners in DNS DNS 2 letter country codes [Krol] p351, are from ISO 3166 [Liu] p13 machine numbering/naming guidelines [RFC] 1178, [Hunt] p77, [ct] 96-12p334 give IP addresses along geographical rules, exa subnet for each building anec IF *.*.202/212.* for IT on sites W/OW, to coarse granularity make DNS hierarchy along organisational rules, domain for each department exa IF on DECnet first 2+1+1 letters of name show department+site+type name individual machines with memorisable names, also motivates do not use office (computer may move) or user (may change) exa CAAD film directors (Unix), actors (Macs), studios (NTs) exa e29 caribean islands make use of aliases for machines with server processes alias with service name in it for moving individual services name the actual machines service-independant for Web use www.domain, or as Web most important also simply domain name but simply domain name is not possible to used CNAME, as SOA clash couple this with httpd virtual servers, diff home-dir for diff IP addr exa for user group each member own virtual server, movable to home make homepage URL http://www..domain// while on main server first is alias when main made virtual or home server second is symlink DNS host.domain.top and smtp user@host are wrong way round are not hierarchical, top.domain.host!user would be list/selectable DNS should allow translation of name:service pairs to machine:port pairs for service-name.xxx:telnet to server.xxx:service-port this would also replace /etc/services, same as DNS replace /etc/hosts also do xxx:smtp to mail-server.xxx:port instead of MX records hack would allow mails to domain to be handled by diff sendmail than intern for sending packets use sockets interface, net equivalent of IPC [Comer3], [iX] 95-3p194 IPC only between local processes with seperate network message system vs all processes on many processors in one IPC address space originally from BSD/Unix, later also Winsock [iX] 93-6p176 direct from C or perl, from shell scripts use netcat [iX] 96-11p174 also as less successfull alternative TLI from AT&T [iX] 93-12p148 for real network transparent operation use an kernal specific IPC protocol namespace //mach.sub.domain/processor/process/ for file server is diskdrive/dir/filename path but this limits such IPC to between machines with same kernal type only machines of same type can become one virtual machine IP is the base of the Internet [Byte] 91-7p181 NREN, [Byte] 92-2p111 Internet, [Byte] 92-10p149 connecting [ct] 96-4p132 Internet becoming the motor of progress [ct] 96-10p298 Internet protocols for LANS, Intranet first various government agencies all set up their own networks this produced less than optimal connectivity and unneccessary high costs all TCP/IP networks connected up, interagency network, Internet first in universities, agencies and large firms (working with agencies) the success with these users made home users want to connect to it using existing WAN technologies is out of question because of costs the Internet is running out of addresses use IP addresses from [RFC] 1597 for local network these can be converted to one public address by the router the entire net appears as one host, this is known as IP masquerading [iX] 96-7p128 IP masquerading each site needs only a 16-address subnet for its few public machines use classless adresses to unload routers Classless InterDomain Routing (CIDR) [iX] 95-5p170 use wider addresses, IPng, IPv6 (today is IPv4) [Bradner], [Byte] 95-4p217, [Byte] 96-9p55 [ct] 96-11p380, [ct] 2001-16p202, [iX] 94-10p132 128 bit addresses, no ARP (64 bit site, 16 bit net, 48 bit host) no fragmentation in header (uses expansion), real-time streams SNA [iX] 94-10p30 SNA to IP vs [iX] 94-10p46 MVS access by IP IPX/SPX used by Novell Netware, a special OS just for servers based on PC hardware IPX/SPX is derived from XNS anec Netware 3.11 many manuals, Guide to the Manuals [Byte] 95-9p79 picture NetBEUI/SMB/NetBIOS [Byte] 89-1p301, [Byte] 89-10p303, [Byte] 91-10p269, [ct] 91-2p244] used by Lan Manager on OS/2 and NT, also WfWG uses Lan Manager protocols NetBEUI is often replaced by DECnet (Pathworks) or TCP/IP ([RFC] 1002/6?) Appletalk [Byte] 91-10p247 Appleshare AFP originally on LocalTalk (RS-232 based) hardware, later extended to Ethernet OSI CONS and CLNP [Sukonnik] IP vs OSI, [Byte] 89-1p297 OSI header, [Byte] 89-1p302 OSI layers [ctk] 91-3p327 Standards [iX] 95-6p144 OSI interact with TCP/IP vs DOA, [iX] 95-8p116 OSI CLNP OSI model based on 7 layers with clear function descriptions [Hunt] p6 because of this no merged functions as in TCP/IP, but less efficient long time hindered by only connection oriented protocols (CONS) later also packet oriented (CLNP), only sanitized TCP/IP, no real advantage anec the original OSI and CONS were sanitized SNA got rid of many hacks, but these were for speed, result slow too complex, too late, has support of politics (from ISO) but not of users one should use de facto standards, as that is what other users have de jure standards should be only suggestions for becoming de facto users then decide what becomes de facto, state should follow them should not adopt "we publish de jure, you must follow us" mentality only protocol really in use is X.400 e-mail, only in large organisations address format more complex, yet less powerfull, users dislike it is a classic case of a great centralist design failing on overengineering anec TCP pickup truck without brakes vs OSI 500ton limousine without power multiple protocols on client, not server, but problems with MS-DOS memory limit Wide Area Networks [Byte] 91-7p161 WAN techno, [Byte] 91-7p181 NREN, [Byte] 91-9p215 linking LANs [Byte] 93-12p66 linking LANs, [Byte] 94-9p125 Internetworking [Byte] 96-5p59 the new WAN, [Byte] 96-9p68 fast local loops, CATV vs DSL [Byte] 97-10p71 broadband local loops DSL, LMDS, CaTV, satellite [Byte] 98-3p89 breaking bandwidth bottleneck [ct] 96-3p290 megabit WANs avail in Germany, [ct] 97-8p122 fast IP sat/DSL/CaTV [ct] 98-6p294 under sea cables [ct] 98-11p186 Internet running over lethargic phone companies [ct] 98-16p68 megabit Internet report, [ct] 99-23p210 satellite internet [ct] 2002-15p106 satellite internet, [ct] 2003-2p152 fiber multiplexing with fast LANs on many sites cheaper and faster ways for interconnecting than the Arpanet were wanted, connect the LANs to each other with WANs leased lines in the beginning (Arpanet) single DS0 lines were enough later more capacity became neccessary, for this multi-DS0 lines are used phone company line speeds, are 8000 * n * 8bit for n phone calls per line [Byte] 94-3p52 T1 1.544MB, T3 45MB and OC-48 2400MB [Byte] 94-9p126 dedicated lines, T1 and fractional T1 [Byte] 95-7p70 OC-3 155MB, OC-12 622MB, OC-48 2500MB [Byte] 96-2p51 T1 1.544MB = 8000*((24*8)+1), T1C 3.152MB, T2 6.312MB T3 44.736MB, T4 274.176MB and European E1 2048MB = 8000*(31+1) [Byte] 96-5p60 T3 = 673*64k (= 28 T1), [Byte] 96-5p66 T3 = 28 T1 = 672 DS0 [Byte] 96-9p134 DS0 (digital signal), DS1/T1, DS2, DS3... [ct] 96-10p347 table DS0..x and E0..x classes and rates this is the original (and still the best) WAN wiring for connections from a site to the nearest Internet POP but expensive because line is continually in use, large monthly bill exa Swiss PTT 64k inside a town 230.- SFR/month this is only the line charge, the IP providers cost must be added to it anec Swiss Mietleitung, free if both endpoints to same switch office add to this the Internet POPs provider cost, 100..1000s SFR/month lower guaranteed capacity (commited bandwidth rate) than a leased line but you can usually use unused of other users guaran rate, reduced cost it needs a large university/agency/company to pay for it despite that is best for large traffic and for 24h reachability X.25 [Roberts] p164, [ct] 99-5p210 X.25 Datex-P is the CCITTs commercialised Arpanet technology, similarily outdated is slow (max 56k, often only 9600), also only max 128 byte/packet also slow because of large overhead of link layer error detection is the oldest pay-for-capacity service available from phone companies capacity on demand, cost only when data is being transmitted is therefore often used for remote login type jobs, exa Infodoc/Infonet but non predictable (data amount depend) costs, often not liked by bureau exa IF no IP over X.25, but they use raw X.25 without problems if all IP packets over one X.25 connection, exa Internet from site to a POP cost of IP connect in both directions fall on site making X.25 connection but extremely expensive here in Europe because of PTT policies but still attractive compared to better services [Byte] 96-5p68 this makes running a publically accessible server over X.25 ruinous X.25 was allways missmanaged by the phone companies use only with NUI, ideal for password thiefs, intercontinental local cost firms whose NUI password had been spied payed bill for X.25 usage they should have put the X.25 usage costs on the phone line users bill PADs reachable by a service number, with local line to PAD free also PADs at every exchange or hidden connections to exchange with PADs connection to PAD bypasses normal exchange, faster speed, parallel phone also PAD dialout to users machines would need to be provided anec today German Datex-J corrects mistake of cost on phone line user but still only slow modem until PAD, few PADs and of course no parallel usage of phone and X.25, no 24h access anec here in Switzerland also X.25 multiplexed with phone over 1 wire but extremely expensive (SFr.600.-/Month + packet costs), no use for home RS-232 lines a RS-232 line is treated as a small (2 machines only) Ethernet encapsulate IP in SLIP [RFC] 1055 or PPP [RFC] 1134 [Byte] 94-6p271, [Byte] 97-2p55 [ct] 96-11p160 PPP vs SLIP, [iX] 94-6p176 SLIP, [iX] 96-1p154 PPP [Uo] 95-6p120 PPP, [Uo] 96-1p54 PPP SLIP advantage is easy to implement, low overhead PPP dynamic addresses, good for public PPP login servers [PCW] 95-12p237 with SLIP dynamic addresses are possible but require scripts PPP can transport multiple protocols mixed, not only IP [Byte] 97-2p55 is therefore better for connecting 2 LANs by a RS-232 line PPP packet framing, checking and even compression is good over raw lines, but not needed over V.42 or even V.42bis modem on V.42bis PPP compression clash [PCW] 96-9p258 PPP can also map out non transferable characters, but not Windows95 PPP increase speed on slow line, Van Jacobson TCP/IP header compress, [RFC] 1144 is mainly important for small data packets, exa Telnet single chars no so important for FTP, NNTP and Web large block transfers SLIP drivers with compression are called CSLIP, in PPP no separate name actually automatic detection (pseudo-IPv8) but most servers manual config IP addresses are only used for routing, no convertion into HW addr (none) in IP routers point-to-point option for this, together with route table RS-232 lines are mainly connected to a single machine, one IP address exa the one I am writing this text on, mayority of todays Internet hosts for one machine connected to an Ethernet use proxy-ARP only one IP addr (for both line ends) ARPed to routers Ethernet address no router entries to the gateway needed on all hosts on the Ethernet anec originally for connecting local machines without Ethernet adapter to LAN today mainly used to connect home machines via modem to the Internet Plain Old Telephone System (POTS) use RS-232 line with modems and the phone system in between direct RS-232 lines can be logged in once, stay connected from then on but POTS lines only stay logged in while dialled up not 24h, else the costs would be prohibitive, worse even than fixed line either manual triggered login script, usage, manual logout exa I use a script automating login, sendmail -q, pop, logout or autologin on first packet to be transmitted over line by a dial deamon timeout for logout, preferably with var time depend on open TCP channels some have an automatic script start after login succeeded anec automatic sendmail -q and popcli after connection not good, hanged I have never seen autologin from an terminal server, because only for login therefore not possible between 2 term serv for automat connecting 2 LANs on the dialin machine use dip as shell, to set up the IP routing when the user disconnects the HUP signal makes dip reset routing and exit modern term servers contain SLIP/PPP router, old ones telnet to WS with dip due to IP address shortage often only one address per port/modem user gets different address at each login, may be (usualy is) differnet this prevents dis-/reconnect while an TCP connection (ftp!) is running also prevents reconnect after line has been dropped also some forms of IP based authentification (rlogin/rsh/rcp) fail but POTS is no real Internet access (tax meter, no 24h connect, dialup delay) POTS is batch transfer, so only batch transfer like UUCP and FAX work right Telnet many small transfers (1 char and answer) with breaks between either costly long timeouts or often dialling delays (and costs) Web accessing many pages either redialling awkward or timeout too expensive FTP no downloads as CD-ROMs are faster and cheaper, exa Linux SUSE CD anec screen saver copied via satellite, $4200 [PCW] 93-12p658 anec don't underestimat bandwidth 747 full CD-ROMs [Raymond] "sneakernet" CD-R by courier has largest bandwidth for bulk data [Roberts] p154 also what you have you have, no reliance on off-line or overloaded server worst though is that a POTS Internet host is not 24h reachable from the net it it completely impossible to run a server a machine at home switched 56 [Byte] 93-11p57, [Byte] 94-9p126 same speed as a 56k leased line, but dialup, without an 24h connection is essentially POTS without the 3.5kHz to 64kbit converter in the way CSU/DSU channel/data service unit is analog to modem with autodialler 4 wire vs 2 wire operation of this "modem" [Byte] 93-11p60 will be outdated as soon as ISDN becomes generally available ISDN is equivalent 2 switched 56 lines over one phone wire [Byte] 93-11p60 with telephone to ISDN converter, does phone + switched 56 over same line Integrated Services Digital Network (ISDN) [PTT], [Byte] 91-7p166, [Byte] 92-1p86IS49, [Byte] 94-9p125, [Byte] 95-4p67 [Byte] 95-5p113 isochronous Ethernet, P(10bT)+96B+D+M(96k) Super-ISDN [Byte] 95-6p40IS4, [ct] 90-10p324, 90-11p240, 90-12p284 ISDN card for PCs [Byte] 97-11p32IS7 ISDN Allways On/Dynamic ISDN, low bandwidth data on D ch [ct] 91-11p70, [ct] 96-3p102 ISDN in Germany [ct] 96-3p118 ISDN speed fail if provider-internet too slow [ct] 97-14p110 56k modems [PCW] 95-7p448 standards, technolog, applications [iX] 95-7p112 ISDN services and protocols, [PCW] 93-5p475, [PCW] 95-7p448 LUGS mailing list ISDN discussion ISDN is a connetion oriented (data stream) network, like the POTS but it brings full DS0 digital lines to the users desktop basic 8000 * (8 B1 1 D 8 B2 1 D) = 64k+64k+16k = 144 kbits/s with synch and CRC bits 16(U)/48(ST)kbit/s gives 160(U)/192(ST) kbits/s for conversion U<->ST uses Network Terminator (NT) box on U line ANSI 2B1Q [Byte] 93-11p60, ANSI T1.601 [PTT] p4-15 sends 2 bits as one quaternary state (baud=bits/2) [PTT] p4-13 in US B channels are actually often only 2*56k [Byte] 93-11p60 because only 8k*7 bits usable, 8th bit victim of bit robbing this is how older equipement handles switching [Byte] 96-2p51 primary US 23B*64+1D*64 (=T1) Europe 30B*64+1D*64+64ksync/CRC (=E1) [Byte] 96-2p51 for user data exchange use B channels, faster transmission than POTS+modem even faster if both 64k channels are merged to one 128k channel for doing this PPP extension Multilink Protocol (MP) [Byte] 97-2p56, [iX] 96-2p144, [Uo] 96-7p96 Bandwidth Alloc Prot but problems with 128k, no telephone calls while data call is active is better for users with large FTP/NNTP/Web downloads also faster dialup (in 2..3 seconds), so short timeouts are possible this make at least Web better, short timeout, reconnect for each page this makes ISDN usefull for home users with large Web usage for connecting analog phones a/b to ISDN ST bus use a Terminal Adapter (TA) NTs with 2 built in a/b TAs gives NT+2ab for while conversion mixed ISDN/analog modems [Byte] 95-7p181 but ISDN despite "integrated" in its name no real packet transmit, can use D channel for a X.25-like packet network but slow (9600 bit/s), no standard, actually defined but not on offer real packet would require a super-ISDN [Roberts] p166, is unlikely X.31 defines X.25 over ISDN B channel, but B still stream [iX] 95-10p154 slow basic only twice 64k, nowhere near megabit data range primary can support merging B channels to H channels, up to T1 speed also no standard, actually defined but not on offer costs are still for connection time, not data transfered still problem with no 24h operation, needing timeout/reconnection anec ISDN is often used as a standby line for when leased lines fail anec in Winterthur PTT ISDN Centrex experiment with TWI 35 SFr.-/month in this system TWI external phones are regarded as part of intern PBX they are connected at fixed monthly cost via ISDN to the PBX if they dial via PBX to an ISDN TA with PPP router that is Internet assuming no extra PPP provider cost that is cheap 24h access but is only for TWI students and business partners, not general public POTS already unites telephone, fax and modem, 1 call at a time ISDN "integrates" telex, teletex and few other irrelevancies this comes from ISDN intended as cost reduction system for 1970s services computer data transmission as in X.25 was not regarded as important ISDN is only speeded up POTS, just faster and less connection setup delay essentially POTS on steroids, faster but no real additional abilities but like POTS still has a fairly low speed limit because data must go through switches for 3.5kHz (8k*8bit) voice result is that IP over ISDN is no more real Internet than IP over POTS will use exiating single-twisted-pair phone lines but requires new wiring (4 wire) between NT and terminat, much cost for little return ISDN is a cassic phone company bureau cock up, too little, too late anec it is sometimes called Interesting Standards Doing Nothing 10 years ago when we had 300 bit/s modems ISDN would have been great after doing nothing for 10 years, it is not interesting any more anec Beat no ISDN link home-job because PTT managment is too stupid this because they cant work out billing model, competence to competent 56k modems [Byte] 97-6p137 56k modems, [ct] 97-1p88 56k modems not everyone can (or wants to) have ISDN, upgrade POTS to near-ISDN speed for user->POP normal analog modem, for POP->user "digital" modem uses user side DAC as 8 kbaud, 7 bit/symbol (128 volt levels) modem the users modem must only have a 12bit ADC and convert voltages to data this requires for the POP real digital line, no ADC as that messes up signals frame relay [Byte] 91-7p163, [Byte] 91-11p173, [Byte] 94-9p125, [Byte] 96-2p89 FR voice [ct] 96-3p292, [ct] 97-5p362 from attempt to extend ISDN with packets, became independant of it uses virtual connections, like X.25 [Byte] 96-5p60, [Byte] 96-5p68 relative to X.25 it drops link layer error correction for higher throughput also available up to far higher line speeds, up to 2MB (Primary-ISDN) but still the same cost problems as X.25 has, because run by same PTTs Switched Multimegabit Data Service (SMDS) [Byte] 96-5p61 only high bandwith public network today [Byte] 96-5p70 unlike X.25, frame relay and ATM it is like a large LAN [iX] 95-2p106 German Datex-M SMDS service, [iX] 95-4-7 but is expensive Digital Subscriber Lines (DSL) [IEEEcommunications] 96-10p100 [Byte] 94-3p54, [Byte] 96-1p30, [Byte] 96-1p40IS18 [Byte] 96-2p80 AT&T Paradyne ADSL/HDSL/SDSL, [Byte] 96-8p88, [Byte] 96-9p138 [Byte] 97-8p32IS4 European telcos fail ADSL, [Byte] 98-7p72 xDSL trouble [ct] 97-11p324 xDSL, [ct] 99-16p126 ADSL, [ct] 99-19p230 SDSL [ct] 2001-20p210 optimising ADSL [PCW] 94-4p261, [PCW] 96-2p31 is a modem with phone line spectrum (not voice band) as limit max 1.5M/18000ft, 6M/12000ft, 9M/9000ft, 26M/3000ft very cheap technology would be 115200 bit/s RS-232 and simple FSK modem frequencies similar ISDN, will go over existing copper wire at net end normal RS-232 term servers, connected on one site by Ethernet and those Ethernets connected by normal n*56/64k lines HDSL digital 2B1Q baseband encoding symmetric up to 750 kb/s, max 12000ft distance, big crostalk at 240kHz is the raw ISDN line from 160kbit/s speeded up to 750kbit/s single carrier QAM or CAP, like V.32/34 modems initially 25..200kHz residential->central, 340..1088kHz cent->res 2..8bit/symbol -> 680..8700kbit/s speed range later 640..8192 c->r, 272..1088 r->c with 3..8bit/symbol adapt to line with choice of 5 carrier frequencies, top 631..1491kHz multiple carrier Discrete Multi Tone (DMT, as in Telebit modems) also called rate adaptive ADSL (RADSL) 25..200kHz r->c, 250..1100kHz c->r 2..8bit/symbol -> 32..9000kbit/s in steps of 32 present 256 channels in 4kHz raster 4kbaud 2..15bit/symbol gives theoretical max of 15360kbit/s (no split/phone), min of 8kbit/s also variable up/down stream splitting, up to symmetric ADSL Forum and ANSI T1E1.4 standard T1.413 uses DMT, acces modem by asymmetric AS0..3 = T1,E1,2T1,2E1,3T1,3E1 symmetric LS0..2 = 64,160,176,384,576,640kbit/s for local connections PC to DSL router use Ethernet symmetric vs asymmetric (high capacity to user with small back channel) client only users only require a small backchannel for control exa FTP/NNTP/Web download, logins (textual and graphical), radio/TV only people running servers require a fast symmetrical line to provide the data the clients are capable of downloading most couch potatos have nothing to publish, are not hackers [Byte] 95-1p296 consumer types, [Byte] 95-3p18 consum/hacker responses hackers should not generalise from their fun in experiments that all others want to do it, most want to rest from work at home only the few people publishing need a symmetrical line, switchable modem make modem switchable between asymmetrical ADSL and symmetrical SDSL ADSL is a data-only line, TV is transfered in data packets multiplex data and phone on one line, both ends filters to split splitter 0..25kHz for POTS telephone over same line important that the splitting happens before line going into phone switch connect standard phone and TV airial to ADSL modem box, like ISDN NT+2ab and then ADSL switch connected to the phone switch as if it were a PBX or use separate splitters from modems, good at central, but not resident Bell Atlantic northern Virginia ADSL video trials in 1994, now add Internet then 1.544MB/s, now up to 4 times that, running over standard phone copper high speed does not require optical fiber, copper can carry quite a lot [PCW] 96-3p41, [PCW] 96-3p89 and many other claims are wrong give up ISDN, ADSL faster on available cable, not in clouds [Byte] 96-2p75 Asynchronous Transfer Mode (ATM) [Byte] 92-7p100IS45, [Byte] 93-8p111, [Byte] 94-9p103, [Byte] 94-12p129 [Byte] 95-6p306 don't hold your breath, [Byte] 95-8p155 Ethernet over ATM [Byte] 95-11p255 ATM LANE, [Byte] 95-12p40IS4, [Byte] 96-5p71 [Byte] 96-7p53 IP datagram series over 1 ATM connection [Byte] 96-8p85 ready for ATM?, p85 claims, p93 technology and market [Byte] 96-11p48IS17, [Byte] 97-4p55 LANE, [Byte] 97-4p83 IP over ATM [Byte] 97-6p59 bulletproofing ATM, [Byte] 97-7p55 bulletproofing ATM part 2 [Byte] 97-8p51 ATM over ADSL, [Byte] 97-9p47 ATM hierarchical routing [Byte] 97-10p47 IP driving ATM switches, IP establisches VCs [Byte] 97-10p58 ATMs shrinking role, [Byte] 97-11p43 ATM Adjustable Bit Rat [Byte] 97-12p57 ATM addressing [ct] 96-10p346 details, [ct] 97-9p52 ATM only chance for WANs [ct] 97-11p334 IP switching, [ct] 98-13p45 ATM now coming or just last stand [ct] 98-16p74 fast data over phone lines, [ct] 2000-24p326 ATM [iX] 93-7p82, [iX] 94-11p130, [iX] 95-10p170 IP over ATM [iX] 06-5p128 GMD experiences with desktop ATM, [iX] 96-9p126 MPOA [Uo] 94-6p18 ATM missing target, German Telecom line costs, [Uo] 94-6p83 ATM [PCW] 93-10p461 traditional telephone streams are ideal for voice, but bad for data packets are ideal for data, but phone companies claim them bad for voice packets bad for stream (phone/video) data types is not relevant ignores effect of high speed and of redund drop resistant protocols net throughput, RSVP reservation [Byte] 94-11p27, RTP [Byte] 96-7p40IS9 also claim that packet bad for broadcasting is wrong MBone [Byte] 95-7p74, [Byte] 96-2p60, [Byte] 97-4p40, [Byte] 97-6p93 mult [ct] 98-21p262 MBone, [ct] 2000-12p212 multicast [iX] 94-4p90, [iX] 95-5p22, [PCW] 96-9p212 all broadcast on backbone, route only wanted on local anec the IETF broadcasts its meetings as private TV on MBone capacity arguments also fails, exa phone call of 64k/s in worst case (all 64k) and 50% util half of the calls than in switched with silence detect (ca 2/3) and voice compress this effect disappears same amount or more calls and more flexible mix of phones and data anec claim that PTTs multiplex X.25 packets in phone silence capacity dial up vs packet costs for line vs switches cross over [Roberts] p153 inefficiency argument also fails, efficiency doesn't count users chose what is most usable in their affordable range most humans decide on base of ability/affordability, not efficiency exa PC vs mainframe, mobile/cell phones vs wire, car vs railway hardware ability argument also fails PCs 10 years ago couldn't do multimedia, but now they can same Internet today can not do TV, but in 10 years it will be able to only packets+IP are fixed features, sub-MB HW will go go way of 8bit proc actual transport and service protocols will be extended or new ones phone company bureau still don't understand packet switching economics while today users send voice phone and audio over Ethernet (Artisoft LANtastic LAN phone), frame relay [Byte] 96-2p89 [Byte] 96-2p56 RealAudio radio over IP, Packet interlieving [Byte] 96-2p83 Internet phone phone, [Byte] 96-4p142 also [Byte] 96-9p129 data and voice, [Byte] 96-9p132 IP audio/IP phone [Byte] 96-9p137 video networks CATV and DSL [Byte] 97-2p48 phone over 10base-T Ethernet [Byte] 97-9p104 videoconference over IP [Byte] 97-10p107 voice over frame relay or IP [ct] 96-1p96 Progressive Networks RealAudio, [ct] 96-6p252 Intenet phone [ct] 97-10p214 Internet phone, [ct] 98-12p204 Internet radio [ct] 99-9p180 phone numbers and IP adressing, [ct] 99-10p220 IP phone [iX] 96-6p116 Vosaic/VDP real time video, [iX] 98-9p112 IP phone as a compromise they want to introduce cells, stream of fixed length packets cell size 48+5 bytes (data+header) was compromise between US 32 and European 64, non binary, worse than either typical example of bureau cock up, throwing coin would have been better for phone-like service reserve so much capacity, pay even if no trafic for Ethernet-like service use blocks of unreserved rest IEEE 802 over ATM [Byte] 96-8p100, IP over ATM [Byte] 96-8p101 large connect setup delay on every IP packet or expensive const connect but the result is a high-overhead complicated technology details are taking forever to work out and systems are subtly incompatibl ATM vs CATV is a bit like the TokenRing vs Ethernet discussion ATM is only available at high speeds defined for 1.544MB (=T1), 25MB, 155MB, 622MB [Byte] 96-2p61 why define speeds, ATM is actually a switching technology, not a transport is actualy alternative to IP, incompatible with LAN traffic, IP general requires underlying line HW T1, ADSL, Sonet, should go over all HW speed def because phone company tradition, technology and std speeds they have not yet digested the lesson of layering physical/network because of this speed range optical fiber rewiring is required result is expensive hardware, prohibitive costs for home users simple PC ATM cards are in $1000 range, switches $10'000 ATM is a classic case of bureau liking high profile prestige projects instead of concentrating on providing cheap universal service what about learning to walk before running also ATM is nowhere near ripe for use, not even standards finalised users will have to wait long because of all this high speed technology slow acceptance of ATM [Byte 97-2p40IS18 ATM is also a classic one-size-fit-all technology, with IP no need for it for fast LANs 100Mbit switched Ethernet cheaper and computer friendlier for fast WANs frame relay and SMDS are cheaper and SMDS is LAN like cable TV modems (CATV) [Byte] 94-3p60 shared media, IEEE DQDB from MANs, [Byte] 96-2p52 0.5..30MB [Byte] 96-3p47 CATV uses IEEE 802.14 standard, 10MB, can be bridge [ct] 96-10p110 CaTV Internet success vs digital TV faillure [ct] 97-13p158 CaTV, [ct] 97-15p122 CaTV telephony, [ct] 98-16p74 CaTV + sat [ct] 2000-17p134 digital TV still suppost du bring interactivity [PCW] 95-5p293 cable companies claimed ready to storm use existing coax cable TV lines, better than existing TP phone lines also alternate line means 2 line owners to chose from lines are used like Ethernet, shared access at high bit rate at good Ethernet speed, 6..30M, full packet capacity for momental users like Ethernet all users on same cable, but also timesharing effect result downloads are fast, then break used by others up channel is slower, 64k..1M, large scatter, fast good for home servers at POP only one head end modem is needed and a few repeaters this is analog to an Ethernet with one remote bridge and a few repeaters vs all phone systems require at POP one modem per user, high costs anec a average telephone call is 6min, average for SLIP is signif larger at the same time all get 24h access like on a LAN [Byte] 96-5p40IS8 at no higher cost for the POP to have all users on-line 24h LANs were made by the computer industry for computing purposes, fit the job most WANs are rented from the phone industry, designed for their purposes trying to adapt any phone technology to computers is a compromise pricing trouble for same reason, LANs bought, WANs rented from phone ind CATV modems are only WAN technology that comes from the comp industry, fits anec the original Alto Ethernet used CATV components [Thacker] p274 but will the CATV industry get its act together anec Cablecom here still in 1995/6 installed single direction amplifiers because bidirectional cost 30% more, now they must replace them is a classic case of bureau stupidity, techies know its stupid but bureau don't ask the techies, they are simply to stupid to do so the extra cost of doing what the techies regard as right would be outweighted by the extra income from better service possible but in capital-dendant world investment only in guaranteed return anec Swiss cable radio called Telephonrundspruch, 6 channels killed for cost reasons and for needing frequency band for ISDN intro powerline [ct] 98-4p32 data over power cables, up to 27kbit/s [ct] 98-11p174 Internet over power lines, [ct] 2001-13p122 powerline universal cable [Byte] 96-9p123 users don't want to have multiple separate cables for diff services problem with cost of having wires layed, fighting bureau for new ones to be success this must be cheaper or more flexible than existing but due to more complex technology more expens, but little add flexibilil the desire of operators to make a big profit on it will also not help ADSL can be used as universal cable for phone/fax, data, radio/television CaTV modems also universal cable, TV direct phone and data over packets main problem is widespread access (MAN, local loop) supply local (LAN, in house) no problem, distance (WAN, long dist) small problem phone companies vs CaTV companies vs power companies vs railways vs radio [ct] 97-9p132 power lines as data network, difficult Connected Internet [Byte] 95-1p296 internet obsolete, [Byte] 95-7p69 the greatest shoe on earth [ct] 98-25p130 Internet peering and other interconnection [ct] 99-1p52 attacks on Telecom, mainly palaver, its still not here [ct] 99-21p128 birthday of internet, graphs of early structure [ct] 2000-1p32 number of internet hosts 81-1..99-7, rationale for IPv6 [iX] 94-6p108 problems connecting [iX] 94-9p52 US Internet, [iX] 95-4p3 cost justification, but who cares? [Uo] 94-7p14 German Internet no interest, [Uo] 94-8p3 or simply fear? user made content [Byte] 97-8p69 surpessing intranet chaos, but is supressing really desirable direct media, user run, reduces dependancy on bureau-ridden organisations only authors, active people, trustworthy, no idiots in the way computers and technology in general enhance the individual less dependancy, no need to rely on other who don't live up to demand the Internet is a "you can do it" medium, flexible, unrestricted lowers the cost in money and frustration below the do-it-for-fun barrier as result any individual with anything to publish can/will do so small publishers (1 person) are possible, no mass media needed [Liu] p17 allows users to publish anything, leads to the large content diversity users import their own ideas, full richness of human interactions this makes being on the net so interesting, makes the net successfull information must be not only available but also of interest to user this is main reason for hackers liking the net, power to get things done getting free of many bureau limits is reason for Internet euphoria I am publishing this on Internet for this reason, no persuading publisher then when success go to CD/paper this proof of success to persuade if they won't accept that, then publish myself, like O'Reilly Tim Berners-Lee [PCW] 94-12p382 interview "Inet drop in packet, go anywhere" important that regul allow protocol of your choise, partner of your choice higher capacity will also open TV production for anyone interested same as NNTP and Web opened journalism and publishing Tim Berners-Lee hopes Web reverse some of harm done by TV [PCW] 94-12p323 [ct] 98-13p74 Internet free info on conspiracies and UFOs [ct] 98-14p75 churches miss the Internet boat main attractivity of the net is in interesting servers, their content or more precise the people originating their content [Hauben] "netizen" to be successfull any medium needs content, reason for using it the Internet has interesting servers, from its structure and history Internet success from human compatible social structure [Byte] 95-7p69 the US military (ARPA) paid for development of Arpanet and TCP/IP anec ARPA rename DARPA 1972 [Hauben] "nwg", net stay Arpa [Barry] p71 but scientists defined it along lines of hacker ethic [Levy] p143 result no designer dictated social structures, no centralism todays Internet works despite all of the chaos because of this other media haven't got interesting content, from their managment structures failure of videotex because no interesting content [Raymond] "videotex" same teletext, no content, centralistic, only media moguls may apply anec I have no teletext filter, despite availability of them for 10 years same interactive TV (ITV) [Byte] 93-2p139 is ITV here to stay?, boom or bust [Byte] 96-10p48IS19 set top boxes, [PCW] 94-8p234 set top boxes will it be used, do users want it, are they willing to pay for it survey claim users will view perhaps few films a month, like rent video problem of TV is not the missing selection of programs (100s of channels) it is the bad content, lowest denominator rubbish and advertising ITV is centralistic, will not lead to better content, better use Internet specialised ITV devices simply to restrictive, better Internet access exa PTT KMG and Grenchen ITV test to see what users will pay for (nothin) vs Telecom Finnland Internet let users discover wants [Byte] 96-3p40IS3 video on demand (VoD) [Byte] 95-9p32IS11, [Byte] 96-2p51 Internet will replace broadcasting [PCW] 95-3p456 Micropolis VOD server, RAID+486+Decod+analogcabl+switch+TV techies aren't big television viewers, will not want to use it anec intro of cable TV lead to worse progs, me less viewing couch potatos watch whatever comes doesn't want the bother of chosing something [Byte] 95-10p48IS5 TV passive relaxation, will viewers replace it with active surfing cinema buffs are good at finding films, rest regularily misschoses anec the term Web surfing comes from TV channel surfing and watching TV when you want is a lot cheaper implemented by using a videorecorder, broadcatching conventional TV program VOD is remote video player, only sensible use is hotels and similar better at home standard TV reception and MM PC as intelligent VCR home shopping, online shopping [ct] 97-3p178, [ct] 97-16p66 e-commerce [ct] 98-12p42 EU e-commerce policies nothing sensible to buy, only junk, like paper catalogue [PCW] 93-6p223 problems with money transfer on net not solved yet, no universal e-cash [Byte] 94-12p40 electronic banking hurdles, [Byte] 95-6p71 [Byte] 96-6p74, [Byte] 95-8p218 no e-cash crippling for net business [Byte] 96-3p34 "just looking, thanks" [ct] 95-10p102 missuse of credit cards, [ct] 96-5p144 e-cash [ct] 96-7p94 copied credit cards, [ct] 96-8p8 c c password only offset [ct] 96-12p104 online banking dangers [ct] 98-3p22 Millicent, [ct] 98-9p90 home banking [ct] 98-10p34 handling credit card data on servers [ct] 98-11p52 chip cards for e-commerce [ct] 98-11p142 Internet commerce, [ct] 98-11p152 Internet payments [ct] 2001-6p270 e-payment, [ct] 2001-13p140 HBCI banking [ct] 2002-10p102 e-cash muddle, no standards [ct] 2002-19p172 access to e-banking [iX] 94-9p26 Internet commerce, [iX] 96-7p156 e-cash [iX] 96-8p92 e-cash, [Uo] 96-7p88 micropayment various currencies, reliability, inflation, dominance private profit ms/visa vs non profit "pgp-cash" banks will not like to see profits from p-cash traffic disappear can non profit gain enough use so size disadvantage disappears small enough to beat profiteers costs, like with browsers will the net be able to provide a free system that works systems with central transaction control avoid both these, e-checks but have problems with tracability/recordability of transactions can and will be missused by marketing, insurances, bosses, govern govern desire tracability, "to suppress criminal use" of e-cash e-cash vs e-checks vs e-purse, purse is smartcard with transaction serv creating false e-cash sender not deleting, reciever generat without sender to avoid this closed processors in cash cards, but are they safe use an undocumented secret algorithm, are security by obscurity cypherpunks [Raymond] "cypherpunk" will find ways to break them then post "false money printer" on FTP, result e-currency crash paper catalogues are a lot easier, if electronic then CD-ROM is cheaper but CD-ROMs still lack standards for multimedia formats internet "cultural imperialism", is not, is adaption of percieved better the adopters want it, not some implied imperialist tendency of "the west" loss of of local culture so lamented by culture pessimists is not felt as bad by those doing it, else they would retain it later when feeling unrooted, readaption of identity giving components people must learn from their own mistakes, not elitist dictatorship elite trying to "protect" backward are simply preventing own loss of materi if they were interested in backward they would accel learning but this would violate their self-important lamenting and moral superiori also this clashes with their non-involvment in "bad" technology server connections from other users only if line to server open 24h so long line costs on server owner, not clients, home servers too expensive result is need for renting space on a server on the real Internet and then uploading the server contents over a dialup line this is analog to renting store front space for a shop leads to additional costs, hinders users running servers at all the only people that can afford servers are commercial offerings Internet over POTS is like a road unusable by anyone other house owner because road is only temporary there and toll for time there, not usage for meeting others special places located on better road must be used this is main reason for missuse of university and firm comp as servers packets are needed for server Internet connections because line usage and costs only while actual data transmission, or fixed real net requires packet connect, from both ends, like Ether, 56/64k public vs private Internet operation, data highway as freeway vs tollway [Hauben], [Byte] 94-7p270 call the feds comment, [Byte] 95-7p70 gov logs off [ct] 97-12p86 German Telecom costs, [iX] 95-11p126 Thailand SalaThai network original Internet was WAN 56k lines, fixed month payment, then free to use together with LAN Ethernets, payment for installing, then free to use this lead to the many servers that have made the Internet interesting todays usage of POTS or ISDN is pay while the line is connected this is even distance dependant, despite no more cose [PCW] 95-8p385 despite ISDN being cheap to make it is expensive [PCW] 96-2p35 phone company charging structures prevent 24h connection [PCW] 96-3p238 this can not be used for servers, as they need to be allways reachable better pay by packet local line is there anyway, install costs, charge once, not for using it the switching system and interconnection are shared costs on use, that means costs on actual transfer, not connection time answering packets must also be charged to client, not to server else running a server not afordable, most packets are answers (download) but this requires policy change by the phone companies, they don't see it at least IP part of costs could be done by providers as pay for packets but todays slow net drives up their income (long connection time) better pay per packet, drive up their modem cost, make get better lines even better constant monthly price independant of usage or even customers size exa Swiss Telecom only IP Fr. 1300.-/month (for local line add Fr. 230.-) providers claim customers want constant price, for easier budgeting this was case with IF, wanted fixed line, not X.25, for this reason but telephone lines and company cars pay for usage, bureau accept that now for Internet fixed costs "needed" to persuade them to give money but this puts fixed bottom price level on 24h (= server usable) connections providers don't see that fixed line for 24h, doesn't mean large transfers no price reduction for low transfer rate users, exa CCW only way to recover such costs is for users to become providers this is one reason for the many small providers popping up everywhere but I don't want to become provider just for proper access for server this locks out small server operators, prevents offering Internet content providers make their money from clients using servers, is reason for them but they don't think that giving servers cheap access is good it is bad enough that server operators must by hardware and supply work at least their connections should be payed for by the clients even better no payment by usage at all fixed price like fixed line or payment in taxes like roads public data network, we need federal program like freeways [Byte] my letter this would consist of a federal backbone network, linked internationally together with state nets connected to it, and municipal nets on them ev only cables (except in building) and switch rooms are public owned various types of switches run be private companies or organisations at users end individual building lines (local loop) by building owners line belong to building, like road, electric power or telephone line servers (and clients) run by privates (companies, unis, usergroups, home) exa Cleveland Freenet, Wellington CityNet [Hauben] "netizen", "citynet" result would be a public data network like todays road network same as roads are public and destinations (and vehicles) are private the phone system should be reorganised in the same way, combined anec Bavarian statewide net, connect to it by firms and citizens groups in Britain Ashdown suggests similar as best millenium project many claim that the government is incompetent because of many bureau it is, but large private companies like phone companies also same bureau additional profit and price cutting to beat competitors lead to badness phone privat bureau no better than state ones, same ignorance but also capitalist costs, specially so in privatised state bureau anec 19th cent state rescuing railway collapse at taxpayers expense general choice profit vs citizen the state allways fails phone bureau believe they own the cables, despite users paying for them everyone should be able to use cables as they wish, no bureau dictate phone bureau forbidding use of non certified modems, to "protect" users result high price, low power, or illegal, this delayed development government regulation [Byte] not enough, it must become main provider instead it is chickening out and privatising, NSF->NII [Hauben] "immin" for the consequences think of all freeways and interstates privatized state should declare net wires/buildings citizen-owned like roads make companies rent lines from citizen (who payed for making them) part of lines should be reserved for non-profit citizens initiatives anec cable TV in U.S. by law public access channels such a public system would also solve the problems of low/no income users paying models private only can do by use or fixed, government also by tax richer ones would support poors line usage via the standard tax system clients by putting terminals in public libraries or social organisation together with cost-free servers run by same or state is being online a privilege or a right [Hauben] Licklider and Taylor access by everyone is needed if networks are not to divide society more european routing mess, providers are badly interconnected [Byte] 96-5p40IS5, [Byte] 96-10p48IS13 european provider performance [ct] 96-1p114, eu/de net struct, [ct] 96-4p148 net privatisation in Germany [ct] 96-11p142 German provider structures, [ct] 97-8p128 German provider test [ct] 97-8p148 provider internals, [ct] 97-16p120 German provider mess [ct] 98-10p120 swiss providers [ct] 98-22p22 German internet strike against Telekom costs [ct] 2001-25p100 due to costs not redundant enough [ct] 2002-15p72 but survives multiple backbone shutdowns [iX] 94-10p105 German IP mess, [iX] 95-10p56 German provider links [iX] 96-1p136 Internet organisation, EBone [PCW] 96-8p315 NL-GB via Stockholm and Paris USA had NSF backbone to begin with, later multiple cross connected commercial euro only after private mess added Ebone, badly configured, not all on it exa c't traffic Hamburg-Hamburg 4 times over the Atlantic exa me Eu/ZH-Sw/ZH via Amsterdam-Stuttgart-Berlin-Helsinki exa me ZH-CompuServe/Germany via Amsterdam-Stockholm-Paris-Munich surf board firm home page with graphic in it slow download <1kByte/s while download boot NeXT, telnet to Linux, run traceroute, >1s exa me ZH-BuchsZH mails to Dani via Stockholm-Paris exa me ZH-HorizOWthur via Virginia/US, packets dropped in gsl-MAE many european nets linked directly to US for fast access exa Demon 45Mbit/s transatlantic line [PCW] 96-6p24 is larger than all US-GB lines of all providers together but internally badly connect to other providers, routing over Atlantic but only 1/16th of a 622MB (standard telephone 9600*64000) [PCW] 96-6p36 and the phone companies lay these fibers in packets of 30s the providers complain of costs, but they have messed up the backbones data highway [Byte] 94-3p46, [PCW] 94-4p261 1: extended fast Internet 2: interactive cable TV 3: universal cable multiple meanings are result of a great sounding content free word and wishfull thinking of politicians and managers, marketing hype today it is mainly lots of hype, some call it the data hypeway [Byte] 95-8p218 data highway missing target because target inexistant [ct] 96-12p88 Cliff Stoll highway critic, will make us more stupid [iX] 95-11011p German political report also missing target [Uo] 94-12p18 John Perry Barlow highway critic some say this will be the biggest egg on the face for politicians and managers trying to profile themselves as the great guys their desperate behaviour reminds of drowning grabing any straw in sight [PCW] 94-11p314 Gibson and Kelly (Wired) interview [PCW] 94-12p385 Berkow (CompuServe) interview at least all this talk leads to more people getting an email address and perhaps it will speed up the becoming available of good (24h) home IP File Servers first existing timesharing machines were used as file servers for workstations later WS with special facilities for this timesharing function even they don't need timesh OSes because only one function, one program disk access requests can be queued like key presses on a WS with VMS/Unix real timesharing OSes came to WS, servers as on timesh they can appear on net both as clients and servers (peer-to-peer network) no dedicated servers needed, but often for performance timesh as servers on PCs first allways dedicated servers, also because of lack of machine size these servers run special OSes like Netware or Lan Manager PC LANs now slowly becomming peer to peer, exa Lantastic, WfW, PC Unixes same on Macintoshes first as server a separate machine running AppleShare software later since System 7 peer-to-peer servers on every machine dedicated servers vs peer to peer networks peer to peer more flexible but requires multitasking OS on serving machine and enough processor power to run server processes on work machines timeshar machine networks were always peer-to-peer (login, file transfer) servers must serve multiple client connects without friezing [Comer3] p115 on unprotected machines simply use mult coroutines, one per connection on protected machines processes make problems with synchronisation one process per server can only serve one connection at a time one process per connection can only share data via file system this results in a heavy processor load for filing and switching use coroutines in one server process, one coroutine per connection [Comer3] p139 single process concurrent server if the servers OS has multithreading, use one thread per connection Alto [Thacker] p282, [Lampson] p313 Alto first used Xeroxes MAXC timeshar system as file server [Thacker] p265 later special Altos with better disk controller and big disks dedicated server, no user, due to limited machine size most programs read and write files seqentially exa all shell commands, cp/rm, same pipe cat, same editors, only not FS, DB Altos originally accessed file servers using the FTP protocol from Arpanet but FTP is not for seeking in a file and modifying it on the remote machine the users wanted to see the same common file system on all workstations this requires remote file system access, a better protocol Juniper delayed [Thacker] p282, [Lampson] p314 and Cedar Alpine Interim File Server (IFS) [Lampson] p314 WFS packet file system, was not a big success [Lampson] p313 Cedar file system, caches files of the WS, server demands write back VAX/VMS, DECnet on client use filenames like machine"name password"::disk:[dir.dir]file.ext this extended form is interpreted by the file system, used by any program anec the HTTP URLs service://machinename/dir/dir/file were inspired by this on server special DECnet login with FAL (file access listener) as shell because login is slow it is kept open for 5 min to accelerate repeated uses anec NETSERVER.LOG file, one per login, not deletable while logged in no mounting remote filesys as local disk names, result in lots of typing only with LAVC is transparent file sharing possible Unix, TCP/IP Suns Network File System (NFS) [Byte] 89-2p265 NFS, [iX] 96-10p46 NFS 3, [Garfinkel2] p283 mount any remote dir onto local, local progs can open any file mounting can be by automounter with /home automount/autofs map runs over UDP transaction requests, each in idempotent (bar state changes) this allows server reboots without clients mounts collapsing this gives NFS the same stabitity/scalability as DNS, HTTP, SQL lost packets would give trouble with not or double done state changes this is handled by checking for success, retransmit if doesn't arrive as block read/write from abs position is idempotent, this works doesn't use the UDP checksum feature but as it is intended for over Ethernet (has CRC) this is not needed improved (?) NFS v3.0 uses mainly TCP, but not widely spread but only stops packet loss, not state loss, has performance problems NFS multiserver (or even WS) for backup to 2nd server /export/identical, is case of crash change mount problems with early implementations hanging when server unreachable [Raymond] "Nightmare File System" as this occured while in kernal, no kill to user process could unblock today NFS has special tests (configurable) in the kernal problems with users expecting "files" to be local = fast anec NiCE FTP server disk NFS from nice to EUnet Thomas problems with unsuspected slowness of file access problems with special files, but this is a server OS problem anec HP-UX exported /dev/tapes, second mounts it as /dev/remote/tapes tar -f /dev/remote/tapes/... fail, fault of device number resolution? problems with connectionless protocol and resulting stateless server every file operation must carry file identifier and position marker it is slow (all data must be written synchronously) it doesn't help that for each directory name->inode it must transact it doesn't know what it is doing exa full delete a open file, not just it's link in dir exa problems with temp files not in a dir exa server filesystems used by NFS can not be unmounted, busy even after the NFS mount that used them is long gone requires special mount protocol with state (why?) this loses all the advantages of being stateless requires patches in the server logic, side effects [Garfinkel2] p287 also deleting a file still open gives problems with Unix file semantics need to move to .nfsxxxx file, stays there on crashes, Quota overruns isn't OS independant despite claim, is OK for DOS or VMS (files streams) but not usable for Macintoshes, file have file types anec ITS had first transparent file sharing, but it worked [Raymond] "ITS" CMU Andrew File System (AFS) [Tanenbaum] p573 better technology then NFS, but not wide spread, its inventors wanted money so they got no serious market share as consequence CERN Hypertext Transfer Protocol (HTTP) [Byte] 97-9p37 IIS 4.0, [Byte] 97-11p125 IIS vs SuiteSpot [ct] 97-10p268 NS SuiteSpot 3.0 [iX] 94-3p182 CERN httpd server, [iX] 95-11p53 httpds compared [iX] 96-6p122 Apache freeware httpd, [iX] 96-12p149 Apache URL rewriting HTTP server is not limited to transfering HTML, it is a simplified FTP also for included graphics and referenced documents in other data formats URLs which point to other resources, weave the Web, are the central element [iX] 93-12p84 World Wide Web, [iX] 96-3p116 www.transtec.de format protocol:server/document#part, various URL types [Musciano] p161 including non-HTTP such as WAIS, FTP, Telnet, Usenet [Krol] p233 Web browsers can also access local files with file: URL diff from http: to file: no / conv to /index.html, no CGI script called what about HTTP or FTP or even URL file system in Linux, like tar filesys dynamic documents (server generated documents) [ct] 97-15p290 Javascript/perl web shop, [ct] 98-24p226 CGI programming [ct] 98-25p256 CGI programming pa 2, [ct] 98-25p256 CGI programming pa 3 [ct] 99-3p200 FastCGI [iX] 94-8p140 CERN httpd CGI and forms, [iX] 94-9p178 CGI and forms httpd has an interface to call programs that generate documents Common Gateway Interface (CGI) HTTP get command calls a CGI program, output of this is HTML document this is used to call different URL for diff parts of image with coordinates are sent to CGI [iX] 94-10p190 CGI programs are usually written in perl, good at string processing but any other good string processing language will do, certainly not C [iX] 96-3p162 Perl 5 with OO extensions, [iX] 96-4p198 Perl 5 OO as program parameters part of path (progr is pseudodir) or use ?param to generate ?param without user typing URL use HTML tag CGI can also generate images for , exa ghostscript, gnuplot but dynamic docs are a nuissance, foul up caches such as Squid better regenerate data once when data changes, not on each download anec browser and GCI is like NLS [Engelbart] p221, [Byte] 88-12p248 front ends (display processes) and back ends (data generator processes) universal client and document servers (1968) [Engelbart] p221 running a Web site [Byte] 95-7.. Byte Web project [Byte] 96-5p26 biggest Web site experiment Cyber24 [iX] 96-11p96 Web server statistics, don't believe them many people complain about not finding stuff on the Web [Byte] 95-7p84 but is finding a paper book to a theme any easier, needs a librarian finding the good stuff is part of becoming an effective user of the net is part of social competence, like finding good books in age of paper on Web for this search systems, crawlers, spiders, robots [Byte] 97-5p63 Standard for Robot Exclusion (SRE), robots.txt [ct] 96-1p92 available systems, [ct] 96-3p164 writing robots in perl [ct] 98-2p114 Internet searching, [ct] 98-13p178 search machines [PCW] 95-4p523 web crawlers [iX] 94-12p78 search engines, Lycos, Yahoo, pictures [iX] 96-7p102 Web searching and catalogs, [iX] 96-9p106 Robo Excl Prot [iX] 96-11p134 3D retrieval for Web, [Uo] 95-8p98 Harvets orig search [Uo] 96-7p6 W3C attempts at organising metadata exa WebCrawler, Lycos, Yahoo [PCW] 95-1p502 exa Altavista [Uo] 96-5p6, Opentext, Excite also Hyper-G Web searcher and link validator [Byte] 95-11p59, [ct] 97-5p164, [iX] 95-3p162, [iX] 96-3p128 before the Web there were already search systems for older services exa mail whois database, exa nic.ddn.mil [iX] 95-12p188, [Krol] exa news poster list for finding mail addresses [Krol] exa Archie for finding files on FTP servers exa Veronica the same thing for gopher exa WAIS networked search text database [Krol] p211, [Byte] 91-5p157, [iX] 95-1p120, [iX] 95-4p172 claim lots of rubbish on the Web, but also lot of good see also Sturgeon "90% of xxx ist crap because 90% of anything is crap" [ct] 95-9p250 good sites, [iX] 95-3p105 electronic newspapers [PCW] 94-8p218 awarded good Web servers, [PCMag] 95-4-11p37 and complaints about volume of downloading use proxy server, cache Web pages already downloaded, don't refetch not only HTTP but also FTP can be proxied, no need for FTP mirrors exa CERN httpd proxy mode [iX] 95-2p154, Apache proxy module exa Harvest project [iX] 96-8p124, Squid freeware implementation to enable use of proxies the target machine name must be transmitted HTTP 1.0 -> 1.1 added this, also used for name (not IP) virtual servers [Byte] 95-5p56 claim of unquestioned need of mainframe for VoD is wrong distribution of fixed data without transaction updates is classic case for many small machines in tree structure use a master server and replicate hierarchially onto the rest and complaints about line costs while browsing batch download of entire page trees to a proxy by wget, is a robot or even automatically updating recognizer [PCW] 96-6p122 Milktruck [ct] 96-8p256 effective Web, Mosaic offline read, update check [ct] 96-11p168 Web tools for efficient offline usage [ct] 97-9p82 IE 4.0 and NS 4.0 push techno, server defined offline reader [Byte] 97-9p38 NS Netcaster push "fuzzy reception" Web lead to need for many, often small servers virtualhosts vs racks of 1H vs many blades in 3H vs VMs Web critic [iX] 96-12p112 Suns WebNFS [Byte] 96-11p63 for less overhead, 1/3 net ping-pong-ing vs NFS fixed port (2049), no portmap calls URL paths, no mountd calls, no client directory traversing was designed for Web nfs://... addressing of pages, but no MIME types may be best to use for faster NFS mounting of volumes LAN PCs Novell first used PCs with MS-DOS as servers, like Xerox using Altos Netware was just a normal MS-DOS program that provided services lack of MS-DOS abilities lead to more and more Novell code, DOS vanished exa better (faster) file system, uses block maps in RAM anec Stuecheli when adding bigger disk had to increase RAM in server but a DOS partition was still used for a very long time to boot NetWare today Novell is desintegrating [iX] 95-12p112 Microsoft also wanted a bit of the LAN action and invented Lan Manager first Lan Manager on OS/2 OS/2 is not a multi user system, no user accounts or file permissions these are retrofitted by Lan Manager, in the server code, not the OS! then Lan Manager on NT like OS/2 NT is no multi user system but at least user accounts and file permissions (only NTFS file system) Workgroups on Windows, is p-t-p Lan Manager with Win3.1x as servers normal Windows 3.1 extended with small servers for peer-to-peer network anec was first a complete failure, called Windows for Warehouses LAN Manager server implementations also for Unix, Samba [iX] 96-1p52 DEC Pathworks (DECnet for PC) for DECnet protocol use a special program, NFT (network file transfer) instead of VAX-like extended DOS filenames for use by any program but for using PC as server to VMS clients FAL.EXE with full abilities additionally uses MS Lan Manager protocol for direct file system access despite using DECnet protocol FAL and LAST/LAD for other jobs anec Pathworks Lan Man requires DECnet to be loaded (for machine name) even if the user doesn't use the DECnet protocol, memory waste unfortunately in Pathworks no LPTx redirector for using LAT printers printing must be done via Lan Manager protocol same also no COMx redirector for using LAT modems Macintoshes first as server a separate machine running AppleShare software later since System 7 peer-to-peer servers on every machine cost saving of LAN file sharing is a myth loading software or even worse booting from a server is expensive slower and unreliable because server crashes put PC users out of order use for expanding too smaller HDs is a joke, new big HDs cheaper than time anec 1503 PCs first used file server on existing net for X servers but in the end they were given new large disks fast SW install from network drive is unreliable anec Billiani net adapter trouble when SAP installation installat from portable disk (Syquest) was faster and less error prone multiuser file sharing is irrelevantly small in typical office most people work on own projects, less collaboration like researchers anec copy files via server instead of floppies, little time saving for types of collaborat in offices email messaging is sufficient/better also better for users as similar to experienced internal paper mail use for licence sharing only circumventing stupid vendors [Byte] 92-8p95 sharing was good in the age of expensive HDs/printers, with Altos were new today separate local hardware is cheaper, when running costs are calculated spending human worktime to save hardware costs ist simply stupid use networks only for remote access and communications with other words only for the original intentions of the Arpanet anec LAN sharing is analog to HI-FI/TV sharing amplifier and speakers too much setup and too complicated use involved to bother saving hardware the HI-FI industry failed 10 years ago with modular shared elements Boot Servers to boot machines without own disks, exa diskless WS/PCs, X terminals, term serv diskless workstations exa Novell net at CSD, we still used boot floppies, also for installing to save cost of a disk drive and controller in every machine these boot from a file server using a BIOS extension ROM on network card diskless PCs can be very small, in small own box, keyboard or monitor exa Sun 3/50 (diskless) has the shape of a large terminal base exa Igel Etherminal4W diskless Windows 486 PC [iX] 95-4p64 or even on single card on the servers AT bus, to avoid serial net slowness direct IO identical to multiuser PCs with direct IO, but with local proc also have the same cable length and user positioning problems floppyless are liked by MIS departments to prevent users from copying data with boot from read only disk into an user menu, no users breaking PCs but they are slow because all disk accesses go over wire, even paging swapping floods net, leads to local swapdisks, fileless WS, exa 1503 VAX booting also floods net, leads to dataless workstations, VAX 24h to prevent all 3 have no autonomy when server is down [Raymond] "dickless workstation" all have problems with server crashes putting everyone out of action diskless machines are the worst off, won't even bring up an OS prompt anec 1503 PCs fetch Windows and programs from VAX, VAX crashes all out later Windows on PC but programs on server allows PC boot but not use also 1503 VAX boots from net, wire breaks and net trouble crash all Alto start up dead with regular broadcast [Raymond] "breath-of-life packet" anec also kiss-of-death packet as joke for crash inducing packets VAX/VMS, DECnet uses MOP, booting system requests boot info Unix, TCP/IP uses RARP/BOOTP/DHCP for info request, DHCP [ct] 96-12p336, [iX] 96-8p152 then TFTP for fetching the actual OS files [Comer1] on Alto nest regular broadcast, on IP nets clients boot ROM requests it LAN PCs [ct] 97-15p250 OS/2 remote boot Netware network card boot ROM simulates floppy, mounted as A: but after boot unmounted, not accessable from PC, requires special tools Pathworks DECnet Local Area Disk (LAD) uses disk image files on server and laddrv.sys driver in config.sys LAST protocol (only datagram, no streams, direct Ether addr, non rout) only way to have net disk appear at INT 25/26 is disk servers allows access to disks or partitions at block level or to image files also these can be speeded up with smartdrv and fastopen, is its advantage can use local caching of disk blocks with standard disk block caches is cachable unlike file sharing via Lan Manager protocol allows speeding up access to read only disks because of read only specially good for CD-ROMs and single machine read/write disks, exa swap file access you can even run MSCDEX on a CD-ROM imported via laddrv.sys for LAD servers special HW, DECs Infoserver for HDs, CDs, even tapes this could be emulated under Unix with read-only export of raw device would require 2 mount, first NFS mount device, then CD-ROM mount contents but see NFS problems with special files and with export/mounting files anec both can't use programs that access disks at block level exa format, sys, label/vol, diskcopy/comp, chkdsk, fastopen, smartdrv on drives created by network clients, exa redir, interlink because these catch disk accesses at INT 21 level (open filename) not at INT 25/26 (block rd/wr), they never hear of access happening also their protocols have no way of communcating block access Mail Servers workstations are personal machines, are often down, prevents running SMTP serv on single task workstations only users program will run, no server possible on machines without 24h network connection no server can be reached in all these cases use a timeshar machine as mailbox, WS mail reader fetches for sending the mail writer can queue mails and send with SMTP when online Alto for reading from the mail server use normal FTP, later Grapevine (see below) Lisp Machines for reading from the mail server, called post offices, POP instead of FTP Unix, TCP/IP NFS should not be used for mail reading because of its security problems for reading from the mail server use POP, in meantime extended POP2 and POP3 or for reading and filing on the server IMAP [Byte] 96-12p135 but POP has problems when a mailing list in to: field [Byte] web project or use servers mail queue and rsh to trigger sendmail -q in sendmail 8.8.2 extension for doing this over an SMTP connection or use UUCP, is spooled, for reading and sending mails, both directions for WS talking to servers on a TCP/IP net use UUCP over IP, direct uucico LAN PCs mail systems based on shared files on a file server, exa MS Mail proprietary protocols and high speed nets allow complex formated mails because of net traffic load and WANs PCs going over to WS type mail progr also the trend of connecting PCs to the Internet is changing mail progr changing from LAN mail to Internet mail, potential trouble [Byte] 97-2p66 Administration Servers [Byte] 95-11p51 directory services [Byte] 97-12p93 central network managment [Byte] 98-4p87 Virtual Interface Architecture clusters on Storage Area Networks [Byte] 98-5p49 SLP service location protocol [ct] 97-7p260 clustering VAX, Unix, NT reduce network administration for sites with many machines Alto Grapevine distributed database for admin info [Lampson] p315 machine names, mail addr/transport, passwords/access control, RPC registry VAX/VMS, DECnet many machines and user data in 1 namespace, VMS clusters [Byte] 96-11p60 [Byte] 97-10p26 NT cluster, MS Wolfpack vs Digital vs NCR vs Veritas [iX] 95-11p190 Unix clusters, [Uo] 96-8p28 Alpha cluster originally VAX clusters were minis connected via special CI HW later between minis and WS via Ethernet and LAVC protocol uses the same LAST transport protocol as LAD disk servers today also clusters of OpenVMS Alpha machines via SCSI [Input] 96-4p8 anec Norbert MS NT "clusters" are only 2 machines, 1 running as hot standby anec Beat AS/400 clusters, got long way to go after VAX cluster description offers mini uniformity (all devices in one namespace, one set of admin files) remote disks appear as local pseudodisks mountname:[]... same also remote devices, print/batch queues, user accounts, privileges PC integration into LAVC would be desirable but is sadly not in Pathworks Unix, TCP/IP reduce network administration for sites with many machines syslogd for collecting system messages NIS for sharing admin info (system config, user login DB) [iX] 96-7p116 NIS+ anec NeXT DNS uses a local server (multiple processes) because NIS or NI when SLIP connection fails (modem drop) DNS caches "host unknown" killing the NI server processes for restarting it crashes entire system also problem that local /etc/hosts file is not evaluated when NI running attempt at fixing this distributed computing environment (DCE) [Byte] 91-11p229 OSF DCE and Sun ONC, [Byte] 94-6p125 DCE threads API (but not real threads in OS), RPC, DFS SNMP for controlling routers, collecting net statistics [Byte] 91-3p183, [Byte] 94-8p191, [Byte] 96-8p55 [Byte] 96-10p97 seeing the big picture [ct] 2002-5p46 SNMP security [iX] 93-7p102 SNMPv2, [PCW] 94-9p331 derives from OSI CMIP, inclusive usage of ASN.1 simple solution simply provide a telnet or X login to device or today even a HTTP/HTLM-form interface LDAP for directory services [Byte] 96-12p121 derived from OSI X.500 directory services, they doesn't fit SMTP [ct] 98-13p146 Intel wired for managment and pre execution environment (PXE) derived from desktop managment interface (because Windows no remote login) anec despite all this no real equivalent of XNS Grapevine or VAX clusters NT at the moment only 2 server failover system [Byte] 97-8p126 MS Wolfpack directory services often fail, because outdated data [Byte] 95-11p51 directory maintainers are the last to hear about personnel movements users have other stuff to do, don't lose if their data is wrong is a classic case of systems that fail because not human behaviour compatible Print Servers [Byte] 93-12p103 the printers talk back, NPAP, [Byte] 98-4p49 HP JetSend comms [ct] 98-24p164 network printing when you are logged in to an remote machine and print something you want it to appear on your local printer, not on one at the remote site when your local machine has no printer you wan to print on one nearby networks can not only provide disks (and install/backup tapes) they can also offer printers to workstations the original Arpanet had no remote printing users had to print to disk, transfer file to local machine and print there as result everyone invented their own methods for network printing Alto [Thacker] p281, [Lampson] p310 for printing Altos with special controller and print engine, exa EARS, Dover for sending data to print server use existing FTP library [Lampson] p308 for specifying what to print use a page description language exa PostScript [Adobe1], [Adobe2], [Adobe3], [Raymond] "PostScript" [Byte] 87-5p185 PS progr, [Byte] 90-7p293 PS intro, printer dot density [Byte] 90-8p297 high performance PS, [Byte] 95-8p153 common driver bugs [PCW] 93-12p372, [PCW] 94-3p376, 94-4p410 and 94-5p260, [Franklin5] anec with PS printer self made ruler for measuring form coordinates also usable for other stuff makeable of printed transpar, exa astrolab anec in [Franklin5] I proposed idea of a PostScript WS for flexibility later I have noticed that Lisp WS have all advantages these would have VAX/VMS, LAT (not DECnet) originally terminal servers were only used for terminals and dialin modems but they are RS-232 serv, can also used for printers and dialout modems doing this they properly become servers, they export services under VMS LAT services can be defined as LTA logical (pseudo-) terminals for printing to a printer on a server use a print queue set to its LTA accessing printer by multiple systems is handled by LAT load indicator clients print queues block when printer in use by an other client DECnet no usage for printing, no machine::printqueue for remote printing must use local print queue pointing to an LAT printer on terminal server actually sensible, because it reduces admin work, no print server process LAT modem services can also be used, with set host /lat also for logins from one host to annother, without /lat DECnet cterm used note that printers and modems directly connected to an host are not usable like this, can not be exported by their host as LAT services reflects DECs philosophy that all RS-232 devices should be on term serv Unix, TCP/IP either connect a printer to local RS-232 port and use traditional spooler or print over the net to an other machines print queue and RS-232 port on clients the standard lpr print queueing program is used but in the printers /etc/printcap entry the rp and rm options are set on servers the lpd deamon waits and calls the local lpr to spool locally the print queue executor does a restricted login to a lpd server, copies uses the Berkeley lpd protocol, named after the deamon for printing to a printer on a terminal server port use a lpd server process running on the terminal server or use a telnet login to server by printer queue processing program LAN PCs connect a standard Centronix of RS-232 printer to port of an standard Netware or Lan Manager server, additional printing process after a while special print server boxes or printers with net built in Macintoshes dedicated printers with a LocalTalk LAN built in were the original reason for AppleShare and LocalTalk network as small network for sharing the expensive Laserwriter anec Apple LaserWriter more power (68000-12) than Macintosh SE (68000-8) LaserWriter NT (68020-16) has the same power as Macintosh II then also used later for file sharing cost saving of LAN printer sharing is also a myth make more setup/administration costs than they save HW costs anec time to get 1503 printer to work, also 1502 printer sharing network 5 PCs with Pathworks (Lan Man), one Mac (Appletalk) and a VAX (LAT) giving each user deskjet or bubblejet is cheaper, HW switch cheapest Compute Servers these are also known as cycle servers [Raymond] "cycle server" to assist small workstations for jobs that need mainframe power or memory but also for dumb terminals, as timesharing systems, login servers or with X terminals as group of shared processors [Tanenbaum] p530 anec Plan 9 was invented for such a terminal and server system originally normal timesharing systems were used, later special compute servers sometimes compute servers consist only of processor power, are diskless or perhaps few service proc with external network or scratch disk IO mult processes with pipes/IPC can run without a common address space on a network they can run on different computers without common memory leads to special systems with multiple processor/memory/IO nodes such systems are known as multicomputers, as each node is a full computer also known as communicating multiprocessor systems name is counterpart to shared memory multiprocessors unlike shared mem no bus-imposed limits on expanding number of processors [Byte] 91-6p231 get the message, message passing for large power use multiple processors, all do identical subjobs this is symmetrical, all processors in a compute server are equal while normal networking is asymmetrical (logic on client, IO on server) but service processors are a form of asymmetrical organisation multicomputer systems [ct] 98-11p82 supercomputers exa Transputer (Iann Barron, 1975) [Dewar], [ct] 97-10p180 architecture exa TU Muenchen 10*6 Transputer system ca Cray 1 power [mc] 88-11p48 Transputer was basically a for its time fast stack based RISC processor anec Mandelbrot at PIC show astonnished hacker, his friend had no clue I actually only had one Transputer proc in an 286, asym 2 proc system but with 4 DMA driven 10baseT speed RS-232 like links built into chip [ct] 97-11p208 C011/12 link adapters for PC or aext hardware connect also an extreme case of built in coroutine support in its microcode switching and full sheduling system incl wait on IO and timers very fast coroutine switch because timeslice polled when empty regs only need to save IP, swap WP, reload PC, ca 1 us switching time the entire coroutine system is in a microcode ROM of only 4k for saving ROM chips in multiproc sys also boot from link by microcode ROM even pre booting DMA for debugging controlled over a link [ct] 97-12p146 and also to save chips for connectiong memory to the processors a full memory interface inclusive DRAM multiplexing and refresh signals also Transputers with server specific HW built in exa FPU, disk ctrl, graph in the end the Transputer was sunk by extreme managment mistakes in market as competitive as compute servers with customers with own code you can't wait 5 years to introduce the next generation of your proc [Byte] 91-8p265 T9000, superscalar, virtual links, far too late exa Torque ComputeServer 8*2*80860 [Byte] 90-5p231 with a single 66MByte/s 64bit bus for message exchange use mem mangement to simulate SMP [Byte] 96-1p46 scalable parallel proc this shows that parallel processing techniques such as vector proc and multiprocessing can be combined for even more punch exa Intel Touchstone Delta (520*80860) [PCW] 92-7p378 this machine (there only exists one) is since 1992 the fastest in the world exa Intel Paragon (96*80860-50) at ETH Zuerich [Input] 94-7p1 the smaller commercial cousin of the Touchstone 64 processors pure processing nodes, 32 service with net, disk exa Gigabooster (7*Alpha) one proc with Ethernet and SCSI, all with intercon anec my joke to use it as if it were 7 machines with a fast network each processor running own Linux kernal with own IP addr, SW with TCP/IP main node does a normal boot, rest boot as diskless workstations later I met one of its designers, it is run like that (but with DEC OSF) exa Cray T3D (up to 2084*Alpha) [iX] 93-10p144 exa ASCI Option Red, 9000 PPro, first teraflops [Byte] 98-3p73 exa Earth Simulator [ct] 2002-14p74 exa SCI connected Nodes or even workstations [ct] 97-10p278 exa Beowulf clusters, simply many normal PCs with fast net anec "not how much mem has your proc got, but how many proc has your mem got" virtual multicomputers [Lampson] p309 original Alto Worm program, CERN Zilla library on NeXT [Byte] 89-7p225 a transparent environment, distributed processing [Byte] 90-5p213 spending your free time, Linda, [Byte] 93-7p57 PC clusters [Byte] 96-5p169 PVM library, [ct] 98-14p50 Linux cluster supercomputer [ct] 99-9p140 Linux Clusters, [ct] 99-9p148 programming parallel clusters [ct] 2000-22p234 linux clusters [iX] 94-7p152 PVM, [iX] 94-11p181 PVM, [iX] 94-12p186 PVM, [iX] 95-7p138 MPI [Uo] 94-8p69 PVM, [Input] 95-?p5 4 Cray J90 cluster at ETH Zuerich "solving" the problem of progr multiproc by using as mult networked machines suggests viewing a network of many machines as a giant spread multiproc distribute a job as background processing job onto lots of workstations this is used for highest power challenges, when reaction time not important basically back to batch processing, just interactive job entry [Byte] 95-10p77 breaking cryptolocks anec networks of workstations were invented as faster alternative to timesh instead of buying a supercomputer spend on upgrading workstations give users financial grants in exchange for idle cycle usage market for users to sell their idle cycles [Byte] 90-4p252 Spawn multiple processor types on one network give binary compatibility problems distrib as source, crosscompilers, multiarchitecture (fat) binaries NeXT claim that only 10% of its sys is code, only 10% growth per add arch processor independant p-code [Byte] 85-1p167 Sweet 16, [PCW] 92-6p142 anec attack of the killer micros [Raymond] "killer micro" more flavour now that micros attack in hordes in multicomputers this becomes especially good image when it is hord of separate workstations Display Servers workstations are flexible and reactive, but have no big processor power timesharing/computeservers give users a slice on a bigger processor result despite workstations remote login remained, timesh is login server to display graphical output from a timesharing system over the net to an WS access the WSes graphical display from the timesh sys, display server such a protocol can also be used for local programs drawing instead of a large amout of system library calls on WS display server, user programs on the timesharing systems are its clients confusion in [Garfinkel2] p124 comes from false understanding of terms destinction is not local/remote private/public or small/big as many think a client is a program which orders work to be done by a server a server is a program which does work ordered by a clients picture multiple clients at top, disk/print/disp/DB servers at bottom think of house builders at top, diff types of workmen at the bottom for finding the display server use the DISPLAY environment variable telnet expanded to transmit env var, also xon program a terminal structure should represent all of the users IO devices to programs like this was case in timesharing systems with ASCII terminals but even these ignored the users printer selection todays machines have multiple input/output, extendability is required see Interactive Input and Output for variety of dev users may connect but none of above have printer info and imaging, sound support, scanner display server should have a printer list and redirect printer output to a printing device in the near vincinity display server should support a sound protocol for monitors speakers this requires separate stuff sound servers, PS print, envir vars, complexity todays VMS and Unix-WS have still not recovered from TTY terminal mentality graph display and mouse added but still not as flexible as interactive sys full display/keyboard/printer support [Engelbart] p209/224 in NLS network virtual terminal 1973, virtual terminal controller MIT/DEC X Window System (XWS, X) [Scheifler], [Garfinkel2] p123, [Byte] 89-1p353, [PCW] 89-3p154 [iX] 93-12p176 X fonts, [iX] 94-4p118 X11R6, [iX] 94-6p168 X resources [iX] 94-7p50 X11R6, [iX] 94-7p60 PEX, XIE, [iX] 95-2p120 Fresco CORBA UI [iX] 95-4p114 PC X server vs X terminal costs, [iX] 95-8p36 iX-Teminal [iX] 95-12p32 broadway embedding X apps in Web, [iX] 95-12p60 CDE [iX] 95-12p172 iX-Term audio, floppy, new ROMs, [iX] 96-6p112 X printing [iX] 96-8p130 X11R6.1 XKB Keyboard extension named from earlier Stanford W system [Barry] p78, [Raymond] "X" uses TCP ports 6000, 6001... multiple displays (=servers, DEC [Byte] 90-11p230) vs multiple screens multiple video card and monitor sets are called screens, not displays is progr with many coroutines (key-net, mouse-net, net-disp for each connect) workstation display servers such as X are only IO drivers widgets implemented using a procedural widget library in programs process programs are written in normal procedural language (usually C) exa Unix WS first MIT Athena lib, later Sun OpenLook vs OSF Motif fight anec Motif = DEC XUI + OS/2 PM + HP CXI + HP New Wave [Byte] 89-5p230, [Byte] 89-7p250] bureau generated mess, looks awfull but [Garfinkel2] p125 claim of Motif = HP wm + Windows is wrong exa VAX WS first Decwindows, in 1990s look and feel replaced by OSF Motif anec IF update of IT VAXstation to Motif came too late libraries are linked into programs binary, large, not easily alterable or relink with call compatible library or exchange DLL exa Athena Xaw vs Xaw3d vs Xaw95 vs NeXTaw but for drawing window frames and system menues separate window manager makes window titles, buttons, also aranges windows, resizes them but this makes programs with diff widgets (form diff machines) all have missfitting windws vs widgets, visual inconsistency anec WINE Windows emulator allways draws its own frames is often used as program manager, mixes functions requires restarting window manager, just because desktop menu changed requires replacing window manager together with widget lib for shell functions (start programs, session (logout) managment, etc) use a shell process, called session manager this may be an xterm, session menu window, session menu popup, win man Unix and VMS run one process for each file being edited as in job ctrl no multiple buffers needed, less progr work, less bugs for exchanging clipboard contents over process borders use cut-buffers in the X server, has problems with data other than text user programs communicate with each other and window manager over ICCCM [Ousterhout] Tcl/TK send command via X server and ICCCM X+wm+ICCCM+Motif is a enormous kludge, CPU killing, compat problems claim of high network traffic [Byte] 96-8p74, but is not, as a saw in IT but portable, interoperate without problem [PCW] 96-6p274 X swapping orgy X Windows only provides keyboard/mouse/video, for others use extensions for sound NCDs NetAudio Server (NAS) [iX] 94-2p144 vs DECs AudioFile (AF) [iX] 94-10p138 for joystick, tablets, etc use Xinput extensions for printing using lpr with ASCII or PostScript is usual Xfree in Linux fast because of direct video card access, not via /dev/crt* not just direct vid mem access, but also video accelerator ctrl registers Linux no true protection, kernal can be modified by user progs if desire VM is only accident protect, not secure against deliberate attacks direct access violates Unix, but protection is not needed on a WS Linux is not actually Unix, is an own OS with Unix compatible API don't use it on critical servers, or only if users can't start own progr but it is ideal for desktops, clients, fast and flexible Sun Network extensible Window System (NeWS) uses TCP port 144 (NEWS) uses is a PostScript server, like on a PostScript printer [Garfinkel2] p128 routines can be sent to the server and later triggered by clients exa Suns TNT GUI widget library, user replacable with an other style exa the window manager is also downloaded into the server, no ICCCM comes from Sun, but good despite that, unlike NFS, because Gosling from AI but beaten by X, from MIT, but bad despite that [Garfinkel2] p113 this is because X is from the LCS, not from the AI Lab NeWS losing market not case of Unix users desiring bad SW [Garfinkel2] p113 but because NeWS was a proprietary design [Raymond] "NeWS" Sun now also must use X Windows, first with Openlook, now also Motif is clear case of a firm losing because of its insistance on copyrights anec [Gilder] Gosling before Java career of brilliant faillures NeXT/Adobe Display PostScript (DPS) [Adobe4], [Garfinkel2] p141 uses TCP port 178 (NXWS) on NeXTs proprietary server is a extension to an X server on Adobes implementations, exa on DEC VMS WS is this also the case for Display Ghostscript, X extension? like NeWS it uses PostScript as its imaging model like X and NeWS only an IO driver, widgets with Obj-C OO Appkit library but NeXTstep despite PostScript unlike TNT puts no user code in server everything drawn from the client this is actually (miss-)feature of the NeXT Appkit, not of the DPS server unlike X and NeWS no window manager, window managment done by the clients leads to mouse pointer only changes between arrow and wait when clicking on an other window (by Appkit), not on entering (by window manager) also right mouse key pops up menu of front win, not window under pointer no wm "shell", session manag by first progr, file viewer, like Mac finder unlike X and NeWS for interclient communic special servers exa pbs (PastBoardServer = clipboard), AppkitServer also NeXTstep uses one process for all docs of same type leads to Appkit selecting top doc of same type on close even if another doc of other type is further up on display stack app stays active even if no other doc of same type, only menu (win!) NeXTstep Terminal.app uses 1 process for all windows and 1 for each shell vs Unix/X XTerm uses 1 process for each window and 1 for each shell this is the reason for closing a doc activating next one of that program like all non-display-server GUIs on single-tasking machines vs Mac pre-multifinder only 1 progr with mult docs, and finder and cdevs only Mac with multifinder the finder and other progs become cdevs vs Windows 2.0 separate instances, menu open often replaced existing doc real mult progr and instancing for each start, DOS Executive normal progr large progr with MSC large model, only one startable in 3.0 MDI multi document progr like Macintosh, worse with window mess vs OS/2 programs, have real tasks, but DLLs shared, overwrite can crash vs other Unix and NT real tasks, no limits, memory sharing via VM system vs Emacs, all docs of all types in one Unix process (M-Lisp interpreter) Emacs not really fitting to Unix because it is Lisp machine with windows vs Unix is a process machine with sessions/terminal(s) even under X Emacs one process vs all other programs separate Emacs one process with documents edited from mult Unix shells use (load-library "server")(server-start), emacsclient vs Smalltalk multi document programs because no processes here the decendancy of NeXT from ex-Apple people is visible anec DPS only one server, window command to printer redirected to screen anec DPS currentfile closefile logout incident, and also with lpr X XTerm/DECterm, NeWS termtool (?), DPS Terminal.app to run old VT based programs on display servers for backward compatibility these programs emulate a VT 100..340 terminal, use disp serv for user IO offer a normal character and esc seq stream to traditional programs XTerm spawns a shell as subprocess, using a pseudoterminal also same input (XTerm-shell) and output (shell-XTerm) 2 coroutines/threads actually output is only shell-buffer, buffer-X with X events Unixes with X only open a XTerm if demanded, else progr stdin/out /dev/null vs NeXTstep always opens a Terminal.app window for every shell program this behaviour can be suppressed with *.daemon file extension but when such program is started the Workspace Managers menu goes, bug similar bug also NeXTstep when starting GUI programs from Terminal.app those progr don't become the active window, terminal stays active win but less bad than MS Windows no Windows program starting from DOS box X is often only used for XTerm, Emacs, seldom for progr w real graphic output only used because of multiple windows, overlaping, resizeable, scroll back colours, background colour, mouse control, multiple windowed programs all this would be possible on character term HW and would even be faster but no SW support, would require extension of the VT terminal protocol and OS support for multiple seperate display areas for diff programs that is actually how X happened, but with graphical HW as its base X terminals are small comp with only keyboard, mouse, display, Ethernet to run X server boot from net the same way as diskless WS or from built in ROMs have same problems with timeshar system crash as diskless WS with servers are lot cheaper than diskless WS, PC with X server are even cheaper than that exa Igel Eterminal3X diskless 386 PC with Linux 0.99pl13 in ROM less admin costs as programs are only installed on the timesharing system one or few timesh and many X terminals make less admin work than many WS even Sun as the most vocal promoter of diskless WS accepts users demand is a return of networks to terminal and timesharing style systems put lot of work load onto the timesh system, esp because of window managment resulted in X terminals with built in window managers, exa twm, olwm, mwm later even with data-less user progr, exa XTerm+telnet, clock, calculator X terminals don't neccessary require a dedicated timesharing system a workstation can be regarded as a X terminal with a timeshar sys built in anec most of my VAX/VMS experience is this type (PC with X server onto WS) this machine showed importance of RAM and disks over processor speed was a VAXstation 4000/VLC (Very Low Cost, cheapest VAX processor ever) uses the same low cost small case as DECs VXT series of X terminals it had 3 programmers timesharing and 7 PCs using it as file/CD-ROM server RAM (first 16M) was too little, swapping, performance back with 24M also multiple disks (100M in case, 400M+2*1000M in a StorageWorks) 100M page/swap, 400M scratch, first 1000M files, second PC disk serv but processor (ca 486DX33 speed) only 2..10% utilised, 50% is critical Sun Ray is simplified X Terminal, just IO hardware and minimal access protocol today also versions built into 17" moni (SR100) or 15" LCD (SR150) users X server already resides on server where desktop and apps are allows user to do hot desktop swapping by chip card, no logout unfortunately protocal is proprietary, else this would be ideal for Linux noisy large PV in some closet somewhere and just small device on desk I would also at work prefer one big Onyx with 64 Sun Rays over WSes Netware, OS/2 and NT despite being multitasking have no X or similar NT extensions for GUI terminals, timesharing with GUIs [ct] 97-3p222 requires a system for remote GUI raster image update [ct] 2000-5p222 from network computer to thin clients actually gives up the "java workstation" NC for terminal-like TC NT timesharing ICA Citrix vs X Insignia NTrigue [PCW] 96-6p274 HDS Winframe, Tektronix WinDD [ct] 96-2p53 here Unix still shows its advantage, flexible connections and IO sharing Citrix WinFrame multiuser/session extension for NT server [Byte] 96-1p110, [Byte] 96-8p74, [Byte] 97-4p68 [iX] 96-12p82 but this uses a proprietary graphical terminal protocol, ICA like the MS-DOS and Windows remote control programs [Byte] 96-1p110, [PCW] 96-1p23 Wyse Winterm standalone term for WinFrame Insignia NTrigue, uses the standard X protocol [PCW] 96-6p274 but has problems with copy protection keys [PCW] 96-8p270 developed with NCD who later went separate, WinCenter [iX] 96-5p102 Tektronix WinDD, uses ICA or X [ct] 96-2p53, [iX] 95-7p40, [PCW] 96-5p28, [Uo] 95-8p112 but also VNC as open system that does this Database Servers downsizing [Byte] 91-9p227 downsizing, bane or boon? [Byte] 97-1p85 data warehouse cornerstones, clients, date cleaning [Byte] 97-10p43 data warehouse web farming [Byte] 97-8p43 data warehouse content credibility [ct] 97-3p284 data warehouse [iX] 94-5p126 cost compar PC/server vs workgroup/PtP vs Unix/Xterminal [iX] 94-9p126 c-s costs, [iX] 95-1p52 c-s tool confusion [iX] 95-4p92 SAP R3 c-s standard SW, [iX] 96-1p112 standard SW referenc model [iX] 96-3p34 c-s cost recomputed incl user effectivity, now better [iX] 96-4p122 data warehouse, [iX] 96-10p38 c-s at beginning, user frustrated [iX] 96-11p114 c-s managment costs, [Uo] 95-10p102 c-s costs [Uo] 96-3p132 Bloor critic par DB SW, [Uo] 96-4-18 Bloor SMP/MPP hardware [Uo] 96-5p18 Bloor par DBs, [Uo] 96-9p14 HPs last mainframe switched off [Uo] 96-11p74 Bloor 2nd generat c-s situation, [Uo] 96-12p12 Bloor c-s report PCs have been used as terminal emulators to mainframes for a long time desire to better utilize the local power of PCs unload mainframe, delay or even prevent needing to buy a new one or even get entirely rid of mainframes, only PCs and PC servers this is known as downsizing the "mission-critical" computing client-server [Byte] 93-6p97, [Byte] 95-4p108 paradigms, TP, CORBA split user interface on client (user IO HW) and database on server (disk HW) clients face the large user interface processor work the more users the more client machines, linear growth, no bottleneck servers only do the actual DB transactions, are mainly IO (disk, net) is classical timesharing, with few compact processor usages the loading of client programs is a local job, as with any other program can be stored on the clients local disk or on a normal file server 6 c-s splitting levels (disp, GUI, app, DB, file system, disk) spliting anywhere between possible, DEC graph [Byte] 85-5p50 Novell graph, [ct] 95-11p203 graph 10 different c-s communicat and interact models [Byte] 96-4p69 muddle some think that real c-s requires the application to be split on c and s with an application specific transaction protocol in between SQL splits c-s at accessing DB level, net protocol is database accesses leads to all UI logic, application logic and DB access code on clients requires large PCs, lots proc/RAM, must be expand, many of them, expensive exa at IT all 286 and 386 PCs replaced with 486 PCs for SAP R3 c-s also heavy network traffic from downloading lots of DB data requires fast and high capacity networks, expensive [Byte] 96-4p76 requires high performance net for large data transfers also all business logic and DB accesses on clients requires lots of applications must be changed when a DB changes, expensive lots of redistribution work when applications changed, expensive add to this that SQL has no standard network protocol SQL Access Group (SAG) faillure, only standardized an SQL library API all clients must be relinked to use a different vendors DB each DB vendor must supply client libs for all machines, often incomplete makes selecting a DB less choice, as it must support all customers machines makes changing the DB near impossible, to much work/cost, vendor lock in compare this with the open world of IP/TCP/Telnet/FTP etc standardised protocols, every machine with implementation can participate only one implementation per machine needed, can be part of OS is a classic case of commercial madness vs university sensibility anec Microsoft Windows with all standards done by APIs is same badness for DB access the use ODBC [Byte] 93-1p271, [Byte] 97-8p53 ODBCDirect, [Byte] 97-9p53 ODBCDirect [ct] 95-3p306, [iX] 95-12p104 SQL with stored procedures [Byte] 98-3p87 SQL stored procedures are evil execute business logic and actual DB access on servers, client calls procs less client load, less data transfer, centralised code changes, no distrib some SQL DBs support stored procedures, to put business rules in server [Byte] 97-6p98 business rules but no language standard, not portable, even more vendor lock in than SQL and having the DB execute application logic drives up server load and language offered was often difficult to program in, set logic vs proc so often part of business logic (rules) on server rest in applications transaction processing no SQL-like separate begin, work, commit/rollback [Byte] 97-6p81 transaction servers, [Byte] 97-8p77 transactions on web instead use a single transaction request to server, less network traffic this single transaction fits ACID properties [Byte] 95-4p126, [Uo] 95-5p90 mainframe transaction monitors [Uo] 96-8p54, exa IBM CICS [Byte] 95-4p123 for SQL-like systems use a transaction monitor, like CICS on mainframes 3 levels client-transactmonitor-dbserver, the first - is the real c-s split 3-tier, client-application-server alternative to stored procedures is applications on server [Byte] 97-2p123 clients only interface to call aplication transactions the application-less clients are called skinny clients or thin clients 3 machines involved for display/GUI, application, DB/FS/disk is called 3-tier c-s [Byte] 95-11p179, client-application-server [Uo] 95-10p124 3 tier model, Gartner graph, SAP R3 3 tiers there is even talk about 4-tier, I think is this becoming tier-o-mania a+s is a multiprocessor mainframe, are both timesharing [Byte] 96-4p75 skinny thin clients in effect editing terminals, like 5250s but with more control over terminals ability, programmable central administration easyness, but server indep apps, spread over procs c-a-s is stepdown from c-s, is easier and cheaper to implement and admin c-a-s is going back to back to timesharing, end of the original c-s idea is a partial return to mainframes, but not completely name like c-s so politically introducable as c-s without admitting defeat mainframe terminals are simply peripheral devices of one ruling mainframe c-s PCs are fully automomous machines with shared data on servers c-a-s PCs are intelligent access devices to multiple central applications pure c-s turned out to be a lot more trouble than predicted [ct] 95-11p306 c-s problems anec c-s compared with teenage sex, talk, no action, unsafe anec there also exist thin servers, embedded processors with real time OSes just running standard fileing/publisching/mail protocols [Byte] 97-10p19 middleware [Byte] 93-6p113 middleware, [Byte] 96-4p67 muddle in the middle many incompatible protocols and library APIs on client proprierary Net-SQL library, no precompiler, exa DEC RDB on server a process which calls the DB lib, exa DEC RDB sqlsrv$server this makes all applications based on a particular server vendor dependant is classic case of vendor lock-in, what "open systems" supposedly solve nearest thing to server independance is ODBC, but only on Windows, only lib with multiple client types makes the problems bigger with multiple servers the problems increase even more the market is a mess, the products not ripe, projects fail lots of talk about "right" concepts, but no details because no experience many articles are stil about generalities and obviousities [Byte] 96-4p71 not about experiences, mistake case studies, lessons learned hardly anyone has detailed knowledge of all issues (PC+net+mainfr+c-s) anec DEC at Kompal begin "oh you're doing a technical sys with c-s DB" with a sadist expression like "oh youre're trying to walk a minefield" lead to middleware to sort this out [Byte] 93-6p113, [Byte] 96-4p65 but problem with slew of accronyms [Byte] 96-4p71, non transparent comes from middleware being an marketing term, having no fixed meaning anec cute but useless client-slash-server, slash=middleware [Byte] 95-4p110 middleware = transport layers = suitspeak for network software middleware is a proprietary solution to proprietary problems more complexity, less performance, more vendor lock-in, an awfull mess makes additional costs and complexity and vendor finger-pointing middleware is a market solution to a market problem, spend yet more marketing battle leads to hackers fleeing, do an own solution what about userfriendly marketing, explain usage, not just hype remote procedure calls (RPC) [Engelbart] p209/224 NLS 1973, [Tanenbaum] p417, problems with pointers p425 [Byte] 89-7p235 remote control, [Byte] 91-3p338, [Byte] 91-5p309 [Byte] 97-1p53 Windows NT RPC on base of DCE RPC [iX] 93-5p174 RPC, [iX] 93-5p180 XDR, [iX] 93-6p184 RPC system tools exa SunRPC [Comer3], DCE-RPC, Tcl RCP [Ousterhout] connectiong clients to servers requires a lot of code, work time this has nothing to do with application functionality, is mechanical work abstract from network data streams to a more convenient interface in software often a higher level program calls a library of functions in c-s often the client logic and the server functions are like this the idea of RPC is to split along an existing library border on client stubs that simulate the called procedures, call the server on server stub server, accepts call from client, calles procedures then server stub passes procedure return values to client as last the client stub returns this as normal return val to caller the library of stubs on the client is known as a proxy same the part of the server software that calles the actual library to generate stubs special interface definition language (IDL) and a compiler with client-proxy and server-proxy modes, automate proxy gen leads to involved edit-2*compile-2*link procedure, programmed in programmer this needs human learning algorithm, thats the computers job in interpreted lang (where procedure call interface def avail at runtime) interp can evaluate this, only needs export and inport commands, exa Tcl remote method invocation (RMI), distributed objects (DO) [Byte] 92-3p122 distrib object managment systems, [Byte] 93-1p261 OS/2 SOM [Byte] 94-1p139 SOM vs COM vs PDO va CORBA, [Byte] 95-11p123 OOOSes [Byte] 95-4p161 CORBA, [Byte] 96-2p193 SOM [Byte] 97-10p95 CORBA and Java for ObjectWeb applications [Byte] 98-1p47 IIOP, [Byte] 98-2p53 Jave RMI and JRMP [Byte] 98-3p55 OQL, OMGs object SQL [ct] 94-8p214 SOM, [ct] 07-3p256 object models COM, SOM, CORBA [ct] 97-11p348 Java RMI [iX] 94-6p38 Sun DOE, [iX] 94-6p46 NeXT PDO [Uo] 95-2p96 CORBA, [Uo] 95-2p123 SOM, DSOM, [Uo] 95-5p112 CORBA exa Orbix this is OO equivalent of RPC, obj and methods instead of struct and proced the same as RPC has proxy libs this requires proxy objects with C++ these must be hand generated, like with SunRPC with Obj-C generic exporter, proxy adapts, like with Tcl, exa NeXT PDO anec NeXT Obj-C PDO bug, passes obj-ptrs as obj copies, not as proxys leads to obj in servers memory without class, server crash when invoced OMA architecture from OMG, with CORBA ORB , "used" by SOM and PDO even Microsoft showing interest for interfacing OLE to CORBA but CORBA 1.x did not even define a network protocol for RMI different vendors CORBAs not interoperable, customer expectance not met only in 2.0 was the IIOP protocol added, but not implemented anywhere this is a classic manager top-down mess, babble instead of functionality distr obj are claimed to replace both mainframe derived SQL and TP systems and RPC and email based systems workflow systems, e-mail based c-s [Lampson] p330 Xerox fabrication use of Laurel-like Cholla [Byte] 91-6p88IS59 EDI, problems with cost [Byte] 91-10ISEp53 forms and mail prevent multi year development [Byte] 93-3p90 smarter email, messaging, MAPI, VIM, workflow [Byte] 94-7p62 acceleratin engineering, [Byte] 94-7p103 workflow [Byte] 94-10p121 EDI formated mails for automatic parsing [Byte] 95-11p204 tagged ASCII forms is a powerfull technique [Byte] 95-12p106 FBI DNA print distributed database [Byte] 96-4p55 work flow without fear, 6 reasons for faillure [Byte] 97-5p40IS7 BPR and workflow systems [Byte] 97-9p65 publish and subscribe, messages [iX] 93-10p116 EDI, EDIFACT, [iX] 94-12p166 implementing workflow [iX] 95-3p152 workflow managment coalition, [iX] 95-6p130 EIFACT [iX] 95-9p140 introducing workflow, [iX] 96-8p135 EDI and Internet [Uo] 96-8p6 Ovum workflow critic, [Uo] 96-9p66 workflow design first a functioning human question/answer structure (BPR) design transactions and access to them along human work flow as if traditional telephone or internal mail were being used then speed up transaction with computer, automated email processing get general purpose tool, convert paper to it, then write scripts office automation systems must be human compatible work flow fits how humans work, fits existing paper experience many programs fail because they are not [Byte] 83-5p15 but designing work flow don't ignore possible inofficial channels used or present users with ad hoc patch ability for defects in official sys but also work flow systems failing, reasons for it [Byte] 96-4p55 passive systems (servers) vs active systems (engines) passive use normal mail servers, intelligent mail readers, local logic can run over a slow net, but never fast, not for data entry/mining active require central server, fast net, crash dependant, inflexible is a document routing system, knows who is next in line to get data this may act as a document base for users "mail" client form processing systems httpd CGI programs can also execute transactions, with data encoded in URL HTML expansions to display form on screen

[iX] 94-10p186 HTTP expansion for sending form contents GET/POST, encapsulated, encrypted alows building of form processing systems, with Web browsers as clients [Byte] 95-10p105 BOMB, [Byte] 95-11p203 VPR, [Byte] 95-12p115 VPR [Byte] 96-5p10 Web development, easy-use, smaller, faster, cross-platform [Byte] 96-8p68 business needs the web, [Byte] 96-9p153 e-forms and the Web [Byte] 98-3p97 Web databases with perl, DBI and Mysql [Byte] 98-7p81 HTML+NNTP groupware [ct] 96-3p170 Web as database system [iX] 96-2p158 CGI calls mSQL database, [iX] 96-8p56 Web calls mSQL, gd web forms development isindex, form, get, post saving state from earlier forms, base mechanism vs capacity increase base mechanism hidden fields, URL extensions Netscape cookies [ct] 97-9p90 cookie killers [iX] 95-11p177, [iX] 96-9p78 cookie badness capacity all in client, in temp files, in server process [Gundavaram] not in client gives dead data problem, from statelessness, as in NFS split form server and script execution server [Byte] 96-8p69 for higher server performance compile CGI programs, no loading interpreter or compile time use stubs called by CGI to access a transaction server process exa NeXTs WebObjects, uses existing PDO to Enterprise Objects system [Byte] 96-7p42, [Byte] 96-9p118 Web project, [Uo] 96-6p118 get rid of stubs, have httpd do the access to transaction server exa FastCGI inter process comms with Apache httpd FastCGI module or use DLLs loaded into the httpd process exa Plexus (written in perl) uses eval for scripts [Liu] p294 exa MS NT IIS use DLLs with ISAPI [Byte] 96-7p133 exa [Byte] 98-3p97 Apache with mod_perl, perl scripts in the server stubs vs DLLs [Byte] 96-8p76 put features into httpd exa HTTP 1.1 language and filetype support with Apache Multiviews exa XSSI directives for dynamic document generation without CGI anec HTTP is not principially slow, just todays httpds [Dobbs] 96-4p70 Web form editing and CGI server transactions are a form of timesharing [Byte] 96-6p53 how to put mainframes on the web, 3270->browser [PCW] 96-1p31 Bajarin comeback of the mainframe via the Web Jobs demo browser+Internet+server similar to 3270term+3174net+mainframe but with more powerfull terminals, with more local logic, form editor 3270 term only does line editing, HTML forms are more like 5250 anec Beat at Orbit program for AS/400 which converts 5250 to HTML later no interest after finding in OS/400 3.20 a httpd with CGI but he doesn't use it, has already AS/400 make HTML, FTP to Linux anec AS/400 showing itsself resistant to Unix servers [iX] 96-3p14 claiming the "return of the mainframe" [PCW] 96-1p31 Bajarin incorrect HTML is forms driven interaction, client controls the show mainframe to Web, Web as screen scraper [Byte] 96-6p53 no isolated island, no centralism, no closed env, no MIS dictatorship instead large collect of Web servers (virtual mainframe) user choses when CGI programs access a SQL DB server they are a form of c-a-s the Web browser is the skinny client, editing terminal the httpd+CGI+perl is the application server [Byte] 96-4p81 the Web becomes really open middleware, no proprietary needed any more the only future for middleware is DB access, the conversation a-s CGI makes the Web c-s (actually client-application(-server)) [Byte] 96-8p68 Web as application platform [Byte] 96-8p71 traditional c-s already called legacy system CGI servers used for firm internal users gives intranet, [iX] 96-8p44 the Web mades Unix graphical, gives it an text driven GUI system [Byte] 96-8p70 with HTML forms the Unix scripting simplicity goes GUI with this Internet returning to its roots, terminal net for remote login the Web makes Internet usable like GUIs made graph HW usable Java and Hotjava from Sun Bill Joy and James Gosling [Tittel], [Gilder] SW shift [Byte] 96-1p77, [Byte] 96-4p129, [Byte] 96-9p63 java dynamic linking [Byte] 97-1p68 Java as Platform, [Byte] 97-8p45 Netscape Java IFC [Byte] 97-10p87 Java down to business [Byte] 97-12p17 Netscape Java IFC developed from NeXT Appkit [Byte] 98-2p40IS7 multiapp smartcards, Java cardlets [Byte] 98-2p81 JavaBeans, [Byte] 98-3p53 Java Exeption handling [Byte] 98-5p60 speeding up Java [ct] 96-7p258, [ct] 97-2p26 JDK 1.1, [ct] 97-4p420 JDK for Linux [ct] 97-6 p350 page tune, JavaScript, Java, perl, [ct] 97-6 p364 JDK 1.1 [ct] 97-9p300 Java Beans, [ct] 97-11p67 MS vs Sun Java fight [ct] 97-11p23 IE 4.0 Java 1.1 incomplete, [ct] 97-12p27 IE 4.0 Java incompati [ct] 98-2p54 Sun Activator real Java as NS plugin and IE ActiveX [ct] 98-2p198 Java class libraries, Sun Swing vs MS AFC [ct] 98-7p196 Java Object Signing for giving more access [ct] 98-18p168 programming with swing [ct] 98-25p20 MS must produce true Java, [ct] 98-26p36 Java 2.0 [ct] 2000-20p242 Java Native Interface (JNI) to call C code [iX] 96-7p120 Java language and Hotjava browser [iX] 96-4p3 Java only for ganes and insecure, [iX] 96-5p62 Java intro [iX] 96-6p142 Java class libraries, [iX] 96-7p142 writing applets [iX] 96-10p84 Java language critic, [iX] 98-9p42 Smartcards with Java [Uo] 96-8p84 Java Workshop [PCW] 96-2p232 HotJava browser [Java] 96-7/8p16 and p36 Java developments http://java.sun.com, ftp://www.blackdown.org/pub/java/linux ftp://sunsite.unc.edu/pub/languages/java ftp://ftp.uni-koeln.de/pc/Linux/java Java is a general purpose OO programming language combines objects/syntax from C++ and mem managm from Lisp [PCW] 96-2p232 also multithreading in lang, no libraries or sys calls [Java] 96-7/8p57 Java language is object based, not just object orientated like C++ translated to processor independant bytecode, like later Alto systems source xxx.java becomes bytecode in xxx.class, like Emacs *.el->*.elc Java is fairly slow because of interpretation and dynamic linking [Byte] 96-9p63 method invocation overhead, [Dobbs] 96-4p52 tuning Java for speed Java chips [Byte] 96-11p79, but sing function, no real advant or better just-in-time compiler, loadtime bytecode->native and anyway Java is no slower than the M-Lisp beneath Emacs Java support in OS, exec() recognizes Java bytecode files, calls interpr same idea with slight variation as C# [ct] 2002-4p98 AWT (Abstract Window Toolkit) as call interface for accessing GUIs this makes Java a new hardware independant platform [Byte] 97-1p68 but AWT limits and implementation trouble [Byte] 97-1p70 AWT is like XVT a virtual toolkit, lowest common denominator limits and implementation bugs, but at least mult vendors on common platforms and wide usage also drives freeware versions HotJava is a Web browser written in Java, with an extra tag applets are chunks of compiled Java code, referenced by this tag [Java] 96-7/8p47 writing applets, [ct] 2000-11p226 Java sandbox they are downloaded from a standard httpd, then dynamically linked in and executed as viewer or protocol extensions of the browser Java is better for Web applets than other interpretative languages Perl (strings only), General Magic Telescript (closed), TcL (weak) Lisp/Scheme (dead), VisualBasic (closed), Dylan (kill [Byte] 96-1p197) anec [RFC] 1000 first Arpanet meet design NIL download [Hauben] "nwg" using HotJava+Internet+server is similar to using a processor terminal local part of program downloaded from server to a standardised terminal Hotjava can vary from form editing term via processor term to full c-s c-s is going over to skinny clients, Java is ideal for writing them [Java] 96-7/8p53 using Java for clients in 3-tier system but is Java used for anything more than show effect [PCW] 96-6p203 Krol applets can also take up connect to home/other server via the net either call CGI via normal HTTP and recieve new page, includ APPLET or use CORBA for direct access to transaction servers [Byte] 96-4p81 [Java] 96-7/8p22 and p41 combining CORBA and Java higher performance than httpd+CGI+perl, more powerfull transaction same use Java RMI if client and application/server both in Java the Web is simply used as a client program distribution mechanism there even exist entire HTTP servers written in Java exa Sun Jeeves [Byte] 97-6p115, W3C Jigsaw [iX] 96-9p108 [Byte] 97-8p56 Web server components, servlets [Byte] 97-8p109 using java servlets, [Byte] 98-3p55 servlets [ct] 98-3p144 Java Web server, servlets with Java extensions, like Plexus evals, called servlets Java development tools faillure, complex, get in the way better use editor+javac+browser [Byte] 97-1p70 Java compiler, runtime and AWT open for using/reimplementing the HotJava browser is free for non commercial users Suns original code has a cheap licence, even Microsoft is licensing it but this does not mean that MS is giving up VB, just having both but even supporting someone elses standard is a great step for MS Sun has decided to respect the lesson learned from NeWS failure Java gives objects to the rest of us [byte] 97-1p40 at long last OO for everyone, has made it quickly the standard Sun scattered vs smalltalk hindered by Parcplace Java and Hotjava have spawned a lot of dreaming inclusive dreaming of using a simple program and if a function is missing simply adding it as an extension exa add a complicated formula to simple spreadsheet [PCW] 96-2p237 but this will only work if base programs are extensible, not automatic proponents are forgetting lessons from the OO subclassing faillure inclusive talk about the end of monolithic software even the end of Microsoft [Byte] 96-3p46, is dreaming, loss of reality MS has lots of code, can be adjusted to Web usage, slow but possible Java leads to X terminal-like devices with built in browser+mail/news-reader such devices are called Web terminal, Web PC, browser box, net top box or most popularly Network Computer (NC) or even devices with only Java and HotJava built in for mail+news+finger+talk+IRC download the neaded modules as Java applets even traditional PC jobs (text, spread, paint/draw) download modules such devices are often explicitely referred to as Java terminals [Byte] 96-3p44 Web PC fly or fail, bandwidth, cheap proc, prg lang, OSes [Byte] 96-4p24 first Web PCs, Teknema, ViewCall (for connect to TV) anec ViewCall made by Acorn Online Multimedia [PCW] 96-4p35 [Byte] 96-10p50 HDS @workstation NC, Telnet+X+Web [Byte] 96-11p105 Apple/IBM/NetScape/Oracle/Sun NC reference profile NC is simply any computing machine that implements a list features in the beginning the NC was hyped up as something totally new together with many pictures of a Web terminal type device now they are saying it is simply a standards list, any good PC is a NC and complaining that "others" want to tell you that its a "terminal" is the NC now a Java terminal or ist the term simply marketing hot air [Byte] 97-3p26 MS PC97 classes, incl NetPC, Zero Admin Windows ZAW, OnNow [Byte] 97-4p66 NC vs PC, [Byte] 97-5p81 PC vs NC, [Byte] 97-7p53 JavaOS [ct] 96-6p24 Oracle NC presentation, [ct] 96-12p18 first Sun NC [ct] 96-12p250 NC critic, mythoses Java end of SW monsters, open standards [ct] 97-3p218 NCs, still not here, price calculations questionable [ct] 97-4p66 Suns first NC fails to make good impression [ct] 97-4p238 Microsoft PC97 counterattack, [ct] 97-5p83 NC still not here [ct] 97-11p90 Etherminal 5J NC, Linux X terminal with Netscape built in [ct] 98-10p226 Windows NT terminals, Hydra (Win term serv) and Picasso [ct] 98-11p24 Apple iMac, answer to the NC, first to maka an NC cool [ct] 98-18p134 iMac [ct] 98-12p160 Internet TV Boxes, bad picture, outdated formats, slow [PCW] 96-1p23 IBM Gerstner, power migrate back to server, network appliance anec Gerstner claims PCs are worst case of planned obsolence he has seen not at all, PC industry doesn't have talent to plan anything like that is simply effect of rapid techno advances and lots of marketing fog [PCW] 96-1p343 Oracle Ellison NC browsing+mail+wordprocess+videoconf anec Ellison even believes in booting over the net, but OS in ROM cheaper for upgradability better OS in Flash-ROM, download only new, same apps Ellisons NC is actually nothing other than diskless WS with simpler OS [PCW] 96-4p35 Oracle/Acorn NetSurfer, OS in ROM, download apps [PCW] 96-8p20 NC reference profile 1 [PCW] 96-8p23 MS Simple Interactive PC (SIPS), answer to price, simplicity [PCW] 96-9p104 Acorn NetStation for on TV, HDS @WorkStation, Bandai Pippin [Uo] 94-11p3 idea of "Internet PC" before Ellison [Uo] 96-12p3 NC central vs user desire for flexibility but NCs will only work with fast network (LAN), not at home or in portables [Byte] 96-2p10 bandwith not enough, requires LAN or cable modem [PCW] 96-8p34 chances as Intranet terminal, not at home [PCW] 96-8p35 games machines fail as NCs because lack of bandwidth most likely users are corporate office users for standard apps on LANs most likely for use as VT100, 3270 or 5250 replacements on Intranets low cost, no local data to be lost, reliable server backup, c-s types MIS department may push them on users to regain control [PCW] 96-6p30 some users will prefer them, but others will want more local control [PCW] 96-3p224 PC freed users from mainfr+term, NC dependancy, risks NCc reduce cost of ownership, but what about gain and profit (p=g-c) 2 types of users, PCs give creative/power users freedom to do what want vs saddle follow-the-leader ones with low power/price, admin overhead timesharing/NC reduces cost less for followers, but prevent creativity anec why power users so inflexible, because they fully use their tools I am very sceptical that normal PC users will accept them, to central at home I only see one form of use, as a second system on TV in lounge fetches data via home Ethernet from server or desktop PC [PCW] 96-5p23 but even for this I would prefer a diskless PC with TV as output for example an multimedia PC with TV output with added Ethernet home use as only system with public Internet for programs will cost more line rent than it will save HW costs, not worth it portable use will fail because no fast network possible anec don't use portable, use public NC like public phone [Byte] 96-3p47, [PCW] 96-1p343, only carry identification card but the biggest revolution in phones is in mobile phones, not public NCs are related to terminals, X terminals, diskless WS [PCW] 96-4p47 X terminals inflexible single purpose HW, bad investment same NCs, are lobotomised, inflexible, not upgradable, avoid them [Byte] 96-3p46 Bill Gates "ask question what is missing from PC" [PCW] 96-5p33 "are X terminals becoming fashion again, better cheap PC" anec local term, ed term, proc term, WS/PC, NCs is cycle of reincarnat NCs are the rediscovery of the data sharing of timesharing machines actually term/mainfr vs nc/appserv vs pc/dataserv ist applic distrib Sun/Oracle Java NCs are rebirth of diskless WS, Suns original systems anec many say NCs are only marketing projects to recover the PDA/ITV losses superservers [Byte] 95-5p48 your next mainframe, [Byte] 96-7p151 Tandem ServerNet [Byte] 97-6p40is21 specialised servers, [Byte] 98-3p81 parallel DBs [ct] 97-7p252 PC power servers, [ct] 99-6p302 high availability systems [iX] 94-11p50 parallel database servers [Uo] 95-10p106 Pyramid dual Pent SCO, [Uo] 95-11p94 ServerNet the power increase on microprocessors in todays PCs together with c-s are leading to demise of traditional mainframes [Raymond] "mainframe" but some DB jobs just need mainframe style IO architectures DB servers will merge with mainframes to give superservers [Byte] 95-5p48 already some DB servers more like mainframes than PCs [PCW] 93-12p527 exa IT c-s HP 9000/800 VME bus, multiple DMA SCSI with each few disks are mainframe architectures, also in cost and size exa HP 9000/7xx WS vs 9000/8xx minis vs IBM smallest 370 if you define mainframe as ECL technology and 370/3090 instruction set then then are dieing fastly anec Intel boss when questioned about yet another mainframe firm merger "the theory seems to be, to make stones swim, tie two together" if you define mainframe as large memory and high IO troughput then they are well alive, and they will stay so for ever IBMs POWER architecture intended for PC-WS-mini-mainframe, Workplace OS DEC already 1980 VAX WS-mini-mainframe, now Alpha PC-WS-mini-mainframe but traditional mainframes will still stay for a while longest in banks, insurances, air carriers if too larger load on a DB server or an app server split the data for partial transactions over multiple servers exa personnel data, stock, orders, job states, accounting client programs spread the diff transact (even if from one user command) for automatic of this use distributed databases [Byte] 94-6p139 split online transactions (real time) and evaluation (batch, interactive) data replication, data warehouses, data mining [Byte] 95-10p83, [Byte] 98-4p57 Data Replication c-a-s programs run a and s on different machines with net in between net between the a and s procesors can be a special short parallel bus put a and s on different processors of a multiprocessor machine only connect client "terminals" to a-s with normal Ethernet while s needs disk access, a can be run on a disk-less processor node downsizing cost saving is a myth, like LAN file/print server cost saving [Byte] 98-7p65 TCO hardware load sharing in form based programs is not as dramatic as predicted c-s client single user PC, timeshared server, Ethernet in between vs mainframe single user term, timeshared controller and mainf, 3270 between one server cheaper then mainframe vs many PCs more expensive than term clients in transaction processing are simply user friendly character term questionable whether GUI is sensible for such jobs (slower) slows down work speed, takes user longer for job, higher costs perhaps sensible when a mix of transaction and PC programs on one screen even then screen switching would be better but no standard for it on PC c-s incompatibility problems, middleware costs (money and performance) high c-s installing and running costs eat up claimed savings exa IT SAP setup time consumption c-s requires less app admin costs but more client and server admin also less flexible to use reduces benefit from computers single machines more app admin but have less usage cost, more work done gain from machine - cost of admin+using counts as success comparison the real advantage of c-s is the gain in flexibility from rewritting SW made by people not caught in the decade old programs in use anec reasons for downsizing in IT were mainly political, IF not responsive downsizing was done despite technical and cost doubts by me and ChS c-s is a classic case of "saving, inrespective of what it costs" "we've spent lots of money on desktop sys, we want them to unload timesh" but the costs of getting then to do this are more than a bigger times sys exa IT to get off of mainframe had to upgrade all 286/386 PCs to 486s most likely buying an own small mainframe would have been cheaper anec GMs claim of no advantage of using computers for 20 years and many similar claims that computers don't save time [Byte] 91-7p101 do computers save time?, [Byte] 92-8p360 produc MacGuffin [Byte] 95-5p260 because bugs, pseudo-experts, magazines by sales not peer [PCW] 94-9p240 claims that no gain in productivity is to be seen part of the expected savings were lost to customer cost pressure saving must be looked for in retained market share it is the law of market economy that reserves are used up for fighting part of the expected savings were converted into quality improvements main advantage of computer is better work quality, not saved time/cost allows you to do things you coudn't do before part of the expected savings were lost in repeated revisions of output exa "painless revisions" use up saved time, but give better result part of the expected savings were lost in increased regulations computers allow more and more time waste, exa billing, controlling [Byte] 92-6p101 Pournelle productivity paradox not surprising with PC savings are partially lossed on GUI configuring, font didling selecting the nicest desktop [Byte] 91-7p101, [PCW] 92-11p174 screensaver/wallpaper/colours/fonts is stress relaxation in a way which doesn't collide with bad concience for time wasting primary problem with todays work is boringness, no rest/play allowed play gives better work morale through feeling of control over machine this improves life quality, workers having more fun at work isn't really a loss for humanity, but bureau (profit=good) think it is German "Machbarkeitswahn vs Nuetzlichkeitswahn" both antagonists, harm each other, but later more harm to 3rd pers often savings went lost in inflexibility of centrally deplored systems result of automating principially flawed bureaucratic systems exa presentation graphics are used for more intense bureau weapons race [Byte] 97-1p40 Sun McNealy forbid using Powerpoint, best result ever anec me 1991 graphics for PS lecture by hand, colleagues joked anec presentation graphics program ads "make bad data look good" is a case of Parkinsons law, systems grow to use resources [Byte] 93-7p19 often savings were lodt due to old inefficient structures a snail with a turbo is still slow, exa buy a net and don't use email you must change organisation, but this requires acceptance by menbers isn't the case in top-down dictated "efficiency increasements", BPR often comp was bought with unrealistic ideas, advertising vs reality administration and updating costs were left out of optimistic estimates exa cost of updating to 4 digit year numbers in 2000 [Byte] 96-1p36 keep on replacing systems instead of running them until end of their lifes keeps on adding costs, destroying gains from long term running systems exa every half a year get user to buy yet annother upgrade exa Microsoft Win3.0 and Win95 "its so cheap", but that was only software then follow up costs of hardware, users must spend more than intended exa c-s amounts to systems replaced, computer ind income, customers cost don't forget that their sales depts are payed for getting at your money not for helping you, don't fall for them and their hype the computer industry (like every other business) is profit oriented has wrong priorities in customer efficiency vs own sales volume fight but also [PCMag] 95-4-25 PCs worth their costs, even if 2 year replace and even if comp make no gain they have recovered own costs, but not more is a case of bureau make decisions based on cost vs gain but failling at realistically estimating either if gain or cost doesn't appear on their balance sheets it doesn't exist that one or other may appear as hidden effect is ignored accounting data should be treated with suspicion [Raymond] "numbers" exa there where I worked, I woudn't believe anything derived from it cost of using computers appears in clumps, the gain only in small bits human brain detects and memorises outages (hurt!) better than gains anec Xaver 486 PC 8kFr vs 10kFr, 2 days eval, cheaper despite warning later kept on going wrong, keyboards replaced ESDI disk lost low level format, Alex delay, work time anec salesdroid from cheap PC firm claimed that failure was our fault but I had used my emm386-less boot disk, so his claim fell flat anec father at home new PC from Ueli, in office cheaper from Siltron in the meantime wasted much more time with crashes, reinstallation exa Windows E3.11 over D3.11 at home worked, at work both crashed anec TV filmer term kosten-nutzen-trottel, is deformation professionelle test for yourself, try doing your job without comp, see how wrong they are this whole issue is a classic case of bean counters going wrong most of this computer is no advantage stuff from groupware marketing slime implying that with groupware the situation will magically change [Byte] 92-8p360 Jim Manzi Comment, [Byte] 92-11p24 rebuffed [PCW] 93-2p405 "groupware will magically change all that" they are in the wrong, even non-network comp speed up, but not optimally with primitive technology individual was speeded up, now interaction is bureau haven't learned the lessons from this, will repeat same mistakes regain of control of computing by central departments, MIS [Byte] 97-4p66 NCs, cost control or mind control? [PCW] 96-5p45 but a user focused PC support group is a good idea batch and timesharing were central, with PCs computing became distributed now downsizing is taking it back to central control claims that this "is good for the organisation", but for the users/workers? the old batch/timesharing systems were sold to bureau to make them stronger PCs were bought by individuals to make them better at doing their jobs computers as tools, enable them to do better work, gave micro revolution now back to central control, prescribed what is allowed [Byte] 91-4p394 bureau are discovering that PCs "are not personal, belong to the firm" this translates to "stop users doing what they know best for their job" result of this is that the bureau shooting themselves into their own feet making life easier for admins vs users [Byte] 91-7p24 small lowering of admin cost vs large increase of repeated user costs bureau (in)efficiency, in theory save costs, in practise waste time attempts to prescribe what SW is used, users dissatisfied firms should standardise data formats and net protocols used exa Xerox Alto many diff OSes, same file sys and net proto [Lampson] p301 if networks are viewed as infrastructure to help users it is good but if for regaining control bad, this is a case of happy bureaucracy case of bureau general dislike of things they don't have control over claim that mission critical data should not be stored on PCs that it requires central places and managment, else unreliable, data loss is not true, it does require clearly defined responsabilities, exa backup exa personel data on a machine of personel dept, they are responsible if load on machine of data owner is too large, use local server for servicing the machines OS, loading programs and net servicing use "comp mechanics", analog to car mechanics, no central department need Agents [Byte] 88-12p267 intelligent software agents in groupware [Byte] 90-9p241 Kay Agents needes, [Byte] 91-2p203 Kay agents [Byte] 91-5p126 OLE vs NewWave, [Byte] 91-10ISEp43 [Byte] 94-5p113 Telescript, [Byte] 94-10p51 smart nets, [Byte] 95-3p97 [Byte] 96-6p48IS3 agents for data warehouse, [Byte] 97-12p44IS9 single inbox [ct] 96-3p156 inet agents and telescript, [ct] 97-15p234 agents [ct] 98-23p110 agent theory, [iX] 96-4p138 [PCW] 94-6p262 Telescript, [PCW] 95-4p523, [PCW] 96-6p230, [PCW] 96-6p230 1: scripts with rule based syntax 2: natural language script languages, natural lang UI 3: intelligent help systems that guide user, such as MS Office Wizards 4: shell scripts sent to servers, executed there, results sent back exa Telescript, safe-Tcl adjunct to MIME [Byte] 96-2p101, own interpreter a Web server with Java applet-like extensions (servlets) would also fit here [ct] 98-20p198 Jini, JetSend, Inferno automatic networking [ct] 2000-15p148 home automation from Jini to Inferno even uux is actually an agent system according to this definition 5: rule controlled flexible gateways between different media types user has one inbox on preferred media, multiple addresses on all media messages of other formats are autoconverted 6: online personifications, also called avatars [Byte] 96-2p69 multiple meanings are result of great sounding words with unknown meaning this is excelent example of great sounding words obscuring simple technology and also wishfull thinking of managers and marketing hype originally intended meaning of word [PCW] 88-12p128 Kay anec term agent comes from McCarthys AI "advice taker" [Byte] 91-2p204 Kay Network Security [CCC], [Scientific] 94-3p72 wire pirates, [RFC] 1244, [RFC] 1281 [Bradner] p261 network security in IPv6 [Byte] 94-6p165 distributed system security, NFS, Kerberos [Byte] 97-12p67 Extranet security, [Byte] 98-1p89 HTTP authentification [ct] 97-12p246 ARP and ICMP spoofing [ct] 97-13p166 Internet security, [ct] 98-6p346 CGI security [ct] 98-17p34 back orifice "remote admin" tool [ct] 98-18p80 cyber warfare, infowar, [ct] 99-3p142 Internet security [ct] 2000-6p202 thin client security, dhcp [Uo] 95-5p48 SATAN bugs become potentially more damaging computers are often unpredictable, nets are even worse exa [Raymond] "ARMM", [Raymond] "sorcerer's apprentice mode" exa Apple mail desaster [Garfinkel2] p85 exa AT&T long distance phone net super crash this was first blamed on intruders, but was result of a bug in all devices hacking [ct] 99-23p46 15 years since CCC BTX hack on networks all normal timesharing system security threats stay but danger is only to servers, as it requires some form of login but craching becomes easier because of fast network instead of phone dialing, no exponential backoff leapfrog attack, one machine to other hide orig [Raymond] "leapfrog attack" makes even insignificant machines targets, for use as stepping stones multiple server processes offer more entry points to be hacked is like back doors, servant entrancies or cellar windows into a house use of client machine to run automated hacking programs automatic scanning for security holes and break ins it is more powerfull than a dumb terminal with a user typing exa scan net for open ports with SATAN security analyses tool [ct] 95-6p24, [iX] 95-6p54, caught Norberts Web server [Uo] 95-7p3 Dan Farmer lost job for showing security holes exa scan net for break ins with net card in promiscous mode use a PC with no own servers to avoid the scanner being compromised for alarming admin use modem and pager, exa [Stoll] missuse of automatic login files (passwd, .rlogin, L.sys) but clients can also help security by offering autologin procedures, users won't try to evade security exa IT pwduse with encrypted password stored on machine this also enables the use of more complex authentification systems exa login sequence count in Taylor UUCP exa zero knowledge proofs [Byte] 87-10p149 exa challenge response, no password over line [Byte] 97-2p56 anec problems with command.com when pw on command line, better in file using IP address of client as identifier, host based security prevents having to transmit passwords over the net, snooping requires IP address to hostname (reverse) mapping by .hosts or DNS then finding client host name in .rhosts or similar access file but problematic [Byte] 95-11p206 multiple users can be on a machine with one IP address, no selectivity once a trusted machine is broken all that trust it fall also IP adresses can be faked by owners of routers, need to trust network requires known IP addr, dynamically allocated IP addr can not be used anec .rhosts and exports with alias, when changed mountd/xhost crash sending data over and encrypted channel, exa ssh verion of rsh no security problems on client-only workstations do not run any server processes on machines that don't need to offer them disable all deamons on clients, if possible for intended use exa Unix telnetd, ftpd, sendmail -bd, fingerd, inetd, portmap exa PCs with p-t-p nets, exa Lantastic, WfWG, Pathworks FAL, TCP/IP WfWG at begin had no usable security at all, only password per server this allows clients to have no security, like standalone machines even Unix clients can be non secure like DOS, Win, Macintosh or OS/2 but display servers make server-less workstations impossible gives a large security problem, because accessible from anywhere on net exa picking user typing a password off of screen [Garfinkel2] p131 X is specially bad with its TCP port above the 1024 limit the same problem exists also for sound servers exa NeXT public sound server used as spying bug security none vs no public connect vs host list vs Kerberos access ticket also Magic Cookies [Uo] 95-1p40 stops xkeys spy, xwatchwin hijack but really secure would require a TCP/IP stream opened by terminal like on ASCII terminal logins, requires X terminal to issue exec or on client machine a "proxy X server", send over ssh channel note that despite of this accessability forking a running programs display onto second screen is still not poss not even if the user wants to do this this is because progr opens socket to serv in DISPLAY, OS doesn't know incidentally this would be possible with a TCP stream worms [Brunner], [Lampson] p299, [Scientific] 8?-?p15 Xerox Worm, [Raymond] "worm" are programs that use automated hacking followed by download and exec the hacked machine the repeates the hack, ad infinitum worms are rabbits that spawn their offspring processes onto other machines worms are not viruses [Spafford2] p728, as is often written [Lundell] exa the Great Internet Worm [Lundell], [Raymond] "Great Worm, the", [Spafford1], [Tanenbaum] p184 used a sendmail back door, a fingerd bug and cracking bad passwords was actually only BSD Unix Worm, attack only Suns, VAXen [Garfinkel2] p257 didn't touch machines with other OSes, exa TOPS, ITS, VMS, other Unixes the fingerd bug was defanged by running fingerd with no privileges, no root the many deadly sendmail bugs would also be beatable by same method on net only a small non-SUID smtpd program, running without privileges call sendmail which is SUID the same as /bin/mail calls it anec from RTM, at the time of the Worm, his father was working for the NSA exa "I Love You" MS Word macro spread by active emails, same VBS scripts file access world readable files are now truely world readable Unix as file server is unsafe, due to the generally bad Unix security NFS is an extreme security hole only restrictive exported directory choice and read only setting other method avail today make non predict inode numbers with fsirand but is only little protection as intruders can simply try all inodes usage of info scrambling not poss because of losing key on crash real security would require TCP login, to use full Unix protection sys or UDP login-and-fetch-user-ID-cookie, use then for enabling accesses this will not work because of stateless server design Kerberos access tickets are also used for this never make a machine with critical data on it a NFS server anec LUGS NFS to ejected CD-ROM break in with SUID bash anec Linux Net-howto remark "unlocked door, publish it, go on holiday" Netware is a lot safer, no telnetd and users, only file and print deamons also Netware is up to 50% faster for file servers and Oracle DBs but Netware has problems with all processes running in ring 0 but these can be solved by having only one service per server also Netware has problems with X flag [ct] 95-3p304, same NFS, but admitted also Netware has problems with being a proprietary system, IPX not public Lan Manager on OS/2 or NT no better than Unix, as both are upgraded p-t-p wiretapping and snooping Ethernet and Token Ring broadcast all data transfered to all machines any PC/WS with a net card in promiscous mode can be used as network monitor the PC/WS can be plugged into a spare socket, will recieve all data on net some sys admin try to prevent this by disabling all spare sockets and by locking net equipment in a cabinet but all lines that are in use are accessible anyway, they can be tapped anyone can deliver wrong answers to ARP requests, this is called spoofing [iX] 95-4p184 IP spoofing via sockets later they catch an other machines packets and examine them the spoofer can even forward them to the real host, avoid detection spoofing can be found with ARP traces, multiple IPs ARP to same Ether addr but such anti-spoofing programs missfire when proxy-ARP is in use also attacks on routers and DNS databases [ct] 97-10p142 TCP hijacking, [ct] 97-10p286 DNS spoofing [ct] 2002-11p84 IP routing sabotage Kerberos [Byte] 91-9p122 authentification, Snefru, MD5, Kerberos access ticket requested client by terminal, sent to server when starting server verifies it by asking Kerberos, complex, is a kludge timout design (8h) is losing, no regard for typical usage pattern firewalls [Cheswick] AT&T, [Liu] p497, [Safford] TAMU Security Package [Byte] 95-4p91, [Byte] 95-10p179, Linux kernal ipfwconfig packet filter [Byte] 96-1p155 [ct] 96-10p332 firewalls, [ct] 97-4p308 firewall basics, architectures [ct] 97-6 p322 Linux ipfw kernal packet filtering firewall [ct] 97-11p332 data tunneling over ICMP, [ct] 97-12p246 ARP and ICMP hacks [ct] 99-3p154 Linux firewalling [iX] 94-7p130 firewall types, functions, [iX] 95-8p140 TIS FW kit [iX] 95-9p176 Linux ipfw firewall to shield servers on low security on LANs connected to public networks concentrate all security at one central point, not mult servers reduces amount of targets to open to attack attempts but they only stop external intruders, not insiders spying [Bradner] p262 all firewalls are actually patches to cover bad server security better would be really secure servers and client SW to hide security exa use TCPD in inetd.conf or xinetd on server filtering at packet vs transport vs user program level packet level allow all traffic not from or to internal port under 1024 are simple and transparent, but can be broken from the inside exa Norberts LUGS servers transport level TCP SYN packet must come from inside anec FTP problem, data connection originally socket opened by client then connection opened by the server [Liu] p507 now to avoid problems have client open connetion, passive server UDP/ICMP allow answers to recently transmitted packet, with timeout are safe, but are still transparent to users client SW this allows near optimum security without disconveniencing users one implementation of this is use internal RFC 1597 and IP masquerading no connection from extern to local machines as they are not addressable user program level have most flexible filtering, but not transparent require proxies, get in way, complicate SW [Byte] 95-7p140 exa IF firewall requires specially altered clients that know proxy server it gets in the way of users, denies them the services the net is for new services must wait for more SW, classic case of vendor lock in anec paranoia, 2 solutions to safety [Brodie], this is living in cage public accessable server (mail/FTP/Web) outside (net safe, only server broke) never inside of the firewall with a tunnel through the firewall this is unsafe if the inside server is broken [iX] 96-12p26 an external mail server only risks losing unread mails, POP copy to intern multiple security levels, insecure, low and high secure nets use insecure net for mail/news server, FTP/Web server, SLIP server low secure net for normal users clients and non public servers high secure net for sensitive (exa personel, mission critical) data HW dual homed machine (bastion host) is a secure bridge/router or PC with special SW, exa TAMU these can do all filtering levels, have automatic insecure net, preferable HW missconfigured routers and screened host can only be used with user program level filtering makes an insecure net impossible if0 existing WAN router as one of firewall a further (third) router becomes neccessary for full possibilities anec IF uses a system like this with a proxy machine parallel to scr host this increases the amount of hacking targets, is a bad design too much security can make users dig holes, same as with timesharing systems how safe was your LAN without public net connection, exa users own modems anec if I had anticipated IF time to set up access I would have gone alone [Stoll] printers "if you ask get no, if you just do it only get complain" mailbombs are messages aimed at overfilling a users mailbox [Raymond] "mailbomb" for maximum effect the must contain large messages, exa core dumps are a form of denial of service attack letterbombs are email messages containing logic bombs [Raymond] "letterbomb" [ct] 97-4p65 word macro virus that sends itsself via ms-mail the bomb code takes the form of live data [Raymond] "live data (1)" letterbombs are a case of remote execution, same dangers/solutions all letterbombs are dependant on the recieving users system type they require intelligent terminals that execute the bomb code on listing they may reprogram the users keyboard to send damaging commands or a mail program with a document viewer that executes macros which include system commands [PCW] 95-10p23, [PCW] 96-10p29 extreme case NeXTstep Mail.app auto draws small PostScript graphics in vers 0.* together with PS system command spawns root shell subshell spawning from the DPS server was blocked in 1.0 but even in vers 2.* you could send "currentfile closefile" to log out the console user letterbombs can also be transported via executable documents exa [ct] 97-6 p48 PDF letter bomb, from being PostScript based letterbombs can also be transported by systems such as finger, Web Unix finger client blocks esc char to prevent it [Raymond] "plan file" letterbombs can also be transported via applets [Byte] 96-8p72 download plug-in spies, [Byte] 97-5p89 hostile applets Java tests applets for dangerous code on linking them in [Byte] 97-1p63 Java security system, being improved [ct] 96-5p72 Java (Netscape bug) and JavaScript (design) security holes [iX] 96-5p70 Java security [Uo] 96-5p111 Java security bugs, [Uo] 96-7p61 chrooted Netscape no pointers to avoid damaged interpr, restricted system call operations Java is claimed by its inventors to be secure [Gilder] actually just pointer-free, no modifying the Java engine or browser claimed to have automatic virus scan, but what viruses, using what prints real question is can Java progr, spawn processes, modify files, selves I suspect that VM overfilling is possible, denial of service attack I also suspect breaking firewalls, access victims servers from WS run it limit to only accessing sockets in home domain can be broken add a victims IP address to be attacked to attackers home domain gives letterbombs the same potential as viruses spawning worms Java security enhanced by running netscape in a chroot-ed environment but even this in no magic cure, only protects files, not procesor, net ActiveX no security, only Verisign guarantee of source, not of safety but it is presented to the user as nice certificate, fools them this is easily explointed [Byte] 96-11p32, is a losing design [ct] 97-4p58 IE LNK/URL file secur bug, [ct] 97-5p60 and more of this [ct] 97-4p200 MS Office 97 auto install trouble, what will ActiveX be don't forget that the first macro virus was distributed by Microsoft or transported by agents agents are not viruses as it is very often written agents are messages containing live data that gets executed by the server are a case of letterbombs, with the potential to become worms anec even Byte got this repeatedly wrong [Byte] 94-10p64, [Byte] 95-3p95 anec even in [Raymond] "live data (1)" a logic bomb is misscalled a virus compare virus easier with HDs than with floppies, same net vs modem will give the same solution, net traffic scan similar to virus scan also apply the rule of distrusting questionable SW sources spamming [Raymond] "spam (2)" [ct] 97-4p234 ad.doubleclick.net scanning, junk buster [ct] 97-5p160 is e-mail spam legal in Germany? [ct] 97-7p102 anti-spam, NoCeM spammer list for killfile [ct] 97-8p30 no anti-spam law, better free and techno [ct] 98-21p272 anti spam measures, [ct] 99-3p39 EU law discussion on spam [ct] 99-13p198 TV add recognition and VCR pausing [PCW] 95-7p607 the Canter&Siegel book are messages that disrupt discussions (mailing lists or Usenet or Web based) basically sending data to other without it being ordered, not even implied either repeated sending of the same message original meaning, from Monty Pythons "spam spam" vikings, drown discussion or bulk email (UBE) also drowns mailboxes, usually commercial/ads (UCE) disturbing, as it costs user time or even worse money (line time) is today usually linked with adverts (the most common case) throwing adverts as users, is disliked but legal on paper/radio/TV adverts on TV tolerated because they are sponsoring, make cheaper/free Web adverts cost download time/charges, no saving, are disliked but this only applies to modem users (slow, time charge) not so bad on leased lines, but who has one of them on the Internet spamming is fightable by mailbombing exa Canter&Siegel mailbombed off of 3 Internet providers mailbombing is also a form of spamming, kills connections [iX] 96-5p44 but is/was regarded as right against other spammers but is annoying without civilised restraint [Byte] 96-12p14 today messages to abuse@provider are the preferred method to avoid adverts, own adress on Robinson list [ct] 96-12p320 but better use ad buster, have your mailserver auto-delete/bounce for this mail address blacklist server [Byte] 91-5p177 lens same also for Web adresses (specially IMG banners) exa junkbuster, [ct] 99-5p114 WebWasher anec modif orange juice ad with spam title, text this pict cont spam contains 2 spams, as all ads are spam (not ordered by reciever) spying [Byte] 89-6p267 secret codes, [Byte] 90-6p311 using secret codes [Byte] 91-9p122 authentification, [Byte] 91-10p332 law comes to cyberspace [Byte] 92-6p426 reflections of privacy, [Byte] 92-10p20 comments on privacy [Byte] 93-5p129 regulating encryption, stegano, [Byte] 93-7p36 Clipper plans [Byte] 93-11p309 digital signatures, [Byte] 94-7p193 PGP, [Byte] 95-2p161 PGP [Byte] 95-10p77 breaking crypto locks, diff cryptoanal, DES, PGP, key lengths [Byte] 96-8p72 IPsec packet encryption, in router or node [Byte] 96-12p127 secure IP, ESP header confident, dual against traffic anal [Byte] 97-1p40IS8 steganographic hiding of encryptied files in pictures [Byte] 97-3p111 encryption problems for international software [Byte] 97-3p115 SSL digital signatures, [Byte] 97-5p40IS25 SET [Byte] 97-6p40IS3 german not accepting pgp sign, [Byte] 97-6p70 digital IDs [Byte] 97-7p79 VPNs, [Byte] 98-1p32IS5 digital signatures for c-commerce [Byte] 98-3p97 crypto getting easier to crack [Byte] 98-4p105 IMAP and NNTP with SSL [Byte] 98-5p97 brute force and growing CPU power, [Byte] 98-7p41 S/MIME [ct] 95-6p46 encryption politics, [ct] 95-7p16 government spying [ct] 95-7p72 government spying, [ct] 95-8p48 CDA voted in [ct] 95-9p174 S-HTTP, SSL, [ct] 95-9p184 PEM, PGP [ct] 95-10p278 use electronic signatures, reversed public key [ct] 95-11p32 "justice" wants more power, [ct] 95-12p43 Europ "Clipper" KES [ct] 96-4p144 security, encryption [ct] 96-6p25 flow tracing by cookies, delete cookie.txt, better link /dev/nul [ct] 96-6p70 spying by recieving computer radiation, Tempest security [ct] 96-9p122 search for solutions for Internet "crime", state fails [ct] 96-12p94 the glas web user, spy by state/advert, delete mailto: [ct] 96-12p100 glas surfer is fiction, privacy well hidden under junk fill advertising quesionaries with wrong data, cookie stopping [ct] 96-12p110 cryptology (cryptography+cryptoanalysis) [ct] 97-2p10 letter net data flow unstop, [ct] 97-2p278 German multimedia law [ct] 97-4p234 Internet security, data prot, ad.doubleclick.net scanning, jb [ct] 97-5p17 Austria Offline, [ct] 97-5p60 HTTP GET junk shows passwords [ct] 97-6p14 german gov spying, [ct] 97-6p330 steganography [ct] 97-6p360 using pgp, [ct] 97-7p27 crypto block collaps, [ct] 97-7p288 pgp [ct] 97-8p30 DES cracked, [ct] 97-8p31 CDA crashed, [ct] 97-8p58 PGP 5.0 [ct] 97-11p54 krypto debate with EU, [ct] 97-11p136 German spying law [ct] 97-14p22 german krypto debate goes further [ct] 97-14p220 random number generators for kryptography [ct] 98-3p24 German customer data spying law [ct] 98-5p82 Secret services spying on the inet, Echelon [ct] 98-6p32 c't cryto campaign, [ct] 98-8p112 digital timestamps [ct] 98-10p186 online security, [ct] 98-11p74 German crypto spying law [ct] 98-16p27 EFF DES cracker hardware, 40bit in seconds for 250k$ [ct] 98-19p228 Linux encrypted filesystems [ct] 98-22p32 U.S. crypto policy changing, perhaps [ct] 98-24p84 spying on computers radiation (tempest) and automatic cameras [ct] 98-26p52 crypto export "control" [ct] 99-1p29 undirected phone spying before German supreme court claim useless and expensive, "needed for outside politics" [ct] 99-3p30 PIII CPUID, [ct] 99-4p42 "safe harbour" , [ct] 99-4p174 data spy [ct] 99-5p16 CPUID not blocked, [ct] 99-5p30 Enfopol, [ct] 99-6p16 MS GUID [ct] 99-8p174 S/MIME, [ct] 99-10p16 German TK spying law [ct] 99-14p215 end of privacy, [ct] 99-16p11 "shredding" CDs by microwave [ct] 99-16p26 BND spying allowed, [ct] 99-10p68 Windows NSA key [ct] 99-21p314 IDEA, [ct] 2000-3p110 encryption devices history [ct] 2001-3p94 using DNA to break crypto, [ct] 2001-4p224 digital certificate [ct] 2001-6p260 quantum crypto, [ct] 2001-9p170 stegano [ct] 2001-7p58 + 2001-9p54 + 2001-17p78 + 2002-4p80 ETSI spy interface [ct] 2001-12p232 intranet snooping [ct] 2002-3p172 Office file info leaks, Word edit history, Excel embedding [ct] 2002-5p41 example word history leak, transrapid, [ct] 2002-5p220 keys [ct] 2002-10p60 quantum crypto already broken, [ct] 2002-11p69 USB snooper [ct] 2002-19p124 no real anonymity, IP addresses can betraced to user [ct] 2002-21p38 AES weakness [iX] 94-3p208 krypto, RSA, PGP, law [iX] 94-9p130 RSA-129 cracked, [iX] 95-4p124 Internet encryption barriers [iX] 95-4p126 electronic signatures, [iX] 95-12p3 licence to peek [iX] 95-12p132 STT/SEPP, SSL, S-HTTP, [iX] 96-4p92 steganography [iX] 96-4p172 ssh, [iX] 96-5p180 list of crypto laws, [iX] 96-6p128 SSLeay [iX] 96-9p44 PGP, [iX] 96-10p102 X.509 signatures in PEM and SSL [PCW] 94-7p420 encryption policies, [PCW] 95-11p230 brute force 40bit crack [Uo] 95-9p54 self unpacking PGP encrypted floppy [Uo] 96-4p94 encrypt, des, idea, licence, [Uo] 96-5p118 encrypt rc5 [Uo] 96-9p75 SET, [Uo] 96-11p68 Inet mail and transact security [Raymond] "cypherpunk" mailing list for public key, privacy, digital cash security must prevent exposing messages and their sender, protect privacy use encryption, secret key vs public key encryption secret key uses same key for encrypt and decrypt, keep secret like password public key uses 2 seperate keys, one derived [Raymond] "trap door (2)" secret Web transactions [Byte] 95-7p80, [ct] 96-10p332 SSL and S-HTTP vs EIT SHTTP [Musciano] p166, [Liu] p296 vs Netscape SSL US government limits free export of cryptography to 40 bit keys Netscape SSL short encryption broken [PCW] 95-11p230, fix [PCW] 95-12p240 they also had problem with pseudo random key generation with time+PIDs this reduced keyspace that had to be searched to break it 2 part keys, registered with "trusted parties", escrow, Clipper controversy [Byte] 96-4p40IS11 who holds the keys [ct] 95-7p16 and p72 German spying law, Clipper internals [PCW] 94-9p239 Clipper/Canter&Siegel/virusBBS gouvernors regard themselves are trustworthy, but many others think not Clipper collapsed when the government noticed its hiding effect on dual encryption with an other illegal method inside even without government behind scenes cheating Clipper would be unsafe just think of some intruders getting a copy of the escrow database troyan agents spying a users system and reporting it without notification [ct] 96-12p94 government spying, industry marketing analysis [ct] 96-12p100 will fail because drowning in junk data this is ideal spying for marketing, copyrightists, bosses [Byte] 96-4p10 exa Microsoft Windows 95 registration wizard also sent a system scan but this is claimed to be an urban legend [PCW] 96-6p220 but real cases of Internet "advanced marketing information" firms scan Internet for buying behaviour, analyse it, sell it to marketing so that they can flood you with more stuff you don't want [ct] 99-20p86 internet user data collection cookie abuse, filtering, force sites to use hidden fields using cookies to track customers, cross site, long expiries forging [ct] 99-1p58 EU digital signature law [iX] 96-11p18 German signature law communications must prove the authentity of a message they must also prove that the message has not been tampered, use checksums troyans sending messages for their writer from an other users system this allows them to gain false identity, priviledges, is a stepping stone credibility of information, who is trustworthy, who is lying there no provably "true" information, but visible multitude of messages Internet many independant sources, behind these truth can be discovered and also who wants to twist it, so it is better against propaganda this is threat to autocrats who want to manipulate other to believe them this is feared by those interested in spreading such information freedom of press is best guarantee against false information [Hauben] exa white suprematist propaganda punctured in Netnews complaints about no guarantee, but this is also so in newspapers laws can not be relied on there either, on the Internet it is obvious also advantage that no provable identity allows more open disclosure of opinions that the sender would have to fear prosecution for censorship [ct] 94-5p106 critic with alphabetic list of alt.sex.* claimed "most used" [ct] 95-7p22 Scientology attacking net, [ct] 95-8p48 CDA [ct] 95-9p28 not operator and content [ct] 95-11p62 lex mailbox 1, [ct] 95-11p106 l m 2, [ct] 96-1p106 l m 3 [ct] 96-3p50 Scientology tries to remove critics leaked documents [ct] 96-4p144 censorship [ct] 96-10p50 German telecom law mess, newly introduced mixup [ct] 96-11p118 censorship attempts against nazi and radical extremists [ct] 97-13p136 Internet red light district [ct] 97-15p224 net censoring programs fail [ct] 98-10p204 where was an Internet action committed [ct] 98-11p34 Bavarian process against CompuServe [ct] 98-12p16 Felix Somm process, [ct] 98-16p156 networks and law [ct] 98-18p84 German cyber police, next to nonexistant [ct] 98-18p166 Compuserve/Somm court case juristical comment [ct] 98-24p196 US Internet "child protektion" laws [ct] 99-1p16 BKA wants providers as deputy sheriffs [ct] 99-7p94 German law fails once again to understand Internet resposibility [ct] 99-11p82 game "indexing" censorship, [ct] 99-25p16 CompuServe process [ct] 2000-4p132 attacks against ego-shooter games [ct] 2000-20p103 disxussion CDU vs CCC about filtering, and freedom [iX] 94-5p140 minister censors uni net, [iX] 95-4p26 Scientology censoring [iX] 95-9p26 beginnings of CDA, [iX] 96-2p28 CDA introduced [iX] 96-3p26 CDA free->restr, better use sea law [iX] 96-4p23 CDA frozen until supreme court decision, [iX] 96-5p124 Telewahn [iX] 96-8p28 CDA stopped in Philadelphia, [iX] 96-8p30 German TKG [iX] 96-9p10 CDA stopped in New York [PCW] 94-7p234 porn, pirates, nazis, anti-Internet propaganda, critic of it [PCW] 95-1p289 hypocrisy of condemning porn but violence is allright [PCW] 95-6p353 censoring is worse than anarchic information flow [PCW] 95-6363 readers letter to the same effect [PCW] 95-9p249 U.S. net censorship Exon/Coats CDA act [PCW] 95-10p37 no need for net porn laws, existing laws suffice [PCW] 96-3p39 the great porn hype shown to be bogus [PCW] 96-7p41 "all the bad stuff on internet" exposed as harmless [Uo] 95-12p3 fear of law equals censor, [Uo] 95-12p18 law is confused censorship damages legitimate users exa Prodigy no critics of its services by the users allowed owner closed all accounts of users using sys for discussions of service exa CompuServe [ct] 96-2p14, [iX] 96-2p3 closed off 250 Netnews groups (*sex*, *gay*) worldwide for fear of Bavarian legal action, reopened as users threatend to leave this also hit discussions of AIDS and sexual abuse recovery exa AOL [ct] 96-2p16 scan all message for sex or porn related words, delete test for the word breast triggered on messages discussing breast cancer exa Swiss PTT sued for supporting dial-sex with their 156 (=900) numbers lost case, result they have stalled all their Internet related projects result no chance that any home fixed line systems will become available Internet only from 3rd party firms, home line only POTS and ISDN with such own goals censors will hopefully destroy themselves users can reduce becoming victim of them by going to raw IP line provider with individual services by other peoples servers, on neutral ground would be data tourism, local laws apply, only ev import violation censorship is violation of democratic rights censorship of web sites violates freedom of press laws also censorship of email violates freedom of speech laws [Byte] 97-2p20 technology liberates, destroys power of people who want to impose themselve exa printpress vs Church, industry vs landowners exa computers vs Soviet Union [Byte] 91-11p10 revolution, Fax vs China computer shows a new way of life, new liberating lifestyle [Levy] p169 network vs TV like press vs scribes, free informat [Hauben] "printing" the Internet punctures wrong political ideas [PCW] 95-6p353 Internet medium of choice for suppressed views [ct] 95-11p66 many believe that PC revolution big but net revolution will be lot bigger of course this is felt as a threat by the established powers those that want censor should be more feared that thos they want censored Barlow declaration of independance, Internet free of governm [PCW] 96-8p190 British government Internet reliability/billing/UI critic [PCW] 94-9p234 Internet growth and billing problems [PCW] 94-11p468 but also Internet freedom Clipper/Canter&Siegel/virusBBS [PCW] 94-9p239 it will be not accepted by many, they will want to circumvents it exa many normal users do not regard the porn issue to be serious [PCW] 95-1p494 sex on net overblown, [PCW] 96-3p39, [PCW] 96-3p222 result in technical measures to circumvent, these will be successfull remember that Internet technology was developed to survive nuclear war even the large C&C destruction attempts of the Gulf war failled to wipe out the Intranet of Saddams military but some claim this was only marketing [iX] 94-10p7, [Comer1] censorship will fail anyway [PCW] 95-6p353 checking Internet contents impossible [iX] 96-2p3 censored data will become an underground phenomena, like illegal drugs will result in data smuggling rings, users as semi-criminals, trouble will be a classic case of prohibition backfiring on its perpetrators censorship ist good advert for an "unwanted" product exa id and Doom only got famous by ban, would have staye onscure anec hackers generally have counterculture values [Raymond] p488 but not anti-technology like traditional [Levy] p166, [Hauben] "arte" AI lab public image [Levy] p130 68ers, hackers [Levy] p133 Weizenbaum net operators are not responsible for the content made by their customers infrastructure providers are responsible for safety, not customers usage the same as phone companies are not responsible for the speech transmited and road operators not responsible for the vehicle contents travelling PTT case total violat of democr rights, punnishment from guilt from bad act also violation of law saying that telecom should not spy on contents strict british libel laws being reduced to protect providers [PCW] 96-4p27 in justified fight against child porn, nazis and other really criminals no new censorship laws are needed, existing are sufficient [PCW] 95-10p37 use under cover agents, police simulate buyers or vendors to bait other like it is done today to break up cracking rings or drug smugglers availability of the same method also devalues anti-encryption arguments for worried parents there exist net access censoring programs but these can fairly easily be circumvented by youngsters (they know more) [ct] 96-9p120 smut filters, don't work good enough [iX] 96-7p3 PICS fails because socially incompatible technology is no replacement for parential guiding, or better education also require constant updating of banned site database, like virus scannner or use the Internet itsself for distributing, or better questioning there exists a sensible suggestion to give sites X-ratings [PCW] 96-4p27 same as software ratings for games [PCW] 94-11p244, [PCW] 95-1p353 [ct] 96-8p66 RSACi analog to RSAC for video games, also PICS content advisor has support from Microsoft [PCW] 96-6p215 but also rating servers, independant of data sources, more reliable, better exa refered to on IDs homepage http://www.idsoftware.com the Internet needs no new laws, the existing ones are sufficient speech, postal, publishing, journalism, libel, copyright, trademark just the "legals" will have to learn when which of them apply better accept the laws the netizens have invented for themselves use netiquette, no stupid laws, just civilised behaviour exa no censoring, use site ratings exa no copyright, use GNU like licensing exa no libel, instead present your side of discussion exa Usenet governed by the users, no central authority [Hauben] "arte" only thing counts is individual assessment of behavior based on values users valued soley for their input, not gender/race/religion/etc anec comic "on net no one knows you are a dog" [Hauben] "printing" no indirect assessment based on abstract laws, return real democracy sometimes chaos [Garfinkel2] p93 Snoozenet will lead to good places (sci/techn info) and badlands (some alt.*) no wrong laws by ignorant or power-crazed bureau/polit get rid of reactionary political power grabbers, power to the netizen anec Rousseau "best laws those follow voluntarily rather than by force" the Internet is no more insecure than other nets opening any machine to any type of remote access is principially dangerous the type of connection channel used is irrelevant to this it can only make reaching machine easier or less, but not breaking in the Internet has lots of Unix systems, which traditionally have low security exa the Great Internet Worm only attacked two types of BSD Unix machines all other machine types on the net were not affected by it generally all net secur problems are not net as target but individ machine the Internet is larger and therefore attracts more attention actually the Internet helps you to be secure because there is lots of experimentation and lots of experience of break ins you can not become the victim of a vendors security by obscurity anti-Internet propaganda is a classical case of "shooting the messenger" anec it is not the fault of the highway that there are highwaymen [PCW] and it is not the fault of the highways owners or maintainers either --- Portable Systems Portable Computers [Byte] 92-7p128 PC gets more personal, Newton, Gateway Handbook, Dell SLi [Byte] 93-10p66 PDAs arrive but aren't quite here yet, [Byte] 96-5p147 PDAs [Byte] 95-6p150 tales from the trip, [Byte] 96-3p36 wearables [Byte] 96-5p103 well connected PDAs [Byte] 97-1 p40IS17 modern notebooks, growing abilities, rival desktop sys [Byte] 97-10p45 Psion EPOC32 [ct] 97-1 p168 PDAs Psion 3a+Siena, Sharp ZR5800G, HP OPmnigo 700 Nokia 9000, Apple Newton 130, USR Pilot 5000 [ct] 97-5p84 PDAs Philips, Sharp, Pilot, [ct] 97-8p50 Psion Series 5 [ct] 97-15p140 organisers, PDAs, [ct] 98-4p90 wearable computers [ct] 98-5p126 PDAs, [ct] 99-3p56 DSM M1 3 1/2" PC, Notebook w/o key/panel/power [ct] 2000-4p300 microdisplays for portable devices, wearables [ct] 2002-21p102 waerables [PCW] 95-5p518 3rd generation PDAs [PCW] 96-3p26 BT office on the arm exa Epson HX-20 [Byte] 90-9p383, [PCW] 94-9p474 still great, Epson PX-8 exa Tandy TRS 80 Model 100 [Byte] 83-5p14, [Byte] 90-9p386 8*40 char disp, 4ib anec Model 100 better than notebook for journalists [PCW] 93-9p235 because of long battery life and less paraphenalia required but Tandy gave up lead, todays left-over is the WP-3 series [PCW] 93-7p199 exa Sinclair ZX-88, Amstrad NC 100 [PCW] exa Psion 3/3a [Byte] 92-1p40, [Byte] 92-3p92IS7, [PCW] 93-10p395 [PCW] 95-2p355 1 year long term test exa Nokia GSM phone with 386, organiser, Web browser [Byte] 96-6p48IS2 exa HP 95LX [Byte] 91-5p44 exa HP 100LX [PTP] 93-5/6p6 introduction, technical data [PCW] 93-9p544 100LX desintegrated, [PTP] 93-11/12p17 95LX desintegrated exa HP Omnibooks [Byte] 93-9p137, [PCW] 95-2p338 exa TI-92 calculator [Byte] 95-9p25 exa [PCW] 95-12p23 HP OmniGo and Grafiti, [PCW] 96-1p60 HP Omnigo exa portable PC clones cases, lunchboxes, laptops, notebooks, subnotebooks [ct] 96-10p194 notebook choice, limited upgrades, finding repairs exa portable Unix workstations [Byte] 92-5p40 Tadpole SPARCbook, [iX] 94-4p56 Sun Voyager exa ProLinear Palmbook exa IBM PC110 [ct] 96-1p14 titled as Ricoh LapPad, [PCW] 96-1p23 tiny Thinkpad sees red exa Toshiba Libretto 20, 50, 50CT, 70CT [ct] 97-5p126 Libretto 50, [PCW] 96-7p34 Libretto 20 exa PalmPilot [ct] 98-5p44 Linux on PalmPilot [ct] 98-6p44 PalmPilot III exa [PCW] 96-5p54 IBM ChipCard TC100 PCMCIA database with screen and buttons exa [ct] 98-6p47 Franklin/Rolodex PCMCIA organiser exa Windows CE, Microsofts Palmtop OS, Windows95 look and feel [Byte] 96-11p26, [Byte] 97-1p133, [Byte] 97-4p46 Velo 1 [Byte] 97-6p47 HP 300/320LX, [Byte] 98-1p40 WinCE 2.0 [ct] 97-1p170, [ct] 97-8 p68 winCE no depth, [ct] 97-15p156 WinCE 2.0 [ct] 98-8p120 Windows CE, [ct] 98-12p39 WinCE based PalmPilot design clones but WinCE palmtop hardware is not PC/Windows compatible no 80x86, use Hitachi SH-3 (Compaq/Casio/LG), NEC VR4101 (NEC) MIPS 3900 (Philips) and unlistsd (HP) no PC IO hardware for running DOS boxes no 640x480 standard screen, only 480x240 (HP at least has 640x240) many are only 4-gray-level, (HP has full colour) so only special WinCE palmtop software will run only WinCE OS, no DOS, no Win3.11, no Win95, no OS/2, no Unix/Linux only pocket "office" will work, standard office (payed for) will not and Microsofts Pocket Office is not "real" Office compatible same no existing utlities will work, you will have to find special ones users will have to buy 2nd copy for palmtop processor, if available is this deliberate ploy to prevent reusing licences as on notebooks like Win3.0 and Win95 MS lures users in, then exploits vendor lock in I hope this will help destroy their reputation even more the most usefull computer is the one you use, thats the one that is available the best computer system is useless if you can't access it, are away from it anec palmtop write while traveling, is thinking time, record thoughts then portable computers are the ultimate in personal computing, intimate computing anec 10 years ago we kept on saying "this thing on my desk (PC clone) needed an entire room 10 years ago" now with palmtops we can now make it "this thing in my hand (HP 100LX) needed an entire desktop 10 years ago" small size, low weight highly integrated chips [Byte] 90-11p142 Compaq fold motherboard, [Byte] 90-12p313 portable chips [Byte] 91-2p239 AMD 286LX/ZX, [Byte] 91-11p148 single chip PC, CTI F8680 [Byte] 94-1p101 Intel/VLSI VI86C300 IPC and VI86C100 MPC HP 100LX Intel 60168 processor, is XTmotherb+keyctrl+CGA+COM1+IR on a chip memory use reduction execute programs or even the OS from ROMs to save RAM exa MS-DOS 5.0 in ROM, ist last ROMable version anec HP 100LX apps make no use of execute from ROM, full 640k used, waste HP 100LX for compatibility copies its programs into RAM to run vs HP 95LX ran them from ROM, at least [Byte] 91-5p46 claims this multiple processes with each own addr space up to 640k border not all processes in same space, allow big DOS boxes as in Windows own process at least for DOS box, better also for apps if no separate address spaces at least use the VGA+MDA 96k also make use of the MS-DOS 5.0 UMBs and loadhigh, no himem poss on XT anec HP 100LX for xcopy DOS box only 96k space left static limit must be set low, bigger would fail if many apps open but as result more mem not used, even if not used by apps there exists EMM for HP, must use some form of paging hardware small keyboards small keyboard typing technique [PTP] 94-11/12p40 HP 100LX unfortunately very small keyb because of num block of 123 better for text entry would be 2 keyboard versions, user selects for one hand usage sticky Shift/Ctrl/Alt/FN keys intelligent keyboard, typing expert system [PTP] 94-3/4p16 100Buddy, [Cameron] Emacs word expand HP 100LX has no hooks, 100Buddy must read screen bitmap and simul typing small deskless mouse replacements trackball/point/pad, Omnibook popout mouse [PTP] 93-7/8p15 small displays area, number of pixels, sharpness, no backlighting (power requirements) leave away floppy disk drive or even controller external floppy with special plug, even Compaq floppy with ctrl on PCMCIA RAM disks instead of HDs, are small, use less power, shockproof part of system RAM is cut off and formated as a disk drive, stores files RAM for disk in processor address range vs protected from crashes resetproof RAM disk, as in Atari ST extension HP 100LX reboot asks for del RAM disk, not needed, boot D: and format allocate RAM for processes vs disk dynamically, not fixed as in HP 100LX no need to close all programs or even reboot for static repartitioning make a RAM disk of entire RAM size, gives max RAM disk size possible RAM disk from back end of memory, process memory from front end or memory for process reserved as growing file or as pseudo bad blocks fragmentation of RAM disk doesn't matter as no head moving delays the more process RAM is used, the less file space remains if user inserts a memory card and shifts files to it process space incr memory or small disk cards PCMCIA [Byte] 91-2p251, [Byte] 92-5p84IS47, [Byte] 92-12p237, [Byte] 94-11p65 [ct] 91-4p308, [ct] 96-8p102 PC Card 95 with 32bit [PCW] 94-2p272, [PCW] 95-10p131, [PTP] 94-PCMCIAp4 PCMCIA problem of small volume because internal in notebook this is needed for cards used on the road but for LAN docking at home better external slot anec people can't memorize computer industry acronyms [PCW] 93-9p596 flash cards [Byte] 90-11p311 flash memory, [Byte] 96-6p99 flash memory exa Sundisk/HP is a "IDE disk" where ATA->PCMCIA and disk->flash actually Sundisk no IDE, own controller interface vs ACE real IDE require quite a bit of power when writing data, but after none at all anec HP 100LX aborts when backup to flash disk and less than 1/2 battery no warning that this happend, only noticed after SoftPC backup crash due to failed flash backup before trying cable backup 5h data loss result of this I now regularly check battery, preventive replacement CompactFlash and SSFDC cards [ct] 97-15p198 [ct] 99-6p44 IBM 340MB on Compact-Flash-II size MMC/SD cards Sony memory stick, yet annother format [ct] 99-6p90 chipcards/smartcards [Byte] 96-6p48IS11, [Byte] 97-4p40IS7, [Byte] 97-6p63, [PCW] 94-1p468 [ct] 94-12p310 chipcards, [ct] 98-11p52 chip cards for e-commerce [ct] 2000-8p208 programming chip cards, [ct] 2000-9p240 part 2 [ct] 2000-13p256 chipcard ATR string, [ct] 2000-21p242 programming ccs [ct] 2001-4p232 GMS SIM smartcard [iX] 98-9p42 smartcards, [iX] 98-9p48 smartcard security on line disk data compression, claimed to double disk size, but +50..90% [Byte] 90-11p331 QIC, DAT, HD, [Byte] 91-5p205 compress or not [Byte] 93-7p197 Doublespace, [Byte] 94-2p56 is it safe? anec Albin HP 200LX A: total data loss, had backup, but only at home Sundisk came with Stacker compress, today drives with compress SW in card small peripherals exa HP 100LX built in RS-232 with special small plug untethered power supply batteries or rechargeables [Byte] 90-5p273 battery types NiCd, NiH2, ZnO2, Li [Byte] 95-6p121 battery technologies, [ct] 95-10p266 [ct] 98-11p41 hydrogen cells for powering notebooks [ct] 2002-10p208 treatment of rechargables, [ct] 2003-10p94 fuel cells [PCW] 94-8p515, [PTP] 94-1/2p37 types for HP 100/200LX AA, NiCd, NiMH size/weight vs running time but also alternatives [ct] 98-11p41 fuel cells for notebooks [ct] 98-25p224 alternative power, fuel cells, gas turbine, solar, muscle low power consumption components CMOS has next to no static current (uA), dynamic current linear w clock low voltage, 3.3V or even less [Byte] 92-11p137 lower the voltage standby mode, immediate use without long boot, allows switching off often [Gilluve] p668 standard power saving mode hardware [Byte] 91-9p329 power managment, low volt, stop clock, idle detect [ct] 97-13p276 CPUs getting hot [ct] 98-20p166 ACPI power managment and configuration [ct] 2002-25p234 ACPI under Linux processor put into sleep mode, clock switched to low freqency or stopped static logic allows clock to be stopped, no minimal clock frequency even sleep between key presses, stop processor clock until IRQ exa Z80 HALT [Zaks] p257, 6809 [mc] 82-1p50 exa AmigaDOS EXEC even idles 680x0 [Byte] 91-9p335 exa OS/2 and Linux halt the 80x86 [ct] 95-7p192, but not Win3.1 static memory or save RAM to disk and reload at boot but RAM->disk insufficient, not immediate, better static, as palmtops disk and screen timed standby, selectable 1..10 min IDE and SCSI disk drives have a switch off bit for notebook use [ct] 95-3p262 IDE disk power down LCDs and backlights also have such switches screen backlights are biggest power sinks in notebooks standby key for user triggering standby without waiting for detecting idleness BIOS code or even hidden code below virtual machin exa Intel 368SL SMI mode, CTI PC/CHIP SuperState [Byte] 91-11p150 why not also standby in desktops, would prevent long boot, allow power off [ct] 98-7p186 CPU power saving with HLT on i86 would allow them to run 24h without energy waste anec computers today already use 10% of world electricity volume memory for size dynamic or pseudostat, large rechargable for 5 day backup to avoid trouble if no power cable for longer, do a sync before standby disk switch off ca 15..60 min, instead of notebook 1..10 min but also a standby key for immediate saving power screen also switch off ca 15..60 min controlled by video card, VESA DDC power managment [ct] 95-11p232 or by fully black picture, like 1503 EIZO 21" control by card is right, better than autonomous by monitor, as [PCW] anec ChS Ecoman switch, Hugo FAX switch, but better standby builtin and don't forget to slow or switch off the fan, when no heat production standby has been used in videorecorders since 15 years, in TVs since 10 it is not missing technology or standards, as notebooks have it shows how little comp industry cares for its customers, even Apple, WS exa portable techno in compact desktop system [Byte] 93-7p44 IBM PS/2-E exa MicroLightIII [Byte] 92-5p84IS14, [PCW] 92-2p248 exa Microsofts OnNow initiative, desktop PC power supply redesign untethered networking [Byte] 92-4p291 wireless networking, [Byte] 93-2p147 wireless data, Inmarsat [Byte] 94-5p91 wireless gets real, [Byte] 94-5p99 wireless LANs [Byte] 95-6p107 wireless communications, [Byte] 96-340IS21 GSM, SMS [Byte] 96-5p95 stay connected, [Byte] 96-9p142 satellite a cell radio, [Byte] 97-8p93 data radio standards mes sin the U.S. [Byte] 98-3p40IS15 mobile internet, GSM, still missing target [Byte] 98-5p40IS15 mobile internet, GSM, WAP, HSCSD, GPRS [ct] 98-4p202 mobile internet, WAP, [ct] 99-7p186 GPRS packet data extend GSM [ct] 99-22p126 WAP and WML, [ct] 2000-2p166 data mobile phone HSCSD + GPRS [ct] 2000-7p198 SMS, [ct] 2000-9p194 WAP, [ct] 2000-19p190 EDGE [ct] 2001-4p116 mobile internet access, [ct] 2001-5p94 after UMTS [ct] 2001-7p228 using HSCSD, [ct] 2001-9p222 GSM and security [ct] 2001-26p92 i-Mode, [ct] 2001-16p21 WLANs, [ct] 2002-8p222 UMTS [ct] 2002-12p184 MMS, [ct] 2002-12p232 handy 5V RS232 adaptor [ct] 2002-16p152 public WLAN hotspots, [ct] 2002-22p52 public WLAN community unidirectional download PC or TV screen and light sensor on portable exa BBC 1980s program downloads exa Timex Data Link watch [PCW] 95-1p267, [PCW] 95-2p342 1 byte per video frame, gives 50..70 byte/s, 3..4kbyte/min infrared transmission (IR) [ct] 98-6p266 controlling video recorder via IR, [ct] 98-6p316 IRDA [ct] 99-5p142 GSM phones with IR port IRDA [PCW] 95-10p191, [PCW] 95-11p159, [PCW] 96-3p124 IR to LAN [Byte] 96-5p135, why not SLIP over IR and normal router IR circuits can be used as programmable remote IR control, macros together with IR recievers use for home control, is personalized radio (RF) (packet radio, cellular phone) [Byte] 92-4p291, [Byte] 93-2p147, [Byte] 94-5p91, [Byte] 94-9p59 cell [Byte] 95-12p40IS9 radio networks, [Byte] 96-3p40IS21 data over GSM [Byte] 96-5p228 US data radio mess vs Europe GSM standard [ct] 95-6p252 Modacom, [ct] 96-1p254 spread spectrum [ct] 97-1p186 PDA radio communication HP Omnigo 700 vs Nokia 9000 [ct] 98-6p134 digital radio, DAB, [ct] 98-20p128 DECT radio data [ct] 99-6p216 wireless networks, [ct] 99-25p126 Bluetooth [ct] 99-25p132 WLANs, [ct] 2001-6p158 net everywhere [ct] 2001-15p186 WEP weaknesses, [ct] 2001-18p134 extending WLAN distance [ct] 2001-20p230 bluetooth security, [ct] 2001-21p178 GPRS [ct] 2002-4p178 WEP improvements and replacements [ct] 2002-18p148 bluetooth protocols, [ct] 2003-7p188 bluetooth protocols [ct] 2003-7p222 Linux as WLAN AP, [ct] 2003-9p176 airials [ct] 2003-11p186 bluetooth security, [ct] 2003-12p222 bluetooth anonymity [PCW 95-5p442 notbook connection to mobile phone [iX] 94-3p150 GSM, [iX] 94-4p104 Modacom, [iX] 95-5p54 PACS [Uo] 96-2p6 Iridium satellites radio has low bandwidth, but infrastruct independ, bureau/politics-proof some think that portables will only take off with radio networking but experience shows them to be going strong without networking is usefull but not necessary in computers anec [Scientific] 91-7p76 Negroponte phone and TV swap carriers but will they really do so, this would lose portable TV reception tv and radio are returning to cable were orig there, exa swiss telephon rundspruch moved to wireless because cheaper to provide broadcast infrastructure phone was and stayed on wire because witching, portabil goes wireless but is more expensive than wire based, only minority usage claim because phone port tv/radio must wire wrong, also need portable real world (non office) situations require mechanical robustness anec HP 100LX dropping from motorbike, no damage [PTP] 93-5/6p5 mine has also taken multiple falls over 1m hight, no damage but age has taken its toll, the hinge broke while normal opening non complicated to use, no manuals needed user error tolerant, good recovery after error availability of palmtop anywhere makes its use as electronic agenda practical calendar+addressbook+notes+clock/alarm/timer/timezone+calc/units/currencies called personal information managment programs (PIMs) [PCW] 96-3p182 such programs already on desktop, but a non portable agenda is of limited use special case of desktop agendas were network group shedulers failed both on this and on no updates, only for others, no own use palmtops vs paper agenda or time system more data in same space and weight than with paper+calculator search features for finding data faster, anec HP 100LX notepad stupid search far higher security backup, who backs up a paper agenda against loss (with photocopier?) password (boot/wakeup/screensav), encrypt (disk/file), who does with paper palmtop SW built in ROM vs as files on a RAM or flash disk in ROM fixed language, no choice, would require all languages in 1 ROM, large exa HP 100LX HW with SG keyboard but with language OS and apps in englih in ROM no selective deleting of unused files to gain memory space exa HP 100LX I would prefer space used for 123 to be for more RAM or DOS in ROM no update of SW in ROM, with new features or to mend bugs exa HP 100LX note editor line wrap bug when insert CR in wrapped line second half of line not unwrapped on screen, but in file, redraw error better select ROM card + RAM disk, IOcard + big RAM disk, flash + no RAM disk boot options from card, RAM disk or "net boot" from RS-232 + PC with server HPs Omnibooks do it right, SW on a 10MByte ROM card, can copy to flash/HD proprietary architecture palmtops vs PC/MS-DOS based palmtops proprietary architectures limit you to their special software architectures based on PC standards allow any software you choose a 386 PC clone palmtop could even run other standard OSes, such as Linux but larger resource requirement because no optimized SW HP 100LX is PC HW, uses MS-DOS, but comes with special PIM SW and this PIM software could be improved strongly using video in CGA graphics mode is slow, wastes memory (32k-4k=28k) no gain, as graphics are only horizontal and vertical lines, in char set but annoying because of slowness, esp scrolling appointment month view anec app100 on desktop switches to CGA, near bottom limit of my monitor filer view screen wastes space with many graphical lines instead of data also why no search for string in view screen same no search in notetaker/database note editor search in notetaker/database only locates records with string in them appointment/calendar display style from paper reserved space for each day, came from paper, only overwrite and append but computers can insert, better use a list of items sorted on date classic case of doing things as up to now, is inefficient see Psion 3/3a and Apple Newton for better done interfaces time fields for begin/end of appointment will not except 24.00 as time memo editor not integrated in filer, like in NC, no open file to edit memo editor has search, but limited file size, exa no view/search Jargon also memo editor has only one editing buffer not having windows is right on small screen, but no mult buffers is bad notetaker/database only alphabetical sorted display, restricts title choice note editor text width is limited to 57 columns why 2 editors for notetaker/database notes and memo anyway why not use memo to edit "files" stored as notes, also Lotus 123 in notes memo full screen edit but no overview of file, long switching files vs note overwiew on every save (= exit), fast switch, but save lose pos appointment and notetaker binary file formats, not documented no import/export in ASCII, CSV or similar anec I export notes by backup to desktop, open in editor, cut and paste calculator y^x function missing, but surely used in closed growth program can only use non-app100 SW when all app100 stopped, slow reload of app100 non replacable SW (is in ROM disk), buy new device for SW update so I did buy, an IBM PC110 with flash disk for updatable software anec I got a HP 100LX because I intended to run TCP/IP for data exchange but after 3/2 years I still haven't, same also applies to using QB or QC I allways run app100, don't exit it because of long reloading time no task switching, no remembering what progr were open, where in progr I have come to treat it as a information appliance [ct] 99-6p154 information appliences not even reboot to test memory saving without default loaded Stacker many other colleges also treat their palmtops this way but ca half play around with them as with desktop PCs today I would prefer either a pure organizer system without MS-DOS or better an 486 palmtop with Linux, that is a real system to hack on this resulted in me getting an IBM PC110 (486SX33) with Linux on it but this also only gets used for notes, but faster, editor switching only a desktop-power notebook vs seperate desktop and portable systems only a notebook, notebooks are at same time too small and too big [PCW] 94-10p223, [PCW] 95-12p34 keyboards and screens are compromises between size and usability on the other side notebooks are too heavy, too big, too much paraphenalia one machine only good for users without big scr or small size reqirement or use 2nd external keyboard/mouse/monitor but external keyboard/mouse make problems, clash with internals if no external keyboard port use parallel or serial port [ct] 93-3p244 connecting keyboard to LPT/COM video often switching problems, never really powerfull enough the Apple SCSI monitor for Powerbooks solves this problems nicely powerfull video card in it, no space in notebook used, 2 screen use better 2 machines [PCW] 93-10p189, palmtop as second machine notebook only small size, but problems with additions, luggage vs palmtop also immediate resume, power managment gives both desktop optimum for using, palmtop/agenda optimum for size for me combination of desk (max scren) and palmtop (min size) is best also desktop can be used with remote control program to use palmtop at home no need for connectors for external keyboard/mouse/screen [Byte] 92-1p293 keyboard on 2nd PC, data over LPT extreme case of 2 machines is a data watch, a computer to wear enough screen, 20 char per agenda entry, multiline, 8 char is not enough and built in calculator watch type keyboard, plus download/backup line external palmtop size keyboard at home is no good, in pocket absurd together with sensors, exa temperature, air pressure/altimeter, compass anec Ruedi "I would have to wear 4 watches for all functions I want" bigger size of data watch, an electronic arm, exa BT [PCW] 96-3p26 I would prefer watch type keyboard, less bulky and screen at left, visible without folding open, for use as watch and of course open HW for experiments, PC, 386, 8M RAM, 20M flash but 2 machines require synchronisation of data between them [ct] 97-5p334 data exchange, [ct] 2002-15p172 SyncML [PCW] 94-10p416 size, format problems or using access to data in palmtop by identical program on desktop system by NFS or even better document server on palmtop with distributed viewers instead of synchron data, only data on palmtop, display via X on desktop or when at home add the missing components to a portable leads to docking stations, are essentially a desktop without a brain using a real desktop (autonomous) with link cable is cheaper, dock fail or small box with notebook components, all external stuff twice exa Ergo Brick [Byte] 96-2p186 Pournelle, [Byte] 91-8 p39 Moby Brick exa MicroLightIII [Byte] 92-5p84IS14, [PCW] 92-2p248 exa IBM PS/2 E [PCW] 93-9p370 exa EZgo but these can not be used while in transit, as an agenda computer can perhaps the best is such a machine for home+expositions + agenda for rest or 2 identical desktops with one removable hard disk [Byte] 91-9p150 --- Bibliography The general format of the entries is: [Tag] Author [& Author ...], Title Title here if first line will not fit it Pubisher, Year, ISBN or other ID comment by me on its contents [Abelson] Harold Abelson & Gerald Jay Sussman & Julie Sussman, Structure and Interpretation of Computer Programs MIT Press/McGraw-Hill, 1985, ISBN 0-262-01077-1 The standard introductionary text to programing at MIT. Not light reading but good. Uses Scheme (a Lisp dialect) as its base. Compares programs with sorcerers spells, programming with casting spells, inclusive the possible effects of a spell going wrong (control systems). [Adams1] Douglas Adams, The Hitch Hiker's Guide to the Galaxy Pan Books, 1979, ISBN none [Adams2] Douglas Adams, The Restaurant at the End of the Universe Pan Books, 1980, ISBN none [Adams3] Douglas Adams, Life, the Universe and Everything Pan Books, 1982, ISBN none [Adams4] Douglas Adams, So Long, and Thanks for all the Fish Pan Books, 1984, ISBN none [Adams5] Douglas Adams, Mostly Harmless Pan Books, 1992, ISBN none Science fiction, not about computing. But have plenty of computers (Eddie, Deep Thought, Earth), robots (Marvin). Known to at least 50% of hackers. Required reading if you want to understand hacker culture and humor. Were once a trilogy but grew at readers demand to five books. It says (rightly) on the cover of the fifth: "The fifth book in the increasingly inaccurately named Hitch Hiker's Guide to the Galaxy trilogy". Hilariously funny, have been nicknamed "Monty Pythons in Space". [Adobe1] Adobe Systems Inc, PostScript Language Tutorial and Cookbook Addison-Wesley, 1985, ISBN 0-201-10179-3 [Adobe2] Adobe Systems Inc, PostScript Language Program Design Addison-Wesley, 1988, ISBN 0-201-14396-8 [Adobe3] Adobe Systems Inc, PostScript Language Reference Manual Addison-Wesley, 1990, ISBN 0-201-18127-4 The official 3 Guides to PostScript. If it's not in these, forget it. [Adobe4] Adobe Systems Inc, Programming the Display PostScript System with... Addison-Wesley, 1991, ISBN 0-201-58135-3 The extensions made to PostScript for imaging displays. How NeXT made DPS with Adobe and then broke it (made it incompatible). [Aho] Alfred V Aho & Ravi Sethi & Jeffrey D Ullman, Compilers Principles, Techniques and Tools Addison-Wesley, 1986, ISBN 0-201-10088-6 The standard university text on writing compilers. Heavy reading but good. [Albitz] Paul Albitz & Cricket Liu, DNS and BIND O'Reilly & Associates, 1992, ISBN 0-56592-010-4 How the DNS works and how to use the BIND to implement it. [Angerhausen] Angerhausen & Brueckmann & Englisch & Gerits 64 intern (in German) Data Becker GmbH, 1983, ISBN 3-89011-000-2 The book I learned hardware oriented assembler programming from. Contains a full commented dissassembly of Basic and Kernal ROMs and a reprint of the full circuit diagram of the C64. No serious C64 programmer went long without this one. [Apple] Christopher Espinosa, Apple ][ Reference Manual Apple Computer Inc, 1979, ProdNr A2L0001A (030-0004-01) Internals of the Apple ][ and how to program them. [Backus] John Backus, The History of Fortran I, II and III = [Wexelblat] p25..74 The history of the first really successfull compilers. [Baker] Charles L Baker, JOSS - JOHNNIAC Open-Shop System = [Wexelblat] p495..513 Implementing the functions of todays pocket calculators on a mainframe. [Baron] Naomi S Baron, Computer Languages - a Guide for the Perplexed Penguin Books, 1986, ISBN none History and profile of 21 languages. Good if you want to look over the fence of your existing languages and see what else the world has in store. More width but less depth than [Wexelblat], derives partially from it. [Barry] John A Barry, Technobabble MIT Press, 1991, ISBN 0-262-02333-4 From a computer press journalist, exposes the dreadfull word salad used by sales, marketing and PR people for hiding their cluelessness. Fairly disorganised, repetitions, but up to point on language destruction. [Beck] Michael Beck & Harald Boehme & Mirko Dziadzka & Ulrich Kunitz & Robert Magnus & Dirk Verworner, Linux Kernal Programmierung, Algorithmen und Strukturen v1.0 (in German) Addison-Wesley, 1994, ISBN 3-89319-712-5 Just what it's title says. The in depth description if the source of an OS. Required if you want to modify Linux, but also good just for understanding. But as it is written in German see also [Leffler]. [Bell] C Gordon Bell, Toward a History of (Personal) Workstations = [Goldberg2] p1..50 A good overview over workstation development, with focus on DEC side of it. [Bradner] Scott O Bradner & Allison Mankin, IPng, Internet Protocol next generation Addison-Wesley, 1995, ISBN 0-201-63395-7 The issues, politics and decisions around reengineering IP. If you thought designing network protocols was easy, this tells otherwise. [Brodie] Leo Brodie, Thinking Forth Spectrum Books/Prentice-Hall, 1984, ISBN 0-13-917568-7 The counterpart to [Abelson] for the Forth language. It gave me the term fun down design. Also an early (in my development) justification of bottom up design. [Brooks] Frederick P Brooks, The Mythical Man-Month Addison-Wesley, 1975, ISBN 0-201-00650-2 Why programming projects are late, too big, fail. The classic in this. A absolute must read for every programmer, manager and customer. [BrownM] Maxine D Brown & Michael Heck, Understanding PHIGS Template, 1985, no ISBN An introduction to drawing and manipulating graphics using PHIGS. [BrownP] P J Brown, Writing Interactive Compilers and Interpreters John Wiley & Sons, 1981, ISBN 0-471-10072-2 A far simpler text than [Aho] on writing compilers. With special treatment of interpreters and user interaction effects. [Brunner] John Brunner, The Shockwave Rider Del Rey Books, 1975, ISBN 0-345-32431-5 Science fiction, not a computer book. But some good speculation on future. Source of the term worm for a program repeatedly breaking into computers. Also good for understanding of hackers social and political views. [Bovet] Daniel P. Bovet & Marco Cesati, Understanding the Linux Kernel O'Reilly, 2003, ISBN 0-596-00213-0 Describes the internals of Linux 2.4 Kernel, analoge to [Leffler] for BSD [Bush] Vannevar Bush, As We May Think = [Engelbart] p237..247, originally Atlantic Monthly 45-7p101..108 The original idea of document oriented computing and hypertext links. [Byte] Byte McGraw-Hill, 1975-1998 (monthly magazine), ISSN 0360-5280 Good solid technical articles. A bit of manager stuff but not too much. [Cameron] Debra Cameron & Bill Rosenblatt, Learning GNU Emacs O'Reilly & Associates, 1992, ISBN 0-937175-84-6 A straight forward introduction to using a power editor. Followed by lots of chapters on all the special stuff and configurability. For full power see also [Glickstein]. [Card] Stuart K Card & Thomas P Moran, User Technology: from Pointing to Pondering = [Goldberg2] p489..526 Finding numerical models to evaluate user interface effects on work speed. [Catsoulis] John Catsoulis, Designing Embedded Hardware O'Reilly & Associates, 2003, ISBN 1-596-00362-5 Introduction to using microcontrollers, CPUs or DSPs and periphery chips. [CCC] Chaos Computer Club & Juergen Wieckmann, Das Chaos Computer Buch (in German) Rowohlt Verlag/Wunderlich, 1988, ISBN 3-8052-0474-4 A collection of essays about hackish intruders written by themselves. Inclusive a strong criticism of intruders that are crashers or spies. The system admistrator side of the fight is detailed in [Stoll]. [Cheswick] William R Cheswick & Steven M Bellovin, Firewalls and Internet Security Addison-Wesley, 1994, ISBN 0-201-63357-4 How to build and operate a application level firewall, variants, tradeoffs. Written by the guys that built the firewall protecting AT&T. [Clark] Wesley A Clark, The LINC was Early and Small = [Goldberg2] p345..400 The making of the first personal computer, in 1962! [Coffron] James W Coffron, Z80 Applications Sybex, 1983, ISBN 0-89588-094-6 Describes how to connect memory and simple peripherals to microprocessors. Today outdated, but I learned a lot from it those days. [Comer1] Douglas E Comer, Internetworking with TCP/IP Prentice-Hall, 1991, ISBN 0-13-474321-0 The standard university text about TCP/IP. Very readable despite that! If you want to understand the protocols it's simply the best. [Comer2] Douglas E Comer & David L Stevens, Internetworking with TCP/IP II Prentice-Hall, 1991, ISBN 0-13-465378-5 An example implementation on TCP/IP under the Xinu OS is detailed. [Comer3] Douglas E Comer & David L Stevens, Internetworking with TCP/IP III Prentice-Hall, 1993, ISBN 0-13-020272-X How to write programs that use TCP/IP via the Berkley Sockets interface. [Commodore] Commodore Computer, Commodore 64 MicroComputer Handbuch Commodore Computer, 198? The official manual that came with the Commodore 64. Has PETSCII character set docu, but only for 1st character set. [Costales] Bryan Costales & Eric Allman & Neil Rickert, Sendmail O'Reilly & Associates, 1993, ISBN 1-56592-056-2 The full story on how to manage one of the most complex Unix programs. If you were scared after seing sendmail.cf the first time, this is for you. [ct] c't Computer Technik (in German) Heise Verlag, 1983- (monthly magazine), ISSN 0724-8679 Good solid technical articles. Was once MS-DOS oriented but has recovered. [CTI] Chips and Technology, 82C307 Cache/DRAM Controller manual Chip and Technology copy see http://neil.franklin.ch/Info_Texts/386_AT_CHIPSets/ Description of the 82C307 cache controller, the design decisions behind it. I have scanned this out of print manual and placed it online. [ctk] c't-Kartei (in German) A series of datasheets published in [ct]. [Custer] Helen Custer, Inside Windows NT Microsoft Press, 1993, 1-55615-481-X The official detailed eriting on what is inside NT, very VMSy. [CWS] Computerworld Schweiz (in German) IDG, weekly newspaper about computer stuff Not particularily good, called "Computer-Blick" after famed tabloid. [Dawkins] Richard Dawkins, The Blind Watchmaker Penguin Books, 1991, ISBN none A book about evolution, demonstrating it with a computer simulation. Describes computer as "device that does what you tell it, often suprising". [DEC1] Digital Equipment Corporation pdp8/e pdp8/m & pdp8/f small computer handbook Digital Equipment Corporation, 1973, PartNo 018.00173.2546 S-09-100 A thourogh description of the PDP 8 hardware architecture, instruction set, bus structure and signals, input/output cards, software library. Usefull techie oriented marketing literature from the good old days. [DEC2] Digital Equipment Corporation, VT 320 User Manual Digital Equipment Corporation, no part no as I have only partial photo copy The normal manual to the VT 320, in Appenddix E all the escape sequences. [DEC3] Digital Equipment Corporation, introduction to programming Digital Equipment Corporation, 1975, PartNo EB P1042 76 01-/09 20 How to program an PDP8 system [DECUServe] DECUServe - Magazine of DECUS news server DECUS (DEC User Society) Photocopies of part of an 199? issue that landed on my desk few years ago. Contained under the title Witty Bits part of a conference about docu humor. [Dewar] Robert Dewar & Matthew Smosna, Microprocessors - A Programmers View McGraw-Hill, 1990, ISBM 0-07-016638-2 A detailed, thorough, but easy to read text comparing todays 32 bit proc. It covers 80386/486, 68030/40, Mips, Sparc, 80860, Power and Transputer. Its organisation (by chip) and my desire to have the data by feature lead to my desire to write a processor book, then creeping featurism took over. [Dobbs] Dr Dobbs Journal monthly magazine I have only got a few articles out of one issue I got accidently. [Dougherty] Dale Dougherty, sed & awk O'Reilly & Associates, 1990, ISBN 0-937175-59-5 About 2 Unix text processing tools. Contains the best description of using regular expressions I've ever seen. [Dowd] Kevin Dowd, High Performance Computing O'Reilly & Associates, 1993, ISBN 1-56592-032-5 How modern processors and Fortran or C compilers crunch numbers fast. [Duncan] Ray Duncan, Advanced MSDOS Programming Microsoft Press, 1988, ISBN 1-55615-157-8 Sometimes you just need to know something about MS-DOS. Of the thousands of books about it this is one of the best. [EDN] EDN monthly magazine, no further information 1 articles photocopied out of 92-7. [Elektroniker] Elektroniker (Germen) monthly magazine, no further information 2 articles ripped out of 89-5 and 89-6. [Engelbart] Doug Engelbart, The Augmented Knowledge Workshop = [Goldberg2] p185..247 The first implementation of document oriented computing and hypertext. [Epstein] Joshua M. Epstein & Robert Axtell, Growing Artificial Societies MIT Press, 1996, 0-262-05053-6 Behaviour studies in Artificial Life style patterns of cells. [Feynman1] Richard P Feynman, QED - The Strange Theory of Light and Matter Penguin Books, 1990, ISBN none Not about Computers but about elementary physics. Here because it taught me about simple explanations for complex things. [Feynman2] Richard P Feynman, Surely You're Joking Mr. Feynman Vintage Books, 1992, ISBN 0-09-917331-X About the life of one of the best scientists of this century. Very good. Showed me that the hacking attitude and real science are the same thing. [Feynman3] Richard P Feynman, What do you Care what Other People Think Bantam Books, 1989, ISBN 0-553-17334-0 Additions to [Feynman2] and his investigation of NASA after the Challanger. The second part contains a thorough analysis how NASAs bureaucracy screwed. [Flugs] FLUGS Vereinsnachrichten (in German) Linux User Group Switzerland The user group bulletin of the LUGS. [Franklin1] Neil Franklin, Photo unpublished Photo of me in front of a Columbia Commander 924 in April 1982. This was the first computer I used, learned programming on it. [Franklin2] Neil Franklin, Organisationsschemata fuer schnelle Rechner (in German) unpublished My lose leafs from a lecture I held ca 1988 at the CCW. Shows methods for speeding up processors, mainly about parallel processing. [Franklin3] Neil Franklin, Diplomarbeit 89 / 406 (in German) Realisation und Programmierung eines 68008-Einplatinentechners Teil 2: Design und Programmierung des Betriebssystems (Monitors) und der Peripherie, 9.10.1989 Technikum Winterthur Ingenieurschule, 1989 copy see: http://neil.franklin.ch/Projects/Tech/dipl/diplom.txt The diploma work for my EE BSC. An implementation of a subset of the Atari STs GEM-DOS operationg system calls, to run a debugger on an 68008 SBC. [Franklin4] Neil Franklin, PlasmaDat Programmer's Reference Manual unpublished The final report of my part of the IT PlasmaDat project. [Franklin5] Neil Franklin, Was ist PostScript? (in German) copy see: http://neil.franklin.ch/Articles/19911100_CCW_Vortrag_PostScript My script/examples from an lecture I held in 1991-11 at the CCW. Shows what PS is and how it is used. Was demonstrated on NeXT DPS yap. [Ford] Andrew Ford, mod_perl Pocket Reference O'Reilly & Associates, 2001, ISBN 1-596-00047-2 Small text showing all the details of mod_perl programming. [Forster] Winnie Forster (ed) & Stephan Freunsdorfer, Joysticks (in German) Take 2 Interactive, 2004, ISBN 3-00-012183-8 Descriptions of about 100 different game controllers, from joysticks over pots and spinners to steering wheels, flight sticks and entire dashboards. [Frisch] AEleen Frisch, Essential System Administration O'Reilly & Associates, 1991, ISBN 0-937175-74-9 An exellent hands on introduction to administering Unix systems. Written to give you just the information needed at the right time. I essentially learned Unix from this plus the man pages on my system. [Garfinkel1] Simson Garfinkel & Gene Spafford, Practical Unix Security O'Reilly & Associates, 1991, ISBN none These don't like intruders in their Unix systems and know how to stop them. If you don't want them either read this. [Garfinkel2] Simson Garfinkel & Daniel Weise & Steven Strassmann, The Unix-Haters Handbook IDG Books, 1994, ISBN 1-56884-203-1 What some users regard wrong with Unix, derived from an Internet mail list. Ranges from serious missfeatures (glob lossage, NFS badness) over totally wrong claims (sendmail bashing, Motif design goal claim) to things bad but not part of Unix (contents of Usenet, C++ missdesign). Read by any experienced Unix user, it will prevent or undo being a weenie but don't take it all for given truth , don't give it to Unix beginners. [Garfinkel3] Simson Garfinkel, PGP Pretty Good Privacy O'Reilly & Associates, 1995, ISBN 0-56592-098-8 How to protect your data and emails from prying eyes. A must if you don't want to become spied upon. Includes full history of PGP and the fights. [Gast] Matthew S. Gast, 802.11 Wireless Networks O'Reilly, 2002, ISBN 0-596-00183-5 How wireless LANS work. [Gibson] William Gibson, Neuromancer Harper Collins, 1984, ISBN 0-586-06645-4 Science fiction, builds on the ideas in [Brunner]. Has had a strong influence on intruders, main theme is a big break in. Influenced also visuals in the movie Tron, see [Byte] 82-11p48 for picture [Gilder] George Gilder, The Coming Software Shift in Forbes ASAP, 95-8-28, to be published as Telecosm, Simon&Schuster copy see http://neil.franklin.ch/Info_Texts/Web_SW_Paradigm_Shift An article about how the Web will change the structure of SW and its making [Gilluwe] Frank van Gilluwe, The Undocumented PC Addison-Wesley, 1994, ISBN 0-201-62277-7 All the nitty-gritty details of the PC hardware and BIOS which you never find discribed in the standard texts. [Glickstein] Bob Glickstein, Writing GNU Emacs Extensions O'Reilly, 1997, ISBN 1-56592-261-1 How to program Emacs in its Lisp scripting language. You will still need an separate book about Lisp [Abelson], [Steele] or [Winston] for full power. [Goldberg1] Adele Goldberg & David Robson Smalltalk-80 - The Language and its Implementation Anything you would want to know about Smalltalk-80, from its makers. [Goldberg2] Adele Goldberg (ed), A History of Personal Workstations ACM Press, 1988, ISBN 0-201-11259-0 Conference proceedings of the same named conference. Details on PDPs, Whirlwind, Arpanet, Alto, Ethernet, Smalltalk, LINC. Lots of good stuff, highly recommended. [Goldenberg] Ruth E Goldenberg & Lawrence J. Kenah VAX/VMS Internals and Data Structures Digital Press, 1991, ISBN 1-55558-059-9 The official text on what happens inside VMS 5.2. [Goossens] Michael Goossens & Frank Mittelbach & Alexander Samarin, The LaTeX Companion Addison-Wesley, 1994, ISBN 0-201-54199-8 A superb description of the fine points of using LaTeX. [Griswold] Ralph E Griswold, A History of the Snobol Programming Languages = [Wexelblat] p601..660 A unusual user oriented, non theoretical, approach to language design. [Gulbins] Juergen Gulbins, Unix - Version 7, bis System V.3 (in German) Springer Verlag, 1988, ISBN 3-540-19248-4 Solid but older introduction to Unix, all parts of it. Predates anything GNUish or other newer stuff like perl. Nice historic view. [Gundavaram] Shishir Gundavaram, CGI Programming on the World Wide Web O'Reilly & Associates, 1996, ISBN 1-56592-168-2 How to write programs to be called be an CGI capable Web server. Allows your Web pages to process forms and become applications. [Hall] Eric A. Hall, Internet Core Protocols O'Reilly, 2000, ISBN 1-565592-572-6 The basic set of protocols all in one description. [Hauben] Michael Hauben (hauben@columbia.edu) & Ronda Hauben (ronda@umcc.umich.edu), The Netizens and the Wonderful World of the Net, an Anthology ftp://wuarchive.wustl.edu/doc/misc/acn/netbook, 199x copy see http://neil.franklin.ch/Netizen/ History of Arpanet and Usenet from the perspective of some of its users. Started as a sociology students Usenet questionaire. Required for understanding net users views, dislikes and their reasons. [Hendrickson] Kenneth J Hendrickson, Yost Serial Device Wiring Standard Hendrickson (kjh@usc.edu, kjh@seas.smu.edu), 1995 How to convert any RS 232 device (DTE or DCE) to RJ-45 universal cable. [Hofstadter] Douglas R Hofstadter, Goedel, Escher, Bach Basic Books, 1979, ISBN 0-394-75682-7 A superb mix of music, art, maths, buddhism and artificial intelligence. Conrad Escher is a favorite artist of many hackers. [Hopper] Grace Murray Hopper, Keynote Address = [Wexelblat] p5..24 The development of A-0, A-2, Flow-Matic, Cobol. [House] Charles House, Hewlett-Packard and Personal Computing Systems = [Goldberg2] p401..437 The history of the HP desk and pocket calculators. [Howto] Linux Howto documents on any Linux system /usr/doc/howto/* Describe what hardware will work with Linux, known problem with various HW. [Hunt] Craig Hunt, TCP/IP Network Administration O'Reilly & Associates, 1992, ISBN 0-937175-82-X An exellent hands on introduction to configuring TCP/IP on Unix systems. Written to give you just the information needed at the right time. [IEEEcommunications] IEEE Communications Institute of Electrical and Electronical Engineers One of its many theme specific magazines. [IEEEmicro] IEEE Micro Institute of Electrical and Electronical Engineers One of its many theme specific magazines. [IEEEsoftware] IEEE software Institute of Electrical and Electronical Engineers One of its many theme specific magazines. [IEEEspectrum] IEEE SPECTRUM Institute of Electrical and Electronical Engineers Its main non-thematic publication. [Inmos1] Inmos, The Transputer Databook Inmos, 1989, DocNo 72 TRN 203 01 Description of the various transputer chips. [Inmos2] Inmos, The Transputer Application Notebook Inmos, 1989, DocNo 72-TRN-205-00 Description of how to use transputer chips. [Inmos3] Inmos, The Graphics Databook Inmos, 1988, DocNo 72-TRN-204-00 Description of the various graphics chips, CLUTs and video controllers. [Inmos4] Inmos, Transputer Instruction Set A compiler writer's guide Prentice-Hall, 1988, 0-13-929100-8, DocNo 72 TRN 119 05 How to program the Transputer in assembly language. [Input] Input, Fuer Informatikanwender der ETH Zuerich (in German) Informatikdienste der ETH Zuerich User information magazine of the ETH central computing department. [iX] iX Unix Magazin (in German) Heise Verlag, 19??- (monthly magazine), ISSN I don't know Good solid technical articles. [JamesM] Mike James, Anatomy of the Dragon Sigma