Winky, an arduino-based temperature logger: project plan

An early version of winky, an arduino-based temperature logger.

I know my camera's horrible.

I spent New Year’s with my cousins (also known as The Swedish Shortsnouts), where I came in contact with a project of their father’s, a PIC-based temperature monitor/logger named Dobby. When I returned home, I felt rather inspired, and dug up my Arduino Duemilanove and a SHT15 sensor I bought earlier.

At this point, I’d like to mention I had some rather bad experiences with micro controllers (and don’t get me started on interrupts!) during my time at The RIOT, and I haven’t exactly been keen on hardware hacking since then. Low-level work never suited my short attention span. If I have to think about memory allocation or pin voltages I’m quickly loosing sight the big picture, and end up making luminous fish in stead. Or, to take an example from reality, researching the possibility of keeping pet jellyfish.

Fortunately, after a quick WWW search, I found both wiring shemes and a library for communication with the SHT15. The hard part turned out to be getting the code onto the Arduino, since the IDE is Java-based, and Swing is written by people who clearly know nothing about the X windowing system and since the command-line approach for code uploading is heavily based on a semi-official Makefile that was apparently dropped from the recent versions of the Arduino SDK because it didn’t really work and nobody bothered fixing it.

Thanks to wmname (Suckless to the rescue­­­ as usual!), recommended in a helpful dent, I got the official IDE working. It’s really nothing I’d like to spend much time in, but it works for loading code and communicating over the USB TTY, which was all I needed.

So now I’ve got some rather messy code to log temperatures from the Arduino and send them once every second to anything listening on the USB TTY. Which happens to be a small, also rather messy Python program that logs the temperature and humidity in a text file with a Unix time stamp. This file is then read by a second Python program, using mathplotlib. My error handling is horrible: I just let Python disregard any non-sane values (i.e. any where string->float conversion of the incoming data fails or where the values are clearly invalid), but it works. Rather well, I might add.

However, my goal is a much more stand-alone-ish logging device, so I’ve set up a project plan to try to keep my focus at least somewhat intact.

  1. Try soldering the sensor, and connect it with network (RJ 45?) connectors. Make sure it’s working.
  2. Add a RTC module and make sure it’s working. Have Winky time stamp its own messages, in stead of the PC doing it as it’s recieving them.
  3. Implement an administrational interface for the USB serial console.
  4. JSON-encode the data. Preferrably through some already existing library.
  5. Fix persistent data storage somehow
    1. Find a suitable physical storage medium (probably SD or CF)
    2. Implement it. Probably without FAT or any other file system.
    3. Make sure space is being re-used, i.e. when the medium is full, the oldest stored entries are automatically replaced with the newest. Without messing up the output order, of course (possibly, this could be fixed by sorting on time stamps during print-out).
  6. Buy or make an ethernet shield and get it to work. DHCP may be needed. Implement as much HTTP as required to hand over the logs in JSON, and not a single line of code more. Somewhat RESTful:y.
  7. Buy a new or convert an old separate power supply.
  8. Find a suitable box. An old hub, router or switch is probably perfect.
  9. Make it work with a variable number of sensors.
    1. How are these supposed to be detected?
    2. Should I just try to initiate all sensors, and skip those that fail?
    3. What about plug-and-play? Writing code to continuously loop to see if there’s a new sensor attached isn’t really my idea of fun.
  10. Write some cool client code, perhaps real-time graphing with Javascript? There’s probably a library for that. I hope. Or else I will have to rely on Udoprog writing me one for cookies.

En spellista för revolutionsromantiker

Det är relativt lätt att hitta samhällskritisk musik. Det är förresten lätt att hitta samhällskritik över huvud taget. Eftersom det finns så mycket samhälle, och eftersom så mycket är dåligt med det så kan vilken liberal eller fascist som helst hitta något att klaga på. Att yttrandefriheten inte är fri nog till exempel, eller på den samtida hedonismen och familjens förfall eller, allas favorit, konsumismen.

