1 <!DOCTYPE html PUBLIC
"-//W3C//DTD XHTML 1.0 Strict//EN"
2 "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
5 <title>Petter Reinholdtsen
</title>
6 <link rel=
"stylesheet" type=
"text/css" media=
"screen" href=
"style.css">
7 <link rel=
"alternate" title=
"RSS Feed" href=
"index.rss" type=
"application/rss+xml">
14 <a href=
"">Petter Reinholdtsen
</a>
23 <div class=
"title"><a href=
"Teknisk_program_for_Go_Open_2009_er_nesten_ferdig.html">Teknisk program for Go Open
2009 er nesten ferdig
</a></div>
24 <div class=
"date">2009-
03-
05 22:
30</div>
26 <p>Etter lang tids jobbing begynner endelig programmet til det
27 tekniske sporet på konferansen
<a href=
"http://www.goopen.no/">Go Open
28 2009</a> å bli ferdig. Det blir
9 punkter på programmet, og etter alt
29 å dømme blir det disse
9:
</p>
33 <li>"Open Telephony: A solution greater than the sum of its parts" med
34 Jon
"maddog" Hall
</li>
35 <li>OpenSolaris-relatert med Ian Murdock fra SUN
</li>
36 <li>"The inner workings of the OpenStreetmap project and the
37 technology used" med Andy Allan
</li>
38 <li>Coreboot-relatert med Peter Stuge
</li>
39 <li>"Gratis værdata fra Meteorologisk institutt" med Trond Michelsen
</li>
40 <li>RRDtool/Nagios-relatert med Tobias Oetiker
</li>
41 <li>"Developers guide to server-side productivity and fun using open
42 source platforms and frameworks" med en gjeng folk fra
44 <li>"G(et)it Nå!" med Marcus Ramberg
</li>
45 <li>Om kontrolltelling av valgresultater med fri programvare med Mitch
50 <p>De siste bekreftelsene og overskrifter mangler og kommer
51 forhåpentlig på plass før mandag, men jeg håper dette blir et program
52 flere enn meg vil sette pris på. Jeg gleder meg i hvert fall
59 Tags:
<a href=
"tags/norsk">norsk
</a>,
<a href=
"tags/nuug">nuug
</a>.
63 <div class=
"padding"></div>
66 <div class=
"title"><a href=
"Checking_server_hardware_support_status_for_Dell__HP_and_IBM_servers.html">Checking server hardware support status for Dell, HP and IBM servers
</a></div>
67 <div class=
"date">2009-
02-
28 23:
50</div>
69 <p>At work, we have a few hundred Linux servers, and with that amount
70 of hardware it is important to keep track of when the hardware support
71 contract expire for each server. We have a machine (and service)
72 register, which until recently did not contain much useful besides the
73 machine room location and contact information for the system owner for
74 each machine. To make it easier for us to track support contract
75 status, I've recently spent time on extending the machine register to
76 include information about when the support contract expire, and to tag
77 machines with expired contracts to make it easy to get a list of such
78 machines. I extended a perl script already being used to import
79 information about machines into the register, to also do some screen
80 scraping off the sites of Dell, HP and IBM (our majority of machines
81 are from these vendors), and automatically check the support status
82 for the relevant machines. This make the support status information
83 easily available and I hope it will make it easier for the computer
84 owner to know when to get new hardware or renew the support contract.
85 The result of this work documented that
27% of the machines in the
86 registry is without a support contract, and made it very easy to find
87 them.
27% might seem like a lot, but I see it more as the case of us
88 using machines a bit longer than the
3 years a normal support contract
89 last, to have test machines and a platform for less important
90 services. After all, the machines without a contract are working fine
91 at the moment and the lack of contract is only a problem if any of
92 them break down. When that happen, we can either fix it using spare
93 parts from other machines or move the service to another old
96 <p>I believe the code for screen scraping the Dell site was originally
97 written by Trond Hasle Amundsen, and later adjusted by me and Morten
98 Werner Forsbring. The HP scraping was written by me after reading a
99 nice article in ;login: about how to use WWW::Mechanize, and the IBM
100 scraping was written by me based on the Dell code. I know the HTML
101 parsing could be done using nice libraries, but did not want to
102 introduce more dependencies. This is the current incarnation:
</p>
110 sub get_support_info {
111 my ($machine, $model, $serial, $productnumber) = @_;
114 if ( $model =~ m/^Dell / ) {
115 # fetch website from Dell support
116 my $url = "http://support.euro.dell.com/support/topics/topic.aspx/emea/shared/support/my_systems_info/no/details?c=no
&cs=nodhs1
&l=no
&s=dhs
&ServiceTag=$serial";
117 my $webpage = get($url);
118 return undef unless ($webpage);
121 my @lines = split(/\n/, $webpage);
122 foreach my $line (@lines) {
123 next unless ($line =~ m/Beskrivelse/);
124 $line =~ s/
<[^
>]+
?>/;/gm;
125 $line =~ s/^.+?;(Beskrivelse;)/$
1/;
127 my @f = split(/\;/, $line);
130 while ($f[
3] eq "DELL") {
131 my ($type, $startstr, $endstr, $days) = @f[
0,
5,
7,
10];
133 my $start = POSIX::strftime("%Y-%m-%d",
134 localtime(str2time($startstr)));
135 my $end = POSIX::strftime("%Y-%m-%d",
136 localtime(str2time($endstr)));
137 $str .= "$type $start -
> $end ";
139 $lastend = $end if ($end gt $lastend);
141 my $today = POSIX::strftime("%Y-%m-%d", localtime(time));
142 tag_machine_unsupported($machine)
143 if ($lastend lt $today);
145 } elsif ( $model =~ m/^HP / ) {
146 my $mech = WWW::Mechanize-
>new();
148 'http://www1.itrc.hp.com/service/ewarranty/warrantyInput.do';
151 'BODServiceID' =
> 'NA',
152 'RegisteredPurchaseDate' =
> '',
154 'productNumber' =
> $productnumber,
155 'serialNumber1' =
> $serial,
157 $mech-
>submit_form( form_number =
> 2,
159 # Next step is screen scraping
160 my $content = $mech-
>content();
162 $content =~ s/
<[^
>]+
?>/;/gm;
163 $content =~ s/\s+/ /gm;
164 $content =~ s/;\s*;/;;/gm;
165 $content =~ s/;[\s;]+/;/gm;
167 my $today = POSIX::strftime("%Y-%m-%d", localtime(time));
169 while ($content =~ m/;Warranty Type;/) {
170 my ($type, $status, $startstr, $stopstr) = $content =~
171 m/;Warranty Type;([^;]+);.+?;Status;(\w+);Start Date;([^;]+);End Date;([^;]+);/;
172 $content =~ s/^.+?;Warranty Type;//;
173 my $start = POSIX::strftime("%Y-%m-%d",
174 localtime(str2time($startstr)));
175 my $end = POSIX::strftime("%Y-%m-%d",
176 localtime(str2time($stopstr)));
178 $str .= "$type ($status) $start -
> $end ";
180 tag_machine_unsupported($machine)
183 } elsif ( $model =~ m/^IBM / ) {
184 # This code ignore extended support contracts.
185 my ($producttype) = $model =~ m/.*-\[(.{
4}).+\]-/;
186 if ($producttype
&& $serial) {
188 get("http://www-
947.ibm.com/systems/support/supportsite.wss/warranty?action=warranty
&brandind=
5000008&Submit=Submit
&type=$producttype
&serial=$serial");
190 $content =~ s/
<[^
>]+
?>/;/gm;
191 $content =~ s/\s+/ /gm;
192 $content =~ s/;\s*;/;;/gm;
193 $content =~ s/;[\s;]+/;/gm;
195 $content =~ s/^.+?;Warranty status;//;
196 my ($status, $end) = $content =~ m/;Warranty status;([^;]+)\s*;Expiration date;(\S+) ;/;
198 $str .= "($status) -
> $end ";
200 my $today = POSIX::strftime("%Y-%m-%d", localtime(time));
201 tag_machine_unsupported($machine)
210 <p>Here are some examples on how to use the function, using fake
211 serial numbers. The information passed in as arguments are fetched
215 print get_support_info("hp.host", "HP ProLiant BL460c G1", "
1234567890"
217 print get_support_info("dell.host", "Dell Inc. PowerEdge
2950", "
1234567");
218 print get_support_info("ibm.host", "IBM eserver xSeries
345 -[
867061X]-",
222 <p>I would recommend this approach for tracking support contracts for
223 everyone with more than a few computers to administer. :)
</p>
225 <p>Update
2009-
03-
06: The IBM page do not include extended support
226 contracts, so it is useless in that case. The original Dell code do
227 not handle extended support contracts either, but has been updated to
234 Tags:
<a href=
"tags/english">english
</a>,
<a href=
"tags/nuug">nuug
</a>.
238 <div class=
"padding"></div>
241 <div class=
"title"><a href=
"Using_bar_codes_at_a_computing_center.html">Using bar codes at a computing center
</a></div>
242 <div class=
"date">2009-
02-
20 08:
50</div>
244 <p>At work with the University of Oslo, we have several hundred computers
245 in our computing center. This give us a challenge in tracking the
246 location and cabling of the computers, when they are added, moved and
247 removed. Some times the location register is not updated when a
248 computer is inserted or moved and we then have to search the room for
249 the "missing" computer.
</p>
251 <p>In the last issue of Linux Journal, I came across a project
252 <a href=
"http://www.libdmtx.org/">libdmtx
</a> to write and read bar
253 code blocks as defined in the
254 <a href=
"http://en.wikipedia.org/wiki/Data_Matrix">The Data Matrix
255 Standard
</a>. This is bar codes that can be read with a normal
256 digital camera, for example that on a cell phone, and several such bar
257 codes can be read by libdmtx from one picture. The bar code standard
258 allow up to
2 KiB to be written in the tag. There is another project
259 with
<a href=
"http://www.terryburton.co.uk/barcodewriter/">a bar code
260 writer written in postscript
</a> capable of creating such bar codes,
261 but this was the first time I found a tool to read these bar
264 <p>It occurred to me that this could be used to tag and track the
265 machines in our computing center. If both racks and computers are
266 tagged this way, we can use a picture of the rack and all its
267 computers to detect the rack location of any computer in that rack.
268 If we do this regularly for the entire room, we will find all
269 locations, and can detect movements and removals.
</p>
271 <p>I decided to test if this would work in practice, and picked a
272 random rack and tagged all the machines with their names. Next, I
273 took pictures with my digital camera, and gave the dmtxread program
274 these JPEG pictures to see how many tags it could read. This worked
275 fairly well. If the pictures was well focused and not taken from the
276 side, all tags in the image could be read. Because of limited space
277 between the racks, I was unable to get a good picture of the entire
278 rack, but could without problem read all tags from a picture covering
279 about half the rack. I had to limit the search time used by dmtxread
280 to
60000 ms to make sure it terminated in a reasonable time frame.
</p>
282 <p>My conclusion is that this could work, and we should probably look
283 at adjusting our computer tagging procedures to use bar codes for
284 easier automatic tracking of computers.
</p>
290 Tags:
<a href=
"tags/english">english
</a>,
<a href=
"tags/nuug">nuug
</a>.
294 <div class=
"padding"></div>
297 <div class=
"title"><a href=
"Kart_over_overv__kningskamera_i_Norge.html">Kart over overvåkningskamera i Norge
</a></div>
298 <div class=
"date">2009-
02-
15 22:
30</div>
301 <a href=
"http://www.personvern.no/">personvernforeningen
</a> har jeg
303 <a href=
"http://personvern.no/wiki/index.php/Kameraovervåkning">et
304 kart over overvåkningskamera i Norge
</a>. Bakgrunnen er at det etter
305 min mening bærer galt avsted med den massive overvåkningen som
306 finner sted i Norge i dag, og at flere og flere overvåkningskamera
307 gjør det vanskeligere og vanskeligere å gå igjennom livet uten at
308 små og store brødre trenger inn i ens private sfære. Datatilsynet
309 har et register over kameraovervåkning, men det viser seg å være
310 ubrukelig både til å finne ut hvor det er kamera plassert, og til å
311 sjekke om et kamera en kommer over er registrert. Dette nye kartet
312 fikser en av disse manglene, men det vil fortsatt være umulig å vite
313 om et kamera er registrert etter lovens krav eller ikke. Pr. nå er
314 22 kamera i Oslo registrert, og det trengs flere til å registrere
315 alle. Informasjonen registreres direkte inn i
<a
316 href=
"http://www.openstreetmap.org/">OpenStreetmap
</a>, sa hentes det
317 automatisk over i spesialkartet.
</p>
323 Tags:
<a href=
"tags/norsk">norsk
</a>,
<a href=
"tags/personvern">personvern
</a>.
327 <div class=
"padding"></div>
330 <div class=
"title"><a href=
"Endelig_er_Debian_Lenny_gitt_ut.html">Endelig er Debian Lenny gitt ut
</a></div>
331 <div class=
"date">2009-
02-
15 11:
50</div>
333 <p>Endelig er
<a href=
"http://www.debian.org/">Debian
</a>
334 <a href=
"http://www.debian.org/News/2009/20090214">Lenny
</a> gitt ut.
335 Et langt steg videre for Debian-prosjektet, og en rekke nye
336 programpakker blir nå tilgjengelig for de av oss som bruker den
337 stabile utgaven av Debian. Neste steg er nå å få
338 <a href=
"http://www.skolelinux.org/">Skolelinux
</a> /
339 <a href=
"http://wiki.debian.org/DebianEdu/">Debian Edu
</a> ferdig
340 oppdatert for den nye utgaven, slik at en oppdatert versjon kan
341 slippes løs på skolene. Takk til alle debian-utviklerne som har
342 gjort dette mulig. Endelig er f.eks. fungerende avhengighetsstyrt
343 bootsekvens tilgjengelig i stabil utgave, vha pakken
344 <tt>insserv
</tt>.
</p>
350 Tags:
<a href=
"tags/debian">debian
</a>,
<a href=
"tags/debian edu">debian edu
</a>,
<a href=
"tags/norsk">norsk
</a>.
354 <div class=
"padding"></div>
357 <div class=
"title"><a href=
"F__rste_vellykkede_videostr__m_fra_NUUG.html">Første vellykkede videostrøm fra NUUG
</a></div>
358 <div class=
"date">2009-
02-
11 06:
30</div>
360 <p>Jeg ble glad for å se under
361 <a href=
"http://www.nuug.no/aktiviteter/20090210-compiz/">gårdagens
362 medlemsmøte
</a> i NUUG Oslo at utsending av live-video fra møtet
363 fungerte for første gang. Forrige gang ble det ved en teknisk tabbe
364 sendt video uten lyd. Vi kan takke Ole Kristian Lien og resten av
365 videogruppen i NUUG for at nå NUUG-medlemmer over det ganske land
366 kunne se foredraget samtidig med oss i Oslo. Vi opplevde til og med
367 under møtet å motta spørsmål via IRC som ble besvart der og da.
368 Opptaket publiseres så snart det er kopiert over til NUUGs
369 webserver og komprimert.
</p>
375 Tags:
<a href=
"tags/norsk">norsk
</a>,
<a href=
"tags/nuug">nuug
</a>,
<a href=
"tags/video">video
</a>.
379 <div class=
"padding"></div>
382 <div class=
"title"><a href=
"Min_reprap_tar_sakte_form.html">Min reprap tar sakte form
</a></div>
383 <div class=
"date">2009-
02-
03 13:
30</div>
385 <p>Min reprap begynner å ta form. Den er nå kommet så langt at den er
386 blitt en kubisk ramme. Z-aksen er montert men ikke kalibrert, og det
387 hele er klart for litt enkel testing. Har møtt på to problemer som
388 blokkerer videre montering, men har oppnått kontakt med Audun Vaaler
389 ved Høgskolen i Østfold som forteller at de er nesten ferdig med et
390 tilsvarende byggesett som det jeg tar utgangspunkt i, og håper de kan
391 forklare hvordan de kom rundt problemene. De to problemene er
392 relatert til Z-aksen og Y-aksen.
</p>
394 <p>For Z-aksen, er det et stjernehjul som festes på motoraksen ved
395 tannjulet som driver z-aksebåndet og som skal holde båndet på plass.
396 Problemet med det nederste stjernejulet er at det er helt løst, og
397 blir liggende på motoren
5 mm nedenfor tannjulet, i stedet for å ligge
398 inntil tannjulet slik det skal. Mulig løsningen er å borre i
399 stjernehjulet, eller lime det fast.
</p>
401 <p>For Y-aksen, er det en plastdel som ser ut til å mangle som skulle
402 dekket to skruver som kommer i veien for kraftoverføringsmekanismen
403 fra motoren til selve aksen, slik at mekanismen kan snurre fritt.
</p>
405 <p>Når det gjelder elektronikken til min reprap, så er min gode venn
406 Anders Rosnes igang med å lodde sammen delene og han forteller at
407 koblingsbordet for Arduino er klart, og en temperatursensor og en
408 optoswitch er også klar. Gleder meg til å teste dem. Må bare finne
409 ut hvordan jeg laster opp firmware i Arduino-en. :)
</p>
411 <p>Når det gjelder NUUGs reprap-prosjekt, så er det framgang og Ole
412 Kristian, Tollef og Ketil besøke IFI for å få fortgang i produksjon av
413 plastdeler, og Ole Kristian forteller at han har funnet en kilde til
414 de fleste metalldelene. Gleder meg til å se resultaten av det
421 Tags:
<a href=
"tags/3d-printer">3d-printer
</a>,
<a href=
"tags/norsk">norsk
</a>,
<a href=
"tags/nuug">nuug
</a>,
<a href=
"tags/reprap">reprap
</a>.
425 <div class=
"padding"></div>
428 <div class=
"title"><a href=
"Norge_trenger_en_personvernforening.html">Norge trenger en personvernforening
</a></div>
429 <div class=
"date">2009-
02-
01 18:
35</div>
431 <p>De siste årene har jeg forsøkt å få liv i
432 <a href=
"http://www.personvern.no/">foreningen Personvern i Norge
</a>. Norge
433 trenger en organisasjon som jobber med å sette personvern på agendaen
434 og som kan være en motvekt til de mange som gjerne raderer bort
435 personvernet av behagelighetshensyn eller ut fra villfarelsen om at en
436 får økt sikkerhet av å redusere personvernet. Foreløbig har det ikke
437 lykkes å få på plass kritisk masse av interesserte på epostlisten, og
438 nå tror jeg det er på tide å endre tilnærming. I stedet for å forsøke
439 å rekruttere folk til epostlisten og håpe at når nok folk er samlet
440 vil noen ta initiativ og sørge for at det begynner å skje ting, så
441 tror jeg det er en ide å ta utgangspunkt i de som er der i dag og
442 sette sammen et interrimstyre. Forslaget er sendt til epostlisten, så
443 nå får vi se om noen er enig.
</p>
449 Tags:
<a href=
"tags/norsk">norsk
</a>,
<a href=
"tags/personvern">personvern
</a>.
453 <div class=
"padding"></div>
456 <div class=
"title"><a href=
"Intellektuelt_privilegium___et_bedre_IP_begrep.html">Intellektuelt privilegium - et bedre IP-begrep
</a></div>
457 <div class=
"date">2009-
02-
01 15:
06</div>
459 <p>Ofte brukes intellektuell eiendom som samlebegrep for opphavsrett,
460 patenter, varemerker og forretningshemmeligheter. Problemet med dette
461 begrepet er at det er svært misvisende. For det første er ingen av de
462 begrensede monopolene det her er snakk om som kan kalles eiendom, og
463 for det andre er egenskapene til de ulike monopolene så forskjellige
464 at det er mer tilslørende enn opplysende å gruppere dem sammen i et
465 sekkebegrep. Blant annet Richard Stallman har
466 <a href=
"http://www.gnu.org/philosophy/not-ipr.html">skrevet litt om dette
</a>.
</p>
468 <p>I dag kom jeg over
469 <a href=
"http://blogs.sun.com/webmink/entry/intellectual_privilege">en
470 bloggpost fra Simon Phipps
</a> som foreslår å bruke intellektuelt
471 privilegium som begrep i stedet, da det gjør det klarere at det ikke
472 er snakk om eiendom, men et tidsbegrenset monopol. Simon Phipps
473 forteller videre at noen jobber med å skrive
474 <a href=
"http://www.intellectualprivilege.com/book.html">en bok med
475 tittel Intellectual Privilege
</a>, og at boken er anbefalt av Lawrence
476 Lessig. Jeg tror jeg skal begynne å bruke begrepet intellektuelt
477 privilegium når jeg snakker om opphavsrett, patenter, varemerker og
478 forretningshemmeligheter framover.
</p>
484 Tags:
<a href=
"tags/norsk">norsk
</a>,
<a href=
"tags/nuug">nuug
</a>.
488 <div class=
"padding"></div>
491 <div class=
"title"><a href=
"Fri__og___pen_standard__slik_Digistan_ser_det.html">Fri og åpen standard, slik Digistan ser det
</a></div>
492 <div class=
"date">2009-
01-
31 23:
10</div>
494 <p>Det er mange ulike definisjoner om hva en åpen standard er for noe,
495 og NUUG hadde
<a href=
"http://www.nuug.no/dokumenter/standard-presse-def-200506.txt">en
496 pressemelding om dette sommeren
2005</a>. Der ble definisjonen til
497 <a href=
"http://www.aaben-standard.dk/">DKUUG
</a>,
498 <a href=
"http://europa.eu.int/idabc/servlets/Doc?id=19529">EU-kommissionens
499 European Interoperability Framework ( side
9)
</a> og
500 <a href=
"http://www.teknologiradet.no/files/7polert_copy.htm">teknologirådet
</a> omtalt.
502 Siden den gang har regjeringens standardiseringsråd dukket opp, og de
503 ser ut til å har tatt utgangspunkt i EU-kommisjonens definisjon i
504 <a href=
"http://www.regjeringen.no/nb/dep/fad/kampanjer/standardiseringsradet/arbeidsmetodikk.html?id=476407">sin
505 arbeidsmetodikk
</a>. Personlig synes jeg det er en god ide, da
506 kravene som stilles der gjør at alle markedsaktører får like vilkår,
507 noe som kommer kundene til gode ved hjelp av økt konkurranse.
</p>
509 <p>I sommer kom det en ny definisjon på banen.
510 <a href=
"http://www.digistan.org/">Digistan
</a> lanserte
511 <a href=
"http://www.digistan.org/open-standard:definition">en
512 definisjon på en fri og åpen standard
</a>. Jeg liker måten de bryter
513 ut av diskusjonen om hva som kreves for å kalle noe en åpen standard
514 ved å legge på et ord og poengtere at en standard som er både åpen og
515 fri har noen spesielle krav. Her er den definisjonen etter rask
516 oversettelse fra engelsk til norsk av meg:
</p>
519 <p><strong>Definisjonen av en fri og åpen standard
</strong></p>
521 <p>Den digitale standardorganisasjonen definierer fri og åpen standard
524 <li>En fri og åpen standard er immun for leverandørinnlåsing i alle
525 stadier av dens livssyklus. Immuniteten fra leverandørinnlåsing gjør
526 det mulig å fritt bruke, forbedre, stole på og utvide en standard over
528 <li>Standarden er adoptert og vil bli vedlikeholdt av en ikke-kommersiell
529 organisasjon, og dens pågående utvikling gjøres med en åpen
530 beslutningsprosedyre som er tilgjengelig for alle som er interessert i
532 <li>Standarden er publisert og spesifikasjonsdokumentet er fritt
533 tilgjengelig. Det må være tillatt for alle å kopiere, distribuere og
534 bruke den uten begresninger.
</li>
535 <li>Patentene som muligens gjelder (deler av) standarden er gjort
536 ugjenkallelig tilgjengelig uten krav om betaling.
</li>
537 <li>Det er ingen begresninger i gjenbruk av standarden.
</li>
539 <p>Det økonomiske resultatet av en fri og åpen standard, som kan
540 måles, er at det muliggjør perfekt konkurranse mellom leverandører av
541 produkter basert på standarden.
</p>
544 <p>(Tar gjerne imot forbedringer av oversettelsen.)
</p>
550 Tags:
<a href=
"tags/norsk">norsk
</a>,
<a href=
"tags/nuug">nuug
</a>.
554 <div class=
"padding"></div>
556 <p style=
"text-align: right;"><a href=
"index.rss"><img src=
"xml.gif" alt=
"RSS feed" width=
"36" height=
"14"></a></p>
570 <li><a href=
"archive/2009/01/">January (
8)
</a></li>
572 <li><a href=
"archive/2009/02/">February (
8)
</a></li>
574 <li><a href=
"archive/2009/03/">March (
1)
</a></li>
581 <li><a href=
"archive/2008/11/">November (
5)
</a></li>
583 <li><a href=
"archive/2008/12/">December (
7)
</a></li>
594 <li><a href=
"tags/3d-printer">3d-printer (
7)
</a></li>
596 <li><a href=
"tags/amiga">amiga (
1)
</a></li>
598 <li><a href=
"tags/aros">aros (
1)
</a></li>
600 <li><a href=
"tags/debian">debian (
3)
</a></li>
602 <li><a href=
"tags/debian edu">debian edu (
4)
</a></li>
604 <li><a href=
"tags/english">english (
6)
</a></li>
606 <li><a href=
"tags/fiksgatami">fiksgatami (
1)
</a></li>
608 <li><a href=
"tags/ltsp">ltsp (
1)
</a></li>
610 <li><a href=
"tags/multimedia">multimedia (
2)
</a></li>
612 <li><a href=
"tags/norsk">norsk (
23)
</a></li>
614 <li><a href=
"tags/nuug">nuug (
21)
</a></li>
616 <li><a href=
"tags/personvern">personvern (
3)
</a></li>
618 <li><a href=
"tags/reprap">reprap (
7)
</a></li>
620 <li><a href=
"tags/rss">rss (
1)
</a></li>
622 <li><a href=
"tags/stavekontroll">stavekontroll (
1)
</a></li>
624 <li><a href=
"tags/video">video (
3)
</a></li>
626 <li><a href=
"tags/web">web (
2)
</a></li>
632 <p style=
"text-align: right">
633 Created by
<a href=
"http://steve.org.uk/Software/chronicle">Chronicle v3.4
</a>