Disrupting access to scholarly journals

What happens when scholars bypass the library? In new and probably illegal ways?

Why would you want to pay 30 USD for a 20 year scientific article?

It’s nothing new. Scholars have always exchanged information. In olden days, before the deluge of videos shaming cats for silly behaviour, scientist regularly needed access to papers that were not available through their university library. When that happened, they asked their secretary to write the author of the paper, and request a copy.

It was institutionalized. When you submitted a paper to a journal, you were expected to buy a number of preprints of the paper from the journal. That  covered some of the cost of printing the journal, and you were welcome to distribute the preprints among your colleagues. You were annoyed that you had to buy them, but you actually needed them, to promote your own work, so that was OK.

Then the internet happened. Scholarly journals became digital, information suddenly had the potential to become very free. Scholars had instant access to huge numbers of scientific papers. Information could travel around the globe almost instantly. What also happened, was that the cost of subscribing to the journals went through the roof. No university library today can afford to subscribe to all the journals that researchers want access to. The publishers still want to be paid for the access, so they erect paywalls around their content. If your university library does not subscribe to the journal you want to read, you can pay to get access.

Okay. The scene is set. We have scholars, who believes that information should be free. We have information with a very high potential for being set free. And most of that information is hidden behind paywalls, where some scholars have access, and others dont.

Solution? Write to a colleague that has access, and ask him to email you a pdf.

Again, nothing new. We’ve seen it before. If we could gain access to the emails, we could describe the networks exchanging pdfs.

It might even be possible to describe this situation with nice formulas. It is probably analogous to the potential energy harnessed by cells, then there is a difference in the concentration of sodium ions across a cell membrane.

But now something interesting has happend (it actually happened a couple of years ago).

Researchers have begun using Twitter to request copies of papers they otherwise wouldnt have access to. They tweet the hash-tag “#ICanHazPDF, along with a reference and an email-adress. And kind people around the world, with access to the paper, send a pdf-copy of it. Quick. Easy. Free.

That was a very long introduction, inspired by this post. Whats next? In the next couple of posts, I’ll try to analyze what the consequences of this new-ish phenomenon might be. Maybe we’ll even get some numbers.

 

Rotoscoping

I ved godt hvad det er – I så det i A-HAs hit “take on me”.

Her er en katte-gif. I gamle dage var GIF bare et grafikformat. De kunne godt nok animeres, men det var lidt tungt, filer fyldte for meget og sådan. Og så blev de primært brugt til at lave hjemmesider der ikke var til at holde ud at se på.

I dag er de på mode igen – så meget at folk ikke tror at GIF også bare er et billedformat, men at de fuldstændigt er associeret med animerede gifs.

Men det var ikke det der var den egentlige pointe. Pointen var at lave en rotoscopet animeret gif.

Man starter med at finde en gif. Her er en god en, der fint illustrerer hvordan jeg har oplevet de sidste ca. 24 timer (nu er der kun fem kvarter til det er weekend. Yay!)

giphy

Og her er så resultatet af en rotoscoping:

t00zm

Nå. Hvad gjorde jeg så?

  1. Jeg startede med at lede efter et billede der udtrykte min sindstilstand. Egentlig var det et hamsterhjul med en hamster jeg ledte efter. Men det passede sgu meget godt at katten havde fået skåret halen af (stakkels kat). Giffen blev downloaded.
  2. I IrfanView (enestående fantastisk program!!!) splittede jeg filen af i dens enkeltbilleder.
  3. Hvert enkelt billede fik følgende behandling:
    1. CTRL-E – vælg edgedetection. Det finder “kanterne” på billederne, der hvor der er overgange mellem forskellige farver.
    2. ALT-I (for image), vælg negative – alle kanaler.
    3. Gem.
    4. Egentlig burde hvert enkelt billede også konverteres til gråtoner, det ville få det endelige resultat til at fylde mindre. Det var jeg for doven til.
  4. Herefter skulle billederne samles til en animeret gif igen. Det skete på ImgFlip. Der er andre værktøjer. Jeg har bare ikke fået downloadet GIMP endnu, efter min forlovede har opgraderet computeren til windows something (10?). Så jeg hoppede på nettet og fandt noget.
  5. Vupti! Der er et vandmærke der irriterer og sådan. Og næste gang laver jeg øvelsen under punkt 3 i ImageMagick i stedet. Den kan nemlig automatiseres. Det kræver en særligt desillusioneret hjerne at sidde og gøre det i hånden for par-og-firs billeder.

