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