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">
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" />
14 <a href=
"http://www.hungry.com/~pere/blog/">Petter Reinholdtsen
</a>
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
38 <a href=
"https://www.freedesktop.org/wiki/Distributions/AppStream/">AppStream
</a>.
</p>
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>
47 find /sys/devices -name modalias -print0 | xargs -
0 sort -u
50 <p>The modalias identifiers can look something like this:
</p>
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
59 usb:v413CpA001d0000dc09dsc00dp00ic09isc00ip00in00
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
70 % sudo isenkram-lookup
72 firmware-nvidia-graphics
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
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
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>
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
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
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>
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>
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>
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>.
182 <div class=
"padding"></div>
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>
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>
195 <p><strong>Debian Unstable:
</strong></p>
199 ----- -----------------------
211 36 audio/x-vorbis+ogg
222 <p>The list was created like this using a sid chroot:
</p>
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
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:
238 % appstreamcli what-provides mediatype audio/x-scpls | grep Package: | sort -u
239 Package: alsaplayer-common
246 Package: cynthiune.app
251 Package: kylin-burner
253 Package: mediaconch-gui
254 Package: mediainfo-gui
266 Package: soundconverter
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>
278 % appstreamcli what-provides mediatype model/stl | grep Package: | sort -u
281 Package: open3d-viewer
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.
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>
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>.
305 <div class=
"padding"></div>
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>
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>
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>
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>
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
340 <p>As usual we hope to find sponsors to pay for food, lodging and travel.
</p>
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>
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>.
354 <div class=
"padding"></div>
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>
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
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>
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>
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>
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>
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>.
415 <div class=
"padding"></div>
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>
432 <p>To locate packages to work on, the following one-liner can be used:
</p>
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;"
443 <p>Pick a random package from the list and run the latest edition of
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
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>
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>
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>.
481 <div class=
"padding"></div>
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>
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>
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>
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
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
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>
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>.
549 <div class=
"padding"></div>
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>
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>
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
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>
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>
609 <p>Denne pamfletten er nå for første gang tilgjengelig på bokmål,
610 sammen med en nyutgivelse av originalteksten på svensk.
</p>
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>
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
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>
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
643 <b><a href=
"bitcoin:15oWEoG9dUPovwmUL9KWAnYRtNJEkP1u1b">15oWEoG9dUPovwmUL9KWAnYRtNJEkP1u1b
</a></b>. Merk,
644 betaling med bitcoin er ikke anonymt. :)
</p>
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>.
654 <div class=
"padding"></div>
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
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
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>
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>
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>.
695 <div class=
"padding"></div>
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.
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:
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;"
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>
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>
734 # See also https://bugs.debian.org/
804722#
31
738 # Move to this Standards-Version.
743 if [ -z "$PKG" ]; then
744 echo "usage: $
0 <pkgname>"
748 if [ -e "${PKG}-salsa
" ]; then
749 echo "error: ${PKG}-salsa already exist, aborting.
"
753 if [ -z "ALLOWFAILURE
" ] ; then
757 # Fetch every snapshotted source package. Manually loop until all
758 # transfers succeed, as 'gbp import-dscs --debsnap' do not fail on
760 until debsnap --force -v $PKG || $ALLOWFAILURE ; do sleep 1; done
761 mkdir ${PKG}-salsa; cd ${PKG}-salsa
764 # Specify branches to override any debian/gbp.conf file present in the
766 gbp import-dscs --debian-branch=master --upstream-branch=upstream \
767 --pristine-tar ../source-$PKG/*.dsc
769 # Add Vcs pointing to Salsa Debian project (must be manually created
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
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
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
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
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
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>
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>
813 git remote add origin git@salsa.debian.org:debian/perl-byacc.git
814 git push --set-upstream origin master upstream pristine-tar
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>
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
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
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>
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>
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>
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
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>.
881 <div class=
"padding"></div>
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>
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>
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>.
908 <div class=
"padding"></div>
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>
921 <li><a href=
"http://www.hungry.com/~pere/blog/archive/2025/01/">January (
3)
</a></li>
928 <li><a href=
"http://www.hungry.com/~pere/blog/archive/2024/01/">January (
1)
</a></li>
930 <li><a href=
"http://www.hungry.com/~pere/blog/archive/2024/02/">February (
1)
</a></li>
932 <li><a href=
"http://www.hungry.com/~pere/blog/archive/2024/03/">March (
2)
</a></li>
934 <li><a href=
"http://www.hungry.com/~pere/blog/archive/2024/04/">April (
3)
</a></li>
936 <li><a href=
"http://www.hungry.com/~pere/blog/archive/2024/05/">May (
1)
</a></li>
938 <li><a href=
"http://www.hungry.com/~pere/blog/archive/2024/06/">June (
1)
</a></li>
940 <li><a href=
"http://www.hungry.com/~pere/blog/archive/2024/07/">July (
2)
</a></li>
942 <li><a href=
"http://www.hungry.com/~pere/blog/archive/2024/12/">December (
1)
</a></li>
949 <li><a href=
"http://www.hungry.com/~pere/blog/archive/2023/01/">January (
3)
</a></li>
951 <li><a href=
"http://www.hungry.com/~pere/blog/archive/2023/02/">February (
1)
</a></li>
953 <li><a href=
"http://www.hungry.com/~pere/blog/archive/2023/04/">April (
2)
</a></li>
955 <li><a href=
"http://www.hungry.com/~pere/blog/archive/2023/05/">May (
3)
</a></li>
957 <li><a href=
"http://www.hungry.com/~pere/blog/archive/2023/06/">June (
1)
</a></li>
959 <li><a href=
"http://www.hungry.com/~pere/blog/archive/2023/08/">August (
1)
</a></li>
961 <li><a href=
"http://www.hungry.com/~pere/blog/archive/2023/09/">September (
1)
</a></li>
963 <li><a href=
"http://www.hungry.com/~pere/blog/archive/2023/10/">October (
1)
</a></li>
965 <li><a href=
"http://www.hungry.com/~pere/blog/archive/2023/11/">November (
4)
</a></li>
967 <li><a href=
"http://www.hungry.com/~pere/blog/archive/2023/12/">December (
1)
</a></li>
974 <li><a href=
"http://www.hungry.com/~pere/blog/archive/2022/02/">February (
1)
</a></li>
976 <li><a href=
"http://www.hungry.com/~pere/blog/archive/2022/03/">March (
3)
</a></li>
978 <li><a href=
"http://www.hungry.com/~pere/blog/archive/2022/04/">April (
2)
</a></li>
980 <li><a href=
"http://www.hungry.com/~pere/blog/archive/2022/06/">June (
2)
</a></li>
982 <li><a href=
"http://www.hungry.com/~pere/blog/archive/2022/07/">July (
1)
</a></li>
984 <li><a href=
"http://www.hungry.com/~pere/blog/archive/2022/09/">September (
1)
</a></li>
986 <li><a href=
"http://www.hungry.com/~pere/blog/archive/2022/10/">October (
1)
</a></li>
988 <li><a href=
"http://www.hungry.com/~pere/blog/archive/2022/12/">December (
1)
</a></li>
995 <li><a href=
"http://www.hungry.com/~pere/blog/archive/2021/01/">January (
2)
</a></li>
997 <li><a href=
"http://www.hungry.com/~pere/blog/archive/2021/02/">February (
1)
</a></li>
999 <li><a href=
"http://www.hungry.com/~pere/blog/archive/2021/05/">May (
1)
</a></li>
1001 <li><a href=
"http://www.hungry.com/~pere/blog/archive/2021/06/">June (
1)
</a></li>
1003 <li><a href=
"http://www.hungry.com/~pere/blog/archive/2021/07/">July (
3)
</a></li>
1005 <li><a href=
"http://www.hungry.com/~pere/blog/archive/2021/08/">August (
1)
</a></li>
1007 <li><a href=
"http://www.hungry.com/~pere/blog/archive/2021/09/">September (
1)
</a></li>
1009 <li><a href=
"http://www.hungry.com/~pere/blog/archive/2021/10/">October (
1)
</a></li>
1011 <li><a href=
"http://www.hungry.com/~pere/blog/archive/2021/12/">December (
1)
</a></li>
1018 <li><a href=
"http://www.hungry.com/~pere/blog/archive/2020/02/">February (
2)
</a></li>
1020 <li><a href=
"http://www.hungry.com/~pere/blog/archive/2020/03/">March (
2)
</a></li>
1022 <li><a href=
"http://www.hungry.com/~pere/blog/archive/2020/04/">April (
2)
</a></li>
1024 <li><a href=
"http://www.hungry.com/~pere/blog/archive/2020/05/">May (
3)
</a></li>
1026 <li><a href=
"http://www.hungry.com/~pere/blog/archive/2020/06/">June (
2)
</a></li>
1028 <li><a href=
"http://www.hungry.com/~pere/blog/archive/2020/07/">July (
1)
</a></li>
1030 <li><a href=
"http://www.hungry.com/~pere/blog/archive/2020/09/">September (
1)
</a></li>
1032 <li><a href=
"http://www.hungry.com/~pere/blog/archive/2020/10/">October (
1)
</a></li>
1034 <li><a href=
"http://www.hungry.com/~pere/blog/archive/2020/11/">November (
1)
</a></li>
1041 <li><a href=
"http://www.hungry.com/~pere/blog/archive/2019/01/">January (
4)
</a></li>
1043 <li><a href=
"http://www.hungry.com/~pere/blog/archive/2019/02/">February (
3)
</a></li>
1045 <li><a href=
"http://www.hungry.com/~pere/blog/archive/2019/03/">March (
3)
</a></li>
1047 <li><a href=
"http://www.hungry.com/~pere/blog/archive/2019/05/">May (
2)
</a></li>
1049 <li><a href=
"http://www.hungry.com/~pere/blog/archive/2019/06/">June (
5)
</a></li>
1051 <li><a href=
"http://www.hungry.com/~pere/blog/archive/2019/07/">July (
2)
</a></li>
1053 <li><a href=
"http://www.hungry.com/~pere/blog/archive/2019/08/">August (
1)
</a></li>
1055 <li><a href=
"http://www.hungry.com/~pere/blog/archive/2019/09/">September (
1)
</a></li>
1057 <li><a href=
"http://www.hungry.com/~pere/blog/archive/2019/11/">November (
1)
</a></li>
1059 <li><a href=
"http://www.hungry.com/~pere/blog/archive/2019/12/">December (
4)
</a></li>
1066 <li><a href=
"http://www.hungry.com/~pere/blog/archive/2018/01/">January (
1)
</a></li>
1068 <li><a href=
"http://www.hungry.com/~pere/blog/archive/2018/02/">February (
5)
</a></li>
1070 <li><a href=
"http://www.hungry.com/~pere/blog/archive/2018/03/">March (
5)
</a></li>
1072 <li><a href=
"http://www.hungry.com/~pere/blog/archive/2018/04/">April (
3)
</a></li>
1074 <li><a href=
"http://www.hungry.com/~pere/blog/archive/2018/06/">June (
2)
</a></li>
1076 <li><a href=
"http://www.hungry.com/~pere/blog/archive/2018/07/">July (
5)
</a></li>
1078 <li><a href=
"http://www.hungry.com/~pere/blog/archive/2018/08/">August (
3)
</a></li>
1080 <li><a href=
"http://www.hungry.com/~pere/blog/archive/2018/09/">September (
3)
</a></li>
1082 <li><a href=
"http://www.hungry.com/~pere/blog/archive/2018/10/">October (
5)
</a></li>
1084 <li><a href=
"http://www.hungry.com/~pere/blog/archive/2018/11/">November (
2)
</a></li>
1086 <li><a href=
"http://www.hungry.com/~pere/blog/archive/2018/12/">December (
4)
</a></li>
1093 <li><a href=
"http://www.hungry.com/~pere/blog/archive/2017/01/">January (
4)
</a></li>
1095 <li><a href=
"http://www.hungry.com/~pere/blog/archive/2017/02/">February (
3)
</a></li>
1097 <li><a href=
"http://www.hungry.com/~pere/blog/archive/2017/03/">March (
5)
</a></li>
1099 <li><a href=
"http://www.hungry.com/~pere/blog/archive/2017/04/">April (
2)
</a></li>
1101 <li><a href=
"http://www.hungry.com/~pere/blog/archive/2017/06/">June (
5)
</a></li>
1103 <li><a href=
"http://www.hungry.com/~pere/blog/archive/2017/07/">July (
1)
</a></li>
1105 <li><a href=
"http://www.hungry.com/~pere/blog/archive/2017/08/">August (
1)
</a></li>
1107 <li><a href=
"http://www.hungry.com/~pere/blog/archive/2017/09/">September (
3)
</a></li>
1109 <li><a href=
"http://www.hungry.com/~pere/blog/archive/2017/10/">October (
5)
</a></li>
1111 <li><a href=
"http://www.hungry.com/~pere/blog/archive/2017/11/">November (
3)
</a></li>
1113 <li><a href=
"http://www.hungry.com/~pere/blog/archive/2017/12/">December (
4)
</a></li>
1120 <li><a href=
"http://www.hungry.com/~pere/blog/archive/2016/01/">January (
3)
</a></li>
1122 <li><a href=
"http://www.hungry.com/~pere/blog/archive/2016/02/">February (
2)
</a></li>
1124 <li><a href=
"http://www.hungry.com/~pere/blog/archive/2016/03/">March (
3)
</a></li>
1126 <li><a href=
"http://www.hungry.com/~pere/blog/archive/2016/04/">April (
8)
</a></li>
1128 <li><a href=
"http://www.hungry.com/~pere/blog/archive/2016/05/">May (
8)
</a></li>
1130 <li><a href=
"http://www.hungry.com/~pere/blog/archive/2016/06/">June (
2)
</a></li>
1132 <li><a href=
"http://www.hungry.com/~pere/blog/archive/2016/07/">July (
2)
</a></li>
1134 <li><a href=
"http://www.hungry.com/~pere/blog/archive/2016/08/">August (
5)
</a></li>
1136 <li><a href=
"http://www.hungry.com/~pere/blog/archive/2016/09/">September (
2)
</a></li>
1138 <li><a href=
"http://www.hungry.com/~pere/blog/archive/2016/10/">October (
3)
</a></li>
1140 <li><a href=
"http://www.hungry.com/~pere/blog/archive/2016/11/">November (
8)
</a></li>
1142 <li><a href=
"http://www.hungry.com/~pere/blog/archive/2016/12/">December (
5)
</a></li>
1149 <li><a href=
"http://www.hungry.com/~pere/blog/archive/2015/01/">January (
7)
</a></li>
1151 <li><a href=
"http://www.hungry.com/~pere/blog/archive/2015/02/">February (
6)
</a></li>
1153 <li><a href=
"http://www.hungry.com/~pere/blog/archive/2015/03/">March (
1)
</a></li>
1155 <li><a href=
"http://www.hungry.com/~pere/blog/archive/2015/04/">April (
4)
</a></li>
1157 <li><a href=
"http://www.hungry.com/~pere/blog/archive/2015/05/">May (
3)
</a></li>
1159 <li><a href=
"http://www.hungry.com/~pere/blog/archive/2015/06/">June (
4)
</a></li>
1161 <li><a href=
"http://www.hungry.com/~pere/blog/archive/2015/07/">July (
6)
</a></li>
1163 <li><a href=
"http://www.hungry.com/~pere/blog/archive/2015/08/">August (
2)
</a></li>
1165 <li><a href=
"http://www.hungry.com/~pere/blog/archive/2015/09/">September (
2)
</a></li>
1167 <li><a href=
"http://www.hungry.com/~pere/blog/archive/2015/10/">October (
9)
</a></li>
1169 <li><a href=
"http://www.hungry.com/~pere/blog/archive/2015/11/">November (
6)
</a></li>
1171 <li><a href=
"http://www.hungry.com/~pere/blog/archive/2015/12/">December (
3)
</a></li>
1178 <li><a href=
"http://www.hungry.com/~pere/blog/archive/2014/01/">January (
2)
</a></li>
1180 <li><a href=
"http://www.hungry.com/~pere/blog/archive/2014/02/">February (
3)
</a></li>
1182 <li><a href=
"http://www.hungry.com/~pere/blog/archive/2014/03/">March (
8)
</a></li>
1184 <li><a href=
"http://www.hungry.com/~pere/blog/archive/2014/04/">April (
7)
</a></li>
1186 <li><a href=
"http://www.hungry.com/~pere/blog/archive/2014/05/">May (
1)
</a></li>
1188 <li><a href=
"http://www.hungry.com/~pere/blog/archive/2014/06/">June (
2)
</a></li>
1190 <li><a href=
"http://www.hungry.com/~pere/blog/archive/2014/07/">July (
2)
</a></li>
1192 <li><a href=
"http://www.hungry.com/~pere/blog/archive/2014/08/">August (
2)
</a></li>
1194 <li><a href=
"http://www.hungry.com/~pere/blog/archive/2014/09/">September (
5)
</a></li>
1196 <li><a href=
"http://www.hungry.com/~pere/blog/archive/2014/10/">October (
6)
</a></li>
1198 <li><a href=
"http://www.hungry.com/~pere/blog/archive/2014/11/">November (
3)
</a></li>
1200 <li><a href=
"http://www.hungry.com/~pere/blog/archive/2014/12/">December (
5)
</a></li>
1207 <li><a href=
"http://www.hungry.com/~pere/blog/archive/2013/01/">January (
11)
</a></li>
1209 <li><a href=
"http://www.hungry.com/~pere/blog/archive/2013/02/">February (
9)
</a></li>
1211 <li><a href=
"http://www.hungry.com/~pere/blog/archive/2013/03/">March (
9)
</a></li>
1213 <li><a href=
"http://www.hungry.com/~pere/blog/archive/2013/04/">April (
6)
</a></li>
1215 <li><a href=
"http://www.hungry.com/~pere/blog/archive/2013/05/">May (
9)
</a></li>
1217 <li><a href=
"http://www.hungry.com/~pere/blog/archive/2013/06/">June (
10)
</a></li>
1219 <li><a href=
"http://www.hungry.com/~pere/blog/archive/2013/07/">July (
7)
</a></li>
1221 <li><a href=
"http://www.hungry.com/~pere/blog/archive/2013/08/">August (
3)
</a></li>
1223 <li><a href=
"http://www.hungry.com/~pere/blog/archive/2013/09/">September (
5)
</a></li>
1225 <li><a href=
"http://www.hungry.com/~pere/blog/archive/2013/10/">October (
7)
</a></li>
1227 <li><a href=
"http://www.hungry.com/~pere/blog/archive/2013/11/">November (
9)
</a></li>
1229 <li><a href=
"http://www.hungry.com/~pere/blog/archive/2013/12/">December (
3)
</a></li>
1236 <li><a href=
"http://www.hungry.com/~pere/blog/archive/2012/01/">January (
7)
</a></li>
1238 <li><a href=
"http://www.hungry.com/~pere/blog/archive/2012/02/">February (
10)
</a></li>
1240 <li><a href=
"http://www.hungry.com/~pere/blog/archive/2012/03/">March (
17)
</a></li>
1242 <li><a href=
"http://www.hungry.com/~pere/blog/archive/2012/04/">April (
12)
</a></li>
1244 <li><a href=
"http://www.hungry.com/~pere/blog/archive/2012/05/">May (
12)
</a></li>
1246 <li><a href=
"http://www.hungry.com/~pere/blog/archive/2012/06/">June (
20)
</a></li>
1248 <li><a href=
"http://www.hungry.com/~pere/blog/archive/2012/07/">July (
17)
</a></li>
1250 <li><a href=
"http://www.hungry.com/~pere/blog/archive/2012/08/">August (
6)
</a></li>
1252 <li><a href=
"http://www.hungry.com/~pere/blog/archive/2012/09/">September (
9)
</a></li>
1254 <li><a href=
"http://www.hungry.com/~pere/blog/archive/2012/10/">October (
17)
</a></li>
1256 <li><a href=
"http://www.hungry.com/~pere/blog/archive/2012/11/">November (
10)
</a></li>
1258 <li><a href=
"http://www.hungry.com/~pere/blog/archive/2012/12/">December (
7)
</a></li>
1265 <li><a href=
"http://www.hungry.com/~pere/blog/archive/2011/01/">January (
16)
</a></li>
1267 <li><a href=
"http://www.hungry.com/~pere/blog/archive/2011/02/">February (
6)
</a></li>
1269 <li><a href=
"http://www.hungry.com/~pere/blog/archive/2011/03/">March (
6)
</a></li>
1271 <li><a href=
"http://www.hungry.com/~pere/blog/archive/2011/04/">April (
7)
</a></li>
1273 <li><a href=
"http://www.hungry.com/~pere/blog/archive/2011/05/">May (
3)
</a></li>
1275 <li><a href=
"http://www.hungry.com/~pere/blog/archive/2011/06/">June (
2)
</a></li>
1277 <li><a href=
"http://www.hungry.com/~pere/blog/archive/2011/07/">July (
7)
</a></li>
1279 <li><a href=
"http://www.hungry.com/~pere/blog/archive/2011/08/">August (
6)
</a></li>
1281 <li><a href=
"http://www.hungry.com/~pere/blog/archive/2011/09/">September (
4)
</a></li>
1283 <li><a href=
"http://www.hungry.com/~pere/blog/archive/2011/10/">October (
2)
</a></li>
1285 <li><a href=
"http://www.hungry.com/~pere/blog/archive/2011/11/">November (
3)
</a></li>
1287 <li><a href=
"http://www.hungry.com/~pere/blog/archive/2011/12/">December (
1)
</a></li>
1294 <li><a href=
"http://www.hungry.com/~pere/blog/archive/2010/01/">January (
2)
</a></li>
1296 <li><a href=
"http://www.hungry.com/~pere/blog/archive/2010/02/">February (
1)
</a></li>
1298 <li><a href=
"http://www.hungry.com/~pere/blog/archive/2010/03/">March (
3)
</a></li>
1300 <li><a href=
"http://www.hungry.com/~pere/blog/archive/2010/04/">April (
3)
</a></li>
1302 <li><a href=
"http://www.hungry.com/~pere/blog/archive/2010/05/">May (
9)
</a></li>
1304 <li><a href=
"http://www.hungry.com/~pere/blog/archive/2010/06/">June (
14)
</a></li>
1306 <li><a href=
"http://www.hungry.com/~pere/blog/archive/2010/07/">July (
12)
</a></li>
1308 <li><a href=
"http://www.hungry.com/~pere/blog/archive/2010/08/">August (
13)
</a></li>
1310 <li><a href=
"http://www.hungry.com/~pere/blog/archive/2010/09/">September (
7)
</a></li>
1312 <li><a href=
"http://www.hungry.com/~pere/blog/archive/2010/10/">October (
9)
</a></li>
1314 <li><a href=
"http://www.hungry.com/~pere/blog/archive/2010/11/">November (
13)
</a></li>
1316 <li><a href=
"http://www.hungry.com/~pere/blog/archive/2010/12/">December (
12)
</a></li>
1323 <li><a href=
"http://www.hungry.com/~pere/blog/archive/2009/01/">January (
8)
</a></li>
1325 <li><a href=
"http://www.hungry.com/~pere/blog/archive/2009/02/">February (
8)
</a></li>
1327 <li><a href=
"http://www.hungry.com/~pere/blog/archive/2009/03/">March (
12)
</a></li>
1329 <li><a href=
"http://www.hungry.com/~pere/blog/archive/2009/04/">April (
10)
</a></li>
1331 <li><a href=
"http://www.hungry.com/~pere/blog/archive/2009/05/">May (
9)
</a></li>
1333 <li><a href=
"http://www.hungry.com/~pere/blog/archive/2009/06/">June (
3)
</a></li>
1335 <li><a href=
"http://www.hungry.com/~pere/blog/archive/2009/07/">July (
4)
</a></li>
1337 <li><a href=
"http://www.hungry.com/~pere/blog/archive/2009/08/">August (
3)
</a></li>
1339 <li><a href=
"http://www.hungry.com/~pere/blog/archive/2009/09/">September (
1)
</a></li>
1341 <li><a href=
"http://www.hungry.com/~pere/blog/archive/2009/10/">October (
2)
</a></li>
1343 <li><a href=
"http://www.hungry.com/~pere/blog/archive/2009/11/">November (
3)
</a></li>
1345 <li><a href=
"http://www.hungry.com/~pere/blog/archive/2009/12/">December (
3)
</a></li>
1352 <li><a href=
"http://www.hungry.com/~pere/blog/archive/2008/11/">November (
5)
</a></li>
1354 <li><a href=
"http://www.hungry.com/~pere/blog/archive/2008/12/">December (
7)
</a></li>
1365 <li><a href=
"http://www.hungry.com/~pere/blog/tags/3d-printer">3d-printer (
19)
</a></li>
1367 <li><a href=
"http://www.hungry.com/~pere/blog/tags/amiga">amiga (
1)
</a></li>
1369 <li><a href=
"http://www.hungry.com/~pere/blog/tags/aros">aros (
1)
</a></li>
1371 <li><a href=
"http://www.hungry.com/~pere/blog/tags/bankid">bankid (
4)
</a></li>
1373 <li><a href=
"http://www.hungry.com/~pere/blog/tags/betalkontant">betalkontant (
9)
</a></li>
1375 <li><a href=
"http://www.hungry.com/~pere/blog/tags/bitcoin">bitcoin (
13)
</a></li>
1377 <li><a href=
"http://www.hungry.com/~pere/blog/tags/bootsystem">bootsystem (
17)
</a></li>
1379 <li><a href=
"http://www.hungry.com/~pere/blog/tags/bsa">bsa (
2)
</a></li>
1381 <li><a href=
"http://www.hungry.com/~pere/blog/tags/chrpath">chrpath (
3)
</a></li>
1383 <li><a href=
"http://www.hungry.com/~pere/blog/tags/debian">debian (
206)
</a></li>
1385 <li><a href=
"http://www.hungry.com/~pere/blog/tags/debian edu">debian edu (
159)
</a></li>
1387 <li><a href=
"http://www.hungry.com/~pere/blog/tags/debian-handbook">debian-handbook (
9)
</a></li>
1389 <li><a href=
"http://www.hungry.com/~pere/blog/tags/digistan">digistan (
11)
</a></li>
1391 <li><a href=
"http://www.hungry.com/~pere/blog/tags/dld">dld (
18)
</a></li>
1393 <li><a href=
"http://www.hungry.com/~pere/blog/tags/docbook">docbook (
33)
</a></li>
1395 <li><a href=
"http://www.hungry.com/~pere/blog/tags/drivstoffpriser">drivstoffpriser (
4)
</a></li>
1397 <li><a href=
"http://www.hungry.com/~pere/blog/tags/english">english (
468)
</a></li>
1399 <li><a href=
"http://www.hungry.com/~pere/blog/tags/fiksgatami">fiksgatami (
23)
</a></li>
1401 <li><a href=
"http://www.hungry.com/~pere/blog/tags/fildeling">fildeling (
14)
</a></li>
1403 <li><a href=
"http://www.hungry.com/~pere/blog/tags/freeculture">freeculture (
34)
</a></li>
1405 <li><a href=
"http://www.hungry.com/~pere/blog/tags/freedombox">freedombox (
9)
</a></li>
1407 <li><a href=
"http://www.hungry.com/~pere/blog/tags/frikanalen">frikanalen (
20)
</a></li>
1409 <li><a href=
"http://www.hungry.com/~pere/blog/tags/h264">h264 (
20)
</a></li>
1411 <li><a href=
"http://www.hungry.com/~pere/blog/tags/intervju">intervju (
43)
</a></li>
1413 <li><a href=
"http://www.hungry.com/~pere/blog/tags/isenkram">isenkram (
20)
</a></li>
1415 <li><a href=
"http://www.hungry.com/~pere/blog/tags/kart">kart (
23)
</a></li>
1417 <li><a href=
"http://www.hungry.com/~pere/blog/tags/kodi">kodi (
6)
</a></li>
1419 <li><a href=
"http://www.hungry.com/~pere/blog/tags/ldap">ldap (
9)
</a></li>
1421 <li><a href=
"http://www.hungry.com/~pere/blog/tags/lego">lego (
5)
</a></li>
1423 <li><a href=
"http://www.hungry.com/~pere/blog/tags/lenker">lenker (
8)
</a></li>
1425 <li><a href=
"http://www.hungry.com/~pere/blog/tags/linuxcnc">linuxcnc (
8)
</a></li>
1427 <li><a href=
"http://www.hungry.com/~pere/blog/tags/lsdvd">lsdvd (
2)
</a></li>
1429 <li><a href=
"http://www.hungry.com/~pere/blog/tags/ltsp">ltsp (
1)
</a></li>
1431 <li><a href=
"http://www.hungry.com/~pere/blog/tags/madewithcc">madewithcc (
3)
</a></li>
1433 <li><a href=
"http://www.hungry.com/~pere/blog/tags/mesh network">mesh network (
8)
</a></li>
1435 <li><a href=
"http://www.hungry.com/~pere/blog/tags/multimedia">multimedia (
46)
</a></li>
1437 <li><a href=
"http://www.hungry.com/~pere/blog/tags/nice free software">nice free software (
15)
</a></li>
1439 <li><a href=
"http://www.hungry.com/~pere/blog/tags/noark5">noark5 (
25)
</a></li>
1441 <li><a href=
"http://www.hungry.com/~pere/blog/tags/norsk">norsk (
325)
</a></li>
1443 <li><a href=
"http://www.hungry.com/~pere/blog/tags/nuug">nuug (
199)
</a></li>
1445 <li><a href=
"http://www.hungry.com/~pere/blog/tags/offentlig innsyn">offentlig innsyn (
41)
</a></li>
1447 <li><a href=
"http://www.hungry.com/~pere/blog/tags/open311">open311 (
2)
</a></li>
1449 <li><a href=
"http://www.hungry.com/~pere/blog/tags/opensnitch">opensnitch (
4)
</a></li>
1451 <li><a href=
"http://www.hungry.com/~pere/blog/tags/opphavsrett">opphavsrett (
76)
</a></li>
1453 <li><a href=
"http://www.hungry.com/~pere/blog/tags/personvern">personvern (
114)
</a></li>
1455 <li><a href=
"http://www.hungry.com/~pere/blog/tags/raid">raid (
4)
</a></li>
1457 <li><a href=
"http://www.hungry.com/~pere/blog/tags/reactos">reactos (
1)
</a></li>
1459 <li><a href=
"http://www.hungry.com/~pere/blog/tags/reprap">reprap (
11)
</a></li>
1461 <li><a href=
"http://www.hungry.com/~pere/blog/tags/rfid">rfid (
3)
</a></li>
1463 <li><a href=
"http://www.hungry.com/~pere/blog/tags/robot">robot (
17)
</a></li>
1465 <li><a href=
"http://www.hungry.com/~pere/blog/tags/rss">rss (
1)
</a></li>
1467 <li><a href=
"http://www.hungry.com/~pere/blog/tags/ruter">ruter (
7)
</a></li>
1469 <li><a href=
"http://www.hungry.com/~pere/blog/tags/scraperwiki">scraperwiki (
2)
</a></li>
1471 <li><a href=
"http://www.hungry.com/~pere/blog/tags/sikkerhet">sikkerhet (
60)
</a></li>
1473 <li><a href=
"http://www.hungry.com/~pere/blog/tags/sitesummary">sitesummary (
4)
</a></li>
1475 <li><a href=
"http://www.hungry.com/~pere/blog/tags/skepsis">skepsis (
5)
</a></li>
1477 <li><a href=
"http://www.hungry.com/~pere/blog/tags/standard">standard (
76)
</a></li>
1479 <li><a href=
"http://www.hungry.com/~pere/blog/tags/stavekontroll">stavekontroll (
7)
</a></li>
1481 <li><a href=
"http://www.hungry.com/~pere/blog/tags/stortinget">stortinget (
14)
</a></li>
1483 <li><a href=
"http://www.hungry.com/~pere/blog/tags/surveillance">surveillance (
65)
</a></li>
1485 <li><a href=
"http://www.hungry.com/~pere/blog/tags/sysadmin">sysadmin (
5)
</a></li>
1487 <li><a href=
"http://www.hungry.com/~pere/blog/tags/usenix">usenix (
2)
</a></li>
1489 <li><a href=
"http://www.hungry.com/~pere/blog/tags/valg">valg (
9)
</a></li>
1491 <li><a href=
"http://www.hungry.com/~pere/blog/tags/verkidetfri">verkidetfri (
22)
</a></li>
1493 <li><a href=
"http://www.hungry.com/~pere/blog/tags/video">video (
80)
</a></li>
1495 <li><a href=
"http://www.hungry.com/~pere/blog/tags/vitenskap">vitenskap (
4)
</a></li>
1497 <li><a href=
"http://www.hungry.com/~pere/blog/tags/web">web (
42)
</a></li>
1503 <p style=
"text-align: right">
1504 Created by
<a href=
"http://steve.org.uk/Software/chronicle">Chronicle v4.6
</a>