Posts Tagged ‘lagen.nu’

SSL as default på lagen.nu

måndag, juni 30th, 2008

Dear lazyweb:

förekommen anledning köpte jag SSL-certifikat till lagen.nu igår ($15 per år var det billigaste jag hittade). Inte för att rättsinformation är superkänslig information, men vissa kanske ändå vill att information om vilka lagtexter/rättsfall de kollar upp ska vara konfidentiellt.

För att det skulle bli något genomslag har jag satt en stor allomfattande redirect på den gamla tjänsten på port 80 — om man försöker gå till http://lagen.nu/1960:729 blir man vänligt men bestämt omdirigerad till https://lagen.nu/1960:729. Detta genom lite mod_rewrite-fu i konfigurationen för den befintliga tjänsten:

    RewriteEngine On
    RewriteCond %{HTTPS} !=on
    RewriteRule ^(.*)$ https://lagen.nu/$1 [L,R]

Nu undrar jag om det kan ställa till problem för vissa användare.

  • Finns det browsers som inte klarar SSL (typ enklare mobiltelefonläsare)?
  • Finns det folk som sitter bakom brandväggar som inte klarar SSL?
  • Finns det webbspindlar som vägrar kravla SSL-sajter (jag noterar i loggarna att både Yahoo och Google glatt verkar kravla på som om inget hänt)?
  • Finns det andra problem jag inte tänkt på?
  • Om svaret på någon av frågorna ovan är “ja”, kan man lindra problemet på något vis (exv genom att tilllåta vissa User-agent-strängar/IP-ranges att komma åt den oskyddade versionen)?

Eller ska jag helt enkelt låta den befintliga okrypterade port 80-tjänsten finnas kvar, möjligen med en stor fin varningsbanner på varje sida, med uppmaning att använda SSL-varianten?

Dumma grafexperiment 2

söndag, april 27th, 2008

För snart tre år sedan gjorde jag lite försök med att visualisera den information som finns i lagen.nu, med begränsad framgång. Det är dock en kul bild som hintar om vad man skulle kunna åstadkomma om man filtrerade datat man vill visualisera lite grann.

Med den nya RDF-baserade metadatastrukturen i lagen.nu 1.5 (fortfarande under utveckling - det tar sin lilla tid när man ska göra saker rätt istället för snabbt) har det blivit lite enklare att prova olika varianter på grafvisualisering, och dessutom finns det mer metadata att visualisera. Här är två exempel, det första på hur migrationsdomstolens domar använder sig av sökord, och det andra på hur regeringsrättens domar sedan 1991 har hänvisat till varandra. Klicka på tumnaglarna för att se de fulla graferna — men varning för att de är ruskigt stora.

Lägesrapport

torsdag, mars 27th, 2008

Inget speciellt att rapportera, jag tänkte bara meddela att min TW-krönika som förespråkar skadeståndsansvar för vårdslös programmering nu finns tillgänglig - minnesgoda läsare känner igen temat från ett tre år gammalt inlägg.

Men när jag ändå har textarean framme kan jag meddela att kursen i nationalekonomi har varit jätteintressant, men att examineringen nu på fredag verkar bli rätt trist - för att svara på frågorna krävs inte något eget tänkande, men däremot en hel massa noggrannhet och detaljer. Säkert bra för vissa, men dåligt för en kreativ slarver som mig. Och vad är grejen med att det förväntas att juriststudenter ska ogilla/vara dåliga på matte?

Arbetet på lagen.nu 1.5 går vidare - jobbet med tabelligenkänningskoden jag skrev om sist har gått ganska bra. Ett enkelt exempel är att den här plaintexten tolkas som den här tabellstrukturen. Ett lite knepigare är den här texten som blir den här strukturen. Det senaste jag jobbat med är hanteringen av referenser i löpande text - något jag också skrev om för tre år sedan, men det nya är att koden modulariserats så att man kan ha en grammatik för vanliga svenska lagtexter, en för typiska förarbetshänvisningar, en för EG-lagstiftning osv, och vid instansieringstillfället välja vilken eller vilka grammatiker man vill använda.

