Skat og selvtægt

Kritikere, jeg selv inklusiv, bruger undertiden ordet “natvægterstat”, når vi skal beskrive hvad det er for et samfund Liberal Alliance ønsker. Det er ikke helt retfærdigt. Men det vi mener er, at LA ønsker at skatten skal sættes så langt ned, at det eneste samfundet, staten, kan levere af serviceydelser er en natvægter. En mand der går rundt i byens gader ved nattetide med en kæp og giver tæsk til misædere. Alt det andet er ligegyldigt.

Når det ikke er helt rimeligt, er det fordi LA jo faktisk vil have andre ting end blot en nattevagt. De vil godt have infrastruktur og andet godt.

Når der er en pointe, er det, fordi natvægteren er det logiske slutpunkt når man vil sænke skatter. Natvægteren er samfundets voldsmonopol. Og voldsmonopolet og skatteopkrævningen hænger tæt sammen.

Voldsmonopolet plejer at blive defineret af Max Weber: “En stat er en realitet, hvis og for så vidt dens embedsvæsen effektivt formår at opretholde monopolet på legitim fysisk tvang”.

Det er en social kontrakt mellem den abstrakte definition vi kalder staten, og de meget konkrete mennesker der indgår i den. Kun staten har lov til at bruge vold. Jeg må ikke hævne mig. Jeg skal gå til staten, som så straffer den person der har gjort mig fortræd. Det er et forbud mod selvtægt. For de islandske sagaer har vist hvor uhensigtsmæssige fejder og hævn er.

Det hænger sammen med den personlige ejendomsret og skatteopkrævningen. Det her er mine penge. Og jeg har indgået en social kontrakt med staten om at kun den, efter nærmere bestemte regler, har lov til at tage dem fra mig med magt. Handelen er, at hvis staten beskytter mig mod at andre tager mine penge så afleverer jeg frivilligt nogen af dem. Uden at staten skal bruge kræfter på at udøve vold mod mig.

Det går langt tilbage. Den danegæld vi opkrævede i England i sin tid var en skat. Opkrævet efter princippet om at hvis ikke de gav os deres sølv, så slog vi dem ihjel. Det næste trin er at statsdannelsen beskytter befolkningen mod at andre opkræver skat, at andre tager vores penge. Staten straffer tyveknægte, fordi den ikke bryder sig om konkurrence.

Og sådan hænger det hele så smukt sammen. Jeg giver frivilligt nogen af mine værdier til staten, der dermed slipper for besværet med at tage dem med magt. Til gengæld beskytter den mig mod tyveknægte og voldsforbrydere. Alt det andet med kontanthjælp, kollektiv trafik og sygehuse er først kommet til for nylig.

Og det er her det bliver farligt, når borgerne i en stat oplever at staten ikke længere kan beskytte dem og deres værdier. Hvis staten ikke beskytter mig mod tyveknægte, så bliver jeg nødt til at gøre det selv. Hvis staten ikke kan beskytte mig mod vold, så bliver jeg nødt til at gøre det selv. Og hvis staten ikke kan finde ud af at udøve vold på mine vegne mod en forbryder, så kan den heller ikke finde ud af at gøre det mod mig. Og så kan jeg endda hævne mig uden at samfundet kommer efter mig.

Det simpelthen grundlaget for statens eksistens, jf. Weber, at den kan beskytte sit monopol på vold.

Så hvad er det der sker når borgerne oplever at politiet kun kommer hvis der er stjålet for mere end 100.000 kr i indbruddet? Hvad sker der, når borgerne oplever, at politiet slet ikke kommer, når borgerne ringer efter hjælp når deres børn bliver overfaldet på gaden?

Der sker ganske enkelt det at grundlaget for at hævde at staten stadig eksisterer, eroderer. Det forsvinder.

Så når vi kalder slutpunktet for Liberal Alliances skattepolitik for “natvægterstaten”, så er det fordi vi fornemmer at de ønsker så lidt stat som overhovedet muligt. Og den minimale stat er en stat, der beskytter skatteyderne mod andres skatteopkrævning. Når tyven stjæler din computer, har han opkrævet skat hos dig. Illegitimt. Og det skal staten beskytte dig mod.

Og hvis staten ikke engang kan det – så ophører den med at eksistere.

 

“Mens vi venter”, eller: Tid siden: “Det skal vi også tale om”.

Det er 00 dage, 00 timer, 00 minutter og 00 sekunder siden at det skulle vi tale om snart.

Det er 00 dage, 00 timer, 00 minutter og 00 sekunder siden at det skal vi tale om nu.

