Veckans Del.icio.us-länkar

Den här veckans intressanta länkar, från del.icio.us/staffanmalmgren

Demokratiska aspekter på lagarnas utformning

I den här diskussionstråden framför dammskog tesen att enda anledningen till att språket i lagarna inte skrivs om är att de juridiskt utbildade ska kunna behålla makten. Jag kan inte riktigt hålla med. Med tanke på hur mycket tankemöda det lagts genom åren på att uttolka alla aspekter av uttryck som ”påtvingat kroppsligt ingrepp” eller ”oskäligt med hänsyn till avtalets innehåll, omständigheterna vid avtalets tillkomst, senare inträffade förhållanden och omständigheterna i övrigt” så finns det en stabiliserande faktor i att behålla gammal lagtext – precis som ett väldebuggat program så har man stor empirisk vetskap om hur den funkar, även om den kanske inte är lättbegriplig vid en första anblick.

Men kritiken är ändå berättigad. Det är ett demokratiskt problem om medborgarna inte kan förstå reglerna för hur samhället fungerar. Som tidigare nämnts så lusläser jag för närvarande grundlagarna, framförallt regeringsformen, och det är anmärkningsvärt hur svårlästa våra mest grundläggande samhällsregler är.

För att ta ett exempel: Får man anordna ett demonstrationståg? RF 2:1 säger, utan några som helst förbehåll, att, ja, det får man. Men så enkelt är det inte; man måste läsa vidare till RF 2:12, där man ser att den här rättigheten kan begränsas genom lag (dvs riksdagen, inte regeringen, kan bestämma det). Får riksdagen begränsa den hur den vill — har vi en majoritetens diktatur vad gäller demonstrationer? Nej, det finns grundlagsskyddade gränser (i RF 2:12 st. 2 och 2:14) för hur långt den här begränsningen kan gå. Vi har alltså en begränsning för hur mycket en majoritet kan begränsa något som är en grundläggande frihet. Inget av detta anas i RF 2:1, man måste läsa hela kapitlet för att inse det.

Och det var ett enkelt exempel. Sidorna med RF i min lagbok är numera fullklottrade i marginalen med korsreferenser mellan paragrafer, även till andra lagar som Riksdagsordningen, tryckfrihetsförordningen, brottsbalken med flera. Kunskap som att när man läser RF 11:9 st. 2 så måste man ha sista delen av RF 2:16 i färskt minne, och att man i sin tur måste ha läst övergångsbestämmelse 2 till lagändringen SFS 1976:871 för att kunna tolka den rätt i alla situationer (och vi ska inte ens tala om vad EG-rätten, som har företräde över svensk rätt, ställer till för problem när vi ska tolka ovanstående).

Så, vad kan man göra? Jag vänder mig, återigen, mot programmeringsvärlden för inspiration. Det finns två principer för bra programmering som ibland konflikterar mot varandra, men som är värda att tänka på. Den första är att olika delar i ett komplext program ska vara så oberoende av varandra som möjligt – de ska helst kommunicera genom minimala välspecificerade gränssnitt, och utöver dessa vara som ”svarta lådor” gentemot varandra. En del ska helt enkelt varken behöva eller ens få tillgång till väldigt specifika egenskaper hos en annan del. Den andra är att funktionalitet för att göra en viss sak ska finnas på ett och endast ett ställe. Om programmet ska föra en journal/logg över allt det företar sig, ska instruktionerna som faktiskt skriva tecken till loggfilen finnas på ett och endast ett ställe. Det innebär, i det här exemplet, att loggningsfunktionerna måste vara en del av det välspecificerade gränssnittet för minst en komponent, vilket motverkar dess minimalitet (Aspect-oriented programming är ett nytt synsätt på programmering och abstraktioner som bland annat motverkar den här konflikten).

