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=
"https://www.hungry.com/~pere/blog/style.css" />
8 <link rel=
"stylesheet" type=
"text/css" media=
"screen" href=
"https://www.hungry.com/~pere/blog/vim.css" />
9 <link rel=
"alternate" title=
"RSS Feed" href=
"https://www.hungry.com/~pere/blog/index.rss" type=
"application/rss+xml" />
14 <a href=
"https://www.hungry.com/~pere/blog/">Petter Reinholdtsen
</a>
23 <div class=
"title"><a href=
"https://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>
24 <div class=
"date">11th July
2024</div>
25 <div class=
"body"><p><a href=
"https://people.skolelinux.org/pere/blog/Time_to_move_orphaned_Debian_packages_to_git.html">In
26 April
</a>, I started migrating orphaned Debian packages without any
27 version control system listed in debian/control to git. This morning,
28 my Debian QA page finally reached
200 QA packages migrated. In
29 reality there are a few more, as the packages uploaded by someone else
30 after my initial upload have disappeared from my QA uploads list. As
31 I am running out of steam and will most likely focus on other parts of
32 Debian moving forward, I hope someone else will find time to continue
33 the migration to bring the number of orphaned packages without any
34 version control system down to zero. Here is the updated recipe if
35 someone want to help out.
</p>
37 <p>To locate packages to work on, the following one-liner can be used:
</p>
40 PGPASSWORD="udd-mirror" psql --port=
5432 --host=udd-mirror.debian.net \
41 --username=udd-mirror udd -c "select source from sources \
42 where release = 'sid' and (vcs_url ilike '%anonscm.debian.org%' \
43 OR vcs_browser ilike '%anonscm.debian.org%' or vcs_url IS NULL \
44 OR vcs_browser IS NULL) AND maintainer ilike '%packages@qa.debian.org%' \
45 order by random() limit
10;"
48 <p>Pick a random package from the list and run the latest edition of
50 <tt><a href=
"https://people.skolelinux.org/pere/blog/images/2024-07-11-debian-snap-to-salsa.sh">debian-snap-to-salsa
</a></tt>
51 with the package name as the argument to prepare a git repository with
52 the existing packaging. This will download old Debian packages from
53 <tt>snapshot.debian.org
</tt>. Note that very recent uploads will not
54 be included, so check out the package on
<tt>tracker.debian.org
</tt>.
55 Next, run
<tt>gbp buildpackage --git-ignore-new
</tt> to verify that
56 the package build as it should, and then visit
57 <a href=
"https://salsa.debian.org/debian/">https://salsa.debian.org/debian/
</a>
58 and make sure there is not already a git repository for the package
59 there. I also did
<tt>git log -p debian/control
</tt> and look for vcs
60 entries to check if the package used to have a git repository on
61 Alioth, and see if it can be a useful starting point moving forward.
62 If all this check out, I created a new gitlab project below the Debian
63 group on salsa, push the package source there and upload a new version.
64 I tend to also ensure build hardening is enabled, if it prove to be
65 easy, and check if I can easily fix any lintian issues or bug reports.
66 If the process took more than
20 minutes, I dropped it and moved on to
69 <p>If I found patches in debian/patches/ that were not yet passed
70 upstream, I would send an email to make sure upstream know about them.
71 This has proved to be a valuable step, and caused several new releases
72 for software that initially appeared abandoned. :)
</p>
74 <p>As usual, if you use Bitcoin and want to show your support of my
75 activities, please send Bitcoin donations to my address
76 <b><a href=
"bitcoin:15oWEoG9dUPovwmUL9KWAnYRtNJEkP1u1b">15oWEoG9dUPovwmUL9KWAnYRtNJEkP1u1b
</a></b>.
</p>
81 Tags:
<a href=
"https://www.hungry.com/~pere/blog/tags/debian">debian
</a>,
<a href=
"https://www.hungry.com/~pere/blog/tags/english">english
</a>.
86 <div class=
"padding"></div>
89 <div class=
"title"><a href=
"https://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>
90 <div class=
"date">10th July
2024</div>
91 <div class=
"body"><p>The Norwegian
<a href=
"https://linuxcnc.org/">The LinuxCNC
</a>
92 developer gathering
2024 is over. It was a great and productive
93 weekend, and I am sad that it is over.
</p>
95 <p>Regular readers probably still remember what LinuxCNC is, but her
96 is a quick summary for those that forgot? LinuxCNC is a free software
97 system for numerical control of machines such as milling machines,
98 lathes, plasma cutters, routers, cutting machines, robots and
99 hexapods. It eats G-code and produce motor movement and other changes
100 to the physical world, while reading sensor input.
</p>
102 <p>I am not quite sure about the total head count, as not all people
103 were present at the gathering the entire weekend, but I believe it was
104 close to
10 people showing their faces at the gathering. The "hard
105 core" of the group, who stayed the entire weekend, were two from
106 Norway, two from Germany and one from England. I am happy with the
107 outcome from the gathering. We managed to wrap up a new stable
108 LinuxCNC release
2.9.3 and even tested it on real hardware within
109 minutes of the release. The release notes for
2.9.3 are still being
110 written, but should show up on on the project site in the next few
111 days. We managed to go through around twenty pull requests and merge
112 then into either the stable release (
2.9) or the development branch
113 (master). There are still around thirty pull requests left to
114 process, so we are not out of work yet. We even managed to
115 fix/improve a slightly worn lathe, and experiment with running a
116 mechanical clock using G-code.
</p>
118 <p>The evening barbeque worked well both on Saturday and Sunday. It
119 is quite fun to light up a charcoal grill using compressed air. Sadly
120 the weather was not the best, so we stayed indoors most of the
123 <p>This gathering was made possible partly with sponsoring from both
124 <a href=
"https://www.redpill-linpro.com/">Redpill Linpro
</a>,
125 <a href=
"https://debian.org/">Debian
</a> and
126 <a href=
"https://nuugfoundation.no/">NUUG Foundation
</a>, and we are
127 most grateful for the support. I would also like to thank the local
128 school for lending us some furniture, and of course the rest of the
129 members of the organizers team, Asle and Bosse, for their countless
130 contributions. The gathering was such success that we want to do it
133 <p>We plan to organize the next Norwegian LinuxCNC developer gathering
134 at the end of June next year, the weekend Friday
27th to Sunday
29th
135 of June
2025. I recommend you reserve the dates on your calendar
136 today. Other related communities are also welcome to join in, for
137 example those working on systems like FreeCAD and opencamlib, as I am
138 sure we have much in common and sharing experiences would be very
139 useful to all involved. We are of course looking for sponsors for
140 this gathering already. The total budget for this gathering was
141 around NOK
25.000 (around EUR
2.300), so our needs are quite modest.
142 Perhaps a machine or tools company would like to help out the free
143 software manufacturing community by sponsoring food, lodging and
144 transport for such gathering?
</p>
149 Tags:
<a href=
"https://www.hungry.com/~pere/blog/tags/debian">debian
</a>,
<a href=
"https://www.hungry.com/~pere/blog/tags/english">english
</a>,
<a href=
"https://www.hungry.com/~pere/blog/tags/linuxcnc">linuxcnc
</a>.
154 <div class=
"padding"></div>
157 <div class=
"title"><a href=
"https://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>
158 <div class=
"date"> 4th June
2024</div>
159 <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>
161 <p>Da jeg i høst hørte jeg et innslag på
162 <a href=
"https://radiorakel.no/">radiOrakel
</a> om en inspirerende dame
163 som levde for over hundre år siden, fikk jeg en vill ide. Elsa Laula
164 var en svensk samisk dame som ikke bare fikk utdannelsen finansiert av
165 den danske dronningen, men som gjorde så god jobb med å inspirere og
166 organisere den samiske befolkningen at det visstnok ble forslått i
167 Sverige å straffeforfølge henne for oppvigleri før hun flyttet fra
168 Sverige til Norge. Radiopraterne fortalte videre at da Elsa Laula ga
169 ut en pamflett for å inspirere samene til samling var dette den
170 første bok gitt ut av en samisk dame noensinne. Jeg fikk høre at
171 denne korte teksten kun fantes på originalspråket svensk under
172 tittelen «Inför lif eller död» og aldri var oversatt til norsk. Da
173 tenkte jeg, der jeg satt i bilen, at en norsk utgave kan vel jeg
174 fikse. Jeg har jo fått oversatt endel bøker, og en liten pamflett på
175 noen få sider burde jo være grei skuring.
</p>
177 <p>Den imponerende Elsa Laula, som senere la til etternavnet Renberg, har
178 blant annet fått dokumentaren
179 «
<a href=
"https://www.nrk.no/video/elsa-laula-renberg-kvinnen-som-samlet-sapmi_SAPP67002117">Elsa
180 Laula Renberg, kvinnen som samlet Sápmi
</a>» (
2017) av Per Kristian
181 Olsen på NRK, NRK-artikkelen
182 «
<a href=
"https://www.nrk.no/kultur/xl/et-liv-i-kamp-for-samefolkets-rettigheter-1.13351401">Samenes
183 Jeanne d’Arc
</a>» av Karen Brodshaug Sveen (
2017), oppgaven
184 «
<a href=
"https://nordligefolk.no/wp-content/uploads/2020/03/Elsa-Laulas-Info%CC%88r-Lif-och-Do%CC%88d.pdf">Elsa
185 Laulas Innför lif och död – sanningsord i de lappska
186 förhållandena
</a>» av Edel Olsen, biografien
187 «
<a href=
"https://www.siribrochjohansen.no/biografien-om-elsa-laula-renberg/">Elsa
188 Laula Renberg - Historien om samefolkets store Minerva
</a>» (
2015) av
189 Siri Broch Johansen og radiOrakel-podkasten
190 <a href=
"https://radiorakel.no/podcast/revolusjonen-har-et-kvinnelig-ansikt-elsa-laula/">Revolusjonen
191 har et kvinnelig ansikt – Elsa Laula
</a>, for å nevne de jeg har
192 finnet uten å lete spesielt hardt. En virkelig spennende dame, som i
193 tillegg til å inspirere til opprettelsen av samiske organisasjoner,
194 har inspirert til opprettelsen av Sametinget, og født seks barn der
197 <p>I dag er jeg veldig glad for å kunne annonsere at
198 <a href=
"http://www.hungry.com/~pere/publisher/#infoerlifellerdoed2024">bokmålsoversettelsen
199 er klar og tilgjengelig
</a> for både bestilling på papir og
200 epub-utgave fra lulu.com, samt som nettside. Den kringkastede
201 bokinformasjonen ser slik ut:
</p>
205 <p>Den
27 år gamle sørsamiske kvinnen Elsa Laula ga i august
1904 ut
206 en pamflett i Stockholm. Opplaget var på
6000, finansiert av
207 Stockholmsredaktøren Gustav Hedenström, som også bidro i stiftelsen av
208 Lapparnes Centralforbund. Dette kampskriftet var den første boken gitt
209 ut av en samisk kvinne, og hadde som mål å inspirere til opprettelsen
210 av samiske foreninger over hele landet, samt skape blest om
211 sentralforbundet. Pamfletten er et politisk manifest som fortsatt
212 inspirerer i dag.
</p>
214 <p>Denne pamfletten er nå for første gang tilgjengelig på bokmål,
215 sammen med en nyutgivelse av originalteksten på svensk.
</p>
219 <p>Oversettelsen hadde ikke vært mulig uten gode hjelpere. En virkelig
220 stor innsats både i korrekturarbeidet og utforskning av arkaiske
221 svenske ord, står Axel Rosén bak. I tillegg har jeg fått innspill fra
222 Edel May Karlsen og flere andre både på språkføring og historisk
223 bakgrunn for å forstå teksten.
</p>
225 <p>En kuriositet som jeg oppdaget i arbeidet med oversettelsen er at
226 det ikke stemmer at denne boken ikke var oversatt til noen andre
227 språk. Anna Wuolab oversatte den til nordsamisk i
2017 i en utgave
228 gitt ut av samisk skribent- och författarförening (Bágu čálliid
229 searvi) under tittelen «Eallit vai jápmit? : duohtavuođasánit sámi
230 diliid birra = Inför lif eller död? : sanningsord i de lappska
231 förhållandena». Papirutgaven er så vidt jeg kan forstå utsolgt fra
232 forlaget og jeg har ikke klart å finne informasjonsside om boken på
233 Internett. Mulig den er mulig å få tak i som ebok, hvis en skal tro
234 <a href=
"https://search.worldcat.org/title/1405213087">oppføring i
237 <p>Oversetterrammeverket jeg har satt opp for å gjennomføre dette
238 oversettelsesprosjektet håndterer flere språk. Jeg er igang med
239 engelsk utgave, og er åpen for å også gi ut andre oversettelser hvis
240 noen er interessert i å gjøre jobben. Det hadde vært ekstra moro å gi
241 den ut på sørsamisk, det samiske språket i regionen der Elsa Laula kom
242 fra. Der er jeg som vanlig avhengig av frivillige som er også
243 interessert i å gjøre dette på dugnad.
</p>
245 <p>Som vanlig, hvis du bruker Bitcoin og ønsker å vise din støtte til
246 det jeg driver med, setter jeg pris på om du sender Bitcoin-donasjoner
248 <b><a href=
"bitcoin:15oWEoG9dUPovwmUL9KWAnYRtNJEkP1u1b">15oWEoG9dUPovwmUL9KWAnYRtNJEkP1u1b
</a></b>. Merk,
249 betaling med bitcoin er ikke anonymt. :)
</p>
254 Tags:
<a href=
"https://www.hungry.com/~pere/blog/tags/docbook">docbook
</a>,
<a href=
"https://www.hungry.com/~pere/blog/tags/norsk">norsk
</a>.
259 <div class=
"padding"></div>
262 <div class=
"title"><a href=
"https://www.hungry.com/~pere/blog/The_2024_LinuxCNC_Norwegian_developer_gathering.html">The
2024 LinuxCNC Norwegian developer gathering
</a></div>
263 <div class=
"date">31st May
2024</div>
264 <div class=
"body"><p><a href=
"https://linuxcnc.org/">The LinuxCNC project
</a> is still
265 going strong. And I believe this great software system for numerical control of
266 machines such as milling machines, lathes, plasma cutters, routers,
267 cutting machines, robots and hexapods, would do even better with more
268 in-person developer gatherings, so we plan to organise such gathering
271 <p>The Norwegian LinuxCNC developer gathering take place the weekend
272 Friday July
5th to
7th this year, and is open for everyone interested
273 in contributing to LinuxCNC and free software manufacturing. Up to
274 date information about the gathering can be found in
275 <a href=
"https://sourceforge.net/p/emc/mailman/emc-developers/thread/123eaae0-f3b9-4170-a251-b7d608f1e974%40bofh.no/">the
276 developer mailing list thread
</a> where the gathering was announced.
277 Thanks to the good people at
279 <a href=
"https://www.debian.org/">Debian
</a> as well as leftover money
280 from last years gathering from
281 <a href=
"https://www.redpill-linpro.com/">Redpill-Linpro
</a> and
282 <a href=
"https://www.nuugfoundation.no/no/">NUUG Foundation
</a>, we
283 have enough sponsor funds to pay for food, and probably also shelter
284 for the people traveling from afar to join us. If you would like to
285 join the gathering, get in touch and add your details on
286 <a href=
"https://pad.efn.no/p/linuxcnc-2024-norway">the pad
</a>.
</p>
288 <p>As usual, if you use Bitcoin and want to show your support of my
289 activities, please send Bitcoin donations to my address
290 <b><a href=
"bitcoin:15oWEoG9dUPovwmUL9KWAnYRtNJEkP1u1b">15oWEoG9dUPovwmUL9KWAnYRtNJEkP1u1b
</a></b>.
</p>
295 Tags:
<a href=
"https://www.hungry.com/~pere/blog/tags/debian">debian
</a>,
<a href=
"https://www.hungry.com/~pere/blog/tags/english">english
</a>,
<a href=
"https://www.hungry.com/~pere/blog/tags/linuxcnc">linuxcnc
</a>.
300 <div class=
"padding"></div>
303 <div class=
"title"><a href=
"https://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>
304 <div class=
"date">25th April
2024</div>
305 <div class=
"body"><p>Nine days ago, I started migrating orphaned Debian packages with no
306 version control system listed in debian/control of the source to git.
307 At the time there were
438 such packages. Now there are
391,
308 according to the UDD. In reality it is slightly less, as there is a
309 delay between uploads and UDD updates. In the nine days since, I have
310 thus been able to work my way through ten percent of the packages. I
311 am starting to run out of steam, and hope someone else will also help
312 brushing some dust of these packages. Here is a recipe how to do it.
314 I start by picking a random package by querying the UDD for a list of
315 10 random packages from the set of remaining packages:
318 PGPASSWORD="udd-mirror" psql --port=
5432 --host=udd-mirror.debian.net \
319 --username=udd-mirror udd -c "select source from sources \
320 where release = 'sid' and (vcs_url ilike '%anonscm.debian.org%' \
321 OR vcs_browser ilike '%anonscm.debian.org%' or vcs_url IS NULL \
322 OR vcs_browser IS NULL) AND maintainer ilike '%packages@qa.debian.org%' \
323 order by random() limit
10;"
326 <p>Next, I visit http://salsa.debian.org/debian and search for the
327 package name, to ensure no git repository already exist. If it does,
328 I clone it and try to get it to an uploadable state, and add the Vcs-*
329 entries in d/control to make the repository more widely known. These
330 packages are a minority, so I will not cover that use case here.
</p>
332 <p>For packages without an existing git repository, I run the
333 following script
<tt>debian-snap-to-salsa
</tt> to prepare a git
334 repository with the existing packaging.
</p>
339 # See also https://bugs.debian.org/
804722#
31
343 # Move to this Standards-Version.
348 if [ -z "$PKG" ]; then
349 echo "usage: $
0 <pkgname>"
353 if [ -e "${PKG}-salsa
" ]; then
354 echo "error: ${PKG}-salsa already exist, aborting.
"
358 if [ -z "ALLOWFAILURE
" ] ; then
362 # Fetch every snapshotted source package. Manually loop until all
363 # transfers succeed, as 'gbp import-dscs --debsnap' do not fail on
365 until debsnap --force -v $PKG || $ALLOWFAILURE ; do sleep 1; done
366 mkdir ${PKG}-salsa; cd ${PKG}-salsa
369 # Specify branches to override any debian/gbp.conf file present in the
371 gbp import-dscs --debian-branch=master --upstream-branch=upstream \
372 --pristine-tar ../source-$PKG/*.dsc
374 # Add Vcs pointing to Salsa Debian project (must be manually created
376 if ! grep -q ^Vcs- debian/control ; then
377 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
378 git commit -m "Updated vcs in d/control to Salsa." debian/control
381 # Tell gbp to enforce the use of pristine-tar.
382 inifile +inifile debian/gbp.conf +create +section DEFAULT +key pristine-tar +value True
383 git add debian/gbp.conf
384 git commit -m "Added d/gbp.conf to enforce the use of pristine-tar." debian/gbp.conf
386 # Update to latest Standards-Version.
387 SV="$(grep ^Standards-Version: debian/control|awk '{print $
2}')"
388 if [ $SV_LATEST != $SV ]; then
389 sed -i "s/\(Standards-Version: \)\(.*\)/\
1$SV_LATEST/" debian/control
390 git commit -m "Updated Standards-Version from $SV to $SV_LATEST." debian/control
393 if grep -q pkg-config debian/control; then
394 sed -i s/pkg-config/pkgconf/ debian/control
395 git commit -m "Replaced obsolete pkg-config build dependency with pkgconf." debian/control
398 if grep -q libncurses5-dev debian/control; then
399 sed -i s/libncurses5-dev/libncurses-dev/ debian/control
400 git commit -m "Replaced obsolete libncurses5-dev build dependency with libncurses-dev." debian/control
404 Some times the debsnap script fail to download some of the versions.
405 In those cases I investigate, and if I decide the failing versions
406 will not be missed, I call it using ALLOWFAILURE=true to ignore the
407 problem and create the git repository anyway.
</p>
409 <p>With the git repository in place, I do a test build (gbp
410 buildpackage) to ensure the build is actually working. If it does not
411 I pick a different package, or if the build failure is trivial to fix,
412 I fix it before continuing. At this stage I revisit
413 http://salsa.debian.org/debian and create the project under this group
414 for the package. I then follow the instructions to publish the local
415 git repository. Here is from a recent example:
</p>
418 git remote add origin git@salsa.debian.org:debian/perl-byacc.git
419 git push --set-upstream origin master upstream pristine-tar
423 <p>With a working build, I have a look at the build rules if I want to
424 remove some more dust. I normally try to move to debhelper compat
425 level
13, which involves removing debian/compat and modifying
426 debian/control to build depend on debhelper-compat (=
13). I also test
427 with 'Rules-Requires-Root: no' in debian/control and verify in
428 debian/rules that hardening is enabled, and include all of these if
429 the package still build. If it fail to build with level
13, I try
430 with
12,
11,
10 and so on until I find a level where it build, as I do
431 not want to spend a lot of time fixing build issues.
</p>
433 <p>Some times, when I feel inspired, I make sure debian/copyright is
434 converted to the machine readable format, often by starting with
435 'debhelper -cc' and then cleaning up the autogenerated content until
436 it matches realities. If I feel like it, I might also clean up
437 non-dh-based debian/rules files to use the short style dh build
440 <p>Once I have removed all the dust I care to process for the package,
441 I run 'gbp dch' to generate a debian/changelog entry based on the
442 commits done so far, run 'dch -r' to switch from 'UNRELEASED' to
443 'unstable' and get an editor to make sure the 'QA upload' marker is in
444 place and that all long commit descriptions are wrapped into sensible
445 lengths, run 'debcommit --release -a' to commit and tag the new
446 debian/changelog entry, run 'debuild -S' to build a source only
447 package, and 'dput ../perl-byacc_2.0-
10_source.changes' to do the
448 upload. During the entire process, and many times per step, I run
449 'debuild' to verify the changes done still work. I also some times
450 verify the set of built files using 'find debian' to see if I can spot
451 any problems (like no file in usr/bin any more or empty package). I
452 also try to fix all lintian issues reported at the end of each
455 <p>If I find Debian specific patches, I try to ensure their metadata
456 is fairly up to date and some times I even try to reach out to
457 upstream, to make the upstream project aware of the patches. Most of
458 my emails bounce, so the success rate is low. For projects with no
459 Homepage entry in debian/control I try to track down one, and for
460 packages with no debian/watch file I try to create one. But at least
461 for some of the packages I have been unable to find a functioning
462 upstream, and must skip both of these.
</p>
464 <p>If I could handle ten percent in nine days, twenty people could
465 complete the rest in less then five days. I use approximately twenty
466 minutes per package, when I have twenty minutes spare time to spend.
467 Perhaps you got twenty minutes to spare too?
</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>
473 <p><strong>Update
2024-
05-
04:
</strong> There is
474 <a href=
"https://people.skolelinux.org/pere/blog/images/2024-05-04-debian-snap-to-salsa.sh">an
475 updated edition of my migration script
</a>, last updated
481 Tags:
<a href=
"https://www.hungry.com/~pere/blog/tags/debian">debian
</a>,
<a href=
"https://www.hungry.com/~pere/blog/tags/english">english
</a>.
486 <div class=
"padding"></div>
489 <div class=
"title"><a href=
"https://www.hungry.com/~pere/blog/RAID_status_from_LSI_Megaraid_controllers_in_Debian.html">RAID status from LSI Megaraid controllers in Debian
</a></div>
490 <div class=
"date">17th April
2024</div>
491 <div class=
"body"><p>I am happy to report that
492 <a href=
"https://github.com/namiltd/megactl">the megactl package
</a>,
493 useful to fetch RAID status when using the LSI Megaraid controller,
494 now is available in Debian. It passed NEW a few days ago, and is now
495 <a href=
"https://tracker.debian.org/pkg/megactl">available in
496 unstable
</a>, and probably showing up in testing in a weeks time. The
497 new version should provide Appstream hardware mapping and should
498 integrate nicely with isenkram.
</p>
500 <p>As usual, if you use Bitcoin and want to show your support of my
501 activities, please send Bitcoin donations to my address
502 <b><a href=
"bitcoin:15oWEoG9dUPovwmUL9KWAnYRtNJEkP1u1b">15oWEoG9dUPovwmUL9KWAnYRtNJEkP1u1b
</a></b>.
</p>
508 Tags:
<a href=
"https://www.hungry.com/~pere/blog/tags/english">english
</a>,
<a href=
"https://www.hungry.com/~pere/blog/tags/isenkram">isenkram
</a>,
<a href=
"https://www.hungry.com/~pere/blog/tags/raid">raid
</a>.
513 <div class=
"padding"></div>
516 <div class=
"title"><a href=
"https://www.hungry.com/~pere/blog/Time_to_move_orphaned_Debian_packages_to_git.html">Time to move orphaned Debian packages to git
</a></div>
517 <div class=
"date">14th April
2024</div>
518 <div class=
"body"><p>There are several packages in Debian without a associated git
519 repository with the packaging history. This is unfortunate and it
520 would be nice if more of these would do so. Quote a lot of these are
521 without a maintainer, ie listed as maintained by the
522 '
<a href=
"https://qa.debian.org/developer.php?email=packages%40qa.debian.org">Debian
523 QA Group
</a>' place holder. In fact,
438 packages have this property
524 according to UDD (
<tt>SELECT source FROM sources WHERE release = 'sid'
525 AND (vcs_url ilike '%anonscm.debian.org%' OR vcs_browser ilike
526 '%anonscm.debian.org%' or vcs_url IS NULL OR vcs_browser IS NULL) AND
527 maintainer ilike '%packages@qa.debian.org%';
</tt>). Such packages can
528 be updated without much coordination by any Debian developer, as they
529 are considered orphaned.
</p>
531 <p>To try to improve the situation and reduce the number of packages
532 without associated git repository, I started a few days ago to search
533 out candiates and provide them with a git repository under the
534 'debian' collaborative Salsa project. I started with the packages
535 pointing to obsolete Alioth git repositories, and am now working my
536 way across the ones completely without git references. In addition to
537 updating the Vcs-* debian/control fields, I try to update
538 Standards-Version, debhelper compat level, simplify d/rules, switch to
539 Rules-Requires-Root: no and fix lintian issues reported. I only
540 implement those that are trivial to fix, to avoid spending too much
541 time on each orphaned package. So far my experience is that it take
542 aproximately
20 minutes to convert a package without any git
543 references, and a lot more for packages with existing git repositories
544 incompatible with git-buildpackages.
</p>
546 <p>So far I have converted
10 packages, and I will keep going until I
547 run out of steam. As should be clear from the numbers, there is
548 enough packages remaining for more people to do the same without
549 stepping on each others toes. I find it useful to start by searching
550 for a git repo already on salsa, as I find that some times a git repo
551 has already been created, but no new version is uploaded to Debian
552 yet. In those cases I start with the existing git repository. I
553 convert to the git-buildpackage+pristine-tar workflow, and ensure a
554 debian/gbp.conf file with "pristine-tar=True" is added early, to avoid
555 uploading a orig.tar.gz with the wrong checksum by mistake. Did that
556 three times in the begin before I remembered my mistake.
</p>
558 <p>So, if you are a Debian Developer and got some spare time, perhaps
559 considering migrating some orphaned packages to git?
</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>
568 Tags:
<a href=
"https://www.hungry.com/~pere/blog/tags/debian">debian
</a>,
<a href=
"https://www.hungry.com/~pere/blog/tags/english">english
</a>.
573 <div class=
"padding"></div>
576 <div class=
"title"><a href=
"https://www.hungry.com/~pere/blog/Plain_text_accounting_file_from_your_bitcoin_transactions.html">Plain text accounting file from your bitcoin transactions
</a></div>
577 <div class=
"date"> 7th March
2024</div>
578 <div class=
"body"><p>A while back I wrote a small script to extract the Bitcoin
579 transactions in a wallet in the
580 <ahref=
"https://plaintextaccounting.org/">ledger plain text accounting
581 format
</a>. The last few days I spent some time to get it working
582 better with more special cases. In case it can be useful for others,
587 # -*- coding: utf-
8 -*-
588 # Copyright (c)
2023-
2024 Petter Reinholdtsen
590 from decimal import Decimal
597 def format_float(num):
598 return numpy.format_float_positional(num, trim='-')
601 u'amount' : 'Assets:BTC:main',
605 '
<some address
>' : 'Assets:bankkonto',
606 '
<some address
>' : 'Assets:bankkonto',
610 proc = subprocess.Popen(cmd,stdout=subprocess.PIPE)
611 j = json.loads(proc.communicate()[
0], parse_float=Decimal)
615 # get all transactions for all accounts / addresses
620 cmd = ['bitcoin-cli', 'listtransactions', '*', str(limit)]
622 txs.extend(exec_json(cmd))
624 # Useful for debugging
625 with open('transactions.json') as f:
626 txs.extend(json.load(f, parse_float=Decimal))
628 for tx in sorted(txs, key=lambda a: a['time']):
629 # print tx['category']
630 if 'abandoned' in tx and tx['abandoned']:
632 if 'confirmations' in tx and
0 >= tx['confirmations']:
634 when = time.strftime('%Y-%m-%d %H:%M', time.localtime(tx['time']))
637 elif 'comment' in tx:
643 print("%s %s" % (when, desc))
645 print(" ; to bitcoin address %s" % tx['address'])
647 print(" ; missing address in transaction, txid=%s" % tx['txid'])
648 print(f" ; amount={tx['amount']}")
650 print(f" ; fee={tx['fee']}")
651 for f in accounts.keys():
652 if f in tx and Decimal(
0) != tx[f]:
654 print(" %-
20s %s BTC" % (accounts[f], format_float(amount)))
655 if 'fee' in tx and Decimal(
0) != tx['fee']:
656 # Make sure to list fee used in several transactions only once.
657 if 'fee' in tx and tx['txid'] in txidfee \
658 and tx['fee'] == txidfee[tx['txid']]:
662 print(" %-
20s %s BTC" % (accounts['amount'], format_float(fee)))
663 print(" %-
20s %s BTC" % ('Expences:BTC-fee', format_float(-fee)))
664 txidfee[tx['txid']] = tx['fee']
666 if 'address' in tx and tx['address'] in addresses:
667 print(" %s" % addresses[tx['address']])
669 if 'generate' == tx['category']:
670 print(" Income:BTC-mining")
672 if amount < Decimal(
0):
673 print(f" Assets:unknown:sent:update-script-addr-{tx['address']}")
675 print(f" Assets:unknown:received:update-script-addr-{tx['address']}")
679 print("# Found %d transactions" % c)
681 print(f"# Warning: Limit {limit} reached, consider increasing limit.")
687 </pre></blockquote></p>
689 <p>It is more of a proof of concept, and I do not expect it to handle
690 all edge cases, but it worked for me, and perhaps you can find it
693 <p>To get a more interesting result, it is useful to map accounts sent
694 to or received from to accounting accounts, using the
695 <tt>addresses
</tt> hash. As these will be very context dependent, I
696 leave out my list to allow each user to fill out their own list of
697 accounts. Out of the box, 'ledger reg BTC:main' should be able to
698 show the amount of BTCs present in the wallet at any given time in the
699 past. For other and more valuable analysis, a account plan need to be
700 set up in the
<tt>addresses
</tt> hash. Here is an example
704 2024-
03-
07 17:
00 Donated to good cause
705 Assets:BTC:main -
0.1 BTC
706 Assets:BTC:main -
0.00001 BTC
707 Expences:BTC-fee
0.00001 BTC
708 Expences:donations
0.1 BTC
709 </pre></blockquote></p>
711 <p>It need a running Bitcoin Core daemon running, as it connect to it
712 using
<tt>bitcoin-cli listtransactions *
100000</tt> to extract the
713 transactions listed in the Wallet.
</p>
715 <p>As usual, if you use Bitcoin and want to show your support of my
716 activities, please send Bitcoin donations to my address
717 <b><a href=
"bitcoin:15oWEoG9dUPovwmUL9KWAnYRtNJEkP1u1b">15oWEoG9dUPovwmUL9KWAnYRtNJEkP1u1b
</a></b>.
</p>
722 Tags:
<a href=
"https://www.hungry.com/~pere/blog/tags/bitcoin">bitcoin
</a>,
<a href=
"https://www.hungry.com/~pere/blog/tags/english">english
</a>.
727 <div class=
"padding"></div>
730 <div class=
"title"><a href=
"https://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>
731 <div class=
"date"> 3rd March
2024</div>
732 <div class=
"body"><p>The last few days I have revisited RAID setup using the LSI
733 Megaraid controller. These are a family of controllers called PERC by
734 Dell, and is present in several old PowerEdge servers, and I recently
735 got my hands on one of these. I had forgotten how to handle this RAID
736 controller in Debian, so I had to take a peek in the
737 <a href=
"https://wiki.debian.org/LinuxRaidForAdmins">Debian wiki page
738 "Linux and Hardware RAID: an administrator's summary"
</a> to remember
739 what kind of software is available to configure and monitor the disks
740 and controller. I prefer Free Software alternatives to proprietary
741 tools, as the later tend to fall into disarray once the manufacturer
742 loose interest, and often do not work with newer Linux Distributions.
743 Sadly there is no free software tool to configure the RAID setup, only
744 to monitor it. RAID can provide improved reliability and resilience in
745 a storage solution, but only if it is being regularly checked and any
746 broken disks are being replaced in time. I thus want to ensure some
747 automatic monitoring is available.
</p>
749 <p>In the discovery process, I came across a old free software tool to
750 monitor PERC2, PERC3, PERC4 and PERC5 controllers, which to my
751 surprise is not present in debian. To help change that I created a
752 <a href=
"https://bugs.debian.org/1065322">request for packaging of the
753 megactl package
</a>, and tried to track down a usable version.
754 <a href=
"https://sourceforge.net/p/megactl/">The original project
755 site
</a> is on Sourceforge, but as far as I can tell that project has
756 been dead for more than
15 years. I managed to find a
757 <a href=
"https://github.com/hmage/megactl">more recent fork on
758 github
</a> from user hmage, but it is unclear to me if this is still
759 being maintained. It has not seen much improvements since
2016. A
760 <a href=
"https://github.com/namiltd/megactl">more up to date
761 edition
</a> is a git fork from the original github fork by user
762 namiltd, and this newer fork seem a lot more promising. The owner of
763 this github repository has replied to change proposals within hours,
764 and had already added some improvements and support for more hardware.
765 Sadly he is reluctant to commit to maintaining the tool and stated in
766 <a href=
"https://github.com/namiltd/megactl/pull/1">my first pull
767 request
</A> that he think a new release should be made based on the
768 git repository owned by hmage. I perfectly understand this
769 reluctance, as I feel the same about maintaining yet another package
770 in Debian when I barely have time to take care of the ones I already
771 maintain, but do not really have high hopes that hmage will have time
772 to spend on it and hope namiltd will change his mind.
</p>
774 <p>In any case, I created
775 <a href=
"https://salsa.debian.org/debian/megactl">a draft package
</a>
776 based on the namiltd edition and put it under the debian group on
777 salsa.debian.org. If you own a Dell PowerEdge server with one of the
778 PERC controllers, or any other RAID controller using the megaraid or
779 megaraid_sas Linux kernel modules, you might want to check it out. If
780 enough people are interested, perhaps the package will make it into
781 the Debian archive.
</p>
783 <p>There are two tools provided, megactl for the megaraid Linux kernel
784 module, and megasasctl for the megaraid_sas Linux kernel module. The
785 simple output from the command on one of my machines look like this
786 (yes, I know some of the disks have problems. :).
</p>
790 a0 PERC H730 Mini encl:
1 ldrv:
2 batt:good
791 a0d0
558GiB RAID
1 1x2 optimal
792 a0d1
3067GiB RAID
0 1x11 optimal
793 a0e32s0
558GiB a0d0 online errs: media:
0 other:
19
794 a0e32s1
279GiB a0d1 online
795 a0e32s2
279GiB a0d1 online
796 a0e32s3
279GiB a0d1 online
797 a0e32s4
279GiB a0d1 online
798 a0e32s5
279GiB a0d1 online
799 a0e32s6
279GiB a0d1 online
800 a0e32s8
558GiB a0d0 online errs: media:
0 other:
17
801 a0e32s9
279GiB a0d1 online
802 a0e32s10
279GiB a0d1 online
803 a0e32s11
279GiB a0d1 online
804 a0e32s12
279GiB a0d1 online
805 a0e32s13
279GiB a0d1 online
810 <p>In addition to displaying a simple status report, it can also test
811 individual drives and print the various event logs. Perhaps you too
814 <p>In the packaging process I provided some patches upstream to
815 improve installation and ensure
816 <ahref=
"https://github.com/namiltd/megactl/pull/2">a Appstream
817 metainfo file is provided
</a> to list all supported HW, to allow
818 <a href=
"https://tracker.debian.org/isenkram">isenkram
</a> to propose
819 the package on all servers with a relevant PCI card.
</p>
821 <p>As usual, if you use Bitcoin and want to show your support of my
822 activities, please send Bitcoin donations to my address
823 <b><a href=
"bitcoin:15oWEoG9dUPovwmUL9KWAnYRtNJEkP1u1b">15oWEoG9dUPovwmUL9KWAnYRtNJEkP1u1b
</a></b>.
</p>
829 Tags:
<a href=
"https://www.hungry.com/~pere/blog/tags/english">english
</a>,
<a href=
"https://www.hungry.com/~pere/blog/tags/isenkram">isenkram
</a>,
<a href=
"https://www.hungry.com/~pere/blog/tags/raid">raid
</a>.
834 <div class=
"padding"></div>
837 <div class=
"title"><a href=
"https://www.hungry.com/~pere/blog/Frokostseminar_om_Noark_5_i_Oslo_tirsdag_2024_03_12.html">Frokostseminar om Noark
5 i Oslo tirsdag
2024-
03-
12</a></div>
838 <div class=
"date">27th February
2024</div>
839 <div class=
"body"><p>Nikita-prosjektet, der jeg er involvert, inviterer i samarbeid med
840 Oslo Byarkiv, forskningsgruppen METAINFO og foreningen NUUG, til et
841 frokostseminar om Noark
5 og Noark
5 Tjenestegrensesnitt tirsdag
842 2024-
03-
12. Seminaret finner sted ved Oslo byarkiv. Vi håper å få
843 til videostrømming via Internett av presentasjoner og paneldiskusjon.
844 Oppdatert program og lenker til påmeldingsskjema er
845 <a href=
"https://noark.codeberg.page/noark5-seminars/2023-03-12-noark-workshop.html">tilgjengelig
846 fra Nikita-prosjektet
</a>. Arrangementet er gratis.
848 <p>Som vanlig, hvis du bruker Bitcoin og ønsker å vise din støtte til
849 det jeg driver med, setter jeg pris på om du sender Bitcoin-donasjoner
851 <b><a href=
"bitcoin:15oWEoG9dUPovwmUL9KWAnYRtNJEkP1u1b">15oWEoG9dUPovwmUL9KWAnYRtNJEkP1u1b
</a></b>. Merk,
852 betaling med bitcoin er ikke anonymt. :)
</p>
857 Tags:
<a href=
"https://www.hungry.com/~pere/blog/tags/noark5">noark5
</a>,
<a href=
"https://www.hungry.com/~pere/blog/tags/norsk">norsk
</a>,
<a href=
"https://www.hungry.com/~pere/blog/tags/nuug">nuug
</a>,
<a href=
"https://www.hungry.com/~pere/blog/tags/offentlig innsyn">offentlig innsyn
</a>,
<a href=
"https://www.hungry.com/~pere/blog/tags/standard">standard
</a>.
862 <div class=
"padding"></div>
864 <p style=
"text-align: right;"><a href=
"index.rss"><img src=
"https://www.hungry.com/~pere/blog/xml.gif" alt=
"RSS feed" width=
"36" height=
"14" /></a></p>
875 <li><a href=
"https://www.hungry.com/~pere/blog/archive/2024/01/">January (
1)
</a></li>
877 <li><a href=
"https://www.hungry.com/~pere/blog/archive/2024/02/">February (
1)
</a></li>
879 <li><a href=
"https://www.hungry.com/~pere/blog/archive/2024/03/">March (
2)
</a></li>
881 <li><a href=
"https://www.hungry.com/~pere/blog/archive/2024/04/">April (
3)
</a></li>
883 <li><a href=
"https://www.hungry.com/~pere/blog/archive/2024/05/">May (
1)
</a></li>
885 <li><a href=
"https://www.hungry.com/~pere/blog/archive/2024/06/">June (
1)
</a></li>
887 <li><a href=
"https://www.hungry.com/~pere/blog/archive/2024/07/">July (
2)
</a></li>
894 <li><a href=
"https://www.hungry.com/~pere/blog/archive/2023/01/">January (
3)
</a></li>
896 <li><a href=
"https://www.hungry.com/~pere/blog/archive/2023/02/">February (
1)
</a></li>
898 <li><a href=
"https://www.hungry.com/~pere/blog/archive/2023/04/">April (
2)
</a></li>
900 <li><a href=
"https://www.hungry.com/~pere/blog/archive/2023/05/">May (
3)
</a></li>
902 <li><a href=
"https://www.hungry.com/~pere/blog/archive/2023/06/">June (
1)
</a></li>
904 <li><a href=
"https://www.hungry.com/~pere/blog/archive/2023/08/">August (
1)
</a></li>
906 <li><a href=
"https://www.hungry.com/~pere/blog/archive/2023/09/">September (
1)
</a></li>
908 <li><a href=
"https://www.hungry.com/~pere/blog/archive/2023/10/">October (
1)
</a></li>
910 <li><a href=
"https://www.hungry.com/~pere/blog/archive/2023/11/">November (
4)
</a></li>
912 <li><a href=
"https://www.hungry.com/~pere/blog/archive/2023/12/">December (
1)
</a></li>
919 <li><a href=
"https://www.hungry.com/~pere/blog/archive/2022/02/">February (
1)
</a></li>
921 <li><a href=
"https://www.hungry.com/~pere/blog/archive/2022/03/">March (
3)
</a></li>
923 <li><a href=
"https://www.hungry.com/~pere/blog/archive/2022/04/">April (
2)
</a></li>
925 <li><a href=
"https://www.hungry.com/~pere/blog/archive/2022/06/">June (
2)
</a></li>
927 <li><a href=
"https://www.hungry.com/~pere/blog/archive/2022/07/">July (
1)
</a></li>
929 <li><a href=
"https://www.hungry.com/~pere/blog/archive/2022/09/">September (
1)
</a></li>
931 <li><a href=
"https://www.hungry.com/~pere/blog/archive/2022/10/">October (
1)
</a></li>
933 <li><a href=
"https://www.hungry.com/~pere/blog/archive/2022/12/">December (
1)
</a></li>
940 <li><a href=
"https://www.hungry.com/~pere/blog/archive/2021/01/">January (
2)
</a></li>
942 <li><a href=
"https://www.hungry.com/~pere/blog/archive/2021/02/">February (
1)
</a></li>
944 <li><a href=
"https://www.hungry.com/~pere/blog/archive/2021/05/">May (
1)
</a></li>
946 <li><a href=
"https://www.hungry.com/~pere/blog/archive/2021/06/">June (
1)
</a></li>
948 <li><a href=
"https://www.hungry.com/~pere/blog/archive/2021/07/">July (
3)
</a></li>
950 <li><a href=
"https://www.hungry.com/~pere/blog/archive/2021/08/">August (
1)
</a></li>
952 <li><a href=
"https://www.hungry.com/~pere/blog/archive/2021/09/">September (
1)
</a></li>
954 <li><a href=
"https://www.hungry.com/~pere/blog/archive/2021/10/">October (
1)
</a></li>
956 <li><a href=
"https://www.hungry.com/~pere/blog/archive/2021/12/">December (
1)
</a></li>
963 <li><a href=
"https://www.hungry.com/~pere/blog/archive/2020/02/">February (
2)
</a></li>
965 <li><a href=
"https://www.hungry.com/~pere/blog/archive/2020/03/">March (
2)
</a></li>
967 <li><a href=
"https://www.hungry.com/~pere/blog/archive/2020/04/">April (
2)
</a></li>
969 <li><a href=
"https://www.hungry.com/~pere/blog/archive/2020/05/">May (
3)
</a></li>
971 <li><a href=
"https://www.hungry.com/~pere/blog/archive/2020/06/">June (
2)
</a></li>
973 <li><a href=
"https://www.hungry.com/~pere/blog/archive/2020/07/">July (
1)
</a></li>
975 <li><a href=
"https://www.hungry.com/~pere/blog/archive/2020/09/">September (
1)
</a></li>
977 <li><a href=
"https://www.hungry.com/~pere/blog/archive/2020/10/">October (
1)
</a></li>
979 <li><a href=
"https://www.hungry.com/~pere/blog/archive/2020/11/">November (
1)
</a></li>
986 <li><a href=
"https://www.hungry.com/~pere/blog/archive/2019/01/">January (
4)
</a></li>
988 <li><a href=
"https://www.hungry.com/~pere/blog/archive/2019/02/">February (
3)
</a></li>
990 <li><a href=
"https://www.hungry.com/~pere/blog/archive/2019/03/">March (
3)
</a></li>
992 <li><a href=
"https://www.hungry.com/~pere/blog/archive/2019/05/">May (
2)
</a></li>
994 <li><a href=
"https://www.hungry.com/~pere/blog/archive/2019/06/">June (
5)
</a></li>
996 <li><a href=
"https://www.hungry.com/~pere/blog/archive/2019/07/">July (
2)
</a></li>
998 <li><a href=
"https://www.hungry.com/~pere/blog/archive/2019/08/">August (
1)
</a></li>
1000 <li><a href=
"https://www.hungry.com/~pere/blog/archive/2019/09/">September (
1)
</a></li>
1002 <li><a href=
"https://www.hungry.com/~pere/blog/archive/2019/11/">November (
1)
</a></li>
1004 <li><a href=
"https://www.hungry.com/~pere/blog/archive/2019/12/">December (
4)
</a></li>
1011 <li><a href=
"https://www.hungry.com/~pere/blog/archive/2018/01/">January (
1)
</a></li>
1013 <li><a href=
"https://www.hungry.com/~pere/blog/archive/2018/02/">February (
5)
</a></li>
1015 <li><a href=
"https://www.hungry.com/~pere/blog/archive/2018/03/">March (
5)
</a></li>
1017 <li><a href=
"https://www.hungry.com/~pere/blog/archive/2018/04/">April (
3)
</a></li>
1019 <li><a href=
"https://www.hungry.com/~pere/blog/archive/2018/06/">June (
2)
</a></li>
1021 <li><a href=
"https://www.hungry.com/~pere/blog/archive/2018/07/">July (
5)
</a></li>
1023 <li><a href=
"https://www.hungry.com/~pere/blog/archive/2018/08/">August (
3)
</a></li>
1025 <li><a href=
"https://www.hungry.com/~pere/blog/archive/2018/09/">September (
3)
</a></li>
1027 <li><a href=
"https://www.hungry.com/~pere/blog/archive/2018/10/">October (
5)
</a></li>
1029 <li><a href=
"https://www.hungry.com/~pere/blog/archive/2018/11/">November (
2)
</a></li>
1031 <li><a href=
"https://www.hungry.com/~pere/blog/archive/2018/12/">December (
4)
</a></li>
1038 <li><a href=
"https://www.hungry.com/~pere/blog/archive/2017/01/">January (
4)
</a></li>
1040 <li><a href=
"https://www.hungry.com/~pere/blog/archive/2017/02/">February (
3)
</a></li>
1042 <li><a href=
"https://www.hungry.com/~pere/blog/archive/2017/03/">March (
5)
</a></li>
1044 <li><a href=
"https://www.hungry.com/~pere/blog/archive/2017/04/">April (
2)
</a></li>
1046 <li><a href=
"https://www.hungry.com/~pere/blog/archive/2017/06/">June (
5)
</a></li>
1048 <li><a href=
"https://www.hungry.com/~pere/blog/archive/2017/07/">July (
1)
</a></li>
1050 <li><a href=
"https://www.hungry.com/~pere/blog/archive/2017/08/">August (
1)
</a></li>
1052 <li><a href=
"https://www.hungry.com/~pere/blog/archive/2017/09/">September (
3)
</a></li>
1054 <li><a href=
"https://www.hungry.com/~pere/blog/archive/2017/10/">October (
5)
</a></li>
1056 <li><a href=
"https://www.hungry.com/~pere/blog/archive/2017/11/">November (
3)
</a></li>
1058 <li><a href=
"https://www.hungry.com/~pere/blog/archive/2017/12/">December (
4)
</a></li>
1065 <li><a href=
"https://www.hungry.com/~pere/blog/archive/2016/01/">January (
3)
</a></li>
1067 <li><a href=
"https://www.hungry.com/~pere/blog/archive/2016/02/">February (
2)
</a></li>
1069 <li><a href=
"https://www.hungry.com/~pere/blog/archive/2016/03/">March (
3)
</a></li>
1071 <li><a href=
"https://www.hungry.com/~pere/blog/archive/2016/04/">April (
8)
</a></li>
1073 <li><a href=
"https://www.hungry.com/~pere/blog/archive/2016/05/">May (
8)
</a></li>
1075 <li><a href=
"https://www.hungry.com/~pere/blog/archive/2016/06/">June (
2)
</a></li>
1077 <li><a href=
"https://www.hungry.com/~pere/blog/archive/2016/07/">July (
2)
</a></li>
1079 <li><a href=
"https://www.hungry.com/~pere/blog/archive/2016/08/">August (
5)
</a></li>
1081 <li><a href=
"https://www.hungry.com/~pere/blog/archive/2016/09/">September (
2)
</a></li>
1083 <li><a href=
"https://www.hungry.com/~pere/blog/archive/2016/10/">October (
3)
</a></li>
1085 <li><a href=
"https://www.hungry.com/~pere/blog/archive/2016/11/">November (
8)
</a></li>
1087 <li><a href=
"https://www.hungry.com/~pere/blog/archive/2016/12/">December (
5)
</a></li>
1094 <li><a href=
"https://www.hungry.com/~pere/blog/archive/2015/01/">January (
7)
</a></li>
1096 <li><a href=
"https://www.hungry.com/~pere/blog/archive/2015/02/">February (
6)
</a></li>
1098 <li><a href=
"https://www.hungry.com/~pere/blog/archive/2015/03/">March (
1)
</a></li>
1100 <li><a href=
"https://www.hungry.com/~pere/blog/archive/2015/04/">April (
4)
</a></li>
1102 <li><a href=
"https://www.hungry.com/~pere/blog/archive/2015/05/">May (
3)
</a></li>
1104 <li><a href=
"https://www.hungry.com/~pere/blog/archive/2015/06/">June (
4)
</a></li>
1106 <li><a href=
"https://www.hungry.com/~pere/blog/archive/2015/07/">July (
6)
</a></li>
1108 <li><a href=
"https://www.hungry.com/~pere/blog/archive/2015/08/">August (
2)
</a></li>
1110 <li><a href=
"https://www.hungry.com/~pere/blog/archive/2015/09/">September (
2)
</a></li>
1112 <li><a href=
"https://www.hungry.com/~pere/blog/archive/2015/10/">October (
9)
</a></li>
1114 <li><a href=
"https://www.hungry.com/~pere/blog/archive/2015/11/">November (
6)
</a></li>
1116 <li><a href=
"https://www.hungry.com/~pere/blog/archive/2015/12/">December (
3)
</a></li>
1123 <li><a href=
"https://www.hungry.com/~pere/blog/archive/2014/01/">January (
2)
</a></li>
1125 <li><a href=
"https://www.hungry.com/~pere/blog/archive/2014/02/">February (
3)
</a></li>
1127 <li><a href=
"https://www.hungry.com/~pere/blog/archive/2014/03/">March (
8)
</a></li>
1129 <li><a href=
"https://www.hungry.com/~pere/blog/archive/2014/04/">April (
7)
</a></li>
1131 <li><a href=
"https://www.hungry.com/~pere/blog/archive/2014/05/">May (
1)
</a></li>
1133 <li><a href=
"https://www.hungry.com/~pere/blog/archive/2014/06/">June (
2)
</a></li>
1135 <li><a href=
"https://www.hungry.com/~pere/blog/archive/2014/07/">July (
2)
</a></li>
1137 <li><a href=
"https://www.hungry.com/~pere/blog/archive/2014/08/">August (
2)
</a></li>
1139 <li><a href=
"https://www.hungry.com/~pere/blog/archive/2014/09/">September (
5)
</a></li>
1141 <li><a href=
"https://www.hungry.com/~pere/blog/archive/2014/10/">October (
6)
</a></li>
1143 <li><a href=
"https://www.hungry.com/~pere/blog/archive/2014/11/">November (
3)
</a></li>
1145 <li><a href=
"https://www.hungry.com/~pere/blog/archive/2014/12/">December (
5)
</a></li>
1152 <li><a href=
"https://www.hungry.com/~pere/blog/archive/2013/01/">January (
11)
</a></li>
1154 <li><a href=
"https://www.hungry.com/~pere/blog/archive/2013/02/">February (
9)
</a></li>
1156 <li><a href=
"https://www.hungry.com/~pere/blog/archive/2013/03/">March (
9)
</a></li>
1158 <li><a href=
"https://www.hungry.com/~pere/blog/archive/2013/04/">April (
6)
</a></li>
1160 <li><a href=
"https://www.hungry.com/~pere/blog/archive/2013/05/">May (
9)
</a></li>
1162 <li><a href=
"https://www.hungry.com/~pere/blog/archive/2013/06/">June (
10)
</a></li>
1164 <li><a href=
"https://www.hungry.com/~pere/blog/archive/2013/07/">July (
7)
</a></li>
1166 <li><a href=
"https://www.hungry.com/~pere/blog/archive/2013/08/">August (
3)
</a></li>
1168 <li><a href=
"https://www.hungry.com/~pere/blog/archive/2013/09/">September (
5)
</a></li>
1170 <li><a href=
"https://www.hungry.com/~pere/blog/archive/2013/10/">October (
7)
</a></li>
1172 <li><a href=
"https://www.hungry.com/~pere/blog/archive/2013/11/">November (
9)
</a></li>
1174 <li><a href=
"https://www.hungry.com/~pere/blog/archive/2013/12/">December (
3)
</a></li>
1181 <li><a href=
"https://www.hungry.com/~pere/blog/archive/2012/01/">January (
7)
</a></li>
1183 <li><a href=
"https://www.hungry.com/~pere/blog/archive/2012/02/">February (
10)
</a></li>
1185 <li><a href=
"https://www.hungry.com/~pere/blog/archive/2012/03/">March (
17)
</a></li>
1187 <li><a href=
"https://www.hungry.com/~pere/blog/archive/2012/04/">April (
12)
</a></li>
1189 <li><a href=
"https://www.hungry.com/~pere/blog/archive/2012/05/">May (
12)
</a></li>
1191 <li><a href=
"https://www.hungry.com/~pere/blog/archive/2012/06/">June (
20)
</a></li>
1193 <li><a href=
"https://www.hungry.com/~pere/blog/archive/2012/07/">July (
17)
</a></li>
1195 <li><a href=
"https://www.hungry.com/~pere/blog/archive/2012/08/">August (
6)
</a></li>
1197 <li><a href=
"https://www.hungry.com/~pere/blog/archive/2012/09/">September (
9)
</a></li>
1199 <li><a href=
"https://www.hungry.com/~pere/blog/archive/2012/10/">October (
17)
</a></li>
1201 <li><a href=
"https://www.hungry.com/~pere/blog/archive/2012/11/">November (
10)
</a></li>
1203 <li><a href=
"https://www.hungry.com/~pere/blog/archive/2012/12/">December (
7)
</a></li>
1210 <li><a href=
"https://www.hungry.com/~pere/blog/archive/2011/01/">January (
16)
</a></li>
1212 <li><a href=
"https://www.hungry.com/~pere/blog/archive/2011/02/">February (
6)
</a></li>
1214 <li><a href=
"https://www.hungry.com/~pere/blog/archive/2011/03/">March (
6)
</a></li>
1216 <li><a href=
"https://www.hungry.com/~pere/blog/archive/2011/04/">April (
7)
</a></li>
1218 <li><a href=
"https://www.hungry.com/~pere/blog/archive/2011/05/">May (
3)
</a></li>
1220 <li><a href=
"https://www.hungry.com/~pere/blog/archive/2011/06/">June (
2)
</a></li>
1222 <li><a href=
"https://www.hungry.com/~pere/blog/archive/2011/07/">July (
7)
</a></li>
1224 <li><a href=
"https://www.hungry.com/~pere/blog/archive/2011/08/">August (
6)
</a></li>
1226 <li><a href=
"https://www.hungry.com/~pere/blog/archive/2011/09/">September (
4)
</a></li>
1228 <li><a href=
"https://www.hungry.com/~pere/blog/archive/2011/10/">October (
2)
</a></li>
1230 <li><a href=
"https://www.hungry.com/~pere/blog/archive/2011/11/">November (
3)
</a></li>
1232 <li><a href=
"https://www.hungry.com/~pere/blog/archive/2011/12/">December (
1)
</a></li>
1239 <li><a href=
"https://www.hungry.com/~pere/blog/archive/2010/01/">January (
2)
</a></li>
1241 <li><a href=
"https://www.hungry.com/~pere/blog/archive/2010/02/">February (
1)
</a></li>
1243 <li><a href=
"https://www.hungry.com/~pere/blog/archive/2010/03/">March (
3)
</a></li>
1245 <li><a href=
"https://www.hungry.com/~pere/blog/archive/2010/04/">April (
3)
</a></li>
1247 <li><a href=
"https://www.hungry.com/~pere/blog/archive/2010/05/">May (
9)
</a></li>
1249 <li><a href=
"https://www.hungry.com/~pere/blog/archive/2010/06/">June (
14)
</a></li>
1251 <li><a href=
"https://www.hungry.com/~pere/blog/archive/2010/07/">July (
12)
</a></li>
1253 <li><a href=
"https://www.hungry.com/~pere/blog/archive/2010/08/">August (
13)
</a></li>
1255 <li><a href=
"https://www.hungry.com/~pere/blog/archive/2010/09/">September (
7)
</a></li>
1257 <li><a href=
"https://www.hungry.com/~pere/blog/archive/2010/10/">October (
9)
</a></li>
1259 <li><a href=
"https://www.hungry.com/~pere/blog/archive/2010/11/">November (
13)
</a></li>
1261 <li><a href=
"https://www.hungry.com/~pere/blog/archive/2010/12/">December (
12)
</a></li>
1268 <li><a href=
"https://www.hungry.com/~pere/blog/archive/2009/01/">January (
8)
</a></li>
1270 <li><a href=
"https://www.hungry.com/~pere/blog/archive/2009/02/">February (
8)
</a></li>
1272 <li><a href=
"https://www.hungry.com/~pere/blog/archive/2009/03/">March (
12)
</a></li>
1274 <li><a href=
"https://www.hungry.com/~pere/blog/archive/2009/04/">April (
10)
</a></li>
1276 <li><a href=
"https://www.hungry.com/~pere/blog/archive/2009/05/">May (
9)
</a></li>
1278 <li><a href=
"https://www.hungry.com/~pere/blog/archive/2009/06/">June (
3)
</a></li>
1280 <li><a href=
"https://www.hungry.com/~pere/blog/archive/2009/07/">July (
4)
</a></li>
1282 <li><a href=
"https://www.hungry.com/~pere/blog/archive/2009/08/">August (
3)
</a></li>
1284 <li><a href=
"https://www.hungry.com/~pere/blog/archive/2009/09/">September (
1)
</a></li>
1286 <li><a href=
"https://www.hungry.com/~pere/blog/archive/2009/10/">October (
2)
</a></li>
1288 <li><a href=
"https://www.hungry.com/~pere/blog/archive/2009/11/">November (
3)
</a></li>
1290 <li><a href=
"https://www.hungry.com/~pere/blog/archive/2009/12/">December (
3)
</a></li>
1297 <li><a href=
"https://www.hungry.com/~pere/blog/archive/2008/11/">November (
5)
</a></li>
1299 <li><a href=
"https://www.hungry.com/~pere/blog/archive/2008/12/">December (
7)
</a></li>
1310 <li><a href=
"https://www.hungry.com/~pere/blog/tags/3d-printer">3d-printer (
19)
</a></li>
1312 <li><a href=
"https://www.hungry.com/~pere/blog/tags/amiga">amiga (
1)
</a></li>
1314 <li><a href=
"https://www.hungry.com/~pere/blog/tags/aros">aros (
1)
</a></li>
1316 <li><a href=
"https://www.hungry.com/~pere/blog/tags/bankid">bankid (
4)
</a></li>
1318 <li><a href=
"https://www.hungry.com/~pere/blog/tags/betalkontant">betalkontant (
9)
</a></li>
1320 <li><a href=
"https://www.hungry.com/~pere/blog/tags/bitcoin">bitcoin (
13)
</a></li>
1322 <li><a href=
"https://www.hungry.com/~pere/blog/tags/bootsystem">bootsystem (
17)
</a></li>
1324 <li><a href=
"https://www.hungry.com/~pere/blog/tags/bsa">bsa (
2)
</a></li>
1326 <li><a href=
"https://www.hungry.com/~pere/blog/tags/chrpath">chrpath (
3)
</a></li>
1328 <li><a href=
"https://www.hungry.com/~pere/blog/tags/debian">debian (
202)
</a></li>
1330 <li><a href=
"https://www.hungry.com/~pere/blog/tags/debian edu">debian edu (
159)
</a></li>
1332 <li><a href=
"https://www.hungry.com/~pere/blog/tags/debian-handbook">debian-handbook (
9)
</a></li>
1334 <li><a href=
"https://www.hungry.com/~pere/blog/tags/digistan">digistan (
11)
</a></li>
1336 <li><a href=
"https://www.hungry.com/~pere/blog/tags/dld">dld (
18)
</a></li>
1338 <li><a href=
"https://www.hungry.com/~pere/blog/tags/docbook">docbook (
33)
</a></li>
1340 <li><a href=
"https://www.hungry.com/~pere/blog/tags/drivstoffpriser">drivstoffpriser (
4)
</a></li>
1342 <li><a href=
"https://www.hungry.com/~pere/blog/tags/english">english (
464)
</a></li>
1344 <li><a href=
"https://www.hungry.com/~pere/blog/tags/fiksgatami">fiksgatami (
23)
</a></li>
1346 <li><a href=
"https://www.hungry.com/~pere/blog/tags/fildeling">fildeling (
14)
</a></li>
1348 <li><a href=
"https://www.hungry.com/~pere/blog/tags/freeculture">freeculture (
34)
</a></li>
1350 <li><a href=
"https://www.hungry.com/~pere/blog/tags/freedombox">freedombox (
9)
</a></li>
1352 <li><a href=
"https://www.hungry.com/~pere/blog/tags/frikanalen">frikanalen (
20)
</a></li>
1354 <li><a href=
"https://www.hungry.com/~pere/blog/tags/h264">h264 (
20)
</a></li>
1356 <li><a href=
"https://www.hungry.com/~pere/blog/tags/intervju">intervju (
43)
</a></li>
1358 <li><a href=
"https://www.hungry.com/~pere/blog/tags/isenkram">isenkram (
18)
</a></li>
1360 <li><a href=
"https://www.hungry.com/~pere/blog/tags/kart">kart (
23)
</a></li>
1362 <li><a href=
"https://www.hungry.com/~pere/blog/tags/kodi">kodi (
6)
</a></li>
1364 <li><a href=
"https://www.hungry.com/~pere/blog/tags/ldap">ldap (
9)
</a></li>
1366 <li><a href=
"https://www.hungry.com/~pere/blog/tags/lego">lego (
5)
</a></li>
1368 <li><a href=
"https://www.hungry.com/~pere/blog/tags/lenker">lenker (
8)
</a></li>
1370 <li><a href=
"https://www.hungry.com/~pere/blog/tags/linuxcnc">linuxcnc (
7)
</a></li>
1372 <li><a href=
"https://www.hungry.com/~pere/blog/tags/lsdvd">lsdvd (
2)
</a></li>
1374 <li><a href=
"https://www.hungry.com/~pere/blog/tags/ltsp">ltsp (
1)
</a></li>
1376 <li><a href=
"https://www.hungry.com/~pere/blog/tags/madewithcc">madewithcc (
3)
</a></li>
1378 <li><a href=
"https://www.hungry.com/~pere/blog/tags/mesh network">mesh network (
8)
</a></li>
1380 <li><a href=
"https://www.hungry.com/~pere/blog/tags/multimedia">multimedia (
46)
</a></li>
1382 <li><a href=
"https://www.hungry.com/~pere/blog/tags/nice free software">nice free software (
15)
</a></li>
1384 <li><a href=
"https://www.hungry.com/~pere/blog/tags/noark5">noark5 (
25)
</a></li>
1386 <li><a href=
"https://www.hungry.com/~pere/blog/tags/norsk">norsk (
325)
</a></li>
1388 <li><a href=
"https://www.hungry.com/~pere/blog/tags/nuug">nuug (
199)
</a></li>
1390 <li><a href=
"https://www.hungry.com/~pere/blog/tags/offentlig innsyn">offentlig innsyn (
41)
</a></li>
1392 <li><a href=
"https://www.hungry.com/~pere/blog/tags/open311">open311 (
2)
</a></li>
1394 <li><a href=
"https://www.hungry.com/~pere/blog/tags/opensnitch">opensnitch (
4)
</a></li>
1396 <li><a href=
"https://www.hungry.com/~pere/blog/tags/opphavsrett">opphavsrett (
76)
</a></li>
1398 <li><a href=
"https://www.hungry.com/~pere/blog/tags/personvern">personvern (
114)
</a></li>
1400 <li><a href=
"https://www.hungry.com/~pere/blog/tags/raid">raid (
4)
</a></li>
1402 <li><a href=
"https://www.hungry.com/~pere/blog/tags/reactos">reactos (
1)
</a></li>
1404 <li><a href=
"https://www.hungry.com/~pere/blog/tags/reprap">reprap (
11)
</a></li>
1406 <li><a href=
"https://www.hungry.com/~pere/blog/tags/rfid">rfid (
3)
</a></li>
1408 <li><a href=
"https://www.hungry.com/~pere/blog/tags/robot">robot (
17)
</a></li>
1410 <li><a href=
"https://www.hungry.com/~pere/blog/tags/rss">rss (
1)
</a></li>
1412 <li><a href=
"https://www.hungry.com/~pere/blog/tags/ruter">ruter (
7)
</a></li>
1414 <li><a href=
"https://www.hungry.com/~pere/blog/tags/scraperwiki">scraperwiki (
2)
</a></li>
1416 <li><a href=
"https://www.hungry.com/~pere/blog/tags/sikkerhet">sikkerhet (
60)
</a></li>
1418 <li><a href=
"https://www.hungry.com/~pere/blog/tags/sitesummary">sitesummary (
4)
</a></li>
1420 <li><a href=
"https://www.hungry.com/~pere/blog/tags/skepsis">skepsis (
5)
</a></li>
1422 <li><a href=
"https://www.hungry.com/~pere/blog/tags/standard">standard (
76)
</a></li>
1424 <li><a href=
"https://www.hungry.com/~pere/blog/tags/stavekontroll">stavekontroll (
7)
</a></li>
1426 <li><a href=
"https://www.hungry.com/~pere/blog/tags/stortinget">stortinget (
14)
</a></li>
1428 <li><a href=
"https://www.hungry.com/~pere/blog/tags/surveillance">surveillance (
65)
</a></li>
1430 <li><a href=
"https://www.hungry.com/~pere/blog/tags/sysadmin">sysadmin (
5)
</a></li>
1432 <li><a href=
"https://www.hungry.com/~pere/blog/tags/usenix">usenix (
2)
</a></li>
1434 <li><a href=
"https://www.hungry.com/~pere/blog/tags/valg">valg (
9)
</a></li>
1436 <li><a href=
"https://www.hungry.com/~pere/blog/tags/verkidetfri">verkidetfri (
22)
</a></li>
1438 <li><a href=
"https://www.hungry.com/~pere/blog/tags/video">video (
80)
</a></li>
1440 <li><a href=
"https://www.hungry.com/~pere/blog/tags/vitenskap">vitenskap (
4)
</a></li>
1442 <li><a href=
"https://www.hungry.com/~pere/blog/tags/web">web (
42)
</a></li>
1448 <p style=
"text-align: right">
1449 Created by
<a href=
"http://steve.org.uk/Software/chronicle">Chronicle v4.6
</a>