Dette blir en mimrestund om utskrift i gamle dager. Jeg tror det blir en lang en, så hvis du har tenkt å henge med til slutten så er det sikkert greit om du henter deg en kaffe eller noe sånt først. Selv har jeg en hamburger i magen og en cola ved min side, så jeg klarer meg.
Klar? Ok.
I dag og i morgen er jeg på kurs hos IBM på Mastemyr sørøst for Oslo, og bor på Quality Hotel Mastemyr, en trist og traurig klump 80-tallsarkitektur som så mye i dette strøket. Heldigvis er det også mye furuskog her, så alt vises ikke på en gang. Men i det jeg trasket ned bakken til hotellet i ettermiddag så kikket jeg over veien og fikk øye på noe som fikk gamle minner frem. Mer om det etterhvert.
Først må vi ta tidsmaskinshattene på oss og skru tiden tilbake.., tja, 25 år tror jeg det blir. 1983. Ja, det høres rett ut.
I 1983 hadde jeg jobbet i to år ved EDB-sentret ved Universitetet i Oslo. Jeg startet med å jobbe deltid mens jeg studerte men oppdaget raskt at det å arbeide med datamaskiner var uendelig mye kulere enn å høre på kjedelige teoretikere snakke kjedelig om kjedelige ting man kunne gjøre med dem. Betalt fikk jeg også. Så jeg gikk snart fra deltidsarbeidende student til deltidsstuderende arbeider.
I tillegg gjorde jeg lynkarriere ved EDB-sentret, og var etter to år og uten noen formell utdannelse blitt forfremmet til systemprogrammerer med ansvar for vedlikehold av operativsystem og basisprogramvare på universitetets hovedmaskin, DECsystem-10. Det var nok ikke fordi jeg var så innmari flink - ennå - men mer fordi Norsk Data på den tiden var i storvekst og ansatte en god del personell vekk fra EDB-sentret med hull i rekkene som resultat. Vakuumet i høyden dro meg oppover, fra underetasjen i mattebygget til 3. etasje. Takk til Norsk Data.
Nå til dags er vi alle så vant med en datamaskin på hvert fang og under hvert skrivebord at mange av dere som kan komme til å lese dette ikke engang forstår hva DEC-10 var for noe. DEC-10 var ingen PC. Det var heller ingen server. Det var Maskinen. Den ene datamaskinen som mange hundre universitets-ansatte og studenter hadde tilgjengelig. Noen snakket med den gjennom hullkort, dvs. at de hadde skuff på skuff med data på hullkort på kontoret sitt og når de skulle gjøre en analyse av noe så fant de frem de kortene de skulle analysere - fra noen dusin til mange hundre, spaserte ned i underetasjen og satte seg med en kortpunch (en IBM 029) hvor de skrev en håndfull kontrollkort som fortalte hva som skulle gjøres med datakortene, la dem først i bunken, og leverte hele bunken (også kjent som en "jobb") inn til operatørene. Noen timer senere eller kanskje dagen etter kom de tilbake til understasjen og plukket opp kortene sine igjen, sammen med en utskrift som viste hvordan det gikk med jobben. Gikk det galt så var det bare å prøve igjen.
Med universitetets forrige datamaskin, en CDC-3300, var dette den eneste måten å snakke med datamaskinen på. Men DEC-10 var mer moderne. På den kunne man koble til terminaler. En terminal er en skjerm og et tastatur, og DEC-10 kunne ha flere hundre sånne koblet på seg. Men en terminal er bare en skjerm og et tastatur. Det er blant annet ingen mulighet for å henge noen skriver på dem. Ikke at det gjorde noe den gangen, skrivere var store dyre saker og det var utenkelig at man skulle ha mange av dem.
På DEC-10 hadde vi til å begynne med bare to hovedskrivere. Dette var to digre bråkende beist av noen trommelskrivere ("linjeskrivere") som spydde ut stripet papir i liggende A3-størrelse i løpende baner. Kvaliteten på sånn utskrift er så som så, og både trykkvaliteten og papirformatet gjør dem dårlig egnet til sånt som brev, avhandlinger og andre dokumenter som skal se noenlunde pene ut. For å få ut sånt noe hadde man enkelte steder mindre skrivere av merket Diablo. Jeg husker ikke stort mer om disse skriverne enn navnet og at jeg aldri klarte å få dem til å virke som de skulle.
I 1983 lanserte Canon sin første laserskriver. LBP-8 kunne skrive 8 sider i minuttet med en oppløsning på 200 dpi (punkter pr tomme). Dette var hastighet og kvalitet langt hinsides det vi fikk på de skriverne vi hadde fra før. Så vi (dvs. KZ) bestemte at en sånn skulle UiO ha. Problemet var at LBP-8 var et temmelig uferdig produkt. Den hadde ingen bufring av data sånn at når datamaskinen som var koblet til den sa "skriv ut" så startet den på en side og forventet å bli matet med data like fort som den skrev ut. Dette passet veldig dårlig med en flerbrukermaskin som DEC-10 som hadde treige terminallinjer og ofte ble litt taus og ettertenksom dersom den hadde annet å gjøre. Så vi trengte en "kontroller", ett eller annet som var smart nok til å kunne ta i mot data fra DEC-10, pakke dataene til hele sider og så mate LBP-8 med dem fort nok. Her kom det noen svensker inn i bildet. Peter Löthberg, Michael Rynning og sikkert noen andre fra KTH-miljøet hadde sett muligheten til å gjøre noen penger på LBP-8 og hadde laget en kontroller-boks som gjorde akkurat det vi trengte. Boksen besto av en Motorola 68010-prosessor, litt hukommelse og et par grensesnitt. Dokumentasjonen som fulgte med besto av et kort README-dokument og en utskrift av kildekoden til kontrollerprogramvaren, pent kommentert og vakkert programmert i 68010 maskinkode. Med på kjøpet fulgte Michael Rynning som brukte en dag på å koble opp og teste alt sammen. Firmaet til Peter, Michael og kompani het noe kult - jeg husker ikke hva, dessverre.
Det neste problemet var at vi trengte et program på DEC-10-siden som kunne snakke med kontrolleren. Her ble Jens Thomassen fra Institutt for Informatikk leid inn for å trylle litt. Han leste DEC-10-dokumentasjon i noen dager og hostet så opp et program skrevet i Rutgers Pascal, en kompilator portet til DEC-10 av Charles Hedrick. Det fine med Rutgers Pascal var at dette var et passelig høynivå programmeringsspråk som hadde tre store fordeler: (1) det hadde ikke garbage collection slik at det hadde en bra hastighet, (2) det hadde tilgang til lavnivå TOPS-10 systemkall slik at det kunne gjøre effektiv snakking med eksterne enheter og (3) det var ikke FORTRAN.
Når dette programmet var ferdig så gjensto det bare ett problem: å få til å lage filer som man kunne mate til laserskriveren. For å få til dette tok vi i bruk TeX. TeX ble faktisk først laget for å kompileres med Rutgers Pascal på en DEC-10, så dette var et ganske logisk trekk. Jeg fikk jobben med å få installert TeX, mens Jens fikk tak i (eller skrev, jeg husker ikke) en DVI-driver, dvs. programmet som oversatte den generelle outputen fra TeX til kodene som Canon-skriveren ville ha.
Jeg husker fremdeles spenningen når vi fikk ut den første testutskriften fra TeX til skriveren, men jeg tror ikke den ble tatt vare på for ettertiden. Canon-skriveren ble stående og skrive ut mer eller mindre vakre ting i et par år, til den ble erstattet av bedre saker.
(LBP-8 ble heller aldri noen kommersiell suksess i seg selv. Den trengte en bedre produktifisering og det fikk den året etter. I 1984 lanserte HP sin første LaserJet, som var en Canon LBP-8-motor pakket sammen med en kontroller i et kabinett med HP-logo på.)
Rundt 1985 skjedde det store saker. For det første var DEC-10 på vei ut, og VAXer var på vei inn. På utskriftssiden begynte det å komme store mengder med laserskrivere. Noen av dem hadde noe spennende nytt som het PostScript. Et programmeringsspråk inni en laserskriver? Kult, det må læres.
På denne tiden hadde det også blitt installert nettverk over det meste av Blindern. Med hjelp av dette kunne man koble terminalen sin til en hvilken som helst av maskinene vi hadde. I tillegg hadde også den personlige datamaskinen gjort sitt inntog. Tidlige IBM PCer (XT, AT) og Macintosher begynte å dukke opp rundt om på universitetet. Med hjelp av en terminalemulator som for eksempel Kermit kunne man også bruke disse som terminaler mot VAX og andre minimaskiner. Skriverne ble stadig mindre og billigere, og flere og flere av disse ble installert lokalt i de forskjellige byggene på Blindern. Problemet var at man måtte velge hvilken maskin skriveren skulle være koblet til, og dermed endte man enten opp med å bare kunne skrive ut fra en maskin, eller å måtte ha flere skrivere, en for hver maskin man skulle kunne skrive ut fra.
Gjennom mesteparten av 80-tallet hadde vi to EDB-avdelinger på UiO. Det ene var min arbeidsgiver som opprinnelig het EDB-sentret men som etter hvert skiftet navn til USE, Universitetet Senter for EDB. Det andre var ADB-avdelingen som holdt til i kjelleren av administrasjonsbygget og var ansvarlig for administrativ databehandling, dvs. sånne ting som lønns- og personalsystemer, studentregister mv. Rundt 1989 ble det bestemt at disse to avdelingene skulle slås sammen til en, som skulle hete Universitets Senter for InformasjonsTeknologi - USIT. I det dette skjedde passerte vi 100 ansatte, og følte at vi var blitt uoversiktlig store. ADB-avdelingen kjørte fremdeles sine systemer på stormaskiner, disse fra produsenten Control Data.
En gang sent i 1989 var jeg med på et møte hos ADB-avdelingen der vi diskuterte konsekvenser av sammenslåingen og problemområder som burde adresseres. Et av disse var dette med utskrift og hvordan man kunne få til en løsning som gjorde det mulig å skrive ut fra hvor som helst til en hvilken som helst skriver. Jeg satt ved bordet og hørte på diskusjonen. Plutselig spratt jeg opp og sa "jeg vet hvordan dette kan løses". Før jeg visste ordet av det sto jeg der med en tusj i hånden og tavla foran meg full av arkitekturtegning til et ennå ikke eksisterende utskriftssystem. Jeg tror dette var første gangen jeg hadde en Bjørn-får-ideer-fortere-enn-han-klarer-å-tegne-opplevelse, men det var definitivt ikke den siste.
I 1989 hadde jeg byttet over til å jobbe med Unix etter noen år som VAX/VMS-administrator/systemansvarlig, og i den forbindelsen hadde jeg også brukt en del tid på å sette meg inn i TCP/IP (teknologien som ligger i bunn av Internett) og protokoller som bygger på denne. Ideen min var å lage en printserver som alle skrivere ved universitetet kunne kobles til, å lage en TCP-protokoll for å overføre printjobber til denne serveren, og å lage klientprogramvare til alle maskiner ved UiO som gjorde at de kunne sende av gårde print inn i dette systemet.
I dag ville det aldri falt meg inn å få en sånn ide. Delvis fordi det nå finnes masser av alternative løsninger som kan få til stort sett det samme, men også fordi jeg nå vet hvor mye jobb det er å gjøre noe sånt. Den gangen var jeg bare 29 og hadde alle nattetimer i verden til rådighet, så ingen oppgave lot til å være for stor.
Jeg vet ikke hvilken reaksjon jeg hadde ventet å få, men det var i alle fall ikke den jeg fikk. De andre rundt bordet tittet på meg og sa "når kan du være ferdig?" Det ble bestemt at jeg skulle få en laserskriver til rådighet og at det skulle kjøpes inn en liten VAX med Ultrix (Digitals Unix-variant) som skulle brukes som server.
Så da var det bare å begynne å kode. Det første jeg gjorde var å definere protokollen som skulle brukes. Jeg kalte den Remote Print Transfer Protocol (RPTP) og modellerte den etter protokollen for å overføre email over Internet, Simple Mail Transfer Protocol (SMTP). Deretter begynte jeg å kode serveren. Hadde jeg skulle gjort dette i dag hadde jeg nok startet med å skrive en spesifikasjon av serveren først, men den gang var det å skrive kode det som var kulest, så jeg startet der.
Etter å ha programmert noen tusen linjer med C-kode (og fått ut mine første testutskrifter på skriveren jeg hadde fått lånt til formålet) begynte det å gå opp for meg hvor mange flere tusen linjer med kode jeg måtte skrive for å være i nærheten av å ha et system som fungerte. I tillegg krasjet driten i ett sett - C er ikke noe bra programmeringsspråk for udisiplinerte programmere.
Det var da jeg oppdaget Perl. Etter å ha brukt to netter (dette var et natteprosjekt, dagene hadde jeg skikkelig jobb som måtte gjøres) på å eksperimentere kastet jeg all C-koden min og reimplementerte de noen tusen linjene med C-kode med hjelp av noen hundre linjer med Perl-kode. Deretter gikk resten av utviklingen raskt. Siden det finnes Perl for de aller fleste operativsystemer skrev jeg også print-klienten (ppr) i Perl. ppr var modellert etter lpr-kommandoen i Unix, men med en del andre muligheter.
En annen ting jeg brukte en del tid på var å finne på et kult navn på printsystemet. Jeg endte opp med å kalle det UiO PRInt Spooling System, forkortet UiO PRISS. Jeg har alltid vært en fan av Blade Runner. Say no more.
Enhver erfaren programmerer vet at det å få en server til å fungere for én bruker ikke nødvendigvis (og ikke engang sannsynligvis) betyr at serveren fremdeles fungerer når det kommer flere brukere på systemet. Jeg var ingen erfaren programmerer - til nå hadde jeg stort sett drevet med feilretting og småfiksing på systemer laget av andre. Etter hvert som vi begynte å sette opp flere maskiner som sendte utskrifter gjennom priss.uio.no begynte ting å gå veldig galt. Mange mange flere nattetimer gikk med på lære seg hvordan man programmerer god kode på et Unix-system. Etter hvert begynte systemet å gå rundt. Inni var det selvsagt et mareritt, uten en gjennomtenkt arkitektur og med hauger av "smarte" fikser på i utgangspunktet dårlige løsninger. Men det virket.
Den gangen jeg skrev PRISS var jeg helt sikker på at dette skulle være en midlertidig løsning som skulle fases ut i løpet av få år. Årsaken var at DEC på den tiden var med i et softwarekonsortium som het OSF og som hadde planer om å lage en kommersialisert versjon av Palladium, utskriftssystemet til MIT Athena. Jeg hadde lest dokumentasjonen til Palladium og visste at dette var et mye bedre system enn PRISS noen gang kunne komme til å bli. Problemet var bare at Palladium bare kunne kjøre på MITs ganske spesielle Unix-systemer og var avhengig av masse annen MIT-spesifikk programvare.
Palladium manifesterte seg aldri, og PRISS ble værende ved UiO mye lengre enn meg. Da jeg sa opp jobben min ved UiO i 1991 hadde bruken vokst til slike mengder at den stakkars lille PRISS-serveren var i ferd med å knele. I tillegg fungerte dette med en sentral server dårlig i en stadig mer geografisk spredt UiO-verden med treige linjer mellom lokasjonene. Jeg endte opp med å bruke oppsigelsestiden min på å implementere støtte for distribuerte servere i PRISS, der klientprogramvaren var smart nok til å koble seg til rett PRISS-server avhengig av hvilken skriver man prøvde å skrive ut på.
Når jeg i senere år har møtt USITere som ankom USIT etter at jeg dro og forteller dem at det var jeg som fant på PRISS har jeg flere ganger fått vite at det ikke er noe å være stolt av. Jeg forstår dem godt. Jeg designer bedre systemer i dag, jeg lover. Noen av dem har til og med en arkitektur!
Jeg aner ikke om det fremdeles er noe av PRISS igjen eller hvordan PRISS døde eller om noen tok vare på en kopi av programvaren. Jeg har ikke turt å spørre, kanskje mest fordi jeg er redd for at svaret skal være "PRISS? Kom hit og fiks driten!".
Men jeg er ikke helt ferdig ennå. Jeg må tilbake til dagens spasertur på Mastemyr.
En av tingene vi hadde behov for rundt 1990 var en mulighet for laserutskrift i skikkelig høyt volum, og gjerne med etterbehandling. Du vet, "skriv dette dokumentet ut tosidig i 800 eksemplarer med hefting og forside og bakside i tykk rød papp, takk". Sånt noe.
Ved administrasjonen hadde man en kopi- og reproavdeling som drev med sånt, men de var ikke på nett, i minst to betydninger av ordet. Diskusjoner med dem om å få dem koblet opp mot oss og å få til et samarbeide ble forsøkt flere ganger, men førte ingen vei. Kopi- og reproavdelingen brukte Xerox-maskiner. Da gjorde vi det eneste logiske - vi gikk til Kodak.
Der fikk vi omvisning i Kodak-bygget på Mastemyr av en stolt selger som viste oss rad på rad med skrivebord og benker der det satt selgere og supportpersonell og servicepersonell og jobbet med skrivere og filmting og alt hva nå Kodak drev med. Et skikkelig digert og imponerende bygg var det, mye større enn Informatikkbygget og med en ganske(!) annen kleskode.
Vi endte opp med å shoppe oss en Kodak 1392, et gedigent lokomotiv av en skriver som skrev ut 92 sider i minuttet og bråkte som et uvær. Dette var den første av sitt slag som ble solgt til Norge og en av de første i verden også tror jeg. Kvaliteten tydet i alle fall på det. Vi hadde store innføringsproblemer med den både når det gjaldt programvaren og etterbehandlingsenheten. Etter en rekke patcher og servicebesøk ble ting bedre, og vi klarte etter hvert å få satt den i drift. Jeg måtte legge til en haug med nye valg i ppr for å få inn støtte for å kunne styre sånne ting som dupleks, stifting, permer, etc.
Og i dag så jeg plutselig Kodak-bygget igjen. På avstand sto det der akkurat som det gjorde for 18 år siden, men i sokkeletasjen så jeg et skilt som fikk meg til å lure. "Kolbotn Bilpleie", sto det. Så jeg ruslet over veien for å ta en titt.
Det var et trist syn. En ting er at det er en dekkforhandler i førstetasjen, men når jeg gikk rundt bygget og opp langs andre etasje så viser det seg at over halvparten av bygget står tomt. Det bare står der og ruster og råtner bort. Gjennom vinduene tittet jeg inn på digre kontorlandskap der jeg for en liten mannsalder siden fikk omvisning og ble vartet opp og som nå er fullstendig tomme. Vemodig, var det. Gammel, føler jeg meg.
Men rart er det nå ikke. Det begynner å bli veldig lenge siden sist jeg kjøpte en Kodak-film. Og det er en stund siden sist jeg så en Kodak-skriver også.
Såh, det var kveldens mimrestund. Er du her fremdeles? Der ble jeg imponert.
Merk at alt dette er skrevet etter hukommelsen etter en lang dag på kurs og en øl til maten, så det er sikkert ting jeg har glemt, husket feil eller fordreid. Hvis du vet mer enn meg om noe av dette så hadde det vært flott å få høre fra deg. Det er mulig å legge inn kommentarer under, så slå deg løs, eller ut, eller hva du nå vil.
Klar? Ok.
I dag og i morgen er jeg på kurs hos IBM på Mastemyr sørøst for Oslo, og bor på Quality Hotel Mastemyr, en trist og traurig klump 80-tallsarkitektur som så mye i dette strøket. Heldigvis er det også mye furuskog her, så alt vises ikke på en gang. Men i det jeg trasket ned bakken til hotellet i ettermiddag så kikket jeg over veien og fikk øye på noe som fikk gamle minner frem. Mer om det etterhvert.
Først må vi ta tidsmaskinshattene på oss og skru tiden tilbake.., tja, 25 år tror jeg det blir. 1983. Ja, det høres rett ut.
I 1983 hadde jeg jobbet i to år ved EDB-sentret ved Universitetet i Oslo. Jeg startet med å jobbe deltid mens jeg studerte men oppdaget raskt at det å arbeide med datamaskiner var uendelig mye kulere enn å høre på kjedelige teoretikere snakke kjedelig om kjedelige ting man kunne gjøre med dem. Betalt fikk jeg også. Så jeg gikk snart fra deltidsarbeidende student til deltidsstuderende arbeider.
I tillegg gjorde jeg lynkarriere ved EDB-sentret, og var etter to år og uten noen formell utdannelse blitt forfremmet til systemprogrammerer med ansvar for vedlikehold av operativsystem og basisprogramvare på universitetets hovedmaskin, DECsystem-10. Det var nok ikke fordi jeg var så innmari flink - ennå - men mer fordi Norsk Data på den tiden var i storvekst og ansatte en god del personell vekk fra EDB-sentret med hull i rekkene som resultat. Vakuumet i høyden dro meg oppover, fra underetasjen i mattebygget til 3. etasje. Takk til Norsk Data.
Nå til dags er vi alle så vant med en datamaskin på hvert fang og under hvert skrivebord at mange av dere som kan komme til å lese dette ikke engang forstår hva DEC-10 var for noe. DEC-10 var ingen PC. Det var heller ingen server. Det var Maskinen. Den ene datamaskinen som mange hundre universitets-ansatte og studenter hadde tilgjengelig. Noen snakket med den gjennom hullkort, dvs. at de hadde skuff på skuff med data på hullkort på kontoret sitt og når de skulle gjøre en analyse av noe så fant de frem de kortene de skulle analysere - fra noen dusin til mange hundre, spaserte ned i underetasjen og satte seg med en kortpunch (en IBM 029) hvor de skrev en håndfull kontrollkort som fortalte hva som skulle gjøres med datakortene, la dem først i bunken, og leverte hele bunken (også kjent som en "jobb") inn til operatørene. Noen timer senere eller kanskje dagen etter kom de tilbake til understasjen og plukket opp kortene sine igjen, sammen med en utskrift som viste hvordan det gikk med jobben. Gikk det galt så var det bare å prøve igjen.
Med universitetets forrige datamaskin, en CDC-3300, var dette den eneste måten å snakke med datamaskinen på. Men DEC-10 var mer moderne. På den kunne man koble til terminaler. En terminal er en skjerm og et tastatur, og DEC-10 kunne ha flere hundre sånne koblet på seg. Men en terminal er bare en skjerm og et tastatur. Det er blant annet ingen mulighet for å henge noen skriver på dem. Ikke at det gjorde noe den gangen, skrivere var store dyre saker og det var utenkelig at man skulle ha mange av dem.
På DEC-10 hadde vi til å begynne med bare to hovedskrivere. Dette var to digre bråkende beist av noen trommelskrivere ("linjeskrivere") som spydde ut stripet papir i liggende A3-størrelse i løpende baner. Kvaliteten på sånn utskrift er så som så, og både trykkvaliteten og papirformatet gjør dem dårlig egnet til sånt som brev, avhandlinger og andre dokumenter som skal se noenlunde pene ut. For å få ut sånt noe hadde man enkelte steder mindre skrivere av merket Diablo. Jeg husker ikke stort mer om disse skriverne enn navnet og at jeg aldri klarte å få dem til å virke som de skulle.
I 1983 lanserte Canon sin første laserskriver. LBP-8 kunne skrive 8 sider i minuttet med en oppløsning på 200 dpi (punkter pr tomme). Dette var hastighet og kvalitet langt hinsides det vi fikk på de skriverne vi hadde fra før. Så vi (dvs. KZ) bestemte at en sånn skulle UiO ha. Problemet var at LBP-8 var et temmelig uferdig produkt. Den hadde ingen bufring av data sånn at når datamaskinen som var koblet til den sa "skriv ut" så startet den på en side og forventet å bli matet med data like fort som den skrev ut. Dette passet veldig dårlig med en flerbrukermaskin som DEC-10 som hadde treige terminallinjer og ofte ble litt taus og ettertenksom dersom den hadde annet å gjøre. Så vi trengte en "kontroller", ett eller annet som var smart nok til å kunne ta i mot data fra DEC-10, pakke dataene til hele sider og så mate LBP-8 med dem fort nok. Her kom det noen svensker inn i bildet. Peter Löthberg, Michael Rynning og sikkert noen andre fra KTH-miljøet hadde sett muligheten til å gjøre noen penger på LBP-8 og hadde laget en kontroller-boks som gjorde akkurat det vi trengte. Boksen besto av en Motorola 68010-prosessor, litt hukommelse og et par grensesnitt. Dokumentasjonen som fulgte med besto av et kort README-dokument og en utskrift av kildekoden til kontrollerprogramvaren, pent kommentert og vakkert programmert i 68010 maskinkode. Med på kjøpet fulgte Michael Rynning som brukte en dag på å koble opp og teste alt sammen. Firmaet til Peter, Michael og kompani het noe kult - jeg husker ikke hva, dessverre.
Det neste problemet var at vi trengte et program på DEC-10-siden som kunne snakke med kontrolleren. Her ble Jens Thomassen fra Institutt for Informatikk leid inn for å trylle litt. Han leste DEC-10-dokumentasjon i noen dager og hostet så opp et program skrevet i Rutgers Pascal, en kompilator portet til DEC-10 av Charles Hedrick. Det fine med Rutgers Pascal var at dette var et passelig høynivå programmeringsspråk som hadde tre store fordeler: (1) det hadde ikke garbage collection slik at det hadde en bra hastighet, (2) det hadde tilgang til lavnivå TOPS-10 systemkall slik at det kunne gjøre effektiv snakking med eksterne enheter og (3) det var ikke FORTRAN.
Når dette programmet var ferdig så gjensto det bare ett problem: å få til å lage filer som man kunne mate til laserskriveren. For å få til dette tok vi i bruk TeX. TeX ble faktisk først laget for å kompileres med Rutgers Pascal på en DEC-10, så dette var et ganske logisk trekk. Jeg fikk jobben med å få installert TeX, mens Jens fikk tak i (eller skrev, jeg husker ikke) en DVI-driver, dvs. programmet som oversatte den generelle outputen fra TeX til kodene som Canon-skriveren ville ha.
Jeg husker fremdeles spenningen når vi fikk ut den første testutskriften fra TeX til skriveren, men jeg tror ikke den ble tatt vare på for ettertiden. Canon-skriveren ble stående og skrive ut mer eller mindre vakre ting i et par år, til den ble erstattet av bedre saker.
(LBP-8 ble heller aldri noen kommersiell suksess i seg selv. Den trengte en bedre produktifisering og det fikk den året etter. I 1984 lanserte HP sin første LaserJet, som var en Canon LBP-8-motor pakket sammen med en kontroller i et kabinett med HP-logo på.)
Rundt 1985 skjedde det store saker. For det første var DEC-10 på vei ut, og VAXer var på vei inn. På utskriftssiden begynte det å komme store mengder med laserskrivere. Noen av dem hadde noe spennende nytt som het PostScript. Et programmeringsspråk inni en laserskriver? Kult, det må læres.
På denne tiden hadde det også blitt installert nettverk over det meste av Blindern. Med hjelp av dette kunne man koble terminalen sin til en hvilken som helst av maskinene vi hadde. I tillegg hadde også den personlige datamaskinen gjort sitt inntog. Tidlige IBM PCer (XT, AT) og Macintosher begynte å dukke opp rundt om på universitetet. Med hjelp av en terminalemulator som for eksempel Kermit kunne man også bruke disse som terminaler mot VAX og andre minimaskiner. Skriverne ble stadig mindre og billigere, og flere og flere av disse ble installert lokalt i de forskjellige byggene på Blindern. Problemet var at man måtte velge hvilken maskin skriveren skulle være koblet til, og dermed endte man enten opp med å bare kunne skrive ut fra en maskin, eller å måtte ha flere skrivere, en for hver maskin man skulle kunne skrive ut fra.
Gjennom mesteparten av 80-tallet hadde vi to EDB-avdelinger på UiO. Det ene var min arbeidsgiver som opprinnelig het EDB-sentret men som etter hvert skiftet navn til USE, Universitetet Senter for EDB. Det andre var ADB-avdelingen som holdt til i kjelleren av administrasjonsbygget og var ansvarlig for administrativ databehandling, dvs. sånne ting som lønns- og personalsystemer, studentregister mv. Rundt 1989 ble det bestemt at disse to avdelingene skulle slås sammen til en, som skulle hete Universitets Senter for InformasjonsTeknologi - USIT. I det dette skjedde passerte vi 100 ansatte, og følte at vi var blitt uoversiktlig store. ADB-avdelingen kjørte fremdeles sine systemer på stormaskiner, disse fra produsenten Control Data.
En gang sent i 1989 var jeg med på et møte hos ADB-avdelingen der vi diskuterte konsekvenser av sammenslåingen og problemområder som burde adresseres. Et av disse var dette med utskrift og hvordan man kunne få til en løsning som gjorde det mulig å skrive ut fra hvor som helst til en hvilken som helst skriver. Jeg satt ved bordet og hørte på diskusjonen. Plutselig spratt jeg opp og sa "jeg vet hvordan dette kan løses". Før jeg visste ordet av det sto jeg der med en tusj i hånden og tavla foran meg full av arkitekturtegning til et ennå ikke eksisterende utskriftssystem. Jeg tror dette var første gangen jeg hadde en Bjørn-får-ideer-fortere-enn-han-klarer-å-tegne-opplevelse, men det var definitivt ikke den siste.
I 1989 hadde jeg byttet over til å jobbe med Unix etter noen år som VAX/VMS-administrator/systemansvarlig, og i den forbindelsen hadde jeg også brukt en del tid på å sette meg inn i TCP/IP (teknologien som ligger i bunn av Internett) og protokoller som bygger på denne. Ideen min var å lage en printserver som alle skrivere ved universitetet kunne kobles til, å lage en TCP-protokoll for å overføre printjobber til denne serveren, og å lage klientprogramvare til alle maskiner ved UiO som gjorde at de kunne sende av gårde print inn i dette systemet.
I dag ville det aldri falt meg inn å få en sånn ide. Delvis fordi det nå finnes masser av alternative løsninger som kan få til stort sett det samme, men også fordi jeg nå vet hvor mye jobb det er å gjøre noe sånt. Den gangen var jeg bare 29 og hadde alle nattetimer i verden til rådighet, så ingen oppgave lot til å være for stor.
Jeg vet ikke hvilken reaksjon jeg hadde ventet å få, men det var i alle fall ikke den jeg fikk. De andre rundt bordet tittet på meg og sa "når kan du være ferdig?" Det ble bestemt at jeg skulle få en laserskriver til rådighet og at det skulle kjøpes inn en liten VAX med Ultrix (Digitals Unix-variant) som skulle brukes som server.
Så da var det bare å begynne å kode. Det første jeg gjorde var å definere protokollen som skulle brukes. Jeg kalte den Remote Print Transfer Protocol (RPTP) og modellerte den etter protokollen for å overføre email over Internet, Simple Mail Transfer Protocol (SMTP). Deretter begynte jeg å kode serveren. Hadde jeg skulle gjort dette i dag hadde jeg nok startet med å skrive en spesifikasjon av serveren først, men den gang var det å skrive kode det som var kulest, så jeg startet der.
Etter å ha programmert noen tusen linjer med C-kode (og fått ut mine første testutskrifter på skriveren jeg hadde fått lånt til formålet) begynte det å gå opp for meg hvor mange flere tusen linjer med kode jeg måtte skrive for å være i nærheten av å ha et system som fungerte. I tillegg krasjet driten i ett sett - C er ikke noe bra programmeringsspråk for udisiplinerte programmere.
Det var da jeg oppdaget Perl. Etter å ha brukt to netter (dette var et natteprosjekt, dagene hadde jeg skikkelig jobb som måtte gjøres) på å eksperimentere kastet jeg all C-koden min og reimplementerte de noen tusen linjene med C-kode med hjelp av noen hundre linjer med Perl-kode. Deretter gikk resten av utviklingen raskt. Siden det finnes Perl for de aller fleste operativsystemer skrev jeg også print-klienten (ppr) i Perl. ppr var modellert etter lpr-kommandoen i Unix, men med en del andre muligheter.
En annen ting jeg brukte en del tid på var å finne på et kult navn på printsystemet. Jeg endte opp med å kalle det UiO PRInt Spooling System, forkortet UiO PRISS. Jeg har alltid vært en fan av Blade Runner. Say no more.
Enhver erfaren programmerer vet at det å få en server til å fungere for én bruker ikke nødvendigvis (og ikke engang sannsynligvis) betyr at serveren fremdeles fungerer når det kommer flere brukere på systemet. Jeg var ingen erfaren programmerer - til nå hadde jeg stort sett drevet med feilretting og småfiksing på systemer laget av andre. Etter hvert som vi begynte å sette opp flere maskiner som sendte utskrifter gjennom priss.uio.no begynte ting å gå veldig galt. Mange mange flere nattetimer gikk med på lære seg hvordan man programmerer god kode på et Unix-system. Etter hvert begynte systemet å gå rundt. Inni var det selvsagt et mareritt, uten en gjennomtenkt arkitektur og med hauger av "smarte" fikser på i utgangspunktet dårlige løsninger. Men det virket.
Den gangen jeg skrev PRISS var jeg helt sikker på at dette skulle være en midlertidig løsning som skulle fases ut i løpet av få år. Årsaken var at DEC på den tiden var med i et softwarekonsortium som het OSF og som hadde planer om å lage en kommersialisert versjon av Palladium, utskriftssystemet til MIT Athena. Jeg hadde lest dokumentasjonen til Palladium og visste at dette var et mye bedre system enn PRISS noen gang kunne komme til å bli. Problemet var bare at Palladium bare kunne kjøre på MITs ganske spesielle Unix-systemer og var avhengig av masse annen MIT-spesifikk programvare.
Palladium manifesterte seg aldri, og PRISS ble værende ved UiO mye lengre enn meg. Da jeg sa opp jobben min ved UiO i 1991 hadde bruken vokst til slike mengder at den stakkars lille PRISS-serveren var i ferd med å knele. I tillegg fungerte dette med en sentral server dårlig i en stadig mer geografisk spredt UiO-verden med treige linjer mellom lokasjonene. Jeg endte opp med å bruke oppsigelsestiden min på å implementere støtte for distribuerte servere i PRISS, der klientprogramvaren var smart nok til å koble seg til rett PRISS-server avhengig av hvilken skriver man prøvde å skrive ut på.
Når jeg i senere år har møtt USITere som ankom USIT etter at jeg dro og forteller dem at det var jeg som fant på PRISS har jeg flere ganger fått vite at det ikke er noe å være stolt av. Jeg forstår dem godt. Jeg designer bedre systemer i dag, jeg lover. Noen av dem har til og med en arkitektur!
Jeg aner ikke om det fremdeles er noe av PRISS igjen eller hvordan PRISS døde eller om noen tok vare på en kopi av programvaren. Jeg har ikke turt å spørre, kanskje mest fordi jeg er redd for at svaret skal være "PRISS? Kom hit og fiks driten!".
Men jeg er ikke helt ferdig ennå. Jeg må tilbake til dagens spasertur på Mastemyr.
En av tingene vi hadde behov for rundt 1990 var en mulighet for laserutskrift i skikkelig høyt volum, og gjerne med etterbehandling. Du vet, "skriv dette dokumentet ut tosidig i 800 eksemplarer med hefting og forside og bakside i tykk rød papp, takk". Sånt noe.
Ved administrasjonen hadde man en kopi- og reproavdeling som drev med sånt, men de var ikke på nett, i minst to betydninger av ordet. Diskusjoner med dem om å få dem koblet opp mot oss og å få til et samarbeide ble forsøkt flere ganger, men førte ingen vei. Kopi- og reproavdelingen brukte Xerox-maskiner. Da gjorde vi det eneste logiske - vi gikk til Kodak.
Der fikk vi omvisning i Kodak-bygget på Mastemyr av en stolt selger som viste oss rad på rad med skrivebord og benker der det satt selgere og supportpersonell og servicepersonell og jobbet med skrivere og filmting og alt hva nå Kodak drev med. Et skikkelig digert og imponerende bygg var det, mye større enn Informatikkbygget og med en ganske(!) annen kleskode.
Vi endte opp med å shoppe oss en Kodak 1392, et gedigent lokomotiv av en skriver som skrev ut 92 sider i minuttet og bråkte som et uvær. Dette var den første av sitt slag som ble solgt til Norge og en av de første i verden også tror jeg. Kvaliteten tydet i alle fall på det. Vi hadde store innføringsproblemer med den både når det gjaldt programvaren og etterbehandlingsenheten. Etter en rekke patcher og servicebesøk ble ting bedre, og vi klarte etter hvert å få satt den i drift. Jeg måtte legge til en haug med nye valg i ppr for å få inn støtte for å kunne styre sånne ting som dupleks, stifting, permer, etc.
Og i dag så jeg plutselig Kodak-bygget igjen. På avstand sto det der akkurat som det gjorde for 18 år siden, men i sokkeletasjen så jeg et skilt som fikk meg til å lure. "Kolbotn Bilpleie", sto det. Så jeg ruslet over veien for å ta en titt.
Det var et trist syn. En ting er at det er en dekkforhandler i førstetasjen, men når jeg gikk rundt bygget og opp langs andre etasje så viser det seg at over halvparten av bygget står tomt. Det bare står der og ruster og råtner bort. Gjennom vinduene tittet jeg inn på digre kontorlandskap der jeg for en liten mannsalder siden fikk omvisning og ble vartet opp og som nå er fullstendig tomme. Vemodig, var det. Gammel, føler jeg meg.
Men rart er det nå ikke. Det begynner å bli veldig lenge siden sist jeg kjøpte en Kodak-film. Og det er en stund siden sist jeg så en Kodak-skriver også.
Såh, det var kveldens mimrestund. Er du her fremdeles? Der ble jeg imponert.
Merk at alt dette er skrevet etter hukommelsen etter en lang dag på kurs og en øl til maten, så det er sikkert ting jeg har glemt, husket feil eller fordreid. Hvis du vet mer enn meg om noe av dette så hadde det vært flott å få høre fra deg. Det er mulig å legge inn kommentarer under, så slå deg løs, eller ut, eller hva du nå vil.
Fancy konverteringer var jo en slager i PRISS. Dette var jo før windows (eller var det DOS, jeg har aldri vært oppdatert på leketøysfronten) hadde begrep om utskrift og standarder for PostScript-kommentarer og annen moro.
Vi ville jo blant annet gjerne laste ned fonter (fra vårt svært rikholdige font-bibliotek, det var bortimot hele Linotype-biblioteket), men det var ikke så lett å vite hvilke fonter som ble brukt i dokumentet (siden altså windows ikke hadde begrep om strukturerte kommentarer, ja knapt nok om ip og sånne vanskelige ting heller). Ikke kunne fontene ligge i printerene heller, de hadde jo ikke så mye minne i gamle dager.
Til å begynne med var det et stort perl-script som greppet etter interessante ting, men hvert program hadde sin egen måte å gjøre det på, så perl-scriptet ble *veldig* verbost etterhvert (disse greiene tror jeg Bjørn skrev mye av).
Den eneste måten å gjøre det på etterhvert var å kjøre dokumentet gjennom ghostscript, satt opp med 'show' definert til ikke å gjøre noenting og font-operatoren skrev ut fontnavnet på stdout.
Nå gikk det ikke helt fort å kjøre ghostscript på begynnelsen av 90-tallet, så det fikk jo printserveren til å knele. Løsningen var selvfølgelig å rsh'e vekk ghostscripten til en passende alpha-maskin (som var datidens kuuleste jern, slik det ville vært idag om ikke compaq hadde trukket pluggen.).
Og, ja, WordPerfect og resten av windows-greiene kunne ikke noe om tcp/ip. For windows (eller var det dos?) hang printeren på en serieport, og på serieport var end-of-file kontroll-D. Derfor sendte pc'en en kontroll-d på tcp-forbindelsen når jobben var ferdig. Det er selvfølgelig ikke lovlig PostScript, med mindre den forekommer i en binærkodet font, f.eks. Så den måtte fjernes, hvis den var på slutten, da. Men det hendte jo at den sendte noe mer etterpå (f.eks. en postscript-kommentar om at fila var slutt, sånn for sikkerhets skyld!) Av og til sendte den ikke noen kontroll-d, men gikk rett på neste utskrift. Det var en del grepping i PRISS som måtte til for å skille utskriftene.
Dette tullballet pågikk i flere år utover 90-tallet, helt til Microsoft oppdaget datanett og PS-kommentarer. Det er alltid en spennende utfordring å kode rundt inkompetente kommersielle utviklere.
Artig å høre om ting som ingen hadde tid til å fortelle oss dengang da.
Jeg husker særlig da Simen kom og skulle lære oss operatørene om Priss. Han begynte med å forklare alle som var interessert (= jeg, muligens også Inger) hvilke TeX-makroer han hadde brukt og hvilke fonter han hadde hentet symbolene han brukte til bullet points fra.
En ting du ikke nevner, fjernt fra virkeligheten som du var, var hvor snill Word Perfect var mot Priss. dvs. ikke. Priss ventet jo på et signal om at datastrømmen var ferdig fra programmet som ba om utskrift, men tenk Word Perfect sendte ikke noe sånt signal. Derfor hadde Priss en eller annen form for timeout som av og til kverket jobber fra andre programmer enn WP, og som av og til ikke virket med WP slik at køen gikk i stå.
Det skapte bryderi for brukerne av og til, og for oss hele tida fordi det alltid var en bruker der ute som stoppet en kø.
Det å sende fax fra Priss var genialt, da. Jeg hadde nettbokhandeltilgang før books.com.
Artig artikkel om PRISS, Bjørn! Hrm, det er vel jeg som steller for PRISS i disse dager. Olav Kolbu hadde pinnen før meg — og etter Simen.
Det tusler da rundt: I august hadde vi 448495 jobber på 828 skrivere. Vi talte 2590773 sider, og det er en god del (2-3% av jobbene) vi ikke klarer å telle.
PRISS er idag en arbeidshest som får jobber fra windows-frontend-servere (og noen andre klienter), måker jobber til skrivere, teller sider og snakker med Cerebrum (for accounting-info). Fancy-pansy konvertering og slikt brukes ikke så mye.
En og annen hikke er det da, men stort sett er PRISS ganske stabilt og ikke noe å skamme seg over, Bjørn. Men hvis du vil komme og fikse noe av denne dri^H^H^Hkoden, så bare stikk innom! :-)
Forresten, det var jeg som tok over PRISS-greiene etter deg. Klappet litt på det i et par år før stafetten gikk videre. Jeg har ikke fulgt med så mye etter det.
Det er kommet på plass autentisering, samt papirkvoter for studenter etc. Printernavn og servernavn distribueres fremdeles med YP (NIS heter det vel nå). Det finnes en backend for cups og sikkert andre greier.
Desverre er den udokumenterte opsjonen '-X xyzzy="arbitrary command to be executed as root on server"' fjernet av sikkerhetsgrunner. Folk er slemmere nå enn i 1991.
Tror ikke jeg ville hatt PRISS hjemme, eh.
Joa, Bjørn. PRISS lever ved UiO fremdeles. Hvis man har en "arkitektur" varer ikke softwaren så lenge. Det tar ikke lang tid før virkeligheten ikke lar seg innpasse i "arkitekturen". Så får man lage en ny "arkitektur".
Det er mye lurere å lage noe som virker.
$ date; ppq -V
Sun Sep 21 14:18:04 CEST 2008
Trying server kvernbit.uio.no
Contacted RPTP server, presenting you as sgaure@abraham.uio.no [sgaure@abraham.uio.no]
>>HELO sgaure@abraham.uio.no sgaure@abraham.uio.no secret
Server accepted you as a valid user
Server kvernbit.uio.no:
>>QUEUEP suf