Lagtext i allmänhet bryter ofta mot den första av ovanstående principer. Framförallt är det vanligt med COME FROM-liknande konstruktioner, där en paragrafs innehåll kan påverkas av en helt annan paragraf, utan att det ens antyds i den första paragrafen. Även den andra principen bryts det friskt mot — jämför brottskatalogen i TF med brotten i BrB, och begrunda vad som kan hända när de två listorna skiljer sig.

Återigen kanske det finns något som juridiken, med sina tusenåriga anor, kan lära sig av ett område med typ femtio år på nacken.

Jag har anledning att återkomma till sådana här frågeställningar mer i framtiden, inte minst vad gäller områdena rättsautomatik och lagstiftningsteknik i en mer formell betydelse. Men imorgon blir det en genomgång över fria rättsinformationskällor på nätet — missa inte!

Javascript-understödd layout

Taggningsmöjligheternalagen.nu är första steget i en process genom vilken det ska bli möjligt att koppla information (som etiketter, kommentarer eller bara understrykningar) till lagtext. Ett problem har varit hur man ska fixa det rent layoutmässigt.

Det övergripande resultatet jag är ute efter är följande:

De turkosa områdena är alltså lagtext, medans de gula är redaktionella kommentarer.

Det klassiska sättet att göra detta hade varit med en enkel tabellayout.De röda linjerna är tabellceller:

Men sånt är ju fel och fult. Det är inte semantiskt meningfullt, utan ett missbruk av dokumentstruktur för att åstadkomma en layouteffekt. Det är inte table-free design.

Det nya sättet att göra det med är CSS. För att få ett block att ligga bredvid ett annat block använder man float="left|right" och märker upp blocken med div-taggar. För att inte kommentarerna till stycke 1 ska flyta ihop med kommentarerna till stycke 2, utan ligga i linje med det stycke de kommenterar, måste varje lagtext-kommentarspar kapslas in i ytterligare en div (de röda linjerna är yttre div:ar, de gröna inre):

… och exakt hur skulle detta vara bättre, egentligen?

Vad vi har gjort är att återuppfinna tables för layout, fast med ett annat ord. Det semantiskt rätta vore att en stycke lagtext följs, på samma nivå i dokumentträdet, av kommentaren till denna text. Men det ska alltså presenteras sida-vid-sida. Hur göra detta?

Såhär!

Här är HTML-koden enkel, utan nästlade div:ar. Magin består i att kommentarsboxarna till en början är dolda (display=none i CSS-instruktionerna). När sidan är laddad och vi vet vilken position som varje lagtextbox har hamnat på, så kan vi använda absolute positioning och flytta kommentarsboxarna till sin rätta plats bredvid lagtexten:

             pe = FindPreviousBox(ps[i].previousSibling)
             ps[i].style.top = pe.offsetTop + "px"
             ps[i].style.display = "block";

(FindPreviousBox är en enkel rekursiv funktion som hittar rätt lagtextelement.) Vi hade inte kunnat göra det här statiskt, eftersom vi inte hade någon aning om var varje lagtextbox skulle komma att hamna på sidan i absoluta termer, eftersom detta beror på ffa läsarens fontstorlek. Men när sidan väl är laddad och layoutad är det en enkel operation att hitta rätt information i DOM:en.

Är det här en perfekt lösning? Nej, jag är inte ens säker på att den är bra. Framförallt funkar den riktigt dåligt om användaren har CSS men inte javascript, eftersom kommentarsboxarna då är gömda. Däremot funkar det bra med google och lynx.

Det kanske finns något semantiskt meningsfullt sätt att organisera informationen som låter mig uttrycka källtext med kommentarer på ett sånt sätt att det dessutom går att layouta fint. Men om inte annat är det kanske ett uppslag till hur man kan augumentera sin layout med lite javascript.

Imorgon ska jag prata om vikten av vettig lagstiftningsteknik ur ett demokratiskt perspektiv. Det blir mindre högtravande än det låter.

Om normgivningssystem i juridiken och datorn

