]> pere.pagekite.me Git - homepage.git/blob - blog/index.html
Generated.
[homepage.git] / blog / index.html
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">
4 <head>
5 <meta http-equiv="Content-Type" content="text/html;charset=utf-8" />
6 <title>Petter Reinholdtsen</title>
7 <link rel="stylesheet" type="text/css" media="screen" href="http://people.skolelinux.org/pere/blog/style.css" />
8 <link rel="stylesheet" type="text/css" media="screen" href="http://people.skolelinux.org/pere/blog/vim.css" />
9 <link rel="alternate" title="RSS Feed" href="http://people.skolelinux.org/pere/blog/index.rss" type="application/rss+xml" />
10 </head>
11 <body>
12 <div class="title">
13 <h1>
14 <a href="http://people.skolelinux.org/pere/blog/">Petter Reinholdtsen</a>
15
16 </h1>
17
18 </div>
19
20
21
22 <div class="entry">
23 <div class="title"><a href="http://people.skolelinux.org/pere/blog/I_spent_last_weekend_recording_MakerCon_Nordic.html">I spent last weekend recording MakerCon Nordic</a></div>
24 <div class="date">23rd October 2014</div>
25 <div class="body"><p>I spent last weekend at <a href="http://www.makercon.no/">Makercon
26 Nordic</a>, a great conference and workshop for makers in Norway and
27 the surrounding countries. I had volunteered on behalf of the
28 Norwegian Unix Users Group (NUUG) to video record the talks, and we
29 had a great and exhausting time recording the entire day, two days in
30 a row. There were only two of us, Hans-Petter and me, and we used the
31 regular video equipment for NUUG, with a
32 <a href="http://dvswitch.alioth.debian.org/wiki/">dvswitch</a>, a
33 camera and a VGA to DV convert box, and mixed video and slides
34 live.</p>
35
36 <p>Hans-Petter did the post-processing, consisting of uploading the
37 around 180 GiB of raw video to Youtube, and the result is
38 <a href="https://www.youtube.com/user/MakerConNordic/">now becoming
39 public</a> on the MakerConNordic account. The videos have the license
40 NUUG always use on our recordings, which is
41 <a href="http://creativecommons.org/licenses/by-sa/3.0/no/">Creative
42 Commons Navngivelse-Del på samme vilkår 3.0 Norge</a>. Many great
43 talks available. Check it out! :)</p>
44 </div>
45 <div class="tags">
46
47
48 Tags: <a href="http://people.skolelinux.org/pere/blog/tags/english">english</a>, <a href="http://people.skolelinux.org/pere/blog/tags/nuug">nuug</a>, <a href="http://people.skolelinux.org/pere/blog/tags/video">video</a>.
49
50
51 </div>
52 </div>
53 <div class="padding"></div>
54
55 <div class="entry">
56 <div class="title"><a href="http://people.skolelinux.org/pere/blog/listadmin__the_quick_way_to_moderate_mailman_lists___nice_free_software.html">listadmin, the quick way to moderate mailman lists - nice free software</a></div>
57 <div class="date">22nd October 2014</div>
58 <div class="body"><p>If you ever had to moderate a mailman list, like the ones on
59 alioth.debian.org, you know the web interface is fairly slow to
60 operate. First you visit one web page, enter the moderation password
61 and get a new page shown with a list of all the messages to moderate
62 and various options for each email address. This take a while for
63 every list you moderate, and you need to do it regularly to do a good
64 job as a list moderator. But there is a quick alternative,
65 <a href="http://heim.ifi.uio.no/kjetilho/hacks/#listadmin">the
66 listadmin program</a>. It allow you to check lists for new messages
67 to moderate in a fraction of a second. Here is a test run on two
68 lists I recently took over:</p>
69
70 <p><blockquote><pre>
71 % time listadmin xiph
72 fetching data for pkg-xiph-commits@lists.alioth.debian.org ... nothing in queue
73 fetching data for pkg-xiph-maint@lists.alioth.debian.org ... nothing in queue
74
75 real 0m1.709s
76 user 0m0.232s
77 sys 0m0.012s
78 %
79 </pre></blockquote></p>
80
81 <p>In 1.7 seconds I had checked two mailing lists and confirmed that
82 there are no message in the moderation queue. Every morning I
83 currently moderate 68 mailman lists, and it normally take around two
84 minutes. When I took over the two pkg-xiph lists above a few days
85 ago, there were 400 emails waiting in the moderator queue. It took me
86 less than 15 minutes to process them all using the listadmin
87 program.</p>
88
89 <p>If you install
90 <a href="https://tracker.debian.org/pkg/listadmin">the listadmin
91 package</a> from Debian and create a file <tt>~/.listadmin.ini</tt>
92 with content like this, the moderation task is a breeze:</p>
93
94 <p><blockquote><pre>
95 username username@example.org
96 spamlevel 23
97 default discard
98 discard_if_reason "Posting restricted to members only. Remove us from your mail list."
99
100 password secret
101 adminurl https://{domain}/mailman/admindb/{list}
102 mailman-list@lists.example.com
103
104 password hidden
105 other-list@otherserver.example.org
106 </pre></blockquote></p>
107
108 <p>There are other options to set as well. Check the manual page to
109 learn the details.</p>
110
111 <p>If you are forced to moderate lists on a mailman installation where
112 the SSL certificate is self signed or not properly signed by a
113 generally accepted signing authority, you can set a environment
114 variable when calling listadmin to disable SSL verification:</p>
115
116 <p><blockquote><pre>
117 PERL_LWP_SSL_VERIFY_HOSTNAME=0 listadmin
118 </pre></blockquote></p>
119
120 <p>If you want to moderate a subset of the lists you take care of, you
121 can provide an argument to the listadmin script like I do in the
122 initial screen dump (the xiph argument). Using an argument, only
123 lists matching the argument string will be processed. This make it
124 quick to accept messages if you notice the moderation request in your
125 email.</p>
126
127 <p>Without the listadmin program, I would never be the moderator of 68
128 mailing lists, as I simply do not have time to spend on that if the
129 process was any slower. The listadmin program have saved me hours of
130 time I could spend elsewhere over the years. It truly is nice free
131 software.</p>
132
133 <p>As usual, if you use Bitcoin and want to show your support of my
134 activities, please send Bitcoin donations to my address
135 <b><a href="bitcoin:15oWEoG9dUPovwmUL9KWAnYRtNJEkP1u1b&label=PetterReinholdtsenBlog">15oWEoG9dUPovwmUL9KWAnYRtNJEkP1u1b</a></b>.</p>
136
137 <p>Update 2014-10-27: Added missing 'username' statement in
138 configuration example. Also, I've been told that the
139 PERL_LWP_SSL_VERIFY_HOSTNAME=0 setting do not work for everyone. Not
140 sure why.</p>
141 </div>
142 <div class="tags">
143
144
145 Tags: <a href="http://people.skolelinux.org/pere/blog/tags/debian">debian</a>, <a href="http://people.skolelinux.org/pere/blog/tags/english">english</a>.
146
147
148 </div>
149 </div>
150 <div class="padding"></div>
151
152 <div class="entry">
153 <div class="title"><a href="http://people.skolelinux.org/pere/blog/Debian_Jessie__PXE_and_automatic_firmware_installation.html">Debian Jessie, PXE and automatic firmware installation</a></div>
154 <div class="date">17th October 2014</div>
155 <div class="body"><p>When PXE installing laptops with Debian, I often run into the
156 problem that the WiFi card require some firmware to work properly.
157 And it has been a pain to fix this using preseeding in Debian.
158 Normally something more is needed. But thanks to
159 <a href="https://packages.qa.debian.org/i/isenkram.html">my isenkram
160 package</a> and its recent tasksel extension, it has now become easy
161 to do this using simple preseeding.</p>
162
163 <p>The isenkram-cli package provide tasksel tasks which will install
164 firmware for the hardware found in the machine (actually, requested by
165 the kernel modules for the hardware). (It can also install user space
166 programs supporting the hardware detected, but that is not the focus
167 of this story.)</p>
168
169 <p>To get this working in the default installation, two preeseding
170 values are needed. First, the isenkram-cli package must be installed
171 into the target chroot (aka the hard drive) before tasksel is executed
172 in the pkgsel step of the debian-installer system. This is done by
173 preseeding the base-installer/includes debconf value to include the
174 isenkram-cli package. The package name is next passed to debootstrap
175 for installation. With the isenkram-cli package in place, tasksel
176 will automatically use the isenkram tasks to detect hardware specific
177 packages for the machine being installed and install them, because
178 isenkram-cli contain tasksel tasks.</p>
179
180 <p>Second, one need to enable the non-free APT repository, because
181 most firmware unfortunately is non-free. This is done by preseeding
182 the apt-mirror-setup step. This is unfortunate, but for a lot of
183 hardware it is the only option in Debian.</p>
184
185 <p>The end result is two lines needed in your preseeding file to get
186 firmware installed automatically by the installer:</p>
187
188 <p><blockquote><pre>
189 base-installer base-installer/includes string isenkram-cli
190 apt-mirror-setup apt-setup/non-free boolean true
191 </pre></blockquote></p>
192
193 <p>The current version of isenkram-cli in testing/jessie will install
194 both firmware and user space packages when using this method. It also
195 do not work well, so use version 0.15 or later. Installing both
196 firmware and user space packages might give you a bit more than you
197 want, so I decided to split the tasksel task in two, one for firmware
198 and one for user space programs. The firmware task is enabled by
199 default, while the one for user space programs is not. This split is
200 implemented in the package currently in unstable.</p>
201
202 <p>If you decide to give this a go, please let me know (via email) how
203 this recipe work for you. :)</p>
204
205 <p>So, I bet you are wondering, how can this work. First and
206 foremost, it work because tasksel is modular, and driven by whatever
207 files it find in /usr/lib/tasksel/ and /usr/share/tasksel/. So the
208 isenkram-cli package place two files for tasksel to find. First there
209 is the task description file (/usr/share/tasksel/descs/isenkram.desc):</p>
210
211 <p><blockquote><pre>
212 Task: isenkram-packages
213 Section: hardware
214 Description: Hardware specific packages (autodetected by isenkram)
215 Based on the detected hardware various hardware specific packages are
216 proposed.
217 Test-new-install: show show
218 Relevance: 8
219 Packages: for-current-hardware
220
221 Task: isenkram-firmware
222 Section: hardware
223 Description: Hardware specific firmware packages (autodetected by isenkram)
224 Based on the detected hardware various hardware specific firmware
225 packages are proposed.
226 Test-new-install: mark show
227 Relevance: 8
228 Packages: for-current-hardware-firmware
229 </pre></blockquote></p>
230
231 <p>The key parts are Test-new-install which indicate how the task
232 should be handled and the Packages line referencing to a script in
233 /usr/lib/tasksel/packages/. The scripts use other scripts to get a
234 list of packages to install. The for-current-hardware-firmware script
235 look like this to list relevant firmware for the machine:
236
237 <p><blockquote><pre>
238 #!/bin/sh
239 #
240 PATH=/usr/sbin:$PATH
241 export PATH
242 isenkram-autoinstall-firmware -l
243 </pre></blockquote></p>
244
245 <p>With those two pieces in place, the firmware is installed by
246 tasksel during the normal d-i run. :)</p>
247
248 <p>If you want to test what tasksel will install when isenkram-cli is
249 installed, run <tt>DEBIAN_PRIORITY=critical tasksel --test
250 --new-install</tt> to get the list of packages that tasksel would
251 install.</p>
252
253 <p><a href="https://wiki.debian.org/DebianEdu/">Debian Edu</a> will be
254 pilots in testing this feature, as isenkram is used there now to
255 install firmware, replacing the earlier scripts.</p>
256 </div>
257 <div class="tags">
258
259
260 Tags: <a href="http://people.skolelinux.org/pere/blog/tags/debian">debian</a>, <a href="http://people.skolelinux.org/pere/blog/tags/english">english</a>, <a href="http://people.skolelinux.org/pere/blog/tags/isenkram">isenkram</a>, <a href="http://people.skolelinux.org/pere/blog/tags/sysadmin">sysadmin</a>.
261
262
263 </div>
264 </div>
265 <div class="padding"></div>
266
267 <div class="entry">
268 <div class="title"><a href="http://people.skolelinux.org/pere/blog/Ubuntu_used_to_show_the_bread_prizes_at_ICA_Storo.html">Ubuntu used to show the bread prizes at ICA Storo</a></div>
269 <div class="date"> 4th October 2014</div>
270 <div class="body"><p>Today I came across an unexpected Ubuntu boot screen. Above the
271 bread shelf on the ICA shop at Storo in Oslo, the grub menu of Ubuntu
272 with Linux kernel 3.2.0-23 (ie probably version 12.04 LTS) was stuck
273 on a screen normally showing the bread types and prizes:</p>
274
275 <p align="center"><img width="70%" src="http://people.skolelinux.org/pere/blog/images/2014-10-04-ubuntu-ica-storo-crop.jpeg"></p>
276
277 <p>If it had booted as it was supposed to, I would never had known
278 about this hidden Linux installation. It is interesting what
279 <a href="http://revealingerrors.com/">errors can reveal</a>.</p>
280 </div>
281 <div class="tags">
282
283
284 Tags: <a href="http://people.skolelinux.org/pere/blog/tags/debian">debian</a>, <a href="http://people.skolelinux.org/pere/blog/tags/english">english</a>.
285
286
287 </div>
288 </div>
289 <div class="padding"></div>
290
291 <div class="entry">
292 <div class="title"><a href="http://people.skolelinux.org/pere/blog/New_lsdvd_release_version_0_17_is_ready.html">New lsdvd release version 0.17 is ready</a></div>
293 <div class="date"> 4th October 2014</div>
294 <div class="body"><p>The <a href="https://sourceforge.net/p/lsdvd/">lsdvd project</a>
295 got a new set of developers a few weeks ago, after the original
296 developer decided to step down and pass the project to fresh blood.
297 This project is now maintained by Petter Reinholdtsen and Steve
298 Dibb.</p>
299
300 <p>I just wrapped up
301 <a href="https://sourceforge.net/p/lsdvd/mailman/message/32896061/">a
302 new lsdvd release</a>, available in git or from
303 <a href="https://sourceforge.net/projects/lsdvd/files/lsdvd/">the
304 download page</a>. This is the changelog dated 2014-10-03 for version
305 0.17.</p>
306
307 <ul>
308
309 <li>Ignore 'phantom' audio, subtitle tracks</li>
310 <li>Check for garbage in the program chains, which indicate that a track is
311 non-existant, to work around additional copy protection</li>
312 <li>Fix displaying content type for audio tracks, subtitles</li>
313 <li>Fix pallete display of first entry</li>
314 <li>Fix include orders</li>
315 <li>Ignore read errors in titles that would not be displayed anyway</li>
316 <li>Fix the chapter count</li>
317 <li>Make sure the array size and the array limit used when initialising
318 the palette size is the same.</li>
319 <li>Fix array printing.</li>
320 <li>Correct subsecond calculations.</li>
321 <li>Add sector information to the output format.</li>
322 <li>Clean up code to be closer to ANSI C and compile without warnings
323 with more GCC compiler warnings.</li>
324
325 </ul>
326
327 <p>This change bring together patches for lsdvd in use in various
328 Linux and Unix distributions, as well as patches submitted to the
329 project the last nine years. Please check it out. :)</p>
330 </div>
331 <div class="tags">
332
333
334 Tags: <a href="http://people.skolelinux.org/pere/blog/tags/debian">debian</a>, <a href="http://people.skolelinux.org/pere/blog/tags/english">english</a>, <a href="http://people.skolelinux.org/pere/blog/tags/lsdvd">lsdvd</a>, <a href="http://people.skolelinux.org/pere/blog/tags/multimedia">multimedia</a>.
335
336
337 </div>
338 </div>
339 <div class="padding"></div>
340
341 <div class="entry">
342 <div class="title"><a href="http://people.skolelinux.org/pere/blog/How_to_test_Debian_Edu_Jessie_despite_some_fatal_problems_with_the_installer.html">How to test Debian Edu Jessie despite some fatal problems with the installer</a></div>
343 <div class="date">26th September 2014</div>
344 <div class="body"><p>The <a href="http://www.skolelinux.org/">Debian Edu / Skolelinux
345 project</a> provide a Linux solution for schools, including a
346 powerful desktop with education software, a central server providing
347 web pages, user database, user home directories, central login and PXE
348 boot of both clients without disk and the installation to install Debian
349 Edu on machines with disk (and a few other services perhaps to small
350 to mention here). We in the Debian Edu team are currently working on
351 the Jessie based version, trying to get everything in shape before the
352 freeze, to avoid having to maintain our own package repository in the
353 future. The
354 <a href="https://wiki.debian.org/DebianEdu/Status/Jessie">current
355 status</a> can be seen on the Debian wiki, and there is still heaps of
356 work left. Some fatal problems block testing, breaking the installer,
357 but it is possible to work around these to get anyway. Here is a
358 recipe on how to get the installation limping along.</p>
359
360 <p>First, download the test ISO via
361 <a href="ftp://ftp.skolelinux.no/cd-edu-testing-nolocal-netinst/debian-edu-amd64-i386-NETINST-1.iso">ftp</a>,
362 <a href="http://ftp.skolelinux.no/cd-edu-testing-nolocal-netinst/debian-edu-amd64-i386-NETINST-1.iso">http</a>
363 or rsync (use
364 ftp.skolelinux.org::cd-edu-testing-nolocal-netinst/debian-edu-amd64-i386-NETINST-1.iso).
365 The ISO build was broken on Tuesday, so we do not get a new ISO every
366 12 hours or so, but thankfully the ISO we already got we are able to
367 install with some tweaking.</p>
368
369 <p>When you get to the Debian Edu profile question, go to tty2
370 (use Alt-Ctrl-F2), run</p>
371
372 <p><blockquote><pre>
373 nano /usr/bin/edu-eatmydata-install
374 </pre></blockquote></p>
375
376 <p>and add 'exit 0' as the second line, disabling the eatmydata
377 optimization. Return to the installation, select the profile you want
378 and continue. Without this change, exim4-config will fail to install
379 due to a known bug in eatmydata.</p>
380
381 <p>When you get the grub question at the end, answer /dev/sda (or if
382 this do not work, figure out what your correct value would be. All my
383 test machines need /dev/sda, so I have no advice if it do not fit
384 your need.</p>
385
386 <p>If you installed a profile including a graphical desktop, log in as
387 root after the initial boot from hard drive, and install the
388 education-desktop-XXX metapackage. XXX can be kde, gnome, lxde, xfce
389 or mate. If you want several desktop options, install more than one
390 metapackage. Once this is done, reboot and you should have a working
391 graphical login screen. This workaround should no longer be needed
392 once the education-tasks package version 1.801 enter testing in two
393 days.</p>
394
395 <p>I believe the ISO build will start working on two days when the new
396 tasksel package enter testing and Steve McIntyre get a chance to
397 update the debian-cd git repository. The eatmydata, grub and desktop
398 issues are already fixed in unstable and testing, and should show up
399 on the ISO as soon as the ISO build start working again. Well the
400 eatmydata optimization is really just disabled. The proper fix
401 require an upload by the eatmydata maintainer applying the patch
402 provided in bug <a href="https://bugs.debian.org/702711">#702711</a>.
403 The rest have proper fixes in unstable.</p>
404
405 <p>I hope this get you going with the installation testing, as we are
406 quickly running out of time trying to get our Jessie based
407 installation ready before the distribution freeze in a month.</p>
408 </div>
409 <div class="tags">
410
411
412 Tags: <a href="http://people.skolelinux.org/pere/blog/tags/debian">debian</a>, <a href="http://people.skolelinux.org/pere/blog/tags/debian edu">debian edu</a>, <a href="http://people.skolelinux.org/pere/blog/tags/english">english</a>.
413
414
415 </div>
416 </div>
417 <div class="padding"></div>
418
419 <div class="entry">
420 <div class="title"><a href="http://people.skolelinux.org/pere/blog/Suddenly_I_am_the_new_upstream_of_the_lsdvd_command_line_tool.html">Suddenly I am the new upstream of the lsdvd command line tool</a></div>
421 <div class="date">25th September 2014</div>
422 <div class="body"><p>I use the <a href="https://sourceforge.net/p/lsdvd/">lsdvd tool</a>
423 to handle my fairly large DVD collection. It is a nice command line
424 tool to get details about a DVD, like title, tracks, track length,
425 etc, in XML, Perl or human readable format. But lsdvd have not seen
426 any new development since 2006 and had a few irritating bugs affecting
427 its use with some DVDs. Upstream seemed to be dead, and in January I
428 sent a small probe asking for a version control repository for the
429 project, without any reply. But I use it regularly and would like to
430 get <a href="https://packages.qa.debian.org/lsdvd">an updated version
431 into Debian</a>. So two weeks ago I tried harder to get in touch with
432 the project admin, and after getting a reply from him explaining that
433 he was no longer interested in the project, I asked if I could take
434 over. And yesterday, I became project admin.</p>
435
436 <p>I've been in touch with a Gentoo developer and the Debian
437 maintainer interested in joining forces to maintain the upstream
438 project, and I hope we can get a new release out fairly quickly,
439 collecting the patches spread around on the internet into on place.
440 I've added the relevant Debian patches to the freshly created git
441 repository, and expect the Gentoo patches to make it too. If you got
442 a DVD collection and care about command line tools, check out
443 <a href="https://sourceforge.net/p/lsdvd/git/ci/master/tree/">the git source</a> and join
444 <a href="https://sourceforge.net/p/lsdvd/mailman/">the project mailing
445 list</a>. :)</p>
446 </div>
447 <div class="tags">
448
449
450 Tags: <a href="http://people.skolelinux.org/pere/blog/tags/debian">debian</a>, <a href="http://people.skolelinux.org/pere/blog/tags/english">english</a>, <a href="http://people.skolelinux.org/pere/blog/tags/lsdvd">lsdvd</a>, <a href="http://people.skolelinux.org/pere/blog/tags/multimedia">multimedia</a>.
451
452
453 </div>
454 </div>
455 <div class="padding"></div>
456
457 <div class="entry">
458 <div class="title"><a href="http://people.skolelinux.org/pere/blog/Hva_henger_under_skibrua_over_E16_p__Sollih_gda_.html">Hva henger under skibrua over E16 på Sollihøgda?</a></div>
459 <div class="date">21st September 2014</div>
460 <div class="body"><p>Rundt omkring i Oslo og Østlandsområdet henger det bokser over
461 veiene som jeg har lurt på hva gjør. De har ut fra plassering og
462 vinkling sett ut som bokser som sniffer ut et eller annet fra
463 forbipasserende trafikk, men det har vært uklart for meg hva det er de
464 leser av. Her om dagen tok jeg bilde av en slik boks som henger under
465 <a href="http://www.openstreetmap.no/?zoom=19&mlat=59.96396&mlon=10.34443&layers=B00000">ei
466 skibru på Sollihøgda</a>:</p>
467
468 <p align="center"><img width="60%" src="http://people.skolelinux.org/pere/blog/images/2014-09-13-kapsch-sollihogda-crop.jpeg"></p>
469
470 <p>Boksen er tydelig merket «Kapsch >>>», logoen til
471 <a href="http://www.kapsch.net/">det sveitsiske selskapet Kapsch</a> som
472 blant annet lager sensorsystemer for veitrafikk. Men de lager mye
473 forskjellig, og jeg kjente ikke igjen boksen på utseendet etter en
474 kjapp titt på produktlista til selskapet.</p>
475
476 <p>I og med at boksen henger over veien E16, en riksvei vedlikeholdt
477 av Statens Vegvesen, så antok jeg at det burde være mulig å bruke
478 REST-API-et som gir tilgang til vegvesenets database over veier,
479 skilter og annet veirelatert til å finne ut hva i alle dager dette
480 kunne være. De har både
481 <a href="https://www.vegvesen.no/nvdb/api/dokumentasjon/datakatalog">en
482 datakatalog</a> og
483 <a href="https://www.vegvesen.no/nvdb/api/dokumentasjon/sok">et
484 søk</a>, der en kan søke etter ulike typer oppføringer innen for et
485 gitt geografisk område. Jeg laget et enkelt shell-script for å hente
486 ut antall av en gitt type innenfor området skibrua dekker, og listet
487 opp navnet på typene som ble funnet. Orket ikke slå opp hvordan
488 URL-koding av aktuelle strenger kunne gjøres mer generisk, og brukte
489 en stygg sed-linje i stedet.</p>
490
491 <blockquote><pre>
492 #!/bin/sh
493 urlmap() {
494 sed \
495 -e 's/ / /g' -e 's/{/%7B/g' \
496 -e 's/}/%7D/g' -e 's/\[/%5B/g' \
497 -e 's/\]/%5D/g' -e 's/ /%20/g' \
498 -e 's/,/%2C/g' -e 's/\"/%22/g' \
499 -e 's/:/%3A/g'
500 }
501
502 lookup() {
503 url="$1"
504 curl -s -H 'Accept: application/vnd.vegvesen.nvdb-v1+xml' \
505 "https://www.vegvesen.no/nvdb/api$url" | xmllint --format -
506 }
507
508 for id in $(seq 1 874) ; do
509 search="{
510 lokasjon: {
511 bbox: \"10.34425,59.96386,10.34458,59.96409\",
512 srid: \"WGS84\"
513 },
514 objektTyper: [{
515 id: $id, antall: 10
516 }]
517 }"
518
519 query=/sok?kriterie=$(echo $search | urlmap)
520 if lookup "$query" |
521 grep -q '&lt;totaltAntallReturnert>0&lt;'
522 then
523 :
524 else
525 echo $id
526 lookup "/datakatalog/objekttyper/$id" |grep '^ &lt;navn>'
527 fi
528 done
529
530 exit 0
531 </pre></blockquote>
532
533 Aktuelt ID-område 1-874 var riktig i datakatalogen da jeg laget
534 scriptet. Det vil endre seg over tid. Skriptet listet så opp
535 aktuelle typer i og rundt skibrua:
536
537 <blockquote><pre>
538 5
539 &lt;navn>Rekkverk&lt;/navn>
540 14
541 &lt;navn>Rekkverksende&lt;/navn>
542 47
543 &lt;navn>Trafikklomme&lt;/navn>
544 49
545 &lt;navn>Trafikkøy&lt;/navn>
546 60
547 &lt;navn>Bru&lt;/navn>
548 79
549 &lt;navn>Stikkrenne/Kulvert&lt;/navn>
550 80
551 &lt;navn>Grøft, åpen&lt;/navn>
552 86
553 &lt;navn>Belysningsstrekning&lt;/navn>
554 95
555 &lt;navn>Skiltpunkt&lt;/navn>
556 96
557 &lt;navn>Skiltplate&lt;/navn>
558 98
559 &lt;navn>Referansestolpe&lt;/navn>
560 99
561 &lt;navn>Vegoppmerking, langsgående&lt;/navn>
562 105
563 &lt;navn>Fartsgrense&lt;/navn>
564 106
565 &lt;navn>Vinterdriftsstrategi&lt;/navn>
566 172
567 &lt;navn>Trafikkdeler&lt;/navn>
568 241
569 &lt;navn>Vegdekke&lt;/navn>
570 293
571 &lt;navn>Breddemåling&lt;/navn>
572 301
573 &lt;navn>Kantklippareal&lt;/navn>
574 318
575 &lt;navn>Snø-/isrydding&lt;/navn>
576 445
577 &lt;navn>Skred&lt;/navn>
578 446
579 &lt;navn>Dokumentasjon&lt;/navn>
580 452
581 &lt;navn>Undergang&lt;/navn>
582 528
583 &lt;navn>Tverrprofil&lt;/navn>
584 532
585 &lt;navn>Vegreferanse&lt;/navn>
586 534
587 &lt;navn>Region&lt;/navn>
588 535
589 &lt;navn>Fylke&lt;/navn>
590 536
591 &lt;navn>Kommune&lt;/navn>
592 538
593 &lt;navn>Gate&lt;/navn>
594 539
595 &lt;navn>Transportlenke&lt;/navn>
596 540
597 &lt;navn>Trafikkmengde&lt;/navn>
598 570
599 &lt;navn>Trafikkulykke&lt;/navn>
600 571
601 &lt;navn>Ulykkesinvolvert enhet&lt;/navn>
602 572
603 &lt;navn>Ulykkesinvolvert person&lt;/navn>
604 579
605 &lt;navn>Politidistrikt&lt;/navn>
606 583
607 &lt;navn>Vegbredde&lt;/navn>
608 591
609 &lt;navn>Høydebegrensning&lt;/navn>
610 592
611 &lt;navn>Nedbøyningsmåling&lt;/navn>
612 597
613 &lt;navn>Støy-luft, Strekningsdata&lt;/navn>
614 601
615 &lt;navn>Oppgravingsdata&lt;/navn>
616 602
617 &lt;navn>Oppgravingslag&lt;/navn>
618 603
619 &lt;navn>PMS-parsell&lt;/navn>
620 604
621 &lt;navn>Vegnormalstrekning&lt;/navn>
622 605
623 &lt;navn>Værrelatert strekning&lt;/navn>
624 616
625 &lt;navn>Feltstrekning&lt;/navn>
626 617
627 &lt;navn>Adressepunkt&lt;/navn>
628 626
629 &lt;navn>Friksjonsmåleserie&lt;/navn>
630 629
631 &lt;navn>Vegdekke, flatelapping&lt;/navn>
632 639
633 &lt;navn>Kurvatur, horisontalelement&lt;/navn>
634 640
635 &lt;navn>Kurvatur, vertikalelement&lt;/navn>
636 642
637 &lt;navn>Kurvatur, vertikalpunkt&lt;/navn>
638 643
639 &lt;navn>Statistikk, trafikkmengde&lt;/navn>
640 647
641 &lt;navn>Statistikk, vegbredde&lt;/navn>
642 774
643 &lt;navn>Nedbøyningsmåleserie&lt;/navn>
644 775
645 &lt;navn>ATK, influensstrekning&lt;/navn>
646 794
647 &lt;navn>Systemobjekt&lt;/navn>
648 810
649 &lt;navn>Vinterdriftsklasse&lt;/navn>
650 821
651 &lt;navn>Funksjonell vegklasse&lt;/navn>
652 825
653 &lt;navn>Kurvatur, stigning&lt;/navn>
654 838
655 &lt;navn>Vegbredde, beregnet&lt;/navn>
656 862
657 &lt;navn>Reisetidsregistreringspunkt&lt;/navn>
658 871
659 &lt;navn>Bruksklasse&lt;/navn>
660 </pre></blockquote>
661
662 <p>Av disse ser ID 775 og 862 mest relevant ut. ID 775 antar jeg
663 refererer til fotoboksen som står like ved brua, mens
664 «Reisetidsregistreringspunkt» kanskje kan være boksen som henger der.
665 Hvordan finner jeg så ut hva dette kan være for noe. En titt på
666 <a href="http://labs.vegdata.no/nvdb-datakatalog/862-Reisetidsregistreringspunkt/">datakatalogsiden
667 for ID 862/Reisetidsregistreringspunkt</a> viser at det er finnes 53
668 slike målere i Norge, og hvor de er plassert, men gir ellers få
669 detaljer. Det er plassert 40 på østlandet og 13 i Trondheimsregionen.
670 Men siden nevner «AutoPASS», og hvis en slår opp oppføringen på
671 Sollihøgda nevner den «Ciber AS» som ID for eksternt system. (Kan det
672 være snakk om
673 <a href="http://www.proff.no/selskap/ciber-norge-as/oslo/internettdesign-og-programmering/Z0I3KMF4/">Ciber
674 Norge AS</a>, et selskap eid av Ciber Europe Bv?) Et nettsøk på
675 «Ciber AS autopass» fører meg til en artikkel fra NRK Trøndelag i
676 2013 med tittel
677 «<a href="http://www.nrk.no/trondelag/sjekk-dette-hvis-du-vil-unnga-ko-1.11327947">Sjekk
678 dette hvis du vil unngå kø</a>». Artikkelen henviser til vegvesenets
679 nettside
680 <a href="http://www.reisetider.no/reisetid/forside.html">reisetider.no</a>
681 som har en
682 <a href="http://www.reisetider.no/reisetid/omrade.html?omrade=5">kartside
683 for Østlandet</a> som viser at det måles mellom Sandvika og Sollihøgda.
684 Det kan dermed se ut til at jeg har funnet ut hva boksene gjør.</p>
685
686 <p>Hvis det stemmer, så er dette bokser som leser av AutoPASS-ID-en
687 til alle passerende biler med AutoPASS-brikke, og dermed gjør det mulig
688 for de som kontrollerer boksene å holde rede på hvor en gitt bil er
689 når den passerte et slikt målepunkt. NRK-artikkelen forteller at
690 denne informasjonen i dag kun brukes til å koble to
691 AutoPASS-brikkepasseringer passeringer sammen for å beregne
692 reisetiden, og at bruken er godkjent av Datatilsynet. Det er desverre
693 ikke mulig for en sjåfør som passerer under en slik boks å kontrollere
694 at AutoPASS-ID-en kun brukes til dette i dag og i fremtiden.</p>
695
696 <p>I tillegg til denne type AutoPASS-sniffere vet jeg at det også
697 finnes mange automatiske stasjoner som tar betalt pr. passering (aka
698 bomstasjoner), og der lagres informasjon om tid, sted og bilnummer i
699 10 år. Finnes det andre slike sniffere plassert ut på veiene?</p>
700
701 <p>Personlig har jeg valgt å ikke bruke AutoPASS-brikke, for å gjøre
702 det vanskeligere og mer kostbart for de som vil invadere privatsfæren
703 og holde rede på hvor bilen min beveger seg til enhver tid. Jeg håper
704 flere vil gjøre det samme, selv om det gir litt høyere private
705 utgifter (dyrere bompassering). Vern om privatsfæren koster i disse
706 dager.</p>
707
708 <p>Takk til Jan Kristian Jensen i Statens Vegvesen for tips om
709 dokumentasjon på vegvesenets REST-API.</p>
710 </div>
711 <div class="tags">
712
713
714 Tags: <a href="http://people.skolelinux.org/pere/blog/tags/kart">kart</a>, <a href="http://people.skolelinux.org/pere/blog/tags/norsk">norsk</a>, <a href="http://people.skolelinux.org/pere/blog/tags/personvern">personvern</a>, <a href="http://people.skolelinux.org/pere/blog/tags/rfid">rfid</a>, <a href="http://people.skolelinux.org/pere/blog/tags/surveillance">surveillance</a>.
715
716
717 </div>
718 </div>
719 <div class="padding"></div>
720
721 <div class="entry">
722 <div class="title"><a href="http://people.skolelinux.org/pere/blog/Speeding_up_the_Debian_installer_using_eatmydata_and_dpkg_divert.html">Speeding up the Debian installer using eatmydata and dpkg-divert</a></div>
723 <div class="date">16th September 2014</div>
724 <div class="body"><p>The <a href="https://www.debian.org/">Debian</a> installer could be
725 a lot quicker. When we install more than 2000 packages in
726 <a href="http://www.skolelinux.org/">Skolelinux / Debian Edu</a> using
727 tasksel in the installer, unpacking the binary packages take forever.
728 A part of the slow I/O issue was discussed in
729 <a href="https://bugs.debian.org/613428">bug #613428</a> about too
730 much file system sync-ing done by dpkg, which is the package
731 responsible for unpacking the binary packages. Other parts (like code
732 executed by postinst scripts) might also sync to disk during
733 installation. All this sync-ing to disk do not really make sense to
734 me. If the machine crash half-way through, I start over, I do not try
735 to salvage the half installed system. So the failure sync-ing is
736 supposed to protect against, hardware or system crash, is not really
737 relevant while the installer is running.</p>
738
739 <p>A few days ago, I thought of a way to get rid of all the file
740 system sync()-ing in a fairly non-intrusive way, without the need to
741 change the code in several packages. The idea is not new, but I have
742 not heard anyone propose the approach using dpkg-divert before. It
743 depend on the small and clever package
744 <a href="https://packages.qa.debian.org/eatmydata">eatmydata</a>, which
745 uses LD_PRELOAD to replace the system functions for syncing data to
746 disk with functions doing nothing, thus allowing programs to live
747 dangerous while speeding up disk I/O significantly. Instead of
748 modifying the implementation of dpkg, apt and tasksel (which are the
749 packages responsible for selecting, fetching and installing packages),
750 it occurred to me that we could just divert the programs away, replace
751 them with a simple shell wrapper calling
752 "eatmydata&nbsp;$program&nbsp;$@", to get the same effect.
753 Two days ago I decided to test the idea, and wrapped up a simple
754 implementation for the Debian Edu udeb.</p>
755
756 <p>The effect was stunning. In my first test it reduced the running
757 time of the pkgsel step (installing tasks) from 64 to less than 44
758 minutes (20 minutes shaved off the installation) on an old Dell
759 Latitude D505 machine. I am not quite sure what the optimised time
760 would have been, as I messed up the testing a bit, causing the debconf
761 priority to get low enough for two questions to pop up during
762 installation. As soon as I saw the questions I moved the installation
763 along, but do not know how long the question were holding up the
764 installation. I did some more measurements using Debian Edu Jessie,
765 and got these results. The time measured is the time stamp in
766 /var/log/syslog between the "pkgsel: starting tasksel" and the
767 "pkgsel: finishing up" lines, if you want to do the same measurement
768 yourself. In Debian Edu, the tasksel dialog do not show up, and the
769 timing thus do not depend on how quickly the user handle the tasksel
770 dialog.</p>
771
772 <p><table>
773
774 <tr>
775 <th>Machine/setup</th>
776 <th>Original tasksel</th>
777 <th>Optimised tasksel</th>
778 <th>Reduction</th>
779 </tr>
780
781 <tr>
782 <td>Latitude D505 Main+LTSP LXDE</td>
783 <td>64 min (07:46-08:50)</td>
784 <td><44 min (11:27-12:11)</td>
785 <td>>20 min 18%</td>
786 </tr>
787
788 <tr>
789 <td>Latitude D505 Roaming LXDE</td>
790 <td>57 min (08:48-09:45)</td>
791 <td>34 min (07:43-08:17)</td>
792 <td>23 min 40%</td>
793 </tr>
794
795 <tr>
796 <td>Latitude D505 Minimal</td>
797 <td>22 min (10:37-10:59)</td>
798 <td>11 min (11:16-11:27)</td>
799 <td>11 min 50%</td>
800 </tr>
801
802 <tr>
803 <td>Thinkpad X200 Minimal</td>
804 <td>6 min (08:19-08:25)</td>
805 <td>4 min (08:04-08:08)</td>
806 <td>2 min 33%</td>
807 </tr>
808
809 <tr>
810 <td>Thinkpad X200 Roaming KDE</td>
811 <td>19 min (09:21-09:40)</td>
812 <td>15 min (10:25-10:40)</td>
813 <td>4 min 21%</td>
814 </tr>
815
816 </table></p>
817
818 <p>The test is done using a netinst ISO on a USB stick, so some of the
819 time is spent downloading packages. The connection to the Internet
820 was 100Mbit/s during testing, so downloading should not be a
821 significant factor in the measurement. Download typically took a few
822 seconds to a few minutes, depending on the amount of packages being
823 installed.</p>
824
825 <p>The speedup is implemented by using two hooks in
826 <a href="https://www.debian.org/devel/debian-installer/">Debian
827 Installer</a>, the pre-pkgsel.d hook to set up the diverts, and the
828 finish-install.d hook to remove the divert at the end of the
829 installation. I picked the pre-pkgsel.d hook instead of the
830 post-base-installer.d hook because I test using an ISO without the
831 eatmydata package included, and the post-base-installer.d hook in
832 Debian Edu can only operate on packages included in the ISO. The
833 negative effect of this is that I am unable to activate this
834 optimization for the kernel installation step in d-i. If the code is
835 moved to the post-base-installer.d hook, the speedup would be larger
836 for the entire installation.</p>
837
838 <p>I've implemented this in the
839 <a href="https://packages.qa.debian.org/debian-edu-install">debian-edu-install</a>
840 git repository, and plan to provide the optimization as part of the
841 Debian Edu installation. If you want to test this yourself, you can
842 create two files in the installer (or in an udeb). One shell script
843 need do go into /usr/lib/pre-pkgsel.d/, with content like this:</p>
844
845 <p><blockquote><pre>
846 #!/bin/sh
847 set -e
848 . /usr/share/debconf/confmodule
849 info() {
850 logger -t my-pkgsel "info: $*"
851 }
852 error() {
853 logger -t my-pkgsel "error: $*"
854 }
855 override_install() {
856 apt-install eatmydata || true
857 if [ -x /target/usr/bin/eatmydata ] ; then
858 for bin in dpkg apt-get aptitude tasksel ; do
859 file=/usr/bin/$bin
860 # Test that the file exist and have not been diverted already.
861 if [ -f /target$file ] ; then
862 info "diverting $file using eatmydata"
863 printf "#!/bin/sh\neatmydata $bin.distrib \"\$@\"\n" \
864 > /target$file.edu
865 chmod 755 /target$file.edu
866 in-target dpkg-divert --package debian-edu-config \
867 --rename --quiet --add $file
868 ln -sf ./$bin.edu /target$file
869 else
870 error "unable to divert $file, as it is missing."
871 fi
872 done
873 else
874 error "unable to find /usr/bin/eatmydata after installing the eatmydata pacage"
875 fi
876 }
877
878 override_install
879 </pre></blockquote></p>
880
881 <p>To clean up, another shell script should go into
882 /usr/lib/finish-install.d/ with code like this:
883
884 <p><blockquote><pre>
885 #! /bin/sh -e
886 . /usr/share/debconf/confmodule
887 error() {
888 logger -t my-finish-install "error: $@"
889 }
890 remove_install_override() {
891 for bin in dpkg apt-get aptitude tasksel ; do
892 file=/usr/bin/$bin
893 if [ -x /target$file.edu ] ; then
894 rm /target$file
895 in-target dpkg-divert --package debian-edu-config \
896 --rename --quiet --remove $file
897 rm /target$file.edu
898 else
899 error "Missing divert for $file."
900 fi
901 done
902 sync # Flush file buffers before continuing
903 }
904
905 remove_install_override
906 </pre></blockquote></p>
907
908 <p>In Debian Edu, I placed both code fragments in a separate script
909 edu-eatmydata-install and call it from the pre-pkgsel.d and
910 finish-install.d scripts.</p>
911
912 <p>By now you might ask if this change should get into the normal
913 Debian installer too? I suspect it should, but am not sure the
914 current debian-installer coordinators find it useful enough. It also
915 depend on the side effects of the change. I'm not aware of any, but I
916 guess we will see if the change is safe after some more testing.
917 Perhaps there is some package in Debian depending on sync() and
918 fsync() having effect? Perhaps it should go into its own udeb, to
919 allow those of us wanting to enable it to do so without affecting
920 everyone.</p>
921
922 <p>Update 2014-09-24: Since a few days ago, enabling this optimization
923 will break installation of all programs using gnutls because of
924 <a href="https://bugs.debian.org/702711">bug #702711</a>. An updated
925 eatmydata package in Debian will solve it.</p>
926
927 <p>Update 2014-10-17: The bug mentioned above is fixed in testing and
928 the optimization work again. And I have discovered that the
929 dpkg-divert trick is not really needed and implemented a slightly
930 simpler approach as part of the debian-edu-install package. See
931 tools/edu-eatmydata-install in the source package.</p>
932 </div>
933 <div class="tags">
934
935
936 Tags: <a href="http://people.skolelinux.org/pere/blog/tags/debian">debian</a>, <a href="http://people.skolelinux.org/pere/blog/tags/debian edu">debian edu</a>, <a href="http://people.skolelinux.org/pere/blog/tags/english">english</a>.
937
938
939 </div>
940 </div>
941 <div class="padding"></div>
942
943 <div class="entry">
944 <div class="title"><a href="http://people.skolelinux.org/pere/blog/Good_bye_subkeys_pgp_net__welcome_pool_sks_keyservers_net.html">Good bye subkeys.pgp.net, welcome pool.sks-keyservers.net</a></div>
945 <div class="date">10th September 2014</div>
946 <div class="body"><p>Yesterday, I had the pleasure of attending a talk with the
947 <a href="http://www.nuug.no/">Norwegian Unix User Group</a> about
948 <a href="http://www.nuug.no/aktiviteter/20140909-sks-keyservers/">the
949 OpenPGP keyserver pool sks-keyservers.net</a>, and was very happy to
950 learn that there is a large set of publicly available key servers to
951 use when looking for peoples public key. So far I have used
952 subkeys.pgp.net, and some times wwwkeys.nl.pgp.net when the former
953 were misbehaving, but those days are ended. The servers I have used
954 up until yesterday have been slow and some times unavailable. I hope
955 those problems are gone now.</p>
956
957 <p>Behind the round robin DNS entry of the
958 <a href="https://sks-keyservers.net/">sks-keyservers.net</a> service
959 there is a pool of more than 100 keyservers which are checked every
960 day to ensure they are well connected and up to date. It must be
961 better than what I have used so far. :)</p>
962
963 <p>Yesterdays speaker told me that the service is the default
964 keyserver provided by the default configuration in GnuPG, but this do
965 not seem to be used in Debian. Perhaps it should?</p>
966
967 <p>Anyway, I've updated my ~/.gnupg/options file to now include this
968 line:</p>
969
970 <p><blockquote><pre>
971 keyserver pool.sks-keyservers.net
972 </pre></blockquote></p>
973
974 <p>With GnuPG version 2 one can also locate the keyserver using SRV
975 entries in DNS. Just for fun, I did just that at work, so now every
976 user of GnuPG at the University of Oslo should find a OpenGPG
977 keyserver automatically should their need it:</p>
978
979 <p><blockquote><pre>
980 % host -t srv _pgpkey-http._tcp.uio.no
981 _pgpkey-http._tcp.uio.no has SRV record 0 100 11371 pool.sks-keyservers.net.
982 %
983 </pre></blockquote></p>
984
985 <p>Now if only
986 <a href="http://ietfreport.isoc.org/idref/draft-shaw-openpgp-hkp/">the
987 HKP lookup protocol</a> supported finding signature paths, I would be
988 very happy. It can look up a given key or search for a user ID, but I
989 normally do not want that, but to find a trust path from my key to
990 another key. Given a user ID or key ID, I would like to find (and
991 download) the keys representing a signature path from my key to the
992 key in question, to be able to get a trust path between the two keys.
993 This is as far as I can tell not possible today. Perhaps something
994 for a future version of the protocol?</p>
995 </div>
996 <div class="tags">
997
998
999 Tags: <a href="http://people.skolelinux.org/pere/blog/tags/debian">debian</a>, <a href="http://people.skolelinux.org/pere/blog/tags/english">english</a>, <a href="http://people.skolelinux.org/pere/blog/tags/personvern">personvern</a>, <a href="http://people.skolelinux.org/pere/blog/tags/sikkerhet">sikkerhet</a>.
1000
1001
1002 </div>
1003 </div>
1004 <div class="padding"></div>
1005
1006 <p style="text-align: right;"><a href="index.rss"><img src="http://people.skolelinux.org/pere/blog/xml.gif" alt="RSS feed" width="36" height="14" /></a></p>
1007 <div id="sidebar">
1008
1009
1010
1011 <h2>Archive</h2>
1012 <ul>
1013
1014 <li>2014
1015 <ul>
1016
1017 <li><a href="http://people.skolelinux.org/pere/blog/archive/2014/01/">January (2)</a></li>
1018
1019 <li><a href="http://people.skolelinux.org/pere/blog/archive/2014/02/">February (3)</a></li>
1020
1021 <li><a href="http://people.skolelinux.org/pere/blog/archive/2014/03/">March (8)</a></li>
1022
1023 <li><a href="http://people.skolelinux.org/pere/blog/archive/2014/04/">April (7)</a></li>
1024
1025 <li><a href="http://people.skolelinux.org/pere/blog/archive/2014/05/">May (1)</a></li>
1026
1027 <li><a href="http://people.skolelinux.org/pere/blog/archive/2014/06/">June (2)</a></li>
1028
1029 <li><a href="http://people.skolelinux.org/pere/blog/archive/2014/07/">July (2)</a></li>
1030
1031 <li><a href="http://people.skolelinux.org/pere/blog/archive/2014/08/">August (2)</a></li>
1032
1033 <li><a href="http://people.skolelinux.org/pere/blog/archive/2014/09/">September (5)</a></li>
1034
1035 <li><a href="http://people.skolelinux.org/pere/blog/archive/2014/10/">October (5)</a></li>
1036
1037 </ul></li>
1038
1039 <li>2013
1040 <ul>
1041
1042 <li><a href="http://people.skolelinux.org/pere/blog/archive/2013/01/">January (11)</a></li>
1043
1044 <li><a href="http://people.skolelinux.org/pere/blog/archive/2013/02/">February (9)</a></li>
1045
1046 <li><a href="http://people.skolelinux.org/pere/blog/archive/2013/03/">March (9)</a></li>
1047
1048 <li><a href="http://people.skolelinux.org/pere/blog/archive/2013/04/">April (6)</a></li>
1049
1050 <li><a href="http://people.skolelinux.org/pere/blog/archive/2013/05/">May (9)</a></li>
1051
1052 <li><a href="http://people.skolelinux.org/pere/blog/archive/2013/06/">June (10)</a></li>
1053
1054 <li><a href="http://people.skolelinux.org/pere/blog/archive/2013/07/">July (7)</a></li>
1055
1056 <li><a href="http://people.skolelinux.org/pere/blog/archive/2013/08/">August (3)</a></li>
1057
1058 <li><a href="http://people.skolelinux.org/pere/blog/archive/2013/09/">September (5)</a></li>
1059
1060 <li><a href="http://people.skolelinux.org/pere/blog/archive/2013/10/">October (7)</a></li>
1061
1062 <li><a href="http://people.skolelinux.org/pere/blog/archive/2013/11/">November (9)</a></li>
1063
1064 <li><a href="http://people.skolelinux.org/pere/blog/archive/2013/12/">December (3)</a></li>
1065
1066 </ul></li>
1067
1068 <li>2012
1069 <ul>
1070
1071 <li><a href="http://people.skolelinux.org/pere/blog/archive/2012/01/">January (7)</a></li>
1072
1073 <li><a href="http://people.skolelinux.org/pere/blog/archive/2012/02/">February (10)</a></li>
1074
1075 <li><a href="http://people.skolelinux.org/pere/blog/archive/2012/03/">March (17)</a></li>
1076
1077 <li><a href="http://people.skolelinux.org/pere/blog/archive/2012/04/">April (12)</a></li>
1078
1079 <li><a href="http://people.skolelinux.org/pere/blog/archive/2012/05/">May (12)</a></li>
1080
1081 <li><a href="http://people.skolelinux.org/pere/blog/archive/2012/06/">June (20)</a></li>
1082
1083 <li><a href="http://people.skolelinux.org/pere/blog/archive/2012/07/">July (17)</a></li>
1084
1085 <li><a href="http://people.skolelinux.org/pere/blog/archive/2012/08/">August (6)</a></li>
1086
1087 <li><a href="http://people.skolelinux.org/pere/blog/archive/2012/09/">September (9)</a></li>
1088
1089 <li><a href="http://people.skolelinux.org/pere/blog/archive/2012/10/">October (17)</a></li>
1090
1091 <li><a href="http://people.skolelinux.org/pere/blog/archive/2012/11/">November (10)</a></li>
1092
1093 <li><a href="http://people.skolelinux.org/pere/blog/archive/2012/12/">December (7)</a></li>
1094
1095 </ul></li>
1096
1097 <li>2011
1098 <ul>
1099
1100 <li><a href="http://people.skolelinux.org/pere/blog/archive/2011/01/">January (16)</a></li>
1101
1102 <li><a href="http://people.skolelinux.org/pere/blog/archive/2011/02/">February (6)</a></li>
1103
1104 <li><a href="http://people.skolelinux.org/pere/blog/archive/2011/03/">March (6)</a></li>
1105
1106 <li><a href="http://people.skolelinux.org/pere/blog/archive/2011/04/">April (7)</a></li>
1107
1108 <li><a href="http://people.skolelinux.org/pere/blog/archive/2011/05/">May (3)</a></li>
1109
1110 <li><a href="http://people.skolelinux.org/pere/blog/archive/2011/06/">June (2)</a></li>
1111
1112 <li><a href="http://people.skolelinux.org/pere/blog/archive/2011/07/">July (7)</a></li>
1113
1114 <li><a href="http://people.skolelinux.org/pere/blog/archive/2011/08/">August (6)</a></li>
1115
1116 <li><a href="http://people.skolelinux.org/pere/blog/archive/2011/09/">September (4)</a></li>
1117
1118 <li><a href="http://people.skolelinux.org/pere/blog/archive/2011/10/">October (2)</a></li>
1119
1120 <li><a href="http://people.skolelinux.org/pere/blog/archive/2011/11/">November (3)</a></li>
1121
1122 <li><a href="http://people.skolelinux.org/pere/blog/archive/2011/12/">December (1)</a></li>
1123
1124 </ul></li>
1125
1126 <li>2010
1127 <ul>
1128
1129 <li><a href="http://people.skolelinux.org/pere/blog/archive/2010/01/">January (2)</a></li>
1130
1131 <li><a href="http://people.skolelinux.org/pere/blog/archive/2010/02/">February (1)</a></li>
1132
1133 <li><a href="http://people.skolelinux.org/pere/blog/archive/2010/03/">March (3)</a></li>
1134
1135 <li><a href="http://people.skolelinux.org/pere/blog/archive/2010/04/">April (3)</a></li>
1136
1137 <li><a href="http://people.skolelinux.org/pere/blog/archive/2010/05/">May (9)</a></li>
1138
1139 <li><a href="http://people.skolelinux.org/pere/blog/archive/2010/06/">June (14)</a></li>
1140
1141 <li><a href="http://people.skolelinux.org/pere/blog/archive/2010/07/">July (12)</a></li>
1142
1143 <li><a href="http://people.skolelinux.org/pere/blog/archive/2010/08/">August (13)</a></li>
1144
1145 <li><a href="http://people.skolelinux.org/pere/blog/archive/2010/09/">September (7)</a></li>
1146
1147 <li><a href="http://people.skolelinux.org/pere/blog/archive/2010/10/">October (9)</a></li>
1148
1149 <li><a href="http://people.skolelinux.org/pere/blog/archive/2010/11/">November (13)</a></li>
1150
1151 <li><a href="http://people.skolelinux.org/pere/blog/archive/2010/12/">December (12)</a></li>
1152
1153 </ul></li>
1154
1155 <li>2009
1156 <ul>
1157
1158 <li><a href="http://people.skolelinux.org/pere/blog/archive/2009/01/">January (8)</a></li>
1159
1160 <li><a href="http://people.skolelinux.org/pere/blog/archive/2009/02/">February (8)</a></li>
1161
1162 <li><a href="http://people.skolelinux.org/pere/blog/archive/2009/03/">March (12)</a></li>
1163
1164 <li><a href="http://people.skolelinux.org/pere/blog/archive/2009/04/">April (10)</a></li>
1165
1166 <li><a href="http://people.skolelinux.org/pere/blog/archive/2009/05/">May (9)</a></li>
1167
1168 <li><a href="http://people.skolelinux.org/pere/blog/archive/2009/06/">June (3)</a></li>
1169
1170 <li><a href="http://people.skolelinux.org/pere/blog/archive/2009/07/">July (4)</a></li>
1171
1172 <li><a href="http://people.skolelinux.org/pere/blog/archive/2009/08/">August (3)</a></li>
1173
1174 <li><a href="http://people.skolelinux.org/pere/blog/archive/2009/09/">September (1)</a></li>
1175
1176 <li><a href="http://people.skolelinux.org/pere/blog/archive/2009/10/">October (2)</a></li>
1177
1178 <li><a href="http://people.skolelinux.org/pere/blog/archive/2009/11/">November (3)</a></li>
1179
1180 <li><a href="http://people.skolelinux.org/pere/blog/archive/2009/12/">December (3)</a></li>
1181
1182 </ul></li>
1183
1184 <li>2008
1185 <ul>
1186
1187 <li><a href="http://people.skolelinux.org/pere/blog/archive/2008/11/">November (5)</a></li>
1188
1189 <li><a href="http://people.skolelinux.org/pere/blog/archive/2008/12/">December (7)</a></li>
1190
1191 </ul></li>
1192
1193 </ul>
1194
1195
1196
1197 <h2>Tags</h2>
1198 <ul>
1199
1200 <li><a href="http://people.skolelinux.org/pere/blog/tags/3d-printer">3d-printer (13)</a></li>
1201
1202 <li><a href="http://people.skolelinux.org/pere/blog/tags/amiga">amiga (1)</a></li>
1203
1204 <li><a href="http://people.skolelinux.org/pere/blog/tags/aros">aros (1)</a></li>
1205
1206 <li><a href="http://people.skolelinux.org/pere/blog/tags/bankid">bankid (4)</a></li>
1207
1208 <li><a href="http://people.skolelinux.org/pere/blog/tags/bitcoin">bitcoin (8)</a></li>
1209
1210 <li><a href="http://people.skolelinux.org/pere/blog/tags/bootsystem">bootsystem (14)</a></li>
1211
1212 <li><a href="http://people.skolelinux.org/pere/blog/tags/bsa">bsa (2)</a></li>
1213
1214 <li><a href="http://people.skolelinux.org/pere/blog/tags/chrpath">chrpath (2)</a></li>
1215
1216 <li><a href="http://people.skolelinux.org/pere/blog/tags/debian">debian (107)</a></li>
1217
1218 <li><a href="http://people.skolelinux.org/pere/blog/tags/debian edu">debian edu (150)</a></li>
1219
1220 <li><a href="http://people.skolelinux.org/pere/blog/tags/digistan">digistan (10)</a></li>
1221
1222 <li><a href="http://people.skolelinux.org/pere/blog/tags/dld">dld (15)</a></li>
1223
1224 <li><a href="http://people.skolelinux.org/pere/blog/tags/docbook">docbook (12)</a></li>
1225
1226 <li><a href="http://people.skolelinux.org/pere/blog/tags/drivstoffpriser">drivstoffpriser (4)</a></li>
1227
1228 <li><a href="http://people.skolelinux.org/pere/blog/tags/english">english (260)</a></li>
1229
1230 <li><a href="http://people.skolelinux.org/pere/blog/tags/fiksgatami">fiksgatami (21)</a></li>
1231
1232 <li><a href="http://people.skolelinux.org/pere/blog/tags/fildeling">fildeling (12)</a></li>
1233
1234 <li><a href="http://people.skolelinux.org/pere/blog/tags/freeculture">freeculture (13)</a></li>
1235
1236 <li><a href="http://people.skolelinux.org/pere/blog/tags/freedombox">freedombox (8)</a></li>
1237
1238 <li><a href="http://people.skolelinux.org/pere/blog/tags/frikanalen">frikanalen (11)</a></li>
1239
1240 <li><a href="http://people.skolelinux.org/pere/blog/tags/intervju">intervju (41)</a></li>
1241
1242 <li><a href="http://people.skolelinux.org/pere/blog/tags/isenkram">isenkram (10)</a></li>
1243
1244 <li><a href="http://people.skolelinux.org/pere/blog/tags/kart">kart (19)</a></li>
1245
1246 <li><a href="http://people.skolelinux.org/pere/blog/tags/ldap">ldap (9)</a></li>
1247
1248 <li><a href="http://people.skolelinux.org/pere/blog/tags/lenker">lenker (8)</a></li>
1249
1250 <li><a href="http://people.skolelinux.org/pere/blog/tags/lsdvd">lsdvd (2)</a></li>
1251
1252 <li><a href="http://people.skolelinux.org/pere/blog/tags/ltsp">ltsp (1)</a></li>
1253
1254 <li><a href="http://people.skolelinux.org/pere/blog/tags/mesh network">mesh network (8)</a></li>
1255
1256 <li><a href="http://people.skolelinux.org/pere/blog/tags/multimedia">multimedia (31)</a></li>
1257
1258 <li><a href="http://people.skolelinux.org/pere/blog/tags/norsk">norsk (248)</a></li>
1259
1260 <li><a href="http://people.skolelinux.org/pere/blog/tags/nuug">nuug (163)</a></li>
1261
1262 <li><a href="http://people.skolelinux.org/pere/blog/tags/offentlig innsyn">offentlig innsyn (11)</a></li>
1263
1264 <li><a href="http://people.skolelinux.org/pere/blog/tags/open311">open311 (2)</a></li>
1265
1266 <li><a href="http://people.skolelinux.org/pere/blog/tags/opphavsrett">opphavsrett (48)</a></li>
1267
1268 <li><a href="http://people.skolelinux.org/pere/blog/tags/personvern">personvern (75)</a></li>
1269
1270 <li><a href="http://people.skolelinux.org/pere/blog/tags/raid">raid (1)</a></li>
1271
1272 <li><a href="http://people.skolelinux.org/pere/blog/tags/reactos">reactos (1)</a></li>
1273
1274 <li><a href="http://people.skolelinux.org/pere/blog/tags/reprap">reprap (11)</a></li>
1275
1276 <li><a href="http://people.skolelinux.org/pere/blog/tags/rfid">rfid (3)</a></li>
1277
1278 <li><a href="http://people.skolelinux.org/pere/blog/tags/robot">robot (9)</a></li>
1279
1280 <li><a href="http://people.skolelinux.org/pere/blog/tags/rss">rss (1)</a></li>
1281
1282 <li><a href="http://people.skolelinux.org/pere/blog/tags/ruter">ruter (4)</a></li>
1283
1284 <li><a href="http://people.skolelinux.org/pere/blog/tags/scraperwiki">scraperwiki (2)</a></li>
1285
1286 <li><a href="http://people.skolelinux.org/pere/blog/tags/sikkerhet">sikkerhet (41)</a></li>
1287
1288 <li><a href="http://people.skolelinux.org/pere/blog/tags/sitesummary">sitesummary (4)</a></li>
1289
1290 <li><a href="http://people.skolelinux.org/pere/blog/tags/skepsis">skepsis (4)</a></li>
1291
1292 <li><a href="http://people.skolelinux.org/pere/blog/tags/standard">standard (45)</a></li>
1293
1294 <li><a href="http://people.skolelinux.org/pere/blog/tags/stavekontroll">stavekontroll (3)</a></li>
1295
1296 <li><a href="http://people.skolelinux.org/pere/blog/tags/stortinget">stortinget (9)</a></li>
1297
1298 <li><a href="http://people.skolelinux.org/pere/blog/tags/surveillance">surveillance (26)</a></li>
1299
1300 <li><a href="http://people.skolelinux.org/pere/blog/tags/sysadmin">sysadmin (2)</a></li>
1301
1302 <li><a href="http://people.skolelinux.org/pere/blog/tags/valg">valg (8)</a></li>
1303
1304 <li><a href="http://people.skolelinux.org/pere/blog/tags/video">video (44)</a></li>
1305
1306 <li><a href="http://people.skolelinux.org/pere/blog/tags/vitenskap">vitenskap (4)</a></li>
1307
1308 <li><a href="http://people.skolelinux.org/pere/blog/tags/web">web (33)</a></li>
1309
1310 </ul>
1311
1312
1313 </div>
1314 <p style="text-align: right">
1315 Created by <a href="http://steve.org.uk/Software/chronicle">Chronicle v4.6</a>
1316 </p>
1317
1318 </body>
1319 </html>