]> pere.pagekite.me Git - homepage.git/blob - blog/index.html
Generated.
[homepage.git] / blog / index.html
1 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
2 "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
3 <html xmlns="http://www.w3.org/1999/xhtml" dir="ltr">
4 <head>
5 <meta http-equiv="Content-Type" content="text/html;charset=utf-8" />
6 <title>Petter Reinholdtsen</title>
7 <link rel="stylesheet" type="text/css" media="screen" href="http://www.hungry.com/~pere/blog/style.css" />
8 <link rel="stylesheet" type="text/css" media="screen" href="http://www.hungry.com/~pere/blog/vim.css" />
9 <link rel="alternate" title="RSS Feed" href="http://www.hungry.com/~pere/blog/index.rss" type="application/rss+xml" />
10 </head>
11 <body>
12 <div class="title">
13 <h1>
14 <a href="http://www.hungry.com/~pere/blog/">Petter Reinholdtsen</a>
15
16 </h1>
17
18 </div>
19
20
21
22 <div class="entry">
23 <div class="title"><a href="http://www.hungry.com/~pere/blog/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>
32
33 <ul>
34
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
44 spot warnings.</li>
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>
53 </ul>
54
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>
61
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>
68
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>
72 </div>
73 <div class="tags">
74
75
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>.
77
78
79 </div>
80 </div>
81 <div class="padding"></div>
82
83 <div class="entry">
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>
97
98 <p>To locate packages to work on, the following one-liner can be used:</p>
99
100 <blockquote><pre>
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;"
107 </pre></blockquote>
108
109 <p>Pick a random package from the list and run the latest edition of
110 the script
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
128 another package.</p>
129
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>
134
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>
138 </div>
139 <div class="tags">
140
141
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>.
143
144
145 </div>
146 </div>
147 <div class="padding"></div>
148
149 <div class="entry">
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>
155
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>
162
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>
178
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
182 time.</p>
183
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
192 again next year.</p>
193
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>
206 </div>
207 <div class="tags">
208
209
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>.
211
212
213 </div>
214 </div>
215 <div class="padding"></div>
216
217 <div class="entry">
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>
221
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>
237
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
256 fire vokste opp.</p>
257
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>
263
264 <blockquote>
265
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>
274
275 <p>Denne pamfletten er nå for første gang tilgjengelig på bokmål,
276 sammen med en nyutgivelse av originalteksten på svensk.</p>
277
278 </blockquote>
279
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>
285
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
296 worldcat</a>.</p>
297
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>
305
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
308 til min adresse
309 <b><a href="bitcoin:15oWEoG9dUPovwmUL9KWAnYRtNJEkP1u1b">15oWEoG9dUPovwmUL9KWAnYRtNJEkP1u1b</a></b>. Merk,
310 betaling med bitcoin er ikke anonymt. :)</p>
311 </div>
312 <div class="tags">
313
314
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>.
316
317
318 </div>
319 </div>
320 <div class="padding"></div>
321
322 <div class="entry">
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
330 this summer too.</p>
331
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
339
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>
348
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>
352 </div>
353 <div class="tags">
354
355
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>.
357
358
359 </div>
360 </div>
361 <div class="padding"></div>
362
363 <div class="entry">
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.
374
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:
377
378 <blockquote><pre>
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;"
385 </pre></blockquote>
386
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>
392
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>
396
397 <blockquote><pre>
398 #!/bin/sh
399 #
400 # See also https://bugs.debian.org/804722#31
401
402 set -e
403
404 # Move to this Standards-Version.
405 SV_LATEST=4.7.0
406
407 PKG="$1"
408
409 if [ -z "$PKG" ]; then
410 echo "usage: $0 <pkgname>"
411 exit 1
412 fi
413
414 if [ -e "${PKG}-salsa" ]; then
415 echo "error: ${PKG}-salsa already exist, aborting."
416 exit 1
417 fi
418
419 if [ -z "ALLOWFAILURE" ] ; then
420 ALLOWFAILURE=false
421 fi
422
423 # Fetch every snapshotted source package. Manually loop until all
424 # transfers succeed, as 'gbp import-dscs --debsnap' do not fail on
425 # download failures.
426 until debsnap --force -v $PKG || $ALLOWFAILURE ; do sleep 1; done
427 mkdir ${PKG}-salsa; cd ${PKG}-salsa
428 git init
429
430 # Specify branches to override any debian/gbp.conf file present in the
431 # source package.
432 gbp import-dscs --debian-branch=master --upstream-branch=upstream \
433 --pristine-tar ../source-$PKG/*.dsc
434
435 # Add Vcs pointing to Salsa Debian project (must be manually created
436 # and pushed to).
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
440 fi
441
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
446
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
452 fi
453
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
457 fi
458
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
462 fi
463 </pre></blockquote>
464
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>
469
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>
477
478 <blockquote><pre>
479 git remote add origin git@salsa.debian.org:debian/perl-byacc.git
480 git push --set-upstream origin master upstream pristine-tar
481 git push --tags
482 </pre></blockquote>
483
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>
493
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
499 rules.</p>
500
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
514 'debuild' run.</p>
515
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>
524
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>
529
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>
533
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
537 2024-05-04.</p>
538 </div>
539 <div class="tags">
540
541
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>.
543
544
545 </div>
546 </div>
547 <div class="padding"></div>
548
549 <div class="entry">
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>
560
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>
564
565 </div>
566 <div class="tags">
567
568
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>.
570
571
572 </div>
573 </div>
574 <div class="padding"></div>
575
576 <div class="entry">
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>
591
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>
606
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>
618
619 <p>So, if you are a Debian Developer and got some spare time, perhaps
620 considering migrating some orphaned packages to git?</p>
621
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>
625 </div>
626 <div class="tags">
627
628
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>.
630
631
632 </div>
633 </div>
634 <div class="padding"></div>
635
636 <div class="entry">
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,
644 here is a copy:</p>
645
646 <p><blockquote><pre>
647 #!/usr/bin/python3
648 # -*- coding: utf-8 -*-
649 # Copyright (c) 2023-2024 Petter Reinholdtsen
650
651 from decimal import Decimal
652 import json
653 import subprocess
654 import time
655
656 import numpy
657
658 def format_float(num):
659 return numpy.format_float_positional(num, trim='-')
660
661 accounts = {
662 u'amount' : 'Assets:BTC:main',
663 }
664
665 addresses = {
666 '<some address>' : 'Assets:bankkonto',
667 '<some address>' : 'Assets:bankkonto',
668 }
669
670 def exec_json(cmd):
671 proc = subprocess.Popen(cmd,stdout=subprocess.PIPE)
672 j = json.loads(proc.communicate()[0], parse_float=Decimal)
673 return j
674
675 def list_txs():
676 # get all transactions for all accounts / addresses
677 c = 0
678 txs = []
679 txidfee = {}
680 limit=100000
681 cmd = ['bitcoin-cli', 'listtransactions', '*', str(limit)]
682 if True:
683 txs.extend(exec_json(cmd))
684 else:
685 # Useful for debugging
686 with open('transactions.json') as f:
687 txs.extend(json.load(f, parse_float=Decimal))
688 #print txs
689 for tx in sorted(txs, key=lambda a: a['time']):
690 # print tx['category']
691 if 'abandoned' in tx and tx['abandoned']:
692 continue
693 if 'confirmations' in tx and 0 >= tx['confirmations']:
694 continue
695 when = time.strftime('%Y-%m-%d %H:%M', time.localtime(tx['time']))
696 if 'message' in tx:
697 desc = tx['message']
698 elif 'comment' in tx:
699 desc = tx['comment']
700 elif 'label' in tx:
701 desc = tx['label']
702 else:
703 desc = 'n/a'
704 print("%s %s" % (when, desc))
705 if 'address' in tx:
706 print(" ; to bitcoin address %s" % tx['address'])
707 else:
708 print(" ; missing address in transaction, txid=%s" % tx['txid'])
709 print(f" ; amount={tx['amount']}")
710 if 'fee'in tx:
711 print(f" ; fee={tx['fee']}")
712 for f in accounts.keys():
713 if f in tx and Decimal(0) != tx[f]:
714 amount = 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']]:
720 True
721 else:
722 fee = tx['fee']
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']
726
727 if 'address' in tx and tx['address'] in addresses:
728 print(" %s" % addresses[tx['address']])
729 else:
730 if 'generate' == tx['category']:
731 print(" Income:BTC-mining")
732 else:
733 if amount < Decimal(0):
734 print(f" Assets:unknown:sent:update-script-addr-{tx['address']}")
735 else:
736 print(f" Assets:unknown:received:update-script-addr-{tx['address']}")
737
738 print()
739 c = c + 1
740 print("# Found %d transactions" % c)
741 if limit == c:
742 print(f"# Warning: Limit {limit} reached, consider increasing limit.")
743
744 def main():
745 list_txs()
746
747 main()
748 </pre></blockquote></p>
749
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
752 useful too.</p>
753
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
762 transaction:</p>
763
764 <p><blockquote><pre>
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>
771
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>
775
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>
779 </div>
780 <div class="tags">
781
782
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>.
784
785
786 </div>
787 </div>
788 <div class="padding"></div>
789
790 <div class="entry">
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>
809
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>
834
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>
843
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>
848
849 <pre>
850 # megasasctl
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
867
868 #
869 </pre>
870
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
873 find it useful?</p>
874
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>
881
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>
885
886 </div>
887 <div class="tags">
888
889
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>.
891
892
893 </div>
894 </div>
895 <div class="padding"></div>
896
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>
898 <div id="sidebar">
899
900
901
902 <h2>Archive</h2>
903 <ul>
904
905 <li>2024
906 <ul>
907
908 <li><a href="http://www.hungry.com/~pere/blog/archive/2024/01/">January (1)</a></li>
909
910 <li><a href="http://www.hungry.com/~pere/blog/archive/2024/02/">February (1)</a></li>
911
912 <li><a href="http://www.hungry.com/~pere/blog/archive/2024/03/">March (2)</a></li>
913
914 <li><a href="http://www.hungry.com/~pere/blog/archive/2024/04/">April (3)</a></li>
915
916 <li><a href="http://www.hungry.com/~pere/blog/archive/2024/05/">May (1)</a></li>
917
918 <li><a href="http://www.hungry.com/~pere/blog/archive/2024/06/">June (1)</a></li>
919
920 <li><a href="http://www.hungry.com/~pere/blog/archive/2024/07/">July (2)</a></li>
921
922 <li><a href="http://www.hungry.com/~pere/blog/archive/2024/12/">December (1)</a></li>
923
924 </ul></li>
925
926 <li>2023
927 <ul>
928
929 <li><a href="http://www.hungry.com/~pere/blog/archive/2023/01/">January (3)</a></li>
930
931 <li><a href="http://www.hungry.com/~pere/blog/archive/2023/02/">February (1)</a></li>
932
933 <li><a href="http://www.hungry.com/~pere/blog/archive/2023/04/">April (2)</a></li>
934
935 <li><a href="http://www.hungry.com/~pere/blog/archive/2023/05/">May (3)</a></li>
936
937 <li><a href="http://www.hungry.com/~pere/blog/archive/2023/06/">June (1)</a></li>
938
939 <li><a href="http://www.hungry.com/~pere/blog/archive/2023/08/">August (1)</a></li>
940
941 <li><a href="http://www.hungry.com/~pere/blog/archive/2023/09/">September (1)</a></li>
942
943 <li><a href="http://www.hungry.com/~pere/blog/archive/2023/10/">October (1)</a></li>
944
945 <li><a href="http://www.hungry.com/~pere/blog/archive/2023/11/">November (4)</a></li>
946
947 <li><a href="http://www.hungry.com/~pere/blog/archive/2023/12/">December (1)</a></li>
948
949 </ul></li>
950
951 <li>2022
952 <ul>
953
954 <li><a href="http://www.hungry.com/~pere/blog/archive/2022/02/">February (1)</a></li>
955
956 <li><a href="http://www.hungry.com/~pere/blog/archive/2022/03/">March (3)</a></li>
957
958 <li><a href="http://www.hungry.com/~pere/blog/archive/2022/04/">April (2)</a></li>
959
960 <li><a href="http://www.hungry.com/~pere/blog/archive/2022/06/">June (2)</a></li>
961
962 <li><a href="http://www.hungry.com/~pere/blog/archive/2022/07/">July (1)</a></li>
963
964 <li><a href="http://www.hungry.com/~pere/blog/archive/2022/09/">September (1)</a></li>
965
966 <li><a href="http://www.hungry.com/~pere/blog/archive/2022/10/">October (1)</a></li>
967
968 <li><a href="http://www.hungry.com/~pere/blog/archive/2022/12/">December (1)</a></li>
969
970 </ul></li>
971
972 <li>2021
973 <ul>
974
975 <li><a href="http://www.hungry.com/~pere/blog/archive/2021/01/">January (2)</a></li>
976
977 <li><a href="http://www.hungry.com/~pere/blog/archive/2021/02/">February (1)</a></li>
978
979 <li><a href="http://www.hungry.com/~pere/blog/archive/2021/05/">May (1)</a></li>
980
981 <li><a href="http://www.hungry.com/~pere/blog/archive/2021/06/">June (1)</a></li>
982
983 <li><a href="http://www.hungry.com/~pere/blog/archive/2021/07/">July (3)</a></li>
984
985 <li><a href="http://www.hungry.com/~pere/blog/archive/2021/08/">August (1)</a></li>
986
987 <li><a href="http://www.hungry.com/~pere/blog/archive/2021/09/">September (1)</a></li>
988
989 <li><a href="http://www.hungry.com/~pere/blog/archive/2021/10/">October (1)</a></li>
990
991 <li><a href="http://www.hungry.com/~pere/blog/archive/2021/12/">December (1)</a></li>
992
993 </ul></li>
994
995 <li>2020
996 <ul>
997
998 <li><a href="http://www.hungry.com/~pere/blog/archive/2020/02/">February (2)</a></li>
999
1000 <li><a href="http://www.hungry.com/~pere/blog/archive/2020/03/">March (2)</a></li>
1001
1002 <li><a href="http://www.hungry.com/~pere/blog/archive/2020/04/">April (2)</a></li>
1003
1004 <li><a href="http://www.hungry.com/~pere/blog/archive/2020/05/">May (3)</a></li>
1005
1006 <li><a href="http://www.hungry.com/~pere/blog/archive/2020/06/">June (2)</a></li>
1007
1008 <li><a href="http://www.hungry.com/~pere/blog/archive/2020/07/">July (1)</a></li>
1009
1010 <li><a href="http://www.hungry.com/~pere/blog/archive/2020/09/">September (1)</a></li>
1011
1012 <li><a href="http://www.hungry.com/~pere/blog/archive/2020/10/">October (1)</a></li>
1013
1014 <li><a href="http://www.hungry.com/~pere/blog/archive/2020/11/">November (1)</a></li>
1015
1016 </ul></li>
1017
1018 <li>2019
1019 <ul>
1020
1021 <li><a href="http://www.hungry.com/~pere/blog/archive/2019/01/">January (4)</a></li>
1022
1023 <li><a href="http://www.hungry.com/~pere/blog/archive/2019/02/">February (3)</a></li>
1024
1025 <li><a href="http://www.hungry.com/~pere/blog/archive/2019/03/">March (3)</a></li>
1026
1027 <li><a href="http://www.hungry.com/~pere/blog/archive/2019/05/">May (2)</a></li>
1028
1029 <li><a href="http://www.hungry.com/~pere/blog/archive/2019/06/">June (5)</a></li>
1030
1031 <li><a href="http://www.hungry.com/~pere/blog/archive/2019/07/">July (2)</a></li>
1032
1033 <li><a href="http://www.hungry.com/~pere/blog/archive/2019/08/">August (1)</a></li>
1034
1035 <li><a href="http://www.hungry.com/~pere/blog/archive/2019/09/">September (1)</a></li>
1036
1037 <li><a href="http://www.hungry.com/~pere/blog/archive/2019/11/">November (1)</a></li>
1038
1039 <li><a href="http://www.hungry.com/~pere/blog/archive/2019/12/">December (4)</a></li>
1040
1041 </ul></li>
1042
1043 <li>2018
1044 <ul>
1045
1046 <li><a href="http://www.hungry.com/~pere/blog/archive/2018/01/">January (1)</a></li>
1047
1048 <li><a href="http://www.hungry.com/~pere/blog/archive/2018/02/">February (5)</a></li>
1049
1050 <li><a href="http://www.hungry.com/~pere/blog/archive/2018/03/">March (5)</a></li>
1051
1052 <li><a href="http://www.hungry.com/~pere/blog/archive/2018/04/">April (3)</a></li>
1053
1054 <li><a href="http://www.hungry.com/~pere/blog/archive/2018/06/">June (2)</a></li>
1055
1056 <li><a href="http://www.hungry.com/~pere/blog/archive/2018/07/">July (5)</a></li>
1057
1058 <li><a href="http://www.hungry.com/~pere/blog/archive/2018/08/">August (3)</a></li>
1059
1060 <li><a href="http://www.hungry.com/~pere/blog/archive/2018/09/">September (3)</a></li>
1061
1062 <li><a href="http://www.hungry.com/~pere/blog/archive/2018/10/">October (5)</a></li>
1063
1064 <li><a href="http://www.hungry.com/~pere/blog/archive/2018/11/">November (2)</a></li>
1065
1066 <li><a href="http://www.hungry.com/~pere/blog/archive/2018/12/">December (4)</a></li>
1067
1068 </ul></li>
1069
1070 <li>2017
1071 <ul>
1072
1073 <li><a href="http://www.hungry.com/~pere/blog/archive/2017/01/">January (4)</a></li>
1074
1075 <li><a href="http://www.hungry.com/~pere/blog/archive/2017/02/">February (3)</a></li>
1076
1077 <li><a href="http://www.hungry.com/~pere/blog/archive/2017/03/">March (5)</a></li>
1078
1079 <li><a href="http://www.hungry.com/~pere/blog/archive/2017/04/">April (2)</a></li>
1080
1081 <li><a href="http://www.hungry.com/~pere/blog/archive/2017/06/">June (5)</a></li>
1082
1083 <li><a href="http://www.hungry.com/~pere/blog/archive/2017/07/">July (1)</a></li>
1084
1085 <li><a href="http://www.hungry.com/~pere/blog/archive/2017/08/">August (1)</a></li>
1086
1087 <li><a href="http://www.hungry.com/~pere/blog/archive/2017/09/">September (3)</a></li>
1088
1089 <li><a href="http://www.hungry.com/~pere/blog/archive/2017/10/">October (5)</a></li>
1090
1091 <li><a href="http://www.hungry.com/~pere/blog/archive/2017/11/">November (3)</a></li>
1092
1093 <li><a href="http://www.hungry.com/~pere/blog/archive/2017/12/">December (4)</a></li>
1094
1095 </ul></li>
1096
1097 <li>2016
1098 <ul>
1099
1100 <li><a href="http://www.hungry.com/~pere/blog/archive/2016/01/">January (3)</a></li>
1101
1102 <li><a href="http://www.hungry.com/~pere/blog/archive/2016/02/">February (2)</a></li>
1103
1104 <li><a href="http://www.hungry.com/~pere/blog/archive/2016/03/">March (3)</a></li>
1105
1106 <li><a href="http://www.hungry.com/~pere/blog/archive/2016/04/">April (8)</a></li>
1107
1108 <li><a href="http://www.hungry.com/~pere/blog/archive/2016/05/">May (8)</a></li>
1109
1110 <li><a href="http://www.hungry.com/~pere/blog/archive/2016/06/">June (2)</a></li>
1111
1112 <li><a href="http://www.hungry.com/~pere/blog/archive/2016/07/">July (2)</a></li>
1113
1114 <li><a href="http://www.hungry.com/~pere/blog/archive/2016/08/">August (5)</a></li>
1115
1116 <li><a href="http://www.hungry.com/~pere/blog/archive/2016/09/">September (2)</a></li>
1117
1118 <li><a href="http://www.hungry.com/~pere/blog/archive/2016/10/">October (3)</a></li>
1119
1120 <li><a href="http://www.hungry.com/~pere/blog/archive/2016/11/">November (8)</a></li>
1121
1122 <li><a href="http://www.hungry.com/~pere/blog/archive/2016/12/">December (5)</a></li>
1123
1124 </ul></li>
1125
1126 <li>2015
1127 <ul>
1128
1129 <li><a href="http://www.hungry.com/~pere/blog/archive/2015/01/">January (7)</a></li>
1130
1131 <li><a href="http://www.hungry.com/~pere/blog/archive/2015/02/">February (6)</a></li>
1132
1133 <li><a href="http://www.hungry.com/~pere/blog/archive/2015/03/">March (1)</a></li>
1134
1135 <li><a href="http://www.hungry.com/~pere/blog/archive/2015/04/">April (4)</a></li>
1136
1137 <li><a href="http://www.hungry.com/~pere/blog/archive/2015/05/">May (3)</a></li>
1138
1139 <li><a href="http://www.hungry.com/~pere/blog/archive/2015/06/">June (4)</a></li>
1140
1141 <li><a href="http://www.hungry.com/~pere/blog/archive/2015/07/">July (6)</a></li>
1142
1143 <li><a href="http://www.hungry.com/~pere/blog/archive/2015/08/">August (2)</a></li>
1144
1145 <li><a href="http://www.hungry.com/~pere/blog/archive/2015/09/">September (2)</a></li>
1146
1147 <li><a href="http://www.hungry.com/~pere/blog/archive/2015/10/">October (9)</a></li>
1148
1149 <li><a href="http://www.hungry.com/~pere/blog/archive/2015/11/">November (6)</a></li>
1150
1151 <li><a href="http://www.hungry.com/~pere/blog/archive/2015/12/">December (3)</a></li>
1152
1153 </ul></li>
1154
1155 <li>2014
1156 <ul>
1157
1158 <li><a href="http://www.hungry.com/~pere/blog/archive/2014/01/">January (2)</a></li>
1159
1160 <li><a href="http://www.hungry.com/~pere/blog/archive/2014/02/">February (3)</a></li>
1161
1162 <li><a href="http://www.hungry.com/~pere/blog/archive/2014/03/">March (8)</a></li>
1163
1164 <li><a href="http://www.hungry.com/~pere/blog/archive/2014/04/">April (7)</a></li>
1165
1166 <li><a href="http://www.hungry.com/~pere/blog/archive/2014/05/">May (1)</a></li>
1167
1168 <li><a href="http://www.hungry.com/~pere/blog/archive/2014/06/">June (2)</a></li>
1169
1170 <li><a href="http://www.hungry.com/~pere/blog/archive/2014/07/">July (2)</a></li>
1171
1172 <li><a href="http://www.hungry.com/~pere/blog/archive/2014/08/">August (2)</a></li>
1173
1174 <li><a href="http://www.hungry.com/~pere/blog/archive/2014/09/">September (5)</a></li>
1175
1176 <li><a href="http://www.hungry.com/~pere/blog/archive/2014/10/">October (6)</a></li>
1177
1178 <li><a href="http://www.hungry.com/~pere/blog/archive/2014/11/">November (3)</a></li>
1179
1180 <li><a href="http://www.hungry.com/~pere/blog/archive/2014/12/">December (5)</a></li>
1181
1182 </ul></li>
1183
1184 <li>2013
1185 <ul>
1186
1187 <li><a href="http://www.hungry.com/~pere/blog/archive/2013/01/">January (11)</a></li>
1188
1189 <li><a href="http://www.hungry.com/~pere/blog/archive/2013/02/">February (9)</a></li>
1190
1191 <li><a href="http://www.hungry.com/~pere/blog/archive/2013/03/">March (9)</a></li>
1192
1193 <li><a href="http://www.hungry.com/~pere/blog/archive/2013/04/">April (6)</a></li>
1194
1195 <li><a href="http://www.hungry.com/~pere/blog/archive/2013/05/">May (9)</a></li>
1196
1197 <li><a href="http://www.hungry.com/~pere/blog/archive/2013/06/">June (10)</a></li>
1198
1199 <li><a href="http://www.hungry.com/~pere/blog/archive/2013/07/">July (7)</a></li>
1200
1201 <li><a href="http://www.hungry.com/~pere/blog/archive/2013/08/">August (3)</a></li>
1202
1203 <li><a href="http://www.hungry.com/~pere/blog/archive/2013/09/">September (5)</a></li>
1204
1205 <li><a href="http://www.hungry.com/~pere/blog/archive/2013/10/">October (7)</a></li>
1206
1207 <li><a href="http://www.hungry.com/~pere/blog/archive/2013/11/">November (9)</a></li>
1208
1209 <li><a href="http://www.hungry.com/~pere/blog/archive/2013/12/">December (3)</a></li>
1210
1211 </ul></li>
1212
1213 <li>2012
1214 <ul>
1215
1216 <li><a href="http://www.hungry.com/~pere/blog/archive/2012/01/">January (7)</a></li>
1217
1218 <li><a href="http://www.hungry.com/~pere/blog/archive/2012/02/">February (10)</a></li>
1219
1220 <li><a href="http://www.hungry.com/~pere/blog/archive/2012/03/">March (17)</a></li>
1221
1222 <li><a href="http://www.hungry.com/~pere/blog/archive/2012/04/">April (12)</a></li>
1223
1224 <li><a href="http://www.hungry.com/~pere/blog/archive/2012/05/">May (12)</a></li>
1225
1226 <li><a href="http://www.hungry.com/~pere/blog/archive/2012/06/">June (20)</a></li>
1227
1228 <li><a href="http://www.hungry.com/~pere/blog/archive/2012/07/">July (17)</a></li>
1229
1230 <li><a href="http://www.hungry.com/~pere/blog/archive/2012/08/">August (6)</a></li>
1231
1232 <li><a href="http://www.hungry.com/~pere/blog/archive/2012/09/">September (9)</a></li>
1233
1234 <li><a href="http://www.hungry.com/~pere/blog/archive/2012/10/">October (17)</a></li>
1235
1236 <li><a href="http://www.hungry.com/~pere/blog/archive/2012/11/">November (10)</a></li>
1237
1238 <li><a href="http://www.hungry.com/~pere/blog/archive/2012/12/">December (7)</a></li>
1239
1240 </ul></li>
1241
1242 <li>2011
1243 <ul>
1244
1245 <li><a href="http://www.hungry.com/~pere/blog/archive/2011/01/">January (16)</a></li>
1246
1247 <li><a href="http://www.hungry.com/~pere/blog/archive/2011/02/">February (6)</a></li>
1248
1249 <li><a href="http://www.hungry.com/~pere/blog/archive/2011/03/">March (6)</a></li>
1250
1251 <li><a href="http://www.hungry.com/~pere/blog/archive/2011/04/">April (7)</a></li>
1252
1253 <li><a href="http://www.hungry.com/~pere/blog/archive/2011/05/">May (3)</a></li>
1254
1255 <li><a href="http://www.hungry.com/~pere/blog/archive/2011/06/">June (2)</a></li>
1256
1257 <li><a href="http://www.hungry.com/~pere/blog/archive/2011/07/">July (7)</a></li>
1258
1259 <li><a href="http://www.hungry.com/~pere/blog/archive/2011/08/">August (6)</a></li>
1260
1261 <li><a href="http://www.hungry.com/~pere/blog/archive/2011/09/">September (4)</a></li>
1262
1263 <li><a href="http://www.hungry.com/~pere/blog/archive/2011/10/">October (2)</a></li>
1264
1265 <li><a href="http://www.hungry.com/~pere/blog/archive/2011/11/">November (3)</a></li>
1266
1267 <li><a href="http://www.hungry.com/~pere/blog/archive/2011/12/">December (1)</a></li>
1268
1269 </ul></li>
1270
1271 <li>2010
1272 <ul>
1273
1274 <li><a href="http://www.hungry.com/~pere/blog/archive/2010/01/">January (2)</a></li>
1275
1276 <li><a href="http://www.hungry.com/~pere/blog/archive/2010/02/">February (1)</a></li>
1277
1278 <li><a href="http://www.hungry.com/~pere/blog/archive/2010/03/">March (3)</a></li>
1279
1280 <li><a href="http://www.hungry.com/~pere/blog/archive/2010/04/">April (3)</a></li>
1281
1282 <li><a href="http://www.hungry.com/~pere/blog/archive/2010/05/">May (9)</a></li>
1283
1284 <li><a href="http://www.hungry.com/~pere/blog/archive/2010/06/">June (14)</a></li>
1285
1286 <li><a href="http://www.hungry.com/~pere/blog/archive/2010/07/">July (12)</a></li>
1287
1288 <li><a href="http://www.hungry.com/~pere/blog/archive/2010/08/">August (13)</a></li>
1289
1290 <li><a href="http://www.hungry.com/~pere/blog/archive/2010/09/">September (7)</a></li>
1291
1292 <li><a href="http://www.hungry.com/~pere/blog/archive/2010/10/">October (9)</a></li>
1293
1294 <li><a href="http://www.hungry.com/~pere/blog/archive/2010/11/">November (13)</a></li>
1295
1296 <li><a href="http://www.hungry.com/~pere/blog/archive/2010/12/">December (12)</a></li>
1297
1298 </ul></li>
1299
1300 <li>2009
1301 <ul>
1302
1303 <li><a href="http://www.hungry.com/~pere/blog/archive/2009/01/">January (8)</a></li>
1304
1305 <li><a href="http://www.hungry.com/~pere/blog/archive/2009/02/">February (8)</a></li>
1306
1307 <li><a href="http://www.hungry.com/~pere/blog/archive/2009/03/">March (12)</a></li>
1308
1309 <li><a href="http://www.hungry.com/~pere/blog/archive/2009/04/">April (10)</a></li>
1310
1311 <li><a href="http://www.hungry.com/~pere/blog/archive/2009/05/">May (9)</a></li>
1312
1313 <li><a href="http://www.hungry.com/~pere/blog/archive/2009/06/">June (3)</a></li>
1314
1315 <li><a href="http://www.hungry.com/~pere/blog/archive/2009/07/">July (4)</a></li>
1316
1317 <li><a href="http://www.hungry.com/~pere/blog/archive/2009/08/">August (3)</a></li>
1318
1319 <li><a href="http://www.hungry.com/~pere/blog/archive/2009/09/">September (1)</a></li>
1320
1321 <li><a href="http://www.hungry.com/~pere/blog/archive/2009/10/">October (2)</a></li>
1322
1323 <li><a href="http://www.hungry.com/~pere/blog/archive/2009/11/">November (3)</a></li>
1324
1325 <li><a href="http://www.hungry.com/~pere/blog/archive/2009/12/">December (3)</a></li>
1326
1327 </ul></li>
1328
1329 <li>2008
1330 <ul>
1331
1332 <li><a href="http://www.hungry.com/~pere/blog/archive/2008/11/">November (5)</a></li>
1333
1334 <li><a href="http://www.hungry.com/~pere/blog/archive/2008/12/">December (7)</a></li>
1335
1336 </ul></li>
1337
1338 </ul>
1339
1340
1341
1342 <h2>Tags</h2>
1343 <ul>
1344
1345 <li><a href="http://www.hungry.com/~pere/blog/tags/3d-printer">3d-printer (19)</a></li>
1346
1347 <li><a href="http://www.hungry.com/~pere/blog/tags/amiga">amiga (1)</a></li>
1348
1349 <li><a href="http://www.hungry.com/~pere/blog/tags/aros">aros (1)</a></li>
1350
1351 <li><a href="http://www.hungry.com/~pere/blog/tags/bankid">bankid (4)</a></li>
1352
1353 <li><a href="http://www.hungry.com/~pere/blog/tags/betalkontant">betalkontant (9)</a></li>
1354
1355 <li><a href="http://www.hungry.com/~pere/blog/tags/bitcoin">bitcoin (13)</a></li>
1356
1357 <li><a href="http://www.hungry.com/~pere/blog/tags/bootsystem">bootsystem (17)</a></li>
1358
1359 <li><a href="http://www.hungry.com/~pere/blog/tags/bsa">bsa (2)</a></li>
1360
1361 <li><a href="http://www.hungry.com/~pere/blog/tags/chrpath">chrpath (3)</a></li>
1362
1363 <li><a href="http://www.hungry.com/~pere/blog/tags/debian">debian (203)</a></li>
1364
1365 <li><a href="http://www.hungry.com/~pere/blog/tags/debian edu">debian edu (159)</a></li>
1366
1367 <li><a href="http://www.hungry.com/~pere/blog/tags/debian-handbook">debian-handbook (9)</a></li>
1368
1369 <li><a href="http://www.hungry.com/~pere/blog/tags/digistan">digistan (11)</a></li>
1370
1371 <li><a href="http://www.hungry.com/~pere/blog/tags/dld">dld (18)</a></li>
1372
1373 <li><a href="http://www.hungry.com/~pere/blog/tags/docbook">docbook (33)</a></li>
1374
1375 <li><a href="http://www.hungry.com/~pere/blog/tags/drivstoffpriser">drivstoffpriser (4)</a></li>
1376
1377 <li><a href="http://www.hungry.com/~pere/blog/tags/english">english (465)</a></li>
1378
1379 <li><a href="http://www.hungry.com/~pere/blog/tags/fiksgatami">fiksgatami (23)</a></li>
1380
1381 <li><a href="http://www.hungry.com/~pere/blog/tags/fildeling">fildeling (14)</a></li>
1382
1383 <li><a href="http://www.hungry.com/~pere/blog/tags/freeculture">freeculture (34)</a></li>
1384
1385 <li><a href="http://www.hungry.com/~pere/blog/tags/freedombox">freedombox (9)</a></li>
1386
1387 <li><a href="http://www.hungry.com/~pere/blog/tags/frikanalen">frikanalen (20)</a></li>
1388
1389 <li><a href="http://www.hungry.com/~pere/blog/tags/h264">h264 (20)</a></li>
1390
1391 <li><a href="http://www.hungry.com/~pere/blog/tags/intervju">intervju (43)</a></li>
1392
1393 <li><a href="http://www.hungry.com/~pere/blog/tags/isenkram">isenkram (18)</a></li>
1394
1395 <li><a href="http://www.hungry.com/~pere/blog/tags/kart">kart (23)</a></li>
1396
1397 <li><a href="http://www.hungry.com/~pere/blog/tags/kodi">kodi (6)</a></li>
1398
1399 <li><a href="http://www.hungry.com/~pere/blog/tags/ldap">ldap (9)</a></li>
1400
1401 <li><a href="http://www.hungry.com/~pere/blog/tags/lego">lego (5)</a></li>
1402
1403 <li><a href="http://www.hungry.com/~pere/blog/tags/lenker">lenker (8)</a></li>
1404
1405 <li><a href="http://www.hungry.com/~pere/blog/tags/linuxcnc">linuxcnc (7)</a></li>
1406
1407 <li><a href="http://www.hungry.com/~pere/blog/tags/lsdvd">lsdvd (2)</a></li>
1408
1409 <li><a href="http://www.hungry.com/~pere/blog/tags/ltsp">ltsp (1)</a></li>
1410
1411 <li><a href="http://www.hungry.com/~pere/blog/tags/madewithcc">madewithcc (3)</a></li>
1412
1413 <li><a href="http://www.hungry.com/~pere/blog/tags/mesh network">mesh network (8)</a></li>
1414
1415 <li><a href="http://www.hungry.com/~pere/blog/tags/multimedia">multimedia (46)</a></li>
1416
1417 <li><a href="http://www.hungry.com/~pere/blog/tags/nice free software">nice free software (15)</a></li>
1418
1419 <li><a href="http://www.hungry.com/~pere/blog/tags/noark5">noark5 (25)</a></li>
1420
1421 <li><a href="http://www.hungry.com/~pere/blog/tags/norsk">norsk (325)</a></li>
1422
1423 <li><a href="http://www.hungry.com/~pere/blog/tags/nuug">nuug (199)</a></li>
1424
1425 <li><a href="http://www.hungry.com/~pere/blog/tags/offentlig innsyn">offentlig innsyn (41)</a></li>
1426
1427 <li><a href="http://www.hungry.com/~pere/blog/tags/open311">open311 (2)</a></li>
1428
1429 <li><a href="http://www.hungry.com/~pere/blog/tags/opensnitch">opensnitch (4)</a></li>
1430
1431 <li><a href="http://www.hungry.com/~pere/blog/tags/opphavsrett">opphavsrett (76)</a></li>
1432
1433 <li><a href="http://www.hungry.com/~pere/blog/tags/personvern">personvern (114)</a></li>
1434
1435 <li><a href="http://www.hungry.com/~pere/blog/tags/raid">raid (4)</a></li>
1436
1437 <li><a href="http://www.hungry.com/~pere/blog/tags/reactos">reactos (1)</a></li>
1438
1439 <li><a href="http://www.hungry.com/~pere/blog/tags/reprap">reprap (11)</a></li>
1440
1441 <li><a href="http://www.hungry.com/~pere/blog/tags/rfid">rfid (3)</a></li>
1442
1443 <li><a href="http://www.hungry.com/~pere/blog/tags/robot">robot (17)</a></li>
1444
1445 <li><a href="http://www.hungry.com/~pere/blog/tags/rss">rss (1)</a></li>
1446
1447 <li><a href="http://www.hungry.com/~pere/blog/tags/ruter">ruter (7)</a></li>
1448
1449 <li><a href="http://www.hungry.com/~pere/blog/tags/scraperwiki">scraperwiki (2)</a></li>
1450
1451 <li><a href="http://www.hungry.com/~pere/blog/tags/sikkerhet">sikkerhet (60)</a></li>
1452
1453 <li><a href="http://www.hungry.com/~pere/blog/tags/sitesummary">sitesummary (4)</a></li>
1454
1455 <li><a href="http://www.hungry.com/~pere/blog/tags/skepsis">skepsis (5)</a></li>
1456
1457 <li><a href="http://www.hungry.com/~pere/blog/tags/standard">standard (76)</a></li>
1458
1459 <li><a href="http://www.hungry.com/~pere/blog/tags/stavekontroll">stavekontroll (7)</a></li>
1460
1461 <li><a href="http://www.hungry.com/~pere/blog/tags/stortinget">stortinget (14)</a></li>
1462
1463 <li><a href="http://www.hungry.com/~pere/blog/tags/surveillance">surveillance (65)</a></li>
1464
1465 <li><a href="http://www.hungry.com/~pere/blog/tags/sysadmin">sysadmin (5)</a></li>
1466
1467 <li><a href="http://www.hungry.com/~pere/blog/tags/usenix">usenix (2)</a></li>
1468
1469 <li><a href="http://www.hungry.com/~pere/blog/tags/valg">valg (9)</a></li>
1470
1471 <li><a href="http://www.hungry.com/~pere/blog/tags/verkidetfri">verkidetfri (22)</a></li>
1472
1473 <li><a href="http://www.hungry.com/~pere/blog/tags/video">video (80)</a></li>
1474
1475 <li><a href="http://www.hungry.com/~pere/blog/tags/vitenskap">vitenskap (4)</a></li>
1476
1477 <li><a href="http://www.hungry.com/~pere/blog/tags/web">web (42)</a></li>
1478
1479 </ul>
1480
1481
1482 </div>
1483 <p style="text-align: right">
1484 Created by <a href="http://steve.org.uk/Software/chronicle">Chronicle v4.6</a>
1485 </p>
1486
1487 </body>
1488 </html>