1 <!DOCTYPE html PUBLIC
"-//W3C//DTD XHTML 1.0 Strict//EN"
2 "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
3 <html xmlns=
"http://www.w3.org/1999/xhtml" dir=
"ltr">
5 <meta http-equiv=
"Content-Type" content=
"text/html;charset=utf-8" />
6 <title>Petter Reinholdtsen: entries from March
2019</title>
7 <link rel=
"stylesheet" type=
"text/css" media=
"screen" href=
"http://www.hungry.com/~pere/blog/style.css" />
8 <link rel=
"stylesheet" type=
"text/css" media=
"screen" href=
"http://www.hungry.com/~pere/blog/vim.css" />
9 <link rel=
"alternate" title=
"RSS Feed" href=
"03.rss" type=
"application/rss+xml" />
15 <a href=
"http://www.hungry.com/~pere/blog/">Petter Reinholdtsen
</a>
22 <h3>Entries from March
2019.
</h3>
26 <a href=
"http://www.hungry.com/~pere/blog/PlantUML_for_text_based_UML_diagram_modelling___nice_free_software.html">PlantUML for text based UML diagram modelling - nice free software
</a>
32 <p>As part of my involvement with the
33 <a href=
"https://gitlab.com/OsloMet-ABI/nikita-noark5-core/">Nikita
34 Noark
5 core project
</a>, I have been proposing improvements to the
35 API specification created by
<a href=
"https://www.arkivverket.no/">The
36 National Archives of Norway
</a> and helped migrating the text from a
37 version control system unfriendly binary format (docx) to Markdown in
38 git. Combined with the migration to a public git repository (on
39 github), this has made it possible for anyone to suggest improvement
42 <p>The specification is filled with UML diagrams. I believe the
43 original diagrams were modelled using Sparx Systems Enterprise
44 Architect, and exported as EMF files for import into docx. This
45 approach make it very hard to track changes using a version control
46 system. To improve the situation I have been looking for a good text
47 based UML format with associated command line free software tools on
48 Linux and Windows, to allow anyone to send in corrections to the UML
49 diagrams in the specification. The tool must be text based to work
50 with git, and command line to be able to run it automatically to
51 generate the diagram images. Finally, it must be free software to
52 allow anyone, even those that can not accept a non-free software
53 license, to contribute.
</p>
55 <p>I did not know much about free software UML modelling tools when I
56 started. I have used dia and inkscape for simple modelling in the
57 past, but neither are available on Windows, as far as I could tell. I
59 <a href=
"https://modeling-languages.com/text-uml-tools-complete-list/">list
60 of text mode uml tools
</a>, and tested out a few of the tools listed
61 there.
<a href=
"http://plantuml.com/">The PlantUML tool
</a> seemed
62 most promising. After verifying that the packages
63 <a href=
"https://tracker.debian.org/pkg/plantuml">is available in
64 Debian
</a> and found
<a href=
"https://github.com/plantuml/plantuml">its
65 Java source
</a> under a GPL license on github, I set out to test if it
66 could represent the diagrams we needed, ie the ones currently in
67 <a href=
"https://github.com/arkivverket/noark5-tjenestegrensesnitt-standard/">the
68 Noark
5 Tjenestegrensesnitt specification
</a>. I am happy to report
69 that it could represent them, even thought it have a few warts here
72 <p>After a few days of modelling I completed the task this weekend. A
73 temporary link to the complete set of diagrams (original and from
74 PlantUML) is available in
75 <a href=
"https://github.com/arkivverket/noark5-tjenestegrensesnitt-standard/issues/76">the
76 github issue discussing the need for a text based UML format
</a>, but
77 please note I lack a sensible tool to convert EMF files to PNGs, so
78 the "original" rendering is not as good as the original was in the
81 <p>Here is an example UML diagram, showing the core classes for
82 keeping metadata about archived documents:
</p>
86 skinparam classAttributeIconSize
0
88 !include media/uml-class-arkivskaper.iuml
89 !include media/uml-class-arkiv.iuml
90 !include media/uml-class-klassifikasjonssystem.iuml
91 !include media/uml-class-klasse.iuml
92 !include media/uml-class-arkivdel.iuml
93 !include media/uml-class-mappe.iuml
94 !include media/uml-class-merknad.iuml
95 !include media/uml-class-registrering.iuml
96 !include media/uml-class-basisregistrering.iuml
97 !include media/uml-class-dokumentbeskrivelse.iuml
98 !include media/uml-class-dokumentobjekt.iuml
99 !include media/uml-class-konvertering.iuml
100 !include media/uml-datatype-elektronisksignatur.iuml
102 Arkivstruktur.Arkivskaper "+arkivskaper
1..*"
<-o "+arkiv 0..*" Arkivstruktur.Arkiv
103 Arkivstruktur.Arkiv o-->
"+underarkiv 0..*" Arkivstruktur.Arkiv
104 Arkivstruktur.Arkiv
"+arkiv 1" o-->
"+arkivdel 0..*" Arkivstruktur.Arkivdel
105 Arkivstruktur.Klassifikasjonssystem
"+klassifikasjonssystem [0..1]" <--o
"+arkivdel 1..*" Arkivstruktur.Arkivdel
106 Arkivstruktur.Klassifikasjonssystem
"+klassifikasjonssystem [0..1]" o-->
"+klasse 0..*" Arkivstruktur.Klasse
107 Arkivstruktur.Arkivdel
"+arkivdel 0..1" o-->
"+mappe 0..*" Arkivstruktur.Mappe
108 Arkivstruktur.Arkivdel
"+arkivdel 0..1" o-->
"+registrering 0..*" Arkivstruktur.Registrering
109 Arkivstruktur.Klasse
"+klasse 0..1" o-->
"+mappe 0..*" Arkivstruktur.Mappe
110 Arkivstruktur.Klasse
"+klasse 0..1" o-->
"+registrering 0..*" Arkivstruktur.Registrering
111 Arkivstruktur.Mappe -->
"+undermappe 0..*" Arkivstruktur.Mappe
112 Arkivstruktur.Mappe
"+mappe 0..1" o-->
"+registrering 0..*" Arkivstruktur.Registrering
113 Arkivstruktur.Merknad
"+merknad 0..*" <--* Arkivstruktur.Mappe
114 Arkivstruktur.Merknad
"+merknad 0..*" <--* Arkivstruktur.Dokumentbeskrivelse
115 Arkivstruktur.Basisregistrering -|
> Arkivstruktur.Registrering
116 Arkivstruktur.Merknad "+merknad
0..*" <--* Arkivstruktur.Basisregistrering
117 Arkivstruktur.Registrering "+registrering
1..*" o--> "+dokumentbeskrivelse
0..*" Arkivstruktur.Dokumentbeskrivelse
118 Arkivstruktur.Dokumentbeskrivelse "+dokumentbeskrivelse
1" o-
> "+dokumentobjekt 0..*" Arkivstruktur.Dokumentobjekt
119 Arkivstruktur.Dokumentobjekt *-
> "+konvertering 0..*" Arkivstruktur.Konvertering
120 Arkivstruktur.ElektroniskSignatur -[hidden]-
> Arkivstruktur.Dokumentobjekt
124 <p><a href=
"http://plantuml.com/class-diagram">The format
</a> is quite
125 compact, with little redundant information. The text expresses
126 entities and relations, and there is little layout related fluff. One
127 can reuse content by using include files, allowing for consistent
128 naming across several diagrams. The include files can be standalone
129 PlantUML too. Here is the content of
130 <tt>media/uml-class-arkivskaper.iuml
</tt>:
</p>
134 class Arkivstruktur.Arkivskaper
<Arkivenhet> {
135 +arkivskaperID : string
136 +arkivskaperNavn : string
137 +beskrivelse : string [
0.
.1]
142 <p>This is what the complete diagram for the PlantUML notation above
145 <p><img width=
"80%" src=
"https://people.skolelinux.org/pere/blog/images/2019-03-25-noark5-plantuml-diagrameksempel.png"></p>
147 <p>A cool feature of PlantUML is that the generated PNG files include
148 the entire original source diagram as text. The source (with include
149 statements expanded) can be extracted using for example
150 <tt>exiftool
</tt>. Another cool feature is that parts of the entities
151 can be hidden after inclusion. This allow to use include files with
152 all attributes listed, even for UML diagrams that should not list any
155 <p>The diagram also show some of the warts. Some times the layout
156 engine place text labels on top of each other, and some times it place
157 the class boxes too close to each other, not leaving room for the
158 labels on the relationship arrows. The former can be worked around by
159 placing extra newlines in the labes (ie "\n"). I did not do it here
160 to be able to demonstrate the issue. I have not found a good way
161 around the latter, so I normally try to reduce the problem by changing
162 from vertical to horizontal links to improve the layout.
</p>
164 <p>All in all, I am quite happy with PlantUML, and very impressed with
165 how quickly its lead developer responds to questions. So far I got an
166 answer to my questions in a few hours when I send an email. I
167 definitely recommend looking at PlantUML if you need to make UML
168 diagrams. Note, PlantUML can draw a lot more than class relations.
169 Check out the documention for a complete list. :)
</p>
171 <p>As usual, if you use Bitcoin and want to show your support of my
172 activities, please send Bitcoin donations to my address
173 <b><a href=
"bitcoin:15oWEoG9dUPovwmUL9KWAnYRtNJEkP1u1b">15oWEoG9dUPovwmUL9KWAnYRtNJEkP1u1b
</a></b>.
</p>
179 Tags:
<a href=
"http://www.hungry.com/~pere/blog/tags/english">english
</a>,
<a href=
"http://www.hungry.com/~pere/blog/tags/nice free software">nice free software
</a>,
<a href=
"http://www.hungry.com/~pere/blog/tags/noark5">noark5
</a>,
<a href=
"http://www.hungry.com/~pere/blog/tags/nuug">nuug
</a>,
<a href=
"http://www.hungry.com/~pere/blog/tags/standard">standard
</a>.
184 <div class=
"padding"></div>
188 <a href=
"http://www.hungry.com/~pere/blog/Release_0_3_of_free_software_archive_API_system_Nikita_announced.html">Release
0.3 of free software archive API system Nikita announced
</a>
194 <p>Yesterday, a new release of
195 <a href=
"https://gitlab.com/OsloMet-ABI/nikita-noark5-core/">Nikita
196 Noark
5 core project
</a> was
197 <a href=
"https://lists.nuug.no/pipermail/nikita-noark/2019-March/000451.html">announced
198 on the project mailing list
</a>. The free software solution is an
199 implementation of the Norwegian archive standard Noark
5 used by
200 government offices in Norway. These were the changes in version
0.3
201 since version
0.2.1 (from NEWS.md):
</p>
204 <li>Improved ClassificationSystem and Class behaviour.
</li>
205 <li>Tidied up known inconsistencies between domain model and hateaos links.
</li>
206 <li>Added experimental code for blockchain integration.
</li>
207 <li>Make token expiry time configurable at upstart from properties file.
</li>
208 <li>Continued work on OData search syntax.
</li>
209 <li>Started work on pagination for entities, partly implemented for Saksmappe.
</li>
210 <li>Finalise ClassifiedCode Metadata entity.
</li>
211 <li>Implement mechanism to check if authentication token is still
212 valid. This allow the GUI to return a more sensible message to the
213 user if the token is expired.
</li>
214 <li>Reintroduce browse.html page to allow user to browse JSON API using
216 <li>Fix bug in handling file/mappe sequence number. Year change was
217 not properly handled.
</li>
218 <li>Update application yml files to be in sync with current development.
</li>
219 <li>Stop 'converting' everything to PDF using libreoffice. Only
220 convert the file formats doc, ppt, xls, docx, pptx, xlsx, odt, odp
222 <li>Continued code style fixing, making code more readable.
</li>
223 <li>Minor bug fixes.
</li>
227 <p>If free and open standardized archiving API sound interesting to
228 you, please contact us on IRC
229 (
<a href=
"irc://irc.freenode.net/%23nikita">#nikita on
230 irc.freenode.net
</a>) or email
231 (
<a href=
"https://lists.nuug.no/mailman/listinfo/nikita-noark">nikita-noark
232 mailing list
</a>).
</p>
234 <p>As usual, if you use Bitcoin and want to show your support of my
235 activities, please send Bitcoin donations to my address
236 <b><a href=
"bitcoin:15oWEoG9dUPovwmUL9KWAnYRtNJEkP1u1b">15oWEoG9dUPovwmUL9KWAnYRtNJEkP1u1b
</a></b>.
</p>
242 Tags:
<a href=
"http://www.hungry.com/~pere/blog/tags/english">english
</a>,
<a href=
"http://www.hungry.com/~pere/blog/tags/noark5">noark5
</a>,
<a href=
"http://www.hungry.com/~pere/blog/tags/nuug">nuug
</a>,
<a href=
"http://www.hungry.com/~pere/blog/tags/offentlig innsyn">offentlig innsyn
</a>,
<a href=
"http://www.hungry.com/~pere/blog/tags/standard">standard
</a>.
247 <div class=
"padding"></div>
251 <a href=
"http://www.hungry.com/~pere/blog/_pen_og_gjennomsiktig_vedlikehold_av_spesifikasjonen_for_Noark_5_Tjenestegrensesnitt.html">Ã…pen og gjennomsiktig vedlikehold av spesifikasjonen for Noark
5 Tjenestegrensesnitt
</a>
257 <p>Et virksomhetsarkiv for meg, er et arbeidsverktøy der en enkelt kan
258 finne informasjonen en trenger når en trenger det, og der
259 virksomhetens samlede kunnskap er tilgjengelig. Det må være greit å
260 finne frem i, litt som en bibliotek. Men der et bibliotek gjerne tar
261 vare på offentliggjort informasjon som er tilgjengelig flere steder,
262 tar et arkiv vare på virksomhetsintern og til tider personlig
263 informasjon som ofte kun er tilgjengelig fra et sted.
</p>
265 <p>Jeg mistenker den eneste måten å sikre at arkivet inneholder den
266 samlede kunnskapen i en virksomhet, er å bruke det som virksomhetens
267 kunnskapslager. Det innebærer å automatisk kopiere (brev, epost,
268 SMS-er etc) inn i arkivet når de sendes og mottas, og der filtrere
269 vekk det en ikke vil ta vare på, og legge på metadata om det som er
270 samlet inn for enkel gjenfinning. En slik bruk av arkivet innebærer at
271 arkivet er en del av daglig virke, ikke at det er siste hvilested for
272 informasjon ingen lenger har daglig bruk for. For å kunne være en del
273 av det daglige virket må arkivet enkelt kunne integreres med andre
274 systemer. I disse dager betyr det å tilby arkivet som en
275 nett-tjeneste til hele virksomheten, tilgjengelig for både mennesker
276 og datamaskiner. Det betyr i tur å både tilby nettsider og et
277 maskinlesbart grensesnitt.
</p>
279 <p>For noen år siden erkjente visjonære arkivarer fordelene med et
280 standardisert maskinlesbart grensesnitt til organisasjonens arkiv. De
281 gikk igang med å lage noe de kalte
282 <a href=
"https://github.com/arkivverket/noark5-tjenestegrensesnitt-standard/">Noark
283 5 Tjenestegrensesnitt
</a>. Gjort riktig, så åpner slike maskinlesbare
284 grensesnitt for samvirke på tvers av uavhengige programvaresystemer.
285 Gjort feil, vil det blokkere for samvirke og bidra til
286 leverandørinnlåsing. For å gjøre det riktig så må grensesnittet være
287 klart og entydig beskrevet i en spesifikasjon som gjør at
288 spesifikasjonen tolkes på samme måte uavhengig av hvem som leser den,
289 og uavhengig av hvem som tar den i bruk.
</p>
291 <p>For å oppnå klare og entydige beskrivelser i en spesifikasjon, som
292 trengs for å kunne få en fri og åpen standard (se
293 <a href=
"https://people.skolelinux.org/pere/blog/Fri_og__pen_standard__slik_Digistan_ser_det.html">Digistan-definisjon
</a>),
294 så trengs det en åpen og gjennomsiktig inngangsport med lav terskel,
295 der de som forsøker å ta den i bruk enkelt kan få inn korreksjoner,
296 etterlyse klargjøringer og rapportere uklarheter i spesifikasjonen.
297 En trenger også automatiserte datasystemer som måler og sjekker at et
298 gitt grensesnitt fungerer i tråd med spesifikasjonen.
</p>
300 <p>For Noark
5 Tjenestegrensesnittet er det nå etablert en slik åpen
301 og gjennomsiktig inngangsport på prosjekttjenesten github. Denne
302 inngangsporten består først og fremst av en åpen portal som lar enhver
303 se hva som er gjort av endringer i spesifikasjonsteksten over tid, men
304 det hører også med et åpent
"diskusjonsforum
" der en kan
305 komme med endringsforslag og forespørsler om klargjøringer. Alle
306 registrerte brukere på github kan bidra med innspill til disse
309 <p>I samarbeide med Arkivverket har jeg fått opprettet et git-depot
310 med spesifikasjonsteksten for tjenestegrensesnittet, der det er lagt
311 inn historikk for endringer i teksten de siste årene, samt lagt inn
312 endringsforslag og forespørsler om klargjøring av teksten. Bakgrunnen
313 for at jeg bidro med dette er at jeg er involvert i
314 <a href=
"https://gitlab.com/OsloMet-ABI/nikita-noark5-core">Nikita-prosjektet
</a>,
315 som lager en fri programvare-utgave av Noark
5 Tjenestegrensesnitt.
316 Det er først når en forsøker å lage noe i tråd med en spesifikasjon at
317 en oppdager hvor mange detaljer som må beskrives i spesifikasjonen for
318 å sikre samhandling.
</p>
320 <p>Spesifikasjonen vedlikeholdes i et rent tekstformat, for å ha et
321 format egnet for versjonskontroll via versjontrollsystemet git. Dette
322 gjør det både enkelt å se konkret hvilke endringer som er gjort når,
323 samt gjør det praktisk mulig for enhver med github-konto å sende inn
324 endringsforslag med formuleringer til spesifikasjonsteksten. Dette
325 tekstformatet vises frem som nettsider på github, slik at en ikke
326 trenger spesielle verktøy for å se på siste utgave av
329 <p>Fra dette rene tekstformatet kan det så avledes ulike formater, som
330 HTML for websider, PDF for utskrift på papir og ePub for lesing med
331 ebokleser. Avlednings-systemet (byggesystemet) bruker i dag
332 verktøyene pandoc, latex, docbook-xsl og GNU make til
333 transformasjonen. Tekstformatet som brukes dag er
334 <a href=
"https://www.markdownguide.org/">Markdown
</a>, men det vurderes
336 <a href=
"https://github.com/arkivverket/noark5-tjenestegrensesnitt-standard/issues/9">endre
337 til formatet RST
</a> i fremtiden for bedre styring av utseende på
340 <p>Versjonskontrollsystemet git ble valgt da det er både fleksibelt,
341 avansert og enkelt å ta i bruk. Github ble valgt (foran f.eks. Gitlab
342 som vi bruker i Nikita), da Arkivverket allerede hadde tatt i bruk
343 Github i andre sammenhenger.
</p>
345 <p>Enkle endringer i teksten kan gjøres av priviligerte brukere
346 direkte i nettsidene til Github, ved å finne aktuell fil som skal
347 endres (f.eks. kapitler/
03-konformitet.md), klikke på den lille
348 bokstaven i høyre hjørne over teksten. Det kommer opp en nettside der
349 en kan endre teksten slik en ønsker. Når en er fornøyd med endringen
350 så må endringen
"sjekkes inn
" i historikken. Det gjøres ved
351 å gi en kort beskrivelse av endringen (beskriv helst hvorfor endringen
352 trengs, ikke hva som er endret), under overskriften
"Commit
353 changes
". En kan og bør legge inn en lengre forklaring i det
354 større skrivefeltet, før en velger om endringen skal sendes direkte
355 til 'master'-grenen (dvs. autorativ utgave av spesifikasjonen) eller
356 om en skal lage en ny gren for denne endringen og opprette en
357 endringsforespørsel (aka
"Pull Request
"/PR). NÃ¥r alt dette
358 er gjort kan en velge
"Commit changes
" for å sende inn
359 endringen. Hvis den er lagt inn i
"master
"-grenen så er den
360 en offisiell del av spesifikasjonen med en gang. Hvis den derimot er
361 en endringsforespørsel, så legges den inn i
362 <a href=
"https://github.com/arkivverket/noark5-tjenestegrensesnitt-standard/pulls">listen
363 over forslag til endringer
</a> som venter på korrekturlesing og
366 <p>Større endringer (for eksempel samtidig endringer i flere filer)
367 gjøres enklest ved å hente ned en kopi av git-depoet lokalt og gjøre
368 endringene der før endringsforslaget sendes inn. Denne prosessen er
369 godt beskrivet i dokumentasjon fra github. Git-prosjektet som skal
370 "klones
" er
371 <a href=
"https://github.com/arkivverket/noark5-tjenestegrensesnitt-standard/">https://github.com/arkivverket/noark5-tjenestegrensesnitt-standard/
</a>.
</p>
373 <p>For å registrere nye utfordringer (issues) eller kommentere på
374 eksisterende utfordringer benyttes nettsiden
375 <a href=
"https://github.com/arkivverket/noark5-tjenestegrensesnitt-standard/issues">https://github.com/arkivverket/noark5-tjenestegrensesnitt-standard/issues
</a>.
376 I skrivende stund er det
48 åpne og
11 avsluttede utfordringer. Et
377 forslag til hva som bør være med når en beskriver en utfordring er
378 tilgjengelig som utfordring
379 <a href=
"https://github.com/arkivverket/noark5-tjenestegrensesnitt-standard/issues/14">#
14</a>.
</p>
381 <p>For å bygge en PDF-utgave av spesifikasjonen så bruker jeg i dag en
382 Debian GNU/Linux-maskin med en rekke programpakker installert. NÃ¥r
383 dette er på plass, så holder det å kjøre kommandoen 'make pdf html' på
384 kommandolinjen, vente ca.
20 sekunder, før spesifikasjon.pdf og
385 spesifikasjon.html ligger klar på disken. Verktøyene for bygging av
386 PDF, HTML og ePub-utgave er også tilgjengelig på Windows og
389 <p>Github bidrar med rammeverket. Men for at åpent vedlikehold av
390 spesifikasjonen skal fungere, så trengs det folk som bidrar med sin
391 tid og kunnskap. Arkivverket har sagt de skal bidra med innspill og
392 godkjenne forslag til endringer, men det blir størst suksess hvis alle
393 som bruker og lager systemer basert på Noark
5 Tjenestegrensesnitt
394 bidrar med sin kunnskap og kommer med forslag til forebedringer. Jeg
395 stiller. Blir du med?
</p>
397 <p>Det er viktig å legge til rette for åpen diskusjon blant alle
398 interesserte, som ikke krever at en må godta lange kontrakter med
399 vilkår for deltagelse. Inntil Arkivverket dukker opp på IRC har vi
400 laget en IRC-kanal der interesserte enkelt kan orientere seg og
401 diskutere tjenestegrensesnittet. Alle er velkommen til å ta turen
403 <a href=
"https://webchat.freenode.net/?channels=nikita">#nikita
</a>
404 (f.eks. via irc.freenode.net) for å møte likesinnede.
</p>
406 <p>Det holder dog ikke å ha en god spesifikasjon, hvis ikke de som tar
407 den i bruk gjør en like god jobb. For å automatisk teste om et konkret
408 tjenestegrensesnitt følger (min) forståelse av
409 spesifikasjonsdokumentet, har jeg skrevet et program som kobler seg
410 opp til et Noark
5v4 REST-tjeneste og tester alt den finner for å se
411 om det er i henhold til min tolkning av spesifikasjonen. Dette
412 verktøyet er tilgjengelig fra
413 <a href=
"https://github.com/petterreinholdtsen/noark5-tester">https://github.com/petterreinholdtsen/noark5-tester
</a>,
414 og brukes daglig mens vi utvikler Nikita for å sikre at vi ikke
415 introduserer nye feil. Hvis en skal sikre samvirke på tvers av ulike
416 systemer er det helt essensielt å kunne raskt og automatisk sjekke at
417 tjenestegrensesnittet oppfører seg som forventet. Jeg håper andre som
418 lager sin utgave av tjenestegrensesnittet vi bruke dette verktøyet,
419 slik at vi tidlig og raskt kan oppdage hvor vi har tolket
420 spesifikasjonen ulikt, og dermed få et godt grunnlag for å gjøre
421 spesifikasjonsteksten enda klarere og bedre.
</p>
423 <p>Dagens beskrivelse av Noark
5 Tjenestegrensesnitt er et svært godt
424 utgangspunkt for å gjøre virksomhetens arkiv til et dynamisk og
425 sentralt arbeidsverktøy i organisasjonen. Blir du med å gjøre den
432 Tags:
<a href=
"http://www.hungry.com/~pere/blog/tags/digistan">digistan
</a>,
<a href=
"http://www.hungry.com/~pere/blog/tags/noark5">noark5
</a>,
<a href=
"http://www.hungry.com/~pere/blog/tags/norsk">norsk
</a>,
<a href=
"http://www.hungry.com/~pere/blog/tags/standard">standard
</a>.
437 <div class=
"padding"></div>
439 <p style=
"text-align: right;"><a href=
"03.rss"><img src=
"http://www.hungry.com/~pere/blog/xml.gif" alt=
"RSS Feed" width=
"36" height=
"14" /></a></p>
450 <li><a href=
"http://www.hungry.com/~pere/blog/archive/2024/01/">January (
1)
</a></li>
452 <li><a href=
"http://www.hungry.com/~pere/blog/archive/2024/02/">February (
1)
</a></li>
454 <li><a href=
"http://www.hungry.com/~pere/blog/archive/2024/03/">March (
2)
</a></li>
456 <li><a href=
"http://www.hungry.com/~pere/blog/archive/2024/04/">April (
3)
</a></li>
458 <li><a href=
"http://www.hungry.com/~pere/blog/archive/2024/05/">May (
1)
</a></li>
460 <li><a href=
"http://www.hungry.com/~pere/blog/archive/2024/06/">June (
1)
</a></li>
462 <li><a href=
"http://www.hungry.com/~pere/blog/archive/2024/07/">July (
2)
</a></li>
469 <li><a href=
"http://www.hungry.com/~pere/blog/archive/2023/01/">January (
3)
</a></li>
471 <li><a href=
"http://www.hungry.com/~pere/blog/archive/2023/02/">February (
1)
</a></li>
473 <li><a href=
"http://www.hungry.com/~pere/blog/archive/2023/04/">April (
2)
</a></li>
475 <li><a href=
"http://www.hungry.com/~pere/blog/archive/2023/05/">May (
3)
</a></li>
477 <li><a href=
"http://www.hungry.com/~pere/blog/archive/2023/06/">June (
1)
</a></li>
479 <li><a href=
"http://www.hungry.com/~pere/blog/archive/2023/08/">August (
1)
</a></li>
481 <li><a href=
"http://www.hungry.com/~pere/blog/archive/2023/09/">September (
1)
</a></li>
483 <li><a href=
"http://www.hungry.com/~pere/blog/archive/2023/10/">October (
1)
</a></li>
485 <li><a href=
"http://www.hungry.com/~pere/blog/archive/2023/11/">November (
4)
</a></li>
487 <li><a href=
"http://www.hungry.com/~pere/blog/archive/2023/12/">December (
1)
</a></li>
494 <li><a href=
"http://www.hungry.com/~pere/blog/archive/2022/02/">February (
1)
</a></li>
496 <li><a href=
"http://www.hungry.com/~pere/blog/archive/2022/03/">March (
3)
</a></li>
498 <li><a href=
"http://www.hungry.com/~pere/blog/archive/2022/04/">April (
2)
</a></li>
500 <li><a href=
"http://www.hungry.com/~pere/blog/archive/2022/06/">June (
2)
</a></li>
502 <li><a href=
"http://www.hungry.com/~pere/blog/archive/2022/07/">July (
1)
</a></li>
504 <li><a href=
"http://www.hungry.com/~pere/blog/archive/2022/09/">September (
1)
</a></li>
506 <li><a href=
"http://www.hungry.com/~pere/blog/archive/2022/10/">October (
1)
</a></li>
508 <li><a href=
"http://www.hungry.com/~pere/blog/archive/2022/12/">December (
1)
</a></li>
515 <li><a href=
"http://www.hungry.com/~pere/blog/archive/2021/01/">January (
2)
</a></li>
517 <li><a href=
"http://www.hungry.com/~pere/blog/archive/2021/02/">February (
1)
</a></li>
519 <li><a href=
"http://www.hungry.com/~pere/blog/archive/2021/05/">May (
1)
</a></li>
521 <li><a href=
"http://www.hungry.com/~pere/blog/archive/2021/06/">June (
1)
</a></li>
523 <li><a href=
"http://www.hungry.com/~pere/blog/archive/2021/07/">July (
3)
</a></li>
525 <li><a href=
"http://www.hungry.com/~pere/blog/archive/2021/08/">August (
1)
</a></li>
527 <li><a href=
"http://www.hungry.com/~pere/blog/archive/2021/09/">September (
1)
</a></li>
529 <li><a href=
"http://www.hungry.com/~pere/blog/archive/2021/10/">October (
1)
</a></li>
531 <li><a href=
"http://www.hungry.com/~pere/blog/archive/2021/12/">December (
1)
</a></li>
538 <li><a href=
"http://www.hungry.com/~pere/blog/archive/2020/02/">February (
2)
</a></li>
540 <li><a href=
"http://www.hungry.com/~pere/blog/archive/2020/03/">March (
2)
</a></li>
542 <li><a href=
"http://www.hungry.com/~pere/blog/archive/2020/04/">April (
2)
</a></li>
544 <li><a href=
"http://www.hungry.com/~pere/blog/archive/2020/05/">May (
3)
</a></li>
546 <li><a href=
"http://www.hungry.com/~pere/blog/archive/2020/06/">June (
2)
</a></li>
548 <li><a href=
"http://www.hungry.com/~pere/blog/archive/2020/07/">July (
1)
</a></li>
550 <li><a href=
"http://www.hungry.com/~pere/blog/archive/2020/09/">September (
1)
</a></li>
552 <li><a href=
"http://www.hungry.com/~pere/blog/archive/2020/10/">October (
1)
</a></li>
554 <li><a href=
"http://www.hungry.com/~pere/blog/archive/2020/11/">November (
1)
</a></li>
561 <li><a href=
"http://www.hungry.com/~pere/blog/archive/2019/01/">January (
4)
</a></li>
563 <li><a href=
"http://www.hungry.com/~pere/blog/archive/2019/02/">February (
3)
</a></li>
565 <li><a href=
"http://www.hungry.com/~pere/blog/archive/2019/03/">March (
3)
</a></li>
567 <li><a href=
"http://www.hungry.com/~pere/blog/archive/2019/05/">May (
2)
</a></li>
569 <li><a href=
"http://www.hungry.com/~pere/blog/archive/2019/06/">June (
5)
</a></li>
571 <li><a href=
"http://www.hungry.com/~pere/blog/archive/2019/07/">July (
2)
</a></li>
573 <li><a href=
"http://www.hungry.com/~pere/blog/archive/2019/08/">August (
1)
</a></li>
575 <li><a href=
"http://www.hungry.com/~pere/blog/archive/2019/09/">September (
1)
</a></li>
577 <li><a href=
"http://www.hungry.com/~pere/blog/archive/2019/11/">November (
1)
</a></li>
579 <li><a href=
"http://www.hungry.com/~pere/blog/archive/2019/12/">December (
4)
</a></li>
586 <li><a href=
"http://www.hungry.com/~pere/blog/archive/2018/01/">January (
1)
</a></li>
588 <li><a href=
"http://www.hungry.com/~pere/blog/archive/2018/02/">February (
5)
</a></li>
590 <li><a href=
"http://www.hungry.com/~pere/blog/archive/2018/03/">March (
5)
</a></li>
592 <li><a href=
"http://www.hungry.com/~pere/blog/archive/2018/04/">April (
3)
</a></li>
594 <li><a href=
"http://www.hungry.com/~pere/blog/archive/2018/06/">June (
2)
</a></li>
596 <li><a href=
"http://www.hungry.com/~pere/blog/archive/2018/07/">July (
5)
</a></li>
598 <li><a href=
"http://www.hungry.com/~pere/blog/archive/2018/08/">August (
3)
</a></li>
600 <li><a href=
"http://www.hungry.com/~pere/blog/archive/2018/09/">September (
3)
</a></li>
602 <li><a href=
"http://www.hungry.com/~pere/blog/archive/2018/10/">October (
5)
</a></li>
604 <li><a href=
"http://www.hungry.com/~pere/blog/archive/2018/11/">November (
2)
</a></li>
606 <li><a href=
"http://www.hungry.com/~pere/blog/archive/2018/12/">December (
4)
</a></li>
613 <li><a href=
"http://www.hungry.com/~pere/blog/archive/2017/01/">January (
4)
</a></li>
615 <li><a href=
"http://www.hungry.com/~pere/blog/archive/2017/02/">February (
3)
</a></li>
617 <li><a href=
"http://www.hungry.com/~pere/blog/archive/2017/03/">March (
5)
</a></li>
619 <li><a href=
"http://www.hungry.com/~pere/blog/archive/2017/04/">April (
2)
</a></li>
621 <li><a href=
"http://www.hungry.com/~pere/blog/archive/2017/06/">June (
5)
</a></li>
623 <li><a href=
"http://www.hungry.com/~pere/blog/archive/2017/07/">July (
1)
</a></li>
625 <li><a href=
"http://www.hungry.com/~pere/blog/archive/2017/08/">August (
1)
</a></li>
627 <li><a href=
"http://www.hungry.com/~pere/blog/archive/2017/09/">September (
3)
</a></li>
629 <li><a href=
"http://www.hungry.com/~pere/blog/archive/2017/10/">October (
5)
</a></li>
631 <li><a href=
"http://www.hungry.com/~pere/blog/archive/2017/11/">November (
3)
</a></li>
633 <li><a href=
"http://www.hungry.com/~pere/blog/archive/2017/12/">December (
4)
</a></li>
640 <li><a href=
"http://www.hungry.com/~pere/blog/archive/2016/01/">January (
3)
</a></li>
642 <li><a href=
"http://www.hungry.com/~pere/blog/archive/2016/02/">February (
2)
</a></li>
644 <li><a href=
"http://www.hungry.com/~pere/blog/archive/2016/03/">March (
3)
</a></li>
646 <li><a href=
"http://www.hungry.com/~pere/blog/archive/2016/04/">April (
8)
</a></li>
648 <li><a href=
"http://www.hungry.com/~pere/blog/archive/2016/05/">May (
8)
</a></li>
650 <li><a href=
"http://www.hungry.com/~pere/blog/archive/2016/06/">June (
2)
</a></li>
652 <li><a href=
"http://www.hungry.com/~pere/blog/archive/2016/07/">July (
2)
</a></li>
654 <li><a href=
"http://www.hungry.com/~pere/blog/archive/2016/08/">August (
5)
</a></li>
656 <li><a href=
"http://www.hungry.com/~pere/blog/archive/2016/09/">September (
2)
</a></li>
658 <li><a href=
"http://www.hungry.com/~pere/blog/archive/2016/10/">October (
3)
</a></li>
660 <li><a href=
"http://www.hungry.com/~pere/blog/archive/2016/11/">November (
8)
</a></li>
662 <li><a href=
"http://www.hungry.com/~pere/blog/archive/2016/12/">December (
5)
</a></li>
669 <li><a href=
"http://www.hungry.com/~pere/blog/archive/2015/01/">January (
7)
</a></li>
671 <li><a href=
"http://www.hungry.com/~pere/blog/archive/2015/02/">February (
6)
</a></li>
673 <li><a href=
"http://www.hungry.com/~pere/blog/archive/2015/03/">March (
1)
</a></li>
675 <li><a href=
"http://www.hungry.com/~pere/blog/archive/2015/04/">April (
4)
</a></li>
677 <li><a href=
"http://www.hungry.com/~pere/blog/archive/2015/05/">May (
3)
</a></li>
679 <li><a href=
"http://www.hungry.com/~pere/blog/archive/2015/06/">June (
4)
</a></li>
681 <li><a href=
"http://www.hungry.com/~pere/blog/archive/2015/07/">July (
6)
</a></li>
683 <li><a href=
"http://www.hungry.com/~pere/blog/archive/2015/08/">August (
2)
</a></li>
685 <li><a href=
"http://www.hungry.com/~pere/blog/archive/2015/09/">September (
2)
</a></li>
687 <li><a href=
"http://www.hungry.com/~pere/blog/archive/2015/10/">October (
9)
</a></li>
689 <li><a href=
"http://www.hungry.com/~pere/blog/archive/2015/11/">November (
6)
</a></li>
691 <li><a href=
"http://www.hungry.com/~pere/blog/archive/2015/12/">December (
3)
</a></li>
698 <li><a href=
"http://www.hungry.com/~pere/blog/archive/2014/01/">January (
2)
</a></li>
700 <li><a href=
"http://www.hungry.com/~pere/blog/archive/2014/02/">February (
3)
</a></li>
702 <li><a href=
"http://www.hungry.com/~pere/blog/archive/2014/03/">March (
8)
</a></li>
704 <li><a href=
"http://www.hungry.com/~pere/blog/archive/2014/04/">April (
7)
</a></li>
706 <li><a href=
"http://www.hungry.com/~pere/blog/archive/2014/05/">May (
1)
</a></li>
708 <li><a href=
"http://www.hungry.com/~pere/blog/archive/2014/06/">June (
2)
</a></li>
710 <li><a href=
"http://www.hungry.com/~pere/blog/archive/2014/07/">July (
2)
</a></li>
712 <li><a href=
"http://www.hungry.com/~pere/blog/archive/2014/08/">August (
2)
</a></li>
714 <li><a href=
"http://www.hungry.com/~pere/blog/archive/2014/09/">September (
5)
</a></li>
716 <li><a href=
"http://www.hungry.com/~pere/blog/archive/2014/10/">October (
6)
</a></li>
718 <li><a href=
"http://www.hungry.com/~pere/blog/archive/2014/11/">November (
3)
</a></li>
720 <li><a href=
"http://www.hungry.com/~pere/blog/archive/2014/12/">December (
5)
</a></li>
727 <li><a href=
"http://www.hungry.com/~pere/blog/archive/2013/01/">January (
11)
</a></li>
729 <li><a href=
"http://www.hungry.com/~pere/blog/archive/2013/02/">February (
9)
</a></li>
731 <li><a href=
"http://www.hungry.com/~pere/blog/archive/2013/03/">March (
9)
</a></li>
733 <li><a href=
"http://www.hungry.com/~pere/blog/archive/2013/04/">April (
6)
</a></li>
735 <li><a href=
"http://www.hungry.com/~pere/blog/archive/2013/05/">May (
9)
</a></li>
737 <li><a href=
"http://www.hungry.com/~pere/blog/archive/2013/06/">June (
10)
</a></li>
739 <li><a href=
"http://www.hungry.com/~pere/blog/archive/2013/07/">July (
7)
</a></li>
741 <li><a href=
"http://www.hungry.com/~pere/blog/archive/2013/08/">August (
3)
</a></li>
743 <li><a href=
"http://www.hungry.com/~pere/blog/archive/2013/09/">September (
5)
</a></li>
745 <li><a href=
"http://www.hungry.com/~pere/blog/archive/2013/10/">October (
7)
</a></li>
747 <li><a href=
"http://www.hungry.com/~pere/blog/archive/2013/11/">November (
9)
</a></li>
749 <li><a href=
"http://www.hungry.com/~pere/blog/archive/2013/12/">December (
3)
</a></li>
756 <li><a href=
"http://www.hungry.com/~pere/blog/archive/2012/01/">January (
7)
</a></li>
758 <li><a href=
"http://www.hungry.com/~pere/blog/archive/2012/02/">February (
10)
</a></li>
760 <li><a href=
"http://www.hungry.com/~pere/blog/archive/2012/03/">March (
17)
</a></li>
762 <li><a href=
"http://www.hungry.com/~pere/blog/archive/2012/04/">April (
12)
</a></li>
764 <li><a href=
"http://www.hungry.com/~pere/blog/archive/2012/05/">May (
12)
</a></li>
766 <li><a href=
"http://www.hungry.com/~pere/blog/archive/2012/06/">June (
20)
</a></li>
768 <li><a href=
"http://www.hungry.com/~pere/blog/archive/2012/07/">July (
17)
</a></li>
770 <li><a href=
"http://www.hungry.com/~pere/blog/archive/2012/08/">August (
6)
</a></li>
772 <li><a href=
"http://www.hungry.com/~pere/blog/archive/2012/09/">September (
9)
</a></li>
774 <li><a href=
"http://www.hungry.com/~pere/blog/archive/2012/10/">October (
17)
</a></li>
776 <li><a href=
"http://www.hungry.com/~pere/blog/archive/2012/11/">November (
10)
</a></li>
778 <li><a href=
"http://www.hungry.com/~pere/blog/archive/2012/12/">December (
7)
</a></li>
785 <li><a href=
"http://www.hungry.com/~pere/blog/archive/2011/01/">January (
16)
</a></li>
787 <li><a href=
"http://www.hungry.com/~pere/blog/archive/2011/02/">February (
6)
</a></li>
789 <li><a href=
"http://www.hungry.com/~pere/blog/archive/2011/03/">March (
6)
</a></li>
791 <li><a href=
"http://www.hungry.com/~pere/blog/archive/2011/04/">April (
7)
</a></li>
793 <li><a href=
"http://www.hungry.com/~pere/blog/archive/2011/05/">May (
3)
</a></li>
795 <li><a href=
"http://www.hungry.com/~pere/blog/archive/2011/06/">June (
2)
</a></li>
797 <li><a href=
"http://www.hungry.com/~pere/blog/archive/2011/07/">July (
7)
</a></li>
799 <li><a href=
"http://www.hungry.com/~pere/blog/archive/2011/08/">August (
6)
</a></li>
801 <li><a href=
"http://www.hungry.com/~pere/blog/archive/2011/09/">September (
4)
</a></li>
803 <li><a href=
"http://www.hungry.com/~pere/blog/archive/2011/10/">October (
2)
</a></li>
805 <li><a href=
"http://www.hungry.com/~pere/blog/archive/2011/11/">November (
3)
</a></li>
807 <li><a href=
"http://www.hungry.com/~pere/blog/archive/2011/12/">December (
1)
</a></li>
814 <li><a href=
"http://www.hungry.com/~pere/blog/archive/2010/01/">January (
2)
</a></li>
816 <li><a href=
"http://www.hungry.com/~pere/blog/archive/2010/02/">February (
1)
</a></li>
818 <li><a href=
"http://www.hungry.com/~pere/blog/archive/2010/03/">March (
3)
</a></li>
820 <li><a href=
"http://www.hungry.com/~pere/blog/archive/2010/04/">April (
3)
</a></li>
822 <li><a href=
"http://www.hungry.com/~pere/blog/archive/2010/05/">May (
9)
</a></li>
824 <li><a href=
"http://www.hungry.com/~pere/blog/archive/2010/06/">June (
14)
</a></li>
826 <li><a href=
"http://www.hungry.com/~pere/blog/archive/2010/07/">July (
12)
</a></li>
828 <li><a href=
"http://www.hungry.com/~pere/blog/archive/2010/08/">August (
13)
</a></li>
830 <li><a href=
"http://www.hungry.com/~pere/blog/archive/2010/09/">September (
7)
</a></li>
832 <li><a href=
"http://www.hungry.com/~pere/blog/archive/2010/10/">October (
9)
</a></li>
834 <li><a href=
"http://www.hungry.com/~pere/blog/archive/2010/11/">November (
13)
</a></li>
836 <li><a href=
"http://www.hungry.com/~pere/blog/archive/2010/12/">December (
12)
</a></li>
843 <li><a href=
"http://www.hungry.com/~pere/blog/archive/2009/01/">January (
8)
</a></li>
845 <li><a href=
"http://www.hungry.com/~pere/blog/archive/2009/02/">February (
8)
</a></li>
847 <li><a href=
"http://www.hungry.com/~pere/blog/archive/2009/03/">March (
12)
</a></li>
849 <li><a href=
"http://www.hungry.com/~pere/blog/archive/2009/04/">April (
10)
</a></li>
851 <li><a href=
"http://www.hungry.com/~pere/blog/archive/2009/05/">May (
9)
</a></li>
853 <li><a href=
"http://www.hungry.com/~pere/blog/archive/2009/06/">June (
3)
</a></li>
855 <li><a href=
"http://www.hungry.com/~pere/blog/archive/2009/07/">July (
4)
</a></li>
857 <li><a href=
"http://www.hungry.com/~pere/blog/archive/2009/08/">August (
3)
</a></li>
859 <li><a href=
"http://www.hungry.com/~pere/blog/archive/2009/09/">September (
1)
</a></li>
861 <li><a href=
"http://www.hungry.com/~pere/blog/archive/2009/10/">October (
2)
</a></li>
863 <li><a href=
"http://www.hungry.com/~pere/blog/archive/2009/11/">November (
3)
</a></li>
865 <li><a href=
"http://www.hungry.com/~pere/blog/archive/2009/12/">December (
3)
</a></li>
872 <li><a href=
"http://www.hungry.com/~pere/blog/archive/2008/11/">November (
5)
</a></li>
874 <li><a href=
"http://www.hungry.com/~pere/blog/archive/2008/12/">December (
7)
</a></li>
885 <li><a href=
"http://www.hungry.com/~pere/blog/tags/3d-printer">3d-printer (
19)
</a></li>
887 <li><a href=
"http://www.hungry.com/~pere/blog/tags/amiga">amiga (
1)
</a></li>
889 <li><a href=
"http://www.hungry.com/~pere/blog/tags/aros">aros (
1)
</a></li>
891 <li><a href=
"http://www.hungry.com/~pere/blog/tags/bankid">bankid (
4)
</a></li>
893 <li><a href=
"http://www.hungry.com/~pere/blog/tags/betalkontant">betalkontant (
9)
</a></li>
895 <li><a href=
"http://www.hungry.com/~pere/blog/tags/bitcoin">bitcoin (
13)
</a></li>
897 <li><a href=
"http://www.hungry.com/~pere/blog/tags/bootsystem">bootsystem (
17)
</a></li>
899 <li><a href=
"http://www.hungry.com/~pere/blog/tags/bsa">bsa (
2)
</a></li>
901 <li><a href=
"http://www.hungry.com/~pere/blog/tags/chrpath">chrpath (
3)
</a></li>
903 <li><a href=
"http://www.hungry.com/~pere/blog/tags/debian">debian (
202)
</a></li>
905 <li><a href=
"http://www.hungry.com/~pere/blog/tags/debian edu">debian edu (
159)
</a></li>
907 <li><a href=
"http://www.hungry.com/~pere/blog/tags/debian-handbook">debian-handbook (
9)
</a></li>
909 <li><a href=
"http://www.hungry.com/~pere/blog/tags/digistan">digistan (
11)
</a></li>
911 <li><a href=
"http://www.hungry.com/~pere/blog/tags/dld">dld (
18)
</a></li>
913 <li><a href=
"http://www.hungry.com/~pere/blog/tags/docbook">docbook (
33)
</a></li>
915 <li><a href=
"http://www.hungry.com/~pere/blog/tags/drivstoffpriser">drivstoffpriser (
4)
</a></li>
917 <li><a href=
"http://www.hungry.com/~pere/blog/tags/english">english (
464)
</a></li>
919 <li><a href=
"http://www.hungry.com/~pere/blog/tags/fiksgatami">fiksgatami (
23)
</a></li>
921 <li><a href=
"http://www.hungry.com/~pere/blog/tags/fildeling">fildeling (
14)
</a></li>
923 <li><a href=
"http://www.hungry.com/~pere/blog/tags/freeculture">freeculture (
34)
</a></li>
925 <li><a href=
"http://www.hungry.com/~pere/blog/tags/freedombox">freedombox (
9)
</a></li>
927 <li><a href=
"http://www.hungry.com/~pere/blog/tags/frikanalen">frikanalen (
20)
</a></li>
929 <li><a href=
"http://www.hungry.com/~pere/blog/tags/h264">h264 (
20)
</a></li>
931 <li><a href=
"http://www.hungry.com/~pere/blog/tags/intervju">intervju (
43)
</a></li>
933 <li><a href=
"http://www.hungry.com/~pere/blog/tags/isenkram">isenkram (
18)
</a></li>
935 <li><a href=
"http://www.hungry.com/~pere/blog/tags/kart">kart (
23)
</a></li>
937 <li><a href=
"http://www.hungry.com/~pere/blog/tags/kodi">kodi (
6)
</a></li>
939 <li><a href=
"http://www.hungry.com/~pere/blog/tags/ldap">ldap (
9)
</a></li>
941 <li><a href=
"http://www.hungry.com/~pere/blog/tags/lego">lego (
5)
</a></li>
943 <li><a href=
"http://www.hungry.com/~pere/blog/tags/lenker">lenker (
8)
</a></li>
945 <li><a href=
"http://www.hungry.com/~pere/blog/tags/linuxcnc">linuxcnc (
7)
</a></li>
947 <li><a href=
"http://www.hungry.com/~pere/blog/tags/lsdvd">lsdvd (
2)
</a></li>
949 <li><a href=
"http://www.hungry.com/~pere/blog/tags/ltsp">ltsp (
1)
</a></li>
951 <li><a href=
"http://www.hungry.com/~pere/blog/tags/madewithcc">madewithcc (
3)
</a></li>
953 <li><a href=
"http://www.hungry.com/~pere/blog/tags/mesh network">mesh network (
8)
</a></li>
955 <li><a href=
"http://www.hungry.com/~pere/blog/tags/multimedia">multimedia (
46)
</a></li>
957 <li><a href=
"http://www.hungry.com/~pere/blog/tags/nice free software">nice free software (
15)
</a></li>
959 <li><a href=
"http://www.hungry.com/~pere/blog/tags/noark5">noark5 (
25)
</a></li>
961 <li><a href=
"http://www.hungry.com/~pere/blog/tags/norsk">norsk (
325)
</a></li>
963 <li><a href=
"http://www.hungry.com/~pere/blog/tags/nuug">nuug (
199)
</a></li>
965 <li><a href=
"http://www.hungry.com/~pere/blog/tags/offentlig innsyn">offentlig innsyn (
41)
</a></li>
967 <li><a href=
"http://www.hungry.com/~pere/blog/tags/open311">open311 (
2)
</a></li>
969 <li><a href=
"http://www.hungry.com/~pere/blog/tags/opensnitch">opensnitch (
4)
</a></li>
971 <li><a href=
"http://www.hungry.com/~pere/blog/tags/opphavsrett">opphavsrett (
76)
</a></li>
973 <li><a href=
"http://www.hungry.com/~pere/blog/tags/personvern">personvern (
114)
</a></li>
975 <li><a href=
"http://www.hungry.com/~pere/blog/tags/raid">raid (
4)
</a></li>
977 <li><a href=
"http://www.hungry.com/~pere/blog/tags/reactos">reactos (
1)
</a></li>
979 <li><a href=
"http://www.hungry.com/~pere/blog/tags/reprap">reprap (
11)
</a></li>
981 <li><a href=
"http://www.hungry.com/~pere/blog/tags/rfid">rfid (
3)
</a></li>
983 <li><a href=
"http://www.hungry.com/~pere/blog/tags/robot">robot (
17)
</a></li>
985 <li><a href=
"http://www.hungry.com/~pere/blog/tags/rss">rss (
1)
</a></li>
987 <li><a href=
"http://www.hungry.com/~pere/blog/tags/ruter">ruter (
7)
</a></li>
989 <li><a href=
"http://www.hungry.com/~pere/blog/tags/scraperwiki">scraperwiki (
2)
</a></li>
991 <li><a href=
"http://www.hungry.com/~pere/blog/tags/sikkerhet">sikkerhet (
60)
</a></li>
993 <li><a href=
"http://www.hungry.com/~pere/blog/tags/sitesummary">sitesummary (
4)
</a></li>
995 <li><a href=
"http://www.hungry.com/~pere/blog/tags/skepsis">skepsis (
5)
</a></li>
997 <li><a href=
"http://www.hungry.com/~pere/blog/tags/standard">standard (
76)
</a></li>
999 <li><a href=
"http://www.hungry.com/~pere/blog/tags/stavekontroll">stavekontroll (
7)
</a></li>
1001 <li><a href=
"http://www.hungry.com/~pere/blog/tags/stortinget">stortinget (
14)
</a></li>
1003 <li><a href=
"http://www.hungry.com/~pere/blog/tags/surveillance">surveillance (
65)
</a></li>
1005 <li><a href=
"http://www.hungry.com/~pere/blog/tags/sysadmin">sysadmin (
5)
</a></li>
1007 <li><a href=
"http://www.hungry.com/~pere/blog/tags/usenix">usenix (
2)
</a></li>
1009 <li><a href=
"http://www.hungry.com/~pere/blog/tags/valg">valg (
9)
</a></li>
1011 <li><a href=
"http://www.hungry.com/~pere/blog/tags/verkidetfri">verkidetfri (
22)
</a></li>
1013 <li><a href=
"http://www.hungry.com/~pere/blog/tags/video">video (
80)
</a></li>
1015 <li><a href=
"http://www.hungry.com/~pere/blog/tags/vitenskap">vitenskap (
4)
</a></li>
1017 <li><a href=
"http://www.hungry.com/~pere/blog/tags/web">web (
42)
</a></li>
1023 <p style=
"text-align: right">
1024 Created by
<a href=
"http://steve.org.uk/Software/chronicle">Chronicle v4.6
</a>