En intressant fråga i komplexa datorsystem likväl som juridiska system är ”vem har rätt att bestämma något?”. Unixsystem har en befriande enkel grundmodell för sånt här: alla får bestämma över sig själva, men root får bestämma över allt (i ett riktigt system är det naturligtvis mer komplext med grupper och ACL:er osv, men vi lämnar det därhän sålänge).

I juridikens, mer bestämt statsrättens, värld pratar man istället om normgivningsmakt: Vem får stifta lagar? Vem får stifta andra bestämmelser? Vad får de här, med ett samlingsnamn, normerna handla om?

Grunden är ganska enkel: Rättighetssystemet har sin bas i grundlagarna, framförallt RB kap 8. Det första att titta på är hur man ändrar själva grundlagen; mekanismen med två likalydande beslut möjliggör i teorin att folket, som all makt utgår ifrån, kan inlägga sitt veto mot alltför otrevliga förändringar (men när har en vilande grundlagsförändring någonsin varit en stor valfråga?).

Sen kan man titta på kap. 2 om grundläggande fri- och rättigheter — sådana saker som yttrandefrihet, skydd mot frihetsberövande eller rätten till gratis skola — och vilka förutsättningar dessa får inskränkas. Man pratar om absoluta, relativa och svagare fri- och rättigheter — de absoluta, exv rätten att få resa in i landet som endast kan ändras genom grundlagsändring, de relativa, exv demonstrationsfriheten som kan inskränkas i lag stiftad i vissa former, och svagare (alla från 17 § och framåt) som kan inskränkas genom vanlig hederlig enkel majoritets-lag). Allt sånt här (och det här är bara några lösryckta exempel) handlar om vad man får bestämma om, och i vilken form beslut måste tas.

Vem som får bestämma är nästa fråga. Grundiden är att folkets valda representanter (dvs riksdagen) bestämmer. Men eftersom det är opraktiskt (och i många fall bryter mot principen om kommunernas självständighet) att de ska besluta allt kan de delegera lite av sin makt att lagstifta — sin normgivningskompetens, ffa till regeringen. Regeringen kan i sin tur subdelegera makt till förvaltningsmyndigheter. Man kan tänka sig en trädstruktur av normer, med grundlagarna vid roten, följt av vanliga lagar, sen förordningar och sist, ute vid löven, föreskrifter från exv DI, CSN eller FI. Delegering handlar om hur makten att bestämma propagerar från rot till löv.

De här reglerna för delegering tas upp framförallt i kapitel 8. När man läser det bör man veta att ”(meddelas) genom lag” betyder att riksdagen bestämmer — endast de kan stifta lagar. Står det däremot ”genom förordning” betyder det att regeringen kan bestämma. Det finns många stadganden för hur normgivningsmakt får delegeras, och man måste i princip läsa alla för att veta om en viss typ av delegering är tillåten. Ett exempel är att när man läser 3 §, som säger att all betyngande offentlig rätt måste stiftas av riksdagen, så måste man vara medveten om 7 §, som säger att regeringen visst får bestämma lite på det området, så länge det inte rör de uppräknade ämnena. Första stycket ger för övrigt en förklaring till varför det är viktigt om något kallas för ”skatt” eller ”avgift” — endast riksdagen får bestämma om skatter, men eftersom avgifter inte nämns så kan man motsatsvis (eller é contrario som vi i juristsvängen säger) sluta sig till att sådana tillhör det område som regeringen själv får bestämma om.

Men bara för att någon myndighet — eller tillochmed regering eller riksdag säger att nånting är på ett visst vis betyder det inte att de har rätt. Med tanke på hur många förbehåll som finns för delegering av normgivningsmakt är det inte konstigt att det ibland blir fel, och ffa förvaltningsmyndigheter försöker bestämma över saker som de egentligen inte har rätt att bestämma över. Konceptet lagprövning används ofta i praktiken för att komma tillrätta med författningar som stiftats på lägre nivå i strid med överordnade författningar på högre nivå.