På söndag ska jag springa premiärmilen och hoppas få en tid nedåt 45 minuter, eller i vart fall inte mer än 50. Vi får väl se. De senaste veckorna har jag bara sprungit 12- och 21-kilometersrundor (fartleks- och LSD-pass, respektive), så det ska bli kul att köra ett plattan-i-mattan-rejs.

Lazy Saturday

lördag, mars 1st, 2008

Den här lördagen har jag sett fram emot länge. De senaste två veckorna har varit mördande med en tuff deadline och en svår tenta inom loppet av 36 timmar.

Deadlinen var för en en artikel och en krönika för Techworld (som nu lagt ut den krönika jag skrev om ambassadhacket i mitten av december — det här med pressläggningstider är en märklig omställning för mig som bloggvan). Det är första gången jag skriver en riktig artikel, inte bara löst tyckande i krönikeform, i en papperstidning, och allt som är nytt tar ju alltid extra tid och kraft. Artikeln handlar om PUL, riktar sig mot det typiska IT-användande företaget, och blev förförhållandevis lyckad, tror jag. Lång blev den i vart fall, 14500 tecken vilket är en bra bit över de 12000 jag egentligen fick till mit förfogande. Vi får väl se om den är kapad när den dyker upp i tryck nån gång i slutet av april. På grund av all tid som artikeln tog fick krönikan skrivas på rekordfart. Den rör förhållandet mellan IT-expertis, rättsväsendet och risken för rättsosäkerhet när de inte kan prata med varandra, främst föranlett av domen mot Uppsalahackaren — lite på samma tema som min f.d. chefs artikel i CS för några månader sedan.

Vid sidan om detta har jag också tentapluggat för tentan i rättshistoria, som jag skrev i torsdags. Kursen har varit väldigt intressant och mycket intensiv - frågeställningarna och tankegångarna har varit ganska annorlunda från andra kurser på juristlinjen, och har gett en teoretisk bas att förstå vad jag egentligen lärt mig under de tidigare tre åren. Stundvis har det gjort ganska ont i huvudet, men på det hela hamnar kursen klart i topp tre. Det enda jag egentligen tycker är synd är att den inte ligger tidigare i programmet - den bakomliggande frågeställningen om förhållandena juridik/rätt/värderingar/makt är något jag skulle ha velat haft i bakhuvudet under några av de mer materiellt inriktade kurserna. Nu blir det nationalekonomi i fyra veckor, vilket också verkar annorlunda. Huvudkursboken är på engelska med massa diagram och färger istället för omfattande notapparater, bara en sån sak.

Tillsammans med allt detta har jag ju också ett vanligt jobb att sköta. Både våren och hösten bjuder på en del spännande arrangemang som IRI på ena eller andra sättet är inblandade i. Den 13:e mars håller LISA ett möte om elektronisk publicering av författningstexter, och till hösten slår vi på stort och arrangerar nordisk konferens i rättsinformatik mellan den 17:e och 19:e november - jag håller nu på att färdigställa konferenswebbplatsen. Notera gärna användandet av hCalender, hAtom med flera mikroformat på webbplatsen - förutom det direkta användbarheten genom extensions som Operator utgör de även grunden för det Atom-flöde och det iCalendar-flöde som finns tillgängligt. Eftersom IRI-webbplatsen bygger helt på statiska filer ligger inte nyhetsartiklar och kalenderhändelser i en databas, utan istället genereras Atom/iCal-flödena genom att ett offlinescript parsear mikroformaten och bygger statiska filer. En typisk lowtechlösning i min smak.

Motionen har gått lite sisådär. Jag har som ambition att springa en dryg tvåmilsrunda kring Stockholm varje söndag, men senast jag försökte tvingade en krånglande stortå, eventuellt framkallad av dåliga skor, mig att avbryta efter bara några kilometer. Vi får se om det blir ett nytt försök imorgon. I övrigt har jag bestämt mig för att skala ner ambitionerna den här säsongen — det blir inga långa cykelutmaningar eller något nytt försök på Kalmar Triathlon i år. Även om jag verkligen gillade upplevelsen av att göra en mer seriös satsning så har jag andra saker som jag vill göra, och det finns helt enkelt inte tid. Det får bli motion för husbehov, och kanske en liten urladdning på midnattsloppet i slutet av sommaren.