Hep! Sådan.

Rotoscoping

It’s been a little quiet around here. A lot of things have happened, maybe to many given the activity here.

We are getting ready to open the DataLab. The InnovationLab have had its first workshops (and I have to build a gadget to fix a problem with one of the printers – it is going to be ugly. But it will work!)

But right now I’m waiting for someone to send me an image. Before I get that, I cant send out our annual user satisfaction survey. So – an unexpected break!

Therefore a post that would normally show up at another blog, dedicated to geeking out. But relevant here.

One of the latest trends in library marketing is the promotional video. At our library, we appear to be fond of LEGO stop-motion animations. But “my” library is a small one, and we are frequently left out of the videos. For good reasons, but still, something must be done!

It is time consuming to produce a stop-motion video. And its been done. Instead we should do something that has’nt been done before. But it should be cool. Enter the music video for AHAs hit Take On Me. It used a technique called rotoscoping, to mix ordinary imagery with sequences that appear to have been drawn in hand.

How to do that?

  1. Download ImageMagick
  2. Make an ordinary video
  3. Download IrfanView
  4. Split the video into individual frames, using IrfanView
  5. Process the frames with ImageMagick – edgedetect and negate are the filters we’re going to use her
  6. Splice all the frames together again to a video

Simple. Allthough it does require a lot of time. But first of all – sell the idea, and make a storyboard.

Smartphone del VI – A new wire

Der var nu forbindelse mellem Arduino og Raspberry pi. Og nu skulle telefonen så gøres klar til at blive samlet igen. Min plan var at signalet fra telefonen til Arduinoen skulle gå gennem den gamle telefonledning. Det syntes jeg var mest nørdet. Men… I sådan en ledning mellem en telefon og et telefonstik, er der tre ledere. Og ledningen fungerer altså bedst hvis alle tre ledere fungerer. Den røde var død…

Så er rådne dyr gode. Ned i Brinck. De havde ikke den slags ledninger. Hm. Hvis det ikke kunne blive med et gammeldags telefonstik, så skulle ledningen i det mindste ligne originalen. Det der kom tættest på, var et netværkskabel. Sådan et standard twisted pair kabel med 8 ledere. De er ret tynde, så jeg samlede dem parvis. Og havde nu fire ledere. Men jeg skulle ikke bruge mere end tre. Den fjerde… Jeg ville jo godt have røret med. Jeg kunne bare ikke finde en løsning hvor det ikke gav for meget støj på det egentlige signal fra drejeskiven. Men det kan en fjerde leder klare. De skrueterminaler imellem hvilke der er forbindelse når røret er af, blev forbundet med en pull-down modstand og den fjerde ledning. Og vupti, nu har jeg to signaler fra telefonen. Et hvor jeg kan tælle pulser fra drejeskiven. Og et hvor jeg kan se om røret er af eller på.

Koden skal nu skrives om – det er vist ikke så svært igen, men kræver lidt mere ro i hovedet end der normalt er efter en 10 timers arbejdsdag. Så det bliver ikke lige med det samme. Men nu begynder målet at være i sigte!

Smartphone del IV – A New Hope

Da vi forlod den adskilte telefon sidst, var kredsløbet lavet. Drejeskiven skulle blot forbindes med det, og Arduinoen ligeså. (OK, jeg sprang selve fremstillingen af kredsløbet over. Det var en rask lille loddeøvelse med et strip-board, to modstande og tre to-polede skrueterminaler).

Nu lader vi så som om at kredsløb, Arduino og telefon er forbundet. Så skal der kodes. Som tidligere nævnt er der stjålet med arme og ben fra den her Instructable.  Det er koden, med et par tilretninger, også.


int needToPrint = 0;
int count;
int in = 7;
int lastState = LOW;
int trueState = LOW;
long lastStateChangeTime = 0;
int cleared = 0;

// constants

int dialHasFinishedRotatingAfterMs = 100;
int debounceDelay = 10;

