]> 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/A_bit_more_on_privacy_respecting_health_monitor___fitness_tracker.html">A bit more on privacy respecting health monitor / fitness tracker</a></div>
24 <div class="date">13th August 2018</div>
25 <div class="body"><p>A few days ago, I wondered if there are any privacy respecting
26 health monitors and/or fitness trackers available for sale these days.
27 I would like to buy one, but do not want to share my personal data
28 with strangers, nor be forced to have a mobile phone to get data out
29 of the unit. I've received some ideas, and would like to share them
30 with you.
31
32 One interesting data point was a pointer to a Free Software app for
33 Android called
34 <a href="https://github.com/Freeyourgadget/Gadgetbridge/">Gadgetbridge</a>.
35 It provide cloudless collection and storing of data from a variety of
36 trackers. Its
37 <a href="https://github.com/Freeyourgadget/Gadgetbridge/#supported-devices">list
38 of supported devices</a> is a good indicator for units where the
39 protocol is fairly open, as it is obviously being handled by Free
40 Software. Other units are reportedly encrypting the collected
41 information with their own public key, making sure only the vendor
42 cloud service is able to extract data from the unit. The people
43 contacting me about it said they were using
44 <a href="https://us.amazfit.com/shop/bip?variant=336750">Amazfit
45 Bip</a> and
46 <a href="http://www.xiaomimi6phone.com/xiaomi-mi-band-3-features-release-date-rumors/">Xiaomi
47 Band 3</a>.</p>
48
49 <p>I also got a suggestion to look at some of the units from Garmin.
50 I was told their GPS watches can be connected via USB and show up as a
51 USB storage device with
52 <a href="https://www.gpsbabel.org/htmldoc-development/fmt_garmin_fit.html">Garmin
53 FIT files</a> containing the collected measurements. While
54 proprietary, FIT files apparently can be read at least by
55 <a href="https://www.gpsbabel.org">GPSBabel</a> and the
56 <a href="https://apps.nextcloud.com/apps/gpxpod">GpxPod</a> Nextcloud
57 app. It is unclear to me if they can read step count and heart rate
58 data. The person I talked to was using a Garmin
59 <a href="https://buy.garmin.com/en-US/US/p/564291">Garmin Forerunner
60 935</a>, which is a fairly expensive unit. I doubt it is worth it for
61 a unit where the vendor clearly is trying its best to move from open
62 to closed systems. I still remember when Garmin dropped NMEA support
63 in its GPSes.</p>
64
65 <p>A final idea was to build ones own unit, perhaps by basing it on a
66 wearable hardware platforms like
67 <a href="https://learn.adafruit.com/flora-geo-watch">the Flora Geo
68 Watch</a>. Sound like fun, but I had more money than time to spend on
69 the topic, so I suspect it will have to wait for another time.</p>
70
71 <p>While I was working on tracking down links, I came across an
72 inspiring TED talk by Dave Debronkart about
73 <a href="https://archive.org/details/DavedeBronkart_2010X">being a
74 e-patient</a>, and discovered the web site
75 <a href="https://participatorymedicine.org/epatients/">Participatory
76 Medicine</a>. If you too want to track your own health and fitness
77 without having information about your private life floating around on
78 computers owned by others, I recommend checking it out.</p>
79
80 <p>As usual, if you use Bitcoin and want to show your support of my
81 activities, please send Bitcoin donations to my address
82 <b><a href="bitcoin:15oWEoG9dUPovwmUL9KWAnYRtNJEkP1u1b">15oWEoG9dUPovwmUL9KWAnYRtNJEkP1u1b</a></b>.</p>
83 </div>
84 <div class="tags">
85
86
87 Tags: <a href="http://people.skolelinux.org/pere/blog/tags/english">english</a>.
88
89
90 </div>
91 </div>
92 <div class="padding"></div>
93
94 <div class="entry">
95 <div class="title"><a href="http://people.skolelinux.org/pere/blog/Privacy_respecting_health_monitor___fitness_tracker_.html">Privacy respecting health monitor / fitness tracker?</a></div>
96 <div class="date"> 7th August 2018</div>
97 <div class="body"><p>Dear lazyweb,</p>
98
99 <p>I wonder, is there a fitness tracker / health monitor available for
100 sale today that respect the users privacy? With this I mean a
101 watch/bracelet capable of measuring pulse rate and other
102 fitness/health related values (and by all means, also the correct time
103 and location if possible), which is <strong>only</strong> provided for
104 me to extract/read from the unit with computer without a radio beacon
105 and Internet connection. In other words, it do not depend on a cell
106 phone app, and do make the measurements available via other peoples
107 computer (aka "the cloud"). The collected data should be available
108 using only free software. I'm not interested in depending on some
109 non-free software that will leave me high and dry some time in the
110 future. I've been unable to find any such unit. I would like to buy
111 it. The ones I have seen for sale here in Norway are proud to report
112 that they share my health data with strangers (aka "cloud enabled").
113 Is there an alternative? I'm not interested in giving money to people
114 requiring me to accept "privacy terms" to allow myself to measure my
115 own health.</p>
116
117 <p>As usual, if you use Bitcoin and want to show your support of my
118 activities, please send Bitcoin donations to my address
119 <b><a href="bitcoin:15oWEoG9dUPovwmUL9KWAnYRtNJEkP1u1b">15oWEoG9dUPovwmUL9KWAnYRtNJEkP1u1b</a></b>.</p>
120 </div>
121 <div class="tags">
122
123
124 Tags: <a href="http://people.skolelinux.org/pere/blog/tags/english">english</a>.
125
126
127 </div>
128 </div>
129 <div class="padding"></div>
130
131 <div class="entry">
132 <div class="title"><a href="http://people.skolelinux.org/pere/blog/Sharing_images_with_friends_and_family_using_RSS_and_EXIF_XMP_metadata.html">Sharing images with friends and family using RSS and EXIF/XMP metadata</a></div>
133 <div class="date">31st July 2018</div>
134 <div class="body"><p>For a while now, I have looked for a sensible way to share images
135 with my family using a self hosted solution, as it is unacceptable to
136 place images from my personal life under the control of strangers
137 working for data hoarders like Google or Dropbox. The last few days I
138 have drafted an approach that might work out, and I would like to
139 share it with you. I would like to publish images on a server under
140 my control, and point some Internet connected display units using some
141 free and open standard to the images I published. As my primary
142 language is not limited to ASCII, I need to store metadata using
143 UTF-8. Many years ago, I hoped to find a digital photo frame capable
144 of reading a RSS feed with image references (aka using the
145 &lt;enclosure&gt; RSS tag), but was unable to find a current supplier
146 of such frames. In the end I gave up that approach.</p>
147
148 <p>Some months ago, I discovered that
149 <a href="https://www.jwz.org/xscreensaver/">XScreensaver</a> is able to
150 read images from a RSS feed, and used it to set up a screen saver on
151 my home info screen, showing images from the Daily images feed from
152 NASA. This proved to work well. More recently I discovered that
153 <a href="https://kodi.tv">Kodi</a> (both using
154 <a href="https://www.openelec.tv/">OpenELEC</a> and
155 <a href="https://libreelec.tv">LibreELEC</a>) provide the
156 <a href="https://github.com/grinsted/script.screensaver.feedreader">Feedreader</a>
157 screen saver capable of reading a RSS feed with images and news. For
158 fun, I used it this summer to test Kodi on my parents TV by hooking up
159 a Raspberry PI unit with LibreELEC, and wanted to provide them with a
160 screen saver showing selected pictures from my selection.</p>
161
162 <p>Armed with motivation and a test photo frame, I set out to generate
163 a RSS feed for the Kodi instance. I adjusted my <a
164 href="https://freedombox.org/">Freedombox</a> instance, created
165 /var/www/html/privatepictures/, wrote a small Perl script to extract
166 title and description metadata from the photo files and generate the
167 RSS file. I ended up using Perl instead of python, as the
168 libimage-exiftool-perl Debian package seemed to handle the EXIF/XMP
169 tags I ended up using, while python3-exif did not. The relevant EXIF
170 tags only support ASCII, so I had to find better alternatives. XMP
171 seem to have the support I need.</p>
172
173 <p>I am a bit unsure which EXIF/XMP tags to use, as I would like to
174 use tags that can be easily added/updated using normal free software
175 photo managing software. I ended up using the tags set using this
176 exiftool command, as these tags can also be set using digiKam:</p>
177
178 <blockquote><pre>
179 exiftool -headline='The RSS image title' \
180 -description='The RSS image description.' \
181 -subject+=for-family photo.jpeg
182 </pre></blockquote>
183
184 <p>I initially tried the "-title" and "keyword" tags, but they were
185 invisible in digiKam, so I changed to "-headline" and "-subject". I
186 use the keyword/subject 'for-family' to flag that the photo should be
187 shared with my family. Images with this keyword set are located and
188 copied into my Freedombox for the RSS generating script to find.</p>
189
190 <p>Are there better ways to do this? Get in touch if you have better
191 suggestions.</p>
192
193 <p>As usual, if you use Bitcoin and want to show your support of my
194 activities, please send Bitcoin donations to my address
195 <b><a href="bitcoin:15oWEoG9dUPovwmUL9KWAnYRtNJEkP1u1b">15oWEoG9dUPovwmUL9KWAnYRtNJEkP1u1b</a></b>.</p>
196 </div>
197 <div class="tags">
198
199
200 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>.
201
202
203 </div>
204 </div>
205 <div class="padding"></div>
206
207 <div class="entry">
208 <div class="title"><a href="http://people.skolelinux.org/pere/blog/Simple_streaming_the_Linux_desktop_to_Kodi_using_GStreamer_and_RTP.html">Simple streaming the Linux desktop to Kodi using GStreamer and RTP</a></div>
209 <div class="date">12th July 2018</div>
210 <div class="body"><p>Last night, I wrote
211 <a href="http://people.skolelinux.org/pere/blog/Streaming_the_Linux_desktop_to_Kodi_using_VLC_and_RTSP.html">a
212 recipe to stream a Linux desktop using VLC to a instance of Kodi</a>.
213 During the day I received valuable feedback, and thanks to the
214 suggestions I have been able to rewrite the recipe into a much simpler
215 approach requiring no setup at all. It is a single script that take
216 care of it all.</p>
217
218 <p>This new script uses GStreamer instead of VLC to capture the
219 desktop and stream it to Kodi. This fixed the video quality issue I
220 saw initially. It further removes the need to add a m3u file on the
221 Kodi machine, as it instead connects to
222 <a href="https://kodi.wiki/view/JSON-RPC_API/v8">the JSON-RPC API in
223 Kodi</a> and simply ask Kodi to play from the stream created using
224 GStreamer. Streaming the desktop to Kodi now become trivial. Copy
225 the script below, run it with the DNS name or IP address of the kodi
226 server to stream to as the only argument, and watch your screen show
227 up on the Kodi screen. Note, it depend on multicast on the local
228 network, so if you need to stream outside the local network, the
229 script must be modified. Also note, I have no idea if audio work, as
230 I only care about the picture part.</p>
231
232 <blockquote><pre>
233 #!/bin/sh
234 #
235 # Stream the Linux desktop view to Kodi. See
236 # http://people.skolelinux.org/pere/blog/Streaming_the_Linux_desktop_to_Kodi_using_VLC_and_RTSP.html
237 # for backgorund information.
238
239 # Make sure the stream is stopped in Kodi and the gstreamer process is
240 # killed if something go wrong (for example if curl is unable to find the
241 # kodi server). Do the same when interrupting this script.
242 kodicmd() {
243 host="$1"
244 cmd="$2"
245 params="$3"
246 curl --silent --header 'Content-Type: application/json' \
247 --data-binary "{ \"id\": 1, \"jsonrpc\": \"2.0\", \"method\": \"$cmd\", \"params\": $params }" \
248 "http://$host/jsonrpc"
249 }
250 cleanup() {
251 if [ -n "$kodihost" ] ; then
252 # Stop the playing when we end
253 playerid=$(kodicmd "$kodihost" Player.GetActivePlayers "{}" |
254 jq .result[].playerid)
255 kodicmd "$kodihost" Player.Stop "{ \"playerid\" : $playerid }" > /dev/null
256 fi
257 if [ "$gstpid" ] && kill -0 "$gstpid" >/dev/null 2>&1; then
258 kill "$gstpid"
259 fi
260 }
261 trap cleanup EXIT INT
262
263 if [ -n "$1" ]; then
264 kodihost=$1
265 shift
266 else
267 kodihost=kodi.local
268 fi
269
270 mcast=239.255.0.1
271 mcastport=1234
272 mcastttl=1
273
274 pasrc=$(pactl list | grep -A2 'Source #' | grep 'Name: .*\.monitor$' | \
275 cut -d" " -f2|head -1)
276 gst-launch-1.0 ximagesrc use-damage=0 ! video/x-raw,framerate=30/1 ! \
277 videoconvert ! queue2 ! \
278 x264enc bitrate=8000 speed-preset=superfast tune=zerolatency qp-min=30 \
279 key-int-max=15 bframes=2 ! video/x-h264,profile=high ! queue2 ! \
280 mpegtsmux alignment=7 name=mux ! rndbuffersize max=1316 min=1316 ! \
281 udpsink host=$mcast port=$mcastport ttl-mc=$mcastttl auto-multicast=1 sync=0 \
282 pulsesrc device=$pasrc ! audioconvert ! queue2 ! avenc_aac ! queue2 ! mux. \
283 > /dev/null 2>&1 &
284 gstpid=$!
285
286 # Give stream a second to get going
287 sleep 1
288
289 # Ask kodi to start streaming using its JSON-RPC API
290 kodicmd "$kodihost" Player.Open \
291 "{\"item\": { \"file\": \"udp://@$mcast:$mcastport\" } }" > /dev/null
292
293 # wait for gst to end
294 wait "$gstpid"
295 </pre></blockquote>
296
297 <p>I hope you find the approach useful. I know I do.</p>
298
299 <p>As usual, if you use Bitcoin and want to show your support of my
300 activities, please send Bitcoin donations to my address
301 <b><a href="bitcoin:15oWEoG9dUPovwmUL9KWAnYRtNJEkP1u1b">15oWEoG9dUPovwmUL9KWAnYRtNJEkP1u1b</a></b>.</p>
302 </div>
303 <div class="tags">
304
305
306 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/video">video</a>.
307
308
309 </div>
310 </div>
311 <div class="padding"></div>
312
313 <div class="entry">
314 <div class="title"><a href="http://people.skolelinux.org/pere/blog/Streaming_the_Linux_desktop_to_Kodi_using_VLC_and_RTSP.html">Streaming the Linux desktop to Kodi using VLC and RTSP</a></div>
315 <div class="date">12th July 2018</div>
316 <div class="body"><p>PS: See
317 <ahref="http://people.skolelinux.org/pere/blog/Simple_streaming_the_Linux_desktop_to_Kodi_using_GStreamer_and_RTP.html">the
318 followup post</a> for a even better approach.</p>
319
320 <p>A while back, I was asked by a friend how to stream the desktop to
321 my projector connected to Kodi. I sadly had to admit that I had no
322 idea, as it was a task I never had tried. Since then, I have been
323 looking for a way to do so, preferable without much extra software to
324 install on either side. Today I found a way that seem to kind of
325 work. Not great, but it is a start.</p>
326
327 <p>I had a look at several approaches, for example
328 <a href="https://github.com/mfoetsch/dlna_live_streaming">using uPnP
329 DLNA as described in 2011</a>, but it required a uPnP server, fuse and
330 local storage enough to store the stream locally. This is not going
331 to work well for me, lacking enough free space, and it would
332 impossible for my friend to get working.</p>
333
334 <p>Next, it occurred to me that perhaps I could use VLC to create a
335 video stream that Kodi could play. Preferably using
336 broadcast/multicast, to avoid having to change any setup on the Kodi
337 side when starting such stream. Unfortunately, the only recipe I
338 could find using multicast used the rtp protocol, and this protocol
339 seem to not be supported by Kodi.</p>
340
341 <p>On the other hand, the rtsp protocol is working! Unfortunately I
342 have to specify the IP address of the streaming machine in both the
343 sending command and the file on the Kodi server. But it is showing my
344 desktop, and thus allow us to have a shared look on the big screen at
345 the programs I work on.</p>
346
347 <p>I did not spend much time investigating codeces. I combined the
348 rtp and rtsp recipes from
349 <a href="https://wiki.videolan.org/Documentation:Streaming_HowTo/Command_Line_Examples/">the
350 VLC Streaming HowTo/Command Line Examples</a>, and was able to get
351 this working on the desktop/streaming end.</p>
352
353 <blockquote><pre>
354 vlc screen:// --sout \
355 '#transcode{vcodec=mp4v,acodec=mpga,vb=800,ab=128}:rtp{dst=projector.local,port=1234,sdp=rtsp://192.168.11.4:8080/test.sdp}'
356 </pre></blockquote>
357
358 <p>I ssh-ed into my Kodi box and created a file like this with the
359 same IP address:</p>
360
361 <blockquote><pre>
362 echo rtsp://192.168.11.4:8080/test.sdp \
363 > /storage/videos/screenstream.m3u
364 </pre></blockquote>
365
366 <p>Note the 192.168.11.4 IP address is my desktops IP address. As far
367 as I can tell the IP must be hardcoded for this to work. In other
368 words, if someone elses machine is going to do the steaming, you have
369 to update screenstream.m3u on the Kodi machine and adjust the vlc
370 recipe. To get started, locate the file in Kodi and select the m3u
371 file while the VLC stream is running. The desktop then show up in my
372 big screen. :)</p>
373
374 <p>When using the same technique to stream a video file with audio,
375 the audio quality is really bad. No idea if the problem is package
376 loss or bad parameters for the transcode. I do not know VLC nor Kodi
377 enough to tell.</p>
378
379 <p><strong>Update 2018-07-12</strong>: Johannes Schauer send me a few
380 succestions and reminded me about an important step. The "screen:"
381 input source is only available once the vlc-plugin-access-extra
382 package is installed on Debian. Without it, you will see this error
383 message: "VLC is unable to open the MRL 'screen://'. Check the log
384 for details." He further found that it is possible to drop some parts
385 of the VLC command line to reduce the amount of hardcoded information.
386 It is also useful to consider using cvlc to avoid having the VLC
387 window in the desktop view. In sum, this give us this command line on
388 the source end
389
390 <blockquote><pre>
391 cvlc screen:// --sout \
392 '#transcode{vcodec=mp4v,acodec=mpga,vb=800,ab=128}:rtp{sdp=rtsp://:8080/}'
393 </pre></blockquote>
394
395 <p>and this on the Kodi end<p>
396
397 <blockquote><pre>
398 echo rtsp://192.168.11.4:8080/ \
399 > /storage/videos/screenstream.m3u
400 </pre></blockquote>
401
402 <p>Still bad image quality, though. But I did discover that streaming
403 a DVD using dvdsimple:///dev/dvd as the source had excellent video and
404 audio quality, so I guess the issue is in the input or transcoding
405 parts, not the rtsp part. I've tried to change the vb and ab
406 parameters to use more bandwidth, but it did not make a
407 difference.</p>
408
409 <p>I further received a suggestion from Einar Haraldseid to try using
410 gstreamer instead of VLC, and this proved to work great! He also
411 provided me with the trick to get Kodi to use a multicast stream as
412 its source. By using this monstrous oneliner, I can stream my desktop
413 with good video quality in reasonable framerate to the 239.255.0.1
414 multicast address on port 1234:
415
416 <blockquote><pre>
417 gst-launch-1.0 ximagesrc use-damage=0 ! video/x-raw,framerate=30/1 ! \
418 videoconvert ! queue2 ! \
419 x264enc bitrate=8000 speed-preset=superfast tune=zerolatency qp-min=30 \
420 key-int-max=15 bframes=2 ! video/x-h264,profile=high ! queue2 ! \
421 mpegtsmux alignment=7 name=mux ! rndbuffersize max=1316 min=1316 ! \
422 udpsink host=239.255.0.1 port=1234 ttl-mc=1 auto-multicast=1 sync=0 \
423 pulsesrc device=$(pactl list | grep -A2 'Source #' | \
424 grep 'Name: .*\.monitor$' | cut -d" " -f2|head -1) ! \
425 audioconvert ! queue2 ! avenc_aac ! queue2 ! mux.
426 </pre></blockquote>
427
428 <p>and this on the Kodi end<p>
429
430 <blockquote><pre>
431 echo udp://@239.255.0.1:1234 \
432 > /storage/videos/screenstream.m3u
433 </pre></blockquote>
434
435 <p>Note the trick to pick a valid pulseaudio source. It might not
436 pick the one you need. This approach will of course lead to trouble
437 if more than one source uses the same multicast port and address.
438 Note the ttl-mc=1 setting, which limit the multicast packages to the
439 local network. If the value is increased, your screen will be
440 broadcasted further, one network "hop" for each increase (read up on
441 multicast to learn more. :)!</p>
442
443 <p>Having cracked how to get Kodi to receive multicast streams, I
444 could use this VLC command to stream to the same multicast address.
445 The image quality is way better than the rtsp approach, but gstreamer
446 seem to be doing a better job.</p>
447
448 <blockquote><pre>
449 cvlc screen:// --sout '#transcode{vcodec=mp4v,acodec=mpga,vb=800,ab=128}:rtp{mux=ts,dst=239.255.0.1,port=1234,sdp=sap}'
450 </pre></blockquote>
451
452 <p>As usual, if you use Bitcoin and want to show your support of my
453 activities, please send Bitcoin donations to my address
454 <b><a href="bitcoin:15oWEoG9dUPovwmUL9KWAnYRtNJEkP1u1b">15oWEoG9dUPovwmUL9KWAnYRtNJEkP1u1b</a></b>.</p>
455 </div>
456 <div class="tags">
457
458
459 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/video">video</a>.
460
461
462 </div>
463 </div>
464 <div class="padding"></div>
465
466 <div class="entry">
467 <div class="title"><a href="http://people.skolelinux.org/pere/blog/What_is_the_most_supported_MIME_type_in_Debian_in_2018_.html">What is the most supported MIME type in Debian in 2018?</a></div>
468 <div class="date"> 9th July 2018</div>
469 <div class="body"><p>Five years ago,
470 <a href="http://people.skolelinux.org/pere/blog/What_is_the_most_supported_MIME_type_in_Debian_.html">I
471 measured what the most supported MIME type in Debian was</a>, by
472 analysing the desktop files in all packages in the archive. Since
473 then, the DEP-11 AppStream system has been put into production, making
474 the task a lot easier. This made me want to repeat the measurement,
475 to see how much things changed. Here are the new numbers, for
476 unstable only this time:
477
478 <p><strong>Debian Unstable:</strong></p>
479
480 <pre>
481 count MIME type
482 ----- -----------------------
483 56 image/jpeg
484 55 image/png
485 49 image/tiff
486 48 image/gif
487 39 image/bmp
488 38 text/plain
489 37 audio/mpeg
490 34 application/ogg
491 33 audio/x-flac
492 32 audio/x-mp3
493 30 audio/x-wav
494 30 audio/x-vorbis+ogg
495 29 image/x-portable-pixmap
496 27 inode/directory
497 27 image/x-portable-bitmap
498 27 audio/x-mpeg
499 26 application/x-ogg
500 25 audio/x-mpegurl
501 25 audio/ogg
502 24 text/html
503 </pre>
504
505 <p>The list was created like this using a sid chroot: "cat
506 /var/lib/apt/lists/*sid*_dep11_Components-amd64.yml.gz| zcat | awk '/^
507 - \S+\/\S+$/ {print $2 }' | sort | uniq -c | sort -nr | head -20"</p>
508
509 <p>It is interesting to see how image formats have passed text/plain
510 as the most announced supported MIME type. These days, thanks to the
511 AppStream system, if you run into a file format you do not know, and
512 want to figure out which packages support the format, you can find the
513 MIME type of the file using "file --mime &lt;filename&gt;", and then
514 look up all packages announcing support for this format in their
515 AppStream metadata (XML or .desktop file) using "appstreamcli
516 what-provides mimetype &lt;mime-type&gt;. For example if you, like
517 me, want to know which packages support inode/directory, you can get a
518 list like this:</p>
519
520 <p><blockquote><pre>
521 % appstreamcli what-provides mimetype inode/directory | grep Package: | sort
522 Package: anjuta
523 Package: audacious
524 Package: baobab
525 Package: cervisia
526 Package: chirp
527 Package: dolphin
528 Package: doublecmd-common
529 Package: easytag
530 Package: enlightenment
531 Package: ephoto
532 Package: filelight
533 Package: gwenview
534 Package: k4dirstat
535 Package: kaffeine
536 Package: kdesvn
537 Package: kid3
538 Package: kid3-qt
539 Package: nautilus
540 Package: nemo
541 Package: pcmanfm
542 Package: pcmanfm-qt
543 Package: qweborf
544 Package: ranger
545 Package: sirikali
546 Package: spacefm
547 Package: spacefm
548 Package: vifm
549 %
550 </pre></blockquote></p>
551
552 <p>Using the same method, I can quickly discover that the Sketchup file
553 format is not yet supported by any package in Debian:</p>
554
555 <p><blockquote><pre>
556 % appstreamcli what-provides mimetype application/vnd.sketchup.skp
557 Could not find component providing 'mimetype::application/vnd.sketchup.skp'.
558 %
559 </pre></blockquote></p>
560
561 <p>Yesterday I used it to figure out which packages support the STL 3D
562 format:</p>
563
564 <p><blockquote><pre>
565 % appstreamcli what-provides mimetype application/sla|grep Package
566 Package: cura
567 Package: meshlab
568 Package: printrun
569 %
570 </pre></blockquote></p>
571
572 <p>PS: A new version of Cura was uploaded to Debian yesterday.</p>
573
574 <p>As usual, if you use Bitcoin and want to show your support of my
575 activities, please send Bitcoin donations to my address
576 <b><a href="bitcoin:15oWEoG9dUPovwmUL9KWAnYRtNJEkP1u1b">15oWEoG9dUPovwmUL9KWAnYRtNJEkP1u1b</a></b>.</p>
577 </div>
578 <div class="tags">
579
580
581 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>.
582
583
584 </div>
585 </div>
586 <div class="padding"></div>
587
588 <div class="entry">
589 <div class="title"><a href="http://people.skolelinux.org/pere/blog/Debian_APT_upgrade_without_enough_free_space_on_the_disk___.html">Debian APT upgrade without enough free space on the disk...</a></div>
590 <div class="date"> 8th July 2018</div>
591 <div class="body"><p>Quite regularly, I let my Debian Sid/Unstable chroot stay untouch
592 for a while, and when I need to update it there is not enough free
593 space on the disk for apt to do a normal 'apt upgrade'. I normally
594 would resolve the issue by doing 'apt install &lt;somepackages&gt;' to
595 upgrade only some of the packages in one batch, until the amount of
596 packages to download fall below the amount of free space available.
597 Today, I had about 500 packages to upgrade, and after a while I got
598 tired of trying to install chunks of packages manually. I concluded
599 that I did not have the spare hours required to complete the task, and
600 decided to see if I could automate it. I came up with this small
601 script which I call 'apt-in-chunks':</p>
602
603 <p><blockquote><pre>
604 #!/bin/sh
605 #
606 # Upgrade packages when the disk is too full to upgrade every
607 # upgradable package in one lump. Fetching packages to upgrade using
608 # apt, and then installing using dpkg, to avoid changing the package
609 # flag for manual/automatic.
610
611 set -e
612
613 ignore() {
614 if [ "$1" ]; then
615 grep -v "$1"
616 else
617 cat
618 fi
619 }
620
621 for p in $(apt list --upgradable | ignore "$@" |cut -d/ -f1 | grep -v '^Listing...'); do
622 echo "Upgrading $p"
623 apt clean
624 apt install --download-only -y $p
625 for f in /var/cache/apt/archives/*.deb; do
626 if [ -e "$f" ]; then
627 dpkg -i /var/cache/apt/archives/*.deb
628 break
629 fi
630 done
631 done
632 </pre></blockquote></p>
633
634 <p>The script will extract the list of packages to upgrade, try to
635 download the packages needed to upgrade one package, install the
636 downloaded packages using dpkg. The idea is to upgrade packages
637 without changing the APT mark for the package (ie the one recording of
638 the package was manually requested or pulled in as a dependency). To
639 use it, simply run it as root from the command line. If it fail, try
640 'apt install -f' to clean up the mess and run the script again. This
641 might happen if the new packages conflict with one of the old
642 packages. dpkg is unable to remove, while apt can do this.</p>
643
644 <p>It take one option, a package to ignore in the list of packages to
645 upgrade. The option to ignore a package is there to be able to skip
646 the packages that are simply too large to unpack. Today this was
647 'ghc', but I have run into other large packages causing similar
648 problems earlier (like TeX).</p>
649
650 <p>Update 2018-07-08: Thanks to Paul Wise, I am aware of two
651 alternative ways to handle this. The "unattended-upgrades
652 --minimal-upgrade-steps" option will try to calculate upgrade sets for
653 each package to upgrade, and then upgrade them in order, smallest set
654 first. It might be a better option than my above mentioned script.
655 Also, "aptutude upgrade" can upgrade single packages, thus avoiding
656 the need for using "dpkg -i" in the script above.</p>
657
658 <p>As usual, if you use Bitcoin and want to show your support of my
659 activities, please send Bitcoin donations to my address
660 <b><a href="bitcoin:15oWEoG9dUPovwmUL9KWAnYRtNJEkP1u1b">15oWEoG9dUPovwmUL9KWAnYRtNJEkP1u1b</a></b>.</p>
661 </div>
662 <div class="tags">
663
664
665 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>.
666
667
668 </div>
669 </div>
670 <div class="padding"></div>
671
672 <div class="entry">
673 <div class="title"><a href="http://people.skolelinux.org/pere/blog/The_worlds_only_stone_power_plant_.html">The worlds only stone power plant?</a></div>
674 <div class="date">30th June 2018</div>
675 <div class="body"><p>So far, at least hydro-electric power, coal power, wind power,
676 solar power, and wood power are well known. Until a few days ago, I
677 had never heard of stone power. Then I learn about a quarry in a
678 mountain in
679 <a href="https://en.wikipedia.org/wiki/Bremanger">Bremanger</a> i
680 Norway, where
681 <a href="https://www.bontrup.com/en/activities/raw-materials/bremanger-quarry/">the
682 Bremanger Quarry</a> company is extracting stone and dumping the stone
683 into a shaft leading to its shipping harbour. This downward movement
684 in this shaft is used to produce electricity. In short, it is using
685 falling rocks instead of falling water to produce electricity, and
686 according to its own statements it is producing more power than it is
687 using, and selling the surplus electricity to the Norwegian power
688 grid. I find the concept truly amazing. Is this the worlds only
689 stone power plant?</p>
690
691 <p>As usual, if you use Bitcoin and want to show your support of my
692 activities, please send Bitcoin donations to my address
693 <b><a href="bitcoin:15oWEoG9dUPovwmUL9KWAnYRtNJEkP1u1b">15oWEoG9dUPovwmUL9KWAnYRtNJEkP1u1b</a></b>.</p>
694 </div>
695 <div class="tags">
696
697
698 Tags: <a href="http://people.skolelinux.org/pere/blog/tags/english">english</a>.
699
700
701 </div>
702 </div>
703 <div class="padding"></div>
704
705 <div class="entry">
706 <div class="title"><a href="http://people.skolelinux.org/pere/blog/Add_on_to_control_the_projector_from_within_Kodi.html">Add-on to control the projector from within Kodi</a></div>
707 <div class="date">26th June 2018</div>
708 <div class="body"><p>My movie playing setup involve <a href="https://kodi.tv/">Kodi</a>,
709 <a href="https://openelec.tv">OpenELEC</a> (probably soon to be
710 replaced with <a href="https://libreelec.tv/">LibreELEC</a>) and an
711 Infocus IN76 video projector. My projector can be controlled via both
712 a infrared remote controller, and a RS-232 serial line. The vendor of
713 my projector, <a href="https://www.infocus.com/">InFocus</a>, had been
714 sensible enough to document the serial protocol in its user manual, so
715 it is easily available, and I used it some years ago to write
716 <a href="https://github.com/petterreinholdtsen/infocus-projector-control">a
717 small script to control the projector</a>. For a while now, I longed
718 for a setup where the projector was controlled by Kodi, for example in
719 such a way that when the screen saver went on, the projector was
720 turned off, and when the screen saver exited, the projector was turned
721 on again.</p>
722
723 <p>A few days ago, with very good help from parts of my family, I
724 managed to find a Kodi Add-on for controlling a Epson projector, and
725 got in touch with its author to see if we could join forces and make a
726 Add-on with support for several projectors. To my pleasure, he was
727 positive to the idea, and we set out to add InFocus support to his
728 add-on, and make the add-on suitable for the official Kodi add-on
729 repository.</p>
730
731 <p>The Add-on is now working (for me, at least), with a few minor
732 adjustments. The most important change I do relative to the master
733 branch in the github repository is embedding the
734 <a href="https://github.com/pyserial/pyserial">pyserial module</a> in
735 the add-on. The long term solution is to make a "script" type
736 pyserial module for Kodi, that can be pulled in as a dependency in
737 Kodi. But until that in place, I embed it.</p>
738
739 <p>The add-on can be configured to turn on the projector when Kodi
740 starts, off when Kodi stops as well as turn the projector off when the
741 screensaver start and on when the screesaver stops. It can also be
742 told to set the projector source when turning on the projector.
743
744 <p>If this sound interesting to you, check out
745 <a href="https://github.com/fredrik-eriksson/kodi_projcontrol">the
746 project github repository</a>. Perhaps you can send patches to
747 support your projector too? As soon as we find time to wrap up the
748 latest changes, it should be available for easy installation using any
749 Kodi instance.</p>
750
751 <p>For future improvements, I would like to add projector model
752 detection and the ability to adjust the brightness level of the
753 projector from within Kodi. We also need to figure out how to handle
754 the cooling period of the projector. My projector refuses to turn on
755 for 60 seconds after it was turned off. This is not handled well by
756 the add-on at the moment.</p>
757
758 <p>As usual, if you use Bitcoin and want to show your support of my
759 activities, please send Bitcoin donations to my address
760 <b><a href="bitcoin:15oWEoG9dUPovwmUL9KWAnYRtNJEkP1u1b">15oWEoG9dUPovwmUL9KWAnYRtNJEkP1u1b</a></b>.</p>
761 </div>
762 <div class="tags">
763
764
765 Tags: <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>.
766
767
768 </div>
769 </div>
770 <div class="padding"></div>
771
772 <div class="entry">
773 <div class="title"><a href="http://people.skolelinux.org/pere/blog/youtube_dl_for_nedlasting_fra_NRK_med_undertekster___nice_free_software.html">youtube-dl for nedlasting fra NRK med undertekster - nice free software</a></div>
774 <div class="date">28th April 2018</div>
775 <div class="body"><p>I <a href="https://no.wikipedia.org/wiki/VHS">VHS-kassettenes</a>
776 tid var det rett frem å ta vare på et TV-program en ønsket å kunne se
777 senere, uten å være avhengig av at programmet ble sendt på nytt.
778 Kanskje ønsket en å se programmet på hytten der det ikke var
779 TV-signal, eller av andre grunner ha det tilgjengelig for fremtidig
780 fornøyelse. Dette er blitt vanskeligere med introduksjon av
781 digital-TV og webstreaming, der opptak til harddisk er utenfor de
782 flestes kontroll hvis de bruker ufri programvare og bokser kontrollert
783 av andre. Men for NRK her i Norge, finnes det heldigvis flere fri
784 programvare-alternativer, som jeg har
785 <a href="http://people.skolelinux.org/pere/blog/Hvordan_enkelt_laste_ned_filmer_fra_NRK.html">skrevet</a>
786 <a href="http://people.skolelinux.org/pere/blog/Hvordan_enkelt_laste_ned_filmer_fra_NRK_med_den__nye__l_sningen.html">om</a>
787 <a href="http://people.skolelinux.org/pere/blog/Nedlasting_fra_NRK__som_Matroska_med_undertekster.html">før</a>.
788 Så lenge kilden for nedlastingen er lovlig lagt ut på nett (hvilket
789 jeg antar NRK gjør), så er slik lagring til privat bruk også lovlig i
790 Norge.</p>
791
792 <p>Sist jeg så på saken, i 2016, nevnte jeg at
793 <a href="https://rg3.github.com/youtube-dl/">youtube-dl</a> ikke kunne
794 bake undertekster fra NRK inn i videofilene, og at jeg derfor
795 foretrakk andre alternativer. Nylig oppdaget jeg at dette har endret
796 seg. Fordelen med youtube-dl er at den er tilgjengelig direkte fra
797 Linux-distribusjoner som <a href="https://www.debian.org/">Debian</a>
798 og <a href="https://www.ubuntu.com/">Ubuntu</a>, slik at en slipper å
799 finne ut selv hvordan en skal få dem til å virke.</p>
800
801 <p>For å laste ned et NRK-innslag med undertekster, og få den norske
802 underteksten pakket inn i videofilen, så kan følgende kommando
803 brukes:</p>
804
805 <p><pre>
806 youtube-dl --write-sub --sub-format ttml \
807 --convert-subtitles srt --embed-subs \
808 https://tv.nrk.no/serie/ramm-ferdig-gaa/MUHU11000316/27-04-2018
809 </pre></p>
810
811 <p>URL-eksemplet er dagens toppsak på tv.nrk.no. Resultatet er en
812 MP4-fil med filmen og undertekster som kan spilles av med VLC. Merk
813 at VLC ikke viser frem undertekster før du aktiverer dem. For å gjøre
814 det, høyreklikk med musa i fremviservinduet, velg menyvalget for
815 undertekst og så norsk språk. Jeg testet også '--write-auto-sub',
816 men det kommandolinjeargumentet ser ikke ut til å fungere, så jeg
817 endte opp med settet med argumentlisten over, som jeg fant i en
818 feilrapport i youtube-dl-prosjektets samling over feilrapporter.</p>
819
820 <p>Denne støtten i youtube-dl gjør det svært enkelt å lagre
821 NRK-innslag, det være seg nyheter, filmer, serier eller dokumentater,
822 for å ha dem tilgjengelig for fremtidig referanse og bruk, uavhengig
823 av hvor lenge innslagene ligger tilgjengelig hos NRK. Så får det ikke
824 hjelpe at NRKs jurister mener at det er
825 <a href="http://people.skolelinux.org/pere/blog/Best___ikke_fortelle_noen_at_streaming_er_nedlasting___.html">vesensforskjellig
826 å legge tilgjengelig for nedlasting og for streaming</a>, når det rent
827 teknisk er samme sak.</p>
828
829 <p>Programmet youtube-dl støtter også en rekke andre nettsteder, se
830 prosjektoversikten for
831 <a href="http://rg3.github.io/youtube-dl/supportedsites.html">en
832 komplett liste</a>.</p>
833 </div>
834 <div class="tags">
835
836
837 Tags: <a href="http://people.skolelinux.org/pere/blog/tags/multimedia">multimedia</a>, <a href="http://people.skolelinux.org/pere/blog/tags/nice free software">nice free software</a>, <a href="http://people.skolelinux.org/pere/blog/tags/norsk">norsk</a>, <a href="http://people.skolelinux.org/pere/blog/tags/video">video</a>, <a href="http://people.skolelinux.org/pere/blog/tags/web">web</a>.
838
839
840 </div>
841 </div>
842 <div class="padding"></div>
843
844 <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>
845 <div id="sidebar">
846
847
848
849 <h2>Archive</h2>
850 <ul>
851
852 <li>2018
853 <ul>
854
855 <li><a href="http://people.skolelinux.org/pere/blog/archive/2018/01/">January (1)</a></li>
856
857 <li><a href="http://people.skolelinux.org/pere/blog/archive/2018/02/">February (5)</a></li>
858
859 <li><a href="http://people.skolelinux.org/pere/blog/archive/2018/03/">March (5)</a></li>
860
861 <li><a href="http://people.skolelinux.org/pere/blog/archive/2018/04/">April (3)</a></li>
862
863 <li><a href="http://people.skolelinux.org/pere/blog/archive/2018/06/">June (2)</a></li>
864
865 <li><a href="http://people.skolelinux.org/pere/blog/archive/2018/07/">July (5)</a></li>
866
867 <li><a href="http://people.skolelinux.org/pere/blog/archive/2018/08/">August (2)</a></li>
868
869 </ul></li>
870
871 <li>2017
872 <ul>
873
874 <li><a href="http://people.skolelinux.org/pere/blog/archive/2017/01/">January (4)</a></li>
875
876 <li><a href="http://people.skolelinux.org/pere/blog/archive/2017/02/">February (3)</a></li>
877
878 <li><a href="http://people.skolelinux.org/pere/blog/archive/2017/03/">March (5)</a></li>
879
880 <li><a href="http://people.skolelinux.org/pere/blog/archive/2017/04/">April (2)</a></li>
881
882 <li><a href="http://people.skolelinux.org/pere/blog/archive/2017/06/">June (5)</a></li>
883
884 <li><a href="http://people.skolelinux.org/pere/blog/archive/2017/07/">July (1)</a></li>
885
886 <li><a href="http://people.skolelinux.org/pere/blog/archive/2017/08/">August (1)</a></li>
887
888 <li><a href="http://people.skolelinux.org/pere/blog/archive/2017/09/">September (3)</a></li>
889
890 <li><a href="http://people.skolelinux.org/pere/blog/archive/2017/10/">October (5)</a></li>
891
892 <li><a href="http://people.skolelinux.org/pere/blog/archive/2017/11/">November (3)</a></li>
893
894 <li><a href="http://people.skolelinux.org/pere/blog/archive/2017/12/">December (4)</a></li>
895
896 </ul></li>
897
898 <li>2016
899 <ul>
900
901 <li><a href="http://people.skolelinux.org/pere/blog/archive/2016/01/">January (3)</a></li>
902
903 <li><a href="http://people.skolelinux.org/pere/blog/archive/2016/02/">February (2)</a></li>
904
905 <li><a href="http://people.skolelinux.org/pere/blog/archive/2016/03/">March (3)</a></li>
906
907 <li><a href="http://people.skolelinux.org/pere/blog/archive/2016/04/">April (8)</a></li>
908
909 <li><a href="http://people.skolelinux.org/pere/blog/archive/2016/05/">May (8)</a></li>
910
911 <li><a href="http://people.skolelinux.org/pere/blog/archive/2016/06/">June (2)</a></li>
912
913 <li><a href="http://people.skolelinux.org/pere/blog/archive/2016/07/">July (2)</a></li>
914
915 <li><a href="http://people.skolelinux.org/pere/blog/archive/2016/08/">August (5)</a></li>
916
917 <li><a href="http://people.skolelinux.org/pere/blog/archive/2016/09/">September (2)</a></li>
918
919 <li><a href="http://people.skolelinux.org/pere/blog/archive/2016/10/">October (3)</a></li>
920
921 <li><a href="http://people.skolelinux.org/pere/blog/archive/2016/11/">November (8)</a></li>
922
923 <li><a href="http://people.skolelinux.org/pere/blog/archive/2016/12/">December (5)</a></li>
924
925 </ul></li>
926
927 <li>2015
928 <ul>
929
930 <li><a href="http://people.skolelinux.org/pere/blog/archive/2015/01/">January (7)</a></li>
931
932 <li><a href="http://people.skolelinux.org/pere/blog/archive/2015/02/">February (6)</a></li>
933
934 <li><a href="http://people.skolelinux.org/pere/blog/archive/2015/03/">March (1)</a></li>
935
936 <li><a href="http://people.skolelinux.org/pere/blog/archive/2015/04/">April (4)</a></li>
937
938 <li><a href="http://people.skolelinux.org/pere/blog/archive/2015/05/">May (3)</a></li>
939
940 <li><a href="http://people.skolelinux.org/pere/blog/archive/2015/06/">June (4)</a></li>
941
942 <li><a href="http://people.skolelinux.org/pere/blog/archive/2015/07/">July (6)</a></li>
943
944 <li><a href="http://people.skolelinux.org/pere/blog/archive/2015/08/">August (2)</a></li>
945
946 <li><a href="http://people.skolelinux.org/pere/blog/archive/2015/09/">September (2)</a></li>
947
948 <li><a href="http://people.skolelinux.org/pere/blog/archive/2015/10/">October (9)</a></li>
949
950 <li><a href="http://people.skolelinux.org/pere/blog/archive/2015/11/">November (6)</a></li>
951
952 <li><a href="http://people.skolelinux.org/pere/blog/archive/2015/12/">December (3)</a></li>
953
954 </ul></li>
955
956 <li>2014
957 <ul>
958
959 <li><a href="http://people.skolelinux.org/pere/blog/archive/2014/01/">January (2)</a></li>
960
961 <li><a href="http://people.skolelinux.org/pere/blog/archive/2014/02/">February (3)</a></li>
962
963 <li><a href="http://people.skolelinux.org/pere/blog/archive/2014/03/">March (8)</a></li>
964
965 <li><a href="http://people.skolelinux.org/pere/blog/archive/2014/04/">April (7)</a></li>
966
967 <li><a href="http://people.skolelinux.org/pere/blog/archive/2014/05/">May (1)</a></li>
968
969 <li><a href="http://people.skolelinux.org/pere/blog/archive/2014/06/">June (2)</a></li>
970
971 <li><a href="http://people.skolelinux.org/pere/blog/archive/2014/07/">July (2)</a></li>
972
973 <li><a href="http://people.skolelinux.org/pere/blog/archive/2014/08/">August (2)</a></li>
974
975 <li><a href="http://people.skolelinux.org/pere/blog/archive/2014/09/">September (5)</a></li>
976
977 <li><a href="http://people.skolelinux.org/pere/blog/archive/2014/10/">October (6)</a></li>
978
979 <li><a href="http://people.skolelinux.org/pere/blog/archive/2014/11/">November (3)</a></li>
980
981 <li><a href="http://people.skolelinux.org/pere/blog/archive/2014/12/">December (5)</a></li>
982
983 </ul></li>
984
985 <li>2013
986 <ul>
987
988 <li><a href="http://people.skolelinux.org/pere/blog/archive/2013/01/">January (11)</a></li>
989
990 <li><a href="http://people.skolelinux.org/pere/blog/archive/2013/02/">February (9)</a></li>
991
992 <li><a href="http://people.skolelinux.org/pere/blog/archive/2013/03/">March (9)</a></li>
993
994 <li><a href="http://people.skolelinux.org/pere/blog/archive/2013/04/">April (6)</a></li>
995
996 <li><a href="http://people.skolelinux.org/pere/blog/archive/2013/05/">May (9)</a></li>
997
998 <li><a href="http://people.skolelinux.org/pere/blog/archive/2013/06/">June (10)</a></li>
999
1000 <li><a href="http://people.skolelinux.org/pere/blog/archive/2013/07/">July (7)</a></li>
1001
1002 <li><a href="http://people.skolelinux.org/pere/blog/archive/2013/08/">August (3)</a></li>
1003
1004 <li><a href="http://people.skolelinux.org/pere/blog/archive/2013/09/">September (5)</a></li>
1005
1006 <li><a href="http://people.skolelinux.org/pere/blog/archive/2013/10/">October (7)</a></li>
1007
1008 <li><a href="http://people.skolelinux.org/pere/blog/archive/2013/11/">November (9)</a></li>
1009
1010 <li><a href="http://people.skolelinux.org/pere/blog/archive/2013/12/">December (3)</a></li>
1011
1012 </ul></li>
1013
1014 <li>2012
1015 <ul>
1016
1017 <li><a href="http://people.skolelinux.org/pere/blog/archive/2012/01/">January (7)</a></li>
1018
1019 <li><a href="http://people.skolelinux.org/pere/blog/archive/2012/02/">February (10)</a></li>
1020
1021 <li><a href="http://people.skolelinux.org/pere/blog/archive/2012/03/">March (17)</a></li>
1022
1023 <li><a href="http://people.skolelinux.org/pere/blog/archive/2012/04/">April (12)</a></li>
1024
1025 <li><a href="http://people.skolelinux.org/pere/blog/archive/2012/05/">May (12)</a></li>
1026
1027 <li><a href="http://people.skolelinux.org/pere/blog/archive/2012/06/">June (20)</a></li>
1028
1029 <li><a href="http://people.skolelinux.org/pere/blog/archive/2012/07/">July (17)</a></li>
1030
1031 <li><a href="http://people.skolelinux.org/pere/blog/archive/2012/08/">August (6)</a></li>
1032
1033 <li><a href="http://people.skolelinux.org/pere/blog/archive/2012/09/">September (9)</a></li>
1034
1035 <li><a href="http://people.skolelinux.org/pere/blog/archive/2012/10/">October (17)</a></li>
1036
1037 <li><a href="http://people.skolelinux.org/pere/blog/archive/2012/11/">November (10)</a></li>
1038
1039 <li><a href="http://people.skolelinux.org/pere/blog/archive/2012/12/">December (7)</a></li>
1040
1041 </ul></li>
1042
1043 <li>2011
1044 <ul>
1045
1046 <li><a href="http://people.skolelinux.org/pere/blog/archive/2011/01/">January (16)</a></li>
1047
1048 <li><a href="http://people.skolelinux.org/pere/blog/archive/2011/02/">February (6)</a></li>
1049
1050 <li><a href="http://people.skolelinux.org/pere/blog/archive/2011/03/">March (6)</a></li>
1051
1052 <li><a href="http://people.skolelinux.org/pere/blog/archive/2011/04/">April (7)</a></li>
1053
1054 <li><a href="http://people.skolelinux.org/pere/blog/archive/2011/05/">May (3)</a></li>
1055
1056 <li><a href="http://people.skolelinux.org/pere/blog/archive/2011/06/">June (2)</a></li>
1057
1058 <li><a href="http://people.skolelinux.org/pere/blog/archive/2011/07/">July (7)</a></li>
1059
1060 <li><a href="http://people.skolelinux.org/pere/blog/archive/2011/08/">August (6)</a></li>
1061
1062 <li><a href="http://people.skolelinux.org/pere/blog/archive/2011/09/">September (4)</a></li>
1063
1064 <li><a href="http://people.skolelinux.org/pere/blog/archive/2011/10/">October (2)</a></li>
1065
1066 <li><a href="http://people.skolelinux.org/pere/blog/archive/2011/11/">November (3)</a></li>
1067
1068 <li><a href="http://people.skolelinux.org/pere/blog/archive/2011/12/">December (1)</a></li>
1069
1070 </ul></li>
1071
1072 <li>2010
1073 <ul>
1074
1075 <li><a href="http://people.skolelinux.org/pere/blog/archive/2010/01/">January (2)</a></li>
1076
1077 <li><a href="http://people.skolelinux.org/pere/blog/archive/2010/02/">February (1)</a></li>
1078
1079 <li><a href="http://people.skolelinux.org/pere/blog/archive/2010/03/">March (3)</a></li>
1080
1081 <li><a href="http://people.skolelinux.org/pere/blog/archive/2010/04/">April (3)</a></li>
1082
1083 <li><a href="http://people.skolelinux.org/pere/blog/archive/2010/05/">May (9)</a></li>
1084
1085 <li><a href="http://people.skolelinux.org/pere/blog/archive/2010/06/">June (14)</a></li>
1086
1087 <li><a href="http://people.skolelinux.org/pere/blog/archive/2010/07/">July (12)</a></li>
1088
1089 <li><a href="http://people.skolelinux.org/pere/blog/archive/2010/08/">August (13)</a></li>
1090
1091 <li><a href="http://people.skolelinux.org/pere/blog/archive/2010/09/">September (7)</a></li>
1092
1093 <li><a href="http://people.skolelinux.org/pere/blog/archive/2010/10/">October (9)</a></li>
1094
1095 <li><a href="http://people.skolelinux.org/pere/blog/archive/2010/11/">November (13)</a></li>
1096
1097 <li><a href="http://people.skolelinux.org/pere/blog/archive/2010/12/">December (12)</a></li>
1098
1099 </ul></li>
1100
1101 <li>2009
1102 <ul>
1103
1104 <li><a href="http://people.skolelinux.org/pere/blog/archive/2009/01/">January (8)</a></li>
1105
1106 <li><a href="http://people.skolelinux.org/pere/blog/archive/2009/02/">February (8)</a></li>
1107
1108 <li><a href="http://people.skolelinux.org/pere/blog/archive/2009/03/">March (12)</a></li>
1109
1110 <li><a href="http://people.skolelinux.org/pere/blog/archive/2009/04/">April (10)</a></li>
1111
1112 <li><a href="http://people.skolelinux.org/pere/blog/archive/2009/05/">May (9)</a></li>
1113
1114 <li><a href="http://people.skolelinux.org/pere/blog/archive/2009/06/">June (3)</a></li>
1115
1116 <li><a href="http://people.skolelinux.org/pere/blog/archive/2009/07/">July (4)</a></li>
1117
1118 <li><a href="http://people.skolelinux.org/pere/blog/archive/2009/08/">August (3)</a></li>
1119
1120 <li><a href="http://people.skolelinux.org/pere/blog/archive/2009/09/">September (1)</a></li>
1121
1122 <li><a href="http://people.skolelinux.org/pere/blog/archive/2009/10/">October (2)</a></li>
1123
1124 <li><a href="http://people.skolelinux.org/pere/blog/archive/2009/11/">November (3)</a></li>
1125
1126 <li><a href="http://people.skolelinux.org/pere/blog/archive/2009/12/">December (3)</a></li>
1127
1128 </ul></li>
1129
1130 <li>2008
1131 <ul>
1132
1133 <li><a href="http://people.skolelinux.org/pere/blog/archive/2008/11/">November (5)</a></li>
1134
1135 <li><a href="http://people.skolelinux.org/pere/blog/archive/2008/12/">December (7)</a></li>
1136
1137 </ul></li>
1138
1139 </ul>
1140
1141
1142
1143 <h2>Tags</h2>
1144 <ul>
1145
1146 <li><a href="http://people.skolelinux.org/pere/blog/tags/3d-printer">3d-printer (16)</a></li>
1147
1148 <li><a href="http://people.skolelinux.org/pere/blog/tags/amiga">amiga (1)</a></li>
1149
1150 <li><a href="http://people.skolelinux.org/pere/blog/tags/aros">aros (1)</a></li>
1151
1152 <li><a href="http://people.skolelinux.org/pere/blog/tags/bankid">bankid (4)</a></li>
1153
1154 <li><a href="http://people.skolelinux.org/pere/blog/tags/bitcoin">bitcoin (9)</a></li>
1155
1156 <li><a href="http://people.skolelinux.org/pere/blog/tags/bootsystem">bootsystem (17)</a></li>
1157
1158 <li><a href="http://people.skolelinux.org/pere/blog/tags/bsa">bsa (2)</a></li>
1159
1160 <li><a href="http://people.skolelinux.org/pere/blog/tags/chrpath">chrpath (2)</a></li>
1161
1162 <li><a href="http://people.skolelinux.org/pere/blog/tags/debian">debian (161)</a></li>
1163
1164 <li><a href="http://people.skolelinux.org/pere/blog/tags/debian edu">debian edu (158)</a></li>
1165
1166 <li><a href="http://people.skolelinux.org/pere/blog/tags/debian-handbook">debian-handbook (4)</a></li>
1167
1168 <li><a href="http://people.skolelinux.org/pere/blog/tags/digistan">digistan (10)</a></li>
1169
1170 <li><a href="http://people.skolelinux.org/pere/blog/tags/dld">dld (17)</a></li>
1171
1172 <li><a href="http://people.skolelinux.org/pere/blog/tags/docbook">docbook (25)</a></li>
1173
1174 <li><a href="http://people.skolelinux.org/pere/blog/tags/drivstoffpriser">drivstoffpriser (4)</a></li>
1175
1176 <li><a href="http://people.skolelinux.org/pere/blog/tags/english">english (381)</a></li>
1177
1178 <li><a href="http://people.skolelinux.org/pere/blog/tags/fiksgatami">fiksgatami (23)</a></li>
1179
1180 <li><a href="http://people.skolelinux.org/pere/blog/tags/fildeling">fildeling (13)</a></li>
1181
1182 <li><a href="http://people.skolelinux.org/pere/blog/tags/freeculture">freeculture (32)</a></li>
1183
1184 <li><a href="http://people.skolelinux.org/pere/blog/tags/freedombox">freedombox (9)</a></li>
1185
1186 <li><a href="http://people.skolelinux.org/pere/blog/tags/frikanalen">frikanalen (18)</a></li>
1187
1188 <li><a href="http://people.skolelinux.org/pere/blog/tags/h264">h264 (20)</a></li>
1189
1190 <li><a href="http://people.skolelinux.org/pere/blog/tags/intervju">intervju (42)</a></li>
1191
1192 <li><a href="http://people.skolelinux.org/pere/blog/tags/isenkram">isenkram (16)</a></li>
1193
1194 <li><a href="http://people.skolelinux.org/pere/blog/tags/kart">kart (20)</a></li>
1195
1196 <li><a href="http://people.skolelinux.org/pere/blog/tags/ldap">ldap (9)</a></li>
1197
1198 <li><a href="http://people.skolelinux.org/pere/blog/tags/lego">lego (4)</a></li>
1199
1200 <li><a href="http://people.skolelinux.org/pere/blog/tags/lenker">lenker (8)</a></li>
1201
1202 <li><a href="http://people.skolelinux.org/pere/blog/tags/lsdvd">lsdvd (2)</a></li>
1203
1204 <li><a href="http://people.skolelinux.org/pere/blog/tags/ltsp">ltsp (1)</a></li>
1205
1206 <li><a href="http://people.skolelinux.org/pere/blog/tags/mesh network">mesh network (8)</a></li>
1207
1208 <li><a href="http://people.skolelinux.org/pere/blog/tags/multimedia">multimedia (41)</a></li>
1209
1210 <li><a href="http://people.skolelinux.org/pere/blog/tags/nice free software">nice free software (10)</a></li>
1211
1212 <li><a href="http://people.skolelinux.org/pere/blog/tags/norsk">norsk (299)</a></li>
1213
1214 <li><a href="http://people.skolelinux.org/pere/blog/tags/nuug">nuug (190)</a></li>
1215
1216 <li><a href="http://people.skolelinux.org/pere/blog/tags/offentlig innsyn">offentlig innsyn (33)</a></li>
1217
1218 <li><a href="http://people.skolelinux.org/pere/blog/tags/open311">open311 (2)</a></li>
1219
1220 <li><a href="http://people.skolelinux.org/pere/blog/tags/opphavsrett">opphavsrett (71)</a></li>
1221
1222 <li><a href="http://people.skolelinux.org/pere/blog/tags/personvern">personvern (107)</a></li>
1223
1224 <li><a href="http://people.skolelinux.org/pere/blog/tags/raid">raid (2)</a></li>
1225
1226 <li><a href="http://people.skolelinux.org/pere/blog/tags/reactos">reactos (1)</a></li>
1227
1228 <li><a href="http://people.skolelinux.org/pere/blog/tags/reprap">reprap (11)</a></li>
1229
1230 <li><a href="http://people.skolelinux.org/pere/blog/tags/rfid">rfid (3)</a></li>
1231
1232 <li><a href="http://people.skolelinux.org/pere/blog/tags/robot">robot (10)</a></li>
1233
1234 <li><a href="http://people.skolelinux.org/pere/blog/tags/rss">rss (1)</a></li>
1235
1236 <li><a href="http://people.skolelinux.org/pere/blog/tags/ruter">ruter (6)</a></li>
1237
1238 <li><a href="http://people.skolelinux.org/pere/blog/tags/scraperwiki">scraperwiki (2)</a></li>
1239
1240 <li><a href="http://people.skolelinux.org/pere/blog/tags/sikkerhet">sikkerhet (54)</a></li>
1241
1242 <li><a href="http://people.skolelinux.org/pere/blog/tags/sitesummary">sitesummary (4)</a></li>
1243
1244 <li><a href="http://people.skolelinux.org/pere/blog/tags/skepsis">skepsis (5)</a></li>
1245
1246 <li><a href="http://people.skolelinux.org/pere/blog/tags/standard">standard (55)</a></li>
1247
1248 <li><a href="http://people.skolelinux.org/pere/blog/tags/stavekontroll">stavekontroll (6)</a></li>
1249
1250 <li><a href="http://people.skolelinux.org/pere/blog/tags/stortinget">stortinget (12)</a></li>
1251
1252 <li><a href="http://people.skolelinux.org/pere/blog/tags/surveillance">surveillance (55)</a></li>
1253
1254 <li><a href="http://people.skolelinux.org/pere/blog/tags/sysadmin">sysadmin (4)</a></li>
1255
1256 <li><a href="http://people.skolelinux.org/pere/blog/tags/usenix">usenix (2)</a></li>
1257
1258 <li><a href="http://people.skolelinux.org/pere/blog/tags/valg">valg (9)</a></li>
1259
1260 <li><a href="http://people.skolelinux.org/pere/blog/tags/verkidetfri">verkidetfri (11)</a></li>
1261
1262 <li><a href="http://people.skolelinux.org/pere/blog/tags/video">video (66)</a></li>
1263
1264 <li><a href="http://people.skolelinux.org/pere/blog/tags/vitenskap">vitenskap (4)</a></li>
1265
1266 <li><a href="http://people.skolelinux.org/pere/blog/tags/web">web (41)</a></li>
1267
1268 </ul>
1269
1270
1271 </div>
1272 <p style="text-align: right">
1273 Created by <a href="http://steve.org.uk/Software/chronicle">Chronicle v4.6</a>
1274 </p>
1275
1276 </body>
1277 </html>