En av de saker jag vill göra är en uppryckning av Lagen.nu. Det är roligare än på länge att koda, och den nya kodbasen börjar bli riktigt bra. Jag har fått till ett bra testramverk där jag anger en indatatext i stil med:

1 § Första paragrafen.

Första paragrafens andra stycke.

2 § Andra paragrafen.

för att sedan parsea den till en objektstruktur (byggd av subklassade unicode-, list- och dict-objekt) som sen serialiseras till ett enkelt “facit” i stil med:

<Forfattning>
  <Paragraf id="P1" ordinal="1">
    <Stycke id="P1S1">
      <unicode>Första paragrafen.</unicode>
    </Stycke><Stycke id="P1S2">
      <unicode>Första paragrafens andra stycke.</unicode>
    </Stycke>
  </Paragraf>
  <Paragraf id="P2" ordinal="2">
    <Stycke id="P2S1">
      <unicode>Andra paragrafen.</unicode>
    </Stycke>
  </Paragraf>
</Forfattning>

Jag hade sedan tidigare en variant på den här test- och facitfilsbaserade regressionstestningen, men det nya ramverket testar på precis rätt ställe (objektstrukturen, inte den slutgiltiga genererade utdatan — det ovanstående är alltså inte det egentliga utdatat även om det kan se ut så) för att det ska vara busenkelt att utveckla ny funktionalitet genom att först skriva testfall.

Resten av eftermiddagen tänkte jag ägna åt att få igenom mina nya testfall för tabelldata — ett lätt exempel är tabellen i 3 § personuppgiftslagen, ett lite svårare tabellen i Sekretesslagens 16:e kapitel. “Table recognition” visar sig vara ett svårt problem som det forskats mycket på. Vi får se hur långt jag når med de naiva algoritmer jag kan komma på.

Och ikväll blir det hårdrock - Dillinger Escape Plan kommer till stan. Och precis nyss när jag kollade upp det där fick jag veta att Poison the Well är förband - bonuslyx!

Prylar, pengar, tid, repeat

onsdag, januari 23rd, 2008

Håkan tipsar om ett par fantastiskt söta triathlonanpassade löparskor. Det känns som det är dags för ett par nya, då mina nuvarande par alla har gått över 100 mil och två år. Även om jag vanligen springer i Saucony kan blommönstret vara det som får mig att byta märke. Om de nu passar mitt supinerande. Eller om det var pronerande. Innan jag kan hålla reda på vilket som är vilket är det definitivt inte läge att börja internethandla skor.

Fast det är mycket prylar som finns på önskelistan just nu. Mårten tipsade om en Ultegrautrustad fullcarbonracer för bara 1200 €, vilket känns fantastiskt prisvärt. Och nödvändigt, om jag ska kunna kapa nån tid att tala om på Kalmar i sommar. Att internethandla cyklar utan att få dem utprovade av någon expert är också förknippat med en viss risk, men med tanke på vad kolfibercyklar kostar över disk i Sverige är det kanske värt att chansa.

I övriga triathlonnyheter provtränade jag med SCT i förrförra veckan, vilket var riktigt kul, och jag är riktigt sugen på att gå med - medlemsavgiften är ungefär jämförbar med kostnaden för det årssimkort som gick ut förra veckan, men ger vansinnigt mycket mer.

Det kostar att hålla sig i form. Så det har blivit en hel del jobb på sistone, och även en hel del studier. Förvaltningsrätten tentades i lördags, vilket markerar inledningen på den så kallade teoretiska terminen, då vi lyfter blicken lite från alla de materiella rättsområden vi pluggat de senaste åren och ställer oss frågan vad det egentligen är vi gör, och hur. Än så länge har vi bara kommit till Herakleitos och Platon (veckans informationstekniska upptäckt: Stefanuspaginering — inte lika universal som URI:er, men å andra sidan över 400 år tidigare), och allt känns väldigt ovant. Och väldigt kul.

