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