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://people.skolelinux.org/pere/blog/style.css" />
8 <link rel=
"stylesheet" type=
"text/css" media=
"screen" href=
"https://people.skolelinux.org/pere/blog/vim.css" />
9 <link rel=
"alternate" title=
"RSS Feed" href=
"https://people.skolelinux.org/pere/blog/index.rss" type=
"application/rss+xml" />
14 <a href=
"https://people.skolelinux.org/pere/blog/">Petter Reinholdtsen
</a>
23 <div class=
"title"><a href=
"https://people.skolelinux.org/pere/blog/Test_framework_for_DocBook_processors___formatters.html">Test framework for DocBook processors / formatters
</a></div>
24 <div class=
"date"> 5th November
2023</div>
25 <div class=
"body"><p>All the books I have published so far has been using
26 <a href=
"https://docbook.org/">DocBook
</a> somewhere in the process.
27 For the first book, the source format was DocBook, while for every
28 later book it was an intermediate format used as the stepping stone to
29 be able to present the same manuscript in several formats, on paper,
30 as ebook in ePub format, as a HTML page and as a PDF file either for
31 paper production or for Internet consumption. This is made possible
32 with a wide variety of free software tools with DocBook support in
33 Debian. The source format of later books have been docx via rst,
34 Markdown, Filemaker and Asciidoc, and for all of these I was able to
35 generate a suitable DocBook file for further processing using pandoc,
36 a2x and asciidoctor, as well as rendering using
37 <a href=
"https://tracker.debian.org/pkg/xmlto">xmlto
</a>,
38 <a href=
"https://tracker.debian.org/pkg/dbtoepub">dbtoepub
</a>,
39 <a href=
"https://tracker.debian.org/pkg/dblatex">dblatex
</a>,
40 <a href=
"https://tracker.debian.org/pkg/dblatex">docbook-xsl
</a> and
41 <a href=
"https://tracker.debian.org/pkg/fop">fop
</a>.
</p>
43 <p>Most of the
<a href=
"http://www.hungry.com/~pere/publisher/">books I
44 have published
</a> are translated books, with English as the source
46 <a href=
"https://tracker.debian.org/pkg/po4a">po4a
</a> to
47 handle translations using the gettext PO format has been a blessing,
48 but publishing translated books had triggered the need to ensure the
49 DocBook tools handle relevant languages correctly. For every new
50 language I have published, I had to submit patches dblatex, dbtoepub
51 and docbook-xsl fixing incorrect language and country specific issues
52 in the framework themselves. Typically this has been missing keywords
53 like 'figure' or sort ordering of index entries. After a while it
54 became tiresome to only discover issues like this by accident, and I
55 decided to write a DocBook "test framework" exercising various
56 features of DocBook and allowing me to see all features exercised for
57 a given language. It consist of a set of DocBook files, a version
4
58 book, a version
5 book, a v4 book set, a v4 selection of problematic
59 tables, one v4 testing sidefloat and finally one v4 testing a book of
60 articles. The DocBook files are accompanied with a set of build rules
61 for building PDF using dblatex and docbook-xsl/fop, HTML using xmlto
62 or docbook-xsl and epub using dbtoepub. The result is a set of files
63 visualizing footnotes, indexes, table of content list, figures,
64 formulas and other DocBook features, allowing for a quick review on
65 the completeness of the given locale settings. To build with a
66 different language setting, all one need to do is edit the lang= value
67 in the .xml file to pick a different ISO
639 code value and run
70 <p>The
<a href=
"https://codeberg.org/pere/docbook-example/">test framework
71 source code
</a> is available from Codeberg, and a generated set of
72 presentations of the various examples is available as Codeberg static
74 <a href=
"https://pere.codeberg.page/docbook-example/">https://pere.codeberg.page/docbook-example/
</a>.
75 Using this test framework I have been able to discover and report
76 several bugs and missing features in various tools, and got a lot of
77 them fixed. For example I got Northern Sami keywords added to both
78 docbook-xsl and dblatex, fixed several typos in Norwegian bokmål and
79 Norwegian Nynorsk, support for non-ascii title IDs added to pandoc,
80 Norwegian index sorting support fixed in xindy and initial Norwegian
81 Bokmål support added to dblatex. Some issues still remains, though.
82 Default index sorting rules are still broken in several tools, so the
83 Norwegian letters æ, ø and å are more often than not sorted properly
84 in the book index.
</p>
86 <p>The test framework recently received some more polish, as part of
87 publishing my latest book. This book contained a lot of fairly
88 complex tables, which exposed bugs in some of the tools. This made me
89 add a new test file with various tables, as well as spend some time to
90 brush up the build rules. My goal is for the test framework to
91 exercise all DocBook features to make it easier to see which features
92 work with different processors, and hopefully get them all to support
93 the full set of DocBook features. Feel free to send patches to extend
94 the test set, and test it with your favorite DocBook processor.
95 Please visit these two URLs to learn more:
</p>
98 <li><a href=
"https://codeberg.org/pere/docbook-example/">https://codeberg.org/pere/docbook-example/
</a></li>
99 <li><a href=
"https://pere.codeberg.page/docbook-example/">https://pere.codeberg.page/docbook-example/
</a></li>
102 <p>If you want to learn more on Docbook and translations, I recommend
103 having a look at the
<a href=
"https://docbook.org/">the DocBook
105 <a href=
"https://doccookbook.sourceforge.net/html/en/">the DoCookBook
106 site
<a/> and my earlier blog post on
107 <a href=
"https://people.skolelinux.org/pere/blog/From_English_wiki_to_translated_PDF_and_epub_via_Docbook.html">how
108 the Skolelinux project process and translate documentation
</a>, a talk I gave earlier this year on
109 <a href=
"https://www.nuug.no/aktiviteter/20230314-oversetting-og-publisering-av-b%c3%b8ker-med-fri-programvare/">how
110 to translate and publish books using free software
</a> (Norwegian
115 https://github.com/docbook/xslt10-stylesheets/issues/205 (docbook-xsl: sme support)
116 https://bugs.debian.org/968437 (xindy: index sorting rules for nb/nn)
117 https://bugs.debian.org/856123 (pandoc: markdown to docbook with non-english titles)
118 https://bugs.debian.org/864813 (dblatex: missing nb words)
119 https://bugs.debian.org/756386 (dblatex: index sorting rules for nb/nn)
120 https://bugs.debian.org/796871 (dbtoepub: index sorting rules for nb/nn)
121 https://bugs.debian.org/792616 (dblatex: PDF metadata)
122 https://bugs.debian.org/686908 (docbook-xsl: index sorting rules for nb/nn)
123 https://sourceforge.net/tracker/?func=detail&atid=373747&aid=3556630&group_id=21935 (docbook-xsl: nb/nn support)
124 https://bugs.debian.org/684391 (dblatex: initial nb support)
128 <p>As usual, if you use Bitcoin and want to show your support of my
129 activities, please send Bitcoin donations to my address
130 <b><a href=
"bitcoin:15oWEoG9dUPovwmUL9KWAnYRtNJEkP1u1b">15oWEoG9dUPovwmUL9KWAnYRtNJEkP1u1b
</a></b>.
</p>
135 Tags:
<a href=
"https://people.skolelinux.org/pere/blog/tags/debian">debian
</a>,
<a href=
"https://people.skolelinux.org/pere/blog/tags/docbook">docbook
</a>,
<a href=
"https://people.skolelinux.org/pere/blog/tags/english">english
</a>.
140 <div class=
"padding"></div>
143 <div class=
"title"><a href=
"https://people.skolelinux.org/pere/blog/_Virkninger_av_angrefristloven___hovedfagsoppgaven_som_fikk_endret_en_lov.html">«Virkninger av angrefristloven», hovedfagsoppgaven som fikk endret en lov
</a></div>
144 <div class=
"date">29th October
2023</div>
145 <div class=
"body"><img src=
"http://people.skolelinux.org/pere/blog/images/2023-10-29-bok-angrefrist.svg" width=
"20%" align=
"center"></a>
147 <p>I
1979 leverte Ole-Erik Yrvin en hovedfagsoppgave for Cand. Scient.
148 ved Institutt for sosiologi på Universitetet i Oslo på oppdrag fra
149 Forbruker- og administrasjonsdepartementet. Oppgaven evaluerte
150 Angrefristloven fra
1972, og det han oppdaget førte til at loven ble
151 endret fire år senere.
</p>
153 <p>Jeg har kjent Ole-Erik en stund, og synes det var trist at hans
154 oppgave ikke lenger er tilgjengelig, hverken fra oppdragsgiver
155 eller fra universitetet. Hans forsøk på å få den avbildet og lagt
156 ut på Internett har vist seg fånyttes, så derfor tilbød jeg meg for
157 en stund tilbake å publisere den og gjøre den tilgjengelig med
158 fribruksvilkår på Internett. Det er nå klart, og hovedfagsoppgaven
159 er tilgjengelig blant annet via
<a
160 href=
"http://www.hungry.com/~pere/publisher/">min liste over
161 publiserte bøker
</a>, både som nettside,
162 <a href=
"https://www.lulu.com/search?contributor=Ole-Erik+Yrvin">digital
163 bok i ePub-format og på papir fra lulu.com
</a>. Jeg regner med at
164 den også vil dukke opp på nettbokhandlere i løpet av en måned eller
167 <p>Alle tabeller og figurer er gjenskapt for bedre lesbarhet, noen
168 skrivefeil rettet opp og mange referanser har fått flere detaljer
169 som ISBN-nummer og DOI-referanse. Selv om jeg ikke regner med at
170 dette blir en kioskvelter, så håper jeg denne nye utgaven kan komme
171 fremtiden til glede.
</p>
173 <p>Som vanlig, hvis du bruker Bitcoin og ønsker å vise din støtte til
174 det jeg driver med, setter jeg pris på om du sender Bitcoin-donasjoner
176 <b><a href=
"bitcoin:15oWEoG9dUPovwmUL9KWAnYRtNJEkP1u1b">15oWEoG9dUPovwmUL9KWAnYRtNJEkP1u1b
</a></b>. Merk,
177 betaling med bitcoin er ikke anonymt. :)
</p>
182 Tags:
<a href=
"https://people.skolelinux.org/pere/blog/tags/docbook">docbook
</a>,
<a href=
"https://people.skolelinux.org/pere/blog/tags/norsk">norsk
</a>.
187 <div class=
"padding"></div>
190 <div class=
"title"><a href=
"https://people.skolelinux.org/pere/blog/_underordnet_tjenestemann_blir_inhabil_fordi_en_overordnet_er_inhabil__.html">«underordnet tjenestemann blir inhabil fordi en overordnet er inhabil».
</a></div>
191 <div class=
"date"> 7th September
2023</div>
192 <div class=
"body"><p>Medlemmene av Norges regjering har demonstert de siste månedene at
193 habilitetsvureringer ikke er deres sterke side og det gjelder både
194 Arbeiderpartiets og Senterpartiers representater. Det er heldigvis
195 enklere i det private, da inhabilitetsreglene kun gjelder de som
196 jobber for folket, ikke seg selv. Sist ut er utenriksminister
197 Huitfeldt. I går kom nyheten om at
198 <a href=
"https://www.nrk.no/nyheter/riksadvokaten_-okokrim-nestsjef-kan-behandle-huitfeldt-saken-1.16545162">Riksadvokaten
199 har konkludert med at nestsjefen i Økokrim kan behandle sak om
200 habilitet og innsidekunnskap
</a> for Huitfeldt, på tross av at hans
201 overordnede, sjefen for Økokrim, har meldt seg inhabil i saken. Dette
202 er litt rart. I veilednigen
203 «
<a href=
"https://www.regjeringen.no/globalassets/upload/krd/vedlegg/komm/veiledere/habilitet_i_kommuner_og_fylkeskommuner.pdf">Habilitet
204 i kommuner og fylkeskommuner
</a>» av Kommunal- og regionaldepartementet
205 forteller de hva som gjelder, riktig nok gjelder veiledningen ikke for
206 Økokrim som jo ikke er kommune eller fylkeskommune, men jeg får ikke
207 inntrykk av at dette er regler som kun gjelder for kommune og
211 <p>«
<strong>2.1 Oversikt over inhabilitetsgrunnlagene
</strong>
213 <p>De alminnelige reglene om inhabilitet for den offentlige
214 forvaltningen er gitt i
215 <a href=
"https://lovdata.no/dokument/NL/lov/1967-02-10/KAPITTEL_2#KAPITTEL_2">forvaltningsloven
216 §§
6 til
10</a>. Forvaltningslovens hovedregel om inhabilitet framgår
217 av §
6. Her er det gitt tre ulike grunnlag som kan føre til at en
218 tjenestemann eller folkevalgt blir inhabil. I §
6 første ledd
219 bokstavene a til e er det oppstilt konkrete tilknytningsforhold mellom
220 tjenestemannen og saken eller sakens parter som automatisk fører til
221 inhabilitet. Annet ledd oppstiller en skjønnsmessig regel om at
222 tjenestemannen også kan bli inhabil etter en konkret vurdering av
223 inhabilitetsspørsmålet, der en lang rekke momenter kan være
224 relevante. I tredje ledd er det regler om såkalt avledet
225 inhabilitet. Det vil si at en underordnet tjenestemann blir inhabil
226 fordi en overordnet er inhabil.»
</p>
229 <p>Loven sier ganske enkelt «Er den overordnede tjenestemann ugild,
230 kan avgjørelse i saken heller ikke treffes av en direkte underordnet
231 tjenestemann i samme forvaltningsorgan.» Jeg antar tanken er at en
232 underordnet vil stå i fare for å tilpasse sine konklusjoner til det
233 overordnet vil ha fordel av, for å fortsatt ha et godt forhold til sin
234 overordnede. Men jeg er ikke jurist og forstår nok ikke kompliserte
235 juridiske vurderinger. For å sitere «Kamerat Napoleon» av George
236 Orwell: «Alle dyr er like, men noen dyr er likere enn andre».
241 Tags:
<a href=
"https://people.skolelinux.org/pere/blog/tags/norsk">norsk
</a>.
246 <div class=
"padding"></div>
249 <div class=
"title"><a href=
"https://people.skolelinux.org/pere/blog/Invidious_add_on_for_Kodi_20.html">Invidious add-on for Kodi
20</a></div>
250 <div class=
"date">10th August
2023</div>
251 <div class=
"body"><p>I still enjoy
<a href=
"https://kodi.tv/">Kodi
</a> and
252 <a href=
"https://libreelec.tv/">LibreELEC
</a> as my multimedia center
253 at home. Sadly two of the services I really would like to use from
254 within Kodi are not easily available. The most wanted add-on would be
255 one making
<a href=
"https://archive.org/">The Internet Archive
</a>
256 available, and it has
257 <a href=
"https://kodi.wiki/view/Add-on:Internet_Archive">not been
258 working
</a> for many years. The second most wanted add-on is one
259 using
<a href=
"https://invidious.io/">the Invidious privacy enhanced
260 Youtube frontent
</a>. A plugin for this has been partly working, but
261 not been kept up to date in the Kodi add-on repository, and its
262 upstream seem to have given it up in April this year, when the git
263 repository was closed. A few days ago I got tired of this sad state
264 of affairs and decided to
265 <a href=
"https://github.com/petterreinholdtsen/kodi-invidious-plugin">have
266 a go at improving the Invidious add-on
</a>. As
267 <a href=
"https://github.com/iv-org/invidious/issues/3872">Google has
268 already attacked
</a> the Invidious concept, so it need all the support
269 if can get. My small contribution here is to improve the service
272 <p>I added support to the Invidious add-on for automatically picking a
273 working Invidious instance, instead of requiring the user to specify
274 the URL to a specific instance after installation. I also had a look
275 at the set of patches floating around in the various forks on github,
276 and decided to clean up at least some of the features I liked and
277 integrate them into my new release branch. Now the plugin can handle
278 channel and short video items in search results. Earlier it could
279 only handle single video instances in the search response. I also
280 brushed up the set of metadata displayed a bit, but hope I can figure
281 out how to get more relevant metadata displayed.
</p>
283 <p>Because I only use Kodi
20 myself, I only test on version
20 and am
284 only motivated to ensure version
20 is working. Because of API changes
285 between version
19 and
20, I suspect it will fail with earlier Kodi
289 <a href=
"https://github.com/xbmc/repo-plugins/pull/4363">asked to have
290 the add-on added
</a> to the official Kodi
20 repository, and is
291 waiting to heard back from the repo maintainers.
</p>
293 <p>As usual, if you use Bitcoin and want to show your support of my
294 activities, please send Bitcoin donations to my address
295 <b><a href=
"bitcoin:15oWEoG9dUPovwmUL9KWAnYRtNJEkP1u1b">15oWEoG9dUPovwmUL9KWAnYRtNJEkP1u1b
</a></b>.
</p>
300 Tags:
<a href=
"https://people.skolelinux.org/pere/blog/tags/english">english
</a>,
<a href=
"https://people.skolelinux.org/pere/blog/tags/kodi">kodi
</a>,
<a href=
"https://people.skolelinux.org/pere/blog/tags/multimedia">multimedia
</a>,
<a href=
"https://people.skolelinux.org/pere/blog/tags/video">video
</a>.
305 <div class=
"padding"></div>
308 <div class=
"title"><a href=
"https://people.skolelinux.org/pere/blog/What_did_I_learn_from_OpenSnitch_this_summer_.html">What did I learn from OpenSnitch this summer?
</a></div>
309 <div class=
"date">11th June
2023</div>
310 <div class=
"body"><p>With yesterdays
311 <a href=
"https://www.debian.org/News/2023/20230610">release of Debian
312 12 Bookworm
</a>, I am happy to know the
313 <a href=
"https://tracker.debian.org/pkg/opensnitch">the interactive
314 application firewall OpenSnitch
</a> is available for a wider audience.
315 I have been running it for a few weeks now, and have been surprised
316 about some of the programs connecting to the Internet. Some programs
317 are obviously calling out from my machine, like the NTP network based
318 clock adjusting system and Tor to reach other Tor clients, but others
319 were more dubious. For example, the KDE Window manager try to look up
320 the host name in DNS, for no apparent reason, but if this lookup is
321 blocked the KDE desktop get periodically stuck when I use it. Another
322 surprise was how much Firefox call home directly to mozilla.com,
323 mozilla.net and googleapis.com, to mention a few, when I visit other
324 web pages. This direct connection happen even if I told Firefox to
325 always use a proxy, and the proxy setting is ignored for this traffic.
326 Other surprising connections come from audacity and dirmngr (I do not
327 use Gnome). It took some trial and error to get a good default set of
328 permissions. Without it, I would get popups asking for permissions at
329 any time, also the most inconvenient ones where I am in the middle of
330 a time sensitive gaming session.
</p>
332 <p>I suspect some application developers should rethink when then need
333 to use network connections or DNS lookups, and recommend testing
334 OpenSnitch (only
<tt>apt install opensnitch
</tt> away in Debian
335 Bookworm) to locate and report any surprising Internet connections on
336 your desktop machine.
</p>
338 <p>At the moment the upstream developer and Debian package maintainer
339 is working on making the system more reliable in Debian, by enabling
340 the eBPF kernel module to track processes and connections instead of
341 depending in content in /proc/. This should enter unstable fairly
344 <p>As usual, if you use Bitcoin and want to show your support of my
345 activities, please send Bitcoin donations to my address
346 <b><a href=
"bitcoin:15oWEoG9dUPovwmUL9KWAnYRtNJEkP1u1b">15oWEoG9dUPovwmUL9KWAnYRtNJEkP1u1b
</a></b>.
</p>
348 <p><strong>Update
2023-
06-
12</strong>: I got a tip about
349 <a href=
"https://wiki.debian.org/PrivacyIssues">a list of privacy
350 issues in Free Software
</a> and the
351 <a href=
"irc://irc.debian.org/%23debian-privacy">#debian-privacy IRC
352 channel
</a> discussing these topics.
</p>
358 Tags:
<a href=
"https://people.skolelinux.org/pere/blog/tags/debian">debian
</a>,
<a href=
"https://people.skolelinux.org/pere/blog/tags/english">english
</a>,
<a href=
"https://people.skolelinux.org/pere/blog/tags/opensnitch">opensnitch
</a>.
363 <div class=
"padding"></div>
366 <div class=
"title"><a href=
"https://people.skolelinux.org/pere/blog/wmbusmeters__parse_data_from_your_utility_meter___nice_free_software.html">wmbusmeters, parse data from your utility meter - nice free software
</a></div>
367 <div class=
"date">19th May
2023</div>
368 <div class=
"body"><p>There is a European standard for reading utility meters like water,
369 gas, electricity or heat distribution meters. The
370 <a href=
"https://en.wikipedia.org/wiki/Meter-Bus">Meter-Bus standard
371 (EN
13757-
2, EN
13757-
3 and EN
13757–
4)
</a> provide a cross vendor way
372 to talk to and collect meter data. I ran into this standard when I
373 wanted to monitor some heat distribution meters, and managed to find
374 free software that could do the job. The meters in question broadcast
375 encrypted messages with meter information via radio, and the hardest
376 part was to track down the encryption keys from the vendor. With this
377 in place I could set up a MQTT gateway to submit the meter data for
380 <p>The free software systems in question,
381 <a href=
"https://tracker.debian.org/pkg/rtl-wmbus">rtl-wmbus
</a> to
382 read the messages from a software defined radio, and
383 <a href=
"https://tracker.debian.org/pkg/wmbusmeters">wmbusmeters
</a> to
384 decrypt and decode the content of the messages, is working very well
385 and allowe me to get frequent updates from my meters. I got in touch
386 with upstream last year to see if there was any interest in publishing
387 the packages via Debian. I was very happy to learn that Fredrik
388 Öhrström volunteered to maintain the packages, and I have since
389 assisted him in getting Debian package build rules in place as well as
390 sponsoring the packages into the Debian archive. Sadly we completed
391 it too late for them to become part of the next stable Debian release
392 (Bookworm). The wmbusmeters package just cleared the NEW queue. It
393 will need some work to fix a built problem, but I expect Fredrik will
394 find a solution soon.
</p>
396 <p>If you got a infrastructure meter supporting the Meter Bus
397 standard, I strongly recommend having a look at these nice
400 <p>As usual, if you use Bitcoin and want to show your support of my
401 activities, please send Bitcoin donations to my address
402 <b><a href=
"bitcoin:15oWEoG9dUPovwmUL9KWAnYRtNJEkP1u1b">15oWEoG9dUPovwmUL9KWAnYRtNJEkP1u1b
</a></b>.
</p>
407 Tags:
<a href=
"https://people.skolelinux.org/pere/blog/tags/debian">debian
</a>,
<a href=
"https://people.skolelinux.org/pere/blog/tags/english">english
</a>,
<a href=
"https://people.skolelinux.org/pere/blog/tags/nice free software">nice free software
</a>.
412 <div class=
"padding"></div>
415 <div class=
"title"><a href=
"https://people.skolelinux.org/pere/blog/The_2023_LinuxCNC_Norwegian_developer_gathering.html">The
2023 LinuxCNC Norwegian developer gathering
</a></div>
416 <div class=
"date">14th May
2023</div>
417 <div class=
"body"><p>The LinuxCNC project is making headway these days. A lot of
418 patches and issues have seen activity on
419 <a href=
"https://github.com/LinuxCNC/linuxcnc/">the project github
420 pages
</a> recently. A few weeks ago there was a developer gathering
421 over at the
<a href=
"https://tormach.com/">Tormach
</a> headquarter in
422 Wisconsin, and now we are planning a new gathering in Norway. If you
423 wonder what LinuxCNC is, lets quote Wikipedia:
</p>
426 "LinuxCNC is a software system for numerical control of
427 machines such as milling machines, lathes, plasma cutters, routers,
428 cutting machines, robots and hexapods. It can control up to
9 axes or
429 joints of a CNC machine using G-code (RS-
274NGC) as input. It has
430 several GUIs suited to specific kinds of usage (touch screen,
431 interactive development)."
434 <p>The Norwegian developer gathering take place the weekend June
16th
435 to
18th this year, and is open for everyone interested in contributing
436 to LinuxCNC. Up to date information about the gathering can be found
438 <a href=
"https://sourceforge.net/p/emc/mailman/emc-developers/thread/sa64jp06nob.fsf%40hjemme.reinholdtsen.name/#msg37837251">the
439 developer mailing list thread
</a> where the gathering was announced.
440 Thanks to the good people at
441 <a href=
"https://www.debian.org/">Debian
</a>,
442 <a href=
"https://www.redpill-linpro.com/">Redpill-Linpro
</a> and
443 <a href=
"https://www.nuugfoundation.no/no/">NUUG Foundation
</a>, we
444 have enough sponsor funds to pay for food, and shelter for the people
445 traveling from afar to join us. If you would like to join the
446 gathering, get in touch.
</p>
448 <p>As usual, if you use Bitcoin and want to show your support of my
449 activities, please send Bitcoin donations to my address
450 <b><a href=
"bitcoin:15oWEoG9dUPovwmUL9KWAnYRtNJEkP1u1b">15oWEoG9dUPovwmUL9KWAnYRtNJEkP1u1b
</a></b>.
</p>
455 Tags:
<a href=
"https://people.skolelinux.org/pere/blog/tags/debian">debian
</a>,
<a href=
"https://people.skolelinux.org/pere/blog/tags/english">english
</a>,
<a href=
"https://people.skolelinux.org/pere/blog/tags/linuxcnc">linuxcnc
</a>.
460 <div class=
"padding"></div>
463 <div class=
"title"><a href=
"https://people.skolelinux.org/pere/blog/OpenSnitch_in_Debian_ready_for_prime_time.html">OpenSnitch in Debian ready for prime time
</a></div>
464 <div class=
"date">13th May
2023</div>
465 <div class=
"body"><p>A bit delayed,
466 <a href=
"https://tracker.debian.org/pkg/opensnitch">the interactive
467 application firewall OpenSnitch
</a> package in Debian now got the
468 latest fixes ready for Debian Bookworm. Because it depend on a
469 package missing on some architectures, the autopkgtest check of the
470 testing migration script did not understand that the tests were
471 actually working, so the migration was delayed. A bug in the package
472 dependencies is also fixed, so those installing the firewall package
473 (opensnitch) now also get the GUI admin tool (python3-opensnitch-ui)
474 installed by default. I am very grateful to Gustavo Iñiguez Goya for
475 his work on getting the package ready for Debian Bookworm.
</p>
477 <p>Armed with this package I have discovered some surprising
478 connections from programs I believed were able to work completly
479 offline, and it has already proven its worth, at least to me. If you
480 too want to get more familiar with the kind of programs using
481 Internett connections on your machine, I recommend testing
<tt>apt
482 install opensnitch
</tt> in Bookworm and see what you think.
</p>
484 <p>The package is still not able to build its eBPF module within
485 Debian. Not sure how much work it would be to get it working, but
486 suspect some kernel related packages need to be extended with more
487 header files to get it working.
</p>
489 <p>As usual, if you use Bitcoin and want to show your support of my
490 activities, please send Bitcoin donations to my address
491 <b><a href=
"bitcoin:15oWEoG9dUPovwmUL9KWAnYRtNJEkP1u1b">15oWEoG9dUPovwmUL9KWAnYRtNJEkP1u1b
</a></b>.
</p>
496 Tags:
<a href=
"https://people.skolelinux.org/pere/blog/tags/debian">debian
</a>,
<a href=
"https://people.skolelinux.org/pere/blog/tags/english">english
</a>,
<a href=
"https://people.skolelinux.org/pere/blog/tags/opensnitch">opensnitch
</a>.
501 <div class=
"padding"></div>
504 <div class=
"title"><a href=
"https://people.skolelinux.org/pere/blog/Speech_to_text__she_APTly_whispered__how_hard_can_it_be_.html">Speech to text, she APTly whispered, how hard can it be?
</a></div>
505 <div class=
"date">23rd April
2023</div>
506 <div class=
"body"><p>While visiting a convention during Easter, it occurred to me that
507 it would be great if I could have a digital Dictaphone with
508 transcribing capabilities, providing me with texts to cut-n-paste into
509 stuff I need to write. The background is that long drives often bring
510 up the urge to write on texts I am working on, which of course is out
511 of the question while driving. With the release of
512 <a href=
"https://github.com/openai/whisper/">OpenAI Whisper
</a>, this
513 seem to be within reach with Free Software, so I decided to give it a
514 go. OpenAI Whisper is a Linux based neural network system to read in
515 audio files and provide text representation of the speech in that
516 audio recording. It handle multiple languages and according to its
517 creators even can translate into a different language than the spoken
518 one. I have not tested the latter feature. It can either use the CPU
519 or a GPU with CUDA support. As far as I can tell, CUDA in practice
520 limit that feature to NVidia graphics cards. I have few of those, as
521 they do not work great with free software drivers, and have not tested
522 the GPU option. While looking into the matter, I did discover some
523 work to provide CUDA support on non-NVidia GPUs, and some work with
524 the library used by Whisper to port it to other GPUs, but have not
525 spent much time looking into GPU support yet. I've so far used an old
526 X220 laptop as my test machine, and only transcribed using its
529 <p>As it from a privacy standpoint is unthinkable to use computers
530 under control of someone else (aka a "cloud" service) to transcribe
531 ones thoughts and personal notes, I want to run the transcribing
532 system locally on my own computers. The only sensible approach to me
533 is to make the effort I put into this available for any Linux user and
534 to upload the needed packages into Debian. Looking at Debian Bookworm, I
535 discovered that only three packages were missing,
536 <a href=
"https://bugs.debian.org/1034307">tiktoken
</a>,
537 <a href=
"https://bugs.debian.org/1034144">triton
</a>, and
538 <a href=
"https://bugs.debian.org/1034091">openai-whisper
</a>. For a while
540 <a href=
"https://bugs.debian.org/1034286">ffmpeg-python
</a> was
542 <a href=
"https://github.com/kkroening/ffmpeg-python/issues/760">upstream
543 seem to have vanished
</a> I found it safer
544 <a href=
"https://github.com/openai/whisper/pull/1242">to rewrite
545 whisper
</a> to stop depending on in than to introduce ffmpeg-python
546 into Debian. I decided to place these packages under the umbrella of
547 <a href=
"https://salsa.debian.org/deeplearning-team">the Debian Deep
548 Learning Team
</a>, which seem like the best team to look after such
549 packages. Discussing the topic within the group also made me aware
550 that the triton package was already a future dependency of newer
551 versions of the torch package being planned, and would be needed after
552 Bookworm is released.
</p>
554 <p>All required code packages have been now waiting in
555 <a href=
"https://ftp-master.debian.org/new.html">the Debian NEW
556 queue
</a> since Wednesday, heading for Debian Experimental until
557 Bookworm is released. An unsolved issue is how to handle the neural
558 network models used by Whisper. The default behaviour of Whisper is
559 to require Internet connectivity and download the model requested to
560 <tt>~/.cache/whisper/
</tt> on first invocation. This obviously would
561 fail
<a href=
"https://people.debian.org/~bap/dfsg-faq.html">the
562 deserted island test of free software
</a> as the Debian packages would
563 be unusable for someone stranded with only the Debian archive and solar
564 powered computer on a deserted island.
</p>
566 <p>Because of this, I would love to include the models in the Debian
567 mirror system. This is problematic, as the models are very large
568 files, which would put a heavy strain on the Debian mirror
569 infrastructure around the globe. The strain would be even higher if
570 the models change often, which luckily as far as I can tell they do
571 not. The small model, which according to its creator is most useful
572 for English and in my experience is not doing a great job there
573 either, is
462 MiB (deb is
414 MiB). The medium model, which to me
574 seem to handle English speech fairly well is
1.5 GiB (deb is
1.3 GiB)
575 and the large model is
2.9 GiB (deb is
2.6 GiB). I would assume
576 everyone with enough resources would prefer to use the large model for
577 highest quality. I believe the models themselves would have to go
578 into the non-free part of the Debian archive, as they are not really
579 including any useful source code for updating the models. The
580 "source", aka the model training set, according to the creators
581 consist of "
680,
000 hours of multilingual and multitask supervised
582 data collected from the web", which to me reads material with both
583 unknown copyright terms, unavailable to the general public. In other
584 words, the source is not available according to the Debian Free
585 Software Guidelines and the model should be considered non-free.
</p>
587 <p>I asked the Debian FTP masters for advice regarding uploading a
588 model package on their IRC channel, and based on the feedback there it
589 is still unclear to me if such package would be accepted into the
590 archive. In any case I wrote build rules for a
591 <a href=
"https://salsa.debian.org/deeplearning-team/openai-whisper-model">OpenAI
592 Whisper model package
</a> and
593 <a href=
"https://github.com/openai/whisper/pull/1257">modified the
594 Whisper code base
</a> to prefer shared files under
<tt>/usr/
</tt> and
595 <tt>/var/
</tt> over user specific files in
<tt>~/.cache/whisper/
</tt>
596 to be able to use these model packages, to prepare for such
597 possibility. One solution might be to include only one of the models
598 (small or medium, I guess) in the Debian archive, and ask people to
599 download the others from the Internet. Not quite sure what to do
600 here, and advice is most welcome (use the debian-ai mailing list).
</p>
602 <p>To make it easier to test the new packages while I wait for them to
603 clear the NEW queue, I created an APT source targeting bookworm. I
604 selected Bookworm instead of Bullseye, even though I know the latter
605 would reach more users, is that some of the required dependencies are
606 missing from Bullseye and I during this phase of testing did not want
607 to backport a lot of packages just to get up and running.
</p>
609 <p>Here is a recipe to run as user root if you want to test OpenAI
610 Whisper using Debian packages on your Debian Bookworm installation,
611 first adding the APT repository GPG key to the list of trusted keys,
612 then setting up the APT repository and finally installing the packages
613 and one of the models:
</p>
616 curl https://geekbay.nuug.no/~pere/openai-whisper/D78F5C4796F353D211B119E28200D9B589641240.asc \
617 -o /etc/apt/trusted.gpg.d/pere-whisper.asc
618 mkdir -p /etc/apt/sources.list.d
619 cat
> /etc/apt/sources.list.d/pere-whisper.list
<<EOF
620 deb https://geekbay.nuug.no/~pere/openai-whisper/ bookworm main
621 deb-src https://geekbay.nuug.no/~pere/openai-whisper/ bookworm main
624 apt install openai-whisper
627 <p>The package work for me, but have not yet been tested on any other
628 computer than my own. With it, I have been able to (badly) transcribe
629 a
2 minute
40 second Norwegian audio clip to test using the small
630 model. This took
11 minutes and around
2.2 GiB of RAM. Transcribing
631 the same file with the medium model gave a accurate text in
77 minutes
632 using around
5.2 GiB of RAM. My test machine had too little memory to
633 test the large model, which I believe require
11 GiB of RAM. In
634 short, this now work for me using Debian packages, and I hope it will
635 for you and everyone else once the packages enter Debian.
</p>
637 <p>Now I can start on the audio recording part of this project.
</p>
639 <p>As usual, if you use Bitcoin and want to show your support of my
640 activities, please send Bitcoin donations to my address
641 <b><a href=
"bitcoin:15oWEoG9dUPovwmUL9KWAnYRtNJEkP1u1b">15oWEoG9dUPovwmUL9KWAnYRtNJEkP1u1b
</a></b>.
</p>
646 Tags:
<a href=
"https://people.skolelinux.org/pere/blog/tags/debian">debian
</a>,
<a href=
"https://people.skolelinux.org/pere/blog/tags/english">english
</a>,
<a href=
"https://people.skolelinux.org/pere/blog/tags/multimedia">multimedia
</a>,
<a href=
"https://people.skolelinux.org/pere/blog/tags/video">video
</a>.
651 <div class=
"padding"></div>
654 <div class=
"title"><a href=
"https://people.skolelinux.org/pere/blog/rtlsdr_scanner__software_defined_radio_frequency_scanner_for_Linux____nice_free_software.html">rtlsdr-scanner, software defined radio frequency scanner for Linux - nice free software
</a></div>
655 <div class=
"date"> 7th April
2023</div>
656 <div class=
"body"><p>Today I finally found time to track down a useful radio frequency
657 scanner for my software defined radio. Just for fun I tried to locate
658 the radios used in the areas, and a good start would be to scan all
659 the frequencies to see what is in use. I've tried to find a useful
660 program earlier, but ran out of time before I managed to find a useful
661 tool. This time I was more successful, and after a few false leads I
662 found a description of
663 <a href=
"https://www.kali.org/tools/rtlsdr-scanner/">rtlsdr-scanner
664 over at the Kali site
</a>, and was able to track down
665 <a href=
"https://gitlab.com/kalilinux/packages/rtlsdr-scanner.git">the
666 Kali package git repository
</a> to build a deb package for the
667 scanner. Sadly the package is missing from the Debian project itself,
668 at least in Debian Bullseye. Two runtime dependencies,
669 <a href=
"https://gitlab.com/kalilinux/packages/python-visvis.git">python-visvis
</a>
671 <a href=
"https://gitlab.com/kalilinux/packages/python-rtlsdr.git">python-rtlsdr
</a>
672 had to be built and installed separately. Luckily '
<tt>gbp
673 buildpackage
</tt>' handled them just fine and no further packages had
674 to be manually built. The end result worked out of the box after
677 <p>My initial scans for FM channels worked just fine, so I knew the
678 scanner was functioning. But when I tried to scan every frequency
679 from
100 to
1000 MHz, the program stopped unexpectedly near the
680 completion. After some debugging I discovered USB software radio I
681 used rejected frequencies above
948 MHz, triggering a unreported
682 exception breaking the scan. Changing the scan to end at
957 worked
683 better. I similarly found the lower limit to be around
15, and ended
684 up with the following full scan:
</p>
686 <p><a href=
"https://people.skolelinux.org/pere/blog/images/2023-04-07-radio-freq-scanning.png"><img src=
"https://people.skolelinux.org/pere/blog/images/2023-04-07-radio-freq-scanning.png" width=
"100%"></a></p>
688 <p>Saving the scan did not work, but exporting it as a CSV file worked
689 just fine. I ended up with around
477k CVS lines with dB level for
690 the given frequency.
</p>
692 <p>The save failure seem to be a missing UTF-
8 encoding issue in the
693 python code. Will see if I can find time to send a patch
694 <a href=
"https://github.com/CdeMills/RTLSDR-Scanner/">upstream
</a>
695 later to fix this exception:
</p>
698 Traceback (most recent call last):
699 File "/usr/lib/python3/dist-packages/rtlsdr_scanner/main_window.py", line
485, in __on_save
700 save_plot(fullName, self.scanInfo, self.spectrum, self.locations)
701 File "/usr/lib/python3/dist-packages/rtlsdr_scanner/file.py", line
408, in save_plot
702 handle.write(json.dumps(data, indent=
4))
703 TypeError: a bytes-like object is required, not 'str'
704 Traceback (most recent call last):
705 File "/usr/lib/python3/dist-packages/rtlsdr_scanner/main_window.py", line
485, in __on_save
706 save_plot(fullName, self.scanInfo, self.spectrum, self.locations)
707 File "/usr/lib/python3/dist-packages/rtlsdr_scanner/file.py", line
408, in save_plot
708 handle.write(json.dumps(data, indent=
4))
709 TypeError: a bytes-like object is required, not 'str'
712 <p>As usual, if you use Bitcoin and want to show your support of my
713 activities, please send Bitcoin donations to my address
714 <b><a href=
"bitcoin:15oWEoG9dUPovwmUL9KWAnYRtNJEkP1u1b">15oWEoG9dUPovwmUL9KWAnYRtNJEkP1u1b
</a></b>.
</p>
719 Tags:
<a href=
"https://people.skolelinux.org/pere/blog/tags/debian">debian
</a>,
<a href=
"https://people.skolelinux.org/pere/blog/tags/english">english
</a>,
<a href=
"https://people.skolelinux.org/pere/blog/tags/nice free software">nice free software
</a>.
724 <div class=
"padding"></div>
726 <p style=
"text-align: right;"><a href=
"index.rss"><img src=
"https://people.skolelinux.org/pere/blog/xml.gif" alt=
"RSS feed" width=
"36" height=
"14" /></a></p>
737 <li><a href=
"https://people.skolelinux.org/pere/blog/archive/2023/01/">January (
3)
</a></li>
739 <li><a href=
"https://people.skolelinux.org/pere/blog/archive/2023/02/">February (
1)
</a></li>
741 <li><a href=
"https://people.skolelinux.org/pere/blog/archive/2023/04/">April (
2)
</a></li>
743 <li><a href=
"https://people.skolelinux.org/pere/blog/archive/2023/05/">May (
3)
</a></li>
745 <li><a href=
"https://people.skolelinux.org/pere/blog/archive/2023/06/">June (
1)
</a></li>
747 <li><a href=
"https://people.skolelinux.org/pere/blog/archive/2023/08/">August (
1)
</a></li>
749 <li><a href=
"https://people.skolelinux.org/pere/blog/archive/2023/09/">September (
1)
</a></li>
751 <li><a href=
"https://people.skolelinux.org/pere/blog/archive/2023/10/">October (
1)
</a></li>
753 <li><a href=
"https://people.skolelinux.org/pere/blog/archive/2023/11/">November (
1)
</a></li>
760 <li><a href=
"https://people.skolelinux.org/pere/blog/archive/2022/02/">February (
1)
</a></li>
762 <li><a href=
"https://people.skolelinux.org/pere/blog/archive/2022/03/">March (
3)
</a></li>
764 <li><a href=
"https://people.skolelinux.org/pere/blog/archive/2022/04/">April (
2)
</a></li>
766 <li><a href=
"https://people.skolelinux.org/pere/blog/archive/2022/06/">June (
2)
</a></li>
768 <li><a href=
"https://people.skolelinux.org/pere/blog/archive/2022/07/">July (
1)
</a></li>
770 <li><a href=
"https://people.skolelinux.org/pere/blog/archive/2022/09/">September (
1)
</a></li>
772 <li><a href=
"https://people.skolelinux.org/pere/blog/archive/2022/10/">October (
1)
</a></li>
774 <li><a href=
"https://people.skolelinux.org/pere/blog/archive/2022/12/">December (
1)
</a></li>
781 <li><a href=
"https://people.skolelinux.org/pere/blog/archive/2021/01/">January (
2)
</a></li>
783 <li><a href=
"https://people.skolelinux.org/pere/blog/archive/2021/02/">February (
1)
</a></li>
785 <li><a href=
"https://people.skolelinux.org/pere/blog/archive/2021/05/">May (
1)
</a></li>
787 <li><a href=
"https://people.skolelinux.org/pere/blog/archive/2021/06/">June (
1)
</a></li>
789 <li><a href=
"https://people.skolelinux.org/pere/blog/archive/2021/07/">July (
3)
</a></li>
791 <li><a href=
"https://people.skolelinux.org/pere/blog/archive/2021/08/">August (
1)
</a></li>
793 <li><a href=
"https://people.skolelinux.org/pere/blog/archive/2021/09/">September (
1)
</a></li>
795 <li><a href=
"https://people.skolelinux.org/pere/blog/archive/2021/10/">October (
1)
</a></li>
797 <li><a href=
"https://people.skolelinux.org/pere/blog/archive/2021/12/">December (
1)
</a></li>
804 <li><a href=
"https://people.skolelinux.org/pere/blog/archive/2020/02/">February (
2)
</a></li>
806 <li><a href=
"https://people.skolelinux.org/pere/blog/archive/2020/03/">March (
2)
</a></li>
808 <li><a href=
"https://people.skolelinux.org/pere/blog/archive/2020/04/">April (
2)
</a></li>
810 <li><a href=
"https://people.skolelinux.org/pere/blog/archive/2020/05/">May (
3)
</a></li>
812 <li><a href=
"https://people.skolelinux.org/pere/blog/archive/2020/06/">June (
2)
</a></li>
814 <li><a href=
"https://people.skolelinux.org/pere/blog/archive/2020/07/">July (
1)
</a></li>
816 <li><a href=
"https://people.skolelinux.org/pere/blog/archive/2020/09/">September (
1)
</a></li>
818 <li><a href=
"https://people.skolelinux.org/pere/blog/archive/2020/10/">October (
1)
</a></li>
820 <li><a href=
"https://people.skolelinux.org/pere/blog/archive/2020/11/">November (
1)
</a></li>
827 <li><a href=
"https://people.skolelinux.org/pere/blog/archive/2019/01/">January (
4)
</a></li>
829 <li><a href=
"https://people.skolelinux.org/pere/blog/archive/2019/02/">February (
3)
</a></li>
831 <li><a href=
"https://people.skolelinux.org/pere/blog/archive/2019/03/">March (
3)
</a></li>
833 <li><a href=
"https://people.skolelinux.org/pere/blog/archive/2019/05/">May (
2)
</a></li>
835 <li><a href=
"https://people.skolelinux.org/pere/blog/archive/2019/06/">June (
5)
</a></li>
837 <li><a href=
"https://people.skolelinux.org/pere/blog/archive/2019/07/">July (
2)
</a></li>
839 <li><a href=
"https://people.skolelinux.org/pere/blog/archive/2019/08/">August (
1)
</a></li>
841 <li><a href=
"https://people.skolelinux.org/pere/blog/archive/2019/09/">September (
1)
</a></li>
843 <li><a href=
"https://people.skolelinux.org/pere/blog/archive/2019/11/">November (
1)
</a></li>
845 <li><a href=
"https://people.skolelinux.org/pere/blog/archive/2019/12/">December (
4)
</a></li>
852 <li><a href=
"https://people.skolelinux.org/pere/blog/archive/2018/01/">January (
1)
</a></li>
854 <li><a href=
"https://people.skolelinux.org/pere/blog/archive/2018/02/">February (
5)
</a></li>
856 <li><a href=
"https://people.skolelinux.org/pere/blog/archive/2018/03/">March (
5)
</a></li>
858 <li><a href=
"https://people.skolelinux.org/pere/blog/archive/2018/04/">April (
3)
</a></li>
860 <li><a href=
"https://people.skolelinux.org/pere/blog/archive/2018/06/">June (
2)
</a></li>
862 <li><a href=
"https://people.skolelinux.org/pere/blog/archive/2018/07/">July (
5)
</a></li>
864 <li><a href=
"https://people.skolelinux.org/pere/blog/archive/2018/08/">August (
3)
</a></li>
866 <li><a href=
"https://people.skolelinux.org/pere/blog/archive/2018/09/">September (
3)
</a></li>
868 <li><a href=
"https://people.skolelinux.org/pere/blog/archive/2018/10/">October (
5)
</a></li>
870 <li><a href=
"https://people.skolelinux.org/pere/blog/archive/2018/11/">November (
2)
</a></li>
872 <li><a href=
"https://people.skolelinux.org/pere/blog/archive/2018/12/">December (
4)
</a></li>
879 <li><a href=
"https://people.skolelinux.org/pere/blog/archive/2017/01/">January (
4)
</a></li>
881 <li><a href=
"https://people.skolelinux.org/pere/blog/archive/2017/02/">February (
3)
</a></li>
883 <li><a href=
"https://people.skolelinux.org/pere/blog/archive/2017/03/">March (
5)
</a></li>
885 <li><a href=
"https://people.skolelinux.org/pere/blog/archive/2017/04/">April (
2)
</a></li>
887 <li><a href=
"https://people.skolelinux.org/pere/blog/archive/2017/06/">June (
5)
</a></li>
889 <li><a href=
"https://people.skolelinux.org/pere/blog/archive/2017/07/">July (
1)
</a></li>
891 <li><a href=
"https://people.skolelinux.org/pere/blog/archive/2017/08/">August (
1)
</a></li>
893 <li><a href=
"https://people.skolelinux.org/pere/blog/archive/2017/09/">September (
3)
</a></li>
895 <li><a href=
"https://people.skolelinux.org/pere/blog/archive/2017/10/">October (
5)
</a></li>
897 <li><a href=
"https://people.skolelinux.org/pere/blog/archive/2017/11/">November (
3)
</a></li>
899 <li><a href=
"https://people.skolelinux.org/pere/blog/archive/2017/12/">December (
4)
</a></li>
906 <li><a href=
"https://people.skolelinux.org/pere/blog/archive/2016/01/">January (
3)
</a></li>
908 <li><a href=
"https://people.skolelinux.org/pere/blog/archive/2016/02/">February (
2)
</a></li>
910 <li><a href=
"https://people.skolelinux.org/pere/blog/archive/2016/03/">March (
3)
</a></li>
912 <li><a href=
"https://people.skolelinux.org/pere/blog/archive/2016/04/">April (
8)
</a></li>
914 <li><a href=
"https://people.skolelinux.org/pere/blog/archive/2016/05/">May (
8)
</a></li>
916 <li><a href=
"https://people.skolelinux.org/pere/blog/archive/2016/06/">June (
2)
</a></li>
918 <li><a href=
"https://people.skolelinux.org/pere/blog/archive/2016/07/">July (
2)
</a></li>
920 <li><a href=
"https://people.skolelinux.org/pere/blog/archive/2016/08/">August (
5)
</a></li>
922 <li><a href=
"https://people.skolelinux.org/pere/blog/archive/2016/09/">September (
2)
</a></li>
924 <li><a href=
"https://people.skolelinux.org/pere/blog/archive/2016/10/">October (
3)
</a></li>
926 <li><a href=
"https://people.skolelinux.org/pere/blog/archive/2016/11/">November (
8)
</a></li>
928 <li><a href=
"https://people.skolelinux.org/pere/blog/archive/2016/12/">December (
5)
</a></li>
935 <li><a href=
"https://people.skolelinux.org/pere/blog/archive/2015/01/">January (
7)
</a></li>
937 <li><a href=
"https://people.skolelinux.org/pere/blog/archive/2015/02/">February (
6)
</a></li>
939 <li><a href=
"https://people.skolelinux.org/pere/blog/archive/2015/03/">March (
1)
</a></li>
941 <li><a href=
"https://people.skolelinux.org/pere/blog/archive/2015/04/">April (
4)
</a></li>
943 <li><a href=
"https://people.skolelinux.org/pere/blog/archive/2015/05/">May (
3)
</a></li>
945 <li><a href=
"https://people.skolelinux.org/pere/blog/archive/2015/06/">June (
4)
</a></li>
947 <li><a href=
"https://people.skolelinux.org/pere/blog/archive/2015/07/">July (
6)
</a></li>
949 <li><a href=
"https://people.skolelinux.org/pere/blog/archive/2015/08/">August (
2)
</a></li>
951 <li><a href=
"https://people.skolelinux.org/pere/blog/archive/2015/09/">September (
2)
</a></li>
953 <li><a href=
"https://people.skolelinux.org/pere/blog/archive/2015/10/">October (
9)
</a></li>
955 <li><a href=
"https://people.skolelinux.org/pere/blog/archive/2015/11/">November (
6)
</a></li>
957 <li><a href=
"https://people.skolelinux.org/pere/blog/archive/2015/12/">December (
3)
</a></li>
964 <li><a href=
"https://people.skolelinux.org/pere/blog/archive/2014/01/">January (
2)
</a></li>
966 <li><a href=
"https://people.skolelinux.org/pere/blog/archive/2014/02/">February (
3)
</a></li>
968 <li><a href=
"https://people.skolelinux.org/pere/blog/archive/2014/03/">March (
8)
</a></li>
970 <li><a href=
"https://people.skolelinux.org/pere/blog/archive/2014/04/">April (
7)
</a></li>
972 <li><a href=
"https://people.skolelinux.org/pere/blog/archive/2014/05/">May (
1)
</a></li>
974 <li><a href=
"https://people.skolelinux.org/pere/blog/archive/2014/06/">June (
2)
</a></li>
976 <li><a href=
"https://people.skolelinux.org/pere/blog/archive/2014/07/">July (
2)
</a></li>
978 <li><a href=
"https://people.skolelinux.org/pere/blog/archive/2014/08/">August (
2)
</a></li>
980 <li><a href=
"https://people.skolelinux.org/pere/blog/archive/2014/09/">September (
5)
</a></li>
982 <li><a href=
"https://people.skolelinux.org/pere/blog/archive/2014/10/">October (
6)
</a></li>
984 <li><a href=
"https://people.skolelinux.org/pere/blog/archive/2014/11/">November (
3)
</a></li>
986 <li><a href=
"https://people.skolelinux.org/pere/blog/archive/2014/12/">December (
5)
</a></li>
993 <li><a href=
"https://people.skolelinux.org/pere/blog/archive/2013/01/">January (
11)
</a></li>
995 <li><a href=
"https://people.skolelinux.org/pere/blog/archive/2013/02/">February (
9)
</a></li>
997 <li><a href=
"https://people.skolelinux.org/pere/blog/archive/2013/03/">March (
9)
</a></li>
999 <li><a href=
"https://people.skolelinux.org/pere/blog/archive/2013/04/">April (
6)
</a></li>
1001 <li><a href=
"https://people.skolelinux.org/pere/blog/archive/2013/05/">May (
9)
</a></li>
1003 <li><a href=
"https://people.skolelinux.org/pere/blog/archive/2013/06/">June (
10)
</a></li>
1005 <li><a href=
"https://people.skolelinux.org/pere/blog/archive/2013/07/">July (
7)
</a></li>
1007 <li><a href=
"https://people.skolelinux.org/pere/blog/archive/2013/08/">August (
3)
</a></li>
1009 <li><a href=
"https://people.skolelinux.org/pere/blog/archive/2013/09/">September (
5)
</a></li>
1011 <li><a href=
"https://people.skolelinux.org/pere/blog/archive/2013/10/">October (
7)
</a></li>
1013 <li><a href=
"https://people.skolelinux.org/pere/blog/archive/2013/11/">November (
9)
</a></li>
1015 <li><a href=
"https://people.skolelinux.org/pere/blog/archive/2013/12/">December (
3)
</a></li>
1022 <li><a href=
"https://people.skolelinux.org/pere/blog/archive/2012/01/">January (
7)
</a></li>
1024 <li><a href=
"https://people.skolelinux.org/pere/blog/archive/2012/02/">February (
10)
</a></li>
1026 <li><a href=
"https://people.skolelinux.org/pere/blog/archive/2012/03/">March (
17)
</a></li>
1028 <li><a href=
"https://people.skolelinux.org/pere/blog/archive/2012/04/">April (
12)
</a></li>
1030 <li><a href=
"https://people.skolelinux.org/pere/blog/archive/2012/05/">May (
12)
</a></li>
1032 <li><a href=
"https://people.skolelinux.org/pere/blog/archive/2012/06/">June (
20)
</a></li>
1034 <li><a href=
"https://people.skolelinux.org/pere/blog/archive/2012/07/">July (
17)
</a></li>
1036 <li><a href=
"https://people.skolelinux.org/pere/blog/archive/2012/08/">August (
6)
</a></li>
1038 <li><a href=
"https://people.skolelinux.org/pere/blog/archive/2012/09/">September (
9)
</a></li>
1040 <li><a href=
"https://people.skolelinux.org/pere/blog/archive/2012/10/">October (
17)
</a></li>
1042 <li><a href=
"https://people.skolelinux.org/pere/blog/archive/2012/11/">November (
10)
</a></li>
1044 <li><a href=
"https://people.skolelinux.org/pere/blog/archive/2012/12/">December (
7)
</a></li>
1051 <li><a href=
"https://people.skolelinux.org/pere/blog/archive/2011/01/">January (
16)
</a></li>
1053 <li><a href=
"https://people.skolelinux.org/pere/blog/archive/2011/02/">February (
6)
</a></li>
1055 <li><a href=
"https://people.skolelinux.org/pere/blog/archive/2011/03/">March (
6)
</a></li>
1057 <li><a href=
"https://people.skolelinux.org/pere/blog/archive/2011/04/">April (
7)
</a></li>
1059 <li><a href=
"https://people.skolelinux.org/pere/blog/archive/2011/05/">May (
3)
</a></li>
1061 <li><a href=
"https://people.skolelinux.org/pere/blog/archive/2011/06/">June (
2)
</a></li>
1063 <li><a href=
"https://people.skolelinux.org/pere/blog/archive/2011/07/">July (
7)
</a></li>
1065 <li><a href=
"https://people.skolelinux.org/pere/blog/archive/2011/08/">August (
6)
</a></li>
1067 <li><a href=
"https://people.skolelinux.org/pere/blog/archive/2011/09/">September (
4)
</a></li>
1069 <li><a href=
"https://people.skolelinux.org/pere/blog/archive/2011/10/">October (
2)
</a></li>
1071 <li><a href=
"https://people.skolelinux.org/pere/blog/archive/2011/11/">November (
3)
</a></li>
1073 <li><a href=
"https://people.skolelinux.org/pere/blog/archive/2011/12/">December (
1)
</a></li>
1080 <li><a href=
"https://people.skolelinux.org/pere/blog/archive/2010/01/">January (
2)
</a></li>
1082 <li><a href=
"https://people.skolelinux.org/pere/blog/archive/2010/02/">February (
1)
</a></li>
1084 <li><a href=
"https://people.skolelinux.org/pere/blog/archive/2010/03/">March (
3)
</a></li>
1086 <li><a href=
"https://people.skolelinux.org/pere/blog/archive/2010/04/">April (
3)
</a></li>
1088 <li><a href=
"https://people.skolelinux.org/pere/blog/archive/2010/05/">May (
9)
</a></li>
1090 <li><a href=
"https://people.skolelinux.org/pere/blog/archive/2010/06/">June (
14)
</a></li>
1092 <li><a href=
"https://people.skolelinux.org/pere/blog/archive/2010/07/">July (
12)
</a></li>
1094 <li><a href=
"https://people.skolelinux.org/pere/blog/archive/2010/08/">August (
13)
</a></li>
1096 <li><a href=
"https://people.skolelinux.org/pere/blog/archive/2010/09/">September (
7)
</a></li>
1098 <li><a href=
"https://people.skolelinux.org/pere/blog/archive/2010/10/">October (
9)
</a></li>
1100 <li><a href=
"https://people.skolelinux.org/pere/blog/archive/2010/11/">November (
13)
</a></li>
1102 <li><a href=
"https://people.skolelinux.org/pere/blog/archive/2010/12/">December (
12)
</a></li>
1109 <li><a href=
"https://people.skolelinux.org/pere/blog/archive/2009/01/">January (
8)
</a></li>
1111 <li><a href=
"https://people.skolelinux.org/pere/blog/archive/2009/02/">February (
8)
</a></li>
1113 <li><a href=
"https://people.skolelinux.org/pere/blog/archive/2009/03/">March (
12)
</a></li>
1115 <li><a href=
"https://people.skolelinux.org/pere/blog/archive/2009/04/">April (
10)
</a></li>
1117 <li><a href=
"https://people.skolelinux.org/pere/blog/archive/2009/05/">May (
9)
</a></li>
1119 <li><a href=
"https://people.skolelinux.org/pere/blog/archive/2009/06/">June (
3)
</a></li>
1121 <li><a href=
"https://people.skolelinux.org/pere/blog/archive/2009/07/">July (
4)
</a></li>
1123 <li><a href=
"https://people.skolelinux.org/pere/blog/archive/2009/08/">August (
3)
</a></li>
1125 <li><a href=
"https://people.skolelinux.org/pere/blog/archive/2009/09/">September (
1)
</a></li>
1127 <li><a href=
"https://people.skolelinux.org/pere/blog/archive/2009/10/">October (
2)
</a></li>
1129 <li><a href=
"https://people.skolelinux.org/pere/blog/archive/2009/11/">November (
3)
</a></li>
1131 <li><a href=
"https://people.skolelinux.org/pere/blog/archive/2009/12/">December (
3)
</a></li>
1138 <li><a href=
"https://people.skolelinux.org/pere/blog/archive/2008/11/">November (
5)
</a></li>
1140 <li><a href=
"https://people.skolelinux.org/pere/blog/archive/2008/12/">December (
7)
</a></li>
1151 <li><a href=
"https://people.skolelinux.org/pere/blog/tags/3d-printer">3d-printer (
19)
</a></li>
1153 <li><a href=
"https://people.skolelinux.org/pere/blog/tags/amiga">amiga (
1)
</a></li>
1155 <li><a href=
"https://people.skolelinux.org/pere/blog/tags/aros">aros (
1)
</a></li>
1157 <li><a href=
"https://people.skolelinux.org/pere/blog/tags/bankid">bankid (
4)
</a></li>
1159 <li><a href=
"https://people.skolelinux.org/pere/blog/tags/betalkontant">betalkontant (
9)
</a></li>
1161 <li><a href=
"https://people.skolelinux.org/pere/blog/tags/bitcoin">bitcoin (
12)
</a></li>
1163 <li><a href=
"https://people.skolelinux.org/pere/blog/tags/bootsystem">bootsystem (
17)
</a></li>
1165 <li><a href=
"https://people.skolelinux.org/pere/blog/tags/bsa">bsa (
2)
</a></li>
1167 <li><a href=
"https://people.skolelinux.org/pere/blog/tags/chrpath">chrpath (
2)
</a></li>
1169 <li><a href=
"https://people.skolelinux.org/pere/blog/tags/debian">debian (
195)
</a></li>
1171 <li><a href=
"https://people.skolelinux.org/pere/blog/tags/debian edu">debian edu (
159)
</a></li>
1173 <li><a href=
"https://people.skolelinux.org/pere/blog/tags/debian-handbook">debian-handbook (
9)
</a></li>
1175 <li><a href=
"https://people.skolelinux.org/pere/blog/tags/digistan">digistan (
11)
</a></li>
1177 <li><a href=
"https://people.skolelinux.org/pere/blog/tags/dld">dld (
18)
</a></li>
1179 <li><a href=
"https://people.skolelinux.org/pere/blog/tags/docbook">docbook (
32)
</a></li>
1181 <li><a href=
"https://people.skolelinux.org/pere/blog/tags/drivstoffpriser">drivstoffpriser (
4)
</a></li>
1183 <li><a href=
"https://people.skolelinux.org/pere/blog/tags/english">english (
452)
</a></li>
1185 <li><a href=
"https://people.skolelinux.org/pere/blog/tags/fiksgatami">fiksgatami (
23)
</a></li>
1187 <li><a href=
"https://people.skolelinux.org/pere/blog/tags/fildeling">fildeling (
14)
</a></li>
1189 <li><a href=
"https://people.skolelinux.org/pere/blog/tags/freeculture">freeculture (
34)
</a></li>
1191 <li><a href=
"https://people.skolelinux.org/pere/blog/tags/freedombox">freedombox (
9)
</a></li>
1193 <li><a href=
"https://people.skolelinux.org/pere/blog/tags/frikanalen">frikanalen (
20)
</a></li>
1195 <li><a href=
"https://people.skolelinux.org/pere/blog/tags/h264">h264 (
20)
</a></li>
1197 <li><a href=
"https://people.skolelinux.org/pere/blog/tags/intervju">intervju (
43)
</a></li>
1199 <li><a href=
"https://people.skolelinux.org/pere/blog/tags/isenkram">isenkram (
16)
</a></li>
1201 <li><a href=
"https://people.skolelinux.org/pere/blog/tags/kart">kart (
23)
</a></li>
1203 <li><a href=
"https://people.skolelinux.org/pere/blog/tags/kodi">kodi (
6)
</a></li>
1205 <li><a href=
"https://people.skolelinux.org/pere/blog/tags/ldap">ldap (
9)
</a></li>
1207 <li><a href=
"https://people.skolelinux.org/pere/blog/tags/lego">lego (
5)
</a></li>
1209 <li><a href=
"https://people.skolelinux.org/pere/blog/tags/lenker">lenker (
8)
</a></li>
1211 <li><a href=
"https://people.skolelinux.org/pere/blog/tags/linuxcnc">linuxcnc (
5)
</a></li>
1213 <li><a href=
"https://people.skolelinux.org/pere/blog/tags/lsdvd">lsdvd (
2)
</a></li>
1215 <li><a href=
"https://people.skolelinux.org/pere/blog/tags/ltsp">ltsp (
1)
</a></li>
1217 <li><a href=
"https://people.skolelinux.org/pere/blog/tags/madewithcc">madewithcc (
3)
</a></li>
1219 <li><a href=
"https://people.skolelinux.org/pere/blog/tags/mesh network">mesh network (
8)
</a></li>
1221 <li><a href=
"https://people.skolelinux.org/pere/blog/tags/multimedia">multimedia (
46)
</a></li>
1223 <li><a href=
"https://people.skolelinux.org/pere/blog/tags/nice free software">nice free software (
15)
</a></li>
1225 <li><a href=
"https://people.skolelinux.org/pere/blog/tags/noark5">noark5 (
23)
</a></li>
1227 <li><a href=
"https://people.skolelinux.org/pere/blog/tags/norsk">norsk (
322)
</a></li>
1229 <li><a href=
"https://people.skolelinux.org/pere/blog/tags/nuug">nuug (
198)
</a></li>
1231 <li><a href=
"https://people.skolelinux.org/pere/blog/tags/offentlig innsyn">offentlig innsyn (
40)
</a></li>
1233 <li><a href=
"https://people.skolelinux.org/pere/blog/tags/open311">open311 (
2)
</a></li>
1235 <li><a href=
"https://people.skolelinux.org/pere/blog/tags/opensnitch">opensnitch (
4)
</a></li>
1237 <li><a href=
"https://people.skolelinux.org/pere/blog/tags/opphavsrett">opphavsrett (
75)
</a></li>
1239 <li><a href=
"https://people.skolelinux.org/pere/blog/tags/personvern">personvern (
114)
</a></li>
1241 <li><a href=
"https://people.skolelinux.org/pere/blog/tags/raid">raid (
2)
</a></li>
1243 <li><a href=
"https://people.skolelinux.org/pere/blog/tags/reactos">reactos (
1)
</a></li>
1245 <li><a href=
"https://people.skolelinux.org/pere/blog/tags/reprap">reprap (
11)
</a></li>
1247 <li><a href=
"https://people.skolelinux.org/pere/blog/tags/rfid">rfid (
3)
</a></li>
1249 <li><a href=
"https://people.skolelinux.org/pere/blog/tags/robot">robot (
17)
</a></li>
1251 <li><a href=
"https://people.skolelinux.org/pere/blog/tags/rss">rss (
1)
</a></li>
1253 <li><a href=
"https://people.skolelinux.org/pere/blog/tags/ruter">ruter (
7)
</a></li>
1255 <li><a href=
"https://people.skolelinux.org/pere/blog/tags/scraperwiki">scraperwiki (
2)
</a></li>
1257 <li><a href=
"https://people.skolelinux.org/pere/blog/tags/sikkerhet">sikkerhet (
59)
</a></li>
1259 <li><a href=
"https://people.skolelinux.org/pere/blog/tags/sitesummary">sitesummary (
4)
</a></li>
1261 <li><a href=
"https://people.skolelinux.org/pere/blog/tags/skepsis">skepsis (
5)
</a></li>
1263 <li><a href=
"https://people.skolelinux.org/pere/blog/tags/standard">standard (
74)
</a></li>
1265 <li><a href=
"https://people.skolelinux.org/pere/blog/tags/stavekontroll">stavekontroll (
7)
</a></li>
1267 <li><a href=
"https://people.skolelinux.org/pere/blog/tags/stortinget">stortinget (
14)
</a></li>
1269 <li><a href=
"https://people.skolelinux.org/pere/blog/tags/surveillance">surveillance (
64)
</a></li>
1271 <li><a href=
"https://people.skolelinux.org/pere/blog/tags/sysadmin">sysadmin (
5)
</a></li>
1273 <li><a href=
"https://people.skolelinux.org/pere/blog/tags/usenix">usenix (
2)
</a></li>
1275 <li><a href=
"https://people.skolelinux.org/pere/blog/tags/valg">valg (
9)
</a></li>
1277 <li><a href=
"https://people.skolelinux.org/pere/blog/tags/verkidetfri">verkidetfri (
20)
</a></li>
1279 <li><a href=
"https://people.skolelinux.org/pere/blog/tags/video">video (
79)
</a></li>
1281 <li><a href=
"https://people.skolelinux.org/pere/blog/tags/vitenskap">vitenskap (
4)
</a></li>
1283 <li><a href=
"https://people.skolelinux.org/pere/blog/tags/web">web (
42)
</a></li>
1289 <p style=
"text-align: right">
1290 Created by
<a href=
"http://steve.org.uk/Software/chronicle">Chronicle v4.6
</a>