Däremot är det pilligare att hitta revolutionsromantisk musik. Därför har jag gjort ett urval ur den musik jag lyssnar på. Kriterierna för att vara revolutionsromantisk är här att skildra ett hastigt upprott från det rådande samhället som nödvändigt och/eller önskvärt. Vissa av låtarna är helt klart gränsfall; många av dem har bara ett vagt implicerat hot (löfte?) om en förestående revolt. Egentligen ville jag ha fler låtar, men efter att ha funderat i en månad och inte hittat fler gav jag upp.

  • Muse–Uprising från The Resistance (torrent)
  • Nine Inch Nails–My Violent Heart från Year Zero (torrent)
  • Chumbawamba–Enough Is Enough från Anarchy (torrent)
  • Chumbawamba–The Diggers Song från English Rebel Songs 1381–1914
  • Le Tigre–New Kicks från This Island (torrent)
  • Hoola Bandoola Band–Keops pyramid från 1971–1976 (torrent)
  • Anti-Flag–No Paradise från A Benefit for Victims of Violent Crime (torrent)
  • Ebba Grön–Beväpna er från We’re only in it for the drugs (torrent)
  • Covenant–We Want Revolution från Northern Light (torrent)

Po Tidholm och rättfärdigande av lidande med mer lidande

I dagens kulturupplaga av DN skriver Po Tidholm ett inlägg i den nyligen åter uppblossade debatten om djurindustrin. Huvuddragen i hans argumentation lyder så här: människor som äter alienerat kött tar inte sitt moraliska ansvar, kött borde produceras småskaligt och på ett sätt som tvingar konsumenten att acceptera att det faktiskt är döda djur den äter.

Genom hela texten löper som en parallell röd tråd en berättelse om Tidholms dotter och hennes förhållande till hans hemslakt. Han målar upp det som en viktig del av uppväxtprocessen att komma över sin avsmak inför dödandet av djur, och avslutar, uppenbart lättad, med att konstatera att »Barnen äter [det tillagade köttet] utan vidare frågor. De brukar göra det«. Givetvis, de blir ju uppfostrade till det!

Tidholm fördjupar mot slutet av texten sitt moraliska resonemang runt köttätandet med att mena att den »omsorg« han visat för djuren under deras liv (och vid tillagningen efteråt!) legitimerar dödandet av dem. Hans lösning blir, föga förvånande, en trött önskan om återgång till den småskaliga och ansvarsfulla djurhållningen, instoppat mellan de sedvanliga von oben-kommentarerna om att kött nu minsann procuderas för billigt.

Att kött skulle börja produceras småskaligt igen är förstås möjligt. Men det skulle vare sig göra någon nytta för klimatet, och det skulle knappast gå att upprätthålla den nuvarande köttkonsumtionen världen över. Redan den lösning som Tidholm föreslår framstår alltså som falsk, rent bortsett från hans oärliga försök att framställa någon slags artskillnad mellan sin idealiserade småskaliga djuruppfödning och djurindustrins.

Men även den moral som förespråkas stinker. Dels finns det speciesistiska grundantagandet om människans överlägsenhet och därmed hennes rätt att utnyttja andra djur, men där finns också någon slags skruvad offermoral som går ut på att det är okej att döda andra djur — bara man själv mår dåligt och på så sätt »tar sitt ansvar« medan man gör det. Det är ju självfallet absurt — lammet bryr sig knappast om slaktarens sinnesstämning, det enda som händer är att båda två lider, fast olika mycket och på olika sätt.

De argument som lyfts fram för människans rätt att utnyttja djur för mat är främst att djuren är så denaturaliserade och så hårt avlade att de inte klarar sig själva. De är, med andra ord, konstgjorda av människor. Givetvis spelar det ingen roll; som varelser med medvetande och förmåga att känna smärta är det irrelevant om de är mollusker, får, genmanipulerade människor eller artificiella intelligenser; det hör till deras grundläggande rättigheter att få finnas för sin egen skull och att besparas lidande så långt det över huvud taget är möjligt.

Avslutningsvis ojar sig Tidholm över de »märkliga substitut« vi veganer sätter i oss, detta precis efter ett konstaterande att vi är ohjälpligt »bortom naturen«. Uppenbarligen är kemikalier som framställts i biologiska kemilabb framavlade av människor bättre än kemikalier som framställts för hand i hans skruvade värld.

En studie i hat. Om »Sweden’s suckiness«

