]> pere.pagekite.me Git - homepage.git/blob - blog/index.html
Generated.
[homepage.git] / blog / index.html
1 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
2 "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
3 <html xmlns="http://www.w3.org/1999/xhtml" dir="ltr">
4 <head>
5 <meta http-equiv="Content-Type" content="text/html;charset=utf-8" />
6 <title>Petter Reinholdtsen</title>
7 <link rel="stylesheet" type="text/css" media="screen" href="http://people.skolelinux.org/pere/blog/style.css" />
8 <link rel="stylesheet" type="text/css" media="screen" href="http://people.skolelinux.org/pere/blog/vim.css" />
9 <link rel="alternate" title="RSS Feed" href="http://people.skolelinux.org/pere/blog/index.rss" type="application/rss+xml" />
10 </head>
11 <body>
12 <div class="title">
13 <h1>
14 <a href="http://people.skolelinux.org/pere/blog/">Petter Reinholdtsen</a>
15
16 </h1>
17
18 </div>
19
20
21
22 <div class="entry">
23 <div class="title"><a href="http://people.skolelinux.org/pere/blog/Measuring_the_speaker_frequency_response_using_the_AUDMES_free_software_GUI___nice_free_software.html">Measuring the speaker frequency response using the AUDMES free software GUI - nice free software</a></div>
24 <div class="date">22nd October 2018</div>
25 <div class="body"><p><img src="http://people.skolelinux.org/pere/blog/images/2018-10-22-audmes-measure-speakers.png" align="right" width="40%"/></p>
26
27 <p>My current home stereo is a patchwork of various pieces I got on
28 flee markeds over the years. It is amazing what kind of equipment
29 show up there. I've been wondering for a while if it was possible to
30 measure how well this equipment is working together, and decided to
31 see how far I could get using free software. After trawling the web I
32 came across an article from DIY Audio and Video on
33 <a href="https://www.diyaudioandvideo.com/Tutorial/SpeakerResponseTesting/">Speaker
34 Testing and Analysis</a> describing how to test speakers, and it listing
35 several software options, among them
36 <a href="https://sourceforge.net/projects/audmes/">AUDio MEasurement
37 System (AUDMES)</a>. It is the only free software system I could find
38 focusing on measuring speakers and audio frequency response. In the
39 process I also found an interesting article from NOVO on
40 <a href="http://novo.press/understanding-speaker-specifications-and-frequency-response/">Understanding
41 Speaker Specifications and Frequency Response</a> and an article from
42 ecoustics on
43 <a href="https://www.ecoustics.com/articles/understanding-speaker-frequency-response/">Understanding
44 Speaker Frequency Response</a>, with a lot of information on what to
45 look for and how to interpret the graphs. Armed with this knowledge,
46 I set out to measure the state of my speakers.</p>
47
48 <p>The first hurdle was that AUDMES hadn't seen a commit for 10 years
49 and did not build with current compilers and libraries. I got in
50 touch with its author, who no longer was spending time on the program
51 but gave me write access to the subversion repository on Sourceforge.
52 The end result is that now the code build on Linux and is capable of
53 saving and loading the collected frequency response data in CSV
54 format. The application is quite nice and flexible, and I was able to
55 select the input and output audio interfaces independently. This made
56 it possible to use a USB mixer as the input source, while sending
57 output via my laptop headphone connection. I lacked the hardware and
58 cabling to figure out a different way to get independent cabling to
59 speakers and microphone.</p>
60
61 <p>Using this setup I could see how a large range of high frequencies
62 apparently were not making it out of my speakers. The picture show
63 the frequency response measurement of one of the speakers. Note the
64 frequency lines seem to be slightly misaligned, compared to the CSV
65 output from the program. I can not hear several of these are high
66 frequencies, according to measurement from
67 <a href="http://freehearingtestsoftware.com">Free Hearing Test
68 Software</a>, an freeware system to measure your hearing (still
69 looking for a free software alternative), so I do not know if they are
70 coming out out the speakers. I thus do not quite know how to figure
71 out if the missing frequencies is a problem with the microphone, the
72 amplifier or the speakers, but I managed to rule out the audio card in my
73 PC by measuring my Bose noise canceling headset using its own
74 microphone. This setup was able to see the high frequency tones, so
75 the problem with my stereo had to be in the amplifier or speakers.</p>
76
77 <p>Anyway, to try to role out one factor I ended up picking up a new
78 set of speakers at a flee marked, and these work a lot better than the
79 old speakers, so I guess the microphone and amplifier is OK. If you
80 need to measure your own speakers, check out AUDMES. If more people
81 get involved, perhaps the project could become good enough to include
82 in Debian? And if you know of some other free software to measure
83 speakers and amplifier performance, please let me know. I am aware of
84 the freeware option <a href="https://www.roomeqwizard.com/">REW</a>,
85 but I want something that can be developed also when the vendor
86 looses interest.</p>
87
88 <p>As usual, if you use Bitcoin and want to show your support of my
89 activities, please send Bitcoin donations to my address
90 <b><a href="bitcoin:15oWEoG9dUPovwmUL9KWAnYRtNJEkP1u1b">15oWEoG9dUPovwmUL9KWAnYRtNJEkP1u1b</a></b>.</p>
91 </div>
92 <div class="tags">
93
94
95 Tags: <a href="http://people.skolelinux.org/pere/blog/tags/english">english</a>, <a href="http://people.skolelinux.org/pere/blog/tags/nice free software">nice free software</a>.
96
97
98 </div>
99 </div>
100 <div class="padding"></div>
101
102 <div class="entry">
103 <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>
104 <div class="date">21st October 2018</div>
105 <div class="body"><p>Bittorrent is as far as I know, currently the most efficient way to
106 distribute content on the Internet. It is used all by all sorts of
107 content providers, from national TV stations like
108 <a href="https://www.nrk.no/">NRK</a>, Linux distributors like
109 <a href="https://www.debian.org/">Debian</a> and
110 <a href="https://www.ubuntu.com/">Ubuntu</a>, and of course the
111 <a href="https://archive.org/">Internet archive</A>.
112
113 <p>Almost a month ago
114 <a href="https://tracker.debian.org/pkg/vlc-plugin-bittorrent">a new
115 package adding Bittorrent support to VLC</a> became available in
116 Debian testing and unstable. To test it, simply install it like
117 this:</p>
118
119 <p><pre>
120 apt install vlc-plugin-bittorrent
121 </pre></p>
122
123 <p>Since the plugin was made available for the first time in Debian,
124 several improvements have been made to it. In version 2.2-4, now
125 available in both testing and unstable, a desktop file is provided to
126 teach browsers to start VLC when the user click on torrent files or
127 magnet links. The last part is thanks to me finally understanding
128 what the strange x-scheme-handler style MIME types in desktop files
129 are used for. By adding x-scheme-handler/magnet to the MimeType entry
130 in the desktop file, at least the browsers Firefox and Chromium will
131 suggest to start VLC when selecting a magnet URI on a web page. The
132 end result is that now, with the plugin installed in Buster and Sid,
133 one can visit any
134 <a href="https://archive.org/details/CopyingIsNotTheft1080p">Internet
135 Archive page with movies</a> using a web browser and click on the
136 torrent link to start streaming the movie.</p>
137
138 <p>Note, there is still some misfeatures in the plugin. One is the
139 fact that it will hang and
140 <a href="https://github.com/johang/vlc-bittorrent/issues/13">block VLC
141 from exiting until the torrent streaming starts</a>. Another is the
142 fact that it
143 <a href="https://github.com/johang/vlc-bittorrent/issues/9">will pick
144 and play a random file in a multi file torrent</a>. This is not
145 always the video file you want. Combined with the first it can be a
146 bit hard to get the video streaming going. But when it work, it seem
147 to do a good job.</p>
148
149 <p>For the Debian packaging, I would love to find a good way to test
150 if the plugin work with VLC using autopkgtest. I tried, but do not
151 know enough of the inner workings of VLC to get it working. For now
152 the autopkgtest script is only checking if the .so file was
153 successfully loaded by VLC. If you have any suggestions, please
154 submit a patch to the Debian bug tracking system.</p>
155
156 <p>As usual, if you use Bitcoin and want to show your support of my
157 activities, please send Bitcoin donations to my address
158 <b><a href="bitcoin:15oWEoG9dUPovwmUL9KWAnYRtNJEkP1u1b">15oWEoG9dUPovwmUL9KWAnYRtNJEkP1u1b</a></b>.</p>
159 </div>
160 <div class="tags">
161
162
163 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>.
164
165
166 </div>
167 </div>
168 <div class="padding"></div>
169
170 <div class="entry">
171 <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>
172 <div class="date">18th October 2018</div>
173 <div class="body"><p>This morning, the new release of the
174 <a href="https://gitlab.com/OsloMet-ABI/nikita-noark5-core/">Nikita
175 Noark 5 core project</a> was
176 <a href="https://lists.nuug.no/pipermail/nikita-noark/2018-October/000406.html">announced
177 on the project mailing list</a>. The free software solution is an
178 implementation of the Norwegian archive standard Noark 5 used by
179 government offices in Norway. These were the changes in version 0.2
180 since version 0.1.1 (from NEWS.md):
181
182 <ul>
183 <li>Fix typos in REL names</li>
184 <li>Tidy up error message reporting</li>
185 <li>Fix issue where we used Integer.valueOf(), not Integer.getInteger()</li>
186 <li>Change some String handling to StringBuffer</li>
187 <li>Fix error reporting</li>
188 <li>Code tidy-up</li>
189 <li>Fix issue using static non-synchronized SimpleDateFormat to avoid
190 race conditions</li>
191 <li>Fix problem where deserialisers were treating integers as strings</li>
192 <li>Update methods to make them null-safe</li>
193 <li>Fix many issues reported by coverity</li>
194 <li>Improve equals(), compareTo() and hash() in domain model</li>
195 <li>Improvements to the domain model for metadata classes</li>
196 <li>Fix CORS issues when downloading document</li>
197 <li>Implementation of case-handling with registryEntry and document upload</li>
198 <li>Better support in Javascript for OPTIONS</li>
199 <li>Adding concept description of mail integration</li>
200 <li>Improve setting of default values for GET on ny-journalpost</li>
201 <li>Better handling of required values during deserialisation </li>
202 <li>Changed tilknyttetDato (M620) from date to dateTime</li>
203 <li>Corrected some opprettetDato (M600) (de)serialisation errors.</li>
204 <li>Improve parse error reporting.</li>
205 <li>Started on OData search and filtering.</li>
206 <li>Added Contributor Covenant Code of Conduct to project.</li>
207 <li>Moved repository and project from Github to Gitlab.</li>
208 <li>Restructured repository, moved code into src/ and web/.</li>
209 <li>Updated code to use Spring Boot version 2.</li>
210 <li>Added support for OAuth2 authentication.</li>
211 <li>Fixed several bugs discovered by Coverity.</li>
212 <li>Corrected handling of date/datetime fields.</li>
213 <li>Improved error reporting when rejecting during deserializatoin.</li>
214 <li>Adjusted default values provided for ny-arkivdel, ny-mappe,
215 ny-saksmappe, ny-journalpost and ny-dokumentbeskrivelse.</li>
216 <li>Several fixes for korrespondansepart*.</li>
217 <li>Updated web GUI:
218 <ul>
219 <li>Now handle both file upload and download.</li>
220 <li>Uses new OAuth2 authentication for login.</li>
221 <li>Forms now fetches default values from API using GET.</li>
222 <li>Added RFC 822 (email), TIFF and JPEG to list of possible file formats.</li>
223 </ul></li>
224 </ul>
225
226 <p>The changes and improvements are extensive. Running diffstat on
227 the changes between git tab 0.1.1 and 0.2 show 1098 files changed,
228 108666 insertions(+), 54066 deletions(-).</p>
229
230 <p>If free and open standardized archiving API sound interesting to
231 you, please contact us on IRC
232 (<a href="irc://irc.freenode.net/%23nikita">#nikita on
233 irc.freenode.net</a>) or email
234 (<a href="https://lists.nuug.no/mailman/listinfo/nikita-noark">nikita-noark
235 mailing list</a>).</p>
236
237 <p>As usual, if you use Bitcoin and want to show your support of my
238 activities, please send Bitcoin donations to my address
239 <b><a href="bitcoin:15oWEoG9dUPovwmUL9KWAnYRtNJEkP1u1b">15oWEoG9dUPovwmUL9KWAnYRtNJEkP1u1b</a></b>.</p>
240 </div>
241 <div class="tags">
242
243
244 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>.
245
246
247 </div>
248 </div>
249 <div class="padding"></div>
250
251 <div class="entry">
252 <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>
253 <div class="date"> 8th October 2018</div>
254 <div class="body"><p>I have earlier covered the basics of trusted timestamping using the
255 'openssl ts' client. See blog post for
256 <a href="http://people.skolelinux.org/pere/blog/Public_Trusted_Timestamping_services_for_everyone.html">2014</a>,
257 <a href="http://people.skolelinux.org/pere/blog/syslog_trusted_timestamp___chain_of_trusted_timestamps_for_your_syslog.html">2016</a>
258 and
259 <a href="http://people.skolelinux.org/pere/blog/Idea_for_storing_trusted_timestamps_in_a_Noark_5_archive.html">2017</a>
260 for those stories. But some times I want to integrate the timestamping
261 in other code, and recently I needed to integrate it into Python.
262 After searching a bit, I found
263 <a href="https://dev.entrouvert.org/projects/python-rfc3161">the
264 rfc3161 library</a> which seemed like a good fit, but I soon
265 discovered it only worked for python version 2, and I needed something
266 that work with python version 3. Luckily I next came across
267 <a href="https://github.com/trbs/rfc3161ng/">the rfc3161ng library</a>,
268 a fork of the original rfc3161 library. Not only is it working with
269 python 3, it have fixed a few of the bugs in the original library, and
270 it has an active maintainer. I decided to wrap it up and make it
271 <a href="https://tracker.debian.org/pkg/python-rfc3161ng">available in
272 Debian</a>, and a few days ago it entered Debian unstable and testing.</p>
273
274 <p>Using the library is fairly straight forward. The only slightly
275 problematic step is to fetch the required certificates to verify the
276 timestamp. For some services it is straight forward, while for others
277 I have not yet figured out how to do it. Here is a small standalone
278 code example based on of the integration tests in the library code:</p>
279
280 <pre>
281 #!/usr/bin/python3
282
283 """
284
285 Python 3 script demonstrating how to use the rfc3161ng module to
286 get trusted timestamps.
287
288 The license of this code is the same as the license of the rfc3161ng
289 library, ie MIT/BSD.
290
291 """
292
293 import os
294 import pyasn1.codec.der
295 import rfc3161ng
296 import subprocess
297 import tempfile
298 import urllib.request
299
300 def store(f, data):
301 f.write(data)
302 f.flush()
303 f.seek(0)
304
305 def fetch(url, f=None):
306 response = urllib.request.urlopen(url)
307 data = response.read()
308 if f:
309 store(f, data)
310 return data
311
312 def main():
313 with tempfile.NamedTemporaryFile() as cert_f,\
314 tempfile.NamedTemporaryFile() as ca_f,\
315 tempfile.NamedTemporaryFile() as msg_f,\
316 tempfile.NamedTemporaryFile() as tsr_f:
317
318 # First fetch certificates used by service
319 certificate_data = fetch('https://freetsa.org/files/tsa.crt', cert_f)
320 ca_data_data = fetch('https://freetsa.org/files/cacert.pem', ca_f)
321
322 # Then timestamp the message
323 timestamper = \
324 rfc3161ng.RemoteTimestamper('http://freetsa.org/tsr',
325 certificate=certificate_data)
326 data = b"Python forever!\n"
327 tsr = timestamper(data=data, return_tsr=True)
328
329 # Finally, convert message and response to something 'openssl ts' can verify
330 store(msg_f, data)
331 store(tsr_f, pyasn1.codec.der.encoder.encode(tsr))
332 args = ["openssl", "ts", "-verify",
333 "-data", msg_f.name,
334 "-in", tsr_f.name,
335 "-CAfile", ca_f.name,
336 "-untrusted", cert_f.name]
337 subprocess.check_call(args)
338
339 if '__main__' == __name__:
340 main()
341 </pre>
342
343 <p>The code fetches the required certificates, store them as temporary
344 files, timestamp a simple message, store the message and timestamp to
345 disk and ask 'openssl ts' to verify the timestamp. A timestamp is
346 around 1.5 kiB in size, and should be fairly easy to store for future
347 use.</p>
348
349 <p>As usual, if you use Bitcoin and want to show your support of my
350 activities, please send Bitcoin donations to my address
351 <b><a href="bitcoin:15oWEoG9dUPovwmUL9KWAnYRtNJEkP1u1b">15oWEoG9dUPovwmUL9KWAnYRtNJEkP1u1b</a></b>.</p>
352 </div>
353 <div class="tags">
354
355
356 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>.
357
358
359 </div>
360 </div>
361 <div class="padding"></div>
362
363 <div class="entry">
364 <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>
365 <div class="date"> 4th October 2018</div>
366 <div class="body"><p>A few days, I rescued a Windows victim over to Debian. To try to
367 rescue the remains, I helped set up automatic sync with Google Drive.
368 I did not find any sensible Debian package handling this
369 automatically, so I rebuild the grive2 source from
370 <a href="http://www.webupd8.org/">the Ubuntu UPD8 PPA</a> to do the
371 task and added a autostart desktop entry and a small shell script to
372 run in the background while the user is logged in to do the sync.
373 Here is a sketch of the setup for future reference.</p>
374
375 <p>I first created <tt>~/googledrive</tt>, entered the directory and
376 ran '<tt>grive -a</tt>' to authenticate the machine/user. Next, I
377 created a autostart hook in <tt>~/.config/autostart/grive.desktop</tt>
378 to start the sync when the user log in:</p>
379
380 <p><blockquote><pre>
381 [Desktop Entry]
382 Name=Google drive autosync
383 Type=Application
384 Exec=/home/user/bin/grive-sync
385 </pre></blockquote></p>
386
387 <p>Finally, I wrote the <tt>~/bin/grive-sync</tt> script to sync
388 ~/googledrive/ with the files in Google Drive.</p>
389
390 <p><blockquote><pre>
391 #!/bin/sh
392 set -e
393 cd ~/
394 cleanup() {
395 if [ "$syncpid" ] ; then
396 kill $syncpid
397 fi
398 }
399 trap cleanup EXIT INT QUIT
400 /usr/lib/grive/grive-sync.sh listen googledrive 2>&1 | sed "s%^%$0:%" &
401 syncpdi=$!
402 while true; do
403 if ! xhost >/dev/null 2>&1 ; then
404 echo "no DISPLAY, exiting as the user probably logged out"
405 exit 1
406 fi
407 if [ ! -e /run/user/1000/grive-sync.sh_googledrive ] ; then
408 /usr/lib/grive/grive-sync.sh sync googledrive
409 fi
410 sleep 300
411 done 2>&1 | sed "s%^%$0:%"
412 </pre></blockquote></p>
413
414 <p>Feel free to use the setup if you want. It can be assumed to be
415 GNU GPL v2 licensed (or any later version, at your leisure), but I
416 doubt this code is possible to claim copyright on.</p>
417
418 <p>As usual, if you use Bitcoin and want to show your support of my
419 activities, please send Bitcoin donations to my address
420 <b><a href="bitcoin:15oWEoG9dUPovwmUL9KWAnYRtNJEkP1u1b">15oWEoG9dUPovwmUL9KWAnYRtNJEkP1u1b</a></b>.</p>
421 </div>
422 <div class="tags">
423
424
425 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>.
426
427
428 </div>
429 </div>
430 <div class="padding"></div>
431
432 <div class="entry">
433 <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>
434 <div class="date">29th September 2018</div>
435 <div class="body"><p>It would come as no surprise to anyone that I am interested in
436 bitcoins and virtual currencies. I've been keeping an eye on virtual
437 currencies for many years, and it is part of the reason a few months
438 ago, I started writing a python library for collecting currency
439 exchange rates and trade on virtual currency exchanges. I decided to
440 name the end result valutakrambod, which perhaps can be translated to
441 small currency shop.</p>
442
443 <p>The library uses the tornado python library to handle HTTP and
444 websocket connections, and provide a asynchronous system for
445 connecting to and tracking several services. The code is available
446 from
447 <a href="http://github.com/petterreinholdtsen/valutakrambod">github</a>.</p>
448
449 </p>There are two example clients of the library. One is very simple and
450 list every updated buy/sell price received from the various services.
451 This code is started by running bin/btc-rates and call the client code
452 in valutakrambod/client.py. The simple client look like this:</p>
453
454 <p><blockquote><pre>
455 import functools
456 import tornado.ioloop
457 import valutakrambod
458 class SimpleClient(object):
459 def __init__(self):
460 self.services = []
461 self.streams = []
462 pass
463 def newdata(self, service, pair, changed):
464 print("%-15s %s-%s: %8.3f %8.3f" % (
465 service.servicename(),
466 pair[0],
467 pair[1],
468 service.rates[pair]['ask'],
469 service.rates[pair]['bid'])
470 )
471 async def refresh(self, service):
472 await service.fetchRates(service.wantedpairs)
473 def run(self):
474 self.ioloop = tornado.ioloop.IOLoop.current()
475 self.services = valutakrambod.service.knownServices()
476 for e in self.services:
477 service = e()
478 service.subscribe(self.newdata)
479 stream = service.websocket()
480 if stream:
481 self.streams.append(stream)
482 else:
483 # Fetch information from non-streaming services immediately
484 self.ioloop.call_later(len(self.services),
485 functools.partial(self.refresh, service))
486 # as well as regularly
487 service.periodicUpdate(60)
488 for stream in self.streams:
489 stream.connect()
490 try:
491 self.ioloop.start()
492 except KeyboardInterrupt:
493 print("Interrupted by keyboard, closing all connections.")
494 pass
495 for stream in self.streams:
496 stream.close()
497 </pre></blockquote></p>
498
499 <p>The library client loops over all known "public" services,
500 initialises it, subscribes to any updates from the service, checks and
501 activates websocket streaming if the service provide it, and if no
502 streaming is supported, fetches information from the service and sets
503 up a periodic update every 60 seconds. The output from this client
504 can look like this:</p>
505
506 <p><blockquote><pre>
507 Bl3p BTC-EUR: 5687.110 5653.690
508 Bl3p BTC-EUR: 5687.110 5653.690
509 Bl3p BTC-EUR: 5687.110 5653.690
510 Hitbtc BTC-USD: 6594.560 6593.690
511 Hitbtc BTC-USD: 6594.560 6593.690
512 Bl3p BTC-EUR: 5687.110 5653.690
513 Hitbtc BTC-USD: 6594.570 6593.690
514 Bitstamp EUR-USD: 1.159 1.154
515 Hitbtc BTC-USD: 6594.570 6593.690
516 Hitbtc BTC-USD: 6594.580 6593.690
517 Hitbtc BTC-USD: 6594.580 6593.690
518 Hitbtc BTC-USD: 6594.580 6593.690
519 Bl3p BTC-EUR: 5687.110 5653.690
520 Paymium BTC-EUR: 5680.000 5620.240
521 </pre></blockquote></p>
522
523 <p>The exchange order book is tracked in addition to the best buy/sell
524 price, for those that need to know the details.</p>
525
526 <p>The other example client is focusing on providing a curses view
527 with updated buy/sell prices as soon as they are received from the
528 services. This code is located in bin/btc-rates-curses and activated
529 by using the '-c' argument. Without the argument the "curses" output
530 is printed without using curses, which is useful for debugging. The
531 curses view look like this:</p>
532
533 <p><blockquote><pre>
534 Name Pair Bid Ask Spr Ftcd Age
535 BitcoinsNorway BTCEUR 5591.8400 5711.0800 2.1% 16 nan 60
536 Bitfinex BTCEUR 5671.0000 5671.2000 0.0% 16 22 59
537 Bitmynt BTCEUR 5580.8000 5807.5200 3.9% 16 41 60
538 Bitpay BTCEUR 5663.2700 nan nan% 15 nan 60
539 Bitstamp BTCEUR 5664.8400 5676.5300 0.2% 0 1 1
540 Bl3p BTCEUR 5653.6900 5684.9400 0.5% 0 nan 19
541 Coinbase BTCEUR 5600.8200 5714.9000 2.0% 15 nan nan
542 Kraken BTCEUR 5670.1000 5670.2000 0.0% 14 17 60
543 Paymium BTCEUR 5620.0600 5680.0000 1.1% 1 7515 nan
544 BitcoinsNorway BTCNOK 52898.9700 54034.6100 2.1% 16 nan 60
545 Bitmynt BTCNOK 52960.3200 54031.1900 2.0% 16 41 60
546 Bitpay BTCNOK 53477.7833 nan nan% 16 nan 60
547 Coinbase BTCNOK 52990.3500 54063.0600 2.0% 15 nan nan
548 MiraiEx BTCNOK 52856.5300 54100.6000 2.3% 16 nan nan
549 BitcoinsNorway BTCUSD 6495.5300 6631.5400 2.1% 16 nan 60
550 Bitfinex BTCUSD 6590.6000 6590.7000 0.0% 16 23 57
551 Bitpay BTCUSD 6564.1300 nan nan% 15 nan 60
552 Bitstamp BTCUSD 6561.1400 6565.6200 0.1% 0 2 1
553 Coinbase BTCUSD 6504.0600 6635.9700 2.0% 14 nan 117
554 Gemini BTCUSD 6567.1300 6573.0700 0.1% 16 89 nan
555 Hitbtc+BTCUSD 6592.6200 6594.2100 0.0% 0 0 0
556 Kraken BTCUSD 6565.2000 6570.9000 0.1% 15 17 58
557 Exchangerates EURNOK 9.4665 9.4665 0.0% 16 107789 nan
558 Norgesbank EURNOK 9.4665 9.4665 0.0% 16 107789 nan
559 Bitstamp EURUSD 1.1537 1.1593 0.5% 4 5 1
560 Exchangerates EURUSD 1.1576 1.1576 0.0% 16 107789 nan
561 BitcoinsNorway LTCEUR 1.0000 49.0000 98.0% 16 nan nan
562 BitcoinsNorway LTCNOK 492.4800 503.7500 2.2% 16 nan 60
563 BitcoinsNorway LTCUSD 1.0221 49.0000 97.9% 15 nan nan
564 Norgesbank USDNOK 8.1777 8.1777 0.0% 16 107789 nan
565 </pre></blockquote></p>
566
567 <p>The code for this client is too complex for a simple blog post, so
568 you will have to check out the git repository to figure out how it
569 work. What I can tell is how the three last numbers on each line
570 should be interpreted. The first is how many seconds ago information
571 was received from the service. The second is how long ago, according
572 to the service, the provided information was updated. The last is an
573 estimate on how often the buy/sell values change.</p>
574
575 <p>If you find this library useful, or would like to improve it, I
576 would love to hear from you. Note that for some of the services I've
577 implemented a trading API. It might be the topic of a future blog
578 post.</p>
579
580 <p>As usual, if you use Bitcoin and want to show your support of my
581 activities, please send Bitcoin donations to my address
582 <b><a href="bitcoin:15oWEoG9dUPovwmUL9KWAnYRtNJEkP1u1b">15oWEoG9dUPovwmUL9KWAnYRtNJEkP1u1b</a></b>.</p>
583 </div>
584 <div class="tags">
585
586
587 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>.
588
589
590 </div>
591 </div>
592 <div class="padding"></div>
593
594 <div class="entry">
595 <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>
596 <div class="date">24th September 2018</div>
597 <div class="body"><p>Back in February, I got curious to see
598 <a href="http://people.skolelinux.org/pere/blog/Using_VLC_to_stream_bittorrent_sources.html">if
599 VLC now supported Bittorrent streaming</a>. It did not, despite the
600 fact that the idea and code to handle such streaming had been floating
601 around for years. I did however find
602 <a href="https://github.com/johang/vlc-bittorrent">a standalone plugin
603 for VLC</a> to do it, and half a year later I decided to wrap up the
604 plugin and get it into Debian. I uploaded it to NEW a few days ago,
605 and am very happy to report that it
606 <a href="https://tracker.debian.org/pkg/vlc-plugin-bittorrent">entered
607 Debian</a> a few hours ago, and should be available in Debian/Unstable
608 tomorrow, and Debian/Testing in a few days.</p>
609
610 <p>With the vlc-plugin-bittorrent package installed you should be able
611 to stream videos using a simple call to</p>
612
613 <p><blockquote><pre>
614 vlc https://archive.org/download/TheGoat/TheGoat_archive.torrent
615 </pre></blockquote></p>
616
617 </p>It can handle magnet links too. Now if only native vlc had
618 bittorrent support. Then a lot more would be helping each other to
619 share public domain and creative commons movies. The plugin need some
620 stability work with seeking and picking the right file in a torrent
621 with many files, but is already usable. Please note that the plugin
622 is not removing downloaded files when vlc is stopped, so it can fill
623 up your disk if you are not careful. Have fun. :)</p>
624
625 <p>I would love to get help maintaining this package. Get in touch if
626 you are interested.</p>
627
628 <p>As usual, if you use Bitcoin and want to show your support of my
629 activities, please send Bitcoin donations to my address
630 <b><a href="bitcoin:15oWEoG9dUPovwmUL9KWAnYRtNJEkP1u1b">15oWEoG9dUPovwmUL9KWAnYRtNJEkP1u1b</a></b>.</p>
631 </div>
632 <div class="tags">
633
634
635 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>.
636
637
638 </div>
639 </div>
640 <div class="padding"></div>
641
642 <div class="entry">
643 <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>
644 <div class="date"> 2nd September 2018</div>
645 <div class="body"><p>I continue to explore my Kodi installation, and today I wanted to
646 tell it to play a youtube URL I received in a chat, without having to
647 insert search terms using the on-screen keyboard. After searching the
648 web for API access to the Youtube plugin and testing a bit, I managed
649 to find a recipe that worked. If you got a kodi instance with its API
650 available from http://kodihost/jsonrpc, you can try the following to
651 have check out a nice cover band.</p>
652
653 <p><blockquote><pre>curl --silent --header 'Content-Type: application/json' \
654 --data-binary '{ "id": 1, "jsonrpc": "2.0", "method": "Player.Open",
655 "params": {"item": { "file":
656 "plugin://plugin.video.youtube/play/?video_id=LuRGVM9O0qg" } } }' \
657 http://projector.local/jsonrpc</pre></blockquote></p>
658
659 <p>I've extended kodi-stream program to take a video source as its
660 first argument. It can now handle direct video links, youtube links
661 and 'desktop' to stream my desktop to Kodi. It is almost like a
662 Chromecast. :)</p>
663
664 <p>As usual, if you use Bitcoin and want to show your support of my
665 activities, please send Bitcoin donations to my address
666 <b><a href="bitcoin:15oWEoG9dUPovwmUL9KWAnYRtNJEkP1u1b">15oWEoG9dUPovwmUL9KWAnYRtNJEkP1u1b</a></b>.</p>
667 </div>
668 <div class="tags">
669
670
671 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>.
672
673
674 </div>
675 </div>
676 <div class="padding"></div>
677
678 <div class="entry">
679 <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>
680 <div class="date">30th August 2018</div>
681 <div class="body"><p>It might seem obvious that software created using tax money should
682 be available for everyone to use and improve. Free Software
683 Foundation Europe recentlystarted a campaign to help get more people
684 to understand this, and I just signed the petition on
685 <a href="https://publiccode.eu/">Public Money, Public Code</a> to help
686 them. I hope you too will do the same.</p>
687 </div>
688 <div class="tags">
689
690
691 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>.
692
693
694 </div>
695 </div>
696 <div class="padding"></div>
697
698 <div class="entry">
699 <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>
700 <div class="date">13th August 2018</div>
701 <div class="body"><p>A few days ago, I wondered if there are any privacy respecting
702 health monitors and/or fitness trackers available for sale these days.
703 I would like to buy one, but do not want to share my personal data
704 with strangers, nor be forced to have a mobile phone to get data out
705 of the unit. I've received some ideas, and would like to share them
706 with you.
707
708 One interesting data point was a pointer to a Free Software app for
709 Android named
710 <a href="https://github.com/Freeyourgadget/Gadgetbridge/">Gadgetbridge</a>.
711 It provide cloudless collection and storing of data from a variety of
712 trackers. Its
713 <a href="https://github.com/Freeyourgadget/Gadgetbridge/#supported-devices">list
714 of supported devices</a> is a good indicator for units where the
715 protocol is fairly open, as it is obviously being handled by Free
716 Software. Other units are reportedly encrypting the collected
717 information with their own public key, making sure only the vendor
718 cloud service is able to extract data from the unit. The people
719 contacting me about Gadgetbirde said they were using
720 <a href="https://us.amazfit.com/shop/bip?variant=336750">Amazfit
721 Bip</a> and
722 <a href="http://www.xiaomimi6phone.com/xiaomi-mi-band-3-features-release-date-rumors/">Xiaomi
723 Band 3</a>.</p>
724
725 <p>I also got a suggestion to look at some of the units from Garmin.
726 I was told their GPS watches can be connected via USB and show up as a
727 USB storage device with
728 <a href="https://www.gpsbabel.org/htmldoc-development/fmt_garmin_fit.html">Garmin
729 FIT files</a> containing the collected measurements. While
730 proprietary, FIT files apparently can be read at least by
731 <a href="https://www.gpsbabel.org">GPSBabel</a> and the
732 <a href="https://apps.nextcloud.com/apps/gpxpod">GpxPod</a> Nextcloud
733 app. It is unclear to me if they can read step count and heart rate
734 data. The person I talked to was using a
735 <a href="https://buy.garmin.com/en-US/US/p/564291">Garmin Forerunner
736 935</a>, which is a fairly expensive unit. I doubt it is worth it for
737 a unit where the vendor clearly is trying its best to move from open
738 to closed systems. I still remember when Garmin dropped NMEA support
739 in its GPSes.</p>
740
741 <p>A final idea was to build ones own unit, perhaps by basing it on a
742 wearable hardware platforms like
743 <a href="https://learn.adafruit.com/flora-geo-watch">the Flora Geo
744 Watch</a>. Sound like fun, but I had more money than time to spend on
745 the topic, so I suspect it will have to wait for another time.</p>
746
747 <p>While I was working on tracking down links, I came across an
748 inspiring TED talk by Dave Debronkart about
749 <a href="https://archive.org/details/DavedeBronkart_2010X">being a
750 e-patient</a>, and discovered the web site
751 <a href="https://participatorymedicine.org/epatients/">Participatory
752 Medicine</a>. If you too want to track your own health and fitness
753 without having information about your private life floating around on
754 computers owned by others, I recommend checking it out.</p>
755
756 <p>As usual, if you use Bitcoin and want to show your support of my
757 activities, please send Bitcoin donations to my address
758 <b><a href="bitcoin:15oWEoG9dUPovwmUL9KWAnYRtNJEkP1u1b">15oWEoG9dUPovwmUL9KWAnYRtNJEkP1u1b</a></b>.</p>
759 </div>
760 <div class="tags">
761
762
763 Tags: <a href="http://people.skolelinux.org/pere/blog/tags/english">english</a>.
764
765
766 </div>
767 </div>
768 <div class="padding"></div>
769
770 <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>
771 <div id="sidebar">
772
773
774
775 <h2>Archive</h2>
776 <ul>
777
778 <li>2018
779 <ul>
780
781 <li><a href="http://people.skolelinux.org/pere/blog/archive/2018/01/">January (1)</a></li>
782
783 <li><a href="http://people.skolelinux.org/pere/blog/archive/2018/02/">February (5)</a></li>
784
785 <li><a href="http://people.skolelinux.org/pere/blog/archive/2018/03/">March (5)</a></li>
786
787 <li><a href="http://people.skolelinux.org/pere/blog/archive/2018/04/">April (3)</a></li>
788
789 <li><a href="http://people.skolelinux.org/pere/blog/archive/2018/06/">June (2)</a></li>
790
791 <li><a href="http://people.skolelinux.org/pere/blog/archive/2018/07/">July (5)</a></li>
792
793 <li><a href="http://people.skolelinux.org/pere/blog/archive/2018/08/">August (3)</a></li>
794
795 <li><a href="http://people.skolelinux.org/pere/blog/archive/2018/09/">September (3)</a></li>
796
797 <li><a href="http://people.skolelinux.org/pere/blog/archive/2018/10/">October (5)</a></li>
798
799 </ul></li>
800
801 <li>2017
802 <ul>
803
804 <li><a href="http://people.skolelinux.org/pere/blog/archive/2017/01/">January (4)</a></li>
805
806 <li><a href="http://people.skolelinux.org/pere/blog/archive/2017/02/">February (3)</a></li>
807
808 <li><a href="http://people.skolelinux.org/pere/blog/archive/2017/03/">March (5)</a></li>
809
810 <li><a href="http://people.skolelinux.org/pere/blog/archive/2017/04/">April (2)</a></li>
811
812 <li><a href="http://people.skolelinux.org/pere/blog/archive/2017/06/">June (5)</a></li>
813
814 <li><a href="http://people.skolelinux.org/pere/blog/archive/2017/07/">July (1)</a></li>
815
816 <li><a href="http://people.skolelinux.org/pere/blog/archive/2017/08/">August (1)</a></li>
817
818 <li><a href="http://people.skolelinux.org/pere/blog/archive/2017/09/">September (3)</a></li>
819
820 <li><a href="http://people.skolelinux.org/pere/blog/archive/2017/10/">October (5)</a></li>
821
822 <li><a href="http://people.skolelinux.org/pere/blog/archive/2017/11/">November (3)</a></li>
823
824 <li><a href="http://people.skolelinux.org/pere/blog/archive/2017/12/">December (4)</a></li>
825
826 </ul></li>
827
828 <li>2016
829 <ul>
830
831 <li><a href="http://people.skolelinux.org/pere/blog/archive/2016/01/">January (3)</a></li>
832
833 <li><a href="http://people.skolelinux.org/pere/blog/archive/2016/02/">February (2)</a></li>
834
835 <li><a href="http://people.skolelinux.org/pere/blog/archive/2016/03/">March (3)</a></li>
836
837 <li><a href="http://people.skolelinux.org/pere/blog/archive/2016/04/">April (8)</a></li>
838
839 <li><a href="http://people.skolelinux.org/pere/blog/archive/2016/05/">May (8)</a></li>
840
841 <li><a href="http://people.skolelinux.org/pere/blog/archive/2016/06/">June (2)</a></li>
842
843 <li><a href="http://people.skolelinux.org/pere/blog/archive/2016/07/">July (2)</a></li>
844
845 <li><a href="http://people.skolelinux.org/pere/blog/archive/2016/08/">August (5)</a></li>
846
847 <li><a href="http://people.skolelinux.org/pere/blog/archive/2016/09/">September (2)</a></li>
848
849 <li><a href="http://people.skolelinux.org/pere/blog/archive/2016/10/">October (3)</a></li>
850
851 <li><a href="http://people.skolelinux.org/pere/blog/archive/2016/11/">November (8)</a></li>
852
853 <li><a href="http://people.skolelinux.org/pere/blog/archive/2016/12/">December (5)</a></li>
854
855 </ul></li>
856
857 <li>2015
858 <ul>
859
860 <li><a href="http://people.skolelinux.org/pere/blog/archive/2015/01/">January (7)</a></li>
861
862 <li><a href="http://people.skolelinux.org/pere/blog/archive/2015/02/">February (6)</a></li>
863
864 <li><a href="http://people.skolelinux.org/pere/blog/archive/2015/03/">March (1)</a></li>
865
866 <li><a href="http://people.skolelinux.org/pere/blog/archive/2015/04/">April (4)</a></li>
867
868 <li><a href="http://people.skolelinux.org/pere/blog/archive/2015/05/">May (3)</a></li>
869
870 <li><a href="http://people.skolelinux.org/pere/blog/archive/2015/06/">June (4)</a></li>
871
872 <li><a href="http://people.skolelinux.org/pere/blog/archive/2015/07/">July (6)</a></li>
873
874 <li><a href="http://people.skolelinux.org/pere/blog/archive/2015/08/">August (2)</a></li>
875
876 <li><a href="http://people.skolelinux.org/pere/blog/archive/2015/09/">September (2)</a></li>
877
878 <li><a href="http://people.skolelinux.org/pere/blog/archive/2015/10/">October (9)</a></li>
879
880 <li><a href="http://people.skolelinux.org/pere/blog/archive/2015/11/">November (6)</a></li>
881
882 <li><a href="http://people.skolelinux.org/pere/blog/archive/2015/12/">December (3)</a></li>
883
884 </ul></li>
885
886 <li>2014
887 <ul>
888
889 <li><a href="http://people.skolelinux.org/pere/blog/archive/2014/01/">January (2)</a></li>
890
891 <li><a href="http://people.skolelinux.org/pere/blog/archive/2014/02/">February (3)</a></li>
892
893 <li><a href="http://people.skolelinux.org/pere/blog/archive/2014/03/">March (8)</a></li>
894
895 <li><a href="http://people.skolelinux.org/pere/blog/archive/2014/04/">April (7)</a></li>
896
897 <li><a href="http://people.skolelinux.org/pere/blog/archive/2014/05/">May (1)</a></li>
898
899 <li><a href="http://people.skolelinux.org/pere/blog/archive/2014/06/">June (2)</a></li>
900
901 <li><a href="http://people.skolelinux.org/pere/blog/archive/2014/07/">July (2)</a></li>
902
903 <li><a href="http://people.skolelinux.org/pere/blog/archive/2014/08/">August (2)</a></li>
904
905 <li><a href="http://people.skolelinux.org/pere/blog/archive/2014/09/">September (5)</a></li>
906
907 <li><a href="http://people.skolelinux.org/pere/blog/archive/2014/10/">October (6)</a></li>
908
909 <li><a href="http://people.skolelinux.org/pere/blog/archive/2014/11/">November (3)</a></li>
910
911 <li><a href="http://people.skolelinux.org/pere/blog/archive/2014/12/">December (5)</a></li>
912
913 </ul></li>
914
915 <li>2013
916 <ul>
917
918 <li><a href="http://people.skolelinux.org/pere/blog/archive/2013/01/">January (11)</a></li>
919
920 <li><a href="http://people.skolelinux.org/pere/blog/archive/2013/02/">February (9)</a></li>
921
922 <li><a href="http://people.skolelinux.org/pere/blog/archive/2013/03/">March (9)</a></li>
923
924 <li><a href="http://people.skolelinux.org/pere/blog/archive/2013/04/">April (6)</a></li>
925
926 <li><a href="http://people.skolelinux.org/pere/blog/archive/2013/05/">May (9)</a></li>
927
928 <li><a href="http://people.skolelinux.org/pere/blog/archive/2013/06/">June (10)</a></li>
929
930 <li><a href="http://people.skolelinux.org/pere/blog/archive/2013/07/">July (7)</a></li>
931
932 <li><a href="http://people.skolelinux.org/pere/blog/archive/2013/08/">August (3)</a></li>
933
934 <li><a href="http://people.skolelinux.org/pere/blog/archive/2013/09/">September (5)</a></li>
935
936 <li><a href="http://people.skolelinux.org/pere/blog/archive/2013/10/">October (7)</a></li>
937
938 <li><a href="http://people.skolelinux.org/pere/blog/archive/2013/11/">November (9)</a></li>
939
940 <li><a href="http://people.skolelinux.org/pere/blog/archive/2013/12/">December (3)</a></li>
941
942 </ul></li>
943
944 <li>2012
945 <ul>
946
947 <li><a href="http://people.skolelinux.org/pere/blog/archive/2012/01/">January (7)</a></li>
948
949 <li><a href="http://people.skolelinux.org/pere/blog/archive/2012/02/">February (10)</a></li>
950
951 <li><a href="http://people.skolelinux.org/pere/blog/archive/2012/03/">March (17)</a></li>
952
953 <li><a href="http://people.skolelinux.org/pere/blog/archive/2012/04/">April (12)</a></li>
954
955 <li><a href="http://people.skolelinux.org/pere/blog/archive/2012/05/">May (12)</a></li>
956
957 <li><a href="http://people.skolelinux.org/pere/blog/archive/2012/06/">June (20)</a></li>
958
959 <li><a href="http://people.skolelinux.org/pere/blog/archive/2012/07/">July (17)</a></li>
960
961 <li><a href="http://people.skolelinux.org/pere/blog/archive/2012/08/">August (6)</a></li>
962
963 <li><a href="http://people.skolelinux.org/pere/blog/archive/2012/09/">September (9)</a></li>
964
965 <li><a href="http://people.skolelinux.org/pere/blog/archive/2012/10/">October (17)</a></li>
966
967 <li><a href="http://people.skolelinux.org/pere/blog/archive/2012/11/">November (10)</a></li>
968
969 <li><a href="http://people.skolelinux.org/pere/blog/archive/2012/12/">December (7)</a></li>
970
971 </ul></li>
972
973 <li>2011
974 <ul>
975
976 <li><a href="http://people.skolelinux.org/pere/blog/archive/2011/01/">January (16)</a></li>
977
978 <li><a href="http://people.skolelinux.org/pere/blog/archive/2011/02/">February (6)</a></li>
979
980 <li><a href="http://people.skolelinux.org/pere/blog/archive/2011/03/">March (6)</a></li>
981
982 <li><a href="http://people.skolelinux.org/pere/blog/archive/2011/04/">April (7)</a></li>
983
984 <li><a href="http://people.skolelinux.org/pere/blog/archive/2011/05/">May (3)</a></li>
985
986 <li><a href="http://people.skolelinux.org/pere/blog/archive/2011/06/">June (2)</a></li>
987
988 <li><a href="http://people.skolelinux.org/pere/blog/archive/2011/07/">July (7)</a></li>
989
990 <li><a href="http://people.skolelinux.org/pere/blog/archive/2011/08/">August (6)</a></li>
991
992 <li><a href="http://people.skolelinux.org/pere/blog/archive/2011/09/">September (4)</a></li>
993
994 <li><a href="http://people.skolelinux.org/pere/blog/archive/2011/10/">October (2)</a></li>
995
996 <li><a href="http://people.skolelinux.org/pere/blog/archive/2011/11/">November (3)</a></li>
997
998 <li><a href="http://people.skolelinux.org/pere/blog/archive/2011/12/">December (1)</a></li>
999
1000 </ul></li>
1001
1002 <li>2010
1003 <ul>
1004
1005 <li><a href="http://people.skolelinux.org/pere/blog/archive/2010/01/">January (2)</a></li>
1006
1007 <li><a href="http://people.skolelinux.org/pere/blog/archive/2010/02/">February (1)</a></li>
1008
1009 <li><a href="http://people.skolelinux.org/pere/blog/archive/2010/03/">March (3)</a></li>
1010
1011 <li><a href="http://people.skolelinux.org/pere/blog/archive/2010/04/">April (3)</a></li>
1012
1013 <li><a href="http://people.skolelinux.org/pere/blog/archive/2010/05/">May (9)</a></li>
1014
1015 <li><a href="http://people.skolelinux.org/pere/blog/archive/2010/06/">June (14)</a></li>
1016
1017 <li><a href="http://people.skolelinux.org/pere/blog/archive/2010/07/">July (12)</a></li>
1018
1019 <li><a href="http://people.skolelinux.org/pere/blog/archive/2010/08/">August (13)</a></li>
1020
1021 <li><a href="http://people.skolelinux.org/pere/blog/archive/2010/09/">September (7)</a></li>
1022
1023 <li><a href="http://people.skolelinux.org/pere/blog/archive/2010/10/">October (9)</a></li>
1024
1025 <li><a href="http://people.skolelinux.org/pere/blog/archive/2010/11/">November (13)</a></li>
1026
1027 <li><a href="http://people.skolelinux.org/pere/blog/archive/2010/12/">December (12)</a></li>
1028
1029 </ul></li>
1030
1031 <li>2009
1032 <ul>
1033
1034 <li><a href="http://people.skolelinux.org/pere/blog/archive/2009/01/">January (8)</a></li>
1035
1036 <li><a href="http://people.skolelinux.org/pere/blog/archive/2009/02/">February (8)</a></li>
1037
1038 <li><a href="http://people.skolelinux.org/pere/blog/archive/2009/03/">March (12)</a></li>
1039
1040 <li><a href="http://people.skolelinux.org/pere/blog/archive/2009/04/">April (10)</a></li>
1041
1042 <li><a href="http://people.skolelinux.org/pere/blog/archive/2009/05/">May (9)</a></li>
1043
1044 <li><a href="http://people.skolelinux.org/pere/blog/archive/2009/06/">June (3)</a></li>
1045
1046 <li><a href="http://people.skolelinux.org/pere/blog/archive/2009/07/">July (4)</a></li>
1047
1048 <li><a href="http://people.skolelinux.org/pere/blog/archive/2009/08/">August (3)</a></li>
1049
1050 <li><a href="http://people.skolelinux.org/pere/blog/archive/2009/09/">September (1)</a></li>
1051
1052 <li><a href="http://people.skolelinux.org/pere/blog/archive/2009/10/">October (2)</a></li>
1053
1054 <li><a href="http://people.skolelinux.org/pere/blog/archive/2009/11/">November (3)</a></li>
1055
1056 <li><a href="http://people.skolelinux.org/pere/blog/archive/2009/12/">December (3)</a></li>
1057
1058 </ul></li>
1059
1060 <li>2008
1061 <ul>
1062
1063 <li><a href="http://people.skolelinux.org/pere/blog/archive/2008/11/">November (5)</a></li>
1064
1065 <li><a href="http://people.skolelinux.org/pere/blog/archive/2008/12/">December (7)</a></li>
1066
1067 </ul></li>
1068
1069 </ul>
1070
1071
1072
1073 <h2>Tags</h2>
1074 <ul>
1075
1076 <li><a href="http://people.skolelinux.org/pere/blog/tags/3d-printer">3d-printer (16)</a></li>
1077
1078 <li><a href="http://people.skolelinux.org/pere/blog/tags/amiga">amiga (1)</a></li>
1079
1080 <li><a href="http://people.skolelinux.org/pere/blog/tags/aros">aros (1)</a></li>
1081
1082 <li><a href="http://people.skolelinux.org/pere/blog/tags/bankid">bankid (4)</a></li>
1083
1084 <li><a href="http://people.skolelinux.org/pere/blog/tags/bitcoin">bitcoin (10)</a></li>
1085
1086 <li><a href="http://people.skolelinux.org/pere/blog/tags/bootsystem">bootsystem (17)</a></li>
1087
1088 <li><a href="http://people.skolelinux.org/pere/blog/tags/bsa">bsa (2)</a></li>
1089
1090 <li><a href="http://people.skolelinux.org/pere/blog/tags/chrpath">chrpath (2)</a></li>
1091
1092 <li><a href="http://people.skolelinux.org/pere/blog/tags/debian">debian (163)</a></li>
1093
1094 <li><a href="http://people.skolelinux.org/pere/blog/tags/debian edu">debian edu (158)</a></li>
1095
1096 <li><a href="http://people.skolelinux.org/pere/blog/tags/debian-handbook">debian-handbook (4)</a></li>
1097
1098 <li><a href="http://people.skolelinux.org/pere/blog/tags/digistan">digistan (10)</a></li>
1099
1100 <li><a href="http://people.skolelinux.org/pere/blog/tags/dld">dld (17)</a></li>
1101
1102 <li><a href="http://people.skolelinux.org/pere/blog/tags/docbook">docbook (25)</a></li>
1103
1104 <li><a href="http://people.skolelinux.org/pere/blog/tags/drivstoffpriser">drivstoffpriser (4)</a></li>
1105
1106 <li><a href="http://people.skolelinux.org/pere/blog/tags/english">english (390)</a></li>
1107
1108 <li><a href="http://people.skolelinux.org/pere/blog/tags/fiksgatami">fiksgatami (23)</a></li>
1109
1110 <li><a href="http://people.skolelinux.org/pere/blog/tags/fildeling">fildeling (13)</a></li>
1111
1112 <li><a href="http://people.skolelinux.org/pere/blog/tags/freeculture">freeculture (32)</a></li>
1113
1114 <li><a href="http://people.skolelinux.org/pere/blog/tags/freedombox">freedombox (9)</a></li>
1115
1116 <li><a href="http://people.skolelinux.org/pere/blog/tags/frikanalen">frikanalen (18)</a></li>
1117
1118 <li><a href="http://people.skolelinux.org/pere/blog/tags/h264">h264 (20)</a></li>
1119
1120 <li><a href="http://people.skolelinux.org/pere/blog/tags/intervju">intervju (42)</a></li>
1121
1122 <li><a href="http://people.skolelinux.org/pere/blog/tags/isenkram">isenkram (16)</a></li>
1123
1124 <li><a href="http://people.skolelinux.org/pere/blog/tags/kart">kart (20)</a></li>
1125
1126 <li><a href="http://people.skolelinux.org/pere/blog/tags/kodi">kodi (3)</a></li>
1127
1128 <li><a href="http://people.skolelinux.org/pere/blog/tags/ldap">ldap (9)</a></li>
1129
1130 <li><a href="http://people.skolelinux.org/pere/blog/tags/lego">lego (4)</a></li>
1131
1132 <li><a href="http://people.skolelinux.org/pere/blog/tags/lenker">lenker (8)</a></li>
1133
1134 <li><a href="http://people.skolelinux.org/pere/blog/tags/lsdvd">lsdvd (2)</a></li>
1135
1136 <li><a href="http://people.skolelinux.org/pere/blog/tags/ltsp">ltsp (1)</a></li>
1137
1138 <li><a href="http://people.skolelinux.org/pere/blog/tags/mesh network">mesh network (8)</a></li>
1139
1140 <li><a href="http://people.skolelinux.org/pere/blog/tags/multimedia">multimedia (41)</a></li>
1141
1142 <li><a href="http://people.skolelinux.org/pere/blog/tags/nice free software">nice free software (11)</a></li>
1143
1144 <li><a href="http://people.skolelinux.org/pere/blog/tags/norsk">norsk (299)</a></li>
1145
1146 <li><a href="http://people.skolelinux.org/pere/blog/tags/nuug">nuug (191)</a></li>
1147
1148 <li><a href="http://people.skolelinux.org/pere/blog/tags/offentlig innsyn">offentlig innsyn (34)</a></li>
1149
1150 <li><a href="http://people.skolelinux.org/pere/blog/tags/open311">open311 (2)</a></li>
1151
1152 <li><a href="http://people.skolelinux.org/pere/blog/tags/opphavsrett">opphavsrett (72)</a></li>
1153
1154 <li><a href="http://people.skolelinux.org/pere/blog/tags/personvern">personvern (107)</a></li>
1155
1156 <li><a href="http://people.skolelinux.org/pere/blog/tags/raid">raid (2)</a></li>
1157
1158 <li><a href="http://people.skolelinux.org/pere/blog/tags/reactos">reactos (1)</a></li>
1159
1160 <li><a href="http://people.skolelinux.org/pere/blog/tags/reprap">reprap (11)</a></li>
1161
1162 <li><a href="http://people.skolelinux.org/pere/blog/tags/rfid">rfid (3)</a></li>
1163
1164 <li><a href="http://people.skolelinux.org/pere/blog/tags/robot">robot (10)</a></li>
1165
1166 <li><a href="http://people.skolelinux.org/pere/blog/tags/rss">rss (1)</a></li>
1167
1168 <li><a href="http://people.skolelinux.org/pere/blog/tags/ruter">ruter (6)</a></li>
1169
1170 <li><a href="http://people.skolelinux.org/pere/blog/tags/scraperwiki">scraperwiki (2)</a></li>
1171
1172 <li><a href="http://people.skolelinux.org/pere/blog/tags/sikkerhet">sikkerhet (55)</a></li>
1173
1174 <li><a href="http://people.skolelinux.org/pere/blog/tags/sitesummary">sitesummary (4)</a></li>
1175
1176 <li><a href="http://people.skolelinux.org/pere/blog/tags/skepsis">skepsis (5)</a></li>
1177
1178 <li><a href="http://people.skolelinux.org/pere/blog/tags/standard">standard (56)</a></li>
1179
1180 <li><a href="http://people.skolelinux.org/pere/blog/tags/stavekontroll">stavekontroll (6)</a></li>
1181
1182 <li><a href="http://people.skolelinux.org/pere/blog/tags/stortinget">stortinget (12)</a></li>
1183
1184 <li><a href="http://people.skolelinux.org/pere/blog/tags/surveillance">surveillance (55)</a></li>
1185
1186 <li><a href="http://people.skolelinux.org/pere/blog/tags/sysadmin">sysadmin (4)</a></li>
1187
1188 <li><a href="http://people.skolelinux.org/pere/blog/tags/usenix">usenix (2)</a></li>
1189
1190 <li><a href="http://people.skolelinux.org/pere/blog/tags/valg">valg (9)</a></li>
1191
1192 <li><a href="http://people.skolelinux.org/pere/blog/tags/verkidetfri">verkidetfri (13)</a></li>
1193
1194 <li><a href="http://people.skolelinux.org/pere/blog/tags/video">video (69)</a></li>
1195
1196 <li><a href="http://people.skolelinux.org/pere/blog/tags/vitenskap">vitenskap (4)</a></li>
1197
1198 <li><a href="http://people.skolelinux.org/pere/blog/tags/web">web (41)</a></li>
1199
1200 </ul>
1201
1202
1203 </div>
1204 <p style="text-align: right">
1205 Created by <a href="http://steve.org.uk/Software/chronicle">Chronicle v4.6</a>
1206 </p>
1207
1208 </body>
1209 </html>