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