Jag fyllde år nyligen, och i helgen fick jag inredningsdetaljer i present, eftersom det ekade i min studentgarderob på 18 kvadratmeter. Jag köpte en stor svart lurvig matta, ett svart påslakan och mörkröda sammetsgardiner. Nu ger mitt rum ett snarare luddigt, svart intryck än ett vitt och sterilt.

Det passar min personlighet skulle jag säga, och framför allt mitt nuvarande humör. Jag har hört till leda att hat är dåligt och nedbrytande, men det är precis min poäng. När allt är dåligt är ju nedbrytande något bra! Jag vill företräda ett luddigt, lågintensivt och (extrovert-) nedbrytande hat.

Ungefär samtidigt som jag satt och filade på min inköpslista inför helgen nåddes jag av nyheten att hackspacet Forskningsavdelningen i Malmö hade stormats av polisen, och att verktyg, maskiner och datorer för många tusentals kronor hade beslagtagits på oklara grunder. I media lät det först som att polisen hade stormat en misstänkt svartklubb på Utkanten, men det förklarar ju inte datorbeslagen, eller varför de hade med sig IT-roteln.

Det är uppenbart att det inte kan ses som ett vanligt rutinärende. Svart- och gråklubbar finns det gott om, och troligen mycket värre än den som eventuellt fanns på Utkanten. Och vad ska de med datorerna och maskinerna till? Att några av slipmaskinerna kunde tillverka nycklar (nyckelhackande och låsdyrkande är ganska modernt inom hackerrörelsen just nu), vilket »möjligen« kunde betraktas som förberedelse till brott är ju inget skäl.

Vi vet ju dessutom av erfarenhet att polisen inte direkt är snabb med att lämna tillbaka beslagtagen hårdvara, ens om den inte var involverad i något brott över huvud taget. För ett litet, ideellt drivet hackspace är det katastrofalt.

Forskningsavdelningen var ju det lyckade hackspacet dessutom. Medan vi på Abbenay hankar oss fram i vad vi kan hitta; unga forskares lokaler eller ockuperade hus, utan möjlighet till att samla- eller lagra saker, gick det ju så bra för Forsk. De höll coola workshops och byggde häftiga saker, och framför allt: de hade en lokal som de fick ha kvar, som ingen körde ut dem ur.

En utländsk kamrat som besökte Abbenay under Commando Carl Bildt-ockupationen konstaterar på Abbenays epostlista att det är ännu en demonstration av »Sweden’s suckiness«. Och jag tänker att det är så det måste vara. Vi får inte ha det för roligt, det får inte gå för bra. Vi ska hålla käften medan de spotifierar världen framför våra ögon, och så fort vi försöker ta plats så kommer de och förstör. Jag kryper ihop lite längre in i mitt luddiga hat.

Thoughts on software and desktop interface design (from a design hater’s perspective)

I previously wrote about website design. Now I’d like to continue my argument and move it to the desktop in stead. I’m going to begin by explaining my motives and approach to computing, continue by pointing out some important problems of most modern desktop environments, give some examples of what is being done about this and finish by very loosely sketching the work flow of an example application.

Computers are all about data. Somehow this has been lost in much of the modern design practices of graphical user interfaces. In stead, they all seem to employ Eben Moglen’s “caveman” principle; you point and you grunt. This type of design is very efficient for some tasks, drawing for example, when you only want to point out a position.

This is one of the main reasons why I have kept as far as possible away from GUI applications. Not because they employ a GUI, there’s really nothing wrong in that, but because they do it poorly. Ridiculously poorly.

Another problem with most modern desktops is all the micro-management necessary to optimize your screen usage. This has become especially important with the advent of the wide screen. As a solution, many desktops either implement work spaces, tiling window management or both. The latter can for example be seen in Apple’s “Active Corners”.

The final fundamental problem of modern desktop environments is one they share with the Web; it is difficult and inflexible to move data between programs. Of course, there’s typically a clipboard with some cut-and-paste function, but it’s often unbuffered (i.e. can only contain only a limited amount of data at a time), and don’t keep the semantics of the transmitted data. For example, say I’d like to tell my music player to transmit my currently playing track data to the letter I’m currently writing.