Vad har allt det här då att göra med datorsystem? Det jag försöker komma till är att grundlagarnas normgivningsstadganden påminner mycket om rättighetssystemet i ett hyfsat komplex datorsystem, som en RDBMS eller ett Windows AD-system. Det finns koncept som användare (lagstiftande församlingar), rättigheter (normgivningskompetens) och objekt, exv filer, som användarna kan applicera sina rättigheter på/mot (de olika områden man kan stifta normer om). I avancerade system kan man i princip sätta upp egna normer för vem som ska få sätta andra normer, och för vilka, genom den speciella sorts rättigheten som är överlåta rättigheter till andra (delegering). Det finns även de grundbestämmelser som är givna av systemet (grundläggande rättstatskrav, som legalitetsprincipen)

Det finns också likheter på ett mer direkt sätt. Jag har ägnat de senaste två veckorna åt att lusläsa RF. Den är, lagtekniskt sett, en… intressant skapelse. Om ni har satt er in i källkoden till ett komplext datorprogram har ni säkert observerat att kodens komplexitet och lättlästhet kan skilja sig våldsamt mellan olika delar. Komplexiteten är ungefärligt omvänt proportionell mot lättlästheten (åtminstone till en början), och tenderar att vara som högst i de centralaste delarna av programmet.

Det är inte så annorlunda med ett lands lagstiftning. De hårigaste bitarna är i kärnan, dvs grundlagarna, och framförallt dess bestämmelser om vem som får bestämma om vad. De är komplexa, för de påverkar allt annat i systemet, och därför inte nödvändigtvis lättlästa. Men precis som en passage med riktigt knepig kod ofta visar sig vara rent vacker när man trängt in i den så att man förstår den, har även grundlagen, speciellt RF 8 kap., sin märkliga skönhet.

Mer om lagstiftningsteknik och likheter med design patterns senare. Imorgon blir det en liten utvikning om hur man kan använda javascript i rent layoutmässigt syfte för att slippa ”CSS tables”-syndromet.

Öppen tillgång till juridisk forskning

Som en del av mitt nya jobb letar jag efter nyutgivet material inom rättsinformatik. Juridiken är, åtminstone om man jämför med datavetenskapen, ganska löjligt pappersbunden i det att ingenting räknas om det inte finns tryckt på fysiska sidor. För en programmerare som är van vid att förlita sig på onlinedokumentation, usenet och google är det ett lite märkligt sätt att se på saker.

Men saker rör på sig. Begreppet att kolla efter är ”Open access”, och via portaler som Directory of Open Access Journals eller Social Science Research Network kan man hitta sjukt mycket tidskrifter som gör delar eller allt av sitt material tillgängligt online. Som en del av mina bibliotekariesysslor har jag börjat leta bland sådana här källor. Några av veckans intressanta artiklar:

Ska man vara med i framkanten på juridikens utveckling är det de akademiska tidskrifterna, inte kursböckerna, man måste läsa. Av den anledningen är det synd att avståndet mellan bloggosfären och tidskrifterna är så stort. Även bland hardcore-blawgers är det sällan man dyker på länkar till artiklar på SSRN eller liknande. Nu när jag har ytterligare en anledning att hålla mig ajour kommer det dock förhoppningsvis dyka upp mer artikellänkar, både här och i mitt del.icio.us-flöde.

Veckans Del.icio.us-länkar

Den här veckans intressanta länkar, från del.icio.us/staffanmalmgren

Musik för motionärer

Det blev inget skrivet varken igår eller förrgår. Så kan det vara när man jobbar tolv timmar om dagen, minsta lilla kräftskiva kan få det övriga fritidsaktivitetsschemat att spåra ut totalt. Om en stund är det iaf dags för kvällens joggingtur, och jag tror tillochmed det blir den långa rundan (8,5 km till skillnad från den korta på 3,5). Ingen joggingrunda utan musik, dock. Såhär ser min nuvarande motionsplaylist ut:

Bad Religion – Stranger Than Fiction (Stranger Than Fiction, 1994)
Bra inledningslåt. Som med all motionsmusik är det viktigt med tempot, och den här låten har en enkel rytm som passar bra för de första minuterna, som på min runda består av en lång utförslöpa.
Biohazard – Shades Of Gray (Urban Discipline, 1992)
Lite tuffare tongångar och lite mera groove. Den här låten funkar inte lika bra som jag trodde att den skulle funka, men det kan vara att den ligger lite för tidigt i listan. På tidigare listor har jag haft exempelvis Hatebreed efter ~30 minuter, då funkar de tunga gitarrerna utmärkt för att ge lite extra energi.
Bruce Springsteen – Born To Run (Born To Run, 1975)
Det är något visst med låtar med ett metaforiskt löpningstema — Promoe’s ”Long distance runner” har funkat utmärkt på en tidigare lista. Det enda som är fel med den här låten är väl breaket mot slutet, men det är kort nog för att inte förlora tempo nämnvärt.
Danko Jones – Rock Shit Hot (I’m Alive And On Fire, 2001)
På min korta runda kommer den här låten på precis när jag är vid foten av den längsta och tyngsta backen, vilket passar rätt bra till det stökiga soundet
Fjärde Världen – Johannes 6 8 (Live in Malmö 2001)
Inte riktigt rätt tempo, men det är ett riktigt pepp-beat. Och den fullständiga triolfestivalen i slutet av verserna är inte att leka med. Dock inte riktigt lika bra som ”Mina Hundar” med Fattaru, vars tempo stämmer kusligt exakt överens med mitt löptempo.
Kyuss – Odyssey (Welcome to Sky Valley, 1994)
Vid det här laget börjar jag bli lite trött. På min korta runda kommer den här precis på sista sträckan hem, och jag kan avgöra om jag får en bra eller dålig tid beroende på hur långt in i breaket jag hinner innan jag är hemma. Vem behöver tidtagarur?
Lauryn Hill – Lost Ones (The Miseducation of Lauryn Hill, 1998)
Den här hamnade på listan inspirerat av en tidigare medplockning av ”Hip Hop” av Dead Prez – teorin är att det extremt sparsmakade beatet funkar bra att springa till. Tyvärr funkar det inte riktigt lika bra med den här låtens tempo, men det är ju iaf en grym låt.
Machine Head – Davidian (Burn My Eyes, 1994)
Nyckeln till en bra motionsmix är, förutom låtar med bra och jämnt tempo, variation. Så här långt in i passet är det dags för de tunga gitarrerna igen. Tyvärr ett onödigt downtempobreak även i den här låten.
Mano Negra – King Kong Five (Best Of, 1989)
Här är det egentligen bara att lyssna på låten, så går benen på autopilot. Tyvärr kommer den här låten precis på det tyngsta stället, en fyravåningstrappa, som egentligen skulle behövt något långsammare och tyngre.
NWA – Straight Out Of Compton (Greatest Hits, 1996)
Fin-fint beat att springa till, speciellt kontrabassaxofonen (är det väl?) Man får dock passa sig så att man inte börjar sjunga med, det kan bli fånigare än inledningsscenen i Office Space.
Paradise Lost – Say Just Words (Reflection, 1998)
Jämn och fin rytm med utpräglad enkel rytm. Pianoklinkandet passar rätt bra efter förra låtens rätt stökiga beat.
The Haunted – 99 (rEVOLVEr, 2004)
Och så en sista rökare att verkligen krama ur den sista musten ur kroppen med. Här går det undan.

Som kanske synes är det viktigaste med en motionsplaylist inte att låtarna i sig är odödliga klassiker, utan att de går i rätt tempo och ger energi och variation när det behövs. Det här är inte den bästa listan jag gjort, men den funkar hyfsat för mina nuvarande rundor.

Bra bloggar, dåliga flöden

