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