Of course, this could be done by copying and pasting the data, but that would mean unnecessary plumbing. I wouldn’t be transmitting data, I would be copying a string, switching workspace or program and then pasting it in. What if, say, I wanted a different representation of the track/artist/album data than the music player used?

There are multiple examples of interface designs that try to go beyond the norm. Emacs is one; most Emacs users end up doing a lot of hacks to the way Emacs works. Still, most new modules respect these modifications and fit in nicely (or at least can be convinced to do so). Information can be, and typically is, passed between different Emacs modules and components through function calls and shared data structures. This, of course, is a potential source of errors and would be a nightmare to debug, but it’s a rather good illustration of what I’m talking about.

Another example is the web browser Conkeror, ironically an Emacs-work-alike, which employs rudimentary facilities to move data between programs by allowing external programs to be run on embedded objects or their URL:s. And apparently, the Semantic Web has a sibling project on the desktop called the “Semantic Desktop“. I have heard very little about this though, but it might be something to look forward to.

I’d say that the desktop needs a major overhaul. First of all, the concept of fixed and separate applications should be discarded, and different concepts should be separated. For example, the same text input program could be used to supply both a web browser, an email and a word processor with input data. I hear Plan 9 is doing something similar to this, but its UI is horribly caveman-ish.

An example of how language can be used could be, say, a music library browser driven by an input box where the user enters either an expression (using some syntax) or a simple text string, which is fuzzily matched in the spirit of Emacs’ ido-mode. This box could then be surrounded with context data, such as for example the covers of the matched albums or further search suggestions.

Saker som skulle behöva göras

  • styra upp lojban-studiecirkeln med Job! Nu!
  • färdigställa projektet med Det postdigitala manifestet med Job
  • samla idéer och skriva planer inför årets APV
  • se hur man lämpligast bygger en piratkiosk (också till APV)
  • bygga ett pepparkakshus i form av en Borg-kub
  • förbereda floskelbingo för politiska framträdanden olika smaker, gärna även (S) och (V)
  • skriva ett exportverktyg för Facebook (ett sånt som rsms önskade sig)
  • ev. organisera laga/sy kläder-workshop med intresserade (gärna som är bättre än jag är!!!)
  • experimentera med mesh-nät (kräver dd-wrt-kompatibla routrar)
  • sätta upp den jävla PPTP-tunneln!!! OBS kräver någon annan som kan fixa åt mig!!!
  • införskaffa screentrycksutrustning

Om någon har fler idéer eller vill vara med, så säg till! OBS de flesta tar hundra tusen miljoner år att bli färdig med.

En utopi

Bloggen Jordränta drog igång en utmaning till olika bloggare att beskriva sin vision av det klasslösa samhället. Jag var visserligen inte inbjuden, men jag tänkte svara ändå, om inte annat för att Luftslottet är nere i åtminstone några dagar till. Denna text är i princip en lite annorlunda version av det samhälle som skildras på Anarres i The Dispossessed (men minus svält), så om du har läst den kan du sluta här.

Någon av de utmanade beskrev det som att patriarkatet skulle försvinna omedelbart när kapitalismen avskaffades. Det tror inte jag. Men kvinnors underordning måste givetvis också avskaffas för att samhället ska vara »klasslöst« i någon rimlig innebörd av ordet, så jag tänker mig att min utopi är en konsekvens av både feministisk och antikapitalistisk (samt antifascistisk och en lång rad andra) kamp. Om man väljer att kalla detta för bara »kommunistisk« eller någon annan ism lämnar jag osagt.

Jag tänker mig ett samhälle där produktionsmedel ägs kollektivt, mycket som Salka (vars text jag bara har skummat, ska jag erkänna). Jag tänker mig också, precis som Jordränta, att all tråkig produktion som ändå måste göras (callcenters t.ex. är ju av förklarliga skäl avskaffade) är automatiserad så långt det över huvud taget är möjligt, och utförs med roterande scheman där det inte är möjligt.

I likhet med Lena Gemzöe tänker jag mig ett samhälle som fokuserar mer på reproduktion av människor än produktion av saker. De prylar som tillverkas görs så hållbara och modulära som möjligt för att hålla länge och vara lätta att laga. Barnafödseln hålls förhållandevis låg med hjälp av preventivmedel, och barn både föds av människor och odlas i maskiner.

