]> pere.pagekite.me Git - homepage.git/blob - blog/archive/2014/04/index.html
Generated.
[homepage.git] / blog / archive / 2014 / 04 / 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: entries from April 2014</title>
7 <link rel="stylesheet" type="text/css" media="screen" href="http://www.hungry.com/~pere/blog/style.css" />
8 <link rel="stylesheet" type="text/css" media="screen" href="http://www.hungry.com/~pere/blog/vim.css" />
9 <link rel="alternate" title="RSS Feed" href="04.rss" type="application/rss+xml" />
10 </head>
11 <body>
12 <!-- XML FEED -->
13 <div class="title">
14 <h1>
15 <a href="http://www.hungry.com/~pere/blog/">Petter Reinholdtsen</a>
16
17 </h1>
18
19 </div>
20
21
22 <h3>Entries from April 2014.</h3>
23
24 <div class="entry">
25 <div class="title">
26 <a href="http://www.hungry.com/~pere/blog/Half_the_Coverity_issues_in_Gnash_fixed_in_the_next_release.html">Half the Coverity issues in Gnash fixed in the next release</a>
27 </div>
28 <div class="date">
29 29th April 2014
30 </div>
31 <div class="body">
32 <p>I've been following <a href="http://www.getgnash.org/">the Gnash
33 project</a> for quite a while now. It is a free software
34 implementation of Adobe Flash, both a standalone player and a browser
35 plugin. Gnash implement support for the AVM1 format (and not the
36 newer AVM2 format - see
37 <a href="http://lightspark.github.io/">Lightspark</a> for that one),
38 allowing several flash based sites to work. Thanks to the friendly
39 developers at Youtube, it also work with Youtube videos, because the
40 Javascript code at Youtube detect Gnash and serve a AVM1 player to
41 those users. :) Would be great if someone found time to implement AVM2
42 support, but it has not happened yet. If you install both Lightspark
43 and Gnash, Lightspark will invoke Gnash if it find a AVM1 flash file,
44 so you can get both handled as free software. Unfortunately,
45 Lightspark so far only implement a small subset of AVM2, and many
46 sites do not work yet.</p>
47
48 <p>A few months ago, I started looking at
49 <a href="http://scan.coverity.com/">Coverity</a>, the static source
50 checker used to find heaps and heaps of bugs in free software (thanks
51 to the donation of a scanning service to free software projects by the
52 company developing this non-free code checker), and Gnash was one of
53 the projects I decided to check out. Coverity is able to find lock
54 errors, memory errors, dead code and more. A few days ago they even
55 extended it to also be able to find the heartbleed bug in OpenSSL.
56 There are heaps of checks being done on the instrumented code, and the
57 amount of bogus warnings is quite low compared to the other static
58 code checkers I have tested over the years.</p>
59
60 <p>Since a few weeks ago, I've been working with the other Gnash
61 developers squashing bugs discovered by Coverity. I was quite happy
62 today when I checked the current status and saw that of the 777 issues
63 detected so far, 374 are marked as fixed. This make me confident that
64 the next Gnash release will be more stable and more dependable than
65 the previous one. Most of the reported issues were and are in the
66 test suite, but it also found a few in the rest of the code.</p>
67
68 <p>If you want to help out, you find us on
69 <a href="https://lists.gnu.org/mailman/listinfo/gnash-dev">the
70 gnash-dev mailing list</a> and on
71 <a href="irc://irc.freenode.net/#gnash">the #gnash channel on
72 irc.freenode.net IRC server</a>.</p>
73
74 </div>
75 <div class="tags">
76
77
78 Tags: <a href="http://www.hungry.com/~pere/blog/tags/english">english</a>, <a href="http://www.hungry.com/~pere/blog/tags/multimedia">multimedia</a>, <a href="http://www.hungry.com/~pere/blog/tags/video">video</a>, <a href="http://www.hungry.com/~pere/blog/tags/web">web</a>.
79
80
81 </div>
82 </div>
83 <div class="padding"></div>
84
85 <div class="entry">
86 <div class="title">
87 <a href="http://www.hungry.com/~pere/blog/Install_hardware_dependent_packages_using_tasksel__Isenkram_0_7_.html">Install hardware dependent packages using tasksel (Isenkram 0.7)</a>
88 </div>
89 <div class="date">
90 23rd April 2014
91 </div>
92 <div class="body">
93 <p>It would be nice if it was easier in Debian to get all the hardware
94 related packages relevant for the computer installed automatically.
95 So I implemented one, using
96 <a href="http://packages.qa.debian.org/isenkram">my Isenkram
97 package</a>. To use it, install the tasksel and isenkram packages and
98 run tasksel as user root. You should be presented with a new option,
99 "Hardware specific packages (autodetected by isenkram)". When you
100 select it, tasksel will install the packages isenkram claim is fit for
101 the current hardware, hot pluggable or not.<p>
102
103 <p>The implementation is in two files, one is the tasksel menu entry
104 description, and the other is the script used to extract the list of
105 packages to install. The first part is in
106 <tt>/usr/share/tasksel/descs/isenkram.desc</tt> and look like
107 this:</p>
108
109 <p><blockquote><pre>
110 Task: isenkram
111 Section: hardware
112 Description: Hardware specific packages (autodetected by isenkram)
113 Based on the detected hardware various hardware specific packages are
114 proposed.
115 Test-new-install: mark show
116 Relevance: 8
117 Packages: for-current-hardware
118 </pre></blockquote></p>
119
120 <p>The second part is in
121 <tt>/usr/lib/tasksel/packages/for-current-hardware</tt> and look like
122 this:</p>
123
124 <p><blockquote><pre>
125 #!/bin/sh
126 #
127 (
128 isenkram-lookup
129 isenkram-autoinstall-firmware -l
130 ) | sort -u
131 </pre></blockquote></p>
132
133 <p>All in all, a very short and simple implementation making it
134 trivial to install the hardware dependent package we all may want to
135 have installed on our machines. I've not been able to find a way to
136 get tasksel to tell you exactly which packages it plan to install
137 before doing the installation. So if you are curious or careful,
138 check the output from the isenkram-* command line tools first.</p>
139
140 <p>The information about which packages are handling which hardware is
141 fetched either from the isenkram package itself in
142 /usr/share/isenkram/, from git.debian.org or from the APT package
143 database (using the Modaliases header). The APT package database
144 parsing have caused a nasty resource leak in the isenkram daemon (bugs
145 <a href="http://bugs.debian.org/719837">#719837</a> and
146 <a href="http://bugs.debian.org/730704">#730704</a>). The cause is in
147 the python-apt code (bug
148 <a href="http://bugs.debian.org/745487">#745487</a>), but using a
149 workaround I was able to get rid of the file descriptor leak and
150 reduce the memory leak from ~30 MiB per hardware detection down to
151 around 2 MiB per hardware detection. It should make the desktop
152 daemon a lot more useful. The fix is in version 0.7 uploaded to
153 unstable today.</p>
154
155 <p>I believe the current way of mapping hardware to packages in
156 Isenkram is is a good draft, but in the future I expect isenkram to
157 use the AppStream data source for this. A proposal for getting proper
158 AppStream support into Debian is floating around as
159 <a href="https://wiki.debian.org/DEP-11">DEP-11</a>, and
160 <a href="https://wiki.debian.org/SummerOfCode2014/Projects#SummerOfCode2014.2FProjects.2FAppStreamDEP11Implementation.AppStream.2FDEP-11_for_the_Debian_Archive">GSoC
161 project</a> will take place this summer to improve the situation. I
162 look forward to seeing the result, and welcome patches for isenkram to
163 start using the information when it is ready.</p>
164
165 <p>If you want your package to map to some specific hardware, either
166 add a "Xb-Modaliases" header to your control file like I did in
167 <a href="http://packages.qa.debian.org/pymissile">the pymissile
168 package</a> or submit a bug report with the details to the isenkram
169 package. See also
170 <a href="http://www.hungry.com/~pere/blog/tags/isenkram/">all my
171 blog posts tagged isenkram</a> for details on the notation. I expect
172 the information will be migrated to AppStream eventually, but for the
173 moment I got no better place to store it.</p>
174
175 </div>
176 <div class="tags">
177
178
179 Tags: <a href="http://www.hungry.com/~pere/blog/tags/debian">debian</a>, <a href="http://www.hungry.com/~pere/blog/tags/english">english</a>, <a href="http://www.hungry.com/~pere/blog/tags/isenkram">isenkram</a>.
180
181
182 </div>
183 </div>
184 <div class="padding"></div>
185
186 <div class="entry">
187 <div class="title">
188 <a href="http://www.hungry.com/~pere/blog/FreedomBox_milestone___all_packages_now_in_Debian_Sid.html">FreedomBox milestone - all packages now in Debian Sid</a>
189 </div>
190 <div class="date">
191 15th April 2014
192 </div>
193 <div class="body">
194 <p>The <a href="https://wiki.debian.org/FreedomBox">Freedombox
195 project</a> is working on providing the software and hardware to make
196 it easy for non-technical people to host their data and communication
197 at home, and being able to communicate with their friends and family
198 encrypted and away from prying eyes. It is still going strong, and
199 today a major mile stone was reached.</p>
200
201 <p>Today, the last of the packages currently used by the project to
202 created the system images were accepted into Debian Unstable. It was
203 the freedombox-setup package, which is used to configure the images
204 during build and on the first boot. Now all one need to get going is
205 the build code from the freedom-maker git repository and packages from
206 Debian. And once the freedombox-setup package enter testing, we can
207 build everything directly from Debian. :)</p>
208
209 <p>Some key packages used by Freedombox are
210 <a href="http://packages.qa.debian.org/freedombox-setup">freedombox-setup</a>,
211 <a href="http://packages.qa.debian.org/plinth">plinth</a>,
212 <a href="http://packages.qa.debian.org/pagekite">pagekite</a>,
213 <a href="http://packages.qa.debian.org/tor">tor</a>,
214 <a href="http://packages.qa.debian.org/privoxy">privoxy</a>,
215 <a href="http://packages.qa.debian.org/owncloud">owncloud</a> and
216 <a href="http://packages.qa.debian.org/dnsmasq">dnsmasq</a>. There
217 are plans to integrate more packages into the setup. User
218 documentation is maintained on the Debian wiki. Please
219 <a href="https://wiki.debian.org/FreedomBox/Manual/Jessie">check out
220 the manual</a> and help us improve it.</p>
221
222 <p>To test for yourself and create boot images with the FreedomBox
223 setup, run this on a Debian machine using a user with sudo rights to
224 become root:</p>
225
226 <p><pre>
227 sudo apt-get install git vmdebootstrap mercurial python-docutils \
228 mktorrent extlinux virtualbox qemu-user-static binfmt-support \
229 u-boot-tools
230 git clone http://anonscm.debian.org/git/freedombox/freedom-maker.git \
231 freedom-maker
232 make -C freedom-maker dreamplug-image raspberry-image virtualbox-image
233 </pre></p>
234
235 <p>Root access is needed to run debootstrap and mount loopback
236 devices. See the README in the freedom-maker git repo for more
237 details on the build. If you do not want all three images, trim the
238 make line. Note that the virtualbox-image target is not really
239 virtualbox specific. It create a x86 image usable in kvm, qemu,
240 vmware and any other x86 virtual machine environment. You might need
241 the version of vmdebootstrap in Jessie to get the build working, as it
242 include fixes for a race condition with kpartx.</p>
243
244 <p>If you instead want to install using a Debian CD and the preseed
245 method, boot a Debian Wheezy ISO and use this boot argument to load
246 the preseed values:</p>
247
248 <p><pre>
249 url=<a href="http://www.reinholdtsen.name/freedombox/preseed-jessie.dat">http://www.reinholdtsen.name/freedombox/preseed-jessie.dat</a>
250 </pre></p>
251
252 <p>I have not tested it myself the last few weeks, so I do not know if
253 it still work.</p>
254
255 <p>If you wonder how to help, one task you could look at is using
256 systemd as the boot system. It will become the default for Linux in
257 Jessie, so we need to make sure it is usable on the Freedombox. I did
258 a simple test a few weeks ago, and noticed dnsmasq failed to start
259 during boot when using systemd. I suspect there are other problems
260 too. :) To detect problems, there is a test suite included, which can
261 be run from the plinth web interface.</p>
262
263 <p>Give it a go and let us know how it goes on the mailing list, and help
264 us get the new release published. :) Please join us on
265 <a href="irc://irc.debian.org:6667/%23freedombox">IRC (#freedombox on
266 irc.debian.org)</a> and
267 <a href="http://lists.alioth.debian.org/mailman/listinfo/freedombox-discuss">the
268 mailing list</a> if you want to help make this vision come true.</p>
269
270 </div>
271 <div class="tags">
272
273
274 Tags: <a href="http://www.hungry.com/~pere/blog/tags/debian">debian</a>, <a href="http://www.hungry.com/~pere/blog/tags/english">english</a>, <a href="http://www.hungry.com/~pere/blog/tags/freedombox">freedombox</a>, <a href="http://www.hungry.com/~pere/blog/tags/sikkerhet">sikkerhet</a>, <a href="http://www.hungry.com/~pere/blog/tags/surveillance">surveillance</a>, <a href="http://www.hungry.com/~pere/blog/tags/web">web</a>.
275
276
277 </div>
278 </div>
279 <div class="padding"></div>
280
281 <div class="entry">
282 <div class="title">
283 <a href="http://www.hungry.com/~pere/blog/Spr_kkoder_for_POSIX_locale_i_Norge.html">Språkkoder for POSIX locale i Norge</a>
284 </div>
285 <div class="date">
286 11th April 2014
287 </div>
288 <div class="body">
289 <p>For 12 år siden, skrev jeg et lite notat om
290 <a href="http://i18n.skolelinux.no/localekoder.txt">bruk av språkkoder
291 i Norge</a>. Jeg ble nettopp minnet på dette da jeg fikk spørsmål om
292 notatet fortsatt var aktuelt, og tenkte det var greit å repetere hva
293 som fortsatt gjelder. Det jeg skrev da er fortsatt like aktuelt.</p>
294
295 <p>Når en velger språk i programmer på unix, så velger en blant mange
296 språkkoder. For språk i Norge anbefales følgende språkkoder (anbefalt
297 locale i parantes):</p>
298
299 <p><dl>
300 <dt>nb (nb_NO)</dt><dd>Bokmål i Norge</dd>
301 <dt>nn (nn_NO)</dt><dd>Nynorsk i Norge</dd>
302 <dt>se (se_NO)</dt><dd>Nordsamisk i Norge</dd>
303 </dl></p>
304
305 <p>Alle programmer som bruker andre koder bør endres.</p>
306
307 <p>Språkkoden bør brukes når .po-filer navngis og installeres. Dette
308 er ikke det samme som locale-koden. For Norsk Bokmål, så bør filene
309 være navngitt nb.po, mens locale (LANG) bør være nb_NO.</p>
310
311 <p>Hvis vi ikke får standardisert de kodene i alle programmene med
312 norske oversettelser, så er det umulig å gi LANG-variablen ett innhold
313 som fungerer for alle programmer.</p>
314
315 <p>Språkkodene er de offisielle kodene fra ISO 639, og bruken av dem i
316 forbindelse med POSIX localer er standardisert i RFC 3066 og ISO
317 15897. Denne anbefalingen er i tråd med de angitte standardene.</p>
318
319 <p>Følgende koder er eller har vært i bruk som locale-verdier for
320 "norske" språk. Disse bør unngås, og erstattes når de oppdages:</p>
321
322 <p><table>
323 <tr><td>norwegian</td><td>-> nb_NO</td></tr>
324 <tr><td>bokmål </td><td>-> nb_NO</td></tr>
325 <tr><td>bokmal </td><td>-> nb_NO</td></tr>
326 <tr><td>nynorsk </td><td>-> nn_NO</td></tr>
327 <tr><td>no </td><td>-> nb_NO</td></tr>
328 <tr><td>no_NO </td><td>-> nb_NO</td></tr>
329 <tr><td>no_NY </td><td>-> nn_NO</td></tr>
330 <tr><td>sme_NO </td><td>-> se_NO</td></tr>
331 </table></p>
332
333 <p>Merk at når det gjelder de samiske språkene, at se_NO i praksis
334 henviser til nordsamisk i Norge, mens f.eks. smj_NO henviser til
335 lulesamisk. Dette notatet er dog ikke ment å gi råd rundt samiske
336 språkkoder, der gjør
337 <a href="http://www.divvun.no/">Divvun-prosjektet</a> en bedre
338 jobb.</p>
339
340 <p><strong>Referanser:</strong></p>
341
342 <ul>
343
344 <li><a href="http://www.rfc-base.org/rfc-3066.html">RFC 3066 - Tags
345 for the Identification of Languages</a> (Erstatter RFC 1766)</li>
346
347 <li><a href="http://www.loc.gov/standards/iso639-2/langcodes.html">ISO
348 639</a> - Codes for the Representation of Names of Languages</li>
349
350 <li><a href="http://std.dkuug.dk/jtc1/sc22/wg20/docs/n897-14652w25.pdf">ISO
351 DTR 14652</a> - locale-standard Specification method for cultural
352 conventions</li>
353
354 <li><a href="http://std.dkuug.dk/jtc1/sc22/wg20/docs/n610.pdf">ISO
355 15897: Registration procedures for cultural elements (cultural
356 registry)</a>,
357 <a href="http://std.dkuug.dk/jtc1/sc22/wg20/docs/n849-15897wd6.pdf">(nytt
358 draft)</a></li>
359
360 <li><a href="http://std.dkuug.dk/jtc1/sc22/wg20/">ISO/IEC
361 JTC1/SC22/WG20</a> - Gruppen for i18n-standardisering i ISO</li>
362
363 <ul>
364
365 </div>
366 <div class="tags">
367
368
369 Tags: <a href="http://www.hungry.com/~pere/blog/tags/norsk">norsk</a>.
370
371
372 </div>
373 </div>
374 <div class="padding"></div>
375
376 <div class="entry">
377 <div class="title">
378 <a href="http://www.hungry.com/~pere/blog/S3QL__a_locally_mounted_cloud_file_system___nice_free_software.html">S3QL, a locally mounted cloud file system - nice free software</a>
379 </div>
380 <div class="date">
381 9th April 2014
382 </div>
383 <div class="body">
384 <p>For a while now, I have been looking for a sensible offsite backup
385 solution for use at home. My requirements are simple, it must be
386 cheap and locally encrypted (in other words, I keep the encryption
387 keys, the storage provider do not have access to my private files).
388 One idea me and my friends had many years ago, before the cloud
389 storage providers showed up, was to use Google mail as storage,
390 writing a Linux block device storing blocks as emails in the mail
391 service provided by Google, and thus get heaps of free space. On top
392 of this one can add encryption, RAID and volume management to have
393 lots of (fairly slow, I admit that) cheap and encrypted storage. But
394 I never found time to implement such system. But the last few weeks I
395 have looked at a system called
396 <a href="https://bitbucket.org/nikratio/s3ql/">S3QL</a>, a locally
397 mounted network backed file system with the features I need.</p>
398
399 <p>S3QL is a fuse file system with a local cache and cloud storage,
400 handling several different storage providers, any with Amazon S3,
401 Google Drive or OpenStack API. There are heaps of such storage
402 providers. S3QL can also use a local directory as storage, which
403 combined with sshfs allow for file storage on any ssh server. S3QL
404 include support for encryption, compression, de-duplication, snapshots
405 and immutable file systems, allowing me to mount the remote storage as
406 a local mount point, look at and use the files as if they were local,
407 while the content is stored in the cloud as well. This allow me to
408 have a backup that should survive fire. The file system can not be
409 shared between several machines at the same time, as only one can
410 mount it at the time, but any machine with the encryption key and
411 access to the storage service can mount it if it is unmounted.</p>
412
413 <p>It is simple to use. I'm using it on Debian Wheezy, where the
414 package is included already. So to get started, run <tt>apt-get
415 install s3ql</tt>. Next, pick a storage provider. I ended up picking
416 Greenqloud, after reading their nice recipe on
417 <a href="https://greenqloud.zendesk.com/entries/44611757-How-To-Use-S3QL-to-mount-a-StorageQloud-bucket-on-Debian-Wheezy">how
418 to use S3QL with their Amazon S3 service</a>, because I trust the laws
419 in Iceland more than those in USA when it come to keeping my personal
420 data safe and private, and thus would rather spend money on a company
421 in Iceland. Another nice recipe is available from the article
422 <a href="http://www.admin-magazine.com/HPC/Articles/HPC-Cloud-Storage">S3QL
423 Filesystem for HPC Storage</a> by Jeff Layton in the HPC section of
424 Admin magazine. When the provider is picked, figure out how to get
425 the API key needed to connect to the storage API. With Greencloud,
426 the key did not show up until I had added payment details to my
427 account.</p>
428
429 <p>Armed with the API access details, it is time to create the file
430 system. First, create a new bucket in the cloud. This bucket is the
431 file system storage area. I picked a bucket name reflecting the
432 machine that was going to store data there, but any name will do.
433 I'll refer to it as <tt>bucket-name</tt> below. In addition, one need
434 the API login and password, and a locally created password. Store it
435 all in ~root/.s3ql/authinfo2 like this:
436
437 <p><blockquote><pre>
438 [s3c]
439 storage-url: s3c://s.greenqloud.com:443/bucket-name
440 backend-login: API-login
441 backend-password: API-password
442 fs-passphrase: local-password
443 </pre></blockquote></p>
444
445 <p>I create my local passphrase using <tt>pwget 50</tt> or similar,
446 but any sensible way to create a fairly random password should do it.
447 Armed with these details, it is now time to run mkfs, entering the API
448 details and password to create it:</p>
449
450 <p><blockquote><pre>
451 # mkdir -m 700 /var/lib/s3ql-cache
452 # mkfs.s3ql --cachedir /var/lib/s3ql-cache --authfile /root/.s3ql/authinfo2 \
453 --ssl s3c://s.greenqloud.com:443/bucket-name
454 Enter backend login:
455 Enter backend password:
456 Before using S3QL, make sure to read the user's guide, especially
457 the 'Important Rules to Avoid Loosing Data' section.
458 Enter encryption password:
459 Confirm encryption password:
460 Generating random encryption key...
461 Creating metadata tables...
462 Dumping metadata...
463 ..objects..
464 ..blocks..
465 ..inodes..
466 ..inode_blocks..
467 ..symlink_targets..
468 ..names..
469 ..contents..
470 ..ext_attributes..
471 Compressing and uploading metadata...
472 Wrote 0.00 MB of compressed metadata.
473 # </pre></blockquote></p>
474
475 <p>The next step is mounting the file system to make the storage available.
476
477 <p><blockquote><pre>
478 # mount.s3ql --cachedir /var/lib/s3ql-cache --authfile /root/.s3ql/authinfo2 \
479 --ssl --allow-root s3c://s.greenqloud.com:443/bucket-name /s3ql
480 Using 4 upload threads.
481 Downloading and decompressing metadata...
482 Reading metadata...
483 ..objects..
484 ..blocks..
485 ..inodes..
486 ..inode_blocks..
487 ..symlink_targets..
488 ..names..
489 ..contents..
490 ..ext_attributes..
491 Mounting filesystem...
492 # df -h /s3ql
493 Filesystem Size Used Avail Use% Mounted on
494 s3c://s.greenqloud.com:443/bucket-name 1.0T 0 1.0T 0% /s3ql
495 #
496 </pre></blockquote></p>
497
498 <p>The file system is now ready for use. I use rsync to store my
499 backups in it, and as the metadata used by rsync is downloaded at
500 mount time, no network traffic (and storage cost) is triggered by
501 running rsync. To unmount, one should not use the normal umount
502 command, as this will not flush the cache to the cloud storage, but
503 instead running the umount.s3ql command like this:
504
505 <p><blockquote><pre>
506 # umount.s3ql /s3ql
507 #
508 </pre></blockquote></p>
509
510 <p>There is a fsck command available to check the file system and
511 correct any problems detected. This can be used if the local server
512 crashes while the file system is mounted, to reset the "already
513 mounted" flag. This is what it look like when processing a working
514 file system:</p>
515
516 <p><blockquote><pre>
517 # fsck.s3ql --force --ssl s3c://s.greenqloud.com:443/bucket-name
518 Using cached metadata.
519 File system seems clean, checking anyway.
520 Checking DB integrity...
521 Creating temporary extra indices...
522 Checking lost+found...
523 Checking cached objects...
524 Checking names (refcounts)...
525 Checking contents (names)...
526 Checking contents (inodes)...
527 Checking contents (parent inodes)...
528 Checking objects (reference counts)...
529 Checking objects (backend)...
530 ..processed 5000 objects so far..
531 ..processed 10000 objects so far..
532 ..processed 15000 objects so far..
533 Checking objects (sizes)...
534 Checking blocks (referenced objects)...
535 Checking blocks (refcounts)...
536 Checking inode-block mapping (blocks)...
537 Checking inode-block mapping (inodes)...
538 Checking inodes (refcounts)...
539 Checking inodes (sizes)...
540 Checking extended attributes (names)...
541 Checking extended attributes (inodes)...
542 Checking symlinks (inodes)...
543 Checking directory reachability...
544 Checking unix conventions...
545 Checking referential integrity...
546 Dropping temporary indices...
547 Backing up old metadata...
548 Dumping metadata...
549 ..objects..
550 ..blocks..
551 ..inodes..
552 ..inode_blocks..
553 ..symlink_targets..
554 ..names..
555 ..contents..
556 ..ext_attributes..
557 Compressing and uploading metadata...
558 Wrote 0.89 MB of compressed metadata.
559 #
560 </pre></blockquote></p>
561
562 <p>Thanks to the cache, working on files that fit in the cache is very
563 quick, about the same speed as local file access. Uploading large
564 amount of data is to me limited by the bandwidth out of and into my
565 house. Uploading 685 MiB with a 100 MiB cache gave me 305 kiB/s,
566 which is very close to my upload speed, and downloading the same
567 Debian installation ISO gave me 610 kiB/s, close to my download speed.
568 Both were measured using <tt>dd</tt>. So for me, the bottleneck is my
569 network, not the file system code. I do not know what a good cache
570 size would be, but suspect that the cache should e larger than your
571 working set.</p>
572
573 <p>I mentioned that only one machine can mount the file system at the
574 time. If another machine try, it is told that the file system is
575 busy:</p>
576
577 <p><blockquote><pre>
578 # mount.s3ql --cachedir /var/lib/s3ql-cache --authfile /root/.s3ql/authinfo2 \
579 --ssl --allow-root s3c://s.greenqloud.com:443/bucket-name /s3ql
580 Using 8 upload threads.
581 Backend reports that fs is still mounted elsewhere, aborting.
582 #
583 </pre></blockquote></p>
584
585 <p>The file content is uploaded when the cache is full, while the
586 metadata is uploaded once every 24 hour by default. To ensure the
587 file system content is flushed to the cloud, one can either umount the
588 file system, or ask S3QL to flush the cache and metadata using
589 s3qlctrl:
590
591 <p><blockquote><pre>
592 # s3qlctrl upload-meta /s3ql
593 # s3qlctrl flushcache /s3ql
594 #
595 </pre></blockquote></p>
596
597 <p>If you are curious about how much space your data uses in the
598 cloud, and how much compression and deduplication cut down on the
599 storage usage, you can use s3qlstat on the mounted file system to get
600 a report:</p>
601
602 <p><blockquote><pre>
603 # s3qlstat /s3ql
604 Directory entries: 9141
605 Inodes: 9143
606 Data blocks: 8851
607 Total data size: 22049.38 MB
608 After de-duplication: 21955.46 MB (99.57% of total)
609 After compression: 21877.28 MB (99.22% of total, 99.64% of de-duplicated)
610 Database size: 2.39 MB (uncompressed)
611 (some values do not take into account not-yet-uploaded dirty blocks in cache)
612 #
613 </pre></blockquote></p>
614
615 <p>I mentioned earlier that there are several possible suppliers of
616 storage. I did not try to locate them all, but am aware of at least
617 <a href="https://www.greenqloud.com/">Greenqloud</a>,
618 <a href="http://drive.google.com/">Google Drive</a>,
619 <a href="http://aws.amazon.com/s3/">Amazon S3 web serivces</a>,
620 <a href="http://www.rackspace.com/">Rackspace</a> and
621 <a href="http://crowncloud.net/">Crowncloud</A>. The latter even
622 accept payment in Bitcoin. Pick one that suit your need. Some of
623 them provide several GiB of free storage, but the prize models are
624 quite different and you will have to figure out what suits you
625 best.</p>
626
627 <p>While researching this blog post, I had a look at research papers
628 and posters discussing the S3QL file system. There are several, which
629 told me that the file system is getting a critical check by the
630 science community and increased my confidence in using it. One nice
631 poster is titled
632 "<a href="http://www.lanl.gov/orgs/adtsc/publications/science_highlights_2013/docs/pg68_69.pdf">An
633 Innovative Parallel Cloud Storage System using OpenStack’s SwiftObject
634 Store and Transformative Parallel I/O Approach</a>" by Hsing-Bung
635 Chen, Benjamin McClelland, David Sherrill, Alfred Torrez, Parks Fields
636 and Pamela Smith. Please have a look.</p>
637
638 <p>Given my problems with different file systems earlier, I decided to
639 check out the mounted S3QL file system to see if it would be usable as
640 a home directory (in other word, that it provided POSIX semantics when
641 it come to locking and umask handling etc). Running
642 <a href="http://www.hungry.com/~pere/blog/Testing_if_a_file_system_can_be_used_for_home_directories___.html">my
643 test code to check file system semantics</a>, I was happy to discover that
644 no error was found. So the file system can be used for home
645 directories, if one chooses to do so.</p>
646
647 <p>If you do not want a locally file system, and want something that
648 work without the Linux fuse file system, I would like to mention the
649 <a href="http://www.tarsnap.com/">Tarsnap service</a>, which also
650 provide locally encrypted backup using a command line client. It have
651 a nicer access control system, where one can split out read and write
652 access, allowing some systems to write to the backup and others to
653 only read from it.</p>
654
655 <p>As usual, if you use Bitcoin and want to show your support of my
656 activities, please send Bitcoin donations to my address
657 <b><a href="bitcoin:15oWEoG9dUPovwmUL9KWAnYRtNJEkP1u1b">15oWEoG9dUPovwmUL9KWAnYRtNJEkP1u1b</a></b>.</p>
658
659 </div>
660 <div class="tags">
661
662
663 Tags: <a href="http://www.hungry.com/~pere/blog/tags/debian">debian</a>, <a href="http://www.hungry.com/~pere/blog/tags/english">english</a>, <a href="http://www.hungry.com/~pere/blog/tags/nice free software">nice free software</a>, <a href="http://www.hungry.com/~pere/blog/tags/personvern">personvern</a>, <a href="http://www.hungry.com/~pere/blog/tags/sikkerhet">sikkerhet</a>.
664
665
666 </div>
667 </div>
668 <div class="padding"></div>
669
670 <div class="entry">
671 <div class="title">
672 <a href="http://www.hungry.com/~pere/blog/EU_domstolen_bekreftet_i_dag_at_datalagringsdirektivet_er_ulovlig.html">EU-domstolen bekreftet i dag at datalagringsdirektivet er ulovlig</a>
673 </div>
674 <div class="date">
675 8th April 2014
676 </div>
677 <div class="body">
678 <p>I dag kom endelig avgjørelsen fra EU-domstolen om
679 datalagringsdirektivet, som ikke overraskende ble dømt ulovlig og i
680 strid med borgernes grunnleggende rettigheter. Hvis du lurer på hva
681 datalagringsdirektivet er for noe, så er det
682 <a href="http://tv.nrk.no/program/koid75005313/tema-dine-digitale-spor-datalagringsdirektivet">en
683 flott dokumentar tilgjengelig hos NRK</a> som jeg tidligere
684 <a href="http://www.hungry.com/~pere/blog/Dokumentaren_om_Datalagringsdirektivet_sendes_endelig_p__NRK.html">har
685 anbefalt</a> alle å se.</p>
686
687 <p>Her er et liten knippe nyhetsoppslag om saken, og jeg regner med at
688 det kommer flere ut over dagen. Flere kan finnes
689 <a href="http://www.mylder.no/?drill=datalagringsdirektivet&intern=1">via
690 mylder</a>.</p>
691
692 <p><ul>
693
694 <li><a href="http://e24.no/digital/eu-domstolen-datalagringsdirektivet-er-ugyldig/22879592">EU-domstolen:
695 Datalagringsdirektivet er ugyldig</a> - e24.no 2014-04-08
696
697 <li><a href="http://www.aftenposten.no/nyheter/iriks/EU-domstolen-Datalagringsdirektivet-er-ulovlig-7529032.html">EU-domstolen:
698 Datalagringsdirektivet er ulovlig</a> - aftenposten.no 2014-04-08
699
700 <li><a href="http://www.aftenposten.no/nyheter/iriks/politikk/Krever-DLD-stopp-i-Norge-7530086.html">Krever
701 DLD-stopp i Norge</a> - aftenposten.no 2014-04-08
702
703 <li><a href="http://www.p4.no/story.aspx?id=566431">Apenes: - En
704 gledens dag</a> - p4.no 2014-04-08
705
706 <li><a href="http://www.nrk.no/norge/_-datalagringsdirektivet-er-ugyldig-1.11655929">EU-domstolen:
707 – Datalagringsdirektivet er ugyldig</a> - nrk.no 2014-04-08</li>
708
709 <li><a href="http://www.vg.no/nyheter/utenriks/data-og-nett/eu-domstolen-datalagringsdirektivet-er-ugyldig/a/10130280/">EU-domstolen:
710 Datalagringsdirektivet er ugyldig</a> - vg.no 2014-04-08</li>
711
712 <li><a href="http://www.dagbladet.no/2014/04/08/nyheter/innenriks/datalagringsdirektivet/personvern/32711646/">-
713 Vi bør skrote hele datalagringsdirektivet</a> - dagbladet.no
714 2014-04-08</li>
715
716 <li><a href="http://www.digi.no/928137/eu-domstolen-dld-er-ugyldig">EU-domstolen:
717 DLD er ugyldig</a> - digi.no 2014-04-08</li>
718
719 <li><a href="http://www.irishtimes.com/business/sectors/technology/european-court-declares-data-retention-directive-invalid-1.1754150">European
720 court declares data retention directive invalid</a> - irishtimes.com
721 2014-04-08</li>
722
723 <li><a href="http://www.reuters.com/article/2014/04/08/us-eu-data-ruling-idUSBREA370F020140408?feedType=RSS">EU
724 court rules against requirement to keep data of telecom users</a> -
725 reuters.com 2014-04-08</li>
726
727 </ul>
728 </p>
729
730 <p>Jeg synes det er veldig fint at nok en stemme slår fast at
731 totalitær overvåkning av befolkningen er uakseptabelt, men det er
732 fortsatt like viktig å beskytte privatsfæren som før, da de
733 teknologiske mulighetene fortsatt finnes og utnyttes, og jeg tror
734 innsats i prosjekter som
735 <a href="https://wiki.debian.org/FreedomBox">Freedombox</a> og
736 <a href="http://www.dugnadsnett.no/">Dugnadsnett</a> er viktigere enn
737 noen gang.</p>
738
739 <p><strong>Update 2014-04-08 12:10</strong>: Kronerullingen for å
740 stoppe datalagringsdirektivet i Norge gjøres hos foreningen
741 <a href="http://www.digitaltpersonvern.no/">Digitalt Personvern</a>,
742 som har samlet inn 843 215,- så langt men trenger nok mye mer hvis
743
744 ikke Høyre og Arbeiderpartiet bytter mening i saken. Det var
745 <a href="http://www.holderdeord.no/parliament-issues/48650">kun
746 partinene Høyre og Arbeiderpartiet</a> som stemte for
747 Datalagringsdirektivet, og en av dem må bytte mening for at det skal
748 bli flertall mot i Stortinget. Se mer om saken
749 <a href="http://www.holderdeord.no/issues/69-innfore-datalagringsdirektivet">Holder
750 de ord</a>.</p>
751
752 </div>
753 <div class="tags">
754
755
756 Tags: <a href="http://www.hungry.com/~pere/blog/tags/dld">dld</a>, <a href="http://www.hungry.com/~pere/blog/tags/norsk">norsk</a>, <a href="http://www.hungry.com/~pere/blog/tags/personvern">personvern</a>, <a href="http://www.hungry.com/~pere/blog/tags/sikkerhet">sikkerhet</a>, <a href="http://www.hungry.com/~pere/blog/tags/surveillance">surveillance</a>.
757
758
759 </div>
760 </div>
761 <div class="padding"></div>
762
763 <div class="entry">
764 <div class="title">
765 <a href="http://www.hungry.com/~pere/blog/ReactOS_Windows_clone___nice_free_software.html">ReactOS Windows clone - nice free software</a>
766 </div>
767 <div class="date">
768 1st April 2014
769 </div>
770 <div class="body">
771 <p>Microsoft have announced that Windows XP reaches its end of life
772 2014-04-08, in 7 days. But there are heaps of machines still running
773 Windows XP, and depending on Windows XP to run their applications, and
774 upgrading will be expensive, both when it comes to money and when it
775 comes to the amount of effort needed to migrate from Windows XP to a
776 new operating system. Some obvious options (buy new a Windows
777 machine, buy a MacOSX machine, install Linux on the existing machine)
778 are already well known and covered elsewhere. Most of them involve
779 leaving the user applications installed on Windows XP behind and
780 trying out replacements or updated versions. In this blog post I want
781 to mention one strange bird that allow people to keep the hardware and
782 the existing Windows XP applications and run them on a free software
783 operating system that is Windows XP compatible.</p>
784
785 <p><a href="http://www.reactos.org/">ReactOS</a> is a free software
786 operating system (GNU GPL licensed) working on providing a operating
787 system that is binary compatible with Windows, able to run windows
788 programs directly and to use Windows drivers for hardware directly.
789 The project goal is for Windows user to keep their existing machines,
790 drivers and software, and gain the advantages from user a operating
791 system without usage limitations caused by non-free licensing. It is
792 a Windows clone running directly on the hardware, so quite different
793 from the approach taken by <a href="http://www.winehq.org/">the Wine
794 project</a>, which make it possible to run Windows binaries on
795 Linux.</p>
796
797 <p>The ReactOS project share code with the Wine project, so most
798 shared libraries available on Windows are already implemented already.
799 There is also a software manager like the one we are used to on Linux,
800 allowing the user to install free software applications with a simple
801 click directly from the Internet. Check out the
802 <a href="http://www.reactos.org/screenshots">screen shots on the
803 project web site</a> for an idea what it look like (it looks just like
804 Windows before metro).</p>
805
806 <p>I do not use ReactOS myself, preferring Linux and Unix like
807 operating systems. I've tested it, and it work fine in a virt-manager
808 virtual machine. The browser, minesweeper, notepad etc is working
809 fine as far as I can tell. Unfortunately, my main test application
810 is the software included on a CD with the Lego Mindstorms NXT, which
811 seem to install just fine from CD but fail to leave any binaries on
812 the disk after the installation. So no luck with that test software.
813 No idea why, but hope someone else figure out and fix the problem.
814 I've tried the ReactOS Live ISO on a physical machine, and it seemed
815 to work just fine. If you like Windows and want to keep running your
816 old Windows binaries, check it out by
817 <a href="http://www.reactos.org/download">downloading</a> the
818 installation CD, the live CD or the preinstalled virtual machine
819 image.</p>
820
821 </div>
822 <div class="tags">
823
824
825 Tags: <a href="http://www.hungry.com/~pere/blog/tags/english">english</a>, <a href="http://www.hungry.com/~pere/blog/tags/nice free software">nice free software</a>, <a href="http://www.hungry.com/~pere/blog/tags/reactos">reactos</a>.
826
827
828 </div>
829 </div>
830 <div class="padding"></div>
831
832 <p style="text-align: right;"><a href="04.rss"><img src="http://www.hungry.com/~pere/blog/xml.gif" alt="RSS Feed" width="36" height="14" /></a></p>
833 <div id="sidebar">
834
835
836
837 <h2>Archive</h2>
838 <ul>
839
840 <li>2025
841 <ul>
842
843 <li><a href="http://www.hungry.com/~pere/blog/archive/2025/01/">January (4)</a></li>
844
845 <li><a href="http://www.hungry.com/~pere/blog/archive/2025/02/">February (3)</a></li>
846
847 </ul></li>
848
849 <li>2024
850 <ul>
851
852 <li><a href="http://www.hungry.com/~pere/blog/archive/2024/01/">January (1)</a></li>
853
854 <li><a href="http://www.hungry.com/~pere/blog/archive/2024/02/">February (1)</a></li>
855
856 <li><a href="http://www.hungry.com/~pere/blog/archive/2024/03/">March (2)</a></li>
857
858 <li><a href="http://www.hungry.com/~pere/blog/archive/2024/04/">April (3)</a></li>
859
860 <li><a href="http://www.hungry.com/~pere/blog/archive/2024/05/">May (1)</a></li>
861
862 <li><a href="http://www.hungry.com/~pere/blog/archive/2024/06/">June (1)</a></li>
863
864 <li><a href="http://www.hungry.com/~pere/blog/archive/2024/07/">July (2)</a></li>
865
866 <li><a href="http://www.hungry.com/~pere/blog/archive/2024/12/">December (1)</a></li>
867
868 </ul></li>
869
870 <li>2023
871 <ul>
872
873 <li><a href="http://www.hungry.com/~pere/blog/archive/2023/01/">January (3)</a></li>
874
875 <li><a href="http://www.hungry.com/~pere/blog/archive/2023/02/">February (1)</a></li>
876
877 <li><a href="http://www.hungry.com/~pere/blog/archive/2023/04/">April (2)</a></li>
878
879 <li><a href="http://www.hungry.com/~pere/blog/archive/2023/05/">May (3)</a></li>
880
881 <li><a href="http://www.hungry.com/~pere/blog/archive/2023/06/">June (1)</a></li>
882
883 <li><a href="http://www.hungry.com/~pere/blog/archive/2023/08/">August (1)</a></li>
884
885 <li><a href="http://www.hungry.com/~pere/blog/archive/2023/09/">September (1)</a></li>
886
887 <li><a href="http://www.hungry.com/~pere/blog/archive/2023/10/">October (1)</a></li>
888
889 <li><a href="http://www.hungry.com/~pere/blog/archive/2023/11/">November (4)</a></li>
890
891 <li><a href="http://www.hungry.com/~pere/blog/archive/2023/12/">December (1)</a></li>
892
893 </ul></li>
894
895 <li>2022
896 <ul>
897
898 <li><a href="http://www.hungry.com/~pere/blog/archive/2022/02/">February (1)</a></li>
899
900 <li><a href="http://www.hungry.com/~pere/blog/archive/2022/03/">March (3)</a></li>
901
902 <li><a href="http://www.hungry.com/~pere/blog/archive/2022/04/">April (2)</a></li>
903
904 <li><a href="http://www.hungry.com/~pere/blog/archive/2022/06/">June (2)</a></li>
905
906 <li><a href="http://www.hungry.com/~pere/blog/archive/2022/07/">July (1)</a></li>
907
908 <li><a href="http://www.hungry.com/~pere/blog/archive/2022/09/">September (1)</a></li>
909
910 <li><a href="http://www.hungry.com/~pere/blog/archive/2022/10/">October (1)</a></li>
911
912 <li><a href="http://www.hungry.com/~pere/blog/archive/2022/12/">December (1)</a></li>
913
914 </ul></li>
915
916 <li>2021
917 <ul>
918
919 <li><a href="http://www.hungry.com/~pere/blog/archive/2021/01/">January (2)</a></li>
920
921 <li><a href="http://www.hungry.com/~pere/blog/archive/2021/02/">February (1)</a></li>
922
923 <li><a href="http://www.hungry.com/~pere/blog/archive/2021/05/">May (1)</a></li>
924
925 <li><a href="http://www.hungry.com/~pere/blog/archive/2021/06/">June (1)</a></li>
926
927 <li><a href="http://www.hungry.com/~pere/blog/archive/2021/07/">July (3)</a></li>
928
929 <li><a href="http://www.hungry.com/~pere/blog/archive/2021/08/">August (1)</a></li>
930
931 <li><a href="http://www.hungry.com/~pere/blog/archive/2021/09/">September (1)</a></li>
932
933 <li><a href="http://www.hungry.com/~pere/blog/archive/2021/10/">October (1)</a></li>
934
935 <li><a href="http://www.hungry.com/~pere/blog/archive/2021/12/">December (1)</a></li>
936
937 </ul></li>
938
939 <li>2020
940 <ul>
941
942 <li><a href="http://www.hungry.com/~pere/blog/archive/2020/02/">February (2)</a></li>
943
944 <li><a href="http://www.hungry.com/~pere/blog/archive/2020/03/">March (2)</a></li>
945
946 <li><a href="http://www.hungry.com/~pere/blog/archive/2020/04/">April (2)</a></li>
947
948 <li><a href="http://www.hungry.com/~pere/blog/archive/2020/05/">May (3)</a></li>
949
950 <li><a href="http://www.hungry.com/~pere/blog/archive/2020/06/">June (2)</a></li>
951
952 <li><a href="http://www.hungry.com/~pere/blog/archive/2020/07/">July (1)</a></li>
953
954 <li><a href="http://www.hungry.com/~pere/blog/archive/2020/09/">September (1)</a></li>
955
956 <li><a href="http://www.hungry.com/~pere/blog/archive/2020/10/">October (1)</a></li>
957
958 <li><a href="http://www.hungry.com/~pere/blog/archive/2020/11/">November (1)</a></li>
959
960 </ul></li>
961
962 <li>2019
963 <ul>
964
965 <li><a href="http://www.hungry.com/~pere/blog/archive/2019/01/">January (4)</a></li>
966
967 <li><a href="http://www.hungry.com/~pere/blog/archive/2019/02/">February (3)</a></li>
968
969 <li><a href="http://www.hungry.com/~pere/blog/archive/2019/03/">March (3)</a></li>
970
971 <li><a href="http://www.hungry.com/~pere/blog/archive/2019/05/">May (2)</a></li>
972
973 <li><a href="http://www.hungry.com/~pere/blog/archive/2019/06/">June (5)</a></li>
974
975 <li><a href="http://www.hungry.com/~pere/blog/archive/2019/07/">July (2)</a></li>
976
977 <li><a href="http://www.hungry.com/~pere/blog/archive/2019/08/">August (1)</a></li>
978
979 <li><a href="http://www.hungry.com/~pere/blog/archive/2019/09/">September (1)</a></li>
980
981 <li><a href="http://www.hungry.com/~pere/blog/archive/2019/11/">November (1)</a></li>
982
983 <li><a href="http://www.hungry.com/~pere/blog/archive/2019/12/">December (4)</a></li>
984
985 </ul></li>
986
987 <li>2018
988 <ul>
989
990 <li><a href="http://www.hungry.com/~pere/blog/archive/2018/01/">January (1)</a></li>
991
992 <li><a href="http://www.hungry.com/~pere/blog/archive/2018/02/">February (5)</a></li>
993
994 <li><a href="http://www.hungry.com/~pere/blog/archive/2018/03/">March (5)</a></li>
995
996 <li><a href="http://www.hungry.com/~pere/blog/archive/2018/04/">April (3)</a></li>
997
998 <li><a href="http://www.hungry.com/~pere/blog/archive/2018/06/">June (2)</a></li>
999
1000 <li><a href="http://www.hungry.com/~pere/blog/archive/2018/07/">July (5)</a></li>
1001
1002 <li><a href="http://www.hungry.com/~pere/blog/archive/2018/08/">August (3)</a></li>
1003
1004 <li><a href="http://www.hungry.com/~pere/blog/archive/2018/09/">September (3)</a></li>
1005
1006 <li><a href="http://www.hungry.com/~pere/blog/archive/2018/10/">October (5)</a></li>
1007
1008 <li><a href="http://www.hungry.com/~pere/blog/archive/2018/11/">November (2)</a></li>
1009
1010 <li><a href="http://www.hungry.com/~pere/blog/archive/2018/12/">December (4)</a></li>
1011
1012 </ul></li>
1013
1014 <li>2017
1015 <ul>
1016
1017 <li><a href="http://www.hungry.com/~pere/blog/archive/2017/01/">January (4)</a></li>
1018
1019 <li><a href="http://www.hungry.com/~pere/blog/archive/2017/02/">February (3)</a></li>
1020
1021 <li><a href="http://www.hungry.com/~pere/blog/archive/2017/03/">March (5)</a></li>
1022
1023 <li><a href="http://www.hungry.com/~pere/blog/archive/2017/04/">April (2)</a></li>
1024
1025 <li><a href="http://www.hungry.com/~pere/blog/archive/2017/06/">June (5)</a></li>
1026
1027 <li><a href="http://www.hungry.com/~pere/blog/archive/2017/07/">July (1)</a></li>
1028
1029 <li><a href="http://www.hungry.com/~pere/blog/archive/2017/08/">August (1)</a></li>
1030
1031 <li><a href="http://www.hungry.com/~pere/blog/archive/2017/09/">September (3)</a></li>
1032
1033 <li><a href="http://www.hungry.com/~pere/blog/archive/2017/10/">October (5)</a></li>
1034
1035 <li><a href="http://www.hungry.com/~pere/blog/archive/2017/11/">November (3)</a></li>
1036
1037 <li><a href="http://www.hungry.com/~pere/blog/archive/2017/12/">December (4)</a></li>
1038
1039 </ul></li>
1040
1041 <li>2016
1042 <ul>
1043
1044 <li><a href="http://www.hungry.com/~pere/blog/archive/2016/01/">January (3)</a></li>
1045
1046 <li><a href="http://www.hungry.com/~pere/blog/archive/2016/02/">February (2)</a></li>
1047
1048 <li><a href="http://www.hungry.com/~pere/blog/archive/2016/03/">March (3)</a></li>
1049
1050 <li><a href="http://www.hungry.com/~pere/blog/archive/2016/04/">April (8)</a></li>
1051
1052 <li><a href="http://www.hungry.com/~pere/blog/archive/2016/05/">May (8)</a></li>
1053
1054 <li><a href="http://www.hungry.com/~pere/blog/archive/2016/06/">June (2)</a></li>
1055
1056 <li><a href="http://www.hungry.com/~pere/blog/archive/2016/07/">July (2)</a></li>
1057
1058 <li><a href="http://www.hungry.com/~pere/blog/archive/2016/08/">August (5)</a></li>
1059
1060 <li><a href="http://www.hungry.com/~pere/blog/archive/2016/09/">September (2)</a></li>
1061
1062 <li><a href="http://www.hungry.com/~pere/blog/archive/2016/10/">October (3)</a></li>
1063
1064 <li><a href="http://www.hungry.com/~pere/blog/archive/2016/11/">November (8)</a></li>
1065
1066 <li><a href="http://www.hungry.com/~pere/blog/archive/2016/12/">December (5)</a></li>
1067
1068 </ul></li>
1069
1070 <li>2015
1071 <ul>
1072
1073 <li><a href="http://www.hungry.com/~pere/blog/archive/2015/01/">January (7)</a></li>
1074
1075 <li><a href="http://www.hungry.com/~pere/blog/archive/2015/02/">February (6)</a></li>
1076
1077 <li><a href="http://www.hungry.com/~pere/blog/archive/2015/03/">March (1)</a></li>
1078
1079 <li><a href="http://www.hungry.com/~pere/blog/archive/2015/04/">April (4)</a></li>
1080
1081 <li><a href="http://www.hungry.com/~pere/blog/archive/2015/05/">May (3)</a></li>
1082
1083 <li><a href="http://www.hungry.com/~pere/blog/archive/2015/06/">June (4)</a></li>
1084
1085 <li><a href="http://www.hungry.com/~pere/blog/archive/2015/07/">July (6)</a></li>
1086
1087 <li><a href="http://www.hungry.com/~pere/blog/archive/2015/08/">August (2)</a></li>
1088
1089 <li><a href="http://www.hungry.com/~pere/blog/archive/2015/09/">September (2)</a></li>
1090
1091 <li><a href="http://www.hungry.com/~pere/blog/archive/2015/10/">October (9)</a></li>
1092
1093 <li><a href="http://www.hungry.com/~pere/blog/archive/2015/11/">November (6)</a></li>
1094
1095 <li><a href="http://www.hungry.com/~pere/blog/archive/2015/12/">December (3)</a></li>
1096
1097 </ul></li>
1098
1099 <li>2014
1100 <ul>
1101
1102 <li><a href="http://www.hungry.com/~pere/blog/archive/2014/01/">January (2)</a></li>
1103
1104 <li><a href="http://www.hungry.com/~pere/blog/archive/2014/02/">February (3)</a></li>
1105
1106 <li><a href="http://www.hungry.com/~pere/blog/archive/2014/03/">March (8)</a></li>
1107
1108 <li><a href="http://www.hungry.com/~pere/blog/archive/2014/04/">April (7)</a></li>
1109
1110 <li><a href="http://www.hungry.com/~pere/blog/archive/2014/05/">May (1)</a></li>
1111
1112 <li><a href="http://www.hungry.com/~pere/blog/archive/2014/06/">June (2)</a></li>
1113
1114 <li><a href="http://www.hungry.com/~pere/blog/archive/2014/07/">July (2)</a></li>
1115
1116 <li><a href="http://www.hungry.com/~pere/blog/archive/2014/08/">August (2)</a></li>
1117
1118 <li><a href="http://www.hungry.com/~pere/blog/archive/2014/09/">September (5)</a></li>
1119
1120 <li><a href="http://www.hungry.com/~pere/blog/archive/2014/10/">October (6)</a></li>
1121
1122 <li><a href="http://www.hungry.com/~pere/blog/archive/2014/11/">November (3)</a></li>
1123
1124 <li><a href="http://www.hungry.com/~pere/blog/archive/2014/12/">December (5)</a></li>
1125
1126 </ul></li>
1127
1128 <li>2013
1129 <ul>
1130
1131 <li><a href="http://www.hungry.com/~pere/blog/archive/2013/01/">January (11)</a></li>
1132
1133 <li><a href="http://www.hungry.com/~pere/blog/archive/2013/02/">February (9)</a></li>
1134
1135 <li><a href="http://www.hungry.com/~pere/blog/archive/2013/03/">March (9)</a></li>
1136
1137 <li><a href="http://www.hungry.com/~pere/blog/archive/2013/04/">April (6)</a></li>
1138
1139 <li><a href="http://www.hungry.com/~pere/blog/archive/2013/05/">May (9)</a></li>
1140
1141 <li><a href="http://www.hungry.com/~pere/blog/archive/2013/06/">June (10)</a></li>
1142
1143 <li><a href="http://www.hungry.com/~pere/blog/archive/2013/07/">July (7)</a></li>
1144
1145 <li><a href="http://www.hungry.com/~pere/blog/archive/2013/08/">August (3)</a></li>
1146
1147 <li><a href="http://www.hungry.com/~pere/blog/archive/2013/09/">September (5)</a></li>
1148
1149 <li><a href="http://www.hungry.com/~pere/blog/archive/2013/10/">October (7)</a></li>
1150
1151 <li><a href="http://www.hungry.com/~pere/blog/archive/2013/11/">November (9)</a></li>
1152
1153 <li><a href="http://www.hungry.com/~pere/blog/archive/2013/12/">December (3)</a></li>
1154
1155 </ul></li>
1156
1157 <li>2012
1158 <ul>
1159
1160 <li><a href="http://www.hungry.com/~pere/blog/archive/2012/01/">January (7)</a></li>
1161
1162 <li><a href="http://www.hungry.com/~pere/blog/archive/2012/02/">February (10)</a></li>
1163
1164 <li><a href="http://www.hungry.com/~pere/blog/archive/2012/03/">March (17)</a></li>
1165
1166 <li><a href="http://www.hungry.com/~pere/blog/archive/2012/04/">April (12)</a></li>
1167
1168 <li><a href="http://www.hungry.com/~pere/blog/archive/2012/05/">May (12)</a></li>
1169
1170 <li><a href="http://www.hungry.com/~pere/blog/archive/2012/06/">June (20)</a></li>
1171
1172 <li><a href="http://www.hungry.com/~pere/blog/archive/2012/07/">July (17)</a></li>
1173
1174 <li><a href="http://www.hungry.com/~pere/blog/archive/2012/08/">August (6)</a></li>
1175
1176 <li><a href="http://www.hungry.com/~pere/blog/archive/2012/09/">September (9)</a></li>
1177
1178 <li><a href="http://www.hungry.com/~pere/blog/archive/2012/10/">October (17)</a></li>
1179
1180 <li><a href="http://www.hungry.com/~pere/blog/archive/2012/11/">November (10)</a></li>
1181
1182 <li><a href="http://www.hungry.com/~pere/blog/archive/2012/12/">December (7)</a></li>
1183
1184 </ul></li>
1185
1186 <li>2011
1187 <ul>
1188
1189 <li><a href="http://www.hungry.com/~pere/blog/archive/2011/01/">January (16)</a></li>
1190
1191 <li><a href="http://www.hungry.com/~pere/blog/archive/2011/02/">February (6)</a></li>
1192
1193 <li><a href="http://www.hungry.com/~pere/blog/archive/2011/03/">March (6)</a></li>
1194
1195 <li><a href="http://www.hungry.com/~pere/blog/archive/2011/04/">April (7)</a></li>
1196
1197 <li><a href="http://www.hungry.com/~pere/blog/archive/2011/05/">May (3)</a></li>
1198
1199 <li><a href="http://www.hungry.com/~pere/blog/archive/2011/06/">June (2)</a></li>
1200
1201 <li><a href="http://www.hungry.com/~pere/blog/archive/2011/07/">July (7)</a></li>
1202
1203 <li><a href="http://www.hungry.com/~pere/blog/archive/2011/08/">August (6)</a></li>
1204
1205 <li><a href="http://www.hungry.com/~pere/blog/archive/2011/09/">September (4)</a></li>
1206
1207 <li><a href="http://www.hungry.com/~pere/blog/archive/2011/10/">October (2)</a></li>
1208
1209 <li><a href="http://www.hungry.com/~pere/blog/archive/2011/11/">November (3)</a></li>
1210
1211 <li><a href="http://www.hungry.com/~pere/blog/archive/2011/12/">December (1)</a></li>
1212
1213 </ul></li>
1214
1215 <li>2010
1216 <ul>
1217
1218 <li><a href="http://www.hungry.com/~pere/blog/archive/2010/01/">January (2)</a></li>
1219
1220 <li><a href="http://www.hungry.com/~pere/blog/archive/2010/02/">February (1)</a></li>
1221
1222 <li><a href="http://www.hungry.com/~pere/blog/archive/2010/03/">March (3)</a></li>
1223
1224 <li><a href="http://www.hungry.com/~pere/blog/archive/2010/04/">April (3)</a></li>
1225
1226 <li><a href="http://www.hungry.com/~pere/blog/archive/2010/05/">May (9)</a></li>
1227
1228 <li><a href="http://www.hungry.com/~pere/blog/archive/2010/06/">June (14)</a></li>
1229
1230 <li><a href="http://www.hungry.com/~pere/blog/archive/2010/07/">July (12)</a></li>
1231
1232 <li><a href="http://www.hungry.com/~pere/blog/archive/2010/08/">August (13)</a></li>
1233
1234 <li><a href="http://www.hungry.com/~pere/blog/archive/2010/09/">September (7)</a></li>
1235
1236 <li><a href="http://www.hungry.com/~pere/blog/archive/2010/10/">October (9)</a></li>
1237
1238 <li><a href="http://www.hungry.com/~pere/blog/archive/2010/11/">November (13)</a></li>
1239
1240 <li><a href="http://www.hungry.com/~pere/blog/archive/2010/12/">December (12)</a></li>
1241
1242 </ul></li>
1243
1244 <li>2009
1245 <ul>
1246
1247 <li><a href="http://www.hungry.com/~pere/blog/archive/2009/01/">January (8)</a></li>
1248
1249 <li><a href="http://www.hungry.com/~pere/blog/archive/2009/02/">February (8)</a></li>
1250
1251 <li><a href="http://www.hungry.com/~pere/blog/archive/2009/03/">March (12)</a></li>
1252
1253 <li><a href="http://www.hungry.com/~pere/blog/archive/2009/04/">April (10)</a></li>
1254
1255 <li><a href="http://www.hungry.com/~pere/blog/archive/2009/05/">May (9)</a></li>
1256
1257 <li><a href="http://www.hungry.com/~pere/blog/archive/2009/06/">June (3)</a></li>
1258
1259 <li><a href="http://www.hungry.com/~pere/blog/archive/2009/07/">July (4)</a></li>
1260
1261 <li><a href="http://www.hungry.com/~pere/blog/archive/2009/08/">August (3)</a></li>
1262
1263 <li><a href="http://www.hungry.com/~pere/blog/archive/2009/09/">September (1)</a></li>
1264
1265 <li><a href="http://www.hungry.com/~pere/blog/archive/2009/10/">October (2)</a></li>
1266
1267 <li><a href="http://www.hungry.com/~pere/blog/archive/2009/11/">November (3)</a></li>
1268
1269 <li><a href="http://www.hungry.com/~pere/blog/archive/2009/12/">December (3)</a></li>
1270
1271 </ul></li>
1272
1273 <li>2008
1274 <ul>
1275
1276 <li><a href="http://www.hungry.com/~pere/blog/archive/2008/11/">November (5)</a></li>
1277
1278 <li><a href="http://www.hungry.com/~pere/blog/archive/2008/12/">December (7)</a></li>
1279
1280 </ul></li>
1281
1282 </ul>
1283
1284
1285
1286 <h2>Tags</h2>
1287 <ul>
1288
1289 <li><a href="http://www.hungry.com/~pere/blog/tags/3d-printer">3d-printer (19)</a></li>
1290
1291 <li><a href="http://www.hungry.com/~pere/blog/tags/amiga">amiga (1)</a></li>
1292
1293 <li><a href="http://www.hungry.com/~pere/blog/tags/aros">aros (1)</a></li>
1294
1295 <li><a href="http://www.hungry.com/~pere/blog/tags/bankid">bankid (4)</a></li>
1296
1297 <li><a href="http://www.hungry.com/~pere/blog/tags/betalkontant">betalkontant (9)</a></li>
1298
1299 <li><a href="http://www.hungry.com/~pere/blog/tags/bitcoin">bitcoin (13)</a></li>
1300
1301 <li><a href="http://www.hungry.com/~pere/blog/tags/bootsystem">bootsystem (17)</a></li>
1302
1303 <li><a href="http://www.hungry.com/~pere/blog/tags/bsa">bsa (2)</a></li>
1304
1305 <li><a href="http://www.hungry.com/~pere/blog/tags/chrpath">chrpath (3)</a></li>
1306
1307 <li><a href="http://www.hungry.com/~pere/blog/tags/debian">debian (209)</a></li>
1308
1309 <li><a href="http://www.hungry.com/~pere/blog/tags/debian edu">debian edu (159)</a></li>
1310
1311 <li><a href="http://www.hungry.com/~pere/blog/tags/debian-handbook">debian-handbook (9)</a></li>
1312
1313 <li><a href="http://www.hungry.com/~pere/blog/tags/digistan">digistan (11)</a></li>
1314
1315 <li><a href="http://www.hungry.com/~pere/blog/tags/dld">dld (18)</a></li>
1316
1317 <li><a href="http://www.hungry.com/~pere/blog/tags/docbook">docbook (33)</a></li>
1318
1319 <li><a href="http://www.hungry.com/~pere/blog/tags/drivstoffpriser">drivstoffpriser (4)</a></li>
1320
1321 <li><a href="http://www.hungry.com/~pere/blog/tags/english">english (471)</a></li>
1322
1323 <li><a href="http://www.hungry.com/~pere/blog/tags/fiksgatami">fiksgatami (23)</a></li>
1324
1325 <li><a href="http://www.hungry.com/~pere/blog/tags/fildeling">fildeling (14)</a></li>
1326
1327 <li><a href="http://www.hungry.com/~pere/blog/tags/freeculture">freeculture (34)</a></li>
1328
1329 <li><a href="http://www.hungry.com/~pere/blog/tags/freedombox">freedombox (9)</a></li>
1330
1331 <li><a href="http://www.hungry.com/~pere/blog/tags/frikanalen">frikanalen (20)</a></li>
1332
1333 <li><a href="http://www.hungry.com/~pere/blog/tags/h264">h264 (20)</a></li>
1334
1335 <li><a href="http://www.hungry.com/~pere/blog/tags/intervju">intervju (43)</a></li>
1336
1337 <li><a href="http://www.hungry.com/~pere/blog/tags/isenkram">isenkram (21)</a></li>
1338
1339 <li><a href="http://www.hungry.com/~pere/blog/tags/kart">kart (23)</a></li>
1340
1341 <li><a href="http://www.hungry.com/~pere/blog/tags/kodi">kodi (6)</a></li>
1342
1343 <li><a href="http://www.hungry.com/~pere/blog/tags/ldap">ldap (9)</a></li>
1344
1345 <li><a href="http://www.hungry.com/~pere/blog/tags/lego">lego (5)</a></li>
1346
1347 <li><a href="http://www.hungry.com/~pere/blog/tags/lenker">lenker (8)</a></li>
1348
1349 <li><a href="http://www.hungry.com/~pere/blog/tags/linuxcnc">linuxcnc (8)</a></li>
1350
1351 <li><a href="http://www.hungry.com/~pere/blog/tags/lsdvd">lsdvd (3)</a></li>
1352
1353 <li><a href="http://www.hungry.com/~pere/blog/tags/ltsp">ltsp (1)</a></li>
1354
1355 <li><a href="http://www.hungry.com/~pere/blog/tags/madewithcc">madewithcc (3)</a></li>
1356
1357 <li><a href="http://www.hungry.com/~pere/blog/tags/mesh network">mesh network (8)</a></li>
1358
1359 <li><a href="http://www.hungry.com/~pere/blog/tags/multimedia">multimedia (48)</a></li>
1360
1361 <li><a href="http://www.hungry.com/~pere/blog/tags/nice free software">nice free software (15)</a></li>
1362
1363 <li><a href="http://www.hungry.com/~pere/blog/tags/noark5">noark5 (27)</a></li>
1364
1365 <li><a href="http://www.hungry.com/~pere/blog/tags/norsk">norsk (326)</a></li>
1366
1367 <li><a href="http://www.hungry.com/~pere/blog/tags/nuug">nuug (200)</a></li>
1368
1369 <li><a href="http://www.hungry.com/~pere/blog/tags/offentlig innsyn">offentlig innsyn (42)</a></li>
1370
1371 <li><a href="http://www.hungry.com/~pere/blog/tags/open311">open311 (2)</a></li>
1372
1373 <li><a href="http://www.hungry.com/~pere/blog/tags/opensnitch">opensnitch (4)</a></li>
1374
1375 <li><a href="http://www.hungry.com/~pere/blog/tags/opphavsrett">opphavsrett (76)</a></li>
1376
1377 <li><a href="http://www.hungry.com/~pere/blog/tags/personvern">personvern (114)</a></li>
1378
1379 <li><a href="http://www.hungry.com/~pere/blog/tags/raid">raid (4)</a></li>
1380
1381 <li><a href="http://www.hungry.com/~pere/blog/tags/reactos">reactos (1)</a></li>
1382
1383 <li><a href="http://www.hungry.com/~pere/blog/tags/reprap">reprap (11)</a></li>
1384
1385 <li><a href="http://www.hungry.com/~pere/blog/tags/rfid">rfid (3)</a></li>
1386
1387 <li><a href="http://www.hungry.com/~pere/blog/tags/robot">robot (17)</a></li>
1388
1389 <li><a href="http://www.hungry.com/~pere/blog/tags/rss">rss (1)</a></li>
1390
1391 <li><a href="http://www.hungry.com/~pere/blog/tags/ruter">ruter (7)</a></li>
1392
1393 <li><a href="http://www.hungry.com/~pere/blog/tags/scraperwiki">scraperwiki (2)</a></li>
1394
1395 <li><a href="http://www.hungry.com/~pere/blog/tags/sikkerhet">sikkerhet (60)</a></li>
1396
1397 <li><a href="http://www.hungry.com/~pere/blog/tags/sitesummary">sitesummary (4)</a></li>
1398
1399 <li><a href="http://www.hungry.com/~pere/blog/tags/skepsis">skepsis (5)</a></li>
1400
1401 <li><a href="http://www.hungry.com/~pere/blog/tags/standard">standard (80)</a></li>
1402
1403 <li><a href="http://www.hungry.com/~pere/blog/tags/stavekontroll">stavekontroll (7)</a></li>
1404
1405 <li><a href="http://www.hungry.com/~pere/blog/tags/stortinget">stortinget (14)</a></li>
1406
1407 <li><a href="http://www.hungry.com/~pere/blog/tags/surveillance">surveillance (65)</a></li>
1408
1409 <li><a href="http://www.hungry.com/~pere/blog/tags/sysadmin">sysadmin (6)</a></li>
1410
1411 <li><a href="http://www.hungry.com/~pere/blog/tags/usenix">usenix (2)</a></li>
1412
1413 <li><a href="http://www.hungry.com/~pere/blog/tags/valg">valg (9)</a></li>
1414
1415 <li><a href="http://www.hungry.com/~pere/blog/tags/verkidetfri">verkidetfri (23)</a></li>
1416
1417 <li><a href="http://www.hungry.com/~pere/blog/tags/video">video (82)</a></li>
1418
1419 <li><a href="http://www.hungry.com/~pere/blog/tags/vitenskap">vitenskap (4)</a></li>
1420
1421 <li><a href="http://www.hungry.com/~pere/blog/tags/web">web (42)</a></li>
1422
1423 </ul>
1424
1425
1426 </div>
1427 <p style="text-align: right">
1428 Created by <a href="http://steve.org.uk/Software/chronicle">Chronicle v4.6</a>
1429 </p>
1430
1431 </body>
1432 </html>