]> 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/syslog_trusted_timestamp___chain_of_trusted_timestamps_for_your_syslog.html">syslog-trusted-timestamp - chain of trusted timestamps for your syslog</a></div>
24 <div class="date"> 1st April 2016</div>
25 <div class="body"><p>Two years ago, I had
26 <a href="http://people.skolelinux.org/pere/blog/Public_Trusted_Timestamping_services_for_everyone.html">a
27 look at trusted timestamping options available</a>, and among
28 other things noted a still open
29 <a href="https://bugs.debian.org/742553">bug in the tsget script</a>
30 included in openssl that made it harder than necessary to use openssl
31 as a trusted timestamping client. A few days ago I was told
32 <a href="https::/www.difi.no/">the Norwegian government office DIFI</a> is
33 close to releasing their own trusted timestamp service, and in the
34 process I was happy to learn about a replacement for the tsget script
35 using only curl:</p>
36
37 <p><pre>
38 openssl ts -query -data "/etc/shells" -cert -sha256 -no_nonce \
39 | curl -s -H "Content-Type: application/timestamp-query" \
40 --data-binary "@-" http://zeitstempel.dfn.de > etc-shells.tsr
41 openssl ts -reply -text -in etc-shells.tsr
42 </pre></p>
43
44 <p>This produces a binary timestamp file (etc-shells.tsr) which can be
45 used to verify that the content of the file /etc/shell with the
46 calculated sha256 hash existed at the point in time when the request
47 was made. The last command extract the content of the etc-shells.tsr
48 in human readable form. The idea behind such timestamp is to be able
49 to prove using cryptography that the content of a file have not
50 changed since the file was stamped.</p>
51
52 <p>To verify that the file on disk match the public key signature in
53 the timestamp file, run the following commands. It make sure you have
54 the required certificate for the trusted timestamp service available
55 and use it to compare the file content with the timestamp. In
56 production, one should of course use a better method to verify the
57 service certificate.</p>
58
59 <p><pre>
60 wget -O ca-cert.txt https://pki.pca.dfn.de/global-services-ca/pub/cacert/chain.txt
61 openssl ts -verify -data /etc/shells -in etc-shells.tsr -CAfile ca-cert.txt -text
62 </pre></p>
63
64 <p>Wikipedia have a lot more information about
65 <a href="https://en.wikipedia.org/wiki/Trusted_timestamping">trusted
66 Timestamping</a> and
67 <a href="https://en.wikipedia.org/wiki/Linked_timestamping">linked
68 timestamping</a>, and there are several trusted timestamping services
69 around, both as commercial services and as free and public services.
70 Among the latter is
71 <a href="https://www.pki.dfn.de/zeitstempeldienst/">the
72 zeitstempel.dfn.de service</a> mentioned above and
73 <a href="https://freetsa.org/">freetsa.org service</a> linked to from the
74 wikipedia web site. I believe the DIFI service should show up on
75 https://tsa.difi.no, but it is not available to the public at the
76 moment. I hope this will change when it is into production. The
77 <a href="https://tools.ietf.org/html/rfc3161">RFC 3161</a> trusted
78 timestamping protocol standard is even implemented in LibreOffice,
79 Microsoft Office and Adobe Acrobat, making it possible to verify when
80 a document was created.</p>
81
82 <p>I would find it useful to be able to use such trusted timestamp
83 service to make it possible to verify that my stored syslog files have
84 not been tampered with. This is not a new idea. I found one example
85 implemented on the Endian network appliances where
86 <a href="http://help.endian.com/entries/21518508-Enabling-Timestamping-on-log-files-">the
87 configuration of such feature was described in 2012</a>.</p>
88
89 <p>But I could not find any free implementation of such feature when I
90 searched, so I decided to try to
91 <a href="https://github.com/petterreinholdtsen/syslog-trusted-timestamp">build
92 a prototype named syslog-trusted-timestamp</a>. My idea is to
93 generate a timestamp of the old log files after they are rotated, and
94 store the timestamp in the new log file just after rotation. This
95 will form a chain that would make it possible to see if any old log
96 files are tampered with. But syslog is bad at handling kilobytes of
97 binary data, so I decided to base64 encode the timestamp and add an ID
98 and line sequence numbers to the base64 data to make it possible to
99 reassemble the timestamp file again. To use it, simply run it like
100 this:
101
102 <p><pre>
103 syslog-trusted-timestamp /path/to/list-of-log-files
104 </pre></p>
105
106 <p>This will send a timestamp from one or more timestamp services (not
107 yet decided nor implemented) for each listed file to the syslog using
108 logger(1). To verify the timestamp, the same program is used with the
109 --verify option:</p>
110
111 <p><pre>
112 syslog-trusted-timestamp --verify /path/to/log-file /path/to/log-with-timestamp
113 </pre></p>
114
115 <p>The verification step is not yet well designed. The current
116 implementation depend on the file path being unique and unchanging,
117 and this is not a solid assumption. It also uses process number as
118 timestamp ID, and this is bound to create ID collisions. I hope to
119 have time to come up with a better way to handle timestamp IDs and
120 verification later.</p>
121
122 <p>Please check out
123 <a href="https://github.com/petterreinholdtsen/syslog-trusted-timestamp">the
124 prototype for syslog-trusted-timestamp on github</a> and send
125 suggestions and improvement, or let me know if there already exist a
126 similar system for timestamping logs already to allow me to join
127 forces with others with the same interest.</p>
128
129 <p>As usual, if you use Bitcoin and want to show your support of my
130 activities, please send Bitcoin donations to my address
131 <b><a href="bitcoin:15oWEoG9dUPovwmUL9KWAnYRtNJEkP1u1b">15oWEoG9dUPovwmUL9KWAnYRtNJEkP1u1b</a></b>.</p>
132 </div>
133 <div class="tags">
134
135
136 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>.
137
138
139 </div>
140 </div>
141 <div class="padding"></div>
142
143 <div class="entry">
144 <div class="title"><a href="http://people.skolelinux.org/pere/blog/Full_battery_stats_collector_is_now_available_in_Debian.html">Full battery stats collector is now available in Debian</a></div>
145 <div class="date">23rd March 2016</div>
146 <div class="body"><p>Since this morning, the battery-stats package in Debian include an
147 extended collector that will collect the complete battery history for
148 later processing and graphing. The original collector store the
149 battery level as percentage of last full level, while the new
150 collector also record battery vendor, model, serial number, design
151 full level, last full level and current battery level. This make it
152 possible to predict the lifetime of the battery as well as visualise
153 the energy flow when the battery is charging or discharging.</p>
154
155 <p>The new tools are available in <tt>/usr/share/battery-stats/</tt>
156 in the version 0.5.1 package in unstable. Get the new battery level graph
157 and lifetime prediction by running:
158
159 <p><pre>
160 /usr/share/battery-stats/battery-stats-graph /var/log/battery-stats.csv
161 </pre></p>
162
163 <p>Or select the 'Battery Level Graph' from your application menu.</p>
164
165 <p>The flow in/out of the battery can be seen by running (no menu
166 entry yet):</p>
167
168 <p><pre>
169 /usr/share/battery-stats/battery-stats-graph-flow
170 </pre></p>
171
172 <p>I'm not quite happy with the way the data is visualised, at least
173 when there are few data points. The graphs look a bit better with a
174 few years of data.</p>
175
176 <p>A while back one important feature I use in the battery stats
177 collector broke in Debian. The scripts in
178 <tt>/usr/lib/pm-utils/power.d/</tt> were no longer executed. I
179 suspect it happened when Jessie started using systemd, but I do not
180 know. The issue is reported as
181 <a href="https://bugs.debian.org/818649">bug #818649</a> against
182 pm-utils. I managed to work around it by adding an udev rule to call
183 the collector script every time the power connector is connected and
184 disconnected. With this fix in place it was finally time to make a
185 new release of the package, and get it into Debian.</p>
186
187 <p>If you are interested in how your laptop battery is doing, please
188 check out the
189 <a href="https://tracker.debian.org/pkg/battery-stats">battery-stats</a>
190 in Debian unstable, or rebuild it on Jessie to get it working on
191 Debian stable. :) The upstream source is available from
192 <a href="https://github.com/petterreinholdtsen/battery-stats">github</a>.
193 As always, patches are very welcome.</p>
194 </div>
195 <div class="tags">
196
197
198 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>.
199
200
201 </div>
202 </div>
203 <div class="padding"></div>
204
205 <div class="entry">
206 <div class="title"><a href="http://people.skolelinux.org/pere/blog/UsingQR____Electronic__paper_invoices_using_JSON_and_QR_codes.html">UsingQR - "Electronic" paper invoices using JSON and QR codes</a></div>
207 <div class="date">19th March 2016</div>
208 <div class="body"><p>Back in 2013 I proposed
209 <a href="http://people.skolelinux.org/pere/blog/_Electronic__paper_invoices___using_vCard_in_a_QR_code.html">a
210 way to make paper and PDF invoices easier to process electronically by
211 adding a QR code with the key information about the invoice</a>. I
212 suggested using vCard field definition, to get some standard format
213 for name and address, but any format would work. I did not do
214 anything about the proposal, but hoped someone one day would make
215 something like it. It would make it possible to efficiently send
216 machine readable invoices directly between seller and buyer.</p>
217
218 <p>This was the background when I came across a proposal and
219 specification from the web based accounting and invoicing supplier
220 <a href="http://www.visma.com/">Visma</a> in Sweden called
221 <a href="http://usingqr.com/">UsingQR</a>. Their PDF invoices contain
222 a QR code with the key information of the invoice in JSON format.
223 This is the typical content of a QR code following the UsingQR
224 specification (based on a real world example, some numbers replaced to
225 get a more bogus entry). I've reformatted the JSON to make it easier
226 to read. Normally this is all on one long line:</p>
227
228 <p><img src="http://people.skolelinux.org/pere/blog/images/2016-03-19-qr-invoice.png" align="right"><pre>
229 {
230 "vh":500.00,
231 "vm":0,
232 "vl":0,
233 "uqr":1,
234 "tp":1,
235 "nme":"Din Leverandør",
236 "cc":"NO",
237 "cid":"997912345 MVA",
238 "iref":"12300001",
239 "idt":"20151022",
240 "ddt":"20151105",
241 "due":2500.0000,
242 "cur":"NOK",
243 "pt":"BBAN",
244 "acc":"17202612345",
245 "bc":"BIENNOK1",
246 "adr":"0313 OSLO"
247 }
248 </pre></p>
249
250 </p>The interpretation of the fields can be found in the
251 <a href="http://usingqr.com/wp-content/uploads/2014/06/UsingQR_specification1.pdf">format
252 specification</a> (revision 2 from june 2014). The format seem to
253 have most of the information needed to handle accounting and payment
254 of invoices, at least the fields I have needed so far here in
255 Norway.</p>
256
257 <p>Unfortunately, the site and document do not mention anything about
258 the patent, trademark and copyright status of the format and the
259 specification. Because of this, I asked the people behind it back in
260 November to clarify. Ann-Christine Savlid (ann-christine.savlid (at)
261 visma.com) replied that Visma had not applied for patent or trademark
262 protection for this format, and that there were no copyright based
263 usage limitations for the format. I urged her to make sure this was
264 explicitly written on the web pages and in the specification, but
265 unfortunately this has not happened yet. So I guess if there is
266 submarine patents, hidden trademarks or a will to sue for copyright
267 infringements, those starting to use the UsingQR format might be at
268 risk, but if this happen there is some legal defense in the fact that
269 the people behind the format claimed it was safe to do so. At least
270 with patents, there is always
271 <a href="http://www.paperspecs.com/paper-news/beware-the-qr-code-patent-trap/">a
272 chance of getting sued...</a></p>
273
274 <p>I also asked if they planned to maintain the format in an
275 independent standard organization to give others more confidence that
276 they would participate in the standardization process on equal terms
277 with Visma, but they had no immediate plans for this. Their plan was
278 to work with banks to try to get more users of the format, and
279 evaluate the way forward if the format proved to be popular. I hope
280 they conclude that using an open standard organisation like
281 <a href="http://www.ietf.org/">IETF</a> is the correct place to
282 maintain such specification.</p>
283
284 <p><strong>Update 2016-03-20</strong>: Via Twitter I became aware of
285 <a href="https://news.ycombinator.com/item?id=11319492">some comments
286 about this blog post</a> that had several useful links and references to
287 similar systems. In the Czech republic, the Czech Banking Association
288 standard #26, with short name SPAYD, uses QR codes with payment
289 information. More information is available from the Wikipedia page on
290 <a href="https://en.wikipedia.org/wiki/Short_Payment_Descriptor">Short
291 Payment Descriptor</a>. And in Germany, there is a system named
292 <a href="http://www.bezahlcode.de/">BezahlCode</a>,
293 (<a href="http://www.bezahlcode.de/wp-content/uploads/BezahlCode_TechDok.pdf">specification
294 v1.8 2013-12-05 available as PDF</a>), which uses QR codes with
295 URL-like formatting using "bank:" as the URI schema/protocol to
296 provide the payment information. There is also the
297 <a href="http://www.ferd-net.de/front_content.php?idcat=231">ZUGFeRD</a>
298 file format that perhaps could be transfered using QR codes, but I am
299 not sure if it is done already. Last, in Bolivia there are reports
300 that tax information since november 2014 need to be printed in QR
301 format on invoices. I have not been able to track down a
302 specification for this format, because of my limited language skill
303 sets.</p>
304 </div>
305 <div class="tags">
306
307
308 Tags: <a href="http://people.skolelinux.org/pere/blog/tags/english">english</a>, <a href="http://people.skolelinux.org/pere/blog/tags/standard">standard</a>.
309
310
311 </div>
312 </div>
313 <div class="padding"></div>
314
315 <div class="entry">
316 <div class="title"><a href="http://people.skolelinux.org/pere/blog/Making_battery_measurements_a_little_easier_in_Debian.html">Making battery measurements a little easier in Debian</a></div>
317 <div class="date">15th March 2016</div>
318 <div class="body"><p>Back in September, I blogged about
319 <a href="http://people.skolelinux.org/pere/blog/The_life_and_death_of_a_laptop_battery.html">the
320 system I wrote to collect statistics about my laptop battery</a>, and
321 how it showed the decay and death of this battery (now replaced). I
322 created a simple deb package to handle the collection and graphing,
323 but did not want to upload it to Debian as there were already
324 <a href="https://tracker.debian.org/pkg/battery-stats">a battery-stats
325 package in Debian</a> that should do the same thing, and I did not see
326 a point of uploading a competing package when battery-stats could be
327 fixed instead. I reported a few bugs about its non-function, and
328 hoped someone would step in and fix it. But no-one did.</p>
329
330 <p>I got tired of waiting a few days ago, and took matters in my own
331 hands. The end result is that I am now the new upstream developer of
332 battery stats (<a href="https://github.com/petterreinholdtsen/battery-stats">available from github</a>) and part of the team maintaining
333 battery-stats in Debian, and the package in Debian unstable is finally
334 able to collect battery status using the <tt>/sys/class/power_supply/</tt>
335 information provided by the Linux kernel. If you install the
336 battery-stats package from unstable now, you will be able to get a
337 graph of the current battery fill level, to get some idea about the
338 status of the battery. The source package build and work just fine in
339 Debian testing and stable (and probably oldstable too, but I have not
340 tested). The default graph you get for that system look like this:</p>
341
342 <p align="center"><img src="http://people.skolelinux.org/pere/blog/images/2016-03-15-battery-stats-graph-example.png" width="70%" align="center"></p>
343
344 <p>My plans for the future is to merge my old scripts into the
345 battery-stats package, as my old scripts collected a lot more details
346 about the battery. The scripts are merged into the upstream
347 battery-stats git repository already, but I am not convinced they work
348 yet, as I changed a lot of paths along the way. Will have to test a
349 bit more before I make a new release.</p>
350
351 <p>I will also consider changing the file format slightly, as I
352 suspect the way I combine several values into one field might make it
353 impossible to know the type of the value when using it for processing
354 and graphing.</p>
355
356 <p>If you would like I would like to keep an close eye on your laptop
357 battery, check out the battery-stats package in
358 <a href="https://tracker.debian.org/pkg/battery-stats">Debian</a> and
359 on
360 <a href="https://github.com/petterreinholdtsen/battery-stats">github</a>.
361 I would love some help to improve the system further.</p>
362 </div>
363 <div class="tags">
364
365
366 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>.
367
368
369 </div>
370 </div>
371 <div class="padding"></div>
372
373 <div class="entry">
374 <div class="title"><a href="http://people.skolelinux.org/pere/blog/Creating__updating_and_checking_debian_copyright_semi_automatically.html">Creating, updating and checking debian/copyright semi-automatically</a></div>
375 <div class="date">19th February 2016</div>
376 <div class="body"><p>Making packages for Debian requires quite a lot of attention to
377 details. And one of the details is the content of the
378 debian/copyright file, which should list all relevant licenses used by
379 the code in the package in question, preferably in
380 <a href="https://www.debian.org/doc/packaging-manuals/copyright-format/1.0/">machine
381 readable DEP5 format</a>.</p>
382
383 <p>For large packages with lots of contributors it is hard to write
384 and update this file manually, and if you get some detail wrong, the
385 package is normally rejected by the ftpmasters. So getting it right
386 the first time around get the package into Debian faster, and save
387 both you and the ftpmasters some work.. Today, while trying to figure
388 out what was wrong with
389 <a href="https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=686447">the
390 zfsonlinux copyright file</a>, I decided to spend some time on
391 figuring out the options for doing this job automatically, or at least
392 semi-automatically.</p>
393
394 <p>Lucikly, there are at least two tools available for generating the
395 file based on the code in the source package,
396 <tt><a href="https://tracker.debian.org/pkg/debmake">debmake</a></tt>
397 and <tt><a href="https://tracker.debian.org/pkg/cme">cme</a></tt>. I'm
398 not sure which one of them came first, but both seem to be able to
399 create a sensible draft file. As far as I can tell, none of them can
400 be trusted to get the result just right, so the content need to be
401 polished a bit before the file is OK to upload. I found the debmake
402 option in
403 <a href="http://goofying-with-debian.blogspot.com/2014/07/debmake-checking-source-against-dep-5.html">a
404 blog posts from 2014</a>.
405
406 <p>To generate using debmake, use the -cc option:
407
408 <p><pre>
409 debmake -cc > debian/copyright
410 </pre></p>
411
412 <p>Note there are some problems with python and non-ASCII names, so
413 this might not be the best option.</p>
414
415 <p>The cme option is based on a config parsing library, and I found
416 this approach in
417 <a href="https://ddumont.wordpress.com/2015/04/05/improving-creation-of-debian-copyright-file/">a
418 blog post from 2015</a>. To generate using cme, use the 'update
419 dpkg-copyright' option:
420
421 <p><pre>
422 cme update dpkg-copyright
423 </pre></p>
424
425 <p>This will create or update debian/copyright. The cme tool seem to
426 handle UTF-8 names better than debmake.</p>
427
428 <p>When the copyright file is created, I would also like some help to
429 check if the file is correct. For this I found two good options,
430 <tt>debmake -k</tt> and <tt>license-reconcile</tt>. The former seem
431 to focus on license types and file matching, and is able to detect
432 ineffective blocks in the copyright file. The latter reports missing
433 copyright holders and years, but was confused by inconsistent license
434 names (like CDDL vs. CDDL-1.0). I suspect it is good to use both and
435 fix all issues reported by them before uploading. But I do not know
436 if the tools and the ftpmasters agree on what is important to fix in a
437 copyright file, so the package might still be rejected.</p>
438
439 <p>The devscripts tool <tt>licensecheck</tt> deserve mentioning. It
440 will read through the source and try to find all copyright statements.
441 It is not comparing the result to the content of debian/copyright, but
442 can be useful when verifying the content of the copyright file.</p>
443
444 <p>Are you aware of better tools in Debian to create and update
445 debian/copyright file. Please let me know, or blog about it on
446 planet.debian.org.</p>
447
448 <p>As usual, if you use Bitcoin and want to show your support of my
449 activities, please send Bitcoin donations to my address
450 <b><a href="bitcoin:15oWEoG9dUPovwmUL9KWAnYRtNJEkP1u1b">15oWEoG9dUPovwmUL9KWAnYRtNJEkP1u1b</a></b>.</p>
451
452 <p><strong>Update 2016-02-20</strong>: I got a tip from Mike Gabriel
453 on how to use licensecheck and cdbs to create a draft copyright file
454
455 <p><pre>
456 licensecheck --copyright -r `find * -type f` | \
457 /usr/lib/cdbs/licensecheck2dep5 > debian/copyright.auto
458 </pre></p>
459
460 <p>He mentioned that he normally check the generated file into the
461 version control system to make it easier to discover license and
462 copyright changes in the upstream source. I will try to do the same
463 with my packages in the future.</p>
464
465 <p><strong>Update 2016-02-21</strong>: The cme author recommended
466 against using -quiet for new users, so I removed it from the proposed
467 command line.</p>
468 </div>
469 <div class="tags">
470
471
472 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>.
473
474
475 </div>
476 </div>
477 <div class="padding"></div>
478
479 <div class="entry">
480 <div class="title"><a href="http://people.skolelinux.org/pere/blog/Using_appstream_in_Debian_to_locate_packages_with_firmware_and_mime_type_support.html">Using appstream in Debian to locate packages with firmware and mime type support</a></div>
481 <div class="date"> 4th February 2016</div>
482 <div class="body"><p>The <a href="https://wiki.debian.org/DEP-11">appstream system</a>
483 is taking shape in Debian, and one provided feature is a very
484 convenient way to tell you which package to install to make a given
485 firmware file available when the kernel is looking for it. This can
486 be done using apt-file too, but that is for someone else to blog
487 about. :)</p>
488
489 <p>Here is a small recipe to find the package with a given firmware
490 file, in this example I am looking for ctfw-3.2.3.0.bin, randomly
491 picked from the set of firmware announced using appstream in Debian
492 unstable. In general you would be looking for the firmware requested
493 by the kernel during kernel module loading. To find the package
494 providing the example file, do like this:</p>
495
496 <blockquote><pre>
497 % apt install appstream
498 [...]
499 % apt update
500 [...]
501 % appstreamcli what-provides firmware:runtime ctfw-3.2.3.0.bin | \
502 awk '/Package:/ {print $2}'
503 firmware-qlogic
504 %
505 </pre></blockquote>
506
507 <p>See <a href="https://wiki.debian.org/AppStream/Guidelines">the
508 appstream wiki</a> page to learn how to embed the package metadata in
509 a way appstream can use.</p>
510
511 <p>This same approach can be used to find any package supporting a
512 given MIME type. This is very useful when you get a file you do not
513 know how to handle. First find the mime type using <tt>file
514 --mime-type</tt>, and next look up the package providing support for
515 it. Lets say you got an SVG file. Its MIME type is image/svg+xml,
516 and you can find all packages handling this type like this:</p>
517
518 <blockquote><pre>
519 % apt install appstream
520 [...]
521 % apt update
522 [...]
523 % appstreamcli what-provides mimetype image/svg+xml | \
524 awk '/Package:/ {print $2}'
525 bkchem
526 phototonic
527 inkscape
528 shutter
529 tetzle
530 geeqie
531 xia
532 pinta
533 gthumb
534 karbon
535 comix
536 mirage
537 viewnior
538 postr
539 ristretto
540 kolourpaint4
541 eog
542 eom
543 gimagereader
544 midori
545 %
546 </pre></blockquote>
547
548 <p>I believe the MIME types are fetched from the desktop file for
549 packages providing appstream metadata.</p>
550 </div>
551 <div class="tags">
552
553
554 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>.
555
556
557 </div>
558 </div>
559 <div class="padding"></div>
560
561 <div class="entry">
562 <div class="title"><a href="http://people.skolelinux.org/pere/blog/Creepy__visualise_geotagged_social_media_information___nice_free_software.html">Creepy, visualise geotagged social media information - nice free software</a></div>
563 <div class="date">24th January 2016</div>
564 <div class="body"><p>Most people seem not to realise that every time they walk around
565 with the computerised radio beacon known as a mobile phone their
566 position is tracked by the phone company and often stored for a long
567 time (like every time a SMS is received or sent). And if their
568 computerised radio beacon is capable of running programs (often called
569 mobile apps) downloaded from the Internet, these programs are often
570 also capable of tracking their location (if the app requested access
571 during installation). And when these programs send out information to
572 central collection points, the location is often included, unless
573 extra care is taken to not send the location. The provided
574 information is used by several entities, for good and bad (what is
575 good and bad, depend on your point of view). What is certain, is that
576 the private sphere and the right to free movement is challenged and
577 perhaps even eradicated for those announcing their location this way,
578 when they share their whereabouts with private and public
579 entities.</p>
580
581 <p align="center"><img width="70%" src="http://people.skolelinux.org/pere/blog/images/2016-01-24-nice-creepy-desktop-window.png"></p>
582
583 <p>The phone company logs provide a register of locations to check out
584 when one want to figure out what the tracked person was doing. It is
585 unavailable for most of us, but provided to selected government
586 officials, company staff, those illegally buying information from
587 unfaithful servants and crackers stealing the information. But the
588 public information can be collected and analysed, and a free software
589 tool to do so is called
590 <a href="http://www.geocreepy.com/">Creepy or Cree.py</a>. I
591 discovered it when I read
592 <a href="http://www.aftenposten.no/kultur/Slik-kan-du-bli-overvaket-pa-Twitter-og-Instagram-uten-a-ane-det-7787884.html">an
593 article about Creepy</a> in the Norwegian newspaper Aftenposten i
594 November 2014, and decided to check if it was available in Debian.
595 The python program was in Debian, but
596 <a href="https://tracker.debian.org/pkg/creepy">the version in
597 Debian</a> was completely broken and practically unmaintained. I
598 uploaded a new version which did not work quite right, but did not
599 have time to fix it then. This Christmas I decided to finally try to
600 get Creepy operational in Debian. Now a fixed version is available in
601 Debian unstable and testing, and almost all Debian specific patches
602 are now included
603 <a href="https://github.com/jkakavas/creepy">upstream</a>.</p>
604
605 <p>The Creepy program visualises geolocation information fetched from
606 Twitter, Instagram, Flickr and Google+, and allow one to get a
607 complete picture of every social media message posted recently in a
608 given area, or track the movement of a given individual across all
609 these services. Earlier it was possible to use the search API of at
610 least some of these services without identifying oneself, but these
611 days it is impossible. This mean that to use Creepy, you need to
612 configure it to log in as yourself on these services, and provide
613 information to them about your search interests. This should be taken
614 into account when using Creepy, as it will also share information
615 about yourself with the services.</p>
616
617 <p>The picture above show the twitter messages sent from (or at least
618 geotagged with a position from) the city centre of Oslo, the capital
619 of Norway. One useful way to use Creepy is to first look at
620 information tagged with an area of interest, and next look at all the
621 information provided by one or more individuals who was in the area.
622 I tested it by checking out which celebrity provide their location in
623 twitter messages by checkout out who sent twitter messages near a
624 Norwegian TV station, and next could track their position over time,
625 making it possible to locate their home and work place, among other
626 things. A similar technique have been
627 <a href="http://www.buzzfeed.com/maxseddon/does-this-soldiers-instagram-account-prove-russia-is-covertl">used
628 to locate Russian soldiers in Ukraine</a>, and it is both a powerful
629 tool to discover lying governments, and a useful tool to help people
630 understand the value of the private information they provide to the
631 public.</p>
632
633 <p>The package is not trivial to backport to Debian Stable/Jessie, as
634 it depend on several python modules currently missing in Jessie (at
635 least python-instagram, python-flickrapi and
636 python-requests-toolbelt).</p>
637
638 <p>(I have uploaded
639 <a href="https://screenshots.debian.net/package/creepy">the image to
640 screenshots.debian.net</a> and licensed it under the same terms as the
641 Creepy program in Debian.)</p>
642 </div>
643 <div class="tags">
644
645
646 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/nice free software">nice free software</a>.
647
648
649 </div>
650 </div>
651 <div class="padding"></div>
652
653 <div class="entry">
654 <div class="title"><a href="http://people.skolelinux.org/pere/blog/Always_download_Debian_packages_using_Tor___the_simple_recipe.html">Always download Debian packages using Tor - the simple recipe</a></div>
655 <div class="date">15th January 2016</div>
656 <div class="body"><p>During his DebConf15 keynote, Jacob Appelbaum
657 <a href="https://summit.debconf.org/debconf15/meeting/331/what-is-to-be-done/">observed
658 that those listening on the Internet lines would have good reason to
659 believe a computer have a given security hole</a> if it download a
660 security fix from a Debian mirror. This is a good reason to always
661 use encrypted connections to the Debian mirror, to make sure those
662 listening do not know which IP address to attack. In August, Richard
663 Hartmann observed that encryption was not enough, when it was possible
664 to interfere download size to security patches or the fact that
665 download took place shortly after a security fix was released, and
666 <a href="http://richardhartmann.de/blog/posts/2015/08/24-Tor-enabled_Debian_mirror/">proposed
667 to always use Tor to download packages from the Debian mirror</a>. He
668 was not the first to propose this, as the
669 <tt><a href="https://tracker.debian.org/pkg/apt-transport-tor">apt-transport-tor</a></tt>
670 package by Tim Retout already existed to make it easy to convince apt
671 to use <a href="https://www.torproject.org/">Tor</a>, but I was not
672 aware of that package when I read the blog post from Richard.</p>
673
674 <p>Richard discussed the idea with Peter Palfrader, one of the Debian
675 sysadmins, and he set up a Tor hidden service on one of the central
676 Debian mirrors using the address vwakviie2ienjx6t.onion, thus making
677 it possible to download packages directly between two tor nodes,
678 making sure the network traffic always were encrypted.</p>
679
680 <p>Here is a short recipe for enabling this on your machine, by
681 installing <tt>apt-transport-tor</tt> and replacing http and https
682 urls with tor+http and tor+https, and using the hidden service instead
683 of the official Debian mirror site. I recommend installing
684 <tt>etckeeper</tt> before you start to have a history of the changes
685 done in /etc/.</p>
686
687 <blockquote><pre>
688 apt install apt-transport-tor
689 sed -i 's% http://ftp.debian.org/% tor+http://vwakviie2ienjx6t.onion/%' /etc/apt/sources.list
690 sed -i 's% http% tor+http%' /etc/apt/sources.list
691 </pre></blockquote>
692
693 <p>If you have more sources listed in /etc/apt/sources.list.d/, run
694 the sed commands for these too. The sed command is assuming your are
695 using the ftp.debian.org Debian mirror. Adjust the command (or just
696 edit the file manually) to match your mirror.</p>
697
698 <p>This work in Debian Jessie and later. Note that tools like
699 <tt>apt-file</tt> only recently started using the apt transport
700 system, and do not work with these tor+http URLs. For
701 <tt>apt-file</tt> you need the version currently in experimental,
702 which need a recent apt version currently only in unstable. So if you
703 need a working <tt>apt-file</tt>, this is not for you.</p>
704
705 <p>Another advantage from this change is that your machine will start
706 using Tor regularly and at fairly random intervals (every time you
707 update the package lists or upgrade or install a new package), thus
708 masking other Tor traffic done from the same machine. Using Tor will
709 become normal for the machine in question.</p>
710
711 <p>On <a href="https://wiki.debian.org/FreedomBox">Freedombox</a>, APT
712 is set up by default to use <tt>apt-transport-tor</tt> when Tor is
713 enabled. It would be great if it was the default on any Debian
714 system.</p>
715 </div>
716 <div class="tags">
717
718
719 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/sikkerhet">sikkerhet</a>.
720
721
722 </div>
723 </div>
724 <div class="padding"></div>
725
726 <div class="entry">
727 <div class="title"><a href="http://people.skolelinux.org/pere/blog/Nedlasting_fra_NRK__som_Matroska_med_undertekster.html">Nedlasting fra NRK, som Matroska med undertekster</a></div>
728 <div class="date"> 2nd January 2016</div>
729 <div class="body"><p>Det kommer stadig nye løsninger for å ta lagre unna innslag fra NRK
730 for å se på det senere. For en stund tilbake kom jeg over et script
731 nrkopptak laget av Ingvar Hagelund. Han fjernet riktignok sitt script
732 etter forespørsel fra Erik Bolstad i NRK, men noen tok heldigvis og
733 gjorde det <a href="https://github.com/liangqi/nrkopptak">tilgjengelig
734 via github</a>.</p>
735
736 <p>Scriptet kan lagre som MPEG4 eller Matroska, og bake inn
737 undertekster i fila på et vis som blant annet VLC forstår. For å
738 bruke scriptet, kopier ned git-arkivet og kjør</p>
739
740 <p><pre>
741 nrkopptak/bin/nrk-opptak k <ahref="https://tv.nrk.no/serie/bmi-turne/MUHH45000115/sesong-1/episode-1">https://tv.nrk.no/serie/bmi-turne/MUHH45000115/sesong-1/episode-1</a>
742 </pre></p>
743
744 <p>URL-eksemplet er dagens toppsak på tv.nrk.no. Argument 'k' ber
745 scriptet laste ned og lagre som Matroska. Det finnes en rekke andre
746 muligheter for valg av kvalitet og format.</p>
747
748 <p>Jeg foretrekker dette scriptet fremfor youtube-dl, som
749 <a href="http://people.skolelinux.org/pere/blog/Hvordan_enkelt_laste_ned_filmer_fra_NRK_med_den__nye__l_sningen.html">
750 nevnt i 2014 støtter NRK</a> og en rekke andre videokilder, på grunn
751 av at nrkopptak samler undertekster og video i en enkelt fil, hvilket
752 gjør håndtering enklere på disk.</p>
753 </div>
754 <div class="tags">
755
756
757 Tags: <a href="http://people.skolelinux.org/pere/blog/tags/multimedia">multimedia</a>, <a href="http://people.skolelinux.org/pere/blog/tags/norsk">norsk</a>, <a href="http://people.skolelinux.org/pere/blog/tags/video">video</a>, <a href="http://people.skolelinux.org/pere/blog/tags/web">web</a>.
758
759
760 </div>
761 </div>
762 <div class="padding"></div>
763
764 <div class="entry">
765 <div class="title"><a href="http://people.skolelinux.org/pere/blog/OpenALPR__find_car_license_plates_in_video_streams___nice_free_software.html">OpenALPR, find car license plates in video streams - nice free software</a></div>
766 <div class="date">23rd December 2015</div>
767 <div class="body"><p>When I was a kid, we used to collect "car numbers", as we used to
768 call the car license plate numbers in those days. I would write the
769 numbers down in my little book and compare notes with the other kids
770 to see how many region codes we had seen and if we had seen some
771 exotic or special region codes and numbers. It was a fun game to pass
772 time, as we kids have plenty of it.</p>
773
774 <p>A few days I came across
775 <a href="https://github.com/openalpr/openalpr">the OpenALPR
776 project</a>, a free software project to automatically discover and
777 report license plates in images and video streams, and provide the
778 "car numbers" in a machine readable format. I've been looking for
779 such system for a while now, because I believe it is a bad idea that the
780 <a href="https://en.wikipedia.org/wiki/Automatic_number_plate_recognition">automatic
781 number plate recognition</a> tool only is available in the hands of
782 the powerful, and want it to be available also for the powerless to
783 even the score when it comes to surveillance and sousveillance. I
784 discovered the developer
785 <a href="https://bugs.debian.org/747509">wanted to get the tool into
786 Debian</a>, and as I too wanted it to be in Debian, I volunteered to
787 help him get it into shape to get the package uploaded into the Debian
788 archive.</p>
789
790 <p>Today we finally managed to get the package into shape and uploaded
791 it into Debian, where it currently
792 <a href="https://ftp-master.debian.org//new/openalpr_2.2.1-1.html">waits
793 in the NEW queue</a> for review by the Debian ftpmasters.</p>
794
795 <p>I guess you are wondering why on earth such tool would be useful
796 for the common folks, ie those not running a large government
797 surveillance system? Well, I plan to put it in a computer on my bike
798 and in my car, tracking the cars nearby and allowing me to be notified
799 when number plates on my watch list are discovered. Another use case
800 was suggested by a friend of mine, who wanted to set it up at his home
801 to open the car port automatically when it discovered the plate on his
802 car. When I mentioned it perhaps was a bit foolhardy to allow anyone
803 capable of placing his license plate number of a piece of cardboard to
804 open his car port, men replied that it was always unlocked anyway. I
805 guess for such use case it make sense. I am sure there are other use
806 cases too, for those with imagination and a vision.</p>
807
808 <p>If you want to build your own version of the Debian package, check
809 out the upstream git source and symlink ./distros/debian to ./debian/
810 before running "debuild" to build the source. Or wait a bit until the
811 package show up in unstable.</p>
812 </div>
813 <div class="tags">
814
815
816 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/nice free software">nice free software</a>.
817
818
819 </div>
820 </div>
821 <div class="padding"></div>
822
823 <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>
824 <div id="sidebar">
825
826
827
828 <h2>Archive</h2>
829 <ul>
830
831 <li>2016
832 <ul>
833
834 <li><a href="http://people.skolelinux.org/pere/blog/archive/2016/01/">January (3)</a></li>
835
836 <li><a href="http://people.skolelinux.org/pere/blog/archive/2016/02/">February (2)</a></li>
837
838 <li><a href="http://people.skolelinux.org/pere/blog/archive/2016/03/">March (3)</a></li>
839
840 <li><a href="http://people.skolelinux.org/pere/blog/archive/2016/04/">April (1)</a></li>
841
842 </ul></li>
843
844 <li>2015
845 <ul>
846
847 <li><a href="http://people.skolelinux.org/pere/blog/archive/2015/01/">January (7)</a></li>
848
849 <li><a href="http://people.skolelinux.org/pere/blog/archive/2015/02/">February (6)</a></li>
850
851 <li><a href="http://people.skolelinux.org/pere/blog/archive/2015/03/">March (1)</a></li>
852
853 <li><a href="http://people.skolelinux.org/pere/blog/archive/2015/04/">April (4)</a></li>
854
855 <li><a href="http://people.skolelinux.org/pere/blog/archive/2015/05/">May (3)</a></li>
856
857 <li><a href="http://people.skolelinux.org/pere/blog/archive/2015/06/">June (4)</a></li>
858
859 <li><a href="http://people.skolelinux.org/pere/blog/archive/2015/07/">July (6)</a></li>
860
861 <li><a href="http://people.skolelinux.org/pere/blog/archive/2015/08/">August (2)</a></li>
862
863 <li><a href="http://people.skolelinux.org/pere/blog/archive/2015/09/">September (2)</a></li>
864
865 <li><a href="http://people.skolelinux.org/pere/blog/archive/2015/10/">October (9)</a></li>
866
867 <li><a href="http://people.skolelinux.org/pere/blog/archive/2015/11/">November (6)</a></li>
868
869 <li><a href="http://people.skolelinux.org/pere/blog/archive/2015/12/">December (3)</a></li>
870
871 </ul></li>
872
873 <li>2014
874 <ul>
875
876 <li><a href="http://people.skolelinux.org/pere/blog/archive/2014/01/">January (2)</a></li>
877
878 <li><a href="http://people.skolelinux.org/pere/blog/archive/2014/02/">February (3)</a></li>
879
880 <li><a href="http://people.skolelinux.org/pere/blog/archive/2014/03/">March (8)</a></li>
881
882 <li><a href="http://people.skolelinux.org/pere/blog/archive/2014/04/">April (7)</a></li>
883
884 <li><a href="http://people.skolelinux.org/pere/blog/archive/2014/05/">May (1)</a></li>
885
886 <li><a href="http://people.skolelinux.org/pere/blog/archive/2014/06/">June (2)</a></li>
887
888 <li><a href="http://people.skolelinux.org/pere/blog/archive/2014/07/">July (2)</a></li>
889
890 <li><a href="http://people.skolelinux.org/pere/blog/archive/2014/08/">August (2)</a></li>
891
892 <li><a href="http://people.skolelinux.org/pere/blog/archive/2014/09/">September (5)</a></li>
893
894 <li><a href="http://people.skolelinux.org/pere/blog/archive/2014/10/">October (6)</a></li>
895
896 <li><a href="http://people.skolelinux.org/pere/blog/archive/2014/11/">November (3)</a></li>
897
898 <li><a href="http://people.skolelinux.org/pere/blog/archive/2014/12/">December (5)</a></li>
899
900 </ul></li>
901
902 <li>2013
903 <ul>
904
905 <li><a href="http://people.skolelinux.org/pere/blog/archive/2013/01/">January (11)</a></li>
906
907 <li><a href="http://people.skolelinux.org/pere/blog/archive/2013/02/">February (9)</a></li>
908
909 <li><a href="http://people.skolelinux.org/pere/blog/archive/2013/03/">March (9)</a></li>
910
911 <li><a href="http://people.skolelinux.org/pere/blog/archive/2013/04/">April (6)</a></li>
912
913 <li><a href="http://people.skolelinux.org/pere/blog/archive/2013/05/">May (9)</a></li>
914
915 <li><a href="http://people.skolelinux.org/pere/blog/archive/2013/06/">June (10)</a></li>
916
917 <li><a href="http://people.skolelinux.org/pere/blog/archive/2013/07/">July (7)</a></li>
918
919 <li><a href="http://people.skolelinux.org/pere/blog/archive/2013/08/">August (3)</a></li>
920
921 <li><a href="http://people.skolelinux.org/pere/blog/archive/2013/09/">September (5)</a></li>
922
923 <li><a href="http://people.skolelinux.org/pere/blog/archive/2013/10/">October (7)</a></li>
924
925 <li><a href="http://people.skolelinux.org/pere/blog/archive/2013/11/">November (9)</a></li>
926
927 <li><a href="http://people.skolelinux.org/pere/blog/archive/2013/12/">December (3)</a></li>
928
929 </ul></li>
930
931 <li>2012
932 <ul>
933
934 <li><a href="http://people.skolelinux.org/pere/blog/archive/2012/01/">January (7)</a></li>
935
936 <li><a href="http://people.skolelinux.org/pere/blog/archive/2012/02/">February (10)</a></li>
937
938 <li><a href="http://people.skolelinux.org/pere/blog/archive/2012/03/">March (17)</a></li>
939
940 <li><a href="http://people.skolelinux.org/pere/blog/archive/2012/04/">April (12)</a></li>
941
942 <li><a href="http://people.skolelinux.org/pere/blog/archive/2012/05/">May (12)</a></li>
943
944 <li><a href="http://people.skolelinux.org/pere/blog/archive/2012/06/">June (20)</a></li>
945
946 <li><a href="http://people.skolelinux.org/pere/blog/archive/2012/07/">July (17)</a></li>
947
948 <li><a href="http://people.skolelinux.org/pere/blog/archive/2012/08/">August (6)</a></li>
949
950 <li><a href="http://people.skolelinux.org/pere/blog/archive/2012/09/">September (9)</a></li>
951
952 <li><a href="http://people.skolelinux.org/pere/blog/archive/2012/10/">October (17)</a></li>
953
954 <li><a href="http://people.skolelinux.org/pere/blog/archive/2012/11/">November (10)</a></li>
955
956 <li><a href="http://people.skolelinux.org/pere/blog/archive/2012/12/">December (7)</a></li>
957
958 </ul></li>
959
960 <li>2011
961 <ul>
962
963 <li><a href="http://people.skolelinux.org/pere/blog/archive/2011/01/">January (16)</a></li>
964
965 <li><a href="http://people.skolelinux.org/pere/blog/archive/2011/02/">February (6)</a></li>
966
967 <li><a href="http://people.skolelinux.org/pere/blog/archive/2011/03/">March (6)</a></li>
968
969 <li><a href="http://people.skolelinux.org/pere/blog/archive/2011/04/">April (7)</a></li>
970
971 <li><a href="http://people.skolelinux.org/pere/blog/archive/2011/05/">May (3)</a></li>
972
973 <li><a href="http://people.skolelinux.org/pere/blog/archive/2011/06/">June (2)</a></li>
974
975 <li><a href="http://people.skolelinux.org/pere/blog/archive/2011/07/">July (7)</a></li>
976
977 <li><a href="http://people.skolelinux.org/pere/blog/archive/2011/08/">August (6)</a></li>
978
979 <li><a href="http://people.skolelinux.org/pere/blog/archive/2011/09/">September (4)</a></li>
980
981 <li><a href="http://people.skolelinux.org/pere/blog/archive/2011/10/">October (2)</a></li>
982
983 <li><a href="http://people.skolelinux.org/pere/blog/archive/2011/11/">November (3)</a></li>
984
985 <li><a href="http://people.skolelinux.org/pere/blog/archive/2011/12/">December (1)</a></li>
986
987 </ul></li>
988
989 <li>2010
990 <ul>
991
992 <li><a href="http://people.skolelinux.org/pere/blog/archive/2010/01/">January (2)</a></li>
993
994 <li><a href="http://people.skolelinux.org/pere/blog/archive/2010/02/">February (1)</a></li>
995
996 <li><a href="http://people.skolelinux.org/pere/blog/archive/2010/03/">March (3)</a></li>
997
998 <li><a href="http://people.skolelinux.org/pere/blog/archive/2010/04/">April (3)</a></li>
999
1000 <li><a href="http://people.skolelinux.org/pere/blog/archive/2010/05/">May (9)</a></li>
1001
1002 <li><a href="http://people.skolelinux.org/pere/blog/archive/2010/06/">June (14)</a></li>
1003
1004 <li><a href="http://people.skolelinux.org/pere/blog/archive/2010/07/">July (12)</a></li>
1005
1006 <li><a href="http://people.skolelinux.org/pere/blog/archive/2010/08/">August (13)</a></li>
1007
1008 <li><a href="http://people.skolelinux.org/pere/blog/archive/2010/09/">September (7)</a></li>
1009
1010 <li><a href="http://people.skolelinux.org/pere/blog/archive/2010/10/">October (9)</a></li>
1011
1012 <li><a href="http://people.skolelinux.org/pere/blog/archive/2010/11/">November (13)</a></li>
1013
1014 <li><a href="http://people.skolelinux.org/pere/blog/archive/2010/12/">December (12)</a></li>
1015
1016 </ul></li>
1017
1018 <li>2009
1019 <ul>
1020
1021 <li><a href="http://people.skolelinux.org/pere/blog/archive/2009/01/">January (8)</a></li>
1022
1023 <li><a href="http://people.skolelinux.org/pere/blog/archive/2009/02/">February (8)</a></li>
1024
1025 <li><a href="http://people.skolelinux.org/pere/blog/archive/2009/03/">March (12)</a></li>
1026
1027 <li><a href="http://people.skolelinux.org/pere/blog/archive/2009/04/">April (10)</a></li>
1028
1029 <li><a href="http://people.skolelinux.org/pere/blog/archive/2009/05/">May (9)</a></li>
1030
1031 <li><a href="http://people.skolelinux.org/pere/blog/archive/2009/06/">June (3)</a></li>
1032
1033 <li><a href="http://people.skolelinux.org/pere/blog/archive/2009/07/">July (4)</a></li>
1034
1035 <li><a href="http://people.skolelinux.org/pere/blog/archive/2009/08/">August (3)</a></li>
1036
1037 <li><a href="http://people.skolelinux.org/pere/blog/archive/2009/09/">September (1)</a></li>
1038
1039 <li><a href="http://people.skolelinux.org/pere/blog/archive/2009/10/">October (2)</a></li>
1040
1041 <li><a href="http://people.skolelinux.org/pere/blog/archive/2009/11/">November (3)</a></li>
1042
1043 <li><a href="http://people.skolelinux.org/pere/blog/archive/2009/12/">December (3)</a></li>
1044
1045 </ul></li>
1046
1047 <li>2008
1048 <ul>
1049
1050 <li><a href="http://people.skolelinux.org/pere/blog/archive/2008/11/">November (5)</a></li>
1051
1052 <li><a href="http://people.skolelinux.org/pere/blog/archive/2008/12/">December (7)</a></li>
1053
1054 </ul></li>
1055
1056 </ul>
1057
1058
1059
1060 <h2>Tags</h2>
1061 <ul>
1062
1063 <li><a href="http://people.skolelinux.org/pere/blog/tags/3d-printer">3d-printer (13)</a></li>
1064
1065 <li><a href="http://people.skolelinux.org/pere/blog/tags/amiga">amiga (1)</a></li>
1066
1067 <li><a href="http://people.skolelinux.org/pere/blog/tags/aros">aros (1)</a></li>
1068
1069 <li><a href="http://people.skolelinux.org/pere/blog/tags/bankid">bankid (4)</a></li>
1070
1071 <li><a href="http://people.skolelinux.org/pere/blog/tags/bitcoin">bitcoin (9)</a></li>
1072
1073 <li><a href="http://people.skolelinux.org/pere/blog/tags/bootsystem">bootsystem (15)</a></li>
1074
1075 <li><a href="http://people.skolelinux.org/pere/blog/tags/bsa">bsa (2)</a></li>
1076
1077 <li><a href="http://people.skolelinux.org/pere/blog/tags/chrpath">chrpath (2)</a></li>
1078
1079 <li><a href="http://people.skolelinux.org/pere/blog/tags/debian">debian (122)</a></li>
1080
1081 <li><a href="http://people.skolelinux.org/pere/blog/tags/debian edu">debian edu (154)</a></li>
1082
1083 <li><a href="http://people.skolelinux.org/pere/blog/tags/digistan">digistan (10)</a></li>
1084
1085 <li><a href="http://people.skolelinux.org/pere/blog/tags/dld">dld (15)</a></li>
1086
1087 <li><a href="http://people.skolelinux.org/pere/blog/tags/docbook">docbook (20)</a></li>
1088
1089 <li><a href="http://people.skolelinux.org/pere/blog/tags/drivstoffpriser">drivstoffpriser (4)</a></li>
1090
1091 <li><a href="http://people.skolelinux.org/pere/blog/tags/english">english (306)</a></li>
1092
1093 <li><a href="http://people.skolelinux.org/pere/blog/tags/fiksgatami">fiksgatami (23)</a></li>
1094
1095 <li><a href="http://people.skolelinux.org/pere/blog/tags/fildeling">fildeling (12)</a></li>
1096
1097 <li><a href="http://people.skolelinux.org/pere/blog/tags/freeculture">freeculture (25)</a></li>
1098
1099 <li><a href="http://people.skolelinux.org/pere/blog/tags/freedombox">freedombox (9)</a></li>
1100
1101 <li><a href="http://people.skolelinux.org/pere/blog/tags/frikanalen">frikanalen (16)</a></li>
1102
1103 <li><a href="http://people.skolelinux.org/pere/blog/tags/h264">h264 (20)</a></li>
1104
1105 <li><a href="http://people.skolelinux.org/pere/blog/tags/intervju">intervju (42)</a></li>
1106
1107 <li><a href="http://people.skolelinux.org/pere/blog/tags/isenkram">isenkram (11)</a></li>
1108
1109 <li><a href="http://people.skolelinux.org/pere/blog/tags/kart">kart (19)</a></li>
1110
1111 <li><a href="http://people.skolelinux.org/pere/blog/tags/ldap">ldap (9)</a></li>
1112
1113 <li><a href="http://people.skolelinux.org/pere/blog/tags/lenker">lenker (8)</a></li>
1114
1115 <li><a href="http://people.skolelinux.org/pere/blog/tags/lsdvd">lsdvd (2)</a></li>
1116
1117 <li><a href="http://people.skolelinux.org/pere/blog/tags/ltsp">ltsp (1)</a></li>
1118
1119 <li><a href="http://people.skolelinux.org/pere/blog/tags/mesh network">mesh network (8)</a></li>
1120
1121 <li><a href="http://people.skolelinux.org/pere/blog/tags/multimedia">multimedia (37)</a></li>
1122
1123 <li><a href="http://people.skolelinux.org/pere/blog/tags/nice free software">nice free software (7)</a></li>
1124
1125 <li><a href="http://people.skolelinux.org/pere/blog/tags/norsk">norsk (273)</a></li>
1126
1127 <li><a href="http://people.skolelinux.org/pere/blog/tags/nuug">nuug (177)</a></li>
1128
1129 <li><a href="http://people.skolelinux.org/pere/blog/tags/offentlig innsyn">offentlig innsyn (22)</a></li>
1130
1131 <li><a href="http://people.skolelinux.org/pere/blog/tags/open311">open311 (2)</a></li>
1132
1133 <li><a href="http://people.skolelinux.org/pere/blog/tags/opphavsrett">opphavsrett (58)</a></li>
1134
1135 <li><a href="http://people.skolelinux.org/pere/blog/tags/personvern">personvern (92)</a></li>
1136
1137 <li><a href="http://people.skolelinux.org/pere/blog/tags/raid">raid (1)</a></li>
1138
1139 <li><a href="http://people.skolelinux.org/pere/blog/tags/reactos">reactos (1)</a></li>
1140
1141 <li><a href="http://people.skolelinux.org/pere/blog/tags/reprap">reprap (11)</a></li>
1142
1143 <li><a href="http://people.skolelinux.org/pere/blog/tags/rfid">rfid (3)</a></li>
1144
1145 <li><a href="http://people.skolelinux.org/pere/blog/tags/robot">robot (9)</a></li>
1146
1147 <li><a href="http://people.skolelinux.org/pere/blog/tags/rss">rss (1)</a></li>
1148
1149 <li><a href="http://people.skolelinux.org/pere/blog/tags/ruter">ruter (4)</a></li>
1150
1151 <li><a href="http://people.skolelinux.org/pere/blog/tags/scraperwiki">scraperwiki (2)</a></li>
1152
1153 <li><a href="http://people.skolelinux.org/pere/blog/tags/sikkerhet">sikkerhet (46)</a></li>
1154
1155 <li><a href="http://people.skolelinux.org/pere/blog/tags/sitesummary">sitesummary (4)</a></li>
1156
1157 <li><a href="http://people.skolelinux.org/pere/blog/tags/skepsis">skepsis (4)</a></li>
1158
1159 <li><a href="http://people.skolelinux.org/pere/blog/tags/standard">standard (49)</a></li>
1160
1161 <li><a href="http://people.skolelinux.org/pere/blog/tags/stavekontroll">stavekontroll (3)</a></li>
1162
1163 <li><a href="http://people.skolelinux.org/pere/blog/tags/stortinget">stortinget (10)</a></li>
1164
1165 <li><a href="http://people.skolelinux.org/pere/blog/tags/surveillance">surveillance (36)</a></li>
1166
1167 <li><a href="http://people.skolelinux.org/pere/blog/tags/sysadmin">sysadmin (2)</a></li>
1168
1169 <li><a href="http://people.skolelinux.org/pere/blog/tags/usenix">usenix (2)</a></li>
1170
1171 <li><a href="http://people.skolelinux.org/pere/blog/tags/valg">valg (8)</a></li>
1172
1173 <li><a href="http://people.skolelinux.org/pere/blog/tags/video">video (55)</a></li>
1174
1175 <li><a href="http://people.skolelinux.org/pere/blog/tags/vitenskap">vitenskap (4)</a></li>
1176
1177 <li><a href="http://people.skolelinux.org/pere/blog/tags/web">web (38)</a></li>
1178
1179 </ul>
1180
1181
1182 </div>
1183 <p style="text-align: right">
1184 Created by <a href="http://steve.org.uk/Software/chronicle">Chronicle v4.6</a>
1185 </p>
1186
1187 </body>
1188 </html>