Kul är också lagen.nu-arbetet. Jag jobbar så smått med en ny roadmap och kodar på de enstaka stunder jag får över. Arbetet ger också inspiration till ett framtida specialarbete som avslutning på juristutbildningen. Det lutar åt ett tvärvetenskapligt studium av nya metoder för att relevansranka rättsfall med utgångspunkt från andra informationskällor — ett PageRank för juridiska dokument, typ.

Den enkät jag lade ut för några veckor sedan har blivit ifylld av 44 personer i skrivande stund. Tack alla! Jag har lärt mig att ca 40% av er håller på med juridik på fulltid i någon form, att 15% använder lagen.nu dagligen (det är oftare än vad jag gör), att hela 2/3 använder tjänsten helt eller delvis för jobbets räkning och att referat i fulltext är en hett eftertraktad funktion (önskat av 73 % - det är på gång). Ni ställer er relativt positiva till finansiering genom sponsring, bannerannonsering eller donationer, och hälften kan t.o.m. tänka er att slanta upp pengar själva, vilket är jättekul. Men ännu roligare att 25% sagt sig vara villiga att hjälpa till med tekniskt, och 30% med juridiskt kunnande. Och det är sådant, snarare än pengar, jag främst behöver för att gå i land med att utveckla tjänsten åt det håll jag vill (men om nån sitter på ett par hundratusen och vill se hur mycket rättsinformationstjänst man kan få för det, ring mig - telefonnumret finns på bloggen).

Så för att sammanfatta: Jag behöver mer prylar, mer pengar och och mer tid. För några veckor sedan bytte jag (hutlöst mycket) pengar mot en pryl i förhoppningen att den skulle ge mer tid. Då jag har otroligt svårt att komma upp om mornarna och har slösat flera år av mitt liv på snoozemissbruk är jag såhär långt rätt nöjd min Axbo. Grejen är alltså att den ska väcka en när man sover som lättast genom att man sover med en rörelsesensor kring handleden, och det funkar faktiskt ganska bra (även om jag misstänker att en del av effekten kommer av att den saknar snoozeknapp). Som en added bonus blir jag oftast väckt under drömfasen i sömnen , och kommer därför ihåg drömmarna bättre, vilket ger en …intressant inblick i mitt undermedvetna.

Hjälp sökes till lagen.nu

tisdag, januari 8th, 2008

Som kanske märkts på några av de senaste postningarna har jag så smått börjat jobba med lagen.nu igen. Mitt mål är att så snart som möjligt få till en “1.5″-version som är funktionellt ekvivalent med dagens tjänst, fast byggd på en kodbas jag inte behöver skämmas för och som använder XHTML2/RDF/ESFR i botten. När den finns på plats börjar racet efter nya features (med ett slutmål att nån gång i fjärran få den 2.0-version klar som jag misslyckades med förra sommaren).

Men jag skulle behöva lite hjälp av just dig (om du använder lagen.nu, dvs) — om du fyller i den här enkäten blir det enklare för mig att veta vad jag ska fokusera på. Tack på förhand!

XHTML2, CSS3 och PDF

fredag, december 21st, 2007

Tidigare frågade jag runt vilket som var det bästa sättet att skapa PDF från nån typ av strukturerad XML-data. De svar jag fick från olika håll pekade på att köra det gen om en CSS3-kapabel layoutmotor vore lämpligt. Så jag har ägnat lite tid åt att trimma in ett stylesheet anpassat för lagtext uttryckt XHTML2 tillsammans med metadata från ESFR-vokabulären.

Som testobjekt använde jag den lagtext som utgör kursfordran för förvaltningsrätt, dvs den kurs jag läser för närvarande. Tidigare har ett förlag tryckt upp en särskild författningssamling för detta ämne, men på introduktionsföreläsningen nämndes att detta inte skulle göras i år, då kostnaden för att ta fram uppdaterade tryckorginal för varje kursstart var för stor (kursen går två gånger om året).

Nu har jag ett automatiserat publiceringsflöde, som utgående från en huvudfil, uttryckt i XHTML2, och en samling lagtexter, också uttryckt i XHTML2, genererar en sammmanslagen fil. Denna innehåller alla författningar (eller delar därav) som huvudfilen hänvisar till genom XInclude/XPointer. Från den sammanslagna filen och ett CSS3-stylesheet skapas sen en PDF. Första steget görs med xmllint –xinclude, andra med Prince. Kostnad för att ta fram uppdaterade tryckoriginal: i princip noll.