void setup()
{
Serial.begin(9600);
pinMode(in, INPUT);
}

void loop()
{
int reading = digitalRead(in);

if ((millis() – lastStateChangeTime) > dialHasFinishedRotatingAfterMs) {
// the dial isn’t being dialed, or has just finished being dialed.
if (needToPrint) {
// if it’s only just finished being dialed, we need to send the number down the serial
// line and reset the count. We mod the count by 10 because ‘0’ will send 10 pulses.
Serial.print(count % 10, DEC);
needToPrint = 0;
count = 0;
cleared = 0;
}
}

if (reading != lastState) {
lastStateChangeTime = millis();
}
if ((millis() – lastStateChangeTime) > debounceDelay) {
// debounce – this happens once it’s stablized
if (reading != trueState) {
// this means that the switch has either just gone from closed->open or vice versa.
trueState = reading;
if (trueState == HIGH) {
// increment the count of pulses if it’s gone high.
count++;
needToPrint = 1; // we’ll need to print this number (once the dial has finished rotating)
}
}
}
lastState = reading;
}
Det er rimeligt velkommenteret.  Så det vil jeg ikke give mig i kast med.

Når programmet er kompileret og sendt til Arduinoen, åbner man sin Serialmonitor, drejer på skiven. Og så får man det drejede tal på skærmen. Fikst.

Star Trek – i kronologisk orden

Vi skulle have aftenen til at gå.

Foran flimmeren.

Jeg foreslog at vi skulle se DS9-afsnittet “Trials and Tribble-actions”.

Så fik vi lyst til at se hele Star Trek kanon igen. Det var en af vores bonding-øvelser da vi startede med at date. Nu er vi blevet forlovede. Sidst nåede vi at se det hele, inden vi tog til Star Trek con i London. Det er ikke sikkert vi når at se det hele inden vi skal giftes.

Men så skulle vi jo se det på en anden måde. Man kunne se det baglæns, men det jeg personligt elsker ved Star Trek, er at der er en kanon. At der er en historie der strækker sig fra 1947 (1937?) til 2378. Eller deromkring. Og at der sådan i det væsentlige er intern konsistens.

Der er også en tidslinie. Kalendersystemet er baseret på Stardates. Mange afsnit indledes med “Kaptajnens kævle, stjernedato 47474.2”, eller noget i den stil. Så… Hvorfor ikke se dem i stardate orden?

Det er så en udfordring. Indtil TNG var det der med stardates en lille smule rodet. Mildest talt. Og der er også uorden i TNG. Det er sådan set først fra omkring sæson 5-6 stykker af TNG, at der er orden i systemet. Og når vi når dertil. Ja, så er der overlap, fordi TNG og DS9 kører samtidig. Og DS9 og VOY overlapper også.

I ENT er der styr på det. Der bruger de så ikke stardates…

Den side de allesammen henviser til når man leder efter en liste over Star Trek i kronologisk stardate orden, er The Star Trek Chronology Project (TSTCP). Der er arbejdet gjort grundigt, der tages hensyn til de lange historiefortællinger. Der er styr på problemet med Tasha Yar, der, efter stardates at dømme, først er levende, så død, og så levende igen.

Men de har ikke TAS med! TAS betragtes af mange som non-kanon. Den er animeret og falder udenfor. Jeg mener (og derfor er det sandheden), at TAS må være en del af kanon. Hvis du møder en trekkie der ikke mener at TAS er kanon – så spørg hvad kaptajn Kirks fulde navn er. Hvis han siger James Tiberius Kirk, kan du råbe HA! og pege fingre af ham eller hende. I det der traditionelt betragtes som kanon, film og serier, eksklusive TAS, får vi at vide at han hedder James T. Kirk. Vores viden om hvad T’et står for, stammer fra TAS. Så deeet.

Anyway, jeg hygger mig lidt med at få skrabet kronologien, få indsat alle TAS-afsnit med stardate. Og så sorterer vi. Resultatet skal nok komme op her.

Og så skal vi have fundet ud af om vi vil se det i streng stardate orden, eller om vi vil følge de krumspring folkene bag TSTCP har lavet for at få enderne til at mødes.

Smartphone del 3

Godt. Da vi slap føljetonen sidst, havde jeg udbredt mig om at drejeskiven sendte pulser. Det er lidt mere kompliceret.