Jag läser mycket bloggar och andra nyhetskällor, och skulle knappast klara av nyhetsflödet utan en RSS-läsare. Tyvärr har många av mina favoritsajter dåliga RSS/Atom-flöden. Den här osorterade samlingen gnäll kan ses som en guide till hur man inte ska designa sitt flöde. Den kan eventuellt också ses som en rekommendation av några riktigt bra sajter, eftersom jag fortsätter läsa dem trots deras dåliga flöden.

Groklaw
Groklaw skriver nästan alltid riktigt långa postningar med mycket citerat material, vilket indikeras genom indentering. Den här informationen strippas dock bort i det plaintext-material som finns i RSS-flödet, så texten blir ibland obegriplig. Men det större problemet är att även om flödet innehåller generöst mycket text så är det inte ett fulltext-flöde, och det finns ingen indikation på att texten som finns i flödet inte är den fullständiga artikeln. Dessutom klipps texten vid en styckesgräns, så det är väldigt lätt att tro att man har en fullständig, om än rumphuggen, text i sin RSS-läsare — att lägga på ett avslutande ”[…]” hade hjälpt. Fast bättre hade förstås varit att ha ett fulltextflöde.
The Importance Of (liksom alla andra Corante-bloggar)
Det här är ett snuttifierat flöde med precis så mycket text så att jag nätt och jämt kan ta ett underbyggt beslut om huruvida det är värt att att öppna fulltextpostningen i min webläsare. Eftersom det oftast är bra kvalité på texterna är det oftast det, men varje gång blir jag irriterad eftersom corante.com laddar så långsamt — det kan ta mer än 15 sekunder innan själva artikeltexten är synlig. Det här förvärras av två saker: Dels är HTML-koden strukturerad så att artikeltexten kommer sist i HTML-filen, trots att den CSS-struktur de använder sig av skulle låta dem ladda texten först och navigationsmenyerna till höger och vänster sist (som på den här sajten). Dels laddar sidan bilder och javascript-kod från fånigt många andra servrar (amazon.com, mediaplex.com, yimg.com, bloglines.com,
technorati.com, creativecommons.org, sitemeter.com) — och alla bildreferenser saknar width/height-information, vilket gör att bilderna (och scripten?) måste laddas från de andra servrarna innan sidan kan visas fullt ut.
Lessig Blog
Eftersom Lawrence Lessig ofta har gästbloggare vore det toppen om <author>-elementet i RSS användes för att indikera vem som faktiskt postade, eftersom detta inte framgår från texten i flödet. Det syns däremot på websajten, så uppenbarligen finns informationen i publiceringssystemet.
Notes from the (Legal) underground
DÄR VARENDA MENING BÖRJAR på det här viset. Vilket ser snyggt ut på sidan, men när tio titelrubriker staplas på varandra i min RSS-läsare får jag bara ont i huvudet.
The Becker-Posner Blog
Den här bloggen är på formatet att antingen Posner eller Becker postar en längre artikel om ett ämne, följt av den andres replik. Postningarna görs inom en timme av varandra, och på websidan kommer de i en logisk ordning, men eftersom min RSS-läsare listar saker i äldst-till-yngst-ordning får jag alltid läsa repliken innan huvudartikeln, vilket är irriterande. En annan sak jag ogillar är sättet som Gary Becker envisas med att lägga till sitt efternamn i versaler i titeln, typ: ”Chinese Ownership of American Companies: A Problem? BECKER”. Informationen om vem som skrev artikeln borde vara skiljd från titeln.
LawMeme
Bara ett <link>-element, ingen beskrivning. Det här gör att min RSS-läsare försöker hämta informationen precis när jag ska till att läsa, istället för i förväg, vilket är irriterande långsamt. Layouten på sidan är dessutom dåligt anpassad för att läsas inuti en RSS-läsare, eftersom den är alldeles för bred.

Märkligt nog är alla bloggar jag irriterar mig på juristrelaterade — rena teknikbloggar sköter sig i allmänhet mycket bättre (även om det fortfarande är vanligt med snuttifierade flöden). Vilket inte är så konstigt, eftersom tekniker är snabbare på att ta till sig fördelarna med att använda en separat RSS-läsare.

