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/New_lsdvd_release_0_18_after_ten_years.html">New lsdvd release
0.18 after ten years
</a></div>
24 <div class=
"date">21st December
2024</div>
25 <div class=
"body"><p>The rumors of the death of
26 <a href=
"https://sourceforge.net/projects/lsdvd/">the lsdvd project
</a>
27 is slightly exaggerated. And the last few months, we have been
28 working on fixing and improving it, culminating in a new release last
29 night. This is the list of changes in the new
0.18 release, as
30 <a href=
"https://sourceforge.net/p/lsdvd/mailman/message/59108028/">announced
31 on the project mailing list
</a>:
</p>
35 <li>Simplified autoconf setup, dropped --enable-debug option.
</li>
36 <li>Improved video resolution reporting (
<a href=
"https://sourceforge.net/p/lsdvd/patches/8/">Fixes #
8</a>).
</li>
37 <li>Applied patches fetched from BSDs (
<a href=
"https://sourceforge.net/p/lsdvd/patches/7/">Fixes #
7</a>).
</li>
38 <li>Corrected Perl output (
<a href=
"https://sourceforge.net/p/lsdvd/patches/1/">Fixes #
1</a>).
</li>
39 <li>Adjusted Pan and Scan entries to produce valid XML.
</li>
40 <li>Changed --help output from stderr to stdout.
</li>
41 <li>Corrected aspect ratio and audio format formatting.
</li>
42 <li>Avoid segfault when hitting a NULL pointer in the IFO structure.
</li>
43 <li>Change build rules to supress compiler flags, to make it easier to
45 <li>Set default DVD device based on OS (Linux, *BSD, Darwin)
</li>
46 <li>Added libdvdread DVDDiscID to output.
</li>
47 <li>Corrected typo in longest track value in XML format.
</li>
48 <li>Switched XML output to use libxml to avoid string encoding issues.
</li>
49 <li>Added simple build time test suite.
</li>
50 <li>Cleaned up language code handling and adding missing mapping for
51 language codes 'nb' and 'nn'.
</li>
52 <li>Added JSON output support using -Oj.
</li>
55 <p>The most exciting news to me is easy access to the DVDDiscID, which
56 make it a lot easier to identify DVD duplicates across a large
57 collection of DVDs. During testing it has proved to be very effective
58 ad identifying when DVDs in a DVD box (say all Star Wars movies) is
59 identical to DVDs sold individually (like the same Star Wars movies
60 packaged individually).
</p>
62 <p>Because none of the current developers got access to do tarball
63 releases on Sourceforge any more, the release is only available as
64 <a href=
"https://sourceforge.net/p/lsdvd/git/ci/0.18/tree/">a git
65 tag
</a> in the repository. Lets hope it do not take ten years for the
66 next release. The project are discussing to move away from
67 Sourceforge, but it has not yet concluded.
</p>
69 <p>As usual, if you use Bitcoin and want to show your support of my
70 activities, please send Bitcoin donations to my address
71 <b><a href=
"bitcoin:15oWEoG9dUPovwmUL9KWAnYRtNJEkP1u1b">15oWEoG9dUPovwmUL9KWAnYRtNJEkP1u1b
</a></b>.
</p>
76 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>.
81 <div class=
"padding"></div>
84 <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>
85 <div class=
"date">11th July
2024</div>
86 <div class=
"body"><p><a href=
"https://people.skolelinux.org/pere/blog/Time_to_move_orphaned_Debian_packages_to_git.html">In
87 April
</a>, I started migrating orphaned Debian packages without any
88 version control system listed in debian/control to git. This morning,
89 my Debian QA page finally reached
200 QA packages migrated. In
90 reality there are a few more, as the packages uploaded by someone else
91 after my initial upload have disappeared from my QA uploads list. As
92 I am running out of steam and will most likely focus on other parts of
93 Debian moving forward, I hope someone else will find time to continue
94 the migration to bring the number of orphaned packages without any
95 version control system down to zero. Here is the updated recipe if
96 someone want to help out.
</p>
98 <p>To locate packages to work on, the following one-liner can be used:
</p>
101 PGPASSWORD="udd-mirror" psql --port=
5432 --host=udd-mirror.debian.net \
102 --username=udd-mirror udd -c "select source from sources \
103 where release = 'sid' and (vcs_url ilike '%anonscm.debian.org%' \
104 OR vcs_browser ilike '%anonscm.debian.org%' or vcs_url IS NULL \
105 OR vcs_browser IS NULL) AND maintainer ilike '%packages@qa.debian.org%' \
106 order by random() limit
10;"
109 <p>Pick a random package from the list and run the latest edition of
111 <tt><a href=
"https://people.skolelinux.org/pere/blog/images/2024-07-11-debian-snap-to-salsa.sh">debian-snap-to-salsa
</a></tt>
112 with the package name as the argument to prepare a git repository with
113 the existing packaging. This will download old Debian packages from
114 <tt>snapshot.debian.org
</tt>. Note that very recent uploads will not
115 be included, so check out the package on
<tt>tracker.debian.org
</tt>.
116 Next, run
<tt>gbp buildpackage --git-ignore-new
</tt> to verify that
117 the package build as it should, and then visit
118 <a href=
"https://salsa.debian.org/debian/">https://salsa.debian.org/debian/
</a>
119 and make sure there is not already a git repository for the package
120 there. I also did
<tt>git log -p debian/control
</tt> and look for vcs
121 entries to check if the package used to have a git repository on
122 Alioth, and see if it can be a useful starting point moving forward.
123 If all this check out, I created a new gitlab project below the Debian
124 group on salsa, push the package source there and upload a new version.
125 I tend to also ensure build hardening is enabled, if it prove to be
126 easy, and check if I can easily fix any lintian issues or bug reports.
127 If the process took more than
20 minutes, I dropped it and moved on to
130 <p>If I found patches in debian/patches/ that were not yet passed
131 upstream, I would send an email to make sure upstream know about them.
132 This has proved to be a valuable step, and caused several new releases
133 for software that initially appeared abandoned. :)
</p>
135 <p>As usual, if you use Bitcoin and want to show your support of my
136 activities, please send Bitcoin donations to my address
137 <b><a href=
"bitcoin:15oWEoG9dUPovwmUL9KWAnYRtNJEkP1u1b">15oWEoG9dUPovwmUL9KWAnYRtNJEkP1u1b
</a></b>.
</p>
142 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>.
147 <div class=
"padding"></div>
150 <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>
151 <div class=
"date">10th July
2024</div>
152 <div class=
"body"><p>The Norwegian
<a href=
"https://linuxcnc.org/">The LinuxCNC
</a>
153 developer gathering
2024 is over. It was a great and productive
154 weekend, and I am sad that it is over.
</p>
156 <p>Regular readers probably still remember what LinuxCNC is, but her
157 is a quick summary for those that forgot? LinuxCNC is a free software
158 system for numerical control of machines such as milling machines,
159 lathes, plasma cutters, routers, cutting machines, robots and
160 hexapods. It eats G-code and produce motor movement and other changes
161 to the physical world, while reading sensor input.
</p>
163 <p>I am not quite sure about the total head count, as not all people
164 were present at the gathering the entire weekend, but I believe it was
165 close to
10 people showing their faces at the gathering. The "hard
166 core" of the group, who stayed the entire weekend, were two from
167 Norway, two from Germany and one from England. I am happy with the
168 outcome from the gathering. We managed to wrap up a new stable
169 LinuxCNC release
2.9.3 and even tested it on real hardware within
170 minutes of the release. The release notes for
2.9.3 are still being
171 written, but should show up on on the project site in the next few
172 days. We managed to go through around twenty pull requests and merge
173 then into either the stable release (
2.9) or the development branch
174 (master). There are still around thirty pull requests left to
175 process, so we are not out of work yet. We even managed to
176 fix/improve a slightly worn lathe, and experiment with running a
177 mechanical clock using G-code.
</p>
179 <p>The evening barbeque worked well both on Saturday and Sunday. It
180 is quite fun to light up a charcoal grill using compressed air. Sadly
181 the weather was not the best, so we stayed indoors most of the
184 <p>This gathering was made possible partly with sponsoring from both
185 <a href=
"https://www.redpill-linpro.com/">Redpill Linpro
</a>,
186 <a href=
"https://debian.org/">Debian
</a> and
187 <a href=
"https://nuugfoundation.no/">NUUG Foundation
</a>, and we are
188 most grateful for the support. I would also like to thank the local
189 school for lending us some furniture, and of course the rest of the
190 members of the organizers team, Asle and Bosse, for their countless
191 contributions. The gathering was such success that we want to do it
194 <p>We plan to organize the next Norwegian LinuxCNC developer gathering
195 at the end of June next year, the weekend Friday
27th to Sunday
29th
196 of June
2025. I recommend you reserve the dates on your calendar
197 today. Other related communities are also welcome to join in, for
198 example those working on systems like FreeCAD and opencamlib, as I am
199 sure we have much in common and sharing experiences would be very
200 useful to all involved. We are of course looking for sponsors for
201 this gathering already. The total budget for this gathering was
202 around NOK
25.000 (around EUR
2.300), so our needs are quite modest.
203 Perhaps a machine or tools company would like to help out the free
204 software manufacturing community by sponsoring food, lodging and
205 transport for such gathering?
</p>
210 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>.
215 <div class=
"padding"></div>
218 <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>
219 <div class=
"date"> 4th June
2024</div>
220 <div class=
"body"><img align=
"center" src=
"https://people.skolelinux.org/pere/blog/images/2024-06-04-bok-elsa-laula.svg" width=
"20%" align=
"center" border=
"1"></a>
222 <p>Da jeg i høst hørte jeg et innslag på
223 <a href=
"https://radiorakel.no/">radiOrakel
</a> om en inspirerende dame
224 som levde for over hundre år siden, fikk jeg en vill ide. Elsa Laula
225 var en svensk samisk dame som ikke bare fikk utdannelsen finansiert av
226 den danske dronningen, men som gjorde så god jobb med å inspirere og
227 organisere den samiske befolkningen at det visstnok ble forslått i
228 Sverige å straffeforfølge henne for oppvigleri før hun flyttet fra
229 Sverige til Norge. Radiopraterne fortalte videre at da Elsa Laula ga
230 ut en pamflett for å inspirere samene til samling var dette den
231 første bok gitt ut av en samisk dame noensinne. Jeg fikk høre at
232 denne korte teksten kun fantes på originalspråket svensk under
233 tittelen «Inför lif eller död» og aldri var oversatt til norsk. Da
234 tenkte jeg, der jeg satt i bilen, at en norsk utgave kan vel jeg
235 fikse. Jeg har jo fått oversatt endel bøker, og en liten pamflett på
236 noen få sider burde jo være grei skuring.
</p>
238 <p>Den imponerende Elsa Laula, som senere la til etternavnet Renberg, har
239 blant annet fått dokumentaren
240 «
<a href=
"https://www.nrk.no/video/elsa-laula-renberg-kvinnen-som-samlet-sapmi_SAPP67002117">Elsa
241 Laula Renberg, kvinnen som samlet Sápmi
</a>» (
2017) av Per Kristian
242 Olsen på NRK, NRK-artikkelen
243 «
<a href=
"https://www.nrk.no/kultur/xl/et-liv-i-kamp-for-samefolkets-rettigheter-1.13351401">Samenes
244 Jeanne d’Arc
</a>» av Karen Brodshaug Sveen (
2017), oppgaven
245 «
<a href=
"https://nordligefolk.no/wp-content/uploads/2020/03/Elsa-Laulas-Info%CC%88r-Lif-och-Do%CC%88d.pdf">Elsa
246 Laulas Innför lif och död – sanningsord i de lappska
247 förhållandena
</a>» av Edel Olsen, biografien
248 «
<a href=
"https://www.siribrochjohansen.no/biografien-om-elsa-laula-renberg/">Elsa
249 Laula Renberg - Historien om samefolkets store Minerva
</a>» (
2015) av
250 Siri Broch Johansen og radiOrakel-podkasten
251 <a href=
"https://radiorakel.no/podcast/revolusjonen-har-et-kvinnelig-ansikt-elsa-laula/">Revolusjonen
252 har et kvinnelig ansikt – Elsa Laula
</a>, for å nevne de jeg har
253 finnet uten å lete spesielt hardt. En virkelig spennende dame, som i
254 tillegg til å inspirere til opprettelsen av samiske organisasjoner,
255 har inspirert til opprettelsen av Sametinget, og født seks barn der
258 <p>I dag er jeg veldig glad for å kunne annonsere at
259 <a href=
"http://www.hungry.com/~pere/publisher/#infoerlifellerdoed2024">bokmålsoversettelsen
260 er klar og tilgjengelig
</a> for både bestilling på papir og
261 epub-utgave fra lulu.com, samt som nettside. Den kringkastede
262 bokinformasjonen ser slik ut:
</p>
266 <p>Den
27 år gamle sørsamiske kvinnen Elsa Laula ga i august
1904 ut
267 en pamflett i Stockholm. Opplaget var på
6000, finansiert av
268 Stockholmsredaktøren Gustav Hedenström, som også bidro i stiftelsen av
269 Lapparnes Centralforbund. Dette kampskriftet var den første boken gitt
270 ut av en samisk kvinne, og hadde som mål å inspirere til opprettelsen
271 av samiske foreninger over hele landet, samt skape blest om
272 sentralforbundet. Pamfletten er et politisk manifest som fortsatt
273 inspirerer i dag.
</p>
275 <p>Denne pamfletten er nå for første gang tilgjengelig på bokmål,
276 sammen med en nyutgivelse av originalteksten på svensk.
</p>
280 <p>Oversettelsen hadde ikke vært mulig uten gode hjelpere. En virkelig
281 stor innsats både i korrekturarbeidet og utforskning av arkaiske
282 svenske ord, står Axel Rosén bak. I tillegg har jeg fått innspill fra
283 Edel May Karlsen og flere andre både på språkføring og historisk
284 bakgrunn for å forstå teksten.
</p>
286 <p>En kuriositet som jeg oppdaget i arbeidet med oversettelsen er at
287 det ikke stemmer at denne boken ikke var oversatt til noen andre
288 språk. Anna Wuolab oversatte den til nordsamisk i
2017 i en utgave
289 gitt ut av samisk skribent- och författarförening (Bágu čálliid
290 searvi) under tittelen «Eallit vai jápmit? : duohtavuođasánit sámi
291 diliid birra = Inför lif eller död? : sanningsord i de lappska
292 förhållandena». Papirutgaven er så vidt jeg kan forstå utsolgt fra
293 forlaget og jeg har ikke klart å finne informasjonsside om boken på
294 Internett. Mulig den er mulig å få tak i som ebok, hvis en skal tro
295 <a href=
"https://search.worldcat.org/title/1405213087">oppføring i
298 <p>Oversetterrammeverket jeg har satt opp for å gjennomføre dette
299 oversettelsesprosjektet håndterer flere språk. Jeg er igang med
300 engelsk utgave, og er åpen for å også gi ut andre oversettelser hvis
301 noen er interessert i å gjøre jobben. Det hadde vært ekstra moro å gi
302 den ut på sørsamisk, det samiske språket i regionen der Elsa Laula kom
303 fra. Der er jeg som vanlig avhengig av frivillige som er også
304 interessert i å gjøre dette på dugnad.
</p>
306 <p>Som vanlig, hvis du bruker Bitcoin og ønsker å vise din støtte til
307 det jeg driver med, setter jeg pris på om du sender Bitcoin-donasjoner
309 <b><a href=
"bitcoin:15oWEoG9dUPovwmUL9KWAnYRtNJEkP1u1b">15oWEoG9dUPovwmUL9KWAnYRtNJEkP1u1b
</a></b>. Merk,
310 betaling med bitcoin er ikke anonymt. :)
</p>
315 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>.
320 <div class=
"padding"></div>
323 <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>
324 <div class=
"date">31st May
2024</div>
325 <div class=
"body"><p><a href=
"https://linuxcnc.org/">The LinuxCNC project
</a> is still
326 going strong. And I believe this great software system for numerical control of
327 machines such as milling machines, lathes, plasma cutters, routers,
328 cutting machines, robots and hexapods, would do even better with more
329 in-person developer gatherings, so we plan to organise such gathering
332 <p>The Norwegian LinuxCNC developer gathering take place the weekend
333 Friday July
5th to
7th this year, and is open for everyone interested
334 in contributing to LinuxCNC and free software manufacturing. Up to
335 date information about the gathering can be found in
336 <a href=
"https://sourceforge.net/p/emc/mailman/emc-developers/thread/123eaae0-f3b9-4170-a251-b7d608f1e974%40bofh.no/">the
337 developer mailing list thread
</a> where the gathering was announced.
338 Thanks to the good people at
340 <a href=
"https://www.debian.org/">Debian
</a> as well as leftover money
341 from last years gathering from
342 <a href=
"https://www.redpill-linpro.com/">Redpill-Linpro
</a> and
343 <a href=
"https://www.nuugfoundation.no/no/">NUUG Foundation
</a>, we
344 have enough sponsor funds to pay for food, and probably also shelter
345 for the people traveling from afar to join us. If you would like to
346 join the gathering, get in touch and add your details on
347 <a href=
"https://pad.efn.no/p/linuxcnc-2024-norway">the pad
</a>.
</p>
349 <p>As usual, if you use Bitcoin and want to show your support of my
350 activities, please send Bitcoin donations to my address
351 <b><a href=
"bitcoin:15oWEoG9dUPovwmUL9KWAnYRtNJEkP1u1b">15oWEoG9dUPovwmUL9KWAnYRtNJEkP1u1b
</a></b>.
</p>
356 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>.
361 <div class=
"padding"></div>
364 <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>
365 <div class=
"date">25th April
2024</div>
366 <div class=
"body"><p>Nine days ago, I started migrating orphaned Debian packages with no
367 version control system listed in debian/control of the source to git.
368 At the time there were
438 such packages. Now there are
391,
369 according to the UDD. In reality it is slightly less, as there is a
370 delay between uploads and UDD updates. In the nine days since, I have
371 thus been able to work my way through ten percent of the packages. I
372 am starting to run out of steam, and hope someone else will also help
373 brushing some dust of these packages. Here is a recipe how to do it.
375 I start by picking a random package by querying the UDD for a list of
376 10 random packages from the set of remaining packages:
379 PGPASSWORD="udd-mirror" psql --port=
5432 --host=udd-mirror.debian.net \
380 --username=udd-mirror udd -c "select source from sources \
381 where release = 'sid' and (vcs_url ilike '%anonscm.debian.org%' \
382 OR vcs_browser ilike '%anonscm.debian.org%' or vcs_url IS NULL \
383 OR vcs_browser IS NULL) AND maintainer ilike '%packages@qa.debian.org%' \
384 order by random() limit
10;"
387 <p>Next, I visit http://salsa.debian.org/debian and search for the
388 package name, to ensure no git repository already exist. If it does,
389 I clone it and try to get it to an uploadable state, and add the Vcs-*
390 entries in d/control to make the repository more widely known. These
391 packages are a minority, so I will not cover that use case here.
</p>
393 <p>For packages without an existing git repository, I run the
394 following script
<tt>debian-snap-to-salsa
</tt> to prepare a git
395 repository with the existing packaging.
</p>
400 # See also https://bugs.debian.org/
804722#
31
404 # Move to this Standards-Version.
409 if [ -z "$PKG" ]; then
410 echo "usage: $
0 <pkgname>"
414 if [ -e "${PKG}-salsa
" ]; then
415 echo "error: ${PKG}-salsa already exist, aborting.
"
419 if [ -z "ALLOWFAILURE
" ] ; then
423 # Fetch every snapshotted source package. Manually loop until all
424 # transfers succeed, as 'gbp import-dscs --debsnap' do not fail on
426 until debsnap --force -v $PKG || $ALLOWFAILURE ; do sleep 1; done
427 mkdir ${PKG}-salsa; cd ${PKG}-salsa
430 # Specify branches to override any debian/gbp.conf file present in the
432 gbp import-dscs --debian-branch=master --upstream-branch=upstream \
433 --pristine-tar ../source-$PKG/*.dsc
435 # Add Vcs pointing to Salsa Debian project (must be manually created
437 if ! grep -q ^Vcs- debian/control ; then
438 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
439 git commit -m "Updated vcs in d/control to Salsa." debian/control
442 # Tell gbp to enforce the use of pristine-tar.
443 inifile +inifile debian/gbp.conf +create +section DEFAULT +key pristine-tar +value True
444 git add debian/gbp.conf
445 git commit -m "Added d/gbp.conf to enforce the use of pristine-tar." debian/gbp.conf
447 # Update to latest Standards-Version.
448 SV="$(grep ^Standards-Version: debian/control|awk '{print $
2}')"
449 if [ $SV_LATEST != $SV ]; then
450 sed -i "s/\(Standards-Version: \)\(.*\)/\
1$SV_LATEST/" debian/control
451 git commit -m "Updated Standards-Version from $SV to $SV_LATEST." debian/control
454 if grep -q pkg-config debian/control; then
455 sed -i s/pkg-config/pkgconf/ debian/control
456 git commit -m "Replaced obsolete pkg-config build dependency with pkgconf." debian/control
459 if grep -q libncurses5-dev debian/control; then
460 sed -i s/libncurses5-dev/libncurses-dev/ debian/control
461 git commit -m "Replaced obsolete libncurses5-dev build dependency with libncurses-dev." debian/control
465 Some times the debsnap script fail to download some of the versions.
466 In those cases I investigate, and if I decide the failing versions
467 will not be missed, I call it using ALLOWFAILURE=true to ignore the
468 problem and create the git repository anyway.
</p>
470 <p>With the git repository in place, I do a test build (gbp
471 buildpackage) to ensure the build is actually working. If it does not
472 I pick a different package, or if the build failure is trivial to fix,
473 I fix it before continuing. At this stage I revisit
474 http://salsa.debian.org/debian and create the project under this group
475 for the package. I then follow the instructions to publish the local
476 git repository. Here is from a recent example:
</p>
479 git remote add origin git@salsa.debian.org:debian/perl-byacc.git
480 git push --set-upstream origin master upstream pristine-tar
484 <p>With a working build, I have a look at the build rules if I want to
485 remove some more dust. I normally try to move to debhelper compat
486 level
13, which involves removing debian/compat and modifying
487 debian/control to build depend on debhelper-compat (=
13). I also test
488 with 'Rules-Requires-Root: no' in debian/control and verify in
489 debian/rules that hardening is enabled, and include all of these if
490 the package still build. If it fail to build with level
13, I try
491 with
12,
11,
10 and so on until I find a level where it build, as I do
492 not want to spend a lot of time fixing build issues.
</p>
494 <p>Some times, when I feel inspired, I make sure debian/copyright is
495 converted to the machine readable format, often by starting with
496 'debhelper -cc' and then cleaning up the autogenerated content until
497 it matches realities. If I feel like it, I might also clean up
498 non-dh-based debian/rules files to use the short style dh build
501 <p>Once I have removed all the dust I care to process for the package,
502 I run 'gbp dch' to generate a debian/changelog entry based on the
503 commits done so far, run 'dch -r' to switch from 'UNRELEASED' to
504 'unstable' and get an editor to make sure the 'QA upload' marker is in
505 place and that all long commit descriptions are wrapped into sensible
506 lengths, run 'debcommit --release -a' to commit and tag the new
507 debian/changelog entry, run 'debuild -S' to build a source only
508 package, and 'dput ../perl-byacc_2.0-
10_source.changes' to do the
509 upload. During the entire process, and many times per step, I run
510 'debuild' to verify the changes done still work. I also some times
511 verify the set of built files using 'find debian' to see if I can spot
512 any problems (like no file in usr/bin any more or empty package). I
513 also try to fix all lintian issues reported at the end of each
516 <p>If I find Debian specific patches, I try to ensure their metadata
517 is fairly up to date and some times I even try to reach out to
518 upstream, to make the upstream project aware of the patches. Most of
519 my emails bounce, so the success rate is low. For projects with no
520 Homepage entry in debian/control I try to track down one, and for
521 packages with no debian/watch file I try to create one. But at least
522 for some of the packages I have been unable to find a functioning
523 upstream, and must skip both of these.
</p>
525 <p>If I could handle ten percent in nine days, twenty people could
526 complete the rest in less then five days. I use approximately twenty
527 minutes per package, when I have twenty minutes spare time to spend.
528 Perhaps you got twenty minutes to spare too?
</p>
530 <p>As usual, if you use Bitcoin and want to show your support of my
531 activities, please send Bitcoin donations to my address
532 <b><a href=
"bitcoin:15oWEoG9dUPovwmUL9KWAnYRtNJEkP1u1b">15oWEoG9dUPovwmUL9KWAnYRtNJEkP1u1b
</a></b>.
</p>
534 <p><strong>Update
2024-
05-
04:
</strong> There is
535 <a href=
"https://people.skolelinux.org/pere/blog/images/2024-05-04-debian-snap-to-salsa.sh">an
536 updated edition of my migration script
</a>, last updated
542 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>.
547 <div class=
"padding"></div>
550 <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>
551 <div class=
"date">17th April
2024</div>
552 <div class=
"body"><p>I am happy to report that
553 <a href=
"https://github.com/namiltd/megactl">the megactl package
</a>,
554 useful to fetch RAID status when using the LSI Megaraid controller,
555 now is available in Debian. It passed NEW a few days ago, and is now
556 <a href=
"https://tracker.debian.org/pkg/megactl">available in
557 unstable
</a>, and probably showing up in testing in a weeks time. The
558 new version should provide Appstream hardware mapping and should
559 integrate nicely with isenkram.
</p>
561 <p>As usual, if you use Bitcoin and want to show your support of my
562 activities, please send Bitcoin donations to my address
563 <b><a href=
"bitcoin:15oWEoG9dUPovwmUL9KWAnYRtNJEkP1u1b">15oWEoG9dUPovwmUL9KWAnYRtNJEkP1u1b
</a></b>.
</p>
569 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>.
574 <div class=
"padding"></div>
577 <div class=
"title"><a href=
"http://www.hungry.com/~pere/blog/Time_to_move_orphaned_Debian_packages_to_git.html">Time to move orphaned Debian packages to git
</a></div>
578 <div class=
"date">14th April
2024</div>
579 <div class=
"body"><p>There are several packages in Debian without a associated git
580 repository with the packaging history. This is unfortunate and it
581 would be nice if more of these would do so. Quote a lot of these are
582 without a maintainer, ie listed as maintained by the
583 '
<a href=
"https://qa.debian.org/developer.php?email=packages%40qa.debian.org">Debian
584 QA Group
</a>' place holder. In fact,
438 packages have this property
585 according to UDD (
<tt>SELECT source FROM sources WHERE release = 'sid'
586 AND (vcs_url ilike '%anonscm.debian.org%' OR vcs_browser ilike
587 '%anonscm.debian.org%' or vcs_url IS NULL OR vcs_browser IS NULL) AND
588 maintainer ilike '%packages@qa.debian.org%';
</tt>). Such packages can
589 be updated without much coordination by any Debian developer, as they
590 are considered orphaned.
</p>
592 <p>To try to improve the situation and reduce the number of packages
593 without associated git repository, I started a few days ago to search
594 out candiates and provide them with a git repository under the
595 'debian' collaborative Salsa project. I started with the packages
596 pointing to obsolete Alioth git repositories, and am now working my
597 way across the ones completely without git references. In addition to
598 updating the Vcs-* debian/control fields, I try to update
599 Standards-Version, debhelper compat level, simplify d/rules, switch to
600 Rules-Requires-Root: no and fix lintian issues reported. I only
601 implement those that are trivial to fix, to avoid spending too much
602 time on each orphaned package. So far my experience is that it take
603 aproximately
20 minutes to convert a package without any git
604 references, and a lot more for packages with existing git repositories
605 incompatible with git-buildpackages.
</p>
607 <p>So far I have converted
10 packages, and I will keep going until I
608 run out of steam. As should be clear from the numbers, there is
609 enough packages remaining for more people to do the same without
610 stepping on each others toes. I find it useful to start by searching
611 for a git repo already on salsa, as I find that some times a git repo
612 has already been created, but no new version is uploaded to Debian
613 yet. In those cases I start with the existing git repository. I
614 convert to the git-buildpackage+pristine-tar workflow, and ensure a
615 debian/gbp.conf file with "pristine-tar=True" is added early, to avoid
616 uploading a orig.tar.gz with the wrong checksum by mistake. Did that
617 three times in the begin before I remembered my mistake.
</p>
619 <p>So, if you are a Debian Developer and got some spare time, perhaps
620 considering migrating some orphaned packages to git?
</p>
622 <p>As usual, if you use Bitcoin and want to show your support of my
623 activities, please send Bitcoin donations to my address
624 <b><a href=
"bitcoin:15oWEoG9dUPovwmUL9KWAnYRtNJEkP1u1b">15oWEoG9dUPovwmUL9KWAnYRtNJEkP1u1b
</a></b>.
</p>
629 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>.
634 <div class=
"padding"></div>
637 <div class=
"title"><a href=
"http://www.hungry.com/~pere/blog/Plain_text_accounting_file_from_your_bitcoin_transactions.html">Plain text accounting file from your bitcoin transactions
</a></div>
638 <div class=
"date"> 7th March
2024</div>
639 <div class=
"body"><p>A while back I wrote a small script to extract the Bitcoin
640 transactions in a wallet in the
641 <ahref=
"https://plaintextaccounting.org/">ledger plain text accounting
642 format
</a>. The last few days I spent some time to get it working
643 better with more special cases. In case it can be useful for others,
648 # -*- coding: utf-
8 -*-
649 # Copyright (c)
2023-
2024 Petter Reinholdtsen
651 from decimal import Decimal
658 def format_float(num):
659 return numpy.format_float_positional(num, trim='-')
662 u'amount' : 'Assets:BTC:main',
666 '
<some address
>' : 'Assets:bankkonto',
667 '
<some address
>' : 'Assets:bankkonto',
671 proc = subprocess.Popen(cmd,stdout=subprocess.PIPE)
672 j = json.loads(proc.communicate()[
0], parse_float=Decimal)
676 # get all transactions for all accounts / addresses
681 cmd = ['bitcoin-cli', 'listtransactions', '*', str(limit)]
683 txs.extend(exec_json(cmd))
685 # Useful for debugging
686 with open('transactions.json') as f:
687 txs.extend(json.load(f, parse_float=Decimal))
689 for tx in sorted(txs, key=lambda a: a['time']):
690 # print tx['category']
691 if 'abandoned' in tx and tx['abandoned']:
693 if 'confirmations' in tx and
0 >= tx['confirmations']:
695 when = time.strftime('%Y-%m-%d %H:%M', time.localtime(tx['time']))
698 elif 'comment' in tx:
704 print("%s %s" % (when, desc))
706 print(" ; to bitcoin address %s" % tx['address'])
708 print(" ; missing address in transaction, txid=%s" % tx['txid'])
709 print(f" ; amount={tx['amount']}")
711 print(f" ; fee={tx['fee']}")
712 for f in accounts.keys():
713 if f in tx and Decimal(
0) != tx[f]:
715 print(" %-
20s %s BTC" % (accounts[f], format_float(amount)))
716 if 'fee' in tx and Decimal(
0) != tx['fee']:
717 # Make sure to list fee used in several transactions only once.
718 if 'fee' in tx and tx['txid'] in txidfee \
719 and tx['fee'] == txidfee[tx['txid']]:
723 print(" %-
20s %s BTC" % (accounts['amount'], format_float(fee)))
724 print(" %-
20s %s BTC" % ('Expences:BTC-fee', format_float(-fee)))
725 txidfee[tx['txid']] = tx['fee']
727 if 'address' in tx and tx['address'] in addresses:
728 print(" %s" % addresses[tx['address']])
730 if 'generate' == tx['category']:
731 print(" Income:BTC-mining")
733 if amount < Decimal(
0):
734 print(f" Assets:unknown:sent:update-script-addr-{tx['address']}")
736 print(f" Assets:unknown:received:update-script-addr-{tx['address']}")
740 print("# Found %d transactions" % c)
742 print(f"# Warning: Limit {limit} reached, consider increasing limit.")
748 </pre></blockquote></p>
750 <p>It is more of a proof of concept, and I do not expect it to handle
751 all edge cases, but it worked for me, and perhaps you can find it
754 <p>To get a more interesting result, it is useful to map accounts sent
755 to or received from to accounting accounts, using the
756 <tt>addresses
</tt> hash. As these will be very context dependent, I
757 leave out my list to allow each user to fill out their own list of
758 accounts. Out of the box, 'ledger reg BTC:main' should be able to
759 show the amount of BTCs present in the wallet at any given time in the
760 past. For other and more valuable analysis, a account plan need to be
761 set up in the
<tt>addresses
</tt> hash. Here is an example
765 2024-
03-
07 17:
00 Donated to good cause
766 Assets:BTC:main -
0.1 BTC
767 Assets:BTC:main -
0.00001 BTC
768 Expences:BTC-fee
0.00001 BTC
769 Expences:donations
0.1 BTC
770 </pre></blockquote></p>
772 <p>It need a running Bitcoin Core daemon running, as it connect to it
773 using
<tt>bitcoin-cli listtransactions *
100000</tt> to extract the
774 transactions listed in the Wallet.
</p>
776 <p>As usual, if you use Bitcoin and want to show your support of my
777 activities, please send Bitcoin donations to my address
778 <b><a href=
"bitcoin:15oWEoG9dUPovwmUL9KWAnYRtNJEkP1u1b">15oWEoG9dUPovwmUL9KWAnYRtNJEkP1u1b
</a></b>.
</p>
783 Tags:
<a href=
"http://www.hungry.com/~pere/blog/tags/bitcoin">bitcoin
</a>,
<a href=
"http://www.hungry.com/~pere/blog/tags/english">english
</a>.
788 <div class=
"padding"></div>
791 <div class=
"title"><a href=
"http://www.hungry.com/~pere/blog/RAID_status_from_LSI_Megaraid_controllers_using_free_software.html">RAID status from LSI Megaraid controllers using free software
</a></div>
792 <div class=
"date"> 3rd March
2024</div>
793 <div class=
"body"><p>The last few days I have revisited RAID setup using the LSI
794 Megaraid controller. These are a family of controllers called PERC by
795 Dell, and is present in several old PowerEdge servers, and I recently
796 got my hands on one of these. I had forgotten how to handle this RAID
797 controller in Debian, so I had to take a peek in the
798 <a href=
"https://wiki.debian.org/LinuxRaidForAdmins">Debian wiki page
799 "Linux and Hardware RAID: an administrator's summary"
</a> to remember
800 what kind of software is available to configure and monitor the disks
801 and controller. I prefer Free Software alternatives to proprietary
802 tools, as the later tend to fall into disarray once the manufacturer
803 loose interest, and often do not work with newer Linux Distributions.
804 Sadly there is no free software tool to configure the RAID setup, only
805 to monitor it. RAID can provide improved reliability and resilience in
806 a storage solution, but only if it is being regularly checked and any
807 broken disks are being replaced in time. I thus want to ensure some
808 automatic monitoring is available.
</p>
810 <p>In the discovery process, I came across a old free software tool to
811 monitor PERC2, PERC3, PERC4 and PERC5 controllers, which to my
812 surprise is not present in debian. To help change that I created a
813 <a href=
"https://bugs.debian.org/1065322">request for packaging of the
814 megactl package
</a>, and tried to track down a usable version.
815 <a href=
"https://sourceforge.net/p/megactl/">The original project
816 site
</a> is on Sourceforge, but as far as I can tell that project has
817 been dead for more than
15 years. I managed to find a
818 <a href=
"https://github.com/hmage/megactl">more recent fork on
819 github
</a> from user hmage, but it is unclear to me if this is still
820 being maintained. It has not seen much improvements since
2016. A
821 <a href=
"https://github.com/namiltd/megactl">more up to date
822 edition
</a> is a git fork from the original github fork by user
823 namiltd, and this newer fork seem a lot more promising. The owner of
824 this github repository has replied to change proposals within hours,
825 and had already added some improvements and support for more hardware.
826 Sadly he is reluctant to commit to maintaining the tool and stated in
827 <a href=
"https://github.com/namiltd/megactl/pull/1">my first pull
828 request
</A> that he think a new release should be made based on the
829 git repository owned by hmage. I perfectly understand this
830 reluctance, as I feel the same about maintaining yet another package
831 in Debian when I barely have time to take care of the ones I already
832 maintain, but do not really have high hopes that hmage will have time
833 to spend on it and hope namiltd will change his mind.
</p>
835 <p>In any case, I created
836 <a href=
"https://salsa.debian.org/debian/megactl">a draft package
</a>
837 based on the namiltd edition and put it under the debian group on
838 salsa.debian.org. If you own a Dell PowerEdge server with one of the
839 PERC controllers, or any other RAID controller using the megaraid or
840 megaraid_sas Linux kernel modules, you might want to check it out. If
841 enough people are interested, perhaps the package will make it into
842 the Debian archive.
</p>
844 <p>There are two tools provided, megactl for the megaraid Linux kernel
845 module, and megasasctl for the megaraid_sas Linux kernel module. The
846 simple output from the command on one of my machines look like this
847 (yes, I know some of the disks have problems. :).
</p>
851 a0 PERC H730 Mini encl:
1 ldrv:
2 batt:good
852 a0d0
558GiB RAID
1 1x2 optimal
853 a0d1
3067GiB RAID
0 1x11 optimal
854 a0e32s0
558GiB a0d0 online errs: media:
0 other:
19
855 a0e32s1
279GiB a0d1 online
856 a0e32s2
279GiB a0d1 online
857 a0e32s3
279GiB a0d1 online
858 a0e32s4
279GiB a0d1 online
859 a0e32s5
279GiB a0d1 online
860 a0e32s6
279GiB a0d1 online
861 a0e32s8
558GiB a0d0 online errs: media:
0 other:
17
862 a0e32s9
279GiB a0d1 online
863 a0e32s10
279GiB a0d1 online
864 a0e32s11
279GiB a0d1 online
865 a0e32s12
279GiB a0d1 online
866 a0e32s13
279GiB a0d1 online
871 <p>In addition to displaying a simple status report, it can also test
872 individual drives and print the various event logs. Perhaps you too
875 <p>In the packaging process I provided some patches upstream to
876 improve installation and ensure
877 <ahref=
"https://github.com/namiltd/megactl/pull/2">a Appstream
878 metainfo file is provided
</a> to list all supported HW, to allow
879 <a href=
"https://tracker.debian.org/isenkram">isenkram
</a> to propose
880 the package on all servers with a relevant PCI card.
</p>
882 <p>As usual, if you use Bitcoin and want to show your support of my
883 activities, please send Bitcoin donations to my address
884 <b><a href=
"bitcoin:15oWEoG9dUPovwmUL9KWAnYRtNJEkP1u1b">15oWEoG9dUPovwmUL9KWAnYRtNJEkP1u1b
</a></b>.
</p>
890 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>.
895 <div class=
"padding"></div>
897 <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>
908 <li><a href=
"http://www.hungry.com/~pere/blog/archive/2024/01/">January (
1)
</a></li>
910 <li><a href=
"http://www.hungry.com/~pere/blog/archive/2024/02/">February (
1)
</a></li>
912 <li><a href=
"http://www.hungry.com/~pere/blog/archive/2024/03/">March (
2)
</a></li>
914 <li><a href=
"http://www.hungry.com/~pere/blog/archive/2024/04/">April (
3)
</a></li>
916 <li><a href=
"http://www.hungry.com/~pere/blog/archive/2024/05/">May (
1)
</a></li>
918 <li><a href=
"http://www.hungry.com/~pere/blog/archive/2024/06/">June (
1)
</a></li>
920 <li><a href=
"http://www.hungry.com/~pere/blog/archive/2024/07/">July (
2)
</a></li>
922 <li><a href=
"http://www.hungry.com/~pere/blog/archive/2024/12/">December (
1)
</a></li>
929 <li><a href=
"http://www.hungry.com/~pere/blog/archive/2023/01/">January (
3)
</a></li>
931 <li><a href=
"http://www.hungry.com/~pere/blog/archive/2023/02/">February (
1)
</a></li>
933 <li><a href=
"http://www.hungry.com/~pere/blog/archive/2023/04/">April (
2)
</a></li>
935 <li><a href=
"http://www.hungry.com/~pere/blog/archive/2023/05/">May (
3)
</a></li>
937 <li><a href=
"http://www.hungry.com/~pere/blog/archive/2023/06/">June (
1)
</a></li>
939 <li><a href=
"http://www.hungry.com/~pere/blog/archive/2023/08/">August (
1)
</a></li>
941 <li><a href=
"http://www.hungry.com/~pere/blog/archive/2023/09/">September (
1)
</a></li>
943 <li><a href=
"http://www.hungry.com/~pere/blog/archive/2023/10/">October (
1)
</a></li>
945 <li><a href=
"http://www.hungry.com/~pere/blog/archive/2023/11/">November (
4)
</a></li>
947 <li><a href=
"http://www.hungry.com/~pere/blog/archive/2023/12/">December (
1)
</a></li>
954 <li><a href=
"http://www.hungry.com/~pere/blog/archive/2022/02/">February (
1)
</a></li>
956 <li><a href=
"http://www.hungry.com/~pere/blog/archive/2022/03/">March (
3)
</a></li>
958 <li><a href=
"http://www.hungry.com/~pere/blog/archive/2022/04/">April (
2)
</a></li>
960 <li><a href=
"http://www.hungry.com/~pere/blog/archive/2022/06/">June (
2)
</a></li>
962 <li><a href=
"http://www.hungry.com/~pere/blog/archive/2022/07/">July (
1)
</a></li>
964 <li><a href=
"http://www.hungry.com/~pere/blog/archive/2022/09/">September (
1)
</a></li>
966 <li><a href=
"http://www.hungry.com/~pere/blog/archive/2022/10/">October (
1)
</a></li>
968 <li><a href=
"http://www.hungry.com/~pere/blog/archive/2022/12/">December (
1)
</a></li>
975 <li><a href=
"http://www.hungry.com/~pere/blog/archive/2021/01/">January (
2)
</a></li>
977 <li><a href=
"http://www.hungry.com/~pere/blog/archive/2021/02/">February (
1)
</a></li>
979 <li><a href=
"http://www.hungry.com/~pere/blog/archive/2021/05/">May (
1)
</a></li>
981 <li><a href=
"http://www.hungry.com/~pere/blog/archive/2021/06/">June (
1)
</a></li>
983 <li><a href=
"http://www.hungry.com/~pere/blog/archive/2021/07/">July (
3)
</a></li>
985 <li><a href=
"http://www.hungry.com/~pere/blog/archive/2021/08/">August (
1)
</a></li>
987 <li><a href=
"http://www.hungry.com/~pere/blog/archive/2021/09/">September (
1)
</a></li>
989 <li><a href=
"http://www.hungry.com/~pere/blog/archive/2021/10/">October (
1)
</a></li>
991 <li><a href=
"http://www.hungry.com/~pere/blog/archive/2021/12/">December (
1)
</a></li>
998 <li><a href=
"http://www.hungry.com/~pere/blog/archive/2020/02/">February (
2)
</a></li>
1000 <li><a href=
"http://www.hungry.com/~pere/blog/archive/2020/03/">March (
2)
</a></li>
1002 <li><a href=
"http://www.hungry.com/~pere/blog/archive/2020/04/">April (
2)
</a></li>
1004 <li><a href=
"http://www.hungry.com/~pere/blog/archive/2020/05/">May (
3)
</a></li>
1006 <li><a href=
"http://www.hungry.com/~pere/blog/archive/2020/06/">June (
2)
</a></li>
1008 <li><a href=
"http://www.hungry.com/~pere/blog/archive/2020/07/">July (
1)
</a></li>
1010 <li><a href=
"http://www.hungry.com/~pere/blog/archive/2020/09/">September (
1)
</a></li>
1012 <li><a href=
"http://www.hungry.com/~pere/blog/archive/2020/10/">October (
1)
</a></li>
1014 <li><a href=
"http://www.hungry.com/~pere/blog/archive/2020/11/">November (
1)
</a></li>
1021 <li><a href=
"http://www.hungry.com/~pere/blog/archive/2019/01/">January (
4)
</a></li>
1023 <li><a href=
"http://www.hungry.com/~pere/blog/archive/2019/02/">February (
3)
</a></li>
1025 <li><a href=
"http://www.hungry.com/~pere/blog/archive/2019/03/">March (
3)
</a></li>
1027 <li><a href=
"http://www.hungry.com/~pere/blog/archive/2019/05/">May (
2)
</a></li>
1029 <li><a href=
"http://www.hungry.com/~pere/blog/archive/2019/06/">June (
5)
</a></li>
1031 <li><a href=
"http://www.hungry.com/~pere/blog/archive/2019/07/">July (
2)
</a></li>
1033 <li><a href=
"http://www.hungry.com/~pere/blog/archive/2019/08/">August (
1)
</a></li>
1035 <li><a href=
"http://www.hungry.com/~pere/blog/archive/2019/09/">September (
1)
</a></li>
1037 <li><a href=
"http://www.hungry.com/~pere/blog/archive/2019/11/">November (
1)
</a></li>
1039 <li><a href=
"http://www.hungry.com/~pere/blog/archive/2019/12/">December (
4)
</a></li>
1046 <li><a href=
"http://www.hungry.com/~pere/blog/archive/2018/01/">January (
1)
</a></li>
1048 <li><a href=
"http://www.hungry.com/~pere/blog/archive/2018/02/">February (
5)
</a></li>
1050 <li><a href=
"http://www.hungry.com/~pere/blog/archive/2018/03/">March (
5)
</a></li>
1052 <li><a href=
"http://www.hungry.com/~pere/blog/archive/2018/04/">April (
3)
</a></li>
1054 <li><a href=
"http://www.hungry.com/~pere/blog/archive/2018/06/">June (
2)
</a></li>
1056 <li><a href=
"http://www.hungry.com/~pere/blog/archive/2018/07/">July (
5)
</a></li>
1058 <li><a href=
"http://www.hungry.com/~pere/blog/archive/2018/08/">August (
3)
</a></li>
1060 <li><a href=
"http://www.hungry.com/~pere/blog/archive/2018/09/">September (
3)
</a></li>
1062 <li><a href=
"http://www.hungry.com/~pere/blog/archive/2018/10/">October (
5)
</a></li>
1064 <li><a href=
"http://www.hungry.com/~pere/blog/archive/2018/11/">November (
2)
</a></li>
1066 <li><a href=
"http://www.hungry.com/~pere/blog/archive/2018/12/">December (
4)
</a></li>
1073 <li><a href=
"http://www.hungry.com/~pere/blog/archive/2017/01/">January (
4)
</a></li>
1075 <li><a href=
"http://www.hungry.com/~pere/blog/archive/2017/02/">February (
3)
</a></li>
1077 <li><a href=
"http://www.hungry.com/~pere/blog/archive/2017/03/">March (
5)
</a></li>
1079 <li><a href=
"http://www.hungry.com/~pere/blog/archive/2017/04/">April (
2)
</a></li>
1081 <li><a href=
"http://www.hungry.com/~pere/blog/archive/2017/06/">June (
5)
</a></li>
1083 <li><a href=
"http://www.hungry.com/~pere/blog/archive/2017/07/">July (
1)
</a></li>
1085 <li><a href=
"http://www.hungry.com/~pere/blog/archive/2017/08/">August (
1)
</a></li>
1087 <li><a href=
"http://www.hungry.com/~pere/blog/archive/2017/09/">September (
3)
</a></li>
1089 <li><a href=
"http://www.hungry.com/~pere/blog/archive/2017/10/">October (
5)
</a></li>
1091 <li><a href=
"http://www.hungry.com/~pere/blog/archive/2017/11/">November (
3)
</a></li>
1093 <li><a href=
"http://www.hungry.com/~pere/blog/archive/2017/12/">December (
4)
</a></li>
1100 <li><a href=
"http://www.hungry.com/~pere/blog/archive/2016/01/">January (
3)
</a></li>
1102 <li><a href=
"http://www.hungry.com/~pere/blog/archive/2016/02/">February (
2)
</a></li>
1104 <li><a href=
"http://www.hungry.com/~pere/blog/archive/2016/03/">March (
3)
</a></li>
1106 <li><a href=
"http://www.hungry.com/~pere/blog/archive/2016/04/">April (
8)
</a></li>
1108 <li><a href=
"http://www.hungry.com/~pere/blog/archive/2016/05/">May (
8)
</a></li>
1110 <li><a href=
"http://www.hungry.com/~pere/blog/archive/2016/06/">June (
2)
</a></li>
1112 <li><a href=
"http://www.hungry.com/~pere/blog/archive/2016/07/">July (
2)
</a></li>
1114 <li><a href=
"http://www.hungry.com/~pere/blog/archive/2016/08/">August (
5)
</a></li>
1116 <li><a href=
"http://www.hungry.com/~pere/blog/archive/2016/09/">September (
2)
</a></li>
1118 <li><a href=
"http://www.hungry.com/~pere/blog/archive/2016/10/">October (
3)
</a></li>
1120 <li><a href=
"http://www.hungry.com/~pere/blog/archive/2016/11/">November (
8)
</a></li>
1122 <li><a href=
"http://www.hungry.com/~pere/blog/archive/2016/12/">December (
5)
</a></li>
1129 <li><a href=
"http://www.hungry.com/~pere/blog/archive/2015/01/">January (
7)
</a></li>
1131 <li><a href=
"http://www.hungry.com/~pere/blog/archive/2015/02/">February (
6)
</a></li>
1133 <li><a href=
"http://www.hungry.com/~pere/blog/archive/2015/03/">March (
1)
</a></li>
1135 <li><a href=
"http://www.hungry.com/~pere/blog/archive/2015/04/">April (
4)
</a></li>
1137 <li><a href=
"http://www.hungry.com/~pere/blog/archive/2015/05/">May (
3)
</a></li>
1139 <li><a href=
"http://www.hungry.com/~pere/blog/archive/2015/06/">June (
4)
</a></li>
1141 <li><a href=
"http://www.hungry.com/~pere/blog/archive/2015/07/">July (
6)
</a></li>
1143 <li><a href=
"http://www.hungry.com/~pere/blog/archive/2015/08/">August (
2)
</a></li>
1145 <li><a href=
"http://www.hungry.com/~pere/blog/archive/2015/09/">September (
2)
</a></li>
1147 <li><a href=
"http://www.hungry.com/~pere/blog/archive/2015/10/">October (
9)
</a></li>
1149 <li><a href=
"http://www.hungry.com/~pere/blog/archive/2015/11/">November (
6)
</a></li>
1151 <li><a href=
"http://www.hungry.com/~pere/blog/archive/2015/12/">December (
3)
</a></li>
1158 <li><a href=
"http://www.hungry.com/~pere/blog/archive/2014/01/">January (
2)
</a></li>
1160 <li><a href=
"http://www.hungry.com/~pere/blog/archive/2014/02/">February (
3)
</a></li>
1162 <li><a href=
"http://www.hungry.com/~pere/blog/archive/2014/03/">March (
8)
</a></li>
1164 <li><a href=
"http://www.hungry.com/~pere/blog/archive/2014/04/">April (
7)
</a></li>
1166 <li><a href=
"http://www.hungry.com/~pere/blog/archive/2014/05/">May (
1)
</a></li>
1168 <li><a href=
"http://www.hungry.com/~pere/blog/archive/2014/06/">June (
2)
</a></li>
1170 <li><a href=
"http://www.hungry.com/~pere/blog/archive/2014/07/">July (
2)
</a></li>
1172 <li><a href=
"http://www.hungry.com/~pere/blog/archive/2014/08/">August (
2)
</a></li>
1174 <li><a href=
"http://www.hungry.com/~pere/blog/archive/2014/09/">September (
5)
</a></li>
1176 <li><a href=
"http://www.hungry.com/~pere/blog/archive/2014/10/">October (
6)
</a></li>
1178 <li><a href=
"http://www.hungry.com/~pere/blog/archive/2014/11/">November (
3)
</a></li>
1180 <li><a href=
"http://www.hungry.com/~pere/blog/archive/2014/12/">December (
5)
</a></li>
1187 <li><a href=
"http://www.hungry.com/~pere/blog/archive/2013/01/">January (
11)
</a></li>
1189 <li><a href=
"http://www.hungry.com/~pere/blog/archive/2013/02/">February (
9)
</a></li>
1191 <li><a href=
"http://www.hungry.com/~pere/blog/archive/2013/03/">March (
9)
</a></li>
1193 <li><a href=
"http://www.hungry.com/~pere/blog/archive/2013/04/">April (
6)
</a></li>
1195 <li><a href=
"http://www.hungry.com/~pere/blog/archive/2013/05/">May (
9)
</a></li>
1197 <li><a href=
"http://www.hungry.com/~pere/blog/archive/2013/06/">June (
10)
</a></li>
1199 <li><a href=
"http://www.hungry.com/~pere/blog/archive/2013/07/">July (
7)
</a></li>
1201 <li><a href=
"http://www.hungry.com/~pere/blog/archive/2013/08/">August (
3)
</a></li>
1203 <li><a href=
"http://www.hungry.com/~pere/blog/archive/2013/09/">September (
5)
</a></li>
1205 <li><a href=
"http://www.hungry.com/~pere/blog/archive/2013/10/">October (
7)
</a></li>
1207 <li><a href=
"http://www.hungry.com/~pere/blog/archive/2013/11/">November (
9)
</a></li>
1209 <li><a href=
"http://www.hungry.com/~pere/blog/archive/2013/12/">December (
3)
</a></li>
1216 <li><a href=
"http://www.hungry.com/~pere/blog/archive/2012/01/">January (
7)
</a></li>
1218 <li><a href=
"http://www.hungry.com/~pere/blog/archive/2012/02/">February (
10)
</a></li>
1220 <li><a href=
"http://www.hungry.com/~pere/blog/archive/2012/03/">March (
17)
</a></li>
1222 <li><a href=
"http://www.hungry.com/~pere/blog/archive/2012/04/">April (
12)
</a></li>
1224 <li><a href=
"http://www.hungry.com/~pere/blog/archive/2012/05/">May (
12)
</a></li>
1226 <li><a href=
"http://www.hungry.com/~pere/blog/archive/2012/06/">June (
20)
</a></li>
1228 <li><a href=
"http://www.hungry.com/~pere/blog/archive/2012/07/">July (
17)
</a></li>
1230 <li><a href=
"http://www.hungry.com/~pere/blog/archive/2012/08/">August (
6)
</a></li>
1232 <li><a href=
"http://www.hungry.com/~pere/blog/archive/2012/09/">September (
9)
</a></li>
1234 <li><a href=
"http://www.hungry.com/~pere/blog/archive/2012/10/">October (
17)
</a></li>
1236 <li><a href=
"http://www.hungry.com/~pere/blog/archive/2012/11/">November (
10)
</a></li>
1238 <li><a href=
"http://www.hungry.com/~pere/blog/archive/2012/12/">December (
7)
</a></li>
1245 <li><a href=
"http://www.hungry.com/~pere/blog/archive/2011/01/">January (
16)
</a></li>
1247 <li><a href=
"http://www.hungry.com/~pere/blog/archive/2011/02/">February (
6)
</a></li>
1249 <li><a href=
"http://www.hungry.com/~pere/blog/archive/2011/03/">March (
6)
</a></li>
1251 <li><a href=
"http://www.hungry.com/~pere/blog/archive/2011/04/">April (
7)
</a></li>
1253 <li><a href=
"http://www.hungry.com/~pere/blog/archive/2011/05/">May (
3)
</a></li>
1255 <li><a href=
"http://www.hungry.com/~pere/blog/archive/2011/06/">June (
2)
</a></li>
1257 <li><a href=
"http://www.hungry.com/~pere/blog/archive/2011/07/">July (
7)
</a></li>
1259 <li><a href=
"http://www.hungry.com/~pere/blog/archive/2011/08/">August (
6)
</a></li>
1261 <li><a href=
"http://www.hungry.com/~pere/blog/archive/2011/09/">September (
4)
</a></li>
1263 <li><a href=
"http://www.hungry.com/~pere/blog/archive/2011/10/">October (
2)
</a></li>
1265 <li><a href=
"http://www.hungry.com/~pere/blog/archive/2011/11/">November (
3)
</a></li>
1267 <li><a href=
"http://www.hungry.com/~pere/blog/archive/2011/12/">December (
1)
</a></li>
1274 <li><a href=
"http://www.hungry.com/~pere/blog/archive/2010/01/">January (
2)
</a></li>
1276 <li><a href=
"http://www.hungry.com/~pere/blog/archive/2010/02/">February (
1)
</a></li>
1278 <li><a href=
"http://www.hungry.com/~pere/blog/archive/2010/03/">March (
3)
</a></li>
1280 <li><a href=
"http://www.hungry.com/~pere/blog/archive/2010/04/">April (
3)
</a></li>
1282 <li><a href=
"http://www.hungry.com/~pere/blog/archive/2010/05/">May (
9)
</a></li>
1284 <li><a href=
"http://www.hungry.com/~pere/blog/archive/2010/06/">June (
14)
</a></li>
1286 <li><a href=
"http://www.hungry.com/~pere/blog/archive/2010/07/">July (
12)
</a></li>
1288 <li><a href=
"http://www.hungry.com/~pere/blog/archive/2010/08/">August (
13)
</a></li>
1290 <li><a href=
"http://www.hungry.com/~pere/blog/archive/2010/09/">September (
7)
</a></li>
1292 <li><a href=
"http://www.hungry.com/~pere/blog/archive/2010/10/">October (
9)
</a></li>
1294 <li><a href=
"http://www.hungry.com/~pere/blog/archive/2010/11/">November (
13)
</a></li>
1296 <li><a href=
"http://www.hungry.com/~pere/blog/archive/2010/12/">December (
12)
</a></li>
1303 <li><a href=
"http://www.hungry.com/~pere/blog/archive/2009/01/">January (
8)
</a></li>
1305 <li><a href=
"http://www.hungry.com/~pere/blog/archive/2009/02/">February (
8)
</a></li>
1307 <li><a href=
"http://www.hungry.com/~pere/blog/archive/2009/03/">March (
12)
</a></li>
1309 <li><a href=
"http://www.hungry.com/~pere/blog/archive/2009/04/">April (
10)
</a></li>
1311 <li><a href=
"http://www.hungry.com/~pere/blog/archive/2009/05/">May (
9)
</a></li>
1313 <li><a href=
"http://www.hungry.com/~pere/blog/archive/2009/06/">June (
3)
</a></li>
1315 <li><a href=
"http://www.hungry.com/~pere/blog/archive/2009/07/">July (
4)
</a></li>
1317 <li><a href=
"http://www.hungry.com/~pere/blog/archive/2009/08/">August (
3)
</a></li>
1319 <li><a href=
"http://www.hungry.com/~pere/blog/archive/2009/09/">September (
1)
</a></li>
1321 <li><a href=
"http://www.hungry.com/~pere/blog/archive/2009/10/">October (
2)
</a></li>
1323 <li><a href=
"http://www.hungry.com/~pere/blog/archive/2009/11/">November (
3)
</a></li>
1325 <li><a href=
"http://www.hungry.com/~pere/blog/archive/2009/12/">December (
3)
</a></li>
1332 <li><a href=
"http://www.hungry.com/~pere/blog/archive/2008/11/">November (
5)
</a></li>
1334 <li><a href=
"http://www.hungry.com/~pere/blog/archive/2008/12/">December (
7)
</a></li>
1345 <li><a href=
"http://www.hungry.com/~pere/blog/tags/3d-printer">3d-printer (
19)
</a></li>
1347 <li><a href=
"http://www.hungry.com/~pere/blog/tags/amiga">amiga (
1)
</a></li>
1349 <li><a href=
"http://www.hungry.com/~pere/blog/tags/aros">aros (
1)
</a></li>
1351 <li><a href=
"http://www.hungry.com/~pere/blog/tags/bankid">bankid (
4)
</a></li>
1353 <li><a href=
"http://www.hungry.com/~pere/blog/tags/betalkontant">betalkontant (
9)
</a></li>
1355 <li><a href=
"http://www.hungry.com/~pere/blog/tags/bitcoin">bitcoin (
13)
</a></li>
1357 <li><a href=
"http://www.hungry.com/~pere/blog/tags/bootsystem">bootsystem (
17)
</a></li>
1359 <li><a href=
"http://www.hungry.com/~pere/blog/tags/bsa">bsa (
2)
</a></li>
1361 <li><a href=
"http://www.hungry.com/~pere/blog/tags/chrpath">chrpath (
3)
</a></li>
1363 <li><a href=
"http://www.hungry.com/~pere/blog/tags/debian">debian (
203)
</a></li>
1365 <li><a href=
"http://www.hungry.com/~pere/blog/tags/debian edu">debian edu (
159)
</a></li>
1367 <li><a href=
"http://www.hungry.com/~pere/blog/tags/debian-handbook">debian-handbook (
9)
</a></li>
1369 <li><a href=
"http://www.hungry.com/~pere/blog/tags/digistan">digistan (
11)
</a></li>
1371 <li><a href=
"http://www.hungry.com/~pere/blog/tags/dld">dld (
18)
</a></li>
1373 <li><a href=
"http://www.hungry.com/~pere/blog/tags/docbook">docbook (
33)
</a></li>
1375 <li><a href=
"http://www.hungry.com/~pere/blog/tags/drivstoffpriser">drivstoffpriser (
4)
</a></li>
1377 <li><a href=
"http://www.hungry.com/~pere/blog/tags/english">english (
465)
</a></li>
1379 <li><a href=
"http://www.hungry.com/~pere/blog/tags/fiksgatami">fiksgatami (
23)
</a></li>
1381 <li><a href=
"http://www.hungry.com/~pere/blog/tags/fildeling">fildeling (
14)
</a></li>
1383 <li><a href=
"http://www.hungry.com/~pere/blog/tags/freeculture">freeculture (
34)
</a></li>
1385 <li><a href=
"http://www.hungry.com/~pere/blog/tags/freedombox">freedombox (
9)
</a></li>
1387 <li><a href=
"http://www.hungry.com/~pere/blog/tags/frikanalen">frikanalen (
20)
</a></li>
1389 <li><a href=
"http://www.hungry.com/~pere/blog/tags/h264">h264 (
20)
</a></li>
1391 <li><a href=
"http://www.hungry.com/~pere/blog/tags/intervju">intervju (
43)
</a></li>
1393 <li><a href=
"http://www.hungry.com/~pere/blog/tags/isenkram">isenkram (
18)
</a></li>
1395 <li><a href=
"http://www.hungry.com/~pere/blog/tags/kart">kart (
23)
</a></li>
1397 <li><a href=
"http://www.hungry.com/~pere/blog/tags/kodi">kodi (
6)
</a></li>
1399 <li><a href=
"http://www.hungry.com/~pere/blog/tags/ldap">ldap (
9)
</a></li>
1401 <li><a href=
"http://www.hungry.com/~pere/blog/tags/lego">lego (
5)
</a></li>
1403 <li><a href=
"http://www.hungry.com/~pere/blog/tags/lenker">lenker (
8)
</a></li>
1405 <li><a href=
"http://www.hungry.com/~pere/blog/tags/linuxcnc">linuxcnc (
7)
</a></li>
1407 <li><a href=
"http://www.hungry.com/~pere/blog/tags/lsdvd">lsdvd (
2)
</a></li>
1409 <li><a href=
"http://www.hungry.com/~pere/blog/tags/ltsp">ltsp (
1)
</a></li>
1411 <li><a href=
"http://www.hungry.com/~pere/blog/tags/madewithcc">madewithcc (
3)
</a></li>
1413 <li><a href=
"http://www.hungry.com/~pere/blog/tags/mesh network">mesh network (
8)
</a></li>
1415 <li><a href=
"http://www.hungry.com/~pere/blog/tags/multimedia">multimedia (
46)
</a></li>
1417 <li><a href=
"http://www.hungry.com/~pere/blog/tags/nice free software">nice free software (
15)
</a></li>
1419 <li><a href=
"http://www.hungry.com/~pere/blog/tags/noark5">noark5 (
25)
</a></li>
1421 <li><a href=
"http://www.hungry.com/~pere/blog/tags/norsk">norsk (
325)
</a></li>
1423 <li><a href=
"http://www.hungry.com/~pere/blog/tags/nuug">nuug (
199)
</a></li>
1425 <li><a href=
"http://www.hungry.com/~pere/blog/tags/offentlig innsyn">offentlig innsyn (
41)
</a></li>
1427 <li><a href=
"http://www.hungry.com/~pere/blog/tags/open311">open311 (
2)
</a></li>
1429 <li><a href=
"http://www.hungry.com/~pere/blog/tags/opensnitch">opensnitch (
4)
</a></li>
1431 <li><a href=
"http://www.hungry.com/~pere/blog/tags/opphavsrett">opphavsrett (
76)
</a></li>
1433 <li><a href=
"http://www.hungry.com/~pere/blog/tags/personvern">personvern (
114)
</a></li>
1435 <li><a href=
"http://www.hungry.com/~pere/blog/tags/raid">raid (
4)
</a></li>
1437 <li><a href=
"http://www.hungry.com/~pere/blog/tags/reactos">reactos (
1)
</a></li>
1439 <li><a href=
"http://www.hungry.com/~pere/blog/tags/reprap">reprap (
11)
</a></li>
1441 <li><a href=
"http://www.hungry.com/~pere/blog/tags/rfid">rfid (
3)
</a></li>
1443 <li><a href=
"http://www.hungry.com/~pere/blog/tags/robot">robot (
17)
</a></li>
1445 <li><a href=
"http://www.hungry.com/~pere/blog/tags/rss">rss (
1)
</a></li>
1447 <li><a href=
"http://www.hungry.com/~pere/blog/tags/ruter">ruter (
7)
</a></li>
1449 <li><a href=
"http://www.hungry.com/~pere/blog/tags/scraperwiki">scraperwiki (
2)
</a></li>
1451 <li><a href=
"http://www.hungry.com/~pere/blog/tags/sikkerhet">sikkerhet (
60)
</a></li>
1453 <li><a href=
"http://www.hungry.com/~pere/blog/tags/sitesummary">sitesummary (
4)
</a></li>
1455 <li><a href=
"http://www.hungry.com/~pere/blog/tags/skepsis">skepsis (
5)
</a></li>
1457 <li><a href=
"http://www.hungry.com/~pere/blog/tags/standard">standard (
76)
</a></li>
1459 <li><a href=
"http://www.hungry.com/~pere/blog/tags/stavekontroll">stavekontroll (
7)
</a></li>
1461 <li><a href=
"http://www.hungry.com/~pere/blog/tags/stortinget">stortinget (
14)
</a></li>
1463 <li><a href=
"http://www.hungry.com/~pere/blog/tags/surveillance">surveillance (
65)
</a></li>
1465 <li><a href=
"http://www.hungry.com/~pere/blog/tags/sysadmin">sysadmin (
5)
</a></li>
1467 <li><a href=
"http://www.hungry.com/~pere/blog/tags/usenix">usenix (
2)
</a></li>
1469 <li><a href=
"http://www.hungry.com/~pere/blog/tags/valg">valg (
9)
</a></li>
1471 <li><a href=
"http://www.hungry.com/~pere/blog/tags/verkidetfri">verkidetfri (
22)
</a></li>
1473 <li><a href=
"http://www.hungry.com/~pere/blog/tags/video">video (
80)
</a></li>
1475 <li><a href=
"http://www.hungry.com/~pere/blog/tags/vitenskap">vitenskap (
4)
</a></li>
1477 <li><a href=
"http://www.hungry.com/~pere/blog/tags/web">web (
42)
</a></li>
1483 <p style=
"text-align: right">
1484 Created by
<a href=
"http://steve.org.uk/Software/chronicle">Chronicle v4.6
</a>