Drejeskiven er en såkaldt Normal-On kontakt. Det vil sige, at når vi påvirker den, så slutter kontakten. Der er forbindelse gennem ledningerne. Hvis man drejer 3 på skiven, så afbrydes forbindelsen tre gange. Det er altså ikke tre pulser hvor der pludselig er strøm vi skal tælle. Men tre tilfælde af at “nu-er-der-ikke-strøm-længere” vi skal tælle.

Det kan man naturligvis programmere sig ud af. Men det forekommer ulogisk. I stedet laver vi et lille kredsløb.

Det ser sådan i grove træk sådan ud.

rotphon

Vi ser kredsløbet i den situation hvor drejeskiven har nået et af de punkter hvor forbindelsen afbrydes. D7 er den pin på Arduinoen jeg ønsker at læse pulser på. Der går nu 5V ind i kredsløbet, det kan ikke komme til jord, så de går til D7. Som Arduinoen læser som HIGH. hvis vi slutter kontakten – det er altså drejeskiven når den er mellem pulser, er der mindre modstand til jord end gennem modstanden før D7. Og dermed ikke megen spænding på D7. Og dermed går den LOW. Når der drejes 3 på drejeskiven, og forbindelsen gennem drejeskiven derfor afbrydes 3 gange, kommer der tre “HIGH” pulser på D7. Dem kan vi tælle.

Det vender vi tilbage til.

Jeg skylder at nævne at inspirationen er fundet på denne side hos Instructables.

Smartphone del 2

OK. Så låget kom af, der blev målt igennem. Og jeg opgav at bruge røret til noget. (Det sidste passer ikke helt, det var først senere, men det her er et indlæg der samler op på et par ugers arbejde med den).

Som man kan se, er der ikke meget elektronik i sådan en telefon. De fleste der er lidt ældre end 30 har set sådan en grå drejeskivetelefon. Det var den første model der for alvor fik seriøs udbredelse i Danmark. Og i virkeligheden i resten af verden. Før da var der ikke mange der havde telefon. Og mange delte dem. Der er en udmærket side her, der omtaler telefonsystemet tilbage i 60’erne og 70’erne. Før min mor begyndte at læse til hospitalslaborant, var hun faktisk beskæftiget som telefonist. Jeg tror stadig hun har sin gamle kittel et sted derhjemme. Længere tid siden er det faktisk ikke.

Den model telefon jeg har gang i her, blev fremstillet af Kirk i Danmark, på licens fra Ericsson – de lavede engang mobiltelefoner. Det går ikke så godt i dag. Men dengang var de store. Telefoner var ved at få deres gennembrud, og der skulle fremstilles millioner af telefoner til en voksende middelklasse i hele den vestlige verden. I mange hjem – rigtigt mange hjem – var det den første telefon der kom i hus. Så svenskerne var grundige. Telefonen var gennemdesignet, der var sågar tænkt over hvor meget lys der slap ind i telefonen – det betyder nemlig noget for hvor mange insekter der kan finde på at kravle ind i den. Og insekter i nærheden af elektromekanik er en dårlig ide.

Med andre ord, det er rigtigt godt og solidt kram, der stadig virker. Nerdgasm!

Måden det fungerede på var, kort fortalt, at telefonen, ved bevægelse af drejeskiven, sendte et antal elektriske pulser til centralen. Hver puls bevægede et elektromekanisk relæ. Når centralen havde fået 8 pulser, var relæet skiftet til position 8. Så drejede man det næste ciffer, eksempelvis 4. Centralen modtog 4 elektriske pulser, og skiftede det næste relæ til 4. Og når man havde drejet nok cifre, var der forbindelse.

Det betyder, at drejeskiven giver et antal pulser på et par af de tre ledninger der går fra selve drejeskiven. Det er dem der er skruet løs på billedet her:

telefon

Kan man nu på en eller anden måde forbinde de ledninger til en Arduino kan man få den til at tælle pulserne. Og så har man det tal der blev drejet.

Det vender vi tilbage til.

Gammeldags smartphone

Jeg faldt over en drejeskivetelefon i den lokale genbrugsbiks. 75 kr for en gammel Kirk model F68. Hm. Den må kunne bruges til noget.