Resultat: enkelspaltig (css), dubbelspaltig (css).

Några saker att lägga märke till:

  • Innehållsförteckningen har korrekta sidnummerhänvisningar
  • Sidhuvudet visar var och i vilken lag man befinner sig på (och växlar utseende beroende på om det är en kapitelindelad lag eller inte)
  • Huvudfilen anger vilka förkortningar som ska användas för aktuell lag i sidhuvudet
  • Höger- och vänstersidor ser olika ut (precis som i riktiga böcker!)
  • Avstavning sker automatiskt efter svenska regler
  • PDF-bokmärkena ger en hierarkisk översikt över hela filen
  • Det går att inkludera bara enstaka kapitel (eller andra avsnitt) från en lag

Det finns förstås mycket kvar att fixa (kolla exv SekrL 16 kap - inte många rätt i formatteringen där), och även mer att skriva om hur man kan använda CSS3 och Prince XML, men det får bli efter julen.

Modellmissmatch

fredag, december 7th, 2007

Det borde inte vara så svårt att modellera lagtext efter ett etablerat schema för textinformation, kan man tycka. Låt gå att HTML4 inte är världens mest sofistikerade modell, men den har rubriker, stycken och listor - det har ju lagtext också. På den nivån borde semantiken stämma överrens, eller?

Nej, naturligtvis inte, för då skulle jag ju inte sitta och skriva det här. Ett exempel är att HTML4 (och därmed XHTML1) inte har någon strukturmekanism som matchar de olika nivåerna som finns i lagtext (avdelningar, kapitel, paragrafer) — det enda som finns är stycken samt och den ganska intetsägande grupperingskonstruktionen <div>.

Ett annat är att i HTML-modellen är en lista (numrerad eller onumrerad) något som befinner sig utanför ett stycke. Det är helt enkelt inte tillåtet att ha en lista i ett stycke. Men enligt modellen/kutymen som används i svensk lagtext så hör en lista till närmast föregående stycke — ska man exempelvis hänvisa till den text i upphovsrättslagen som lyder “skönlitterär eller beskrivande framställning i skrift eller tal” säger man “1 § 1 st 1 p” (observera att man inte säger “1 kap. 1 § 1 st 1 p.” — kapitelhänvisningen utelämnas när paragrafnumreringen räcker för att unikt identifiera en given paragraf, vilket det gör i upphovsrättslagen)