Bostäder klustras i mindre mer eller mindre självförsöjande grupper, med goda tåg- och luftskeppsförbindelser (flyg är nog kört) mellan varandra. Jag tänker mig väldigt höga höghus, med matproduktion under och kanske på några av fasaderna, men jag är ju inte arkitekt så jag kan inte direkt uttala mig. I anslutning till varje kluster finns de flesta lokaler som kan behövas (biografer, matlager, workshops för olika tekniska prylar, barnpassning, äldrevård, tvättrobotar, mötesplatser…).

Beslutsfattande sker decentraliserat och enligt den syndikalistiska principen om att den som berörs av en fråga ska ha rätt att vara med och fatta beslut i den.

Livsmedelsproduktionen är även den decentraliserad, och sker även den automatiserat i så hög grad som möjligt (givetvis baserat på vad de som äter och tillverkar maten tycker! De kanske älskar att odla morötter t.ex). Djurindustrin är i princip avskaffad (och p.g.a. de lägre befolkningstalen och bättre planerade boplatserna finns det mer utrymme för vilda djur), men kött och andra icke-medvetna djurceller odlas i tankar och äts.

Monosexualiteten är avskaffad som norm, och mellanmänskliga relationer kännetecknas av variationer och ömsesidighet. Många barn föds könlösa och behandlas sedan med hormoner för att utveckla kön när de känner att de vill ha det, könsbyten är vanliga och kön och sexualitet betraktas inte som identitetsgrundande. Människor antas vara asexuella om inte omständigheterna visar annorlunda. Konceptet monogami är nästan helt okänt och de flesta tabun avskaffade, eftersom sexualitet inte längre har någon koppling till reproduktion.

Tekniken betraktas som huvudsakligen i människans tjänst, och både biokemiska och rent mekaniska maskiner används både för nytta och nöje. Tabut mot modifiering av människokroppen är avskaffat, och experiment med kemiska, biologiska, mekaniska och psykosociala »hack« och förbättringar av människor är vanliga. Förhoppningsvis förekommer »mind uploading«.

»Cyberspace« betraktas inte längre som en plats, och digital kommunikation används inte längre i konkurrens med faktisk fysisk närvaro. Datorer och nätverk administreras även de decentraliserat (vilket inte är någon större skillnad mot idag) av olika samarbetande hackerkollektiv. Datortid, bandbredd och lagringsutrymme distribueras lokalt över de olika bostadsklustren. Nätverken är spretiga blandningar av fiberoptik, koppartråd och olika former av radiovågor. TV och radio finns inte. Alla använder Emacs, ingen kommer ihåg vad vim är ens.

Anonymous WWW: Tor and i2p

I’ve recently tried out both Tor and i2p, two very popular tools for anonymous data exchange. They both have different anonymization implementations, but I’m not going to go into that in this post, mainly because I haven’t researched either of them very well. Instead, I’m going to focus on my experiences with them both, as a user, and then I’m going to discuss them in a wider perspective.

The first thing I noticed is how different their implementations are. Tor is rather clean, and does come pre-packaged for Debian. i2p is the usual mess you’d expect from a Java program, and doesn’t. It is also much slower at start-up (and it only recently started working with Free Javas). Tor also seems to handle load much better than i2p.

Both solutions provide a local proxy server (Tor has a SOCKS proxy which is typically connected to a separate HTTP proxy server on the same machine), which the user is supposed to set his or her web browser to use, but i2p while i2p additionally has its entire configuration UI interfaceable as a HTTP server, Tor is mainly configured through the usual text files (though a configuration GUI named Vidalia exists).

Tor provides, typically very slow, access to the normal www, i2p doesn’t. They both provide anonymous communication between internal sites with the pseudo TLD:s .onion and .i2p for Tor and i2p respectively. The “domain names” are quite lengthy hash-like strings for Tor, where they are much like normal domains for i2p. This comes with the cost of having to re-implement a DNS-like system that could’ve been simpler (this is, however, also a problem of the original DNS).

i2p and Tor both provide “hidden services” such as web mail, message boards and wikis. i2p also comes bundled with a web-based bittorrent client modified to work with i2p, and the network has several “hidden” trackers running.

