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