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