Min tagline till trots har det inte varit mycket punkrock, eller musik öht, på den här bloggen det senaste året. Bot och bättring imorgon!

Macfilsystem och unicode

Jag är, om inte en varm förespråkare för svenska språket, så åtminstone militant förkämpe för våra svenska tecken. Att se ett filnamn som raksmorgas.txt eller en URL i stil med http://foo.com/overgangsbestammelser gör ont i mig. Så när jag började med etikettexperimentet ville jag naturligtvis bevara svenska tecken både utåt och inuti systemet.

Just nu ser det faktiskt inte så bra ut utåt, då det står http://lagen.nu/etikett/s%C3%A4rskiljningsf%C3%B6rm%C3%A5ga i webläsarens URL-rad när det borde stå http://lagen.nu/etikett/särskiljningsförmåga — en bieffekt av spännande UTF-8-problem på Win32-versionen av Apache, vilket jag kanske berättar mer om nån annan gång — men inåt är det ganska fint.

Eftersom allting som kan vara en statisk fil är det på lagen.nu så sparas naturligvis ovanstående websida som
index/tags/särskiljningsförmåga.html i filsystemet. Filsystemet är, i det här fallet, ett NTFS-filsystem. Jag gör hela genereringen av alla statiska sidor på en windowsmaskin, nämligen, eftersom det är det enda fartmonstret jag har hemma (och det tar ändå flera timmar). Sen, när allt är klart, rsync‘ar jag över allt till den Mac OS X-maskin som driftar själva lagen.nu.

Och det var här nånstans problemen började. Att överföra ”särskiljningsförmåga.html” från Windows till MacOS X över SMB (den ”vanliga” fildelningen) gick utmärkt, men med rsync fick jag det obegripliga felmeddelandet ”invalid argument”.

Det visade sig att Mac OS X-filsystemet internt lagrar filnamn i ”Normalization form D” — en unicodevariant på att representera tecken genom, att i fallet för bokstaven ‘ä’, först ange ‘a’ följt av U+0308 aka COMBINING DIARESIS, dvs två fristående prickar, avsedda att kombineras med föregående tecken. Det är inte nödvändigtvis så tokigt — jag matar in ‘ü’ på den här datorn genom att först trycka på ”två fristående prickar”-knappen, sedan ‘u’, en snarlik tankeprocess. Men det verkar lite bakvänt att lagra saker på det viset i filsystemet. Det verkar riktigt bakvänt att inte ens tillåta API-anropen för att skapa filer att använda alla giltiga unicodetecken. Och det verkar urbota tokbakvänt att skeppa MacOS X med en rsync som inte kompenserar för det här — jag vet inte om rsync-protokollet stödjer en angivelse av teckenuppsättning för filnamn, men i brist på annat borde man väl anta UTF-8 eller åtminstone Latin-1. Jag menar, det funkar finfint med den samba som levereras med systemet, som sköter den vanliga fildelningen.

Men så är det, så vad gör man? Man skriver ett litet fulhack som transformerar
särskiljningsförmåga.html till särskiljningsförmaÌŠga.html (den UTF-8-kodade representationen av det Normalization Form D-omvandlade filnamnet, sett genom Latin-1-glasögon), rsyncar, problem solved!

Svenska tecken funkar utmärkt på MacOS X vanligtvis — ända tills man gör något som inte riktigt förutsetts. Exempel: skapa en fil räksmörgås.txt i Finder, byt sen till Terminalen och prova följande:

[staffan@minimac tmp]$ ls r*.txt
-rwxr--r--  1 staffan  staffan  10  4 Sep 17:28 ra??ksmo??rga??s.txt*

Ett utmärkt exempel på en läckande abstraktion.

Imorgon ska jag tala om hur man inte ska designa sina RSS-feeds. Jepp, även de måste designas, men kanske inte på det sätt man först tänker.

Veckans Del.icio.us-länkar

Den här veckans intressanta länkar, från del.icio.us/staffanmalmgren