XHTML2 löser de här problemen. Man kan ange att delar av texten logiskt sett är delar av ett större sammanhang genom <section>-taggen (som dessutom ger effekt på rubriker, så att man kan använda <h>-taggen genomgående utan att behöva fippla med h1, h2, h3 osv.

Den tillåter även att en lista (numrerad eller onumrerad) är en del av ett stycke.

Men det finns fortfarande ytterligare minst ett förekommande mönster i svensk lagtext som XHTML2 inte kan efterlikna, nämligen ovanan att stoppa in nya element i en numrerad lista. Ta exempelvis Mervärdesskattelagen, 5 kap. 9 § och den lista som finns där - nånstans under lagens levnad bestämde lagstiftaren att stoppa något nytt mellan punkt 4 och 5 – resultatet blev punkt 4 a. Visst känns det lite som att lagstiftaren programmerat BASIC på 1980-talets hemdatorer? Man får vara glad att det inte finns någon juridisk RENUM.

Det här kan XHTML2 inte efterlikna, eftersom dess modell kräver att alla element i en numrerad lista ska ha ett nummer som faktiskt är ett nummer och inte en friformsetikett.

För att överkomma den här modellimpedansmismatchen får jag helt enkelt modellera numrerade listor i lagtexter som onumrerade listor, och låta numreringen utgöra en del av varje punkts PCDATA-text (samt uttrycka samma information som del av ett xml:id-attribut).

Samma mönster att stoppa in nya element förekommer för övrigt på andra ställen i lagstiftningen, såsom paragraf- och kapitelnivå — se exv 11 a § och 2 a kap. i upphovsrättslagen. Det här är dock inget egentligt problem för XHTML2-modellering, eftersom det här inte finns något alternativ till att låta dessa elements numrering uttryckas på annat sätt än som en del av dess PCDATA. Det är bara det att just för listor så finns potentialen att göra Rätt, men på grund av en restriktiv XHTML2-modell, alternativt en slarvig lagstiftare, är det ändå inte möjligt.

Värst är det när nya stycken stoppas in — eftersom dessa inte numreras explicit blir en hänvisning till “4 § 3 st” trasig när lagstiftaren bestämmer sig för att stoppa in ett nytt stycke mellan första och andra stycket i den paragrafen.

Rättsinformation och RDF

torsdag, september 20th, 2007

Det Vervaprojekt jag varit lite inblandad i har nu publicerat en uppdaterad version av sin metadatamodell för rättsinformation. Det handlar alltså om hur man ska representera dokument som lagar, förarbeten, rättsfallsreferat m.m. elektroniskt. Dvs sådana frågor som jag bollat med ända sen jag startade lagen.nu - men med skillnaden att den här specifikationen görs by the book av folk som verkligen kan datamodellering. Tydligast märks det i att all metadata uttrycks i form av RDF, och det som nu publicerats är en vokabulär, dvs en lång lista på egenskaper som dokument (och andra resurser) kan ha.

Arbetet hittills är främst inriktat på att identifiera egenskaper på dokumentnivå, och har mycket gått ut på att diskutera saker som “den här texten här överst i dokumentet, vad är den?” och resonera kring titel vs rubrik vs beskrivning vs … Men det som jag tycker känns bäst är ansatsen att alla resurser (både kompletta dokument och resurser inuti dokument, exv en paragraf i en lag) ska ha permanenta URI:er. Det där med att man både inom och utom systemet ska kunna hänvisa till resurser på ett otvetydigt och maskinläsbart sätt är, hur trivialt det än kan låta, ett stort steg framåt.

Förhandstitt på lagen.nu 2.0

söndag, augusti 27th, 2006

Imorgon börjar höstterminen med C4:an, vilket markerar slutet på de mängder med ledig tid som jag haft under sommaren. Mitt mål var som sagt att göra en 2.0-version av lagen.nu, och jag hann väl inte ända fram. Men nånting som vi kan kalla en första alfaversion finns nu på:

http://ferenda.lagen.nu/

Den stora synliga skillnaden från 1.0-versionen är en någorlunda annan layout, och det faktum att en wiki är integrerad med det hela. Om man skapar ett konto kan man både editera vanliga sidor samt kommentera lagtext.

Bakom kulisserna är det större skillnader. Koden har omorganiserats så att det i grund och botten är ett mer flexibelt, utökbart ramverk för juridiska texter. Kostnaden för att lägga in stöd för exv förarbeten eller EG-rätt i koden bör vara ganska liten.

Ytterligare en stor skillnad är att jag i och med detta öppnar upp källkoden till lagen.nu. Kod finns att hämta via SVN från http://svn.lagen.nu/svnroot/ och en utvecklingswiki/buggdatabas/källkodsbrowser finns på http://trac.lagen.nu/. Eftersom jag spenderat sommaren med programmering, inte juridik, har jag inte tänkt igenom exakt vilken licens som koden är under, men jag kan åtminstone utfästa att den kommer vara OSI-certifierad (notera dock att en del kod i SVN-repositoryt inte är skriven av mig, och har separata licenser).

En annan licensfråga är den för bidrag till wikin/lagkommentarerna; som en utgångspunkt kan vi säga GFDL och by-sa, dvs dubbellicensiering (GFDL för Wikipedia-kompatibilitet, åtminstone åt ena hållet). Om du är licensexpert och/eller har en åsikt om hur du vill att dina bidrag till lagen.nu ska licensieras, hör av dig!

Det är värt att återigen påpeka att det här är en alfarelease. Det är mycket som inte funkar (bland annat kan man inte lista alla lagar, så man måste veta SFS-numret och mata in det i adressraden) och utseendet lämnar mycket att önska. Jag är dock tacksam för buggrapporter och förbättringsförslag, gärna direkt i buggdatabasen.