]> 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://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="http://www.hungry.com/~pere/blog/index.rss" type="application/rss+xml" />
10 </head>
11 <body>
12 <div class="title">
13 <h1>
14 <a href="http://www.hungry.com/~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://www.hungry.com/~pere/blog/121_packages_in_Debian_mapped_to_hardware_for_automatic_recommendation.html">121 packages in Debian mapped to hardware for automatic recommendation</a></div>
24 <div class="date">19th January 2025</div>
25 <div class="body"><p>For some years now, I have been working on a automatic hardware
26 based package recommendation system for Debian and other Linux
27 distributions. The isenkram system I started on back in 2013 now
28 consist of two subsystems, one locating firmware files using the
29 information provided by apt-file, and one matching hardware to
30 packages using information provided by AppStream. The former is very
31 similar to the mechanism implemented in debian-installer to pick the
32 right firmware packages to install. This post is about the latter
33 system. Thanks to steady progress and good help from both other
34 Debian and upstream developers, I am happy to report that
35 <a href="https://tracker.debian.org/pkg/isenkram">the Isenkram
36 system</a> now are able to recommend 121 packages using information
37 provided via
38 <a href="https://www.freedesktop.org/wiki/Distributions/AppStream/">AppStream</a>.</p>
39
40 <p>The mapping is done using modalias information provided by the
41 kernel, the same information used by udev when creating device files,
42 and the kernel when deciding which kernel modules to load. To get all
43 the modalias identifiers relevant for your machine, you can run the
44 following command on the command line:</p>
45
46 <pre>
47 find /sys/devices -name modalias -print0 | xargs -0 sort -u
48 </pre>
49
50 <p>The modalias identifiers can look something like this:</p>
51
52 <pre>
53 acpi:PNP0000
54 cpu:type:x86,ven0000fam0006mod003F:feature:,0000,0001,0002,0003,0004,0005,0006,0007,0008,0009,000B,000C,000D,000E,000F,0010,0011,0013,0015,0016,0017,0018,0019,001A,001B,001C,001D,001F,002B,0034,003A,003B,003D,0068,006B,006C,006D,006F,0070,0072,0074,0075,0076,0078,0079,007C,0080,0081,0082,0083,0084,0085,0086,0087,0088,0089,008B,008C,008D,008E,008F,0091,0092,0093,0094,0095,0096,0097,0098,0099,009A,009B,009C,009D,009E,00C0,00C5,00E1,00E3,00EB,00ED,00F0,00F1,00F3,00F5,00F6,00F9,00FA,00FB,00FD,00FF,0100,0101,0102,0103,0111,0120,0121,0123,0125,0127,0128,0129,012A,012C,012D,0140,0160,0161,0165,016C,017B,01C0,01C1,01C2,01C4,01C5,01C6,01F9,024A,025A,025B,025C,025F,0282
55 dmi:bvnDellInc.:bvr2.18.1:bd08/14/2023:br2.18:svnDellInc.:pnPowerEdgeR730:pvr:rvnDellInc.:rn0H21J3:rvrA09:cvnDellInc.:ct23:cvr:skuSKU=NotProvided
56 pci:v00008086d00008D3Bsv00001028sd00000600bc07sc80i00
57 platform:serial8250
58 scsi:t-0x05
59 usb:v413CpA001d0000dc09dsc00dp00ic09isc00ip00in00
60 </pre>
61
62 <p>The entries above are a selection of the complete set available on
63 a Dell PowerEdge R730 machine I have access to, to give an idea about
64 the various styles of hardware identifiers presented in the modalias
65 format. When looking up relevant packages in a Debian Testing
66 installation on the same R730, I get this list of packages
67 proposed:</p>
68
69 <pre>
70 % sudo isenkram-lookup
71 firmware-bnx2x
72 firmware-nvidia-graphics
73 firmware-qlogic
74 megactl
75 wsl
76 %
77 </pre>
78
79 <p>The list consist of firmware packages requested by kernel modules,
80 as well packages with program to get the status from the RAID
81 controller and to maintain the LAN console. When the edac-utils
82 package providing tools to check the ECC RAM status will enter testing
83 in a few days, it will also show up as a proposal from isenkram. In
84 addition, once the mfiutil package we uploaded in October get past the
85 NEW processing, it will also propose a tool to configure the RAID
86 controller.</p>
87
88 <p>Another example is the trusty old Lenovo Thinkpad X230, which have
89 hardware handled by several packages in the archive. This is running
90 on Debian Stable:</p>
91
92 <pre>
93 % isenkram-lookup
94 beignet-opencl-icd
95 bluez
96 cheese
97 ethtool
98 firmware-iwlwifi
99 firmware-misc-nonfree
100 fprintd
101 fprintd-demo
102 gkrellm-thinkbat
103 hdapsd
104 libpam-fprintd
105 pidgin-blinklight
106 thinkfan
107 tlp
108 tp-smapi-dkms
109 tpb
110 %
111 </pre>
112
113 <p>Here there proposal consist of software to handle the camera,
114 bluetooth, network card, wifi card, GPU, fan, fingerprint reader and
115 acceleration sensor on the machine.</p>
116
117 <p>Here is the complete set of packages currently providing hardware
118 mapping via AppStream in Debian Unstable: air-quality-sensor,
119 alsa-firmware-loaders, antpm, array-info, avarice, avrdude,
120 bmusb-v4l2proxy, brltty, calibre, colorhug-client, concordance-common,
121 consolekit, dahdi-firmware-nonfree, dahdi-linux, edac-utils,
122 eegdev-plugins-free, ekeyd, elogind, firmware-amd-graphics,
123 firmware-ath9k-htc, firmware-atheros, firmware-b43-installer,
124 firmware-b43legacy-installer, firmware-bnx2, firmware-bnx2x,
125 firmware-brcm80211, firmware-carl9170, firmware-cavium,
126 firmware-intel-graphics, firmware-intel-misc, firmware-ipw2x00,
127 firmware-ivtv, firmware-iwlwifi, firmware-libertas,
128 firmware-linux-free, firmware-mediatek, firmware-misc-nonfree,
129 firmware-myricom, firmware-netronome, firmware-netxen,
130 firmware-nvidia-graphics, firmware-qcom-soc, firmware-qlogic,
131 firmware-realtek, firmware-ti-connectivity, fpga-icestorm, g810-led,
132 galileo, garmin-forerunner-tools, gkrellm-thinkbat, goldencheetah,
133 gpsman, gpstrans, gqrx-sdr, i8kutils, imsprog, ledger-wallets-udev,
134 libairspy0, libam7xxx0.1, libbladerf2, libgphoto2-6t64,
135 libhamlib-utils, libm2k0.9.0, libmirisdr4, libnxt, libopenxr1-monado,
136 libosmosdr0, librem5-flash-image, librtlsdr0, libticables2-8,
137 libx52pro0, libykpers-1-1, libyubikey-udev, limesuite,
138 linuxcnc-uspace, lomoco, madwimax, media-player-info, megactl, mixxx,
139 mkgmap, msi-keyboard, mu-editor, mustang-plug, nbc, nitrokey-app, nqc,
140 ola, openfpgaloader, openocd, openrazer-driver-dkms, pcmciautils,
141 pcscd, pidgin-blinklight, ponyprog, printer-driver-splix,
142 python-yubico-tools, python3-btchip, qlcplus, rosegarden, scdaemon,
143 sispmctl, solaar, spectools, sunxi-tools, t2n, thinkfan, tlp,
144 tp-smapi-dkms, trezor, tucnak, ubertooth, usbrelay, uuu, viking,
145 w1retap, wsl, xawtv, xinput-calibrator, xserver-xorg-input-wacom and
146 xtrx-dkms.</p>
147
148 <p>In addition to these, there are several
149 <a href="https://udd.debian.org/cgi-bin/bts-usertags.cgi?user=pere%40hungry.com&tag=appstream-modalias">with
150 patches pending in the Debian bug tracking system</a>, and even more
151 where no-one wrote patches yet. Good candiates for the latter are
152 packages
153 <a href="https://udd.debian.org/lintian-tag.cgi?tag=appstream-metadata-missing-modalias-provide">with
154 udev rules but no AppStream hardware information</a>.</p>
155
156 <p>The isenkram system consist of two packages, isenkram-cli with the
157 command line tools, and isenkram with a GUI background process. The
158 latter will listen for dbus events from udev emitted when new hardware
159 become available (like when inserting a USB dongle or discovering a
160 new bluetooth device), look up the modalias entry for this piece of
161 hardware in AppStream (and a hard coded list of mappings from isenkram
162 - currently working hard to move this list to AppStream), and pop up a
163 dialog proposing to install any not already installed packages
164 supporting this hardware. It work very well today when inserting the
165 LEGO Mindstorms RCX, NXT and EV3 controllers. :) If you want to make
166 sure more hardware related packages get recommended, please help out
167 fixing the remaining packages in Debian to provide AppStream metadata
168 with hardware mappings.</p>
169
170 <p>As usual, if you use Bitcoin and want to show your support of my
171 activities, please send Bitcoin donations to my address
172 <b><a href="bitcoin:15oWEoG9dUPovwmUL9KWAnYRtNJEkP1u1b">15oWEoG9dUPovwmUL9KWAnYRtNJEkP1u1b</a></b>.</p>
173 </div>
174 <div class="tags">
175
176
177 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>.
178
179
180 </div>
181 </div>
182 <div class="padding"></div>
183
184 <div class="entry">
185 <div class="title"><a href="http://www.hungry.com/~pere/blog/What_is_the_most_supported_MIME_type_in_Debian_in_2025_.html">What is the most supported MIME type in Debian in 2025?</a></div>
186 <div class="date">18th January 2025</div>
187 <div class="body"><p><a href="http://www.hungry.com/~pere/blog/What_is_the_most_supported_MIME_type_in_Debian_in_2018_.html">Seven</a>
188 and
189 <a href="http://www.hungry.com/~pere/blog/What_is_the_most_supported_MIME_type_in_Debian_.html">twelve</a>
190 years ago, I measured what the most supported MIME type in Debian
191 was</a>, first by analysing the desktop files in all packages in the
192 archive, then by analysing the DEP-11 AppStream data set. I guess it
193 is time to repeat the measurement, only for unstable as last time:</p>
194
195 <p><strong>Debian Unstable:</strong></p>
196
197 <pre>
198 count MIME type
199 ----- -----------------------
200 63 image/png
201 63 image/jpeg
202 57 image/tiff
203 54 image/gif
204 51 image/bmp
205 50 audio/mpeg
206 48 text/plain
207 42 audio/x-mp3
208 40 application/ogg
209 39 audio/x-wav
210 39 audio/x-flac
211 36 audio/x-vorbis+ogg
212 35 audio/x-mpeg
213 34 audio/x-mpegurl
214 34 audio/ogg
215 33 application/x-ogg
216 32 audio/mp4
217 31 audio/x-scpls
218 31 application/pdf
219 29 audio/x-ms-wma
220 </pre>
221
222 <p>The list was created like this using a sid chroot:</p>
223
224 <pre>
225 cat /var/lib/apt/lists/*sid*_dep11_Components-amd64.yml.gz | \
226 zcat | awk '/^ - \S+\/\S+$/ {print $2 }' | sort | \
227 uniq -c | sort -nr | head -20
228 </pre>
229
230 <p>It is nice to see that the same number of packages now support PNG
231 and JPEG. Last time JPEG had more support than PNG. Most of the MIME
232 types are known to me, but the 'audio/x-scpls' one I have no idea what
233 represent, except it being an audio format. To find the packages
234 claiming support for this format, the appstreamcli command from the
235 appstream package can be used:
236
237 <pre>
238 % appstreamcli what-provides mediatype audio/x-scpls | grep Package: | sort -u
239 Package: alsaplayer-common
240 Package: amarok
241 Package: audacious
242 Package: brasero
243 Package: celluloid
244 Package: clapper
245 Package: clementine
246 Package: cynthiune.app
247 Package: elisa
248 Package: gtranscribe
249 Package: kaffeine
250 Package: kmplayer
251 Package: kylin-burner
252 Package: lollypop
253 Package: mediaconch-gui
254 Package: mediainfo-gui
255 Package: mplayer-gui
256 Package: mpv
257 Package: mystiq
258 Package: parlatype
259 Package: parole
260 Package: pragha
261 Package: qmmp
262 Package: rhythmbox
263 Package: sayonara
264 Package: shotcut
265 Package: smplayer
266 Package: soundconverter
267 Package: strawberry
268 Package: syncplay
269 Package: vlc
270 %
271 </pre>
272
273 <p>Look like several video and auto tools understand the format.
274 Similarly one can check out the number of packages supporting the STL
275 format commonly used for 3D printing:</p>
276
277 <pre>
278 % appstreamcli what-provides mediatype model/stl | grep Package: | sort -u
279 Package: cura
280 Package: freecad
281 Package: open3d-viewer
282 %
283 </pre>
284
285 <p>How strange the
286 <a href="https://tracker.debian.org/pkg/slic3r">slic3r</a> and
287 <a href="https://tracker.debian.org/pkg/slic3r-prusa">prusa-slicer</a>
288 packages do not support STL. Perhaps just missing package metadata?
289 Luckily the amount of package metadata in Debian is getting better,
290 and hopefully this way of locating relevant packages for any file
291 format will be the preferred one soon.
292
293 <p>As usual, if you use Bitcoin and want to show your support of my
294 activities, please send Bitcoin donations to my address
295 <b><a href="bitcoin:15oWEoG9dUPovwmUL9KWAnYRtNJEkP1u1b">15oWEoG9dUPovwmUL9KWAnYRtNJEkP1u1b</a></b>.</p>
296 </div>
297 <div class="tags">
298
299
300 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>.
301
302
303 </div>
304 </div>
305 <div class="padding"></div>
306
307 <div class="entry">
308 <div class="title"><a href="http://www.hungry.com/~pere/blog/The_2025_LinuxCNC_Norwegian_developer_gathering.html">The 2025 LinuxCNC Norwegian developer gathering</a></div>
309 <div class="date">11th January 2025</div>
310 <div class="body"><p><a href="https://linuxcnc.org/">The LinuxCNC project</a> is
311 trotting along. And I believe this great software system for
312 numerical control of machines such as milling machines, lathes, plasma
313 cutters, routers, cutting machines, robots and hexapods, would do even
314 better with more in-person developer gatherings, so we plan to
315 organise such gathering this summer too.</p>
316
317 <p>This year we would like to invite to a small LinuxCNC and free
318 software fabrication workshop/gathering in Norway this summer for the
319 weekend starting July 4th 2025. New this year is the slightly larger
320 scope, and we invite people also outside the LinuxCNC community to
321 join. As earlier, we suggest to organize it as an
322 <a href="https://en.wikipedia.org/wiki/Unconference">unconference</a>,
323 where the participants create the program upon arrival.</p>
324
325 <p>The location is a metal workshop 15 minutes drive away from to the
326 Gardermoen airport (OSL), where there is a lot of space and a hotel only
327 5 minutes away by car. We plan to fire up the barbeque in the evenings.</p>
328
329 <p>Please let us know if you would like to join. We track the list of
330 participants on <a href="https://pad.efn.no/p/linuxcnc-2025-norway">a
331 simple pad</a>, please add yourself there if you are interested in joining.</p>
332
333 <p><a href="https://www.nuugfoundation.no/">The NUUG Foundation</a> has on
334 our request offered to handle any money involved with this gathering,
335 in other words holding any sponsor funds and paying any bills.
336 NUUG Foundation is a spinnoff from the NUUG member organisation here
337 in Norway with long ties to the free software and open standards
338 communities.</p>
339
340 <p>As usual we hope to find sponsors to pay for food, lodging and travel.</p>
341
342 <p>As usual, if you use Bitcoin and want to show your support of my
343 activities, please send Bitcoin donations to my address
344 <b><a href="bitcoin:15oWEoG9dUPovwmUL9KWAnYRtNJEkP1u1b">15oWEoG9dUPovwmUL9KWAnYRtNJEkP1u1b</a></b>.</p>
345 </div>
346 <div class="tags">
347
348
349 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/linuxcnc">linuxcnc</a>.
350
351
352 </div>
353 </div>
354 <div class="padding"></div>
355
356 <div class="entry">
357 <div class="title"><a href="http://www.hungry.com/~pere/blog/New_lsdvd_release_0_18_after_ten_years.html">New lsdvd release 0.18 after ten years</a></div>
358 <div class="date">21st December 2024</div>
359 <div class="body"><p>The rumors of the death of
360 <a href="https://sourceforge.net/projects/lsdvd/">the lsdvd project</a>
361 is slightly exaggerated. And the last few months, we have been
362 working on fixing and improving it, culminating in a new release last
363 night. This is the list of changes in the new 0.18 release, as
364 <a href="https://sourceforge.net/p/lsdvd/mailman/message/59108028/">announced
365 on the project mailing list</a>:</p>
366
367 <ul>
368
369 <li>Simplified autoconf setup, dropped --enable-debug option.</li>
370 <li>Improved video resolution reporting (<a href="https://sourceforge.net/p/lsdvd/patches/8/">Fixes #8</a>).</li>
371 <li>Applied patches fetched from BSDs (<a href="https://sourceforge.net/p/lsdvd/patches/7/">Fixes #7</a>).</li>
372 <li>Corrected Perl output (<a href="https://sourceforge.net/p/lsdvd/patches/1/">Fixes #1</a>).</li>
373 <li>Adjusted Pan and Scan entries to produce valid XML.</li>
374 <li>Changed --help output from stderr to stdout.</li>
375 <li>Corrected aspect ratio and audio format formatting.</li>
376 <li>Avoid segfault when hitting a NULL pointer in the IFO structure.</li>
377 <li>Change build rules to supress compiler flags, to make it easier to
378 spot warnings.</li>
379 <li>Set default DVD device based on OS (Linux, *BSD, Darwin)</li>
380 <li>Added libdvdread DVDDiscID to output.</li>
381 <li>Corrected typo in longest track value in XML format.</li>
382 <li>Switched XML output to use libxml to avoid string encoding issues.</li>
383 <li>Added simple build time test suite.</li>
384 <li>Cleaned up language code handling and adding missing mapping for
385 language codes 'nb' and 'nn'.</li>
386 <li>Added JSON output support using -Oj.</li>
387 </ul>
388
389 <p>The most exciting news to me is easy access to the DVDDiscID, which
390 make it a lot easier to identify DVD duplicates across a large
391 collection of DVDs. During testing it has proved to be very effective
392 ad identifying when DVDs in a DVD box (say all Star Wars movies) is
393 identical to DVDs sold individually (like the same Star Wars movies
394 packaged individually).</p>
395
396 <p>Because none of the current developers got access to do tarball
397 releases on Sourceforge any more, the release is only available as
398 <a href="https://sourceforge.net/p/lsdvd/git/ci/0.18/tree/">a git
399 tag</a> in the repository. Lets hope it do not take ten years for the
400 next release. The project are discussing to move away from
401 Sourceforge, but it has not yet concluded.</p>
402
403 <p>As usual, if you use Bitcoin and want to show your support of my
404 activities, please send Bitcoin donations to my address
405 <b><a href="bitcoin:15oWEoG9dUPovwmUL9KWAnYRtNJEkP1u1b">15oWEoG9dUPovwmUL9KWAnYRtNJEkP1u1b</a></b>.</p>
406 </div>
407 <div class="tags">
408
409
410 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>.
411
412
413 </div>
414 </div>
415 <div class="padding"></div>
416
417 <div class="entry">
418 <div class="title"><a href="http://www.hungry.com/~pere/blog/More_than_200_orphaned_Debian_packages_moved_to_git__216_to_go.html">More than 200 orphaned Debian packages moved to git, 216 to go</a></div>
419 <div class="date">11th July 2024</div>
420 <div class="body"><p><a href="http://www.hungry.com/~pere/blog/Time_to_move_orphaned_Debian_packages_to_git.html">In
421 April</a>, I started migrating orphaned Debian packages without any
422 version control system listed in debian/control to git. This morning,
423 my Debian QA page finally reached 200 QA packages migrated. In
424 reality there are a few more, as the packages uploaded by someone else
425 after my initial upload have disappeared from my QA uploads list. As
426 I am running out of steam and will most likely focus on other parts of
427 Debian moving forward, I hope someone else will find time to continue
428 the migration to bring the number of orphaned packages without any
429 version control system down to zero. Here is the updated recipe if
430 someone want to help out.</p>
431
432 <p>To locate packages to work on, the following one-liner can be used:</p>
433
434 <blockquote><pre>
435 PGPASSWORD="udd-mirror" psql --port=5432 --host=udd-mirror.debian.net \
436 --username=udd-mirror udd -c "select source from sources \
437 where release = 'sid' and (vcs_url ilike '%anonscm.debian.org%' \
438 OR vcs_browser ilike '%anonscm.debian.org%' or vcs_url IS NULL \
439 OR vcs_browser IS NULL) AND maintainer ilike '%packages@qa.debian.org%' \
440 order by random() limit 10;"
441 </pre></blockquote>
442
443 <p>Pick a random package from the list and run the latest edition of
444 the script
445 <tt><a href="http://www.hungry.com/~pere/blog/images/2024-07-11-debian-snap-to-salsa.sh">debian-snap-to-salsa</a></tt>
446 with the package name as the argument to prepare a git repository with
447 the existing packaging. This will download old Debian packages from
448 <tt>snapshot.debian.org</tt>. Note that very recent uploads will not
449 be included, so check out the package on <tt>tracker.debian.org</tt>.
450 Next, run <tt>gbp buildpackage --git-ignore-new</tt> to verify that
451 the package build as it should, and then visit
452 <a href="https://salsa.debian.org/debian/">https://salsa.debian.org/debian/</a>
453 and make sure there is not already a git repository for the package
454 there. I also did <tt>git log -p debian/control</tt> and look for vcs
455 entries to check if the package used to have a git repository on
456 Alioth, and see if it can be a useful starting point moving forward.
457 If all this check out, I created a new gitlab project below the Debian
458 group on salsa, push the package source there and upload a new version.
459 I tend to also ensure build hardening is enabled, if it prove to be
460 easy, and check if I can easily fix any lintian issues or bug reports.
461 If the process took more than 20 minutes, I dropped it and moved on to
462 another package.</p>
463
464 <p>If I found patches in debian/patches/ that were not yet passed
465 upstream, I would send an email to make sure upstream know about them.
466 This has proved to be a valuable step, and caused several new releases
467 for software that initially appeared abandoned. :)</p>
468
469 <p>As usual, if you use Bitcoin and want to show your support of my
470 activities, please send Bitcoin donations to my address
471 <b><a href="bitcoin:15oWEoG9dUPovwmUL9KWAnYRtNJEkP1u1b">15oWEoG9dUPovwmUL9KWAnYRtNJEkP1u1b</a></b>.</p>
472 </div>
473 <div class="tags">
474
475
476 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>.
477
478
479 </div>
480 </div>
481 <div class="padding"></div>
482
483 <div class="entry">
484 <div class="title"><a href="http://www.hungry.com/~pere/blog/Some_notes_from_the_2024_LinuxCNC_Norwegian_developer_gathering.html">Some notes from the 2024 LinuxCNC Norwegian developer gathering</a></div>
485 <div class="date">10th July 2024</div>
486 <div class="body"><p>The Norwegian <a href="https://linuxcnc.org/">The LinuxCNC</a>
487 developer gathering 2024 is over. It was a great and productive
488 weekend, and I am sad that it is over.</p>
489
490 <p>Regular readers probably still remember what LinuxCNC is, but her
491 is a quick summary for those that forgot? LinuxCNC is a free software
492 system for numerical control of machines such as milling machines,
493 lathes, plasma cutters, routers, cutting machines, robots and
494 hexapods. It eats G-code and produce motor movement and other changes
495 to the physical world, while reading sensor input.</p>
496
497 <p>I am not quite sure about the total head count, as not all people
498 were present at the gathering the entire weekend, but I believe it was
499 close to 10 people showing their faces at the gathering. The "hard
500 core" of the group, who stayed the entire weekend, were two from
501 Norway, two from Germany and one from England. I am happy with the
502 outcome from the gathering. We managed to wrap up a new stable
503 LinuxCNC release 2.9.3 and even tested it on real hardware within
504 minutes of the release. The release notes for 2.9.3 are still being
505 written, but should show up on on the project site in the next few
506 days. We managed to go through around twenty pull requests and merge
507 then into either the stable release (2.9) or the development branch
508 (master). There are still around thirty pull requests left to
509 process, so we are not out of work yet. We even managed to
510 fix/improve a slightly worn lathe, and experiment with running a
511 mechanical clock using G-code.</p>
512
513 <p>The evening barbeque worked well both on Saturday and Sunday. It
514 is quite fun to light up a charcoal grill using compressed air. Sadly
515 the weather was not the best, so we stayed indoors most of the
516 time.</p>
517
518 <p>This gathering was made possible partly with sponsoring from both
519 <a href="https://www.redpill-linpro.com/">Redpill Linpro</a>,
520 <a href="https://debian.org/">Debian</a> and
521 <a href="https://nuugfoundation.no/">NUUG Foundation</a>, and we are
522 most grateful for the support. I would also like to thank the local
523 school for lending us some furniture, and of course the rest of the
524 members of the organizers team, Asle and Bosse, for their countless
525 contributions. The gathering was such success that we want to do it
526 again next year.</p>
527
528 <p>We plan to organize the next Norwegian LinuxCNC developer gathering
529 at the end of June next year, the weekend Friday 27th to Sunday 29th
530 of June 2025. I recommend you reserve the dates on your calendar
531 today. Other related communities are also welcome to join in, for
532 example those working on systems like FreeCAD and opencamlib, as I am
533 sure we have much in common and sharing experiences would be very
534 useful to all involved. We are of course looking for sponsors for
535 this gathering already. The total budget for this gathering was
536 around NOK 25.000 (around EUR 2.300), so our needs are quite modest.
537 Perhaps a machine or tools company would like to help out the free
538 software manufacturing community by sponsoring food, lodging and
539 transport for such gathering?</p>
540 </div>
541 <div class="tags">
542
543
544 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/linuxcnc">linuxcnc</a>.
545
546
547 </div>
548 </div>
549 <div class="padding"></div>
550
551 <div class="entry">
552 <div class="title"><a href="http://www.hungry.com/~pere/blog/_M_ter_vi_liv_eller_d_d____pamfletten_som_inspirerte.html">«Møter vi liv eller død?», pamfletten som inspirerte</a></div>
553 <div class="date"> 4th June 2024</div>
554 <div class="body"><img align="center" src="http://www.hungry.com/~pere/blog/images/2024-06-04-bok-elsa-laula.svg" width="20%" align="center" border="1"></a>
555
556 <p>Da jeg i høst hørte jeg et innslag på
557 <a href="https://radiorakel.no/">radiOrakel</a> om en inspirerende dame
558 som levde for over hundre år siden, fikk jeg en vill ide. Elsa Laula
559 var en svensk samisk dame som ikke bare fikk utdannelsen finansiert av
560 den danske dronningen, men som gjorde så god jobb med å inspirere og
561 organisere den samiske befolkningen at det visstnok ble forslått i
562 Sverige å straffeforfølge henne for oppvigleri før hun flyttet fra
563 Sverige til Norge. Radiopraterne fortalte videre at da Elsa Laula ga
564 ut en pamflett for å inspirere samene til samling var dette den
565 første bok gitt ut av en samisk dame noensinne. Jeg fikk høre at
566 denne korte teksten kun fantes på originalspråket svensk under
567 tittelen «Inför lif eller död» og aldri var oversatt til norsk. Da
568 tenkte jeg, der jeg satt i bilen, at en norsk utgave kan vel jeg
569 fikse. Jeg har jo fått oversatt endel bøker, og en liten pamflett på
570 noen få sider burde jo være grei skuring.</p>
571
572 <p>Den imponerende Elsa Laula, som senere la til etternavnet Renberg, har
573 blant annet fått dokumentaren
574 «<a href="https://www.nrk.no/video/elsa-laula-renberg-kvinnen-som-samlet-sapmi_SAPP67002117">Elsa
575 Laula Renberg, kvinnen som samlet Sápmi</a>» (2017) av Per Kristian
576 Olsen på NRK, NRK-artikkelen
577 «<a href="https://www.nrk.no/kultur/xl/et-liv-i-kamp-for-samefolkets-rettigheter-1.13351401">Samenes
578 Jeanne d’Arc</a>» av Karen Brodshaug Sveen (2017), oppgaven
579 «<a href="https://nordligefolk.no/wp-content/uploads/2020/03/Elsa-Laulas-Info%CC%88r-Lif-och-Do%CC%88d.pdf">Elsa
580 Laulas Innför lif och död – sanningsord i de lappska
581 förhållandena</a>» av Edel Olsen, biografien
582 «<a href="https://www.siribrochjohansen.no/biografien-om-elsa-laula-renberg/">Elsa
583 Laula Renberg - Historien om samefolkets store Minerva</a>» (2015) av
584 Siri Broch Johansen og radiOrakel-podkasten
585 <a href="https://radiorakel.no/podcast/revolusjonen-har-et-kvinnelig-ansikt-elsa-laula/">Revolusjonen
586 har et kvinnelig ansikt – Elsa Laula</a>, for å nevne de jeg har
587 finnet uten å lete spesielt hardt. En virkelig spennende dame, som i
588 tillegg til å inspirere til opprettelsen av samiske organisasjoner,
589 har inspirert til opprettelsen av Sametinget, og født seks barn der
590 fire vokste opp.</p>
591
592 <p>I dag er jeg veldig glad for å kunne annonsere at
593 <a href="http://www.hungry.com/~pere/publisher/#infoerlifellerdoed2024">bokmålsoversettelsen
594 er klar og tilgjengelig</a> for både bestilling på papir og
595 epub-utgave fra lulu.com, samt som nettside. Den kringkastede
596 bokinformasjonen ser slik ut:</p>
597
598 <blockquote>
599
600 <p>Den 27 år gamle sørsamiske kvinnen Elsa Laula ga i august 1904 ut
601 en pamflett i Stockholm. Opplaget var på 6000, finansiert av
602 Stockholmsredaktøren Gustav Hedenström, som også bidro i stiftelsen av
603 Lapparnes Centralforbund. Dette kampskriftet var den første boken gitt
604 ut av en samisk kvinne, og hadde som mål å inspirere til opprettelsen
605 av samiske foreninger over hele landet, samt skape blest om
606 sentralforbundet. Pamfletten er et politisk manifest som fortsatt
607 inspirerer i dag.</p>
608
609 <p>Denne pamfletten er nå for første gang tilgjengelig på bokmål,
610 sammen med en nyutgivelse av originalteksten på svensk.</p>
611
612 </blockquote>
613
614 <p>Oversettelsen hadde ikke vært mulig uten gode hjelpere. En virkelig
615 stor innsats både i korrekturarbeidet og utforskning av arkaiske
616 svenske ord, står Axel Rosén bak. I tillegg har jeg fått innspill fra
617 Edel May Karlsen og flere andre både på språkføring og historisk
618 bakgrunn for å forstå teksten.</p>
619
620 <p>En kuriositet som jeg oppdaget i arbeidet med oversettelsen er at
621 det ikke stemmer at denne boken ikke var oversatt til noen andre
622 språk. Anna Wuolab oversatte den til nordsamisk i 2017 i en utgave
623 gitt ut av samisk skribent- och författarförening (Bágu čálliid
624 searvi) under tittelen «Eallit vai jápmit? : duohtavuođasánit sámi
625 diliid birra = Inför lif eller död? : sanningsord i de lappska
626 förhållandena». Papirutgaven er så vidt jeg kan forstå utsolgt fra
627 forlaget og jeg har ikke klart å finne informasjonsside om boken på
628 Internett. Mulig den er mulig å få tak i som ebok, hvis en skal tro
629 <a href="https://search.worldcat.org/title/1405213087">oppføring i
630 worldcat</a>.</p>
631
632 <p>Oversetterrammeverket jeg har satt opp for å gjennomføre dette
633 oversettelsesprosjektet håndterer flere språk. Jeg er igang med
634 engelsk utgave, og er åpen for å også gi ut andre oversettelser hvis
635 noen er interessert i å gjøre jobben. Det hadde vært ekstra moro å gi
636 den ut på sørsamisk, det samiske språket i regionen der Elsa Laula kom
637 fra. Der er jeg som vanlig avhengig av frivillige som er også
638 interessert i å gjøre dette på dugnad.</p>
639
640 <p>Som vanlig, hvis du bruker Bitcoin og ønsker å vise din støtte til
641 det jeg driver med, setter jeg pris på om du sender Bitcoin-donasjoner
642 til min adresse
643 <b><a href="bitcoin:15oWEoG9dUPovwmUL9KWAnYRtNJEkP1u1b">15oWEoG9dUPovwmUL9KWAnYRtNJEkP1u1b</a></b>. Merk,
644 betaling med bitcoin er ikke anonymt. :)</p>
645 </div>
646 <div class="tags">
647
648
649 Tags: <a href="http://www.hungry.com/~pere/blog/tags/docbook">docbook</a>, <a href="http://www.hungry.com/~pere/blog/tags/norsk">norsk</a>.
650
651
652 </div>
653 </div>
654 <div class="padding"></div>
655
656 <div class="entry">
657 <div class="title"><a href="http://www.hungry.com/~pere/blog/The_2024_LinuxCNC_Norwegian_developer_gathering.html">The 2024 LinuxCNC Norwegian developer gathering</a></div>
658 <div class="date">31st May 2024</div>
659 <div class="body"><p><a href="https://linuxcnc.org/">The LinuxCNC project</a> is still
660 going strong. And I believe this great software system for numerical control of
661 machines such as milling machines, lathes, plasma cutters, routers,
662 cutting machines, robots and hexapods, would do even better with more
663 in-person developer gatherings, so we plan to organise such gathering
664 this summer too.</p>
665
666 <p>The Norwegian LinuxCNC developer gathering take place the weekend
667 Friday July 5th to 7th this year, and is open for everyone interested
668 in contributing to LinuxCNC and free software manufacturing. Up to
669 date information about the gathering can be found in
670 <a href="https://sourceforge.net/p/emc/mailman/emc-developers/thread/123eaae0-f3b9-4170-a251-b7d608f1e974%40bofh.no/">the
671 developer mailing list thread</a> where the gathering was announced.
672 Thanks to the good people at
673
674 <a href="https://www.debian.org/">Debian</a> as well as leftover money
675 from last years gathering from
676 <a href="https://www.redpill-linpro.com/">Redpill-Linpro</a> and
677 <a href="https://www.nuugfoundation.no/no/">NUUG Foundation</a>, we
678 have enough sponsor funds to pay for food, and probably also shelter
679 for the people traveling from afar to join us. If you would like to
680 join the gathering, get in touch and add your details on
681 <a href="https://pad.efn.no/p/linuxcnc-2024-norway">the pad</a>.</p>
682
683 <p>As usual, if you use Bitcoin and want to show your support of my
684 activities, please send Bitcoin donations to my address
685 <b><a href="bitcoin:15oWEoG9dUPovwmUL9KWAnYRtNJEkP1u1b">15oWEoG9dUPovwmUL9KWAnYRtNJEkP1u1b</a></b>.</p>
686 </div>
687 <div class="tags">
688
689
690 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/linuxcnc">linuxcnc</a>.
691
692
693 </div>
694 </div>
695 <div class="padding"></div>
696
697 <div class="entry">
698 <div class="title"><a href="http://www.hungry.com/~pere/blog/45_orphaned_Debian_packages_moved_to_git__391_to_go.html">45 orphaned Debian packages moved to git, 391 to go</a></div>
699 <div class="date">25th April 2024</div>
700 <div class="body"><p>Nine days ago, I started migrating orphaned Debian packages with no
701 version control system listed in debian/control of the source to git.
702 At the time there were 438 such packages. Now there are 391,
703 according to the UDD. In reality it is slightly less, as there is a
704 delay between uploads and UDD updates. In the nine days since, I have
705 thus been able to work my way through ten percent of the packages. I
706 am starting to run out of steam, and hope someone else will also help
707 brushing some dust of these packages. Here is a recipe how to do it.
708
709 I start by picking a random package by querying the UDD for a list of
710 10 random packages from the set of remaining packages:
711
712 <blockquote><pre>
713 PGPASSWORD="udd-mirror" psql --port=5432 --host=udd-mirror.debian.net \
714 --username=udd-mirror udd -c "select source from sources \
715 where release = 'sid' and (vcs_url ilike '%anonscm.debian.org%' \
716 OR vcs_browser ilike '%anonscm.debian.org%' or vcs_url IS NULL \
717 OR vcs_browser IS NULL) AND maintainer ilike '%packages@qa.debian.org%' \
718 order by random() limit 10;"
719 </pre></blockquote>
720
721 <p>Next, I visit http://salsa.debian.org/debian and search for the
722 package name, to ensure no git repository already exist. If it does,
723 I clone it and try to get it to an uploadable state, and add the Vcs-*
724 entries in d/control to make the repository more widely known. These
725 packages are a minority, so I will not cover that use case here.</p>
726
727 <p>For packages without an existing git repository, I run the
728 following script <tt>debian-snap-to-salsa</tt> to prepare a git
729 repository with the existing packaging.</p>
730
731 <blockquote><pre>
732 #!/bin/sh
733 #
734 # See also https://bugs.debian.org/804722#31
735
736 set -e
737
738 # Move to this Standards-Version.
739 SV_LATEST=4.7.0
740
741 PKG="$1"
742
743 if [ -z "$PKG" ]; then
744 echo "usage: $0 <pkgname>"
745 exit 1
746 fi
747
748 if [ -e "${PKG}-salsa" ]; then
749 echo "error: ${PKG}-salsa already exist, aborting."
750 exit 1
751 fi
752
753 if [ -z "ALLOWFAILURE" ] ; then
754 ALLOWFAILURE=false
755 fi
756
757 # Fetch every snapshotted source package. Manually loop until all
758 # transfers succeed, as 'gbp import-dscs --debsnap' do not fail on
759 # download failures.
760 until debsnap --force -v $PKG || $ALLOWFAILURE ; do sleep 1; done
761 mkdir ${PKG}-salsa; cd ${PKG}-salsa
762 git init
763
764 # Specify branches to override any debian/gbp.conf file present in the
765 # source package.
766 gbp import-dscs --debian-branch=master --upstream-branch=upstream \
767 --pristine-tar ../source-$PKG/*.dsc
768
769 # Add Vcs pointing to Salsa Debian project (must be manually created
770 # and pushed to).
771 if ! grep -q ^Vcs- debian/control ; then
772 awk "BEGIN { s=1 } /^\$/ { if (s==1) { print \"Vcs-Browser: https://salsa.debian.org/debian/$PKG\"; print \"Vcs-Git: https://salsa.debian.org/debian/$PKG.git\" }; s=0 } { print }" < debian/control > debian/control.new && mv debian/control.new debian/control
773 git commit -m "Updated vcs in d/control to Salsa." debian/control
774 fi
775
776 # Tell gbp to enforce the use of pristine-tar.
777 inifile +inifile debian/gbp.conf +create +section DEFAULT +key pristine-tar +value True
778 git add debian/gbp.conf
779 git commit -m "Added d/gbp.conf to enforce the use of pristine-tar." debian/gbp.conf
780
781 # Update to latest Standards-Version.
782 SV="$(grep ^Standards-Version: debian/control|awk '{print $2}')"
783 if [ $SV_LATEST != $SV ]; then
784 sed -i "s/\(Standards-Version: \)\(.*\)/\1$SV_LATEST/" debian/control
785 git commit -m "Updated Standards-Version from $SV to $SV_LATEST." debian/control
786 fi
787
788 if grep -q pkg-config debian/control; then
789 sed -i s/pkg-config/pkgconf/ debian/control
790 git commit -m "Replaced obsolete pkg-config build dependency with pkgconf." debian/control
791 fi
792
793 if grep -q libncurses5-dev debian/control; then
794 sed -i s/libncurses5-dev/libncurses-dev/ debian/control
795 git commit -m "Replaced obsolete libncurses5-dev build dependency with libncurses-dev." debian/control
796 fi
797 </pre></blockquote>
798
799 Some times the debsnap script fail to download some of the versions.
800 In those cases I investigate, and if I decide the failing versions
801 will not be missed, I call it using ALLOWFAILURE=true to ignore the
802 problem and create the git repository anyway.</p>
803
804 <p>With the git repository in place, I do a test build (gbp
805 buildpackage) to ensure the build is actually working. If it does not
806 I pick a different package, or if the build failure is trivial to fix,
807 I fix it before continuing. At this stage I revisit
808 http://salsa.debian.org/debian and create the project under this group
809 for the package. I then follow the instructions to publish the local
810 git repository. Here is from a recent example:</p>
811
812 <blockquote><pre>
813 git remote add origin git@salsa.debian.org:debian/perl-byacc.git
814 git push --set-upstream origin master upstream pristine-tar
815 git push --tags
816 </pre></blockquote>
817
818 <p>With a working build, I have a look at the build rules if I want to
819 remove some more dust. I normally try to move to debhelper compat
820 level 13, which involves removing debian/compat and modifying
821 debian/control to build depend on debhelper-compat (=13). I also test
822 with 'Rules-Requires-Root: no' in debian/control and verify in
823 debian/rules that hardening is enabled, and include all of these if
824 the package still build. If it fail to build with level 13, I try
825 with 12, 11, 10 and so on until I find a level where it build, as I do
826 not want to spend a lot of time fixing build issues.</p>
827
828 <p>Some times, when I feel inspired, I make sure debian/copyright is
829 converted to the machine readable format, often by starting with
830 'debhelper -cc' and then cleaning up the autogenerated content until
831 it matches realities. If I feel like it, I might also clean up
832 non-dh-based debian/rules files to use the short style dh build
833 rules.</p>
834
835 <p>Once I have removed all the dust I care to process for the package,
836 I run 'gbp dch' to generate a debian/changelog entry based on the
837 commits done so far, run 'dch -r' to switch from 'UNRELEASED' to
838 'unstable' and get an editor to make sure the 'QA upload' marker is in
839 place and that all long commit descriptions are wrapped into sensible
840 lengths, run 'debcommit --release -a' to commit and tag the new
841 debian/changelog entry, run 'debuild -S' to build a source only
842 package, and 'dput ../perl-byacc_2.0-10_source.changes' to do the
843 upload. During the entire process, and many times per step, I run
844 'debuild' to verify the changes done still work. I also some times
845 verify the set of built files using 'find debian' to see if I can spot
846 any problems (like no file in usr/bin any more or empty package). I
847 also try to fix all lintian issues reported at the end of each
848 'debuild' run.</p>
849
850 <p>If I find Debian specific patches, I try to ensure their metadata
851 is fairly up to date and some times I even try to reach out to
852 upstream, to make the upstream project aware of the patches. Most of
853 my emails bounce, so the success rate is low. For projects with no
854 Homepage entry in debian/control I try to track down one, and for
855 packages with no debian/watch file I try to create one. But at least
856 for some of the packages I have been unable to find a functioning
857 upstream, and must skip both of these.</p>
858
859 <p>If I could handle ten percent in nine days, twenty people could
860 complete the rest in less then five days. I use approximately twenty
861 minutes per package, when I have twenty minutes spare time to spend.
862 Perhaps you got twenty minutes to spare too?</p>
863
864 <p>As usual, if you use Bitcoin and want to show your support of my
865 activities, please send Bitcoin donations to my address
866 <b><a href="bitcoin:15oWEoG9dUPovwmUL9KWAnYRtNJEkP1u1b">15oWEoG9dUPovwmUL9KWAnYRtNJEkP1u1b</a></b>.</p>
867
868 <p><strong>Update 2024-05-04:</strong> There is
869 <a href="http://www.hungry.com/~pere/blog/images/2024-05-04-debian-snap-to-salsa.sh">an
870 updated edition of my migration script</a>, last updated
871 2024-05-04.</p>
872 </div>
873 <div class="tags">
874
875
876 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>.
877
878
879 </div>
880 </div>
881 <div class="padding"></div>
882
883 <div class="entry">
884 <div class="title"><a href="http://www.hungry.com/~pere/blog/RAID_status_from_LSI_Megaraid_controllers_in_Debian.html">RAID status from LSI Megaraid controllers in Debian</a></div>
885 <div class="date">17th April 2024</div>
886 <div class="body"><p>I am happy to report that
887 <a href="https://github.com/namiltd/megactl">the megactl package</a>,
888 useful to fetch RAID status when using the LSI Megaraid controller,
889 now is available in Debian. It passed NEW a few days ago, and is now
890 <a href="https://tracker.debian.org/pkg/megactl">available in
891 unstable</a>, and probably showing up in testing in a weeks time. The
892 new version should provide Appstream hardware mapping and should
893 integrate nicely with isenkram.</p>
894
895 <p>As usual, if you use Bitcoin and want to show your support of my
896 activities, please send Bitcoin donations to my address
897 <b><a href="bitcoin:15oWEoG9dUPovwmUL9KWAnYRtNJEkP1u1b">15oWEoG9dUPovwmUL9KWAnYRtNJEkP1u1b</a></b>.</p>
898
899 </div>
900 <div class="tags">
901
902
903 Tags: <a href="http://www.hungry.com/~pere/blog/tags/english">english</a>, <a href="http://www.hungry.com/~pere/blog/tags/isenkram">isenkram</a>, <a href="http://www.hungry.com/~pere/blog/tags/raid">raid</a>.
904
905
906 </div>
907 </div>
908 <div class="padding"></div>
909
910 <p style="text-align: right;"><a href="index.rss"><img src="http://www.hungry.com/~pere/blog/xml.gif" alt="RSS feed" width="36" height="14" /></a></p>
911 <div id="sidebar">
912
913
914
915 <h2>Archive</h2>
916 <ul>
917
918 <li>2025
919 <ul>
920
921 <li><a href="http://www.hungry.com/~pere/blog/archive/2025/01/">January (3)</a></li>
922
923 </ul></li>
924
925 <li>2024
926 <ul>
927
928 <li><a href="http://www.hungry.com/~pere/blog/archive/2024/01/">January (1)</a></li>
929
930 <li><a href="http://www.hungry.com/~pere/blog/archive/2024/02/">February (1)</a></li>
931
932 <li><a href="http://www.hungry.com/~pere/blog/archive/2024/03/">March (2)</a></li>
933
934 <li><a href="http://www.hungry.com/~pere/blog/archive/2024/04/">April (3)</a></li>
935
936 <li><a href="http://www.hungry.com/~pere/blog/archive/2024/05/">May (1)</a></li>
937
938 <li><a href="http://www.hungry.com/~pere/blog/archive/2024/06/">June (1)</a></li>
939
940 <li><a href="http://www.hungry.com/~pere/blog/archive/2024/07/">July (2)</a></li>
941
942 <li><a href="http://www.hungry.com/~pere/blog/archive/2024/12/">December (1)</a></li>
943
944 </ul></li>
945
946 <li>2023
947 <ul>
948
949 <li><a href="http://www.hungry.com/~pere/blog/archive/2023/01/">January (3)</a></li>
950
951 <li><a href="http://www.hungry.com/~pere/blog/archive/2023/02/">February (1)</a></li>
952
953 <li><a href="http://www.hungry.com/~pere/blog/archive/2023/04/">April (2)</a></li>
954
955 <li><a href="http://www.hungry.com/~pere/blog/archive/2023/05/">May (3)</a></li>
956
957 <li><a href="http://www.hungry.com/~pere/blog/archive/2023/06/">June (1)</a></li>
958
959 <li><a href="http://www.hungry.com/~pere/blog/archive/2023/08/">August (1)</a></li>
960
961 <li><a href="http://www.hungry.com/~pere/blog/archive/2023/09/">September (1)</a></li>
962
963 <li><a href="http://www.hungry.com/~pere/blog/archive/2023/10/">October (1)</a></li>
964
965 <li><a href="http://www.hungry.com/~pere/blog/archive/2023/11/">November (4)</a></li>
966
967 <li><a href="http://www.hungry.com/~pere/blog/archive/2023/12/">December (1)</a></li>
968
969 </ul></li>
970
971 <li>2022
972 <ul>
973
974 <li><a href="http://www.hungry.com/~pere/blog/archive/2022/02/">February (1)</a></li>
975
976 <li><a href="http://www.hungry.com/~pere/blog/archive/2022/03/">March (3)</a></li>
977
978 <li><a href="http://www.hungry.com/~pere/blog/archive/2022/04/">April (2)</a></li>
979
980 <li><a href="http://www.hungry.com/~pere/blog/archive/2022/06/">June (2)</a></li>
981
982 <li><a href="http://www.hungry.com/~pere/blog/archive/2022/07/">July (1)</a></li>
983
984 <li><a href="http://www.hungry.com/~pere/blog/archive/2022/09/">September (1)</a></li>
985
986 <li><a href="http://www.hungry.com/~pere/blog/archive/2022/10/">October (1)</a></li>
987
988 <li><a href="http://www.hungry.com/~pere/blog/archive/2022/12/">December (1)</a></li>
989
990 </ul></li>
991
992 <li>2021
993 <ul>
994
995 <li><a href="http://www.hungry.com/~pere/blog/archive/2021/01/">January (2)</a></li>
996
997 <li><a href="http://www.hungry.com/~pere/blog/archive/2021/02/">February (1)</a></li>
998
999 <li><a href="http://www.hungry.com/~pere/blog/archive/2021/05/">May (1)</a></li>
1000
1001 <li><a href="http://www.hungry.com/~pere/blog/archive/2021/06/">June (1)</a></li>
1002
1003 <li><a href="http://www.hungry.com/~pere/blog/archive/2021/07/">July (3)</a></li>
1004
1005 <li><a href="http://www.hungry.com/~pere/blog/archive/2021/08/">August (1)</a></li>
1006
1007 <li><a href="http://www.hungry.com/~pere/blog/archive/2021/09/">September (1)</a></li>
1008
1009 <li><a href="http://www.hungry.com/~pere/blog/archive/2021/10/">October (1)</a></li>
1010
1011 <li><a href="http://www.hungry.com/~pere/blog/archive/2021/12/">December (1)</a></li>
1012
1013 </ul></li>
1014
1015 <li>2020
1016 <ul>
1017
1018 <li><a href="http://www.hungry.com/~pere/blog/archive/2020/02/">February (2)</a></li>
1019
1020 <li><a href="http://www.hungry.com/~pere/blog/archive/2020/03/">March (2)</a></li>
1021
1022 <li><a href="http://www.hungry.com/~pere/blog/archive/2020/04/">April (2)</a></li>
1023
1024 <li><a href="http://www.hungry.com/~pere/blog/archive/2020/05/">May (3)</a></li>
1025
1026 <li><a href="http://www.hungry.com/~pere/blog/archive/2020/06/">June (2)</a></li>
1027
1028 <li><a href="http://www.hungry.com/~pere/blog/archive/2020/07/">July (1)</a></li>
1029
1030 <li><a href="http://www.hungry.com/~pere/blog/archive/2020/09/">September (1)</a></li>
1031
1032 <li><a href="http://www.hungry.com/~pere/blog/archive/2020/10/">October (1)</a></li>
1033
1034 <li><a href="http://www.hungry.com/~pere/blog/archive/2020/11/">November (1)</a></li>
1035
1036 </ul></li>
1037
1038 <li>2019
1039 <ul>
1040
1041 <li><a href="http://www.hungry.com/~pere/blog/archive/2019/01/">January (4)</a></li>
1042
1043 <li><a href="http://www.hungry.com/~pere/blog/archive/2019/02/">February (3)</a></li>
1044
1045 <li><a href="http://www.hungry.com/~pere/blog/archive/2019/03/">March (3)</a></li>
1046
1047 <li><a href="http://www.hungry.com/~pere/blog/archive/2019/05/">May (2)</a></li>
1048
1049 <li><a href="http://www.hungry.com/~pere/blog/archive/2019/06/">June (5)</a></li>
1050
1051 <li><a href="http://www.hungry.com/~pere/blog/archive/2019/07/">July (2)</a></li>
1052
1053 <li><a href="http://www.hungry.com/~pere/blog/archive/2019/08/">August (1)</a></li>
1054
1055 <li><a href="http://www.hungry.com/~pere/blog/archive/2019/09/">September (1)</a></li>
1056
1057 <li><a href="http://www.hungry.com/~pere/blog/archive/2019/11/">November (1)</a></li>
1058
1059 <li><a href="http://www.hungry.com/~pere/blog/archive/2019/12/">December (4)</a></li>
1060
1061 </ul></li>
1062
1063 <li>2018
1064 <ul>
1065
1066 <li><a href="http://www.hungry.com/~pere/blog/archive/2018/01/">January (1)</a></li>
1067
1068 <li><a href="http://www.hungry.com/~pere/blog/archive/2018/02/">February (5)</a></li>
1069
1070 <li><a href="http://www.hungry.com/~pere/blog/archive/2018/03/">March (5)</a></li>
1071
1072 <li><a href="http://www.hungry.com/~pere/blog/archive/2018/04/">April (3)</a></li>
1073
1074 <li><a href="http://www.hungry.com/~pere/blog/archive/2018/06/">June (2)</a></li>
1075
1076 <li><a href="http://www.hungry.com/~pere/blog/archive/2018/07/">July (5)</a></li>
1077
1078 <li><a href="http://www.hungry.com/~pere/blog/archive/2018/08/">August (3)</a></li>
1079
1080 <li><a href="http://www.hungry.com/~pere/blog/archive/2018/09/">September (3)</a></li>
1081
1082 <li><a href="http://www.hungry.com/~pere/blog/archive/2018/10/">October (5)</a></li>
1083
1084 <li><a href="http://www.hungry.com/~pere/blog/archive/2018/11/">November (2)</a></li>
1085
1086 <li><a href="http://www.hungry.com/~pere/blog/archive/2018/12/">December (4)</a></li>
1087
1088 </ul></li>
1089
1090 <li>2017
1091 <ul>
1092
1093 <li><a href="http://www.hungry.com/~pere/blog/archive/2017/01/">January (4)</a></li>
1094
1095 <li><a href="http://www.hungry.com/~pere/blog/archive/2017/02/">February (3)</a></li>
1096
1097 <li><a href="http://www.hungry.com/~pere/blog/archive/2017/03/">March (5)</a></li>
1098
1099 <li><a href="http://www.hungry.com/~pere/blog/archive/2017/04/">April (2)</a></li>
1100
1101 <li><a href="http://www.hungry.com/~pere/blog/archive/2017/06/">June (5)</a></li>
1102
1103 <li><a href="http://www.hungry.com/~pere/blog/archive/2017/07/">July (1)</a></li>
1104
1105 <li><a href="http://www.hungry.com/~pere/blog/archive/2017/08/">August (1)</a></li>
1106
1107 <li><a href="http://www.hungry.com/~pere/blog/archive/2017/09/">September (3)</a></li>
1108
1109 <li><a href="http://www.hungry.com/~pere/blog/archive/2017/10/">October (5)</a></li>
1110
1111 <li><a href="http://www.hungry.com/~pere/blog/archive/2017/11/">November (3)</a></li>
1112
1113 <li><a href="http://www.hungry.com/~pere/blog/archive/2017/12/">December (4)</a></li>
1114
1115 </ul></li>
1116
1117 <li>2016
1118 <ul>
1119
1120 <li><a href="http://www.hungry.com/~pere/blog/archive/2016/01/">January (3)</a></li>
1121
1122 <li><a href="http://www.hungry.com/~pere/blog/archive/2016/02/">February (2)</a></li>
1123
1124 <li><a href="http://www.hungry.com/~pere/blog/archive/2016/03/">March (3)</a></li>
1125
1126 <li><a href="http://www.hungry.com/~pere/blog/archive/2016/04/">April (8)</a></li>
1127
1128 <li><a href="http://www.hungry.com/~pere/blog/archive/2016/05/">May (8)</a></li>
1129
1130 <li><a href="http://www.hungry.com/~pere/blog/archive/2016/06/">June (2)</a></li>
1131
1132 <li><a href="http://www.hungry.com/~pere/blog/archive/2016/07/">July (2)</a></li>
1133
1134 <li><a href="http://www.hungry.com/~pere/blog/archive/2016/08/">August (5)</a></li>
1135
1136 <li><a href="http://www.hungry.com/~pere/blog/archive/2016/09/">September (2)</a></li>
1137
1138 <li><a href="http://www.hungry.com/~pere/blog/archive/2016/10/">October (3)</a></li>
1139
1140 <li><a href="http://www.hungry.com/~pere/blog/archive/2016/11/">November (8)</a></li>
1141
1142 <li><a href="http://www.hungry.com/~pere/blog/archive/2016/12/">December (5)</a></li>
1143
1144 </ul></li>
1145
1146 <li>2015
1147 <ul>
1148
1149 <li><a href="http://www.hungry.com/~pere/blog/archive/2015/01/">January (7)</a></li>
1150
1151 <li><a href="http://www.hungry.com/~pere/blog/archive/2015/02/">February (6)</a></li>
1152
1153 <li><a href="http://www.hungry.com/~pere/blog/archive/2015/03/">March (1)</a></li>
1154
1155 <li><a href="http://www.hungry.com/~pere/blog/archive/2015/04/">April (4)</a></li>
1156
1157 <li><a href="http://www.hungry.com/~pere/blog/archive/2015/05/">May (3)</a></li>
1158
1159 <li><a href="http://www.hungry.com/~pere/blog/archive/2015/06/">June (4)</a></li>
1160
1161 <li><a href="http://www.hungry.com/~pere/blog/archive/2015/07/">July (6)</a></li>
1162
1163 <li><a href="http://www.hungry.com/~pere/blog/archive/2015/08/">August (2)</a></li>
1164
1165 <li><a href="http://www.hungry.com/~pere/blog/archive/2015/09/">September (2)</a></li>
1166
1167 <li><a href="http://www.hungry.com/~pere/blog/archive/2015/10/">October (9)</a></li>
1168
1169 <li><a href="http://www.hungry.com/~pere/blog/archive/2015/11/">November (6)</a></li>
1170
1171 <li><a href="http://www.hungry.com/~pere/blog/archive/2015/12/">December (3)</a></li>
1172
1173 </ul></li>
1174
1175 <li>2014
1176 <ul>
1177
1178 <li><a href="http://www.hungry.com/~pere/blog/archive/2014/01/">January (2)</a></li>
1179
1180 <li><a href="http://www.hungry.com/~pere/blog/archive/2014/02/">February (3)</a></li>
1181
1182 <li><a href="http://www.hungry.com/~pere/blog/archive/2014/03/">March (8)</a></li>
1183
1184 <li><a href="http://www.hungry.com/~pere/blog/archive/2014/04/">April (7)</a></li>
1185
1186 <li><a href="http://www.hungry.com/~pere/blog/archive/2014/05/">May (1)</a></li>
1187
1188 <li><a href="http://www.hungry.com/~pere/blog/archive/2014/06/">June (2)</a></li>
1189
1190 <li><a href="http://www.hungry.com/~pere/blog/archive/2014/07/">July (2)</a></li>
1191
1192 <li><a href="http://www.hungry.com/~pere/blog/archive/2014/08/">August (2)</a></li>
1193
1194 <li><a href="http://www.hungry.com/~pere/blog/archive/2014/09/">September (5)</a></li>
1195
1196 <li><a href="http://www.hungry.com/~pere/blog/archive/2014/10/">October (6)</a></li>
1197
1198 <li><a href="http://www.hungry.com/~pere/blog/archive/2014/11/">November (3)</a></li>
1199
1200 <li><a href="http://www.hungry.com/~pere/blog/archive/2014/12/">December (5)</a></li>
1201
1202 </ul></li>
1203
1204 <li>2013
1205 <ul>
1206
1207 <li><a href="http://www.hungry.com/~pere/blog/archive/2013/01/">January (11)</a></li>
1208
1209 <li><a href="http://www.hungry.com/~pere/blog/archive/2013/02/">February (9)</a></li>
1210
1211 <li><a href="http://www.hungry.com/~pere/blog/archive/2013/03/">March (9)</a></li>
1212
1213 <li><a href="http://www.hungry.com/~pere/blog/archive/2013/04/">April (6)</a></li>
1214
1215 <li><a href="http://www.hungry.com/~pere/blog/archive/2013/05/">May (9)</a></li>
1216
1217 <li><a href="http://www.hungry.com/~pere/blog/archive/2013/06/">June (10)</a></li>
1218
1219 <li><a href="http://www.hungry.com/~pere/blog/archive/2013/07/">July (7)</a></li>
1220
1221 <li><a href="http://www.hungry.com/~pere/blog/archive/2013/08/">August (3)</a></li>
1222
1223 <li><a href="http://www.hungry.com/~pere/blog/archive/2013/09/">September (5)</a></li>
1224
1225 <li><a href="http://www.hungry.com/~pere/blog/archive/2013/10/">October (7)</a></li>
1226
1227 <li><a href="http://www.hungry.com/~pere/blog/archive/2013/11/">November (9)</a></li>
1228
1229 <li><a href="http://www.hungry.com/~pere/blog/archive/2013/12/">December (3)</a></li>
1230
1231 </ul></li>
1232
1233 <li>2012
1234 <ul>
1235
1236 <li><a href="http://www.hungry.com/~pere/blog/archive/2012/01/">January (7)</a></li>
1237
1238 <li><a href="http://www.hungry.com/~pere/blog/archive/2012/02/">February (10)</a></li>
1239
1240 <li><a href="http://www.hungry.com/~pere/blog/archive/2012/03/">March (17)</a></li>
1241
1242 <li><a href="http://www.hungry.com/~pere/blog/archive/2012/04/">April (12)</a></li>
1243
1244 <li><a href="http://www.hungry.com/~pere/blog/archive/2012/05/">May (12)</a></li>
1245
1246 <li><a href="http://www.hungry.com/~pere/blog/archive/2012/06/">June (20)</a></li>
1247
1248 <li><a href="http://www.hungry.com/~pere/blog/archive/2012/07/">July (17)</a></li>
1249
1250 <li><a href="http://www.hungry.com/~pere/blog/archive/2012/08/">August (6)</a></li>
1251
1252 <li><a href="http://www.hungry.com/~pere/blog/archive/2012/09/">September (9)</a></li>
1253
1254 <li><a href="http://www.hungry.com/~pere/blog/archive/2012/10/">October (17)</a></li>
1255
1256 <li><a href="http://www.hungry.com/~pere/blog/archive/2012/11/">November (10)</a></li>
1257
1258 <li><a href="http://www.hungry.com/~pere/blog/archive/2012/12/">December (7)</a></li>
1259
1260 </ul></li>
1261
1262 <li>2011
1263 <ul>
1264
1265 <li><a href="http://www.hungry.com/~pere/blog/archive/2011/01/">January (16)</a></li>
1266
1267 <li><a href="http://www.hungry.com/~pere/blog/archive/2011/02/">February (6)</a></li>
1268
1269 <li><a href="http://www.hungry.com/~pere/blog/archive/2011/03/">March (6)</a></li>
1270
1271 <li><a href="http://www.hungry.com/~pere/blog/archive/2011/04/">April (7)</a></li>
1272
1273 <li><a href="http://www.hungry.com/~pere/blog/archive/2011/05/">May (3)</a></li>
1274
1275 <li><a href="http://www.hungry.com/~pere/blog/archive/2011/06/">June (2)</a></li>
1276
1277 <li><a href="http://www.hungry.com/~pere/blog/archive/2011/07/">July (7)</a></li>
1278
1279 <li><a href="http://www.hungry.com/~pere/blog/archive/2011/08/">August (6)</a></li>
1280
1281 <li><a href="http://www.hungry.com/~pere/blog/archive/2011/09/">September (4)</a></li>
1282
1283 <li><a href="http://www.hungry.com/~pere/blog/archive/2011/10/">October (2)</a></li>
1284
1285 <li><a href="http://www.hungry.com/~pere/blog/archive/2011/11/">November (3)</a></li>
1286
1287 <li><a href="http://www.hungry.com/~pere/blog/archive/2011/12/">December (1)</a></li>
1288
1289 </ul></li>
1290
1291 <li>2010
1292 <ul>
1293
1294 <li><a href="http://www.hungry.com/~pere/blog/archive/2010/01/">January (2)</a></li>
1295
1296 <li><a href="http://www.hungry.com/~pere/blog/archive/2010/02/">February (1)</a></li>
1297
1298 <li><a href="http://www.hungry.com/~pere/blog/archive/2010/03/">March (3)</a></li>
1299
1300 <li><a href="http://www.hungry.com/~pere/blog/archive/2010/04/">April (3)</a></li>
1301
1302 <li><a href="http://www.hungry.com/~pere/blog/archive/2010/05/">May (9)</a></li>
1303
1304 <li><a href="http://www.hungry.com/~pere/blog/archive/2010/06/">June (14)</a></li>
1305
1306 <li><a href="http://www.hungry.com/~pere/blog/archive/2010/07/">July (12)</a></li>
1307
1308 <li><a href="http://www.hungry.com/~pere/blog/archive/2010/08/">August (13)</a></li>
1309
1310 <li><a href="http://www.hungry.com/~pere/blog/archive/2010/09/">September (7)</a></li>
1311
1312 <li><a href="http://www.hungry.com/~pere/blog/archive/2010/10/">October (9)</a></li>
1313
1314 <li><a href="http://www.hungry.com/~pere/blog/archive/2010/11/">November (13)</a></li>
1315
1316 <li><a href="http://www.hungry.com/~pere/blog/archive/2010/12/">December (12)</a></li>
1317
1318 </ul></li>
1319
1320 <li>2009
1321 <ul>
1322
1323 <li><a href="http://www.hungry.com/~pere/blog/archive/2009/01/">January (8)</a></li>
1324
1325 <li><a href="http://www.hungry.com/~pere/blog/archive/2009/02/">February (8)</a></li>
1326
1327 <li><a href="http://www.hungry.com/~pere/blog/archive/2009/03/">March (12)</a></li>
1328
1329 <li><a href="http://www.hungry.com/~pere/blog/archive/2009/04/">April (10)</a></li>
1330
1331 <li><a href="http://www.hungry.com/~pere/blog/archive/2009/05/">May (9)</a></li>
1332
1333 <li><a href="http://www.hungry.com/~pere/blog/archive/2009/06/">June (3)</a></li>
1334
1335 <li><a href="http://www.hungry.com/~pere/blog/archive/2009/07/">July (4)</a></li>
1336
1337 <li><a href="http://www.hungry.com/~pere/blog/archive/2009/08/">August (3)</a></li>
1338
1339 <li><a href="http://www.hungry.com/~pere/blog/archive/2009/09/">September (1)</a></li>
1340
1341 <li><a href="http://www.hungry.com/~pere/blog/archive/2009/10/">October (2)</a></li>
1342
1343 <li><a href="http://www.hungry.com/~pere/blog/archive/2009/11/">November (3)</a></li>
1344
1345 <li><a href="http://www.hungry.com/~pere/blog/archive/2009/12/">December (3)</a></li>
1346
1347 </ul></li>
1348
1349 <li>2008
1350 <ul>
1351
1352 <li><a href="http://www.hungry.com/~pere/blog/archive/2008/11/">November (5)</a></li>
1353
1354 <li><a href="http://www.hungry.com/~pere/blog/archive/2008/12/">December (7)</a></li>
1355
1356 </ul></li>
1357
1358 </ul>
1359
1360
1361
1362 <h2>Tags</h2>
1363 <ul>
1364
1365 <li><a href="http://www.hungry.com/~pere/blog/tags/3d-printer">3d-printer (19)</a></li>
1366
1367 <li><a href="http://www.hungry.com/~pere/blog/tags/amiga">amiga (1)</a></li>
1368
1369 <li><a href="http://www.hungry.com/~pere/blog/tags/aros">aros (1)</a></li>
1370
1371 <li><a href="http://www.hungry.com/~pere/blog/tags/bankid">bankid (4)</a></li>
1372
1373 <li><a href="http://www.hungry.com/~pere/blog/tags/betalkontant">betalkontant (9)</a></li>
1374
1375 <li><a href="http://www.hungry.com/~pere/blog/tags/bitcoin">bitcoin (13)</a></li>
1376
1377 <li><a href="http://www.hungry.com/~pere/blog/tags/bootsystem">bootsystem (17)</a></li>
1378
1379 <li><a href="http://www.hungry.com/~pere/blog/tags/bsa">bsa (2)</a></li>
1380
1381 <li><a href="http://www.hungry.com/~pere/blog/tags/chrpath">chrpath (3)</a></li>
1382
1383 <li><a href="http://www.hungry.com/~pere/blog/tags/debian">debian (206)</a></li>
1384
1385 <li><a href="http://www.hungry.com/~pere/blog/tags/debian edu">debian edu (159)</a></li>
1386
1387 <li><a href="http://www.hungry.com/~pere/blog/tags/debian-handbook">debian-handbook (9)</a></li>
1388
1389 <li><a href="http://www.hungry.com/~pere/blog/tags/digistan">digistan (11)</a></li>
1390
1391 <li><a href="http://www.hungry.com/~pere/blog/tags/dld">dld (18)</a></li>
1392
1393 <li><a href="http://www.hungry.com/~pere/blog/tags/docbook">docbook (33)</a></li>
1394
1395 <li><a href="http://www.hungry.com/~pere/blog/tags/drivstoffpriser">drivstoffpriser (4)</a></li>
1396
1397 <li><a href="http://www.hungry.com/~pere/blog/tags/english">english (468)</a></li>
1398
1399 <li><a href="http://www.hungry.com/~pere/blog/tags/fiksgatami">fiksgatami (23)</a></li>
1400
1401 <li><a href="http://www.hungry.com/~pere/blog/tags/fildeling">fildeling (14)</a></li>
1402
1403 <li><a href="http://www.hungry.com/~pere/blog/tags/freeculture">freeculture (34)</a></li>
1404
1405 <li><a href="http://www.hungry.com/~pere/blog/tags/freedombox">freedombox (9)</a></li>
1406
1407 <li><a href="http://www.hungry.com/~pere/blog/tags/frikanalen">frikanalen (20)</a></li>
1408
1409 <li><a href="http://www.hungry.com/~pere/blog/tags/h264">h264 (20)</a></li>
1410
1411 <li><a href="http://www.hungry.com/~pere/blog/tags/intervju">intervju (43)</a></li>
1412
1413 <li><a href="http://www.hungry.com/~pere/blog/tags/isenkram">isenkram (20)</a></li>
1414
1415 <li><a href="http://www.hungry.com/~pere/blog/tags/kart">kart (23)</a></li>
1416
1417 <li><a href="http://www.hungry.com/~pere/blog/tags/kodi">kodi (6)</a></li>
1418
1419 <li><a href="http://www.hungry.com/~pere/blog/tags/ldap">ldap (9)</a></li>
1420
1421 <li><a href="http://www.hungry.com/~pere/blog/tags/lego">lego (5)</a></li>
1422
1423 <li><a href="http://www.hungry.com/~pere/blog/tags/lenker">lenker (8)</a></li>
1424
1425 <li><a href="http://www.hungry.com/~pere/blog/tags/linuxcnc">linuxcnc (8)</a></li>
1426
1427 <li><a href="http://www.hungry.com/~pere/blog/tags/lsdvd">lsdvd (2)</a></li>
1428
1429 <li><a href="http://www.hungry.com/~pere/blog/tags/ltsp">ltsp (1)</a></li>
1430
1431 <li><a href="http://www.hungry.com/~pere/blog/tags/madewithcc">madewithcc (3)</a></li>
1432
1433 <li><a href="http://www.hungry.com/~pere/blog/tags/mesh network">mesh network (8)</a></li>
1434
1435 <li><a href="http://www.hungry.com/~pere/blog/tags/multimedia">multimedia (46)</a></li>
1436
1437 <li><a href="http://www.hungry.com/~pere/blog/tags/nice free software">nice free software (15)</a></li>
1438
1439 <li><a href="http://www.hungry.com/~pere/blog/tags/noark5">noark5 (25)</a></li>
1440
1441 <li><a href="http://www.hungry.com/~pere/blog/tags/norsk">norsk (325)</a></li>
1442
1443 <li><a href="http://www.hungry.com/~pere/blog/tags/nuug">nuug (199)</a></li>
1444
1445 <li><a href="http://www.hungry.com/~pere/blog/tags/offentlig innsyn">offentlig innsyn (41)</a></li>
1446
1447 <li><a href="http://www.hungry.com/~pere/blog/tags/open311">open311 (2)</a></li>
1448
1449 <li><a href="http://www.hungry.com/~pere/blog/tags/opensnitch">opensnitch (4)</a></li>
1450
1451 <li><a href="http://www.hungry.com/~pere/blog/tags/opphavsrett">opphavsrett (76)</a></li>
1452
1453 <li><a href="http://www.hungry.com/~pere/blog/tags/personvern">personvern (114)</a></li>
1454
1455 <li><a href="http://www.hungry.com/~pere/blog/tags/raid">raid (4)</a></li>
1456
1457 <li><a href="http://www.hungry.com/~pere/blog/tags/reactos">reactos (1)</a></li>
1458
1459 <li><a href="http://www.hungry.com/~pere/blog/tags/reprap">reprap (11)</a></li>
1460
1461 <li><a href="http://www.hungry.com/~pere/blog/tags/rfid">rfid (3)</a></li>
1462
1463 <li><a href="http://www.hungry.com/~pere/blog/tags/robot">robot (17)</a></li>
1464
1465 <li><a href="http://www.hungry.com/~pere/blog/tags/rss">rss (1)</a></li>
1466
1467 <li><a href="http://www.hungry.com/~pere/blog/tags/ruter">ruter (7)</a></li>
1468
1469 <li><a href="http://www.hungry.com/~pere/blog/tags/scraperwiki">scraperwiki (2)</a></li>
1470
1471 <li><a href="http://www.hungry.com/~pere/blog/tags/sikkerhet">sikkerhet (60)</a></li>
1472
1473 <li><a href="http://www.hungry.com/~pere/blog/tags/sitesummary">sitesummary (4)</a></li>
1474
1475 <li><a href="http://www.hungry.com/~pere/blog/tags/skepsis">skepsis (5)</a></li>
1476
1477 <li><a href="http://www.hungry.com/~pere/blog/tags/standard">standard (76)</a></li>
1478
1479 <li><a href="http://www.hungry.com/~pere/blog/tags/stavekontroll">stavekontroll (7)</a></li>
1480
1481 <li><a href="http://www.hungry.com/~pere/blog/tags/stortinget">stortinget (14)</a></li>
1482
1483 <li><a href="http://www.hungry.com/~pere/blog/tags/surveillance">surveillance (65)</a></li>
1484
1485 <li><a href="http://www.hungry.com/~pere/blog/tags/sysadmin">sysadmin (5)</a></li>
1486
1487 <li><a href="http://www.hungry.com/~pere/blog/tags/usenix">usenix (2)</a></li>
1488
1489 <li><a href="http://www.hungry.com/~pere/blog/tags/valg">valg (9)</a></li>
1490
1491 <li><a href="http://www.hungry.com/~pere/blog/tags/verkidetfri">verkidetfri (22)</a></li>
1492
1493 <li><a href="http://www.hungry.com/~pere/blog/tags/video">video (80)</a></li>
1494
1495 <li><a href="http://www.hungry.com/~pere/blog/tags/vitenskap">vitenskap (4)</a></li>
1496
1497 <li><a href="http://www.hungry.com/~pere/blog/tags/web">web (42)</a></li>
1498
1499 </ul>
1500
1501
1502 </div>
1503 <p style="text-align: right">
1504 Created by <a href="http://steve.org.uk/Software/chronicle">Chronicle v4.6</a>
1505 </p>
1506
1507 </body>
1508 </html>