Det er 00 dage, 00 timer, 00 minutter og 00 sekunder siden at der stadig ikke var grund til bekymring.

Det er 00 dage, 00 timer, 00 minutter og 00 sekunder siden at hvis, så er det i hvert fald det første vi skal tale om.

Det er 00 dage, 00 timer, 00 minutter og 00 sekunder siden at selvom “hvis”, så vil det være passende om en måned. (der er max 31 dage i en måned…)

Det er 00 dage, 00 timer, 00 minutter og 00 sekunder siden (ret præcist) at jeg tabte troen på at vi nogensinde kommer til at tage den snak.

Og det er 00 dage, 00 timer, 00 minutter og 00 sekunder siden at “jamen så må vi da hellere til at få taget den”.

Det er så 00 dage, 00 timer, 00 minutter og 00 sekunder siden at der så meddeles at der skal indkaldes til et møde.
Ved hjælp af lidt hovedregning kan man bemærke, at der går ca. 20 dage fra “Nu er det akut”, til der kan observeres en handling.

Endelig! Det er nu 00 dage, 00 timer, 00 minutter og 00 sekunder siden at mødet blev indkaldt. Jeg tror stadig ikke på at snakken bliver taget før den er taget – det er trods alt dage siden der sidst blev holdt et møde hvor den skulle tages – uden at den blev taget.

Twitternetværk

Twitter er ikke specielt stort i Danmark. Men det er der dog. Det lader til primært at være brugt af politikere, der ønsker at kommunikere til journalister, journalister og andre kommmunikationsfolk der ønsker at kommunikere med andre journalister og kommunikationsfolk. Og bibliotekarer, der desperat forsøger at kommunikere med hvem som helst. Det er i høj grad ikke et folkeligt medie, men snarere det LinkedIn godt ville være.

Ønsker man en faglig selvpromovering kan det derfor, specielt når man er i biblioteksbranchen, være en rigtig god ide at være på Twitter. Så det er jeg. Det er sat i system. Jeg sætter tid af hver weekend til kvidren – de lagres i tweetdeck, og spredes ud over ugen, og hver mandag går jeg lige efter og sikrer mig at jeg har til resten af ugen. Dertil kommer en række løse tweets i løbet af ugen. Men der kvidres hver dag.

Jeg går også semiseriøst efter flere følgere. Der er optimeringspotentialer: Hvem fulgte jeg hvornår, og hvis de ikke har fulgt tilbage, var det så ikke på tide at affølge dem. Hvem har unfollowed mig i dag? Skal jeg blive ved at følge dem? Og så videre. Jeg trækker ved hjælp af et pythonscript på en Raspberry Pi oplysninger om hvor mange følgere jeg har en gang i timen, og trækker de samme oplysninger på et antal kolleger i branchen. Skal jeg udbygge det netværk til noget der kan bruges (og det kan det!) i mit arbejde, skal jeg have et synligt mål og kunne følge udviklingen. Jeg skal have flere følgere end Knut – ikke fordi jeg konkurrerer med ham, men fordi jeg skal have et mål, gerne et der bevæger sig lidt (men ikke for meget) , som jeg kan gå efter.

Så langt så godt, der har været andre indlæg der har omtalt det. De burde opdateres, for jeg har omsider fået adgang til Twitters API, og kan nu trække data langt hurtigere, elegantere og legalt, end jeg kunne før.

Men det virker, og selvom jeg skal have migreret et script til python3.4, er det ikke noget der haster.

Så ud over de mindre potentielle indsatsområder, så er der en anden ting der kunne være interessant. Også for andre end mig. Nemlig: Hvordan ser netværkene ud? Hvordan er de danske bibliotekarer forbundet på dette, i en dansk kontekst trods alt relativt begrænsede økosystem?

Der er nogle trin på vejen. Nogen af dem har jeg styr på.

Jeg skal bruge oplysninger om hvem der følger hvem. Lad os bare nøjes med Knut og mig. Hvem følger mig? Hvem følger Knut? Hvem følger vi hver især? Er der nogen vi begge følger? Hvor er de gensidige forbindelser?

Det er trivielt. Der er lidt udfordringer i at jeg ikke kan trække mere end 200 følgere ad gangen, og at jeg ikke kan gøre det mere end en gang i minuttet. Det er der veje uden om.

Hvad jeg har lidt flere problemer med, er at få styr på hvordan jeg vil visualisere det. Der er fine frameworks derude. Det ender nok med D3 til det her formål, den kan også lave fine animationer. Traditionelt gøres den slags med bobler, og det er vel oplagt at min bobbel i grafen har en størrelse der er proportional med det antal følgere jeg har. Derfor vil Knuts også være større.

