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