There seems to be a different userbase for i2p and Tor. While Tor, judging by the message boards, seems to be mainly used by pedophiles, tin foil hats, conspiracy theorists and free speech fundamentalists of ridiculous proportions (the type that considers the moving of threads on a message board to the “spam” section to be “censorship”), i2p’s userbase, again judging by the message boards, seems much more tech-savvy, friendly and, well, sane. Another difference is speed: i2p is significantly faster than Tor, perhaps because all nodes are participating in the routing by default, whereas one must actively reconfigure Tor to act as a router.

So, to sum up what I’ve said this far: Tor is a wonderful software with an insufferable user base, i2p is an insufferable software with a wonderful user base. Now, for that pretentious “wider perspective” I promised earlier.

I have two objections to the design of i2p and Tor. My first objection is that it seems quite a waste to have nodes pass data to each other in streams, just to throw it away when the stream has finished. Distributed storage would seem much more efficient.

My second objection is that they still don’t solve the problem of giving people a voice. Rather, their conception of “free speech” seems to be limited to allowing everyone to hear what someone with a voice (read: servers) is saying anonymously. Interpreted this way, the concept of free speech becomes the freedom of the already privileged to speak their minds, and the freedom of everyone else to listen.

I’m sceptical of network designs that separate speakers from listeners, and both Tor and i2p does this. It can, however, be argued that this could be solved at a higher-level protocol, but this would be highly inefficient since the already existing communications infrastructure and node databases of the various protocols would have to be re-implemented.

Finally, it should be mentioned that I’m not a free speech fundamentalist. I have no problem with violent sects, pedophiles, racists and tin foil hats being “censored”.

BankID vs OpenPGP, eller “den här hexagonen fungerar nog bra att rulla saker på”

Ett problem med internet är att det är mycket svårare att verifiera någons identitet när man inte träffas. Egentligen är det samma problem som finns i kommunikation utan dator; hur vet man att den man pratar med verkligen är den som han eller hon utger sig för att vara? Vid tillfällen där det är viktigt använder vi någon form av legitimation, som i princip är ett dokument från en tredje part som intygar att personen är den den utger sig för att vara.

Liknande tekniker finns även för datormedierad kommunikation; istället för ID-kort används kryptografiska nycklar som representanter för olika personer. Dessa nycklar genereras av användarna själva, vilket gör att de inte kan garantera användarens identitet bara som de är.

För att hantera det finns det möjlighet att med sin kryptografiska nyckel gå i god för att någon annans nyckel verkligen tillhör den faktiska personen. Det betyder att om jag har fått en nyckel som jag vet är äkta från Alice, och sen får en e-postad nyckel från Bob som har en signatur som garanterar äkthet från Alice så kan jag (om jag har valt att lita på Alice omdöme i frågan) vara säker på att Bobs nyckel verkligen tillhör just Bob. Och, vad bättre är, det kan min dator också. Automatiskt.

Runt 2001 bestämde sig några driftiga typer för att starta ett konsortium för en gemensam standard för identifikation på nätet, det som blev BankID. På något sätt lyckades de lura på både banker och vissa myndigheter, exempelvis CSN, sin teknik, och resten är, som de säger, historia.

Vad dessa entreprenörer (och jag använder här ordet, som alltid, i smädande bemärkelse) inte verkar ha lagt märke till är att det redan fanns standarder för kryptografisk signering och autenciering, nämligen OpenPGP. Och, förstås, de släppte aldrig någon beskrivning över denna tilltänkta “standard”. Istället säljer de in den hos företag och myndigheter.

Men ett ännu större problem med att deras standard är hemlig, är för oss klienter. I de äldre versionerna av BankID kördes klientmjukvaran som en Java-applet i webläsaren på de websidor som behövde använda det för autenciering. Denna Java-applet var ofri, och fungerade bara ihop med ofritt java. Med tiden blev de fria Java-implementationerna dock bättre, och Sun släppte till slut en hel drös kod.

