1 <!DOCTYPE html PUBLIC
"-//W3C//DTD XHTML 1.0 Strict//EN"
2 "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
3 <html xmlns=
"http://www.w3.org/1999/xhtml" dir=
"ltr">
5 <meta http-equiv=
"Content-Type" content=
"text/html;charset=utf-8" />
6 <title>Petter Reinholdtsen
</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" />
14 <a href=
"http://people.skolelinux.org/pere/blog/">Petter Reinholdtsen
</a>
23 <div class=
"title"><a href=
"http://people.skolelinux.org/pere/blog/Coz_can_help_you_find_bottlenecks_in_multi_threaded_software___nice_free_software.html">Coz can help you find bottlenecks in multi-threaded software - nice free software
</a></div>
24 <div class=
"date">11th August
2016</div>
25 <div class=
"body"><p>This summer, I read a great article
26 "
<a href=
"https://www.usenix.org/publications/login/summer2016/curtsinger">coz:
27 This Is the Profiler You're Looking For
</a>" in USENIX ;login: about
28 how to profile multi-threaded programs. It presented a system for
29 profiling software by running experiences in the running program,
30 testing how run time performance is affected by "speeding up
" parts of
31 the code to various degrees compared to a normal run. It does this by
32 slowing down parallel threads while the "faster up
" code is running
33 and measure how this affect processing time. The processing time is
34 measured using probes inserted into the code, either using progress
35 counters (COZ_PROGRESS) or as latency meters (COZ_BEGIN/COZ_END). It
36 can also measure unmodified code by measuring complete the program
37 runtime and running the program several times instead.</p>
39 <p>The project and presentation was so inspiring that I would like to
40 get the system into Debian. I
41 <a href="https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=
830708">created
42 a WNPP request for it</a> and contacted upstream to try to make the
43 system ready for Debian by sending patches. The build process need to
44 be changed a bit to avoid running 'git clone' to get dependencies, and
45 to include the JavaScript web page used to visualize the collected
46 profiling information included in the source package.
47 But I expect that should work out fairly soon.</p>
49 <p>The way the system work is fairly simple. To run an coz experiment
50 on a binary with debug symbols available, start the program like this:
53 coz run --- program-to-run
54 </pre></blockquote></p>
56 <p>This will create a text file profile.coz with the instrumentation
57 information. To show what part of the code affect the performance
58 most, use a web browser and either point it to
59 <a href="http://plasma-umass.github.io/coz/
">http://plasma-umass.github.io/coz/</a>
60 or use the copy from git (in the gh-pages branch). Check out this web
61 site to have a look at several example profiling runs and get an idea what the end result from the profile runs look like. To make the
62 profiling more useful you include <coz.h> and insert the
63 COZ_PROGRESS or COZ_BEGIN and COZ_END at appropriate places in the
64 code, rebuild and run the profiler. This allow coz to do more
65 targeted experiments.</p>
67 <p>A video published by ACM
68 <a href="https://www.youtube.com/watch?v=jE0V-p1odPg
">presenting the
69 Coz profiler</a> is available from Youtube. There is also a paper
70 from the 25th Symposium on Operating Systems Principles available
72 <a href="https://www.usenix.org/conference/atc16/technical-sessions/presentation/curtsinger
">Coz:
73 finding code that counts with causal profiling</a>.</p>
75 <p><a href="https://github.com/plasma-umass/coz
">The source code</a>
76 for Coz is available from github. It will only build with clang
78 <a href="https://gcc.gnu.org/bugzilla/show_bug.cgi?id=
55606">C++
79 feature missing in GCC</a>, but I've submitted
80 <a href="https://github.com/plasma-umass/coz/pull/
67">a patch to solve
81 it</a> and hope it will be included in the upstream source soon.</p>
83 <p>Please get in touch if you, like me, would like to see this piece
84 of software in Debian. I would very much like some help with the
85 packaging effort, as I lack the in depth knowledge on how to package
91 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/nice free software
">nice free software</a>.
96 <div class="padding
"></div>
99 <div class="title
"><a href="http://people.skolelinux.org/pere/blog/Sales_number_for_the_Free_Culture_translation__first_half_of_2016.html
">Sales number for the Free Culture translation, first half of 2016</a></div>
100 <div class="date
"> 5th August 2016</div>
101 <div class="body
"><p>As my regular readers probably remember, the last year I published
102 a French and Norwegian translation of the classic
103 <a href="http://www.free-culture.cc/
">Free Culture book</a> by the
104 founder of the Creative Commons movement, Lawrence Lessig. A bit less
105 known is the fact that due to the way I created the translations,
106 using docbook and po4a, I also recreated the English original. And
107 because I already had created a new the PDF edition, I published it
108 too. The revenue from the books are sent to the Creative Commons
109 Corporation. In other words, I do not earn any money from this
110 project, I just earn the warm fuzzy feeling that the text is available
111 for a wider audience and more people can learn why the Creative
112 Commons is needed.</p>
114 <p>Today, just for fun, I had a look at the sales number over at
115 Lulu.com, which take care of payment, printing and shipping. Much to
116 my surprise, the English edition is selling better than both the
117 French and Norwegian edition, despite the fact that it has been
118 available in English since it was first published. In total, 24 paper
119 books was sold for USD $19.99 between 2016-01-01 and 2016-07-31:</p>
122 <tr><th>Title / language</th><th>Quantity</th></tr>
123 <tr><td><a href="http://www.lulu.com/shop/lawrence-lessig/culture-libre/paperback/product-
22645082.html
">Culture Libre / French</a></td><td align="right
">3</td></tr>
124 <tr><td><a href="http://www.lulu.com/shop/lawrence-lessig/fri-kultur/paperback/product-
22441576.html
">Fri kultur / Norwegian</a></td><td align="right
">7</td></tr>
125 <tr><td><a href="http://www.lulu.com/shop/lawrence-lessig/free-culture/paperback/product-
22440520.html
">Free Culture / English</a></td><td align="right
">14</td></tr>
128 <p>The books are available both from Lulu.com and from large book
129 stores like Amazon and Barnes&Noble. Most revenue, around $10 per
130 book, is sent to the Creative Commons project when the book is sold
131 directly by Lulu.com. The other channels give less revenue. The
132 summary from Lulu tell me 10 books was sold via the Amazon channel, 10
133 via Ingram (what is this?) and 4 directly by Lulu. And Lulu.com tells
134 me that the revenue sent so far this year is USD $101.42. No idea
135 what kind of sales numbers to expect, so I do not know if that is a
136 good amount of sales for a 10 year old book or not. But it make me
137 happy that the buyers find the book, and I hope they enjoy reading it
138 as much as I did.</p>
140 <p>The ebook edition is available for free from
141 <a href="https://github.com/petterreinholdtsen/free-culture-lessig
">Github</a>.</p>
143 <p>If you would like to translate and publish the book in your native
144 language, I would be happy to help make it happen. Please get in
150 Tags: <a href="http://people.skolelinux.org/pere/blog/tags/docbook
">docbook</a>, <a href="http://people.skolelinux.org/pere/blog/tags/english
">english</a>, <a href="http://people.skolelinux.org/pere/blog/tags/freeculture
">freeculture</a>.
155 <div class="padding
"></div>
158 <div class="title
"><a href="http://people.skolelinux.org/pere/blog/Vitenskapen_tar_som_vanlig_feil_igjen___relativt_feil.html
">Vitenskapen tar som vanlig feil igjen - relativt feil</a></div>
159 <div class="date
"> 1st August 2016</div>
160 <div class="body
"><p>For mange år siden leste jeg en klassisk tekst som gjorde såpass
161 inntrykk på meg at jeg husker den fortsatt, flere år senere, og bruker
162 argumentene fra den stadig vekk. Teksten var «The Relativity of
163 Wrong» som Isaac Asimov publiserte i Skeptical Inquirer i 1989. Den
164 gir litt perspektiv rundt formidlingen av vitenskapelige resultater.
165 Jeg har hatt lyst til å kunne dele den også med folk som ikke
166 behersker engelsk så godt, som barn og noen av mine eldre slektninger,
167 og har savnet å ha den tilgjengelig på norsk. For to uker siden tok
168 jeg meg sammen og kontaktet Asbjørn Dyrendal i foreningen Skepsis om
169 de var interessert i å publisere en norsk utgave på bloggen sin, og da
170 han var positiv tok jeg kontakt med Skeptical Inquirer og spurte om
171 det var greit for dem. I løpet av noen dager fikk vi tilbakemelding
172 fra Barry Karr hos The Skeptical Inquirer som hadde sjekket og fått OK
173 fra Robyn Asimov som representerte arvingene i Asmiov-familien og gikk
174 igang med oversettingen.</p>
176 <p>Resultatet, <a href="http://www.skepsis.no/?p=
1617">«Relativt
177 feil»</a>, ble publisert på skepsis-bloggen for noen minutter siden.
178 Jeg anbefaler deg på det varmeste å lese denne teksten og dele den med
181 <p>For å håndtere oversettelsen og sikre at original og oversettelse
182 var i sync brukte vi git, po4a, GNU make og Transifex. Det hele
183 fungerte utmerket og gjorde det enkelt å dele tekstene og jobbe sammen
184 om finpuss på formuleringene. Hadde hosted.weblate.org latt meg
185 opprette nye prosjekter selv i stedet for å måtte kontakte
186 administratoren der, så hadde jeg brukt weblate i stedet.</p>
191 Tags: <a href="http://people.skolelinux.org/pere/blog/tags/norsk
">norsk</a>, <a href="http://people.skolelinux.org/pere/blog/tags/skepsis
">skepsis</a>.
196 <div class="padding
"></div>
199 <div class="title
"><a href="http://people.skolelinux.org/pere/blog/Techno_TV_broadcasting_live_across_Norway_and_the_Internet___debconf16___nuug__on__frikanalen.html
">Techno TV broadcasting live across Norway and the Internet (#debconf16, #nuug) on @frikanalen</a></div>
200 <div class="date
"> 1st August 2016</div>
201 <div class="body
"><p>Did you know there is a TV channel broadcasting talks from DebConf
202 16 across an entire country? Or that there is a TV channel
203 broadcasting talks by or about
204 <a href="http://beta.frikanalen.no/video/
625529/
">Linus Torvalds</a>,
205 <a href="http://beta.frikanalen.no/video/
625599/
">Tor</a>,
206 <a href="http://beta.frikanalen.no/video/
624019/
">OpenID</A>,
207 <a href="http://beta.frikanalen.no/video/
625624/
">Common Lisp</a>,
208 <a href="http://beta.frikanalen.no/video/
625446/
">Civic Tech</a>,
209 <a href="http://beta.frikanalen.no/video/
625090/
">EFF founder John Barlow</a>,
210 <a href="http://beta.frikanalen.no/video/
625432/
">how to make 3D
211 printer electronics</a> and many more fascinating topics? It works
212 using only free software (all of it
213 <a href="http://github.com/Frikanalen
">available from Github</a>), and
214 is administrated using a web browser and a web API.</p>
216 <p>The TV channel is the Norwegian open channel
217 <a href="http://www.frikanalen.no/
">Frikanalen</a>, and I am involved
218 via <a href="https://www.nuug.no/
">the NUUG member association</a> in
219 running and developing the software for the channel. The channel is
220 organised as a member organisation where its members can upload and
221 broadcast what they want (think of it as Youtube for national
222 broadcasting television). Individuals can broadcast too. The time
223 slots are handled on a first come, first serve basis. Because the
224 channel have almost no viewers and very few active members, we can
225 experiment with TV technology without too much flack when we make
226 mistakes. And thanks to the few active members, most of the slots on
227 the schedule are free. I see this as an opportunity to spread
228 knowledge about technology and free software, and have a script I run
229 regularly to fill up all the open slots the next few days with
230 technology related video. The end result is a channel I like to
231 describe as Techno TV - filled with interesting talks and
234 <p>It is available on channel 50 on the Norwegian national digital TV
235 network (RiksTV). It is also available as a multicast stream on
236 Uninett. And finally, it is available as
237 <a href="http://beta.frikanalen.no/
">a WebM unicast stream</a> from
238 Frikanalen and NUUG. Check it out. :)</p>
243 Tags: <a href="http://people.skolelinux.org/pere/blog/tags/english
">english</a>, <a href="http://people.skolelinux.org/pere/blog/tags/frikanalen
">frikanalen</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>.
248 <div class="padding
"></div>
251 <div class="title
"><a href="http://people.skolelinux.org/pere/blog/Unlocking_HTC_Desire_HD_on_Linux_using_unruu_and_fastboot.html
">Unlocking HTC Desire HD on Linux using unruu and fastboot</a></div>
252 <div class="date
"> 7th July 2016</div>
253 <div class="body
"><p>Yesterday, I tried to unlock a HTC Desire HD phone, and it proved
254 to be a slight challenge. Here is the recipe if I ever need to do it
255 again. It all started by me wanting to try the recipe to set up
256 <a href="https://blog.torproject.org/blog/mission-impossible-hardening-android-security-and-privacy
">an
257 hardened Android installation</a> from the Tor project blog on a
258 device I had access to. It is a old mobile phone with a broken
259 microphone The initial idea had been to just
260 <a href="http://wiki.cyanogenmod.org/w/Install_CM_for_ace
">install
261 CyanogenMod on it</a>, but did not quite find time to start on it
262 until a few days ago.</p>
264 <p>The unlock process is supposed to be simple: (1) Boot into the boot
265 loader (press volume down and power at the same time), (2) select
266 'fastboot' before (3) connecting the device via USB to a Linux
267 machine, (4) request the device identifier token by running 'fastboot
268 oem get_identifier_token', (5) request the device unlocking key using
269 the <a href="http://www.htcdev.com/bootloader/
">HTC developer web
270 site</a> and unlock the phone using the key file emailed to you.</p>
272 <p>Unfortunately, this only work fi you have hboot version 2.00.0029
273 or newer, and the device I was working on had 2.00.0027. This
274 apparently can be easily fixed by downloading a Windows program and
275 running it on your Windows machine, if you accept the terms Microsoft
276 require you to accept to use Windows - which I do not. So I had to
277 come up with a different approach. I got a lot of help from AndyCap
278 on #nuug, and would not have been able to get this working without
281 <p>First I needed to extract the hboot firmware from
282 <a href="http://www.htcdev.com/ruu/PD9810000_Ace_Sense30_S_hboot_2.00
.0029.exe
">the
283 windows binary for HTC Desire HD</a> downloaded as 'the RUU' from HTC.
284 For this there is is <a href="https://github.com/kmdm/unruu/
">a github
285 project named unruu</a> using libunshield. The unshield tool did not
286 recognise the file format, but unruu worked and extracted rom.zip,
287 containing the new hboot firmware and a text file describing which
288 devices it would work for.</p>
290 <p>Next, I needed to get the new firmware into the device. For this I
291 followed some instructions
292 <a href="http://www.htc1guru.com/
2013/
09/new-ruu-zips-posted/
">available
293 from HTC1Guru.com</a>, and ran these commands as root on a Linux
294 machine with Debian testing:</p>
297 adb reboot-bootloader
298 fastboot oem rebootRUU
299 fastboot flash zip rom.zip
300 fastboot flash zip rom.zip
304 <p>The flash command apparently need to be done twice to take effect,
305 as the first is just preparations and the second one do the flashing.
306 The adb command is just to get to the boot loader menu, so turning the
307 device on while holding volume down and the power button should work
310 <p>With the new hboot version in place I could start following the
311 instructions on the HTC developer web site. I got the device token
315 fastboot oem get_identifier_token 2>&1 | sed 's/(bootloader) //'
318 <p>And once I got the unlock code via email, I could use it like
322 fastboot flash unlocktoken Unlock_code.bin
325 <p>And with that final step in place, the phone was unlocked and I
326 could start stuffing the software of my own choosing into the device.
327 So far I only inserted a replacement recovery image to wipe the phone
328 before I start. We will see what happen next. Perhaps I should
329 install <a href="https://www.debian.org/
">Debian</a> on it. :)</p>
334 Tags: <a href="http://people.skolelinux.org/pere/blog/tags/bootsystem
">bootsystem</a>, <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/opphavsrett
">opphavsrett</a>, <a href="http://people.skolelinux.org/pere/blog/tags/sikkerhet
">sikkerhet</a>.
339 <div class="padding
"></div>
342 <div class="title
"><a href="http://people.skolelinux.org/pere/blog/How_to_use_the_Signal_app_if_you_only_have_a_land_line__ie_no_mobile_phone_.html
">How to use the Signal app if you only have a land line (ie no mobile phone)</a></div>
343 <div class="date
"> 3rd July 2016</div>
344 <div class="body
"><p>For a while now, I have wanted to test
345 <a href="https://whispersystems.org/
">the Signal app</a>, as it is
346 said to provide end to end encrypted communication and several of my
347 friends and family are already using it. As I by choice do not own a
348 mobile phone, this proved to be harder than expected. And I wanted to
349 have the source of the client and know that it was the code used on my
350 machine. But yesterday I managed to get it working. I used the
351 Github source, compared it to the source in
352 <a href="https://chrome.google.com/webstore/detail/signal-private-messenger/bikioccmkafdpakkkcpdbppfkghcmihk?hl=en-US
">the
353 Signal Chrome app</a> available from the Chrome web store, applied
354 patches to use the production Signal servers, started the app and
355 asked for the hidden "register without a smart phone" form. Here is
356 the recipe how I did it.
</p>
358 <p>First, I fetched the Signal desktop source from Github, using
361 git clone https://github.com/WhisperSystems/Signal-Desktop.git
364 <p>Next, I patched the source to use the production servers, to be
365 able to talk to other Signal users:
</p>
368 cat
<<EOF | patch -p0
369 diff -ur ./js/background.js userdata/Default/Extensions/bikioccmkafdpakkkcpdbppfkghcmihk/
0.15.0_0/js/background.js
370 --- ./js/background.js
2016-
06-
29 13:
43:
15.630344628 +
0200
371 +++ userdata/Default/Extensions/bikioccmkafdpakkkcpdbppfkghcmihk/
0.15.0_0/js/background.js
2016-
06-
29 14:
06:
29.530300934 +
0200
376 - var SERVER_URL = 'https://textsecure-service-staging.whispersystems.org';
377 - var ATTACHMENT_SERVER_URL = 'https://whispersystems-textsecure-attachments-staging.s3.amazonaws.com';
378 + var SERVER_URL = 'https://textsecure-service-ca.whispersystems.org:
4433';
379 + var ATTACHMENT_SERVER_URL = 'https://whispersystems-textsecure-attachments.s3.amazonaws.com';
381 window.getSocketStatus = function() {
382 if (messageReceiver) {
383 diff -ur ./js/expire.js userdata/Default/Extensions/bikioccmkafdpakkkcpdbppfkghcmihk/
0.15.0_0/js/expire.js
384 --- ./js/expire.js
2016-
06-
29 13:
43:
15.630344628 +
0200
385 +++ userdata/Default/Extensions/bikioccmkafdpakkkcpdbppfkghcmihk/
0.15.0_0/js/expire.js2016-
06-
29 14:
06:
29.530300934 +
0200
389 - var BUILD_EXPIRATION =
0;
390 + var BUILD_EXPIRATION =
1474492690000;
392 window.extension = window.extension || {};
397 <p>The first part is changing the servers, and the second is updating
398 an expiration timestamp. This timestamp need to be updated regularly.
399 It is set
90 days in the future by the build process (Gruntfile.js).
400 The value is seconds since
1970 times
1000, as far as I can tell.
</p>
402 <p>Based on a tip and good help from the #nuug IRC channel, I wrote a
403 script to launch Signal in Chromium.
</p>
410 --proxy-server="socks://localhost:
9050" \
411 --user-data-dir=`pwd`/userdata --load-and-launch-app=`pwd`
414 <p> The script start the app and configure Chromium to use the Tor
415 SOCKS5 proxy to make sure those controlling the Signal servers (today
416 Amazon and Whisper Systems) as well as those listening on the lines
417 will have a harder time location my laptop based on the Signal
418 connections if they use source IP address.
</p>
420 <p>When the script starts, one need to follow the instructions under
421 "Standalone Registration" in the CONTRIBUTING.md file in the git
422 repository. I right clicked on the Signal window to get up the
423 Chromium debugging tool, visited the 'Console' tab and wrote
424 'extension.install("standalone")' on the console prompt to get the
425 registration form. Then I entered by land line phone number and
426 pressed 'Call'.
5 seconds later the phone rang and a robot voice
427 repeated the verification code three times. After entering the number
428 into the verification code field in the form, I could start using
429 Signal from my laptop.
431 <p>As far as I can tell, The Signal app will leak who is talking to
432 whom and thus who know who to those controlling the central server,
433 but such leakage is hard to avoid with a centrally controlled server
434 setup. It is something to keep in mind when using Signal - the
435 content of your chats are harder to intercept, but the meta data
436 exposing your contact network is available to people you do not know.
437 So better than many options, but not great. And sadly the usage is
438 connected to my land line, thus allowing those controlling the server
439 to associate it to my home and person. I would prefer it if only
440 those I knew could tell who I was on Signal. There are options
441 avoiding such information leakage, but most of my friends are not
442 using them, so I am stuck with Signal for now.
</p>
447 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/sikkerhet">sikkerhet
</a>,
<a href=
"http://people.skolelinux.org/pere/blog/tags/surveillance">surveillance
</a>.
452 <div class=
"padding"></div>
455 <div class=
"title"><a href=
"http://people.skolelinux.org/pere/blog/The_new__best__multimedia_player_in_Debian_.html">The new "best" multimedia player in Debian?
</a></div>
456 <div class=
"date"> 6th June
2016</div>
457 <div class=
"body"><p>When I set out a few weeks ago to figure out
458 <a href=
"http://people.skolelinux.org/pere/blog/What_is_the_best_multimedia_player_in_Debian_.html">which
459 multimedia player in Debian claimed to support most file formats /
460 MIME types
</a>, I was a bit surprised how varied the sets of MIME types
461 the various players claimed support for. The range was from
55 to
130
462 MIME types. I suspect most media formats are supported by all
463 players, but this is not really reflected in the MimeTypes values in
464 their desktop files. There are probably also some bogus MIME types
465 listed, but it is hard to identify which one this is.
</p>
467 <p>Anyway, in the mean time I got in touch with upstream for some of
468 the players suggesting to add more MIME types to their desktop files,
469 and decided to spend some time myself improving the situation for my
470 favorite media player VLC. The fixes for VLC entered Debian unstable
471 yesterday. The complete list of MIME types can be seen on the
472 <a href=
"https://wiki.debian.org/DebianMultimedia/PlayerSupport">Multimedia
473 player MIME type support status
</a> Debian wiki page.
</p>
475 <p>The new "best" multimedia player in Debian? It is VLC, followed by
476 totem, parole, kplayer, gnome-mpv, mpv, smplayer, mplayer-gui and
477 kmplayer. I am sure some of the other players desktop files support
478 several of the formats currently listed as working only with vlc,
479 toten and parole.
</p>
481 <p>A sad observation is that only
14 MIME types are listed as
482 supported by all the tested multimedia players in Debian in their
483 desktop files: audio/mpeg, audio/vnd.rn-realaudio, audio/x-mpegurl,
484 audio/x-ms-wma, audio/x-scpls, audio/x-wav, video/mp4, video/mpeg,
485 video/quicktime, video/vnd.rn-realvideo, video/x-matroska,
486 video/x-ms-asf, video/x-ms-wmv and video/x-msvideo. Personally I find
487 it sad that video/ogg and video/webm is not supported by all the media
488 players in Debian. As far as I can tell, all of them can handle both
494 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>,
<a href=
"http://people.skolelinux.org/pere/blog/tags/multimedia">multimedia
</a>,
<a href=
"http://people.skolelinux.org/pere/blog/tags/video">video
</a>.
499 <div class=
"padding"></div>
502 <div class=
"title"><a href=
"http://people.skolelinux.org/pere/blog/A_program_should_be_able_to_open_its_own_files_on_Linux.html">A program should be able to open its own files on Linux
</a></div>
503 <div class=
"date"> 5th June
2016</div>
504 <div class=
"body"><p>Many years ago, when koffice was fresh and with few users, I
505 decided to test its presentation tool when making the slides for a
506 talk I was giving for NUUG on Japhar, a free Java virtual machine. I
507 wrote the first draft of the slides, saved the result and went to bed
508 the day before I would give the talk. The next day I took a plane to
509 the location where the meeting should take place, and on the plane I
510 started up koffice again to polish the talk a bit, only to discover
511 that kpresenter refused to load its own data file. I cursed a bit and
512 started making the slides again from memory, to have something to
513 present when I arrived. I tested that the saved files could be
514 loaded, and the day seemed to be rescued. I continued to polish the
515 slides until I suddenly discovered that the saved file could no longer
516 be loaded into kpresenter. In the end I had to rewrite the slides
517 three times, condensing the content until the talk became shorter and
518 shorter. After the talk I was able to pinpoint the problem
–
519 kpresenter wrote inline images in a way itself could not understand.
520 Eventually that bug was fixed and kpresenter ended up being a great
521 program to make slides. The point I'm trying to make is that we
522 expect a program to be able to load its own data files, and it is
523 embarrassing to its developers if it can't.
</p>
525 <p>Did you ever experience a program failing to load its own data
526 files from the desktop file browser? It is not a uncommon problem. A
527 while back I discovered that the screencast recorder
528 gtk-recordmydesktop would save an Ogg Theora video file the KDE file
529 browser would refuse to open. No video player claimed to understand
530 such file. I tracked down the cause being
<tt>file --mime-type
</tt>
531 returning the application/ogg MIME type, which no video player I had
532 installed listed as a MIME type they would understand. I asked for
533 <a href=
"http://bugs.gw.com/view.php?id=382">file to change its
534 behavour
</a> and use the MIME type video/ogg instead. I also asked
535 several video players to add video/ogg to their desktop files, to give
536 the file browser an idea what to do about Ogg Theora files. After a
537 while, the desktop file browsers in Debian started to handle the
538 output from gtk-recordmydesktop properly.
</p>
540 <p>But history repeats itself. A few days ago I tested the music
541 system Rosegarden again, and I discovered that the KDE and xfce file
542 browsers did not know what to do with the Rosegarden project files
543 (*.rg). I've reported
<a href=
"http://bugs.debian.org/825993">the
544 rosegarden problem to BTS
</a> and a fix is commited to git and will be
545 included in the next upload. To increase the chance of me remembering
546 how to fix the problem next time some program fail to load its files
547 from the file browser, here are some notes on how to fix it.
</p>
549 <p>The file browsers in Debian in general operates on MIME types.
550 There are two sources for the MIME type of a given file. The output from
551 <tt>file --mime-type
</tt> mentioned above, and the content of the
552 shared MIME type registry (under /usr/share/mime/). The file MIME
553 type is mapped to programs supporting the MIME type, and this
554 information is collected from
555 <a href=
"https://www.freedesktop.org/wiki/Specifications/desktop-entry-spec/">the
556 desktop files
</a> available in /usr/share/applications/. If there is
557 one desktop file claiming support for the MIME type of the file, it is
558 activated when asking to open a given file. If there are more, one
559 can normally select which one to use by right-clicking on the file and
560 selecting the wanted one using 'Open with' or similar. In general
561 this work well. But it depend on each program picking a good MIME
563 <a href=
"http://www.iana.org/assignments/media-types/media-types.xhtml">a
564 MIME type registered with IANA
</a>), file and/or the shared MIME
565 registry recognizing the file and the desktop file to list the MIME
566 type in its list of supported MIME types.
</p>
568 <p>The
<tt>/usr/share/mime/packages/rosegarden.xml
</tt> entry for
569 <a href=
"http://www.freedesktop.org/wiki/Specifications/shared-mime-info-spec">the
570 Shared MIME database
</a> look like this:
</p>
573 <?xml
version="
1.0"
encoding="UTF-
8"?
>
574 <mime-info
xmlns="http://www.freedesktop.org/standards/shared-mime-info"
>
575 <mime-type
type="audio/x-rosegarden"
>
576 <sub-class-of
type="application/x-gzip"/
>
577 <comment
>Rosegarden project file
</comment
>
578 <glob
pattern="*.rg"/
>
581 </pre></blockquote></p>
583 <p>This states that audio/x-rosegarden is a kind of application/x-gzip
584 (it is a gzipped XML file). Note, it is much better to use an
585 official MIME type registered with IANA than it is to make up ones own
586 unofficial ones like the x-rosegarden type used by rosegarden.
</p>
588 <p>The desktop file of the rosegarden program failed to list
589 audio/x-rosegarden in its list of supported MIME types, causing the
590 file browsers to have no idea what to do with *.rg files:
</p>
593 % grep Mime /usr/share/applications/rosegarden.desktop
594 MimeType=audio/x-rosegarden-composition;audio/x-rosegarden-device;audio/x-rosegarden-project;audio/x-rosegarden-template;audio/midi;
595 X-KDE-NativeMimeType=audio/x-rosegarden-composition
597 </pre></blockquote></p>
599 <p>The fix was to add "audio/x-rosegarden;" at the end of the
602 <p>If you run into a file which fail to open the correct program when
603 selected from the file browser, please check out the output from
604 <tt>file --mime-type
</tt> for the file, ensure the file ending and
605 MIME type is registered somewhere under /usr/share/mime/ and check
606 that some desktop file under /usr/share/applications/ is claiming
607 support for this MIME type. If not, please report a bug to have it
613 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>.
618 <div class=
"padding"></div>
621 <div class=
"title"><a href=
"http://people.skolelinux.org/pere/blog/Tor___from_its_creators_mouth_11_years_ago.html">Tor - from its creators mouth
11 years ago
</a></div>
622 <div class=
"date">28th May
2016</div>
623 <div class=
"body"><p>A little more than
11 years ago, one of the creators of Tor, and
624 the current President of
<a href=
"https://www.torproject.org/">the Tor
625 project
</a>, Roger Dingledine, gave a talk for the members of the
626 <a href=
"http://www.nuug.no/">Norwegian Unix User group
</a> (NUUG). A
627 video of the talk was recorded, and today, thanks to the great help
628 from David Noble, I finally was able to publish the video of the talk
629 on Frikanalen, the Norwegian open channel TV station where NUUG
630 currently publishes its talks. You can
631 <a href=
"http://frikanalen.no/se">watch the live stream using a web
632 browser
</a> with WebM support, or check out the recording on the video
633 on demand page for the talk
634 "
<a href=
"http://beta.frikanalen.no/video/625599">Tor: Anonymous
635 communication for the US Department of Defence...and you.
</a>".</p>
637 <p>Here is the video included for those of you using browsers with
638 HTML video and Ogg Theora support:</p>
640 <p><video width="70%
" poster="http://simula.gunkies.org/media/
625599/large_thumb/
20050421-tor-frikanalen.jpg
" controls>
641 <source src="http://simula.gunkies.org/media/
625599/theora/
20050421-tor-frikanalen.ogv
" type="video/ogg
"/>
644 <p>I guess the gist of the talk can be summarised quite simply: If you
645 want to help the military in USA (and everyone else), use Tor. :)</p>
650 Tags: <a href="http://people.skolelinux.org/pere/blog/tags/english
">english</a>, <a href="http://people.skolelinux.org/pere/blog/tags/frikanalen
">frikanalen</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>.
655 <div class="padding
"></div>
658 <div class="title
"><a href="http://people.skolelinux.org/pere/blog/Isenkram_with_PackageKit_support___new_version_0_23_available_in_Debian_unstable.html
">Isenkram with PackageKit support - new version 0.23 available in Debian unstable</a></div>
659 <div class="date
">25th May 2016</div>
660 <div class="body
"><p><a href="https://tracker.debian.org/pkg/isenkram
">The isenkram
661 system</a> is a user-focused solution in Debian for handling hardware
662 related packages. The idea is to have a database of mappings between
663 hardware and packages, and pop up a dialog suggesting for the user to
664 install the packages to use a given hardware dongle. Some use cases
665 are when you insert a Yubikey, it proposes to install the software
666 needed to control it; when you insert a braille reader list it
667 proposes to install the packages needed to send text to the reader;
668 and when you insert a ColorHug screen calibrator it suggests to
669 install the driver for it. The system work well, and even have a few
670 command line tools to install firmware packages and packages for the
671 hardware already in the machine (as opposed to hotpluggable hardware).</p>
673 <p>The system was initially written using aptdaemon, because I found
674 good documentation and example code on how to use it. But aptdaemon
675 is going away and is generally being replaced by
676 <a href="http://www.freedesktop.org/software/PackageKit/
">PackageKit</a>,
677 so Isenkram needed a rewrite. And today, thanks to the great patch
678 from my college Sunil Mohan Adapa in the FreedomBox project, the
679 rewrite finally took place. I've just uploaded a new version of
680 Isenkram into Debian Unstable with the patch included, and the default
681 for the background daemon is now to use PackageKit. To check it out,
682 install the <tt>isenkram</tt> package and insert some hardware dongle
683 and see if it is recognised.</p>
685 <p>If you want to know what kind of packages isenkram would propose for
686 the machine it is running on, you can check out the isenkram-lookup
687 program. This is what it look like on a Thinkpad X230:</p>
705 </pre></blockquote></p>
707 <p>The hardware mappings come from several places. The preferred way
708 is for packages to announce their hardware support using
709 <a href="https://www.freedesktop.org/software/appstream/docs/
">the
710 cross distribution appstream system</a>.
712 <a href="http://people.skolelinux.org/pere/blog/tags/isenkram/
">previous
713 blog posts about isenkram</a> to learn how to do that.</p>
718 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>.
723 <div class="padding
"></div>
725 <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>
736 <li><a href="http://people.skolelinux.org/pere/blog/archive/
2016/
01/
">January (3)</a></li>
738 <li><a href="http://people.skolelinux.org/pere/blog/archive/
2016/
02/
">February (2)</a></li>
740 <li><a href="http://people.skolelinux.org/pere/blog/archive/
2016/
03/
">March (3)</a></li>
742 <li><a href="http://people.skolelinux.org/pere/blog/archive/
2016/
04/
">April (8)</a></li>
744 <li><a href="http://people.skolelinux.org/pere/blog/archive/
2016/
05/
">May (8)</a></li>
746 <li><a href="http://people.skolelinux.org/pere/blog/archive/
2016/
06/
">June (2)</a></li>
748 <li><a href="http://people.skolelinux.org/pere/blog/archive/
2016/
07/
">July (2)</a></li>
750 <li><a href="http://people.skolelinux.org/pere/blog/archive/
2016/
08/
">August (4)</a></li>
757 <li><a href="http://people.skolelinux.org/pere/blog/archive/
2015/
01/
">January (7)</a></li>
759 <li><a href="http://people.skolelinux.org/pere/blog/archive/
2015/
02/
">February (6)</a></li>
761 <li><a href="http://people.skolelinux.org/pere/blog/archive/
2015/
03/
">March (1)</a></li>
763 <li><a href="http://people.skolelinux.org/pere/blog/archive/
2015/
04/
">April (4)</a></li>
765 <li><a href="http://people.skolelinux.org/pere/blog/archive/
2015/
05/
">May (3)</a></li>
767 <li><a href="http://people.skolelinux.org/pere/blog/archive/
2015/
06/
">June (4)</a></li>
769 <li><a href="http://people.skolelinux.org/pere/blog/archive/
2015/
07/
">July (6)</a></li>
771 <li><a href="http://people.skolelinux.org/pere/blog/archive/
2015/
08/
">August (2)</a></li>
773 <li><a href="http://people.skolelinux.org/pere/blog/archive/
2015/
09/
">September (2)</a></li>
775 <li><a href="http://people.skolelinux.org/pere/blog/archive/
2015/
10/
">October (9)</a></li>
777 <li><a href="http://people.skolelinux.org/pere/blog/archive/
2015/
11/
">November (6)</a></li>
779 <li><a href="http://people.skolelinux.org/pere/blog/archive/
2015/
12/
">December (3)</a></li>
786 <li><a href="http://people.skolelinux.org/pere/blog/archive/
2014/
01/
">January (2)</a></li>
788 <li><a href="http://people.skolelinux.org/pere/blog/archive/
2014/
02/
">February (3)</a></li>
790 <li><a href="http://people.skolelinux.org/pere/blog/archive/
2014/
03/
">March (8)</a></li>
792 <li><a href="http://people.skolelinux.org/pere/blog/archive/
2014/
04/
">April (7)</a></li>
794 <li><a href="http://people.skolelinux.org/pere/blog/archive/
2014/
05/
">May (1)</a></li>
796 <li><a href="http://people.skolelinux.org/pere/blog/archive/
2014/
06/
">June (2)</a></li>
798 <li><a href="http://people.skolelinux.org/pere/blog/archive/
2014/
07/
">July (2)</a></li>
800 <li><a href="http://people.skolelinux.org/pere/blog/archive/
2014/
08/
">August (2)</a></li>
802 <li><a href="http://people.skolelinux.org/pere/blog/archive/
2014/
09/
">September (5)</a></li>
804 <li><a href="http://people.skolelinux.org/pere/blog/archive/
2014/
10/
">October (6)</a></li>
806 <li><a href="http://people.skolelinux.org/pere/blog/archive/
2014/
11/
">November (3)</a></li>
808 <li><a href="http://people.skolelinux.org/pere/blog/archive/
2014/
12/
">December (5)</a></li>
815 <li><a href="http://people.skolelinux.org/pere/blog/archive/
2013/
01/
">January (11)</a></li>
817 <li><a href="http://people.skolelinux.org/pere/blog/archive/
2013/
02/
">February (9)</a></li>
819 <li><a href="http://people.skolelinux.org/pere/blog/archive/
2013/
03/
">March (9)</a></li>
821 <li><a href="http://people.skolelinux.org/pere/blog/archive/
2013/
04/
">April (6)</a></li>
823 <li><a href="http://people.skolelinux.org/pere/blog/archive/
2013/
05/
">May (9)</a></li>
825 <li><a href="http://people.skolelinux.org/pere/blog/archive/
2013/
06/
">June (10)</a></li>
827 <li><a href="http://people.skolelinux.org/pere/blog/archive/
2013/
07/
">July (7)</a></li>
829 <li><a href="http://people.skolelinux.org/pere/blog/archive/
2013/
08/
">August (3)</a></li>
831 <li><a href="http://people.skolelinux.org/pere/blog/archive/
2013/
09/
">September (5)</a></li>
833 <li><a href="http://people.skolelinux.org/pere/blog/archive/
2013/
10/
">October (7)</a></li>
835 <li><a href="http://people.skolelinux.org/pere/blog/archive/
2013/
11/
">November (9)</a></li>
837 <li><a href="http://people.skolelinux.org/pere/blog/archive/
2013/
12/
">December (3)</a></li>
844 <li><a href="http://people.skolelinux.org/pere/blog/archive/
2012/
01/
">January (7)</a></li>
846 <li><a href="http://people.skolelinux.org/pere/blog/archive/
2012/
02/
">February (10)</a></li>
848 <li><a href="http://people.skolelinux.org/pere/blog/archive/
2012/
03/
">March (17)</a></li>
850 <li><a href="http://people.skolelinux.org/pere/blog/archive/
2012/
04/
">April (12)</a></li>
852 <li><a href="http://people.skolelinux.org/pere/blog/archive/
2012/
05/
">May (12)</a></li>
854 <li><a href="http://people.skolelinux.org/pere/blog/archive/
2012/
06/
">June (20)</a></li>
856 <li><a href="http://people.skolelinux.org/pere/blog/archive/
2012/
07/
">July (17)</a></li>
858 <li><a href="http://people.skolelinux.org/pere/blog/archive/
2012/
08/
">August (6)</a></li>
860 <li><a href="http://people.skolelinux.org/pere/blog/archive/
2012/
09/
">September (9)</a></li>
862 <li><a href="http://people.skolelinux.org/pere/blog/archive/
2012/
10/
">October (17)</a></li>
864 <li><a href="http://people.skolelinux.org/pere/blog/archive/
2012/
11/
">November (10)</a></li>
866 <li><a href="http://people.skolelinux.org/pere/blog/archive/
2012/
12/
">December (7)</a></li>
873 <li><a href="http://people.skolelinux.org/pere/blog/archive/
2011/
01/
">January (16)</a></li>
875 <li><a href="http://people.skolelinux.org/pere/blog/archive/
2011/
02/
">February (6)</a></li>
877 <li><a href="http://people.skolelinux.org/pere/blog/archive/
2011/
03/
">March (6)</a></li>
879 <li><a href="http://people.skolelinux.org/pere/blog/archive/
2011/
04/
">April (7)</a></li>
881 <li><a href="http://people.skolelinux.org/pere/blog/archive/
2011/
05/
">May (3)</a></li>
883 <li><a href="http://people.skolelinux.org/pere/blog/archive/
2011/
06/
">June (2)</a></li>
885 <li><a href="http://people.skolelinux.org/pere/blog/archive/
2011/
07/
">July (7)</a></li>
887 <li><a href="http://people.skolelinux.org/pere/blog/archive/
2011/
08/
">August (6)</a></li>
889 <li><a href="http://people.skolelinux.org/pere/blog/archive/
2011/
09/
">September (4)</a></li>
891 <li><a href="http://people.skolelinux.org/pere/blog/archive/
2011/
10/
">October (2)</a></li>
893 <li><a href="http://people.skolelinux.org/pere/blog/archive/
2011/
11/
">November (3)</a></li>
895 <li><a href="http://people.skolelinux.org/pere/blog/archive/
2011/
12/
">December (1)</a></li>
902 <li><a href="http://people.skolelinux.org/pere/blog/archive/
2010/
01/
">January (2)</a></li>
904 <li><a href="http://people.skolelinux.org/pere/blog/archive/
2010/
02/
">February (1)</a></li>
906 <li><a href="http://people.skolelinux.org/pere/blog/archive/
2010/
03/
">March (3)</a></li>
908 <li><a href="http://people.skolelinux.org/pere/blog/archive/
2010/
04/
">April (3)</a></li>
910 <li><a href="http://people.skolelinux.org/pere/blog/archive/
2010/
05/
">May (9)</a></li>
912 <li><a href="http://people.skolelinux.org/pere/blog/archive/
2010/
06/
">June (14)</a></li>
914 <li><a href="http://people.skolelinux.org/pere/blog/archive/
2010/
07/
">July (12)</a></li>
916 <li><a href="http://people.skolelinux.org/pere/blog/archive/
2010/
08/
">August (13)</a></li>
918 <li><a href="http://people.skolelinux.org/pere/blog/archive/
2010/
09/
">September (7)</a></li>
920 <li><a href="http://people.skolelinux.org/pere/blog/archive/
2010/
10/
">October (9)</a></li>
922 <li><a href="http://people.skolelinux.org/pere/blog/archive/
2010/
11/
">November (13)</a></li>
924 <li><a href="http://people.skolelinux.org/pere/blog/archive/
2010/
12/
">December (12)</a></li>
931 <li><a href="http://people.skolelinux.org/pere/blog/archive/
2009/
01/
">January (8)</a></li>
933 <li><a href="http://people.skolelinux.org/pere/blog/archive/
2009/
02/
">February (8)</a></li>
935 <li><a href="http://people.skolelinux.org/pere/blog/archive/
2009/
03/
">March (12)</a></li>
937 <li><a href="http://people.skolelinux.org/pere/blog/archive/
2009/
04/
">April (10)</a></li>
939 <li><a href="http://people.skolelinux.org/pere/blog/archive/
2009/
05/
">May (9)</a></li>
941 <li><a href="http://people.skolelinux.org/pere/blog/archive/
2009/
06/
">June (3)</a></li>
943 <li><a href="http://people.skolelinux.org/pere/blog/archive/
2009/
07/
">July (4)</a></li>
945 <li><a href="http://people.skolelinux.org/pere/blog/archive/
2009/
08/
">August (3)</a></li>
947 <li><a href="http://people.skolelinux.org/pere/blog/archive/
2009/
09/
">September (1)</a></li>
949 <li><a href="http://people.skolelinux.org/pere/blog/archive/
2009/
10/
">October (2)</a></li>
951 <li><a href="http://people.skolelinux.org/pere/blog/archive/
2009/
11/
">November (3)</a></li>
953 <li><a href="http://people.skolelinux.org/pere/blog/archive/
2009/
12/
">December (3)</a></li>
960 <li><a href="http://people.skolelinux.org/pere/blog/archive/
2008/
11/
">November (5)</a></li>
962 <li><a href="http://people.skolelinux.org/pere/blog/archive/
2008/
12/
">December (7)</a></li>
973 <li><a href="http://people.skolelinux.org/pere/blog/tags/
3d-printer
">3d-printer (13)</a></li>
975 <li><a href="http://people.skolelinux.org/pere/blog/tags/amiga
">amiga (1)</a></li>
977 <li><a href="http://people.skolelinux.org/pere/blog/tags/aros
">aros (1)</a></li>
979 <li><a href="http://people.skolelinux.org/pere/blog/tags/bankid
">bankid (4)</a></li>
981 <li><a href="http://people.skolelinux.org/pere/blog/tags/bitcoin
">bitcoin (9)</a></li>
983 <li><a href="http://people.skolelinux.org/pere/blog/tags/bootsystem
">bootsystem (16)</a></li>
985 <li><a href="http://people.skolelinux.org/pere/blog/tags/bsa
">bsa (2)</a></li>
987 <li><a href="http://people.skolelinux.org/pere/blog/tags/chrpath
">chrpath (2)</a></li>
989 <li><a href="http://people.skolelinux.org/pere/blog/tags/debian
">debian (134)</a></li>
991 <li><a href="http://people.skolelinux.org/pere/blog/tags/debian edu
">debian edu (157)</a></li>
993 <li><a href="http://people.skolelinux.org/pere/blog/tags/digistan
">digistan (10)</a></li>
995 <li><a href="http://people.skolelinux.org/pere/blog/tags/dld
">dld (15)</a></li>
997 <li><a href="http://people.skolelinux.org/pere/blog/tags/docbook
">docbook (23)</a></li>
999 <li><a href="http://people.skolelinux.org/pere/blog/tags/drivstoffpriser
">drivstoffpriser (4)</a></li>
1001 <li><a href="http://people.skolelinux.org/pere/blog/tags/english
">english (326)</a></li>
1003 <li><a href="http://people.skolelinux.org/pere/blog/tags/fiksgatami
">fiksgatami (23)</a></li>
1005 <li><a href="http://people.skolelinux.org/pere/blog/tags/fildeling
">fildeling (12)</a></li>
1007 <li><a href="http://people.skolelinux.org/pere/blog/tags/freeculture
">freeculture (28)</a></li>
1009 <li><a href="http://people.skolelinux.org/pere/blog/tags/freedombox
">freedombox (9)</a></li>
1011 <li><a href="http://people.skolelinux.org/pere/blog/tags/frikanalen
">frikanalen (18)</a></li>
1013 <li><a href="http://people.skolelinux.org/pere/blog/tags/h264
">h264 (20)</a></li>
1015 <li><a href="http://people.skolelinux.org/pere/blog/tags/intervju
">intervju (42)</a></li>
1017 <li><a href="http://people.skolelinux.org/pere/blog/tags/isenkram
">isenkram (12)</a></li>
1019 <li><a href="http://people.skolelinux.org/pere/blog/tags/kart
">kart (19)</a></li>
1021 <li><a href="http://people.skolelinux.org/pere/blog/tags/ldap
">ldap (9)</a></li>
1023 <li><a href="http://people.skolelinux.org/pere/blog/tags/lenker
">lenker (8)</a></li>
1025 <li><a href="http://people.skolelinux.org/pere/blog/tags/lsdvd
">lsdvd (2)</a></li>
1027 <li><a href="http://people.skolelinux.org/pere/blog/tags/ltsp
">ltsp (1)</a></li>
1029 <li><a href="http://people.skolelinux.org/pere/blog/tags/mesh network
">mesh network (8)</a></li>
1031 <li><a href="http://people.skolelinux.org/pere/blog/tags/multimedia
">multimedia (39)</a></li>
1033 <li><a href="http://people.skolelinux.org/pere/blog/tags/nice free software
">nice free software (8)</a></li>
1035 <li><a href="http://people.skolelinux.org/pere/blog/tags/norsk
">norsk (276)</a></li>
1037 <li><a href="http://people.skolelinux.org/pere/blog/tags/nuug
">nuug (182)</a></li>
1039 <li><a href="http://people.skolelinux.org/pere/blog/tags/offentlig innsyn
">offentlig innsyn (26)</a></li>
1041 <li><a href="http://people.skolelinux.org/pere/blog/tags/open311
">open311 (2)</a></li>
1043 <li><a href="http://people.skolelinux.org/pere/blog/tags/opphavsrett
">opphavsrett (61)</a></li>
1045 <li><a href="http://people.skolelinux.org/pere/blog/tags/personvern
">personvern (92)</a></li>
1047 <li><a href="http://people.skolelinux.org/pere/blog/tags/raid
">raid (1)</a></li>
1049 <li><a href="http://people.skolelinux.org/pere/blog/tags/reactos
">reactos (1)</a></li>
1051 <li><a href="http://people.skolelinux.org/pere/blog/tags/reprap
">reprap (11)</a></li>
1053 <li><a href="http://people.skolelinux.org/pere/blog/tags/rfid
">rfid (3)</a></li>
1055 <li><a href="http://people.skolelinux.org/pere/blog/tags/robot
">robot (9)</a></li>
1057 <li><a href="http://people.skolelinux.org/pere/blog/tags/rss
">rss (1)</a></li>
1059 <li><a href="http://people.skolelinux.org/pere/blog/tags/ruter
">ruter (4)</a></li>
1061 <li><a href="http://people.skolelinux.org/pere/blog/tags/scraperwiki
">scraperwiki (2)</a></li>
1063 <li><a href="http://people.skolelinux.org/pere/blog/tags/sikkerhet
">sikkerhet (48)</a></li>
1065 <li><a href="http://people.skolelinux.org/pere/blog/tags/sitesummary
">sitesummary (4)</a></li>
1067 <li><a href="http://people.skolelinux.org/pere/blog/tags/skepsis
">skepsis (5)</a></li>
1069 <li><a href="http://people.skolelinux.org/pere/blog/tags/standard
">standard (49)</a></li>
1071 <li><a href="http://people.skolelinux.org/pere/blog/tags/stavekontroll
">stavekontroll (4)</a></li>
1073 <li><a href="http://people.skolelinux.org/pere/blog/tags/stortinget
">stortinget (10)</a></li>
1075 <li><a href="http://people.skolelinux.org/pere/blog/tags/surveillance
">surveillance (37)</a></li>
1077 <li><a href="http://people.skolelinux.org/pere/blog/tags/sysadmin
">sysadmin (2)</a></li>
1079 <li><a href="http://people.skolelinux.org/pere/blog/tags/usenix
">usenix (2)</a></li>
1081 <li><a href="http://people.skolelinux.org/pere/blog/tags/valg
">valg (8)</a></li>
1083 <li><a href="http://people.skolelinux.org/pere/blog/tags/video
">video (59)</a></li>
1085 <li><a href="http://people.skolelinux.org/pere/blog/tags/vitenskap
">vitenskap (4)</a></li>
1087 <li><a href="http://people.skolelinux.org/pere/blog/tags/web
">web (38)</a></li>
1093 <p style="text-align: right
">
1094 Created by <a href="http://steve.org.uk/Software/chronicle
">Chronicle v4.6</a>