Så har jeg nogen der følger mig, uden at jeg følger dem. Der skal være en linie af en eller anden art mellem deres bobbel, og min bobbel. Det betyder også at jeg skal have en ide om hvor stor deres bobbel er – jeg skal have trukket oplysninger om hvor mange følgere de har.

Så er der dem som jeg følger, og som også følger mig. der skal også være en linie af en art mellem os.

Endelig er der dem jeg følger, som ikke følger mig. Der skal ligeledes være en linie.

Boblerne er simple. Eller, det er de nok ikke, men det er ikke det jeg har svært ved at folde hjernen om. Det der udfordrer mig er linierne (eller kanterne) i netværket. Der er tre typer. Hvordan skelner jeg mellem dem?

Farver? Det ender det nok med.

Man kunne også overveje om det kunne gøres enklere. Der findes værktøjer derude til den slags. Twecoll for at være mere præcis.

Well. D3. Farver på de forskellige kanter. Så skal der trækkes data. I et eksempel jeg har fundet, tager D3 en JSON fil, med nodes og links. Disse nodes har en source og et target. Det giver god mening for alle andre end de links der er gensidige.

Jeg tager lige et kig på denne her: http://bl.ocks.org/mbostock/4062045

Det er en lidt kølig visualisering af hvilke karakterer der optræder sammen i Les Miserables. Selve koden tror jeg at jeg starter med at kopiere. Så skal jeg generere en JSON-fil. Den har en source et target og en value i link-delen. Hvad der forvirrer mig er, at dens nodes liste har navne og “gruppe”. Gruppe kan man lege med. Men der er ikke et ID der matcher source i links. Der lader det til at være således, at ID’erne matcher positionen i listen i nodes. Hm. Jeg ville klart foretrække at ID’et var et sted i Nodes. Det skal jeg nok tænke lidt mere over.

Rambling on. Vi gør det som D3 vil ha’ det. Så skal jeg bare have det genereret.

Jeg har en liste i json-formatet med de enkelte nodes. De har et navn. Og kan have andre atributter også. I det eksempel jeg tager udgangspunkt i, har de en gruppe. Og det er det. Jeg skal bruge deres index i en liste. Så det første jeg skal er at få genereret den. Jeg trækker alle som følger Knut. Og alle som følger mig. Det giver to lister med twitter-id. Dem gemmer vi i hver sin fil. Hvert eneste ID i den liste er karakteriseret af at de følger Knut eller mig.

Det ville altså være lettere hvis jeg kunne bruge twitter-ID direkte. Det sparer et opslag i node-listen hver gang.

Og det kan man: http://plnkr.co/edit/20t4F02vsM1U55ktCv66?p=preview

Også:

http://stackoverflow.com/questions/23986466/d3-force-layout-linking-nodes-by-name-instead-of-index

Godt. Så vender vi tilbage til at generere listen over edges… Helt så trivielt er det heller ikke.

Visualisering af diverse data

Nørd-nørd-nørd. Og den mere detaljerede beskrivelse er, af hensyn til min faglige selvpromovering, publiceret andetsteds. Så her napper vi bare en gauge på noget data der ligger i et Google Spreadsheet. Mest for lissom at have det liggende så jeg kan finde koden igen.




Mere web automatisering – LinkedIn og Twitter

Hvordan får man automatisk trukket data ud om hvor mange følgere man har på Twitter?

Hvordan får man automatisk trukket data ud om hvor mange kontakter man har på LinkedIn?

<indsæt plidder-pladder om hvorfor det er vigtigt at have en tilstedeværelse på sociale medier og betydningen af hvor meget man har det og hvorfor nørder vil automatisere det ret kvantificerbare mål>

Med andre ord det skal ske automatisk. Hvordan?

Selenium to the rescue!

Og her er koden:

from selenium import webdriver
driver = webdriver.Firefox()
driver.get(“http://dk.linkedin.com/in/cbknudsen”)
content = driver.find_element_by_class_name(‘member-connections’)
print content.text
driver.close()

driver = webdriver.Firefox()
driver.get(“http://twitter.com/nusse”)
content = driver.find_element_by_class_name(‘ProfileNav-item–followers’)
print content.text
driver.close()

 

Man indsætter naturligvis de rette links til rette sider. Det her er dem jeg interesserer mig for. Der skal naturligvis suppleres med noget der fanger tallene. Lige nu får jeg følgende ud:

247
forbindelser
FOLLOWERS
44

Og jeg kan godt nøjes med de to tal. Der så skal sendes til et eller andet sted, og plottes og sådan.

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.

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.