]> 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/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>
38
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>
48
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:
51
52 <p><blockquote><pre>
53 coz run --- program-to-run
54 </pre></blockquote></p>
55
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 &lt;coz.h&gt; 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>
66
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
71 titled
72 <a href="https://www.usenix.org/conference/atc16/technical-sessions/presentation/curtsinger">Coz:
73 finding code that counts with causal profiling</a>.</p>
74
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
77 because it uses a
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>
82
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
86 C++ libraries.</p>
87 </div>
88 <div class="tags">
89
90
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>.
92
93
94 </div>
95 </div>
96 <div class="padding"></div>
97
98 <div class="entry">
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>
113
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>
120
121 <table border="0">
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>
126 </table>
127
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>
139
140 <p>The ebook edition is available for free from
141 <a href="https://github.com/petterreinholdtsen/free-culture-lessig">Github</a>.</p>
142
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
145 touch.</p>
146 </div>
147 <div class="tags">
148
149
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>.
151
152
153 </div>
154 </div>
155 <div class="padding"></div>
156
157 <div class="entry">
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>
175
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
179 dine venner.</p>
180
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>
187 </div>
188 <div class="tags">
189
190
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>.
192
193
194 </div>
195 </div>
196 <div class="padding"></div>
197
198 <div class="entry">
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>
215
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
232 presentations.</p>
233
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>
239 </div>
240 <div class="tags">
241
242
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>.
244
245
246 </div>
247 </div>
248 <div class="padding"></div>
249
250 <div class="entry">
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>
263
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>
271
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
279 him.</p>
280
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>
289
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>
295
296 <p><pre>
297 adb reboot-bootloader
298 fastboot oem rebootRUU
299 fastboot flash zip rom.zip
300 fastboot flash zip rom.zip
301 fastboot reboot
302 </pre></p>
303
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
308 too.</p>
309
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
312 like this:</p>
313
314 <p><pre>
315 fastboot oem get_identifier_token 2>&1 | sed 's/(bootloader) //'
316 </pre>
317
318 <p>And once I got the unlock code via email, I could use it like
319 this:</p>
320
321 <p><pre>
322 fastboot flash unlocktoken Unlock_code.bin
323 </pre></p>
324
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>
330 </div>
331 <div class="tags">
332
333
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>.
335
336
337 </div>
338 </div>
339 <div class="padding"></div>
340
341 <div class="entry">
342 <div class="title"><a href="http://people.skolelinux.org/pere/blog/How_to_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>
357
358 <p>First, I fetched the Signal desktop source from Github, using
359
360 <pre>
361 git clone https://github.com/WhisperSystems/Signal-Desktop.git
362 </pre>
363
364 <p>Next, I patched the source to use the production servers, to be
365 able to talk to other Signal users:</p>
366
367 <pre>
368 cat &lt;&lt;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
372 @@ -47,8 +47,8 @@
373 });
374 });
375
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';
380 var messageReceiver;
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
386 @@ -1,6 +1,6 @@
387 ;(function() {
388 'use strict';
389 - var BUILD_EXPIRATION = 0;
390 + var BUILD_EXPIRATION = 1474492690000;
391
392 window.extension = window.extension || {};
393
394 EOF
395 </pre>
396
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>
401
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>
404
405 <pre>
406 #!/bin/sh
407 cd $(dirname $0)
408 mkdir -p userdata
409 exec chromium \
410 --proxy-server="socks://localhost:9050" \
411 --user-data-dir=`pwd`/userdata --load-and-launch-app=`pwd`
412 </pre>
413
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>
419
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.
430
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>
443 </div>
444 <div class="tags">
445
446
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>.
448
449
450 </div>
451 </div>
452 <div class="padding"></div>
453
454 <div class="entry">
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>
466
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>
474
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>
480
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
489 formats.</p>
490 </div>
491 <div class="tags">
492
493
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>.
495
496
497 </div>
498 </div>
499 <div class="padding"></div>
500
501 <div class="entry">
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 &ndash;
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>
524
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>
539
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>
548
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
562 type (preferably
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>
567
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>
571
572 <p><blockquote><pre>
573 &lt;?xml version="1.0" encoding="UTF-8"?&gt;
574 &lt;mime-info xmlns="http://www.freedesktop.org/standards/shared-mime-info"&gt;
575 &lt;mime-type type="audio/x-rosegarden"&gt;
576 &lt;sub-class-of type="application/x-gzip"/&gt;
577 &lt;comment&gt;Rosegarden project file&lt;/comment&gt;
578 &lt;glob pattern="*.rg"/&gt;
579 &lt;/mime-type&gt;
580 &lt;/mime-info&gt;
581 </pre></blockquote></p>
582
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>
587
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>
591
592 <p><blockquote><pre>
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
596 %
597 </pre></blockquote></p>
598
599 <p>The fix was to add "audio/x-rosegarden;" at the end of the
600 MimeType= line.</p>
601
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
608 fixed. :)</p>
609 </div>
610 <div class="tags">
611
612
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>.
614
615
616 </div>
617 </div>
618 <div class="padding"></div>
619
620 <div class="entry">
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>
636
637 <p>Here is the video included for those of you using browsers with
638 HTML video and Ogg Theora support:</p>
639
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"/>
642 </video></p>
643
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>
646 </div>
647 <div class="tags">
648
649
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>.
651
652
653 </div>
654 </div>
655 <div class="padding"></div>
656
657 <div class="entry">
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>
672
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>
684
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>
688
689 <p><blockquote><pre>
690 % isenkram-lookup
691 bluez
692 cheese
693 fprintd
694 fprintd-demo
695 gkrellm-thinkbat
696 hdapsd
697 libpam-fprintd
698 pidgin-blinklight
699 thinkfan
700 tleds
701 tp-smapi-dkms
702 tp-smapi-source
703 tpb
704 %p
705 </pre></blockquote></p>
706
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>.
711 See
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>
714 </div>
715 <div class="tags">
716
717
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>.
719
720
721 </div>
722 </div>
723 <div class="padding"></div>
724
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>
726 <div id="sidebar">
727
728
729
730 <h2>Archive</h2>
731 <ul>
732
733 <li>2016
734 <ul>
735
736 <li><a href="http://people.skolelinux.org/pere/blog/archive/2016/01/">January (3)</a></li>
737
738 <li><a href="http://people.skolelinux.org/pere/blog/archive/2016/02/">February (2)</a></li>
739
740 <li><a href="http://people.skolelinux.org/pere/blog/archive/2016/03/">March (3)</a></li>
741
742 <li><a href="http://people.skolelinux.org/pere/blog/archive/2016/04/">April (8)</a></li>
743
744 <li><a href="http://people.skolelinux.org/pere/blog/archive/2016/05/">May (8)</a></li>
745
746 <li><a href="http://people.skolelinux.org/pere/blog/archive/2016/06/">June (2)</a></li>
747
748 <li><a href="http://people.skolelinux.org/pere/blog/archive/2016/07/">July (2)</a></li>
749
750 <li><a href="http://people.skolelinux.org/pere/blog/archive/2016/08/">August (4)</a></li>
751
752 </ul></li>
753
754 <li>2015
755 <ul>
756
757 <li><a href="http://people.skolelinux.org/pere/blog/archive/2015/01/">January (7)</a></li>
758
759 <li><a href="http://people.skolelinux.org/pere/blog/archive/2015/02/">February (6)</a></li>
760
761 <li><a href="http://people.skolelinux.org/pere/blog/archive/2015/03/">March (1)</a></li>
762
763 <li><a href="http://people.skolelinux.org/pere/blog/archive/2015/04/">April (4)</a></li>
764
765 <li><a href="http://people.skolelinux.org/pere/blog/archive/2015/05/">May (3)</a></li>
766
767 <li><a href="http://people.skolelinux.org/pere/blog/archive/2015/06/">June (4)</a></li>
768
769 <li><a href="http://people.skolelinux.org/pere/blog/archive/2015/07/">July (6)</a></li>
770
771 <li><a href="http://people.skolelinux.org/pere/blog/archive/2015/08/">August (2)</a></li>
772
773 <li><a href="http://people.skolelinux.org/pere/blog/archive/2015/09/">September (2)</a></li>
774
775 <li><a href="http://people.skolelinux.org/pere/blog/archive/2015/10/">October (9)</a></li>
776
777 <li><a href="http://people.skolelinux.org/pere/blog/archive/2015/11/">November (6)</a></li>
778
779 <li><a href="http://people.skolelinux.org/pere/blog/archive/2015/12/">December (3)</a></li>
780
781 </ul></li>
782
783 <li>2014
784 <ul>
785
786 <li><a href="http://people.skolelinux.org/pere/blog/archive/2014/01/">January (2)</a></li>
787
788 <li><a href="http://people.skolelinux.org/pere/blog/archive/2014/02/">February (3)</a></li>
789
790 <li><a href="http://people.skolelinux.org/pere/blog/archive/2014/03/">March (8)</a></li>
791
792 <li><a href="http://people.skolelinux.org/pere/blog/archive/2014/04/">April (7)</a></li>
793
794 <li><a href="http://people.skolelinux.org/pere/blog/archive/2014/05/">May (1)</a></li>
795
796 <li><a href="http://people.skolelinux.org/pere/blog/archive/2014/06/">June (2)</a></li>
797
798 <li><a href="http://people.skolelinux.org/pere/blog/archive/2014/07/">July (2)</a></li>
799
800 <li><a href="http://people.skolelinux.org/pere/blog/archive/2014/08/">August (2)</a></li>
801
802 <li><a href="http://people.skolelinux.org/pere/blog/archive/2014/09/">September (5)</a></li>
803
804 <li><a href="http://people.skolelinux.org/pere/blog/archive/2014/10/">October (6)</a></li>
805
806 <li><a href="http://people.skolelinux.org/pere/blog/archive/2014/11/">November (3)</a></li>
807
808 <li><a href="http://people.skolelinux.org/pere/blog/archive/2014/12/">December (5)</a></li>
809
810 </ul></li>
811
812 <li>2013
813 <ul>
814
815 <li><a href="http://people.skolelinux.org/pere/blog/archive/2013/01/">January (11)</a></li>
816
817 <li><a href="http://people.skolelinux.org/pere/blog/archive/2013/02/">February (9)</a></li>
818
819 <li><a href="http://people.skolelinux.org/pere/blog/archive/2013/03/">March (9)</a></li>
820
821 <li><a href="http://people.skolelinux.org/pere/blog/archive/2013/04/">April (6)</a></li>
822
823 <li><a href="http://people.skolelinux.org/pere/blog/archive/2013/05/">May (9)</a></li>
824
825 <li><a href="http://people.skolelinux.org/pere/blog/archive/2013/06/">June (10)</a></li>
826
827 <li><a href="http://people.skolelinux.org/pere/blog/archive/2013/07/">July (7)</a></li>
828
829 <li><a href="http://people.skolelinux.org/pere/blog/archive/2013/08/">August (3)</a></li>
830
831 <li><a href="http://people.skolelinux.org/pere/blog/archive/2013/09/">September (5)</a></li>
832
833 <li><a href="http://people.skolelinux.org/pere/blog/archive/2013/10/">October (7)</a></li>
834
835 <li><a href="http://people.skolelinux.org/pere/blog/archive/2013/11/">November (9)</a></li>
836
837 <li><a href="http://people.skolelinux.org/pere/blog/archive/2013/12/">December (3)</a></li>
838
839 </ul></li>
840
841 <li>2012
842 <ul>
843
844 <li><a href="http://people.skolelinux.org/pere/blog/archive/2012/01/">January (7)</a></li>
845
846 <li><a href="http://people.skolelinux.org/pere/blog/archive/2012/02/">February (10)</a></li>
847
848 <li><a href="http://people.skolelinux.org/pere/blog/archive/2012/03/">March (17)</a></li>
849
850 <li><a href="http://people.skolelinux.org/pere/blog/archive/2012/04/">April (12)</a></li>
851
852 <li><a href="http://people.skolelinux.org/pere/blog/archive/2012/05/">May (12)</a></li>
853
854 <li><a href="http://people.skolelinux.org/pere/blog/archive/2012/06/">June (20)</a></li>
855
856 <li><a href="http://people.skolelinux.org/pere/blog/archive/2012/07/">July (17)</a></li>
857
858 <li><a href="http://people.skolelinux.org/pere/blog/archive/2012/08/">August (6)</a></li>
859
860 <li><a href="http://people.skolelinux.org/pere/blog/archive/2012/09/">September (9)</a></li>
861
862 <li><a href="http://people.skolelinux.org/pere/blog/archive/2012/10/">October (17)</a></li>
863
864 <li><a href="http://people.skolelinux.org/pere/blog/archive/2012/11/">November (10)</a></li>
865
866 <li><a href="http://people.skolelinux.org/pere/blog/archive/2012/12/">December (7)</a></li>
867
868 </ul></li>
869
870 <li>2011
871 <ul>
872
873 <li><a href="http://people.skolelinux.org/pere/blog/archive/2011/01/">January (16)</a></li>
874
875 <li><a href="http://people.skolelinux.org/pere/blog/archive/2011/02/">February (6)</a></li>
876
877 <li><a href="http://people.skolelinux.org/pere/blog/archive/2011/03/">March (6)</a></li>
878
879 <li><a href="http://people.skolelinux.org/pere/blog/archive/2011/04/">April (7)</a></li>
880
881 <li><a href="http://people.skolelinux.org/pere/blog/archive/2011/05/">May (3)</a></li>
882
883 <li><a href="http://people.skolelinux.org/pere/blog/archive/2011/06/">June (2)</a></li>
884
885 <li><a href="http://people.skolelinux.org/pere/blog/archive/2011/07/">July (7)</a></li>
886
887 <li><a href="http://people.skolelinux.org/pere/blog/archive/2011/08/">August (6)</a></li>
888
889 <li><a href="http://people.skolelinux.org/pere/blog/archive/2011/09/">September (4)</a></li>
890
891 <li><a href="http://people.skolelinux.org/pere/blog/archive/2011/10/">October (2)</a></li>
892
893 <li><a href="http://people.skolelinux.org/pere/blog/archive/2011/11/">November (3)</a></li>
894
895 <li><a href="http://people.skolelinux.org/pere/blog/archive/2011/12/">December (1)</a></li>
896
897 </ul></li>
898
899 <li>2010
900 <ul>
901
902 <li><a href="http://people.skolelinux.org/pere/blog/archive/2010/01/">January (2)</a></li>
903
904 <li><a href="http://people.skolelinux.org/pere/blog/archive/2010/02/">February (1)</a></li>
905
906 <li><a href="http://people.skolelinux.org/pere/blog/archive/2010/03/">March (3)</a></li>
907
908 <li><a href="http://people.skolelinux.org/pere/blog/archive/2010/04/">April (3)</a></li>
909
910 <li><a href="http://people.skolelinux.org/pere/blog/archive/2010/05/">May (9)</a></li>
911
912 <li><a href="http://people.skolelinux.org/pere/blog/archive/2010/06/">June (14)</a></li>
913
914 <li><a href="http://people.skolelinux.org/pere/blog/archive/2010/07/">July (12)</a></li>
915
916 <li><a href="http://people.skolelinux.org/pere/blog/archive/2010/08/">August (13)</a></li>
917
918 <li><a href="http://people.skolelinux.org/pere/blog/archive/2010/09/">September (7)</a></li>
919
920 <li><a href="http://people.skolelinux.org/pere/blog/archive/2010/10/">October (9)</a></li>
921
922 <li><a href="http://people.skolelinux.org/pere/blog/archive/2010/11/">November (13)</a></li>
923
924 <li><a href="http://people.skolelinux.org/pere/blog/archive/2010/12/">December (12)</a></li>
925
926 </ul></li>
927
928 <li>2009
929 <ul>
930
931 <li><a href="http://people.skolelinux.org/pere/blog/archive/2009/01/">January (8)</a></li>
932
933 <li><a href="http://people.skolelinux.org/pere/blog/archive/2009/02/">February (8)</a></li>
934
935 <li><a href="http://people.skolelinux.org/pere/blog/archive/2009/03/">March (12)</a></li>
936
937 <li><a href="http://people.skolelinux.org/pere/blog/archive/2009/04/">April (10)</a></li>
938
939 <li><a href="http://people.skolelinux.org/pere/blog/archive/2009/05/">May (9)</a></li>
940
941 <li><a href="http://people.skolelinux.org/pere/blog/archive/2009/06/">June (3)</a></li>
942
943 <li><a href="http://people.skolelinux.org/pere/blog/archive/2009/07/">July (4)</a></li>
944
945 <li><a href="http://people.skolelinux.org/pere/blog/archive/2009/08/">August (3)</a></li>
946
947 <li><a href="http://people.skolelinux.org/pere/blog/archive/2009/09/">September (1)</a></li>
948
949 <li><a href="http://people.skolelinux.org/pere/blog/archive/2009/10/">October (2)</a></li>
950
951 <li><a href="http://people.skolelinux.org/pere/blog/archive/2009/11/">November (3)</a></li>
952
953 <li><a href="http://people.skolelinux.org/pere/blog/archive/2009/12/">December (3)</a></li>
954
955 </ul></li>
956
957 <li>2008
958 <ul>
959
960 <li><a href="http://people.skolelinux.org/pere/blog/archive/2008/11/">November (5)</a></li>
961
962 <li><a href="http://people.skolelinux.org/pere/blog/archive/2008/12/">December (7)</a></li>
963
964 </ul></li>
965
966 </ul>
967
968
969
970 <h2>Tags</h2>
971 <ul>
972
973 <li><a href="http://people.skolelinux.org/pere/blog/tags/3d-printer">3d-printer (13)</a></li>
974
975 <li><a href="http://people.skolelinux.org/pere/blog/tags/amiga">amiga (1)</a></li>
976
977 <li><a href="http://people.skolelinux.org/pere/blog/tags/aros">aros (1)</a></li>
978
979 <li><a href="http://people.skolelinux.org/pere/blog/tags/bankid">bankid (4)</a></li>
980
981 <li><a href="http://people.skolelinux.org/pere/blog/tags/bitcoin">bitcoin (9)</a></li>
982
983 <li><a href="http://people.skolelinux.org/pere/blog/tags/bootsystem">bootsystem (16)</a></li>
984
985 <li><a href="http://people.skolelinux.org/pere/blog/tags/bsa">bsa (2)</a></li>
986
987 <li><a href="http://people.skolelinux.org/pere/blog/tags/chrpath">chrpath (2)</a></li>
988
989 <li><a href="http://people.skolelinux.org/pere/blog/tags/debian">debian (134)</a></li>
990
991 <li><a href="http://people.skolelinux.org/pere/blog/tags/debian edu">debian edu (157)</a></li>
992
993 <li><a href="http://people.skolelinux.org/pere/blog/tags/digistan">digistan (10)</a></li>
994
995 <li><a href="http://people.skolelinux.org/pere/blog/tags/dld">dld (15)</a></li>
996
997 <li><a href="http://people.skolelinux.org/pere/blog/tags/docbook">docbook (23)</a></li>
998
999 <li><a href="http://people.skolelinux.org/pere/blog/tags/drivstoffpriser">drivstoffpriser (4)</a></li>
1000
1001 <li><a href="http://people.skolelinux.org/pere/blog/tags/english">english (326)</a></li>
1002
1003 <li><a href="http://people.skolelinux.org/pere/blog/tags/fiksgatami">fiksgatami (23)</a></li>
1004
1005 <li><a href="http://people.skolelinux.org/pere/blog/tags/fildeling">fildeling (12)</a></li>
1006
1007 <li><a href="http://people.skolelinux.org/pere/blog/tags/freeculture">freeculture (28)</a></li>
1008
1009 <li><a href="http://people.skolelinux.org/pere/blog/tags/freedombox">freedombox (9)</a></li>
1010
1011 <li><a href="http://people.skolelinux.org/pere/blog/tags/frikanalen">frikanalen (18)</a></li>
1012
1013 <li><a href="http://people.skolelinux.org/pere/blog/tags/h264">h264 (20)</a></li>
1014
1015 <li><a href="http://people.skolelinux.org/pere/blog/tags/intervju">intervju (42)</a></li>
1016
1017 <li><a href="http://people.skolelinux.org/pere/blog/tags/isenkram">isenkram (12)</a></li>
1018
1019 <li><a href="http://people.skolelinux.org/pere/blog/tags/kart">kart (19)</a></li>
1020
1021 <li><a href="http://people.skolelinux.org/pere/blog/tags/ldap">ldap (9)</a></li>
1022
1023 <li><a href="http://people.skolelinux.org/pere/blog/tags/lenker">lenker (8)</a></li>
1024
1025 <li><a href="http://people.skolelinux.org/pere/blog/tags/lsdvd">lsdvd (2)</a></li>
1026
1027 <li><a href="http://people.skolelinux.org/pere/blog/tags/ltsp">ltsp (1)</a></li>
1028
1029 <li><a href="http://people.skolelinux.org/pere/blog/tags/mesh network">mesh network (8)</a></li>
1030
1031 <li><a href="http://people.skolelinux.org/pere/blog/tags/multimedia">multimedia (39)</a></li>
1032
1033 <li><a href="http://people.skolelinux.org/pere/blog/tags/nice free software">nice free software (8)</a></li>
1034
1035 <li><a href="http://people.skolelinux.org/pere/blog/tags/norsk">norsk (276)</a></li>
1036
1037 <li><a href="http://people.skolelinux.org/pere/blog/tags/nuug">nuug (182)</a></li>
1038
1039 <li><a href="http://people.skolelinux.org/pere/blog/tags/offentlig innsyn">offentlig innsyn (26)</a></li>
1040
1041 <li><a href="http://people.skolelinux.org/pere/blog/tags/open311">open311 (2)</a></li>
1042
1043 <li><a href="http://people.skolelinux.org/pere/blog/tags/opphavsrett">opphavsrett (61)</a></li>
1044
1045 <li><a href="http://people.skolelinux.org/pere/blog/tags/personvern">personvern (92)</a></li>
1046
1047 <li><a href="http://people.skolelinux.org/pere/blog/tags/raid">raid (1)</a></li>
1048
1049 <li><a href="http://people.skolelinux.org/pere/blog/tags/reactos">reactos (1)</a></li>
1050
1051 <li><a href="http://people.skolelinux.org/pere/blog/tags/reprap">reprap (11)</a></li>
1052
1053 <li><a href="http://people.skolelinux.org/pere/blog/tags/rfid">rfid (3)</a></li>
1054
1055 <li><a href="http://people.skolelinux.org/pere/blog/tags/robot">robot (9)</a></li>
1056
1057 <li><a href="http://people.skolelinux.org/pere/blog/tags/rss">rss (1)</a></li>
1058
1059 <li><a href="http://people.skolelinux.org/pere/blog/tags/ruter">ruter (4)</a></li>
1060
1061 <li><a href="http://people.skolelinux.org/pere/blog/tags/scraperwiki">scraperwiki (2)</a></li>
1062
1063 <li><a href="http://people.skolelinux.org/pere/blog/tags/sikkerhet">sikkerhet (48)</a></li>
1064
1065 <li><a href="http://people.skolelinux.org/pere/blog/tags/sitesummary">sitesummary (4)</a></li>
1066
1067 <li><a href="http://people.skolelinux.org/pere/blog/tags/skepsis">skepsis (5)</a></li>
1068
1069 <li><a href="http://people.skolelinux.org/pere/blog/tags/standard">standard (49)</a></li>
1070
1071 <li><a href="http://people.skolelinux.org/pere/blog/tags/stavekontroll">stavekontroll (4)</a></li>
1072
1073 <li><a href="http://people.skolelinux.org/pere/blog/tags/stortinget">stortinget (10)</a></li>
1074
1075 <li><a href="http://people.skolelinux.org/pere/blog/tags/surveillance">surveillance (37)</a></li>
1076
1077 <li><a href="http://people.skolelinux.org/pere/blog/tags/sysadmin">sysadmin (2)</a></li>
1078
1079 <li><a href="http://people.skolelinux.org/pere/blog/tags/usenix">usenix (2)</a></li>
1080
1081 <li><a href="http://people.skolelinux.org/pere/blog/tags/valg">valg (8)</a></li>
1082
1083 <li><a href="http://people.skolelinux.org/pere/blog/tags/video">video (59)</a></li>
1084
1085 <li><a href="http://people.skolelinux.org/pere/blog/tags/vitenskap">vitenskap (4)</a></li>
1086
1087 <li><a href="http://people.skolelinux.org/pere/blog/tags/web">web (38)</a></li>
1088
1089 </ul>
1090
1091
1092 </div>
1093 <p style="text-align: right">
1094 Created by <a href="http://steve.org.uk/Software/chronicle">Chronicle v4.6</a>
1095 </p>
1096
1097 </body>
1098 </html>