Till slut fungerade nästan BankID med bara fri programvara (förutom den ofria appleten). Då bytte de system. Nu behöver man ett externt “säkerhetsprogram”, som finns färdigkompilerat för ett fåtal plattformar. Den som råkar befinna sig utanför denna mängd, exempelvis om man har en gammal mac med GNU/Linux eller kör någon BSD-smak utan Linux-emulering, har inte en chans.

Detta “säkerhetsprogram” är givetvis ren ormolja. “Säkerheten” ligger över huvud taget inte i klientprogramvaran! Möjligen finns det vinster att göra på att inte ha inmatningen inuti en webläsarruta, utan i ett externt program, i termer av att det blir svårade att phisha lösenord.

Men det finns långt större säkerhetsproblem i att koden inte finns tillgänglig. Det är alltid en dålig idé att förlita sig på så kallad “security through obscurity”, det vill säga säkerhet som bygger på att en anfallare inte får veta hur ett system fungerar. Systemet blir då ett slags extra lösenord till krypteringen, som dessutom måste skickas med.

Allt anfallaren behöver göra är att studera hur systemet ser ut och på så sätt så småning om pilla ut lösenordet, och sen ta sig förbi skyddet. Givetvis behöver inte ofri programvara ha såna brister, men den uppmanar till det mycket mer än en öppen standard–och vi kan ju inte veta!

Så hur skulle en lösning av ID-problemet se ut med en OpenPGP-liknande modell? Man kan tänka sig olika stadier av decentralisering, men i princip skulle det gå till så att användaren genererar en nyckel som personlig identifikation, får den signerad av sin bank (eller annan organisation) genom en kanal som gör att denna bank eller organisation kan gå i god för nyckelns äkthet.

Användaren använder sedan nyckeln för att autenciera sig hos CSN, eller var han eller hon nu vill autenciera sig, och CSN tittar på nyckeln och ser att den har en giltig signatur från banken (som är deras gemensamt pålitliga tredje part). Man kan tänka sig att bankernas nycklar som de signerar med i sin tur är signerade av, säg, statens banktillsynsmyndighet, som går i god för att de är vad de utger sig för att vara.

Då kan banker dyka upp och försvinna, och allt CSN (eller andra organisationer som vill verifiera någons ID) behöver göra när de presenteras för en nyckel signerad av någon organisation de inte känner igen är att hämta denna organisations nyckel och se efter om den är signerad av statens banktillsynsmyndighet, som då går i god för att denna organisation verkligen har rätt att utfärda ID:n.

Thoughts on Blog Design (From A Design Hater’s Perspective)

Normally, I’d consider designing web pages the very antithesis of my vision of what the web ought to be. I’m dreaming of a network of information, free of representations. Or, to put it differently, I’d like every web page to look the same. Design is irrelevant, I just want the data.

However, since most web site– and browser developers are putting their efforts toward further shoehorning of applications into a document format, I’m confident this text will stay relevant for at least a couple of years. With “good design”, I mean “functional” rather than “visually appealing”; a blog is first and foremost about text, and this text should be readable. Everything else is secondary.

By the way, the rest of this post will be a list of N things. I know, I should avoid it, but I couldn’t help myself.

  1. Do not re-implement windows or window handling or any sort of GUI. At all. In fact, this shouldn’t even be the web browser’s responsibility, but the window manager’s. Despite this most modern web browsers re-implement window management in the shape of tabs. So if you find yourself thinking about pop-ups or lightboxes or similar: don’t. They are slow and they are annoying and they force certain browsing patterns on the viewer needlessly.
  2. Avoid needless Javascript. In fact, keep away from it entirely as much as possible. Also avoid frames or iframes like the plague.
  3. Don’t impose your screen size as the norm. Avoid fixed width and fixed font sizes and your blog will have a greater chance of rendering well on both very small and very large screens.
  4. Keep the screen clean, focus on the text. Use a bare minimum of widgets, menues, links and similar attention-hogs. Imagine your typical reader being a four-year-old with ADD. If possible, consider displaying only one post at a time.
  5. Try to stay away from Angry Fruit Salad colour themes.

Of course, my current theme (the WordPress default) makes many of these mistakes. In particular, it seems to put a unproportionate amount of focus on the background, leaving only a thin streak of text in the middle. Why this is I can only speculate, but I welcome proposals of better WordPress themes!