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/Web_browser_integration_of_VLC_with_Bittorrent_support.html">Web browser integration of VLC with Bittorrent support
</a></div>
24 <div class=
"date">21st October
2018</div>
25 <div class=
"body"><p>Bittorrent is as far as I know, currently the most efficient way to
26 distribute content on the Internet. It is used all by all sorts of
27 content providers, from national TV stations like
28 <a href=
"https://www.nrk.no/">NRK
</a>, Linux distributors like
29 <a href=
"https://www.debian.org/">Debian
</a> and
30 <a href=
"https://www.ubuntu.com/">Ubuntu
</a>, and of course the
31 <a href=
"https://archive.org/">Internet archive
</A>.
34 <a href=
"https://tracker.debian.org/pkg/vlc-plugin-bittorrent">a new
35 package adding Bittorrent support to VLC
</a> became available in
36 Debian testing and unstable. To test it, simply install it like
40 apt install vlc-plugin-bittorrent
43 <p>Since the plugin was made available for the first time in Debian,
44 several improvements have been made to it. In version
2.2-
4, now
45 available in both testing and unstable, a desktop file is provided to
46 teach browsers to start VLC when the user click on torrent files or
47 magnet links. The last part is thanks to me finally understanding
48 what the strange x-scheme-handler style MIME types in desktop files
49 are used for. By adding x-scheme-handler/magnet to the MimeType entry
50 in the desktop file, at least the browsers Firefox and Chromium will
51 suggest to start VLC when selecting a magnet URI on a web page. The
52 end result is that now, with the plugin installed in Buster og Sid,
54 <a href=
"https://archive.org/details/CopyingIsNotTheft1080p">Internet
55 Archive page with movies
</a> using a web browser and click on the
56 torrent link to start streaming the movie.
</p>
58 <p>Note, there is still some misfeatures in the plugin. One is the
59 fact that it will hang and
60 <a href=
"https://github.com/johang/vlc-bittorrent/issues/13">block VLC
61 from exiting until the torrent streaming starts
</a>. Another is the
63 <a href=
"https://github.com/johang/vlc-bittorrent/issues/9">will pick
64 and play a random file in a multi file torrent
</a>. This is not
65 always the video file you want. Combined with the first it can be a
66 bit hard to get the video streaming going. But when it work, it seem
69 <p>For the Debian packaging, I would love to find a good way to test
70 if the plugin work with VLC using autopkgtest. I tried, but do not
71 know enough of the inner workings of VLC to get it working. For now
72 the autopkgtest script is only checking if the .so file was
73 successfully loaded by VLC. If you have any suggestions, please
74 submit a patch to the Debian bug tracking system.
</p>
76 <p>As usual, if you use Bitcoin and want to show your support of my
77 activities, please send Bitcoin donations to my address
78 <b><a href=
"bitcoin:15oWEoG9dUPovwmUL9KWAnYRtNJEkP1u1b">15oWEoG9dUPovwmUL9KWAnYRtNJEkP1u1b
</a></b>.
</p>
83 Tags:
<a href=
"http://people.skolelinux.org/pere/blog/tags/english">english
</a>,
<a href=
"http://people.skolelinux.org/pere/blog/tags/verkidetfri">verkidetfri
</a>,
<a href=
"http://people.skolelinux.org/pere/blog/tags/video">video
</a>.
88 <div class=
"padding"></div>
91 <div class=
"title"><a href=
"http://people.skolelinux.org/pere/blog/Release_0_2_of_free_software_archive_system_Nikita_announced.html">Release
0.2 of free software archive system Nikita announced
</a></div>
92 <div class=
"date">18th October
2018</div>
93 <div class=
"body"><p>This morning, the new release of the
94 <a href=
"https://gitlab.com/OsloMet-ABI/nikita-noark5-core/">Nikita
95 Noark
5 core project
</a> was
96 <a href=
"https://lists.nuug.no/pipermail/nikita-noark/2018-October/000406.html">announced
97 on the project mailing list
</a>. The free software solution is an
98 implementation of the Norwegian archive standard Noark
5 used by
99 government offices in Norway. These were the changes in version
0.2
100 since version
0.1.1 (from NEWS.md):
103 <li>Fix typos in REL names
</li>
104 <li>Tidy up error message reporting
</li>
105 <li>Fix issue where we used Integer.valueOf(), not Integer.getInteger()
</li>
106 <li>Change some String handling to StringBuffer
</li>
107 <li>Fix error reporting
</li>
108 <li>Code tidy-up
</li>
109 <li>Fix issue using static non-synchronized SimpleDateFormat to avoid
111 <li>Fix problem where deserialisers were treating integers as strings
</li>
112 <li>Update methods to make them null-safe
</li>
113 <li>Fix many issues reported by coverity
</li>
114 <li>Improve equals(), compareTo() and hash() in domain model
</li>
115 <li>Improvements to the domain model for metadata classes
</li>
116 <li>Fix CORS issues when downloading document
</li>
117 <li>Implementation of case-handling with registryEntry and document upload
</li>
118 <li>Better support in Javascript for OPTIONS
</li>
119 <li>Adding concept description of mail integration
</li>
120 <li>Improve setting of default values for GET on ny-journalpost
</li>
121 <li>Better handling of required values during deserialisation
</li>
122 <li>Changed tilknyttetDato (M620) from date to dateTime
</li>
123 <li>Corrected some opprettetDato (M600) (de)serialisation errors.
</li>
124 <li>Improve parse error reporting.
</li>
125 <li>Started on OData search and filtering.
</li>
126 <li>Added Contributor Covenant Code of Conduct to project.
</li>
127 <li>Moved repository and project from Github to Gitlab.
</li>
128 <li>Restructured repository, moved code into src/ and web/.
</li>
129 <li>Updated code to use Spring Boot version
2.
</li>
130 <li>Added support for OAuth2 authentication.
</li>
131 <li>Fixed several bugs discovered by Coverity.
</li>
132 <li>Corrected handling of date/datetime fields.
</li>
133 <li>Improved error reporting when rejecting during deserializatoin.
</li>
134 <li>Adjusted default values provided for ny-arkivdel, ny-mappe,
135 ny-saksmappe, ny-journalpost and ny-dokumentbeskrivelse.
</li>
136 <li>Several fixes for korrespondansepart*.
</li>
139 <li>Now handle both file upload and download.
</li>
140 <li>Uses new OAuth2 authentication for login.
</li>
141 <li>Forms now fetches default values from API using GET.
</li>
142 <li>Added RFC
822 (email), TIFF and JPEG to list of possible file formats.
</li>
146 <p>The changes and improvements are extensive. Running diffstat on
147 the changes between git tab
0.1.1 and
0.2 show
1098 files changed,
148 108666 insertions(+),
54066 deletions(-).
</p>
150 <p>If free and open standardized archiving API sound interesting to
151 you, please contact us on IRC
152 (
<a href=
"irc://irc.freenode.net/%23nikita">#nikita on
153 irc.freenode.net
</a>) or email
154 (
<a href=
"https://lists.nuug.no/mailman/listinfo/nikita-noark">nikita-noark
155 mailing list
</a>).
</p>
157 <p>As usual, if you use Bitcoin and want to show your support of my
158 activities, please send Bitcoin donations to my address
159 <b><a href=
"bitcoin:15oWEoG9dUPovwmUL9KWAnYRtNJEkP1u1b">15oWEoG9dUPovwmUL9KWAnYRtNJEkP1u1b
</a></b>.
</p>
164 Tags:
<a href=
"http://people.skolelinux.org/pere/blog/tags/english">english
</a>,
<a href=
"http://people.skolelinux.org/pere/blog/tags/nuug">nuug
</a>,
<a href=
"http://people.skolelinux.org/pere/blog/tags/offentlig innsyn">offentlig innsyn
</a>,
<a href=
"http://people.skolelinux.org/pere/blog/tags/standard">standard
</a>.
169 <div class=
"padding"></div>
172 <div class=
"title"><a href=
"http://people.skolelinux.org/pere/blog/Fetching_trusted_timestamps_using_the_rfc3161ng_python_module.html">Fetching trusted timestamps using the rfc3161ng python module
</a></div>
173 <div class=
"date"> 8th October
2018</div>
174 <div class=
"body"><p>I have earlier covered the basics of trusted timestamping using the
175 'openssl ts' client. See blog post for
176 <a href=
"http://people.skolelinux.org/pere/blog/Public_Trusted_Timestamping_services_for_everyone.html">2014</a>,
177 <a href=
"http://people.skolelinux.org/pere/blog/syslog_trusted_timestamp___chain_of_trusted_timestamps_for_your_syslog.html">2016</a>
179 <a href=
"http://people.skolelinux.org/pere/blog/Idea_for_storing_trusted_timestamps_in_a_Noark_5_archive.html">2017</a>
180 for those stories. But some times I want to integrate the timestamping
181 in other code, and recently I needed to integrate it into Python.
182 After searching a bit, I found
183 <a href=
"https://dev.entrouvert.org/projects/python-rfc3161">the
184 rfc3161 library
</a> which seemed like a good fit, but I soon
185 discovered it only worked for python version
2, and I needed something
186 that work with python version
3. Luckily I next came across
187 <a href=
"https://github.com/trbs/rfc3161ng/">the rfc3161ng library
</a>,
188 a fork of the original rfc3161 library. Not only is it working with
189 python
3, it have fixed a few of the bugs in the original library, and
190 it has an active maintainer. I decided to wrap it up and make it
191 <a href=
"https://tracker.debian.org/pkg/python-rfc3161ng">available in
192 Debian
</a>, and a few days ago it entered Debian unstable and testing.
</p>
194 <p>Using the library is fairly straight forward. The only slightly
195 problematic step is to fetch the required certificates to verify the
196 timestamp. For some services it is straight forward, while for others
197 I have not yet figured out how to do it. Here is a small standalone
198 code example based on of the integration tests in the library code:
</p>
205 Python
3 script demonstrating how to use the rfc3161ng module to
206 get trusted timestamps.
208 The license of this code is the same as the license of the rfc3161ng
214 import pyasn1.codec.der
218 import urllib.request
225 def fetch(url, f=None):
226 response = urllib.request.urlopen(url)
227 data = response.read()
233 with tempfile.NamedTemporaryFile() as cert_f,\
234 tempfile.NamedTemporaryFile() as ca_f,\
235 tempfile.NamedTemporaryFile() as msg_f,\
236 tempfile.NamedTemporaryFile() as tsr_f:
238 # First fetch certificates used by service
239 certificate_data = fetch('https://freetsa.org/files/tsa.crt', cert_f)
240 ca_data_data = fetch('https://freetsa.org/files/cacert.pem', ca_f)
242 # Then timestamp the message
244 rfc3161ng.RemoteTimestamper('http://freetsa.org/tsr',
245 certificate=certificate_data)
246 data = b"Python forever!\n"
247 tsr = timestamper(data=data, return_tsr=True)
249 # Finally, convert message and response to something 'openssl ts' can verify
251 store(tsr_f, pyasn1.codec.der.encoder.encode(tsr))
252 args = ["openssl", "ts", "-verify",
255 "-CAfile", ca_f.name,
256 "-untrusted", cert_f.name]
257 subprocess.check_call(args)
259 if '__main__' == __name__:
263 <p>The code fetches the required certificates, store them as temporary
264 files, timestamp a simple message, store the message and timestamp to
265 disk and ask 'openssl ts' to verify the timestamp. A timestamp is
266 around
1.5 kiB in size, and should be fairly easy to store for future
269 <p>As usual, if you use Bitcoin and want to show your support of my
270 activities, please send Bitcoin donations to my address
271 <b><a href=
"bitcoin:15oWEoG9dUPovwmUL9KWAnYRtNJEkP1u1b">15oWEoG9dUPovwmUL9KWAnYRtNJEkP1u1b
</a></b>.
</p>
276 Tags:
<a href=
"http://people.skolelinux.org/pere/blog/tags/english">english
</a>,
<a href=
"http://people.skolelinux.org/pere/blog/tags/sikkerhet">sikkerhet
</a>.
281 <div class=
"padding"></div>
284 <div class=
"title"><a href=
"http://people.skolelinux.org/pere/blog/Automatic_Google_Drive_sync_using_grive_in_Debian.html">Automatic Google Drive sync using grive in Debian
</a></div>
285 <div class=
"date"> 4th October
2018</div>
286 <div class=
"body"><p>A few days, I rescued a Windows victim over to Debian. To try to
287 rescue the remains, I helped set up automatic sync with Google Drive.
288 I did not find any sensible Debian package handling this
289 automatically, so I rebuild the grive2 source from
290 <a href=
"http://www.webupd8.org/">the Ubuntu UPD8 PPA
</a> to do the
291 task and added a autostart desktop entry and a small shell script to
292 run in the background while the user is logged in to do the sync.
293 Here is a sketch of the setup for future reference.
</p>
295 <p>I first created
<tt>~/googledrive
</tt>, entered the directory and
296 ran '
<tt>grive -a
</tt>' to authenticate the machine/user. Next, I
297 created a autostart hook in
<tt>~/.config/autostart/grive.desktop
</tt>
298 to start the sync when the user log in:
</p>
302 Name=Google drive autosync
304 Exec=/home/user/bin/grive-sync
305 </pre></blockquote></p>
307 <p>Finally, I wrote the
<tt>~/bin/grive-sync
</tt> script to sync
308 ~/googledrive/ with the files in Google Drive.
</p>
315 if [ "$syncpid" ] ; then
319 trap cleanup EXIT INT QUIT
320 /usr/lib/grive/grive-sync.sh listen googledrive
2>&
1 | sed "s%^%$
0:%" &
323 if ! xhost
>/dev/null
2>&
1 ; then
324 echo "no DISPLAY, exiting as the user probably logged out"
327 if [ ! -e /run/user/
1000/grive-sync.sh_googledrive ] ; then
328 /usr/lib/grive/grive-sync.sh sync googledrive
331 done
2>&
1 | sed "s%^%$
0:%"
332 </pre></blockquote></p>
334 <p>Feel free to use the setup if you want. It can be assumed to be
335 GNU GPL v2 licensed (or any later version, at your leisure), but I
336 doubt this code is possible to claim copyright on.
</p>
338 <p>As usual, if you use Bitcoin and want to show your support of my
339 activities, please send Bitcoin donations to my address
340 <b><a href=
"bitcoin:15oWEoG9dUPovwmUL9KWAnYRtNJEkP1u1b">15oWEoG9dUPovwmUL9KWAnYRtNJEkP1u1b
</a></b>.
</p>
345 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>.
350 <div class=
"padding"></div>
353 <div class=
"title"><a href=
"http://people.skolelinux.org/pere/blog/Valutakrambod___A_python_and_bitcoin_love_story.html">Valutakrambod - A python and bitcoin love story
</a></div>
354 <div class=
"date">29th September
2018</div>
355 <div class=
"body"><p>It would come as no surprise to anyone that I am interested in
356 bitcoins and virtual currencies. I've been keeping an eye on virtual
357 currencies for many years, and it is part of the reason a few months
358 ago, I started writing a python library for collecting currency
359 exchange rates and trade on virtual currency exchanges. I decided to
360 name the end result valutakrambod, which perhaps can be translated to
361 small currency shop.
</p>
363 <p>The library uses the tornado python library to handle HTTP and
364 websocket connections, and provide a asynchronous system for
365 connecting to and tracking several services. The code is available
367 <a href=
"http://github.com/petterreinholdtsen/valutakrambod">github
</a>.
</p>
369 </p>There are two example clients of the library. One is very simple and
370 list every updated buy/sell price received from the various services.
371 This code is started by running bin/btc-rates and call the client code
372 in valutakrambod/client.py. The simple client look like this:
</p>
376 import tornado.ioloop
378 class SimpleClient(object):
383 def newdata(self, service, pair, changed):
384 print("%-
15s %s-%s: %
8.3f %
8.3f" % (
385 service.servicename(),
388 service.rates[pair]['ask'],
389 service.rates[pair]['bid'])
391 async def refresh(self, service):
392 await service.fetchRates(service.wantedpairs)
394 self.ioloop = tornado.ioloop.IOLoop.current()
395 self.services = valutakrambod.service.knownServices()
396 for e in self.services:
398 service.subscribe(self.newdata)
399 stream = service.websocket()
401 self.streams.append(stream)
403 # Fetch information from non-streaming services immediately
404 self.ioloop.call_later(len(self.services),
405 functools.partial(self.refresh, service))
406 # as well as regularly
407 service.periodicUpdate(
60)
408 for stream in self.streams:
412 except KeyboardInterrupt:
413 print("Interrupted by keyboard, closing all connections.")
415 for stream in self.streams:
417 </pre></blockquote></p>
419 <p>The library client loops over all known "public" services,
420 initialises it, subscribes to any updates from the service, checks and
421 activates websocket streaming if the service provide it, and if no
422 streaming is supported, fetches information from the service and sets
423 up a periodic update every
60 seconds. The output from this client
424 can look like this:
</p>
427 Bl3p BTC-EUR:
5687.110 5653.690
428 Bl3p BTC-EUR:
5687.110 5653.690
429 Bl3p BTC-EUR:
5687.110 5653.690
430 Hitbtc BTC-USD:
6594.560 6593.690
431 Hitbtc BTC-USD:
6594.560 6593.690
432 Bl3p BTC-EUR:
5687.110 5653.690
433 Hitbtc BTC-USD:
6594.570 6593.690
434 Bitstamp EUR-USD:
1.159 1.154
435 Hitbtc BTC-USD:
6594.570 6593.690
436 Hitbtc BTC-USD:
6594.580 6593.690
437 Hitbtc BTC-USD:
6594.580 6593.690
438 Hitbtc BTC-USD:
6594.580 6593.690
439 Bl3p BTC-EUR:
5687.110 5653.690
440 Paymium BTC-EUR:
5680.000 5620.240
441 </pre></blockquote></p>
443 <p>The exchange order book is tracked in addition to the best buy/sell
444 price, for those that need to know the details.
</p>
446 <p>The other example client is focusing on providing a curses view
447 with updated buy/sell prices as soon as they are received from the
448 services. This code is located in bin/btc-rates-curses and activated
449 by using the '-c' argument. Without the argument the "curses" output
450 is printed without using curses, which is useful for debugging. The
451 curses view look like this:
</p>
454 Name Pair Bid Ask Spr Ftcd Age
455 BitcoinsNorway BTCEUR
5591.8400 5711.0800 2.1%
16 nan
60
456 Bitfinex BTCEUR
5671.0000 5671.2000 0.0%
16 22 59
457 Bitmynt BTCEUR
5580.8000 5807.5200 3.9%
16 41 60
458 Bitpay BTCEUR
5663.2700 nan nan%
15 nan
60
459 Bitstamp BTCEUR
5664.8400 5676.5300 0.2%
0 1 1
460 Bl3p BTCEUR
5653.6900 5684.9400 0.5%
0 nan
19
461 Coinbase BTCEUR
5600.8200 5714.9000 2.0%
15 nan nan
462 Kraken BTCEUR
5670.1000 5670.2000 0.0%
14 17 60
463 Paymium BTCEUR
5620.0600 5680.0000 1.1%
1 7515 nan
464 BitcoinsNorway BTCNOK
52898.9700 54034.6100 2.1%
16 nan
60
465 Bitmynt BTCNOK
52960.3200 54031.1900 2.0%
16 41 60
466 Bitpay BTCNOK
53477.7833 nan nan%
16 nan
60
467 Coinbase BTCNOK
52990.3500 54063.0600 2.0%
15 nan nan
468 MiraiEx BTCNOK
52856.5300 54100.6000 2.3%
16 nan nan
469 BitcoinsNorway BTCUSD
6495.5300 6631.5400 2.1%
16 nan
60
470 Bitfinex BTCUSD
6590.6000 6590.7000 0.0%
16 23 57
471 Bitpay BTCUSD
6564.1300 nan nan%
15 nan
60
472 Bitstamp BTCUSD
6561.1400 6565.6200 0.1%
0 2 1
473 Coinbase BTCUSD
6504.0600 6635.9700 2.0%
14 nan
117
474 Gemini BTCUSD
6567.1300 6573.0700 0.1%
16 89 nan
475 Hitbtc+BTCUSD
6592.6200 6594.2100 0.0%
0 0 0
476 Kraken BTCUSD
6565.2000 6570.9000 0.1%
15 17 58
477 Exchangerates EURNOK
9.4665 9.4665 0.0%
16 107789 nan
478 Norgesbank EURNOK
9.4665 9.4665 0.0%
16 107789 nan
479 Bitstamp EURUSD
1.1537 1.1593 0.5%
4 5 1
480 Exchangerates EURUSD
1.1576 1.1576 0.0%
16 107789 nan
481 BitcoinsNorway LTCEUR
1.0000 49.0000 98.0%
16 nan nan
482 BitcoinsNorway LTCNOK
492.4800 503.7500 2.2%
16 nan
60
483 BitcoinsNorway LTCUSD
1.0221 49.0000 97.9%
15 nan nan
484 Norgesbank USDNOK
8.1777 8.1777 0.0%
16 107789 nan
485 </pre></blockquote></p>
487 <p>The code for this client is too complex for a simple blog post, so
488 you will have to check out the git repository to figure out how it
489 work. What I can tell is how the three last numbers on each line
490 should be interpreted. The first is how many seconds ago information
491 was received from the service. The second is how long ago, according
492 to the service, the provided information was updated. The last is an
493 estimate on how often the buy/sell values change.
</p>
495 <p>If you find this library useful, or would like to improve it, I
496 would love to hear from you. Note that for some of the services I've
497 implemented a trading API. It might be the topic of a future blog
500 <p>As usual, if you use Bitcoin and want to show your support of my
501 activities, please send Bitcoin donations to my address
502 <b><a href=
"bitcoin:15oWEoG9dUPovwmUL9KWAnYRtNJEkP1u1b">15oWEoG9dUPovwmUL9KWAnYRtNJEkP1u1b
</a></b>.
</p>
507 Tags:
<a href=
"http://people.skolelinux.org/pere/blog/tags/bitcoin">bitcoin
</a>,
<a href=
"http://people.skolelinux.org/pere/blog/tags/english">english
</a>.
512 <div class=
"padding"></div>
515 <div class=
"title"><a href=
"http://people.skolelinux.org/pere/blog/VLC_in_Debian_now_can_do_bittorrent_streaming.html">VLC in Debian now can do bittorrent streaming
</a></div>
516 <div class=
"date">24th September
2018</div>
517 <div class=
"body"><p>Back in February, I got curious to see
518 <a href=
"http://people.skolelinux.org/pere/blog/Using_VLC_to_stream_bittorrent_sources.html">if
519 VLC now supported Bittorrent streaming
</a>. It did not, despite the
520 fact that the idea and code to handle such streaming had been floating
521 around for years. I did however find
522 <a href=
"https://github.com/johang/vlc-bittorrent">a standalone plugin
523 for VLC
</a> to do it, and half a year later I decided to wrap up the
524 plugin and get it into Debian. I uploaded it to NEW a few days ago,
525 and am very happy to report that it
526 <a href=
"https://tracker.debian.org/pkg/vlc-plugin-bittorrent">entered
527 Debian
</a> a few hours ago, and should be available in Debian/Unstable
528 tomorrow, and Debian/Testing in a few days.
</p>
530 <p>With the vlc-plugin-bittorrent package installed you should be able
531 to stream videos using a simple call to
</p>
534 vlc https://archive.org/download/TheGoat/TheGoat_archive.torrent
535 </pre></blockquote></p>
537 </p>It can handle magnet links too. Now if only native vlc had
538 bittorrent support. Then a lot more would be helping each other to
539 share public domain and creative commons movies. The plugin need some
540 stability work with seeking and picking the right file in a torrent
541 with many files, but is already usable. Please note that the plugin
542 is not removing downloaded files when vlc is stopped, so it can fill
543 up your disk if you are not careful. Have fun. :)
</p>
545 <p>I would love to get help maintaining this package. Get in touch if
546 you are interested.
</p>
548 <p>As usual, if you use Bitcoin and want to show your support of my
549 activities, please send Bitcoin donations to my address
550 <b><a href=
"bitcoin:15oWEoG9dUPovwmUL9KWAnYRtNJEkP1u1b">15oWEoG9dUPovwmUL9KWAnYRtNJEkP1u1b
</a></b>.
</p>
555 Tags:
<a href=
"http://people.skolelinux.org/pere/blog/tags/english">english
</a>,
<a href=
"http://people.skolelinux.org/pere/blog/tags/verkidetfri">verkidetfri
</a>,
<a href=
"http://people.skolelinux.org/pere/blog/tags/video">video
</a>.
560 <div class=
"padding"></div>
563 <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>
564 <div class=
"date"> 2nd September
2018</div>
565 <div class=
"body"><p>I continue to explore my Kodi installation, and today I wanted to
566 tell it to play a youtube URL I received in a chat, without having to
567 insert search terms using the on-screen keyboard. After searching the
568 web for API access to the Youtube plugin and testing a bit, I managed
569 to find a recipe that worked. If you got a kodi instance with its API
570 available from http://kodihost/jsonrpc, you can try the following to
571 have check out a nice cover band.
</p>
573 <p><blockquote><pre>curl --silent --header 'Content-Type: application/json' \
574 --data-binary '{ "id":
1, "jsonrpc": "
2.0", "method": "Player.Open",
575 "params": {"item": { "file":
576 "plugin://plugin.video.youtube/play/?video_id=LuRGVM9O0qg" } } }' \
577 http://projector.local/jsonrpc
</pre></blockquote></p>
579 <p>I've extended kodi-stream program to take a video source as its
580 first argument. It can now handle direct video links, youtube links
581 and 'desktop' to stream my desktop to Kodi. It is almost like a
584 <p>As usual, if you use Bitcoin and want to show your support of my
585 activities, please send Bitcoin donations to my address
586 <b><a href=
"bitcoin:15oWEoG9dUPovwmUL9KWAnYRtNJEkP1u1b">15oWEoG9dUPovwmUL9KWAnYRtNJEkP1u1b
</a></b>.
</p>
591 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>.
596 <div class=
"padding"></div>
599 <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>
600 <div class=
"date">30th August
2018</div>
601 <div class=
"body"><p>It might seem obvious that software created using tax money should
602 be available for everyone to use and improve. Free Software
603 Foundation Europe recentlystarted a campaign to help get more people
604 to understand this, and I just signed the petition on
605 <a href=
"https://publiccode.eu/">Public Money, Public Code
</a> to help
606 them. I hope you too will do the same.
</p>
611 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>.
616 <div class=
"padding"></div>
619 <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>
620 <div class=
"date">13th August
2018</div>
621 <div class=
"body"><p>A few days ago, I wondered if there are any privacy respecting
622 health monitors and/or fitness trackers available for sale these days.
623 I would like to buy one, but do not want to share my personal data
624 with strangers, nor be forced to have a mobile phone to get data out
625 of the unit. I've received some ideas, and would like to share them
628 One interesting data point was a pointer to a Free Software app for
630 <a href=
"https://github.com/Freeyourgadget/Gadgetbridge/">Gadgetbridge
</a>.
631 It provide cloudless collection and storing of data from a variety of
633 <a href=
"https://github.com/Freeyourgadget/Gadgetbridge/#supported-devices">list
634 of supported devices
</a> is a good indicator for units where the
635 protocol is fairly open, as it is obviously being handled by Free
636 Software. Other units are reportedly encrypting the collected
637 information with their own public key, making sure only the vendor
638 cloud service is able to extract data from the unit. The people
639 contacting me about Gadgetbirde said they were using
640 <a href=
"https://us.amazfit.com/shop/bip?variant=336750">Amazfit
642 <a href=
"http://www.xiaomimi6phone.com/xiaomi-mi-band-3-features-release-date-rumors/">Xiaomi
645 <p>I also got a suggestion to look at some of the units from Garmin.
646 I was told their GPS watches can be connected via USB and show up as a
647 USB storage device with
648 <a href=
"https://www.gpsbabel.org/htmldoc-development/fmt_garmin_fit.html">Garmin
649 FIT files
</a> containing the collected measurements. While
650 proprietary, FIT files apparently can be read at least by
651 <a href=
"https://www.gpsbabel.org">GPSBabel
</a> and the
652 <a href=
"https://apps.nextcloud.com/apps/gpxpod">GpxPod
</a> Nextcloud
653 app. It is unclear to me if they can read step count and heart rate
654 data. The person I talked to was using a
655 <a href=
"https://buy.garmin.com/en-US/US/p/564291">Garmin Forerunner
656 935</a>, which is a fairly expensive unit. I doubt it is worth it for
657 a unit where the vendor clearly is trying its best to move from open
658 to closed systems. I still remember when Garmin dropped NMEA support
661 <p>A final idea was to build ones own unit, perhaps by basing it on a
662 wearable hardware platforms like
663 <a href=
"https://learn.adafruit.com/flora-geo-watch">the Flora Geo
664 Watch
</a>. Sound like fun, but I had more money than time to spend on
665 the topic, so I suspect it will have to wait for another time.
</p>
667 <p>While I was working on tracking down links, I came across an
668 inspiring TED talk by Dave Debronkart about
669 <a href=
"https://archive.org/details/DavedeBronkart_2010X">being a
670 e-patient
</a>, and discovered the web site
671 <a href=
"https://participatorymedicine.org/epatients/">Participatory
672 Medicine
</a>. If you too want to track your own health and fitness
673 without having information about your private life floating around on
674 computers owned by others, I recommend checking it out.
</p>
676 <p>As usual, if you use Bitcoin and want to show your support of my
677 activities, please send Bitcoin donations to my address
678 <b><a href=
"bitcoin:15oWEoG9dUPovwmUL9KWAnYRtNJEkP1u1b">15oWEoG9dUPovwmUL9KWAnYRtNJEkP1u1b
</a></b>.
</p>
683 Tags:
<a href=
"http://people.skolelinux.org/pere/blog/tags/english">english
</a>.
688 <div class=
"padding"></div>
691 <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>
692 <div class=
"date"> 7th August
2018</div>
693 <div class=
"body"><p>Dear lazyweb,
</p>
695 <p>I wonder, is there a fitness tracker / health monitor available for
696 sale today that respect the users privacy? With this I mean a
697 watch/bracelet capable of measuring pulse rate and other
698 fitness/health related values (and by all means, also the correct time
699 and location if possible), which is
<strong>only
</strong> provided for
700 me to extract/read from the unit with computer without a radio beacon
701 and Internet connection. In other words, it do not depend on a cell
702 phone app, and do make the measurements available via other peoples
703 computer (aka "the cloud"). The collected data should be available
704 using only free software. I'm not interested in depending on some
705 non-free software that will leave me high and dry some time in the
706 future. I've been unable to find any such unit. I would like to buy
707 it. The ones I have seen for sale here in Norway are proud to report
708 that they share my health data with strangers (aka "cloud enabled").
709 Is there an alternative? I'm not interested in giving money to people
710 requiring me to accept "privacy terms" to allow myself to measure my
713 <p>As usual, if you use Bitcoin and want to show your support of my
714 activities, please send Bitcoin donations to my address
715 <b><a href=
"bitcoin:15oWEoG9dUPovwmUL9KWAnYRtNJEkP1u1b">15oWEoG9dUPovwmUL9KWAnYRtNJEkP1u1b
</a></b>.
</p>
720 Tags:
<a href=
"http://people.skolelinux.org/pere/blog/tags/english">english
</a>.
725 <div class=
"padding"></div>
727 <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>
738 <li><a href=
"http://people.skolelinux.org/pere/blog/archive/2018/01/">January (
1)
</a></li>
740 <li><a href=
"http://people.skolelinux.org/pere/blog/archive/2018/02/">February (
5)
</a></li>
742 <li><a href=
"http://people.skolelinux.org/pere/blog/archive/2018/03/">March (
5)
</a></li>
744 <li><a href=
"http://people.skolelinux.org/pere/blog/archive/2018/04/">April (
3)
</a></li>
746 <li><a href=
"http://people.skolelinux.org/pere/blog/archive/2018/06/">June (
2)
</a></li>
748 <li><a href=
"http://people.skolelinux.org/pere/blog/archive/2018/07/">July (
5)
</a></li>
750 <li><a href=
"http://people.skolelinux.org/pere/blog/archive/2018/08/">August (
3)
</a></li>
752 <li><a href=
"http://people.skolelinux.org/pere/blog/archive/2018/09/">September (
3)
</a></li>
754 <li><a href=
"http://people.skolelinux.org/pere/blog/archive/2018/10/">October (
4)
</a></li>
761 <li><a href=
"http://people.skolelinux.org/pere/blog/archive/2017/01/">January (
4)
</a></li>
763 <li><a href=
"http://people.skolelinux.org/pere/blog/archive/2017/02/">February (
3)
</a></li>
765 <li><a href=
"http://people.skolelinux.org/pere/blog/archive/2017/03/">March (
5)
</a></li>
767 <li><a href=
"http://people.skolelinux.org/pere/blog/archive/2017/04/">April (
2)
</a></li>
769 <li><a href=
"http://people.skolelinux.org/pere/blog/archive/2017/06/">June (
5)
</a></li>
771 <li><a href=
"http://people.skolelinux.org/pere/blog/archive/2017/07/">July (
1)
</a></li>
773 <li><a href=
"http://people.skolelinux.org/pere/blog/archive/2017/08/">August (
1)
</a></li>
775 <li><a href=
"http://people.skolelinux.org/pere/blog/archive/2017/09/">September (
3)
</a></li>
777 <li><a href=
"http://people.skolelinux.org/pere/blog/archive/2017/10/">October (
5)
</a></li>
779 <li><a href=
"http://people.skolelinux.org/pere/blog/archive/2017/11/">November (
3)
</a></li>
781 <li><a href=
"http://people.skolelinux.org/pere/blog/archive/2017/12/">December (
4)
</a></li>
788 <li><a href=
"http://people.skolelinux.org/pere/blog/archive/2016/01/">January (
3)
</a></li>
790 <li><a href=
"http://people.skolelinux.org/pere/blog/archive/2016/02/">February (
2)
</a></li>
792 <li><a href=
"http://people.skolelinux.org/pere/blog/archive/2016/03/">March (
3)
</a></li>
794 <li><a href=
"http://people.skolelinux.org/pere/blog/archive/2016/04/">April (
8)
</a></li>
796 <li><a href=
"http://people.skolelinux.org/pere/blog/archive/2016/05/">May (
8)
</a></li>
798 <li><a href=
"http://people.skolelinux.org/pere/blog/archive/2016/06/">June (
2)
</a></li>
800 <li><a href=
"http://people.skolelinux.org/pere/blog/archive/2016/07/">July (
2)
</a></li>
802 <li><a href=
"http://people.skolelinux.org/pere/blog/archive/2016/08/">August (
5)
</a></li>
804 <li><a href=
"http://people.skolelinux.org/pere/blog/archive/2016/09/">September (
2)
</a></li>
806 <li><a href=
"http://people.skolelinux.org/pere/blog/archive/2016/10/">October (
3)
</a></li>
808 <li><a href=
"http://people.skolelinux.org/pere/blog/archive/2016/11/">November (
8)
</a></li>
810 <li><a href=
"http://people.skolelinux.org/pere/blog/archive/2016/12/">December (
5)
</a></li>
817 <li><a href=
"http://people.skolelinux.org/pere/blog/archive/2015/01/">January (
7)
</a></li>
819 <li><a href=
"http://people.skolelinux.org/pere/blog/archive/2015/02/">February (
6)
</a></li>
821 <li><a href=
"http://people.skolelinux.org/pere/blog/archive/2015/03/">March (
1)
</a></li>
823 <li><a href=
"http://people.skolelinux.org/pere/blog/archive/2015/04/">April (
4)
</a></li>
825 <li><a href=
"http://people.skolelinux.org/pere/blog/archive/2015/05/">May (
3)
</a></li>
827 <li><a href=
"http://people.skolelinux.org/pere/blog/archive/2015/06/">June (
4)
</a></li>
829 <li><a href=
"http://people.skolelinux.org/pere/blog/archive/2015/07/">July (
6)
</a></li>
831 <li><a href=
"http://people.skolelinux.org/pere/blog/archive/2015/08/">August (
2)
</a></li>
833 <li><a href=
"http://people.skolelinux.org/pere/blog/archive/2015/09/">September (
2)
</a></li>
835 <li><a href=
"http://people.skolelinux.org/pere/blog/archive/2015/10/">October (
9)
</a></li>
837 <li><a href=
"http://people.skolelinux.org/pere/blog/archive/2015/11/">November (
6)
</a></li>
839 <li><a href=
"http://people.skolelinux.org/pere/blog/archive/2015/12/">December (
3)
</a></li>
846 <li><a href=
"http://people.skolelinux.org/pere/blog/archive/2014/01/">January (
2)
</a></li>
848 <li><a href=
"http://people.skolelinux.org/pere/blog/archive/2014/02/">February (
3)
</a></li>
850 <li><a href=
"http://people.skolelinux.org/pere/blog/archive/2014/03/">March (
8)
</a></li>
852 <li><a href=
"http://people.skolelinux.org/pere/blog/archive/2014/04/">April (
7)
</a></li>
854 <li><a href=
"http://people.skolelinux.org/pere/blog/archive/2014/05/">May (
1)
</a></li>
856 <li><a href=
"http://people.skolelinux.org/pere/blog/archive/2014/06/">June (
2)
</a></li>
858 <li><a href=
"http://people.skolelinux.org/pere/blog/archive/2014/07/">July (
2)
</a></li>
860 <li><a href=
"http://people.skolelinux.org/pere/blog/archive/2014/08/">August (
2)
</a></li>
862 <li><a href=
"http://people.skolelinux.org/pere/blog/archive/2014/09/">September (
5)
</a></li>
864 <li><a href=
"http://people.skolelinux.org/pere/blog/archive/2014/10/">October (
6)
</a></li>
866 <li><a href=
"http://people.skolelinux.org/pere/blog/archive/2014/11/">November (
3)
</a></li>
868 <li><a href=
"http://people.skolelinux.org/pere/blog/archive/2014/12/">December (
5)
</a></li>
875 <li><a href=
"http://people.skolelinux.org/pere/blog/archive/2013/01/">January (
11)
</a></li>
877 <li><a href=
"http://people.skolelinux.org/pere/blog/archive/2013/02/">February (
9)
</a></li>
879 <li><a href=
"http://people.skolelinux.org/pere/blog/archive/2013/03/">March (
9)
</a></li>
881 <li><a href=
"http://people.skolelinux.org/pere/blog/archive/2013/04/">April (
6)
</a></li>
883 <li><a href=
"http://people.skolelinux.org/pere/blog/archive/2013/05/">May (
9)
</a></li>
885 <li><a href=
"http://people.skolelinux.org/pere/blog/archive/2013/06/">June (
10)
</a></li>
887 <li><a href=
"http://people.skolelinux.org/pere/blog/archive/2013/07/">July (
7)
</a></li>
889 <li><a href=
"http://people.skolelinux.org/pere/blog/archive/2013/08/">August (
3)
</a></li>
891 <li><a href=
"http://people.skolelinux.org/pere/blog/archive/2013/09/">September (
5)
</a></li>
893 <li><a href=
"http://people.skolelinux.org/pere/blog/archive/2013/10/">October (
7)
</a></li>
895 <li><a href=
"http://people.skolelinux.org/pere/blog/archive/2013/11/">November (
9)
</a></li>
897 <li><a href=
"http://people.skolelinux.org/pere/blog/archive/2013/12/">December (
3)
</a></li>
904 <li><a href=
"http://people.skolelinux.org/pere/blog/archive/2012/01/">January (
7)
</a></li>
906 <li><a href=
"http://people.skolelinux.org/pere/blog/archive/2012/02/">February (
10)
</a></li>
908 <li><a href=
"http://people.skolelinux.org/pere/blog/archive/2012/03/">March (
17)
</a></li>
910 <li><a href=
"http://people.skolelinux.org/pere/blog/archive/2012/04/">April (
12)
</a></li>
912 <li><a href=
"http://people.skolelinux.org/pere/blog/archive/2012/05/">May (
12)
</a></li>
914 <li><a href=
"http://people.skolelinux.org/pere/blog/archive/2012/06/">June (
20)
</a></li>
916 <li><a href=
"http://people.skolelinux.org/pere/blog/archive/2012/07/">July (
17)
</a></li>
918 <li><a href=
"http://people.skolelinux.org/pere/blog/archive/2012/08/">August (
6)
</a></li>
920 <li><a href=
"http://people.skolelinux.org/pere/blog/archive/2012/09/">September (
9)
</a></li>
922 <li><a href=
"http://people.skolelinux.org/pere/blog/archive/2012/10/">October (
17)
</a></li>
924 <li><a href=
"http://people.skolelinux.org/pere/blog/archive/2012/11/">November (
10)
</a></li>
926 <li><a href=
"http://people.skolelinux.org/pere/blog/archive/2012/12/">December (
7)
</a></li>
933 <li><a href=
"http://people.skolelinux.org/pere/blog/archive/2011/01/">January (
16)
</a></li>
935 <li><a href=
"http://people.skolelinux.org/pere/blog/archive/2011/02/">February (
6)
</a></li>
937 <li><a href=
"http://people.skolelinux.org/pere/blog/archive/2011/03/">March (
6)
</a></li>
939 <li><a href=
"http://people.skolelinux.org/pere/blog/archive/2011/04/">April (
7)
</a></li>
941 <li><a href=
"http://people.skolelinux.org/pere/blog/archive/2011/05/">May (
3)
</a></li>
943 <li><a href=
"http://people.skolelinux.org/pere/blog/archive/2011/06/">June (
2)
</a></li>
945 <li><a href=
"http://people.skolelinux.org/pere/blog/archive/2011/07/">July (
7)
</a></li>
947 <li><a href=
"http://people.skolelinux.org/pere/blog/archive/2011/08/">August (
6)
</a></li>
949 <li><a href=
"http://people.skolelinux.org/pere/blog/archive/2011/09/">September (
4)
</a></li>
951 <li><a href=
"http://people.skolelinux.org/pere/blog/archive/2011/10/">October (
2)
</a></li>
953 <li><a href=
"http://people.skolelinux.org/pere/blog/archive/2011/11/">November (
3)
</a></li>
955 <li><a href=
"http://people.skolelinux.org/pere/blog/archive/2011/12/">December (
1)
</a></li>
962 <li><a href=
"http://people.skolelinux.org/pere/blog/archive/2010/01/">January (
2)
</a></li>
964 <li><a href=
"http://people.skolelinux.org/pere/blog/archive/2010/02/">February (
1)
</a></li>
966 <li><a href=
"http://people.skolelinux.org/pere/blog/archive/2010/03/">March (
3)
</a></li>
968 <li><a href=
"http://people.skolelinux.org/pere/blog/archive/2010/04/">April (
3)
</a></li>
970 <li><a href=
"http://people.skolelinux.org/pere/blog/archive/2010/05/">May (
9)
</a></li>
972 <li><a href=
"http://people.skolelinux.org/pere/blog/archive/2010/06/">June (
14)
</a></li>
974 <li><a href=
"http://people.skolelinux.org/pere/blog/archive/2010/07/">July (
12)
</a></li>
976 <li><a href=
"http://people.skolelinux.org/pere/blog/archive/2010/08/">August (
13)
</a></li>
978 <li><a href=
"http://people.skolelinux.org/pere/blog/archive/2010/09/">September (
7)
</a></li>
980 <li><a href=
"http://people.skolelinux.org/pere/blog/archive/2010/10/">October (
9)
</a></li>
982 <li><a href=
"http://people.skolelinux.org/pere/blog/archive/2010/11/">November (
13)
</a></li>
984 <li><a href=
"http://people.skolelinux.org/pere/blog/archive/2010/12/">December (
12)
</a></li>
991 <li><a href=
"http://people.skolelinux.org/pere/blog/archive/2009/01/">January (
8)
</a></li>
993 <li><a href=
"http://people.skolelinux.org/pere/blog/archive/2009/02/">February (
8)
</a></li>
995 <li><a href=
"http://people.skolelinux.org/pere/blog/archive/2009/03/">March (
12)
</a></li>
997 <li><a href=
"http://people.skolelinux.org/pere/blog/archive/2009/04/">April (
10)
</a></li>
999 <li><a href=
"http://people.skolelinux.org/pere/blog/archive/2009/05/">May (
9)
</a></li>
1001 <li><a href=
"http://people.skolelinux.org/pere/blog/archive/2009/06/">June (
3)
</a></li>
1003 <li><a href=
"http://people.skolelinux.org/pere/blog/archive/2009/07/">July (
4)
</a></li>
1005 <li><a href=
"http://people.skolelinux.org/pere/blog/archive/2009/08/">August (
3)
</a></li>
1007 <li><a href=
"http://people.skolelinux.org/pere/blog/archive/2009/09/">September (
1)
</a></li>
1009 <li><a href=
"http://people.skolelinux.org/pere/blog/archive/2009/10/">October (
2)
</a></li>
1011 <li><a href=
"http://people.skolelinux.org/pere/blog/archive/2009/11/">November (
3)
</a></li>
1013 <li><a href=
"http://people.skolelinux.org/pere/blog/archive/2009/12/">December (
3)
</a></li>
1020 <li><a href=
"http://people.skolelinux.org/pere/blog/archive/2008/11/">November (
5)
</a></li>
1022 <li><a href=
"http://people.skolelinux.org/pere/blog/archive/2008/12/">December (
7)
</a></li>
1033 <li><a href=
"http://people.skolelinux.org/pere/blog/tags/3d-printer">3d-printer (
16)
</a></li>
1035 <li><a href=
"http://people.skolelinux.org/pere/blog/tags/amiga">amiga (
1)
</a></li>
1037 <li><a href=
"http://people.skolelinux.org/pere/blog/tags/aros">aros (
1)
</a></li>
1039 <li><a href=
"http://people.skolelinux.org/pere/blog/tags/bankid">bankid (
4)
</a></li>
1041 <li><a href=
"http://people.skolelinux.org/pere/blog/tags/bitcoin">bitcoin (
10)
</a></li>
1043 <li><a href=
"http://people.skolelinux.org/pere/blog/tags/bootsystem">bootsystem (
17)
</a></li>
1045 <li><a href=
"http://people.skolelinux.org/pere/blog/tags/bsa">bsa (
2)
</a></li>
1047 <li><a href=
"http://people.skolelinux.org/pere/blog/tags/chrpath">chrpath (
2)
</a></li>
1049 <li><a href=
"http://people.skolelinux.org/pere/blog/tags/debian">debian (
163)
</a></li>
1051 <li><a href=
"http://people.skolelinux.org/pere/blog/tags/debian edu">debian edu (
158)
</a></li>
1053 <li><a href=
"http://people.skolelinux.org/pere/blog/tags/debian-handbook">debian-handbook (
4)
</a></li>
1055 <li><a href=
"http://people.skolelinux.org/pere/blog/tags/digistan">digistan (
10)
</a></li>
1057 <li><a href=
"http://people.skolelinux.org/pere/blog/tags/dld">dld (
17)
</a></li>
1059 <li><a href=
"http://people.skolelinux.org/pere/blog/tags/docbook">docbook (
25)
</a></li>
1061 <li><a href=
"http://people.skolelinux.org/pere/blog/tags/drivstoffpriser">drivstoffpriser (
4)
</a></li>
1063 <li><a href=
"http://people.skolelinux.org/pere/blog/tags/english">english (
389)
</a></li>
1065 <li><a href=
"http://people.skolelinux.org/pere/blog/tags/fiksgatami">fiksgatami (
23)
</a></li>
1067 <li><a href=
"http://people.skolelinux.org/pere/blog/tags/fildeling">fildeling (
13)
</a></li>
1069 <li><a href=
"http://people.skolelinux.org/pere/blog/tags/freeculture">freeculture (
32)
</a></li>
1071 <li><a href=
"http://people.skolelinux.org/pere/blog/tags/freedombox">freedombox (
9)
</a></li>
1073 <li><a href=
"http://people.skolelinux.org/pere/blog/tags/frikanalen">frikanalen (
18)
</a></li>
1075 <li><a href=
"http://people.skolelinux.org/pere/blog/tags/h264">h264 (
20)
</a></li>
1077 <li><a href=
"http://people.skolelinux.org/pere/blog/tags/intervju">intervju (
42)
</a></li>
1079 <li><a href=
"http://people.skolelinux.org/pere/blog/tags/isenkram">isenkram (
16)
</a></li>
1081 <li><a href=
"http://people.skolelinux.org/pere/blog/tags/kart">kart (
20)
</a></li>
1083 <li><a href=
"http://people.skolelinux.org/pere/blog/tags/kodi">kodi (
3)
</a></li>
1085 <li><a href=
"http://people.skolelinux.org/pere/blog/tags/ldap">ldap (
9)
</a></li>
1087 <li><a href=
"http://people.skolelinux.org/pere/blog/tags/lego">lego (
4)
</a></li>
1089 <li><a href=
"http://people.skolelinux.org/pere/blog/tags/lenker">lenker (
8)
</a></li>
1091 <li><a href=
"http://people.skolelinux.org/pere/blog/tags/lsdvd">lsdvd (
2)
</a></li>
1093 <li><a href=
"http://people.skolelinux.org/pere/blog/tags/ltsp">ltsp (
1)
</a></li>
1095 <li><a href=
"http://people.skolelinux.org/pere/blog/tags/mesh network">mesh network (
8)
</a></li>
1097 <li><a href=
"http://people.skolelinux.org/pere/blog/tags/multimedia">multimedia (
41)
</a></li>
1099 <li><a href=
"http://people.skolelinux.org/pere/blog/tags/nice free software">nice free software (
10)
</a></li>
1101 <li><a href=
"http://people.skolelinux.org/pere/blog/tags/norsk">norsk (
299)
</a></li>
1103 <li><a href=
"http://people.skolelinux.org/pere/blog/tags/nuug">nuug (
191)
</a></li>
1105 <li><a href=
"http://people.skolelinux.org/pere/blog/tags/offentlig innsyn">offentlig innsyn (
34)
</a></li>
1107 <li><a href=
"http://people.skolelinux.org/pere/blog/tags/open311">open311 (
2)
</a></li>
1109 <li><a href=
"http://people.skolelinux.org/pere/blog/tags/opphavsrett">opphavsrett (
72)
</a></li>
1111 <li><a href=
"http://people.skolelinux.org/pere/blog/tags/personvern">personvern (
107)
</a></li>
1113 <li><a href=
"http://people.skolelinux.org/pere/blog/tags/raid">raid (
2)
</a></li>
1115 <li><a href=
"http://people.skolelinux.org/pere/blog/tags/reactos">reactos (
1)
</a></li>
1117 <li><a href=
"http://people.skolelinux.org/pere/blog/tags/reprap">reprap (
11)
</a></li>
1119 <li><a href=
"http://people.skolelinux.org/pere/blog/tags/rfid">rfid (
3)
</a></li>
1121 <li><a href=
"http://people.skolelinux.org/pere/blog/tags/robot">robot (
10)
</a></li>
1123 <li><a href=
"http://people.skolelinux.org/pere/blog/tags/rss">rss (
1)
</a></li>
1125 <li><a href=
"http://people.skolelinux.org/pere/blog/tags/ruter">ruter (
6)
</a></li>
1127 <li><a href=
"http://people.skolelinux.org/pere/blog/tags/scraperwiki">scraperwiki (
2)
</a></li>
1129 <li><a href=
"http://people.skolelinux.org/pere/blog/tags/sikkerhet">sikkerhet (
55)
</a></li>
1131 <li><a href=
"http://people.skolelinux.org/pere/blog/tags/sitesummary">sitesummary (
4)
</a></li>
1133 <li><a href=
"http://people.skolelinux.org/pere/blog/tags/skepsis">skepsis (
5)
</a></li>
1135 <li><a href=
"http://people.skolelinux.org/pere/blog/tags/standard">standard (
56)
</a></li>
1137 <li><a href=
"http://people.skolelinux.org/pere/blog/tags/stavekontroll">stavekontroll (
6)
</a></li>
1139 <li><a href=
"http://people.skolelinux.org/pere/blog/tags/stortinget">stortinget (
12)
</a></li>
1141 <li><a href=
"http://people.skolelinux.org/pere/blog/tags/surveillance">surveillance (
55)
</a></li>
1143 <li><a href=
"http://people.skolelinux.org/pere/blog/tags/sysadmin">sysadmin (
4)
</a></li>
1145 <li><a href=
"http://people.skolelinux.org/pere/blog/tags/usenix">usenix (
2)
</a></li>
1147 <li><a href=
"http://people.skolelinux.org/pere/blog/tags/valg">valg (
9)
</a></li>
1149 <li><a href=
"http://people.skolelinux.org/pere/blog/tags/verkidetfri">verkidetfri (
13)
</a></li>
1151 <li><a href=
"http://people.skolelinux.org/pere/blog/tags/video">video (
69)
</a></li>
1153 <li><a href=
"http://people.skolelinux.org/pere/blog/tags/vitenskap">vitenskap (
4)
</a></li>
1155 <li><a href=
"http://people.skolelinux.org/pere/blog/tags/web">web (
41)
</a></li>
1161 <p style=
"text-align: right">
1162 Created by
<a href=
"http://steve.org.uk/Software/chronicle">Chronicle v4.6
</a>