1 <!DOCTYPE html PUBLIC
"-//W3C//DTD XHTML 1.0 Strict//EN"
2 "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
3 <html xmlns=
"http://www.w3.org/1999/xhtml" dir=
"ltr">
5 <meta http-equiv=
"Content-Type" content=
"text/html;charset=utf-8" />
6 <title>Petter Reinholdtsen
</title>
7 <link rel=
"stylesheet" type=
"text/css" media=
"screen" href=
"http://people.skolelinux.org/pere/blog/style.css" />
8 <link rel=
"stylesheet" type=
"text/css" media=
"screen" href=
"http://people.skolelinux.org/pere/blog/vim.css" />
9 <link rel=
"alternate" title=
"RSS Feed" href=
"http://people.skolelinux.org/pere/blog/index.rss" type=
"application/rss+xml" />
14 <a href=
"http://people.skolelinux.org/pere/blog/">Petter Reinholdtsen
</a>
23 <div class=
"title"><a href=
"http://people.skolelinux.org/pere/blog/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>
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>
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
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>
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>.
56 <div class=
"padding"></div>
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>
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>.
76 <div class=
"padding"></div>
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
88 One interesting data point was a pointer to a Free Software app for
90 <a href=
"https://github.com/Freeyourgadget/Gadgetbridge/">Gadgetbridge
</a>.
91 It provide cloudless collection and storing of data from a variety of
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
102 <a href=
"http://www.xiaomimi6phone.com/xiaomi-mi-band-3-features-release-date-rumors/">Xiaomi
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
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>
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>
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>
143 Tags:
<a href=
"http://people.skolelinux.org/pere/blog/tags/english">english
</a>.
148 <div class=
"padding"></div>
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>
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
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>
180 Tags:
<a href=
"http://people.skolelinux.org/pere/blog/tags/english">english
</a>.
185 <div class=
"padding"></div>
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 <enclosure
> RSS tag), but was unable to find a current supplier
202 of such frames. In the end I gave up that approach.
</p>
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>
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>
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>
235 exiftool -headline='The RSS image title' \
236 -description='The RSS image description.' \
237 -subject+=for-family photo.jpeg
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>
246 <p>Are there better ways to do this? Get in touch if you have better
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>
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>.
261 <div class=
"padding"></div>
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
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>
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.
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.
302 curl --silent --header 'Content-Type: application/json' \
303 --data-binary "{ \"id\":
1, \"jsonrpc\": \"
2.0\", \"method\": \"$cmd\", \"params\": $params }" \
304 "http://$host/jsonrpc"
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
313 if [ "$gstpid" ] && kill -
0 "$gstpid"
>/dev/null
2>&1; then
317 trap cleanup EXIT INT
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. \
342 # Give stream a second to get going
345 # Ask kodi to start streaming using its JSON-RPC API
346 kodicmd "$kodihost" Player.Open \
347 "{\"item\": { \"file\": \"udp://@$mcast:$mcastport\" } }"
> /dev/null
349 # wait for gst to end
353 <p>I hope you find the approach useful. I know I do.
</p>
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>
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>.
367 <div class=
"padding"></div>
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>
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>
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>
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>
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>
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>
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}'
414 <p>I ssh-ed into my Kodi box and created a file like this with the
418 echo rtsp://
192.168.11.4:
8080/test.sdp \
419 > /storage/videos/screenstream.m3u
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
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
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
447 cvlc screen:// --sout \
448 '#transcode{vcodec=mp4v,acodec=mpga,vb=
800,ab=
128}:rtp{sdp=rtsp://:
8080/}'
451 <p>and this on the Kodi end
<p>
454 echo rtsp://
192.168.11.4:
8080/ \
455 > /storage/videos/screenstream.m3u
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
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:
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.
484 <p>and this on the Kodi end
<p>
487 echo udp://@
239.255.0.1:
1234 \
488 > /storage/videos/screenstream.m3u
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>
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>
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}'
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>
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>.
520 <div class=
"padding"></div>
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:
534 <p><strong>Debian Unstable:
</strong></p>
538 ----- -----------------------
550 30 audio/x-vorbis+ogg
551 29 image/x-portable-pixmap
553 27 image/x-portable-bitmap
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>
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
<filename
>", 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
<mime-type
>. For example if you, like
573 me, want to know which packages support inode/directory, you can get a
577 % appstreamcli what-provides mimetype inode/directory | grep Package: | sort
584 Package: doublecmd-common
586 Package: enlightenment
606 </pre></blockquote></p>
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>
612 % appstreamcli what-provides mimetype application/vnd.sketchup.skp
613 Could not find component providing 'mimetype::application/vnd.sketchup.skp'.
615 </pre></blockquote></p>
617 <p>Yesterday I used it to figure out which packages support the STL
3D
621 % appstreamcli what-provides mimetype application/sla|grep Package
626 </pre></blockquote></p>
628 <p>PS: A new version of Cura was uploaded to Debian yesterday.
</p>
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>
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>.
642 <div class=
"padding"></div>
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
<somepackages
>' 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>
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.
677 for p in $(apt list --upgradable | ignore "$@" |cut -d/ -f1 | grep -v '^Listing...'); do
680 apt install --download-only -y $p
681 for f in /var/cache/apt/archives/*.deb; do
683 dpkg -i /var/cache/apt/archives/*.deb
688 </pre></blockquote></p>
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>
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>
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>
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>
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>.
726 <div class=
"padding"></div>
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
735 <a href=
"https://en.wikipedia.org/wiki/Bremanger">Bremanger
</a> i
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>
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>
754 Tags:
<a href=
"http://people.skolelinux.org/pere/blog/tags/english">english
</a>.
759 <div class=
"padding"></div>
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>
772 <li><a href=
"http://people.skolelinux.org/pere/blog/archive/2018/01/">January (
1)
</a></li>
774 <li><a href=
"http://people.skolelinux.org/pere/blog/archive/2018/02/">February (
5)
</a></li>
776 <li><a href=
"http://people.skolelinux.org/pere/blog/archive/2018/03/">March (
5)
</a></li>
778 <li><a href=
"http://people.skolelinux.org/pere/blog/archive/2018/04/">April (
3)
</a></li>
780 <li><a href=
"http://people.skolelinux.org/pere/blog/archive/2018/06/">June (
2)
</a></li>
782 <li><a href=
"http://people.skolelinux.org/pere/blog/archive/2018/07/">July (
5)
</a></li>
784 <li><a href=
"http://people.skolelinux.org/pere/blog/archive/2018/08/">August (
3)
</a></li>
786 <li><a href=
"http://people.skolelinux.org/pere/blog/archive/2018/09/">September (
1)
</a></li>
793 <li><a href=
"http://people.skolelinux.org/pere/blog/archive/2017/01/">January (
4)
</a></li>
795 <li><a href=
"http://people.skolelinux.org/pere/blog/archive/2017/02/">February (
3)
</a></li>
797 <li><a href=
"http://people.skolelinux.org/pere/blog/archive/2017/03/">March (
5)
</a></li>
799 <li><a href=
"http://people.skolelinux.org/pere/blog/archive/2017/04/">April (
2)
</a></li>
801 <li><a href=
"http://people.skolelinux.org/pere/blog/archive/2017/06/">June (
5)
</a></li>
803 <li><a href=
"http://people.skolelinux.org/pere/blog/archive/2017/07/">July (
1)
</a></li>
805 <li><a href=
"http://people.skolelinux.org/pere/blog/archive/2017/08/">August (
1)
</a></li>
807 <li><a href=
"http://people.skolelinux.org/pere/blog/archive/2017/09/">September (
3)
</a></li>
809 <li><a href=
"http://people.skolelinux.org/pere/blog/archive/2017/10/">October (
5)
</a></li>
811 <li><a href=
"http://people.skolelinux.org/pere/blog/archive/2017/11/">November (
3)
</a></li>
813 <li><a href=
"http://people.skolelinux.org/pere/blog/archive/2017/12/">December (
4)
</a></li>
820 <li><a href=
"http://people.skolelinux.org/pere/blog/archive/2016/01/">January (
3)
</a></li>
822 <li><a href=
"http://people.skolelinux.org/pere/blog/archive/2016/02/">February (
2)
</a></li>
824 <li><a href=
"http://people.skolelinux.org/pere/blog/archive/2016/03/">March (
3)
</a></li>
826 <li><a href=
"http://people.skolelinux.org/pere/blog/archive/2016/04/">April (
8)
</a></li>
828 <li><a href=
"http://people.skolelinux.org/pere/blog/archive/2016/05/">May (
8)
</a></li>
830 <li><a href=
"http://people.skolelinux.org/pere/blog/archive/2016/06/">June (
2)
</a></li>
832 <li><a href=
"http://people.skolelinux.org/pere/blog/archive/2016/07/">July (
2)
</a></li>
834 <li><a href=
"http://people.skolelinux.org/pere/blog/archive/2016/08/">August (
5)
</a></li>
836 <li><a href=
"http://people.skolelinux.org/pere/blog/archive/2016/09/">September (
2)
</a></li>
838 <li><a href=
"http://people.skolelinux.org/pere/blog/archive/2016/10/">October (
3)
</a></li>
840 <li><a href=
"http://people.skolelinux.org/pere/blog/archive/2016/11/">November (
8)
</a></li>
842 <li><a href=
"http://people.skolelinux.org/pere/blog/archive/2016/12/">December (
5)
</a></li>
849 <li><a href=
"http://people.skolelinux.org/pere/blog/archive/2015/01/">January (
7)
</a></li>
851 <li><a href=
"http://people.skolelinux.org/pere/blog/archive/2015/02/">February (
6)
</a></li>
853 <li><a href=
"http://people.skolelinux.org/pere/blog/archive/2015/03/">March (
1)
</a></li>
855 <li><a href=
"http://people.skolelinux.org/pere/blog/archive/2015/04/">April (
4)
</a></li>
857 <li><a href=
"http://people.skolelinux.org/pere/blog/archive/2015/05/">May (
3)
</a></li>
859 <li><a href=
"http://people.skolelinux.org/pere/blog/archive/2015/06/">June (
4)
</a></li>
861 <li><a href=
"http://people.skolelinux.org/pere/blog/archive/2015/07/">July (
6)
</a></li>
863 <li><a href=
"http://people.skolelinux.org/pere/blog/archive/2015/08/">August (
2)
</a></li>
865 <li><a href=
"http://people.skolelinux.org/pere/blog/archive/2015/09/">September (
2)
</a></li>
867 <li><a href=
"http://people.skolelinux.org/pere/blog/archive/2015/10/">October (
9)
</a></li>
869 <li><a href=
"http://people.skolelinux.org/pere/blog/archive/2015/11/">November (
6)
</a></li>
871 <li><a href=
"http://people.skolelinux.org/pere/blog/archive/2015/12/">December (
3)
</a></li>
878 <li><a href=
"http://people.skolelinux.org/pere/blog/archive/2014/01/">January (
2)
</a></li>
880 <li><a href=
"http://people.skolelinux.org/pere/blog/archive/2014/02/">February (
3)
</a></li>
882 <li><a href=
"http://people.skolelinux.org/pere/blog/archive/2014/03/">March (
8)
</a></li>
884 <li><a href=
"http://people.skolelinux.org/pere/blog/archive/2014/04/">April (
7)
</a></li>
886 <li><a href=
"http://people.skolelinux.org/pere/blog/archive/2014/05/">May (
1)
</a></li>
888 <li><a href=
"http://people.skolelinux.org/pere/blog/archive/2014/06/">June (
2)
</a></li>
890 <li><a href=
"http://people.skolelinux.org/pere/blog/archive/2014/07/">July (
2)
</a></li>
892 <li><a href=
"http://people.skolelinux.org/pere/blog/archive/2014/08/">August (
2)
</a></li>
894 <li><a href=
"http://people.skolelinux.org/pere/blog/archive/2014/09/">September (
5)
</a></li>
896 <li><a href=
"http://people.skolelinux.org/pere/blog/archive/2014/10/">October (
6)
</a></li>
898 <li><a href=
"http://people.skolelinux.org/pere/blog/archive/2014/11/">November (
3)
</a></li>
900 <li><a href=
"http://people.skolelinux.org/pere/blog/archive/2014/12/">December (
5)
</a></li>
907 <li><a href=
"http://people.skolelinux.org/pere/blog/archive/2013/01/">January (
11)
</a></li>
909 <li><a href=
"http://people.skolelinux.org/pere/blog/archive/2013/02/">February (
9)
</a></li>
911 <li><a href=
"http://people.skolelinux.org/pere/blog/archive/2013/03/">March (
9)
</a></li>
913 <li><a href=
"http://people.skolelinux.org/pere/blog/archive/2013/04/">April (
6)
</a></li>
915 <li><a href=
"http://people.skolelinux.org/pere/blog/archive/2013/05/">May (
9)
</a></li>
917 <li><a href=
"http://people.skolelinux.org/pere/blog/archive/2013/06/">June (
10)
</a></li>
919 <li><a href=
"http://people.skolelinux.org/pere/blog/archive/2013/07/">July (
7)
</a></li>
921 <li><a href=
"http://people.skolelinux.org/pere/blog/archive/2013/08/">August (
3)
</a></li>
923 <li><a href=
"http://people.skolelinux.org/pere/blog/archive/2013/09/">September (
5)
</a></li>
925 <li><a href=
"http://people.skolelinux.org/pere/blog/archive/2013/10/">October (
7)
</a></li>
927 <li><a href=
"http://people.skolelinux.org/pere/blog/archive/2013/11/">November (
9)
</a></li>
929 <li><a href=
"http://people.skolelinux.org/pere/blog/archive/2013/12/">December (
3)
</a></li>
936 <li><a href=
"http://people.skolelinux.org/pere/blog/archive/2012/01/">January (
7)
</a></li>
938 <li><a href=
"http://people.skolelinux.org/pere/blog/archive/2012/02/">February (
10)
</a></li>
940 <li><a href=
"http://people.skolelinux.org/pere/blog/archive/2012/03/">March (
17)
</a></li>
942 <li><a href=
"http://people.skolelinux.org/pere/blog/archive/2012/04/">April (
12)
</a></li>
944 <li><a href=
"http://people.skolelinux.org/pere/blog/archive/2012/05/">May (
12)
</a></li>
946 <li><a href=
"http://people.skolelinux.org/pere/blog/archive/2012/06/">June (
20)
</a></li>
948 <li><a href=
"http://people.skolelinux.org/pere/blog/archive/2012/07/">July (
17)
</a></li>
950 <li><a href=
"http://people.skolelinux.org/pere/blog/archive/2012/08/">August (
6)
</a></li>
952 <li><a href=
"http://people.skolelinux.org/pere/blog/archive/2012/09/">September (
9)
</a></li>
954 <li><a href=
"http://people.skolelinux.org/pere/blog/archive/2012/10/">October (
17)
</a></li>
956 <li><a href=
"http://people.skolelinux.org/pere/blog/archive/2012/11/">November (
10)
</a></li>
958 <li><a href=
"http://people.skolelinux.org/pere/blog/archive/2012/12/">December (
7)
</a></li>
965 <li><a href=
"http://people.skolelinux.org/pere/blog/archive/2011/01/">January (
16)
</a></li>
967 <li><a href=
"http://people.skolelinux.org/pere/blog/archive/2011/02/">February (
6)
</a></li>
969 <li><a href=
"http://people.skolelinux.org/pere/blog/archive/2011/03/">March (
6)
</a></li>
971 <li><a href=
"http://people.skolelinux.org/pere/blog/archive/2011/04/">April (
7)
</a></li>
973 <li><a href=
"http://people.skolelinux.org/pere/blog/archive/2011/05/">May (
3)
</a></li>
975 <li><a href=
"http://people.skolelinux.org/pere/blog/archive/2011/06/">June (
2)
</a></li>
977 <li><a href=
"http://people.skolelinux.org/pere/blog/archive/2011/07/">July (
7)
</a></li>
979 <li><a href=
"http://people.skolelinux.org/pere/blog/archive/2011/08/">August (
6)
</a></li>
981 <li><a href=
"http://people.skolelinux.org/pere/blog/archive/2011/09/">September (
4)
</a></li>
983 <li><a href=
"http://people.skolelinux.org/pere/blog/archive/2011/10/">October (
2)
</a></li>
985 <li><a href=
"http://people.skolelinux.org/pere/blog/archive/2011/11/">November (
3)
</a></li>
987 <li><a href=
"http://people.skolelinux.org/pere/blog/archive/2011/12/">December (
1)
</a></li>
994 <li><a href=
"http://people.skolelinux.org/pere/blog/archive/2010/01/">January (
2)
</a></li>
996 <li><a href=
"http://people.skolelinux.org/pere/blog/archive/2010/02/">February (
1)
</a></li>
998 <li><a href=
"http://people.skolelinux.org/pere/blog/archive/2010/03/">March (
3)
</a></li>
1000 <li><a href=
"http://people.skolelinux.org/pere/blog/archive/2010/04/">April (
3)
</a></li>
1002 <li><a href=
"http://people.skolelinux.org/pere/blog/archive/2010/05/">May (
9)
</a></li>
1004 <li><a href=
"http://people.skolelinux.org/pere/blog/archive/2010/06/">June (
14)
</a></li>
1006 <li><a href=
"http://people.skolelinux.org/pere/blog/archive/2010/07/">July (
12)
</a></li>
1008 <li><a href=
"http://people.skolelinux.org/pere/blog/archive/2010/08/">August (
13)
</a></li>
1010 <li><a href=
"http://people.skolelinux.org/pere/blog/archive/2010/09/">September (
7)
</a></li>
1012 <li><a href=
"http://people.skolelinux.org/pere/blog/archive/2010/10/">October (
9)
</a></li>
1014 <li><a href=
"http://people.skolelinux.org/pere/blog/archive/2010/11/">November (
13)
</a></li>
1016 <li><a href=
"http://people.skolelinux.org/pere/blog/archive/2010/12/">December (
12)
</a></li>
1023 <li><a href=
"http://people.skolelinux.org/pere/blog/archive/2009/01/">January (
8)
</a></li>
1025 <li><a href=
"http://people.skolelinux.org/pere/blog/archive/2009/02/">February (
8)
</a></li>
1027 <li><a href=
"http://people.skolelinux.org/pere/blog/archive/2009/03/">March (
12)
</a></li>
1029 <li><a href=
"http://people.skolelinux.org/pere/blog/archive/2009/04/">April (
10)
</a></li>
1031 <li><a href=
"http://people.skolelinux.org/pere/blog/archive/2009/05/">May (
9)
</a></li>
1033 <li><a href=
"http://people.skolelinux.org/pere/blog/archive/2009/06/">June (
3)
</a></li>
1035 <li><a href=
"http://people.skolelinux.org/pere/blog/archive/2009/07/">July (
4)
</a></li>
1037 <li><a href=
"http://people.skolelinux.org/pere/blog/archive/2009/08/">August (
3)
</a></li>
1039 <li><a href=
"http://people.skolelinux.org/pere/blog/archive/2009/09/">September (
1)
</a></li>
1041 <li><a href=
"http://people.skolelinux.org/pere/blog/archive/2009/10/">October (
2)
</a></li>
1043 <li><a href=
"http://people.skolelinux.org/pere/blog/archive/2009/11/">November (
3)
</a></li>
1045 <li><a href=
"http://people.skolelinux.org/pere/blog/archive/2009/12/">December (
3)
</a></li>
1052 <li><a href=
"http://people.skolelinux.org/pere/blog/archive/2008/11/">November (
5)
</a></li>
1054 <li><a href=
"http://people.skolelinux.org/pere/blog/archive/2008/12/">December (
7)
</a></li>
1065 <li><a href=
"http://people.skolelinux.org/pere/blog/tags/3d-printer">3d-printer (
16)
</a></li>
1067 <li><a href=
"http://people.skolelinux.org/pere/blog/tags/amiga">amiga (
1)
</a></li>
1069 <li><a href=
"http://people.skolelinux.org/pere/blog/tags/aros">aros (
1)
</a></li>
1071 <li><a href=
"http://people.skolelinux.org/pere/blog/tags/bankid">bankid (
4)
</a></li>
1073 <li><a href=
"http://people.skolelinux.org/pere/blog/tags/bitcoin">bitcoin (
9)
</a></li>
1075 <li><a href=
"http://people.skolelinux.org/pere/blog/tags/bootsystem">bootsystem (
17)
</a></li>
1077 <li><a href=
"http://people.skolelinux.org/pere/blog/tags/bsa">bsa (
2)
</a></li>
1079 <li><a href=
"http://people.skolelinux.org/pere/blog/tags/chrpath">chrpath (
2)
</a></li>
1081 <li><a href=
"http://people.skolelinux.org/pere/blog/tags/debian">debian (
162)
</a></li>
1083 <li><a href=
"http://people.skolelinux.org/pere/blog/tags/debian edu">debian edu (
158)
</a></li>
1085 <li><a href=
"http://people.skolelinux.org/pere/blog/tags/debian-handbook">debian-handbook (
4)
</a></li>
1087 <li><a href=
"http://people.skolelinux.org/pere/blog/tags/digistan">digistan (
10)
</a></li>
1089 <li><a href=
"http://people.skolelinux.org/pere/blog/tags/dld">dld (
17)
</a></li>
1091 <li><a href=
"http://people.skolelinux.org/pere/blog/tags/docbook">docbook (
25)
</a></li>
1093 <li><a href=
"http://people.skolelinux.org/pere/blog/tags/drivstoffpriser">drivstoffpriser (
4)
</a></li>
1095 <li><a href=
"http://people.skolelinux.org/pere/blog/tags/english">english (
383)
</a></li>
1097 <li><a href=
"http://people.skolelinux.org/pere/blog/tags/fiksgatami">fiksgatami (
23)
</a></li>
1099 <li><a href=
"http://people.skolelinux.org/pere/blog/tags/fildeling">fildeling (
13)
</a></li>
1101 <li><a href=
"http://people.skolelinux.org/pere/blog/tags/freeculture">freeculture (
32)
</a></li>
1103 <li><a href=
"http://people.skolelinux.org/pere/blog/tags/freedombox">freedombox (
9)
</a></li>
1105 <li><a href=
"http://people.skolelinux.org/pere/blog/tags/frikanalen">frikanalen (
18)
</a></li>
1107 <li><a href=
"http://people.skolelinux.org/pere/blog/tags/h264">h264 (
20)
</a></li>
1109 <li><a href=
"http://people.skolelinux.org/pere/blog/tags/intervju">intervju (
42)
</a></li>
1111 <li><a href=
"http://people.skolelinux.org/pere/blog/tags/isenkram">isenkram (
16)
</a></li>
1113 <li><a href=
"http://people.skolelinux.org/pere/blog/tags/kart">kart (
20)
</a></li>
1115 <li><a href=
"http://people.skolelinux.org/pere/blog/tags/kodi">kodi (
3)
</a></li>
1117 <li><a href=
"http://people.skolelinux.org/pere/blog/tags/ldap">ldap (
9)
</a></li>
1119 <li><a href=
"http://people.skolelinux.org/pere/blog/tags/lego">lego (
4)
</a></li>
1121 <li><a href=
"http://people.skolelinux.org/pere/blog/tags/lenker">lenker (
8)
</a></li>
1123 <li><a href=
"http://people.skolelinux.org/pere/blog/tags/lsdvd">lsdvd (
2)
</a></li>
1125 <li><a href=
"http://people.skolelinux.org/pere/blog/tags/ltsp">ltsp (
1)
</a></li>
1127 <li><a href=
"http://people.skolelinux.org/pere/blog/tags/mesh network">mesh network (
8)
</a></li>
1129 <li><a href=
"http://people.skolelinux.org/pere/blog/tags/multimedia">multimedia (
41)
</a></li>
1131 <li><a href=
"http://people.skolelinux.org/pere/blog/tags/nice free software">nice free software (
10)
</a></li>
1133 <li><a href=
"http://people.skolelinux.org/pere/blog/tags/norsk">norsk (
299)
</a></li>
1135 <li><a href=
"http://people.skolelinux.org/pere/blog/tags/nuug">nuug (
190)
</a></li>
1137 <li><a href=
"http://people.skolelinux.org/pere/blog/tags/offentlig innsyn">offentlig innsyn (
33)
</a></li>
1139 <li><a href=
"http://people.skolelinux.org/pere/blog/tags/open311">open311 (
2)
</a></li>
1141 <li><a href=
"http://people.skolelinux.org/pere/blog/tags/opphavsrett">opphavsrett (
72)
</a></li>
1143 <li><a href=
"http://people.skolelinux.org/pere/blog/tags/personvern">personvern (
107)
</a></li>
1145 <li><a href=
"http://people.skolelinux.org/pere/blog/tags/raid">raid (
2)
</a></li>
1147 <li><a href=
"http://people.skolelinux.org/pere/blog/tags/reactos">reactos (
1)
</a></li>
1149 <li><a href=
"http://people.skolelinux.org/pere/blog/tags/reprap">reprap (
11)
</a></li>
1151 <li><a href=
"http://people.skolelinux.org/pere/blog/tags/rfid">rfid (
3)
</a></li>
1153 <li><a href=
"http://people.skolelinux.org/pere/blog/tags/robot">robot (
10)
</a></li>
1155 <li><a href=
"http://people.skolelinux.org/pere/blog/tags/rss">rss (
1)
</a></li>
1157 <li><a href=
"http://people.skolelinux.org/pere/blog/tags/ruter">ruter (
6)
</a></li>
1159 <li><a href=
"http://people.skolelinux.org/pere/blog/tags/scraperwiki">scraperwiki (
2)
</a></li>
1161 <li><a href=
"http://people.skolelinux.org/pere/blog/tags/sikkerhet">sikkerhet (
54)
</a></li>
1163 <li><a href=
"http://people.skolelinux.org/pere/blog/tags/sitesummary">sitesummary (
4)
</a></li>
1165 <li><a href=
"http://people.skolelinux.org/pere/blog/tags/skepsis">skepsis (
5)
</a></li>
1167 <li><a href=
"http://people.skolelinux.org/pere/blog/tags/standard">standard (
55)
</a></li>
1169 <li><a href=
"http://people.skolelinux.org/pere/blog/tags/stavekontroll">stavekontroll (
6)
</a></li>
1171 <li><a href=
"http://people.skolelinux.org/pere/blog/tags/stortinget">stortinget (
12)
</a></li>
1173 <li><a href=
"http://people.skolelinux.org/pere/blog/tags/surveillance">surveillance (
55)
</a></li>
1175 <li><a href=
"http://people.skolelinux.org/pere/blog/tags/sysadmin">sysadmin (
4)
</a></li>
1177 <li><a href=
"http://people.skolelinux.org/pere/blog/tags/usenix">usenix (
2)
</a></li>
1179 <li><a href=
"http://people.skolelinux.org/pere/blog/tags/valg">valg (
9)
</a></li>
1181 <li><a href=
"http://people.skolelinux.org/pere/blog/tags/verkidetfri">verkidetfri (
11)
</a></li>
1183 <li><a href=
"http://people.skolelinux.org/pere/blog/tags/video">video (
67)
</a></li>
1185 <li><a href=
"http://people.skolelinux.org/pere/blog/tags/vitenskap">vitenskap (
4)
</a></li>
1187 <li><a href=
"http://people.skolelinux.org/pere/blog/tags/web">web (
41)
</a></li>
1193 <p style=
"text-align: right">
1194 Created by
<a href=
"http://steve.org.uk/Software/chronicle">Chronicle v4.6
</a>