Indtil videre har den kunnet bruges til at skille ad. Men planen er følgende:

  • Drej et tal på skiven
  • Få en Arduino til at læse hvilket tal der drejes.
  • Send tallet/tallene til en Raspberry Pi
  • Få hindbærtærten til at gøre noget med omgivelserne, baseret på tallet.

Første udfordring var at få låget af. Som man kan se herunder, lykkedes det. Inde under røret er der et greb med noget klar plast. Der er et hul, og inde bag ved er der en skrue. I første omgang var jeg sikker på at den justerede et eller andet. Hvor højt telefonen ringede eksempelvis. Det gjorde den ikke. Det var den der holdt huset.

telefonHer er telefonen med låget af. Det skal nævnes at det allerførste jeg gjorde var, at pille drejeskiven af. Det skal man passe på med. Der sidder et lille blikhus på drejedimmeren. Og derinde er der en fjeder. Piller man låget af huset, flyver fjederen imponerende langt. Og så skal man bøvle med at få den tilbage. Det kan man. Det er bare ikke helt let.

Man kan se på billedet at der er 8 skrueterminaler, hvor der er monteret ledninger (på nogen af dem). Jeg har skruet nogle af dem af, mere præcist de ledninger der fører til drejeskiven. Det er nemlig det signal jeg i første omgang vil have fat i.

Samtlige kombinationer af skrueterminaler blev målt parvist med et multimeter, både med røret af og på, og med og uden påvirkning af drejeskiven. Det giver 15*16*2*2 = 960 målinger. Det tog lidt mere end et par aftener. Heldigvis spiller min forlovede World of arcraft, så når opvasken er taget, det værste rod jævnet, og støvsugeren har kørt en lille tur, er der god tid.

Ideen var at finde præcist de terminaler som kunne bruges til også at holde styr på om røret var af eller på. Det så lovende ud, men det lykkedes ikke. Det kan muligvis lade sig gøre hvis man er en bedre programmør end jeg er. Så det bliver ikke lige med det første. Anyway, det kan komme til at fungere fint uden at røret spiller en rolle.

Det var første trin. For at det her ikke skal blive alt for meget Wall of Text, splitter jeg det op i flere indlæg. Så vend tilbage, og følg eventyret hvor en gammeldags drejeskivetelefon forvandles til en smartphone!

 

E-bøger. Online. Med Calibre. På en hindbærtærte

Jeg har tydeligvis et problem med at afslutte projekter. Og absolut intet problem med at sætte nye i verden.

Anyway, vi har et ganske betydeligt antal e-bøger derhjemme. Liggende spredt rundt på harddiske, formentlig ihvertfald fire forskellige.

Det er noget rod. Vi aner ikke hvad vi har, vi aner ikke hvor vi kan finde det, og der er ikke let adgang til noget som helst. Det må der gøres noget ved.

Nu skal vi i forvejen have en Raspberry Pi kørende stort set hele tiden. Den skal styre belysningen af en LEGO-bil. Og lyset i barskabet. Og tage imod kommandoer fra en Arduino koblet til en gammeldags drejeskivetelefon. Og meget andet. Fælles for det hele er, at det er relativt små Python-scripts der skal styre det altsammen, og at der ikke er mange af tingene der for alvor behøver at have en responstid der måles i mere end et par håndfulde millisekunder. Med andre ord, der skulle være rigeligt med regnekraft at trække på, specielt når hindbærtærten skal køre headless (altså uden skærm, og uden at der kører en grafisk brugergrænseflade).

Hvorfor så ikke sætte den op som ebogsserver? Det er vist endda ret let – for det suverænt bedste program til at holde styr på ens ebøger hedder Calibre, og den har funktionaliteten indbygget. Det er med andre ord blot et spørgsmål om at få koblet en ekstern harddisk på dyret, og så sætte Calibre op. Så er der ebogsserver i huset. Der er en beskrivelse af hvordan det kan gøres her.

Well. Det bliver næste projekt. Når jeg er kommet lidt længere med de andre… I første omgang tror jeg vi får etableret en kategori her på siden til projekter. Og underkategorier til hvert enkelt projekt. Det kan forhåbentligt hjælpe til at holde styr på dem.