]> pere.pagekite.me Git - homepage.git/blob - blog/archive/2023/04/index.html
Generated.
[homepage.git] / blog / archive / 2023 / 04 / 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: entries from April 2023</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="04.rss" type="application/rss+xml" />
10 </head>
11 <body>
12 <!-- XML FEED -->
13 <div class="title">
14 <h1>
15 <a href="https://people.skolelinux.org/pere/blog/">Petter Reinholdtsen</a>
16
17 </h1>
18
19 </div>
20
21
22 <h3>Entries from April 2023.</h3>
23
24 <div class="entry">
25 <div class="title">
26 <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>
27 </div>
28 <div class="date">
29 23rd April 2023
30 </div>
31 <div class="body">
32 <p>While visiting a convention during Easter, it occurred to me that
33 it would be great if I could have a digital Dictaphone with
34 transcribing capabilities, providing me with texts to cut-n-paste into
35 stuff I need to write. The background is that long drives often bring
36 up the urge to write on texts I am working on, which of course is out
37 of the question while driving. With the release of
38 <a href="https://github.com/openai/whisper/">OpenAI Whisper</a>, this
39 seem to be within reach with Free Software, so I decided to give it a
40 go. OpenAI Whisper is a Linux based neural network system to read in
41 audio files and provide text representation of the speech in that
42 audio recording. It handle multiple languages and according to its
43 creators even can translate into a different language than the spoken
44 one. I have not tested the latter feature. It can either use the CPU
45 or a GPU with CUDA support. As far as I can tell, CUDA in practice
46 limit that feature to NVidia graphics cards. I have few of those, as
47 they do not work great with free software drivers, and have not tested
48 the GPU option. While looking into the matter, I did discover some
49 work to provide CUDA support on non-NVidia GPUs, and some work with
50 the library used by Whisper to port it to other GPUs, but have not
51 spent much time looking into GPU support yet. I've so far used an old
52 X220 laptop as my test machine, and only transcribed using its
53 CPU.</p>
54
55 <p>As it from a privacy standpoint is unthinkable to use computers
56 under control of someone else (aka a "cloud" service) to transcribe
57 ones thoughts and personal notes, I want to run the transcribing
58 system locally on my own computers. The only sensible approach to me
59 is to make the effort I put into this available for any Linux user and
60 to upload the needed packages into Debian. Looking at Debian Bookworm, I
61 discovered that only three packages were missing,
62 <a href="https://bugs.debian.org/1034307">tiktoken</a>,
63 <a href="https://bugs.debian.org/1034144">triton</a>, and
64 <a href="https://bugs.debian.org/1034091">openai-whisper</a>. For a while
65 I also believed
66 <a href="https://bugs.debian.org/1034286">ffmpeg-python</a> was
67 needed, but as its
68 <a href="https://github.com/kkroening/ffmpeg-python/issues/760">upstream
69 seem to have vanished</a> I found it safer
70 <a href="https://github.com/openai/whisper/pull/1242">to rewrite
71 whisper</a> to stop depending on in than to introduce ffmpeg-python
72 into Debian. I decided to place these packages under the umbrella of
73 <a href="https://salsa.debian.org/deeplearning-team">the Debian Deep
74 Learning Team</a>, which seem like the best team to look after such
75 packages. Discussing the topic within the group also made me aware
76 that the triton package was already a future dependency of newer
77 versions of the torch package being planned, and would be needed after
78 Bookworm is released.</p>
79
80 <p>All required code packages have been now waiting in
81 <a href="https://ftp-master.debian.org/new.html">the Debian NEW
82 queue</a> since Wednesday, heading for Debian Experimental until
83 Bookworm is released. An unsolved issue is how to handle the neural
84 network models used by Whisper. The default behaviour of Whisper is
85 to require Internet connectivity and download the model requested to
86 <tt>~/.cache/whisper/</tt> on first invocation. This obviously would
87 fail <a href="https://people.debian.org/~bap/dfsg-faq.html">the
88 deserted island test of free software</a> as the Debian packages would
89 be unusable for someone stranded with only the Debian archive and solar
90 powered computer on a deserted island.</p>
91
92 <p>Because of this, I would love to include the models in the Debian
93 mirror system. This is problematic, as the models are very large
94 files, which would put a heavy strain on the Debian mirror
95 infrastructure around the globe. The strain would be even higher if
96 the models change often, which luckily as far as I can tell they do
97 not. The small model, which according to its creator is most useful
98 for English and in my experience is not doing a great job there
99 either, is 462 MiB (deb is 414 MiB). The medium model, which to me
100 seem to handle English speech fairly well is 1.5 GiB (deb is 1.3 GiB)
101 and the large model is 2.9 GiB (deb is 2.6 GiB). I would assume
102 everyone with enough resources would prefer to use the large model for
103 highest quality. I believe the models themselves would have to go
104 into the non-free part of the Debian archive, as they are not really
105 including any useful source code for updating the models. The
106 "source", aka the model training set, according to the creators
107 consist of "680,000 hours of multilingual and multitask supervised
108 data collected from the web", which to me reads material with both
109 unknown copyright terms, unavailable to the general public. In other
110 words, the source is not available according to the Debian Free
111 Software Guidelines and the model should be considered non-free.</p>
112
113 <p>I asked the Debian FTP masters for advice regarding uploading a
114 model package on their IRC channel, and based on the feedback there it
115 is still unclear to me if such package would be accepted into the
116 archive. In any case I wrote build rules for a
117 <a href="https://salsa.debian.org/deeplearning-team/openai-whisper-model">OpenAI
118 Whisper model package</a> and
119 <a href="https://github.com/openai/whisper/pull/1257">modified the
120 Whisper code base</a> to prefer shared files under <tt>/usr/</tt> and
121 <tt>/var/</tt> over user specific files in <tt>~/.cache/whisper/</tt>
122 to be able to use these model packages, to prepare for such
123 possibility. One solution might be to include only one of the models
124 (small or medium, I guess) in the Debian archive, and ask people to
125 download the others from the Internet. Not quite sure what to do
126 here, and advice is most welcome (use the debian-ai mailing list).</p>
127
128 <p>To make it easier to test the new packages while I wait for them to
129 clear the NEW queue, I created an APT source targeting bookworm. I
130 selected Bookworm instead of Bullseye, even though I know the latter
131 would reach more users, is that some of the required dependencies are
132 missing from Bullseye and I during this phase of testing did not want
133 to backport a lot of packages just to get up and running.</p>
134
135 <p>Here is a recipe to run as user root if you want to test OpenAI
136 Whisper using Debian packages on your Debian Bookworm installation,
137 first adding the APT repository GPG key to the list of trusted keys,
138 then setting up the APT repository and finally installing the packages
139 and one of the models:</p>
140
141 <p><pre>
142 curl https://geekbay.nuug.no/~pere/openai-whisper/D78F5C4796F353D211B119E28200D9B589641240.asc \
143 -o /etc/apt/trusted.gpg.d/pere-whisper.asc
144 mkdir -p /etc/apt/sources.list.d
145 cat > /etc/apt/sources.list.d/pere-whisper.list &lt;&lt;EOF
146 deb https://geekbay.nuug.no/~pere/openai-whisper/ bookworm main
147 deb-src https://geekbay.nuug.no/~pere/openai-whisper/ bookworm main
148 EOF
149 apt update
150 apt install openai-whisper
151 </pre></p>
152
153 <p>The package work for me, but have not yet been tested on any other
154 computer than my own. With it, I have been able to (badly) transcribe
155 a 2 minute 40 second Norwegian audio clip to test using the small
156 model. This took 11 minutes and around 2.2 GiB of RAM. Transcribing
157 the same file with the medium model gave a accurate text in 77 minutes
158 using around 5.2 GiB of RAM. My test machine had too little memory to
159 test the large model, which I believe require 11 GiB of RAM. In
160 short, this now work for me using Debian packages, and I hope it will
161 for you and everyone else once the packages enter Debian.</p>
162
163 <p>Now I can start on the audio recording part of this project.</p>
164
165 <p>As usual, if you use Bitcoin and want to show your support of my
166 activities, please send Bitcoin donations to my address
167 <b><a href="bitcoin:15oWEoG9dUPovwmUL9KWAnYRtNJEkP1u1b">15oWEoG9dUPovwmUL9KWAnYRtNJEkP1u1b</a></b>.</p>
168
169 </div>
170 <div class="tags">
171
172
173 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>.
174
175
176 </div>
177 </div>
178 <div class="padding"></div>
179
180 <div class="entry">
181 <div class="title">
182 <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>
183 </div>
184 <div class="date">
185 7th April 2023
186 </div>
187 <div class="body">
188 <p>Today I finally found time to track down a useful radio frequency
189 scanner for my software defined radio. Just for fun I tried to locate
190 the radios used in the areas, and a good start would be to scan all
191 the frequencies to see what is in use. I've tried to find a useful
192 program earlier, but ran out of time before I managed to find a useful
193 tool. This time I was more successful, and after a few false leads I
194 found a description of
195 <a href="https://www.kali.org/tools/rtlsdr-scanner/">rtlsdr-scanner
196 over at the Kali site</a>, and was able to track down
197 <a href="https://gitlab.com/kalilinux/packages/rtlsdr-scanner.git">the
198 Kali package git repository</a> to build a deb package for the
199 scanner. Sadly the package is missing from the Debian project itself,
200 at least in Debian Bullseye. Two runtime dependencies,
201 <a href="https://gitlab.com/kalilinux/packages/python-visvis.git">python-visvis</a>
202 and
203 <a href="https://gitlab.com/kalilinux/packages/python-rtlsdr.git">python-rtlsdr</a>
204 had to be built and installed separately. Luckily '<tt>gbp
205 buildpackage</tt>' handled them just fine and no further packages had
206 to be manually built. The end result worked out of the box after
207 installation.</p>
208
209 <p>My initial scans for FM channels worked just fine, so I knew the
210 scanner was functioning. But when I tried to scan every frequency
211 from 100 to 1000 MHz, the program stopped unexpectedly near the
212 completion. After some debugging I discovered USB software radio I
213 used rejected frequencies above 948 MHz, triggering a unreported
214 exception breaking the scan. Changing the scan to end at 957 worked
215 better. I similarly found the lower limit to be around 15, and ended
216 up with the following full scan:</p>
217
218 <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>
219
220 <p>Saving the scan did not work, but exporting it as a CSV file worked
221 just fine. I ended up with around 477k CVS lines with dB level for
222 the given frequency.</p>
223
224 <p>The save failure seem to be a missing UTF-8 encoding issue in the
225 python code. Will see if I can find time to send a patch
226 <a href="https://github.com/CdeMills/RTLSDR-Scanner/">upstream</a>
227 later to fix this exception:</p>
228
229 <pre>
230 Traceback (most recent call last):
231 File "/usr/lib/python3/dist-packages/rtlsdr_scanner/main_window.py", line 485, in __on_save
232 save_plot(fullName, self.scanInfo, self.spectrum, self.locations)
233 File "/usr/lib/python3/dist-packages/rtlsdr_scanner/file.py", line 408, in save_plot
234 handle.write(json.dumps(data, indent=4))
235 TypeError: a bytes-like object is required, not 'str'
236 Traceback (most recent call last):
237 File "/usr/lib/python3/dist-packages/rtlsdr_scanner/main_window.py", line 485, in __on_save
238 save_plot(fullName, self.scanInfo, self.spectrum, self.locations)
239 File "/usr/lib/python3/dist-packages/rtlsdr_scanner/file.py", line 408, in save_plot
240 handle.write(json.dumps(data, indent=4))
241 TypeError: a bytes-like object is required, not 'str'
242 </pre>
243
244 <p>As usual, if you use Bitcoin and want to show your support of my
245 activities, please send Bitcoin donations to my address
246 <b><a href="bitcoin:15oWEoG9dUPovwmUL9KWAnYRtNJEkP1u1b">15oWEoG9dUPovwmUL9KWAnYRtNJEkP1u1b</a></b>.</p>
247
248 </div>
249 <div class="tags">
250
251
252 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>.
253
254
255 </div>
256 </div>
257 <div class="padding"></div>
258
259 <p style="text-align: right;"><a href="04.rss"><img src="https://people.skolelinux.org/pere/blog/xml.gif" alt="RSS Feed" width="36" height="14" /></a></p>
260 <div id="sidebar">
261
262
263
264 <h2>Archive</h2>
265 <ul>
266
267 <li>2023
268 <ul>
269
270 <li><a href="https://people.skolelinux.org/pere/blog/archive/2023/01/">January (3)</a></li>
271
272 <li><a href="https://people.skolelinux.org/pere/blog/archive/2023/02/">February (1)</a></li>
273
274 <li><a href="https://people.skolelinux.org/pere/blog/archive/2023/04/">April (2)</a></li>
275
276 <li><a href="https://people.skolelinux.org/pere/blog/archive/2023/05/">May (3)</a></li>
277
278 <li><a href="https://people.skolelinux.org/pere/blog/archive/2023/06/">June (1)</a></li>
279
280 </ul></li>
281
282 <li>2022
283 <ul>
284
285 <li><a href="https://people.skolelinux.org/pere/blog/archive/2022/02/">February (1)</a></li>
286
287 <li><a href="https://people.skolelinux.org/pere/blog/archive/2022/03/">March (3)</a></li>
288
289 <li><a href="https://people.skolelinux.org/pere/blog/archive/2022/04/">April (2)</a></li>
290
291 <li><a href="https://people.skolelinux.org/pere/blog/archive/2022/06/">June (2)</a></li>
292
293 <li><a href="https://people.skolelinux.org/pere/blog/archive/2022/07/">July (1)</a></li>
294
295 <li><a href="https://people.skolelinux.org/pere/blog/archive/2022/09/">September (1)</a></li>
296
297 <li><a href="https://people.skolelinux.org/pere/blog/archive/2022/10/">October (1)</a></li>
298
299 <li><a href="https://people.skolelinux.org/pere/blog/archive/2022/12/">December (1)</a></li>
300
301 </ul></li>
302
303 <li>2021
304 <ul>
305
306 <li><a href="https://people.skolelinux.org/pere/blog/archive/2021/01/">January (2)</a></li>
307
308 <li><a href="https://people.skolelinux.org/pere/blog/archive/2021/02/">February (1)</a></li>
309
310 <li><a href="https://people.skolelinux.org/pere/blog/archive/2021/05/">May (1)</a></li>
311
312 <li><a href="https://people.skolelinux.org/pere/blog/archive/2021/06/">June (1)</a></li>
313
314 <li><a href="https://people.skolelinux.org/pere/blog/archive/2021/07/">July (3)</a></li>
315
316 <li><a href="https://people.skolelinux.org/pere/blog/archive/2021/08/">August (1)</a></li>
317
318 <li><a href="https://people.skolelinux.org/pere/blog/archive/2021/09/">September (1)</a></li>
319
320 <li><a href="https://people.skolelinux.org/pere/blog/archive/2021/10/">October (1)</a></li>
321
322 <li><a href="https://people.skolelinux.org/pere/blog/archive/2021/12/">December (1)</a></li>
323
324 </ul></li>
325
326 <li>2020
327 <ul>
328
329 <li><a href="https://people.skolelinux.org/pere/blog/archive/2020/02/">February (2)</a></li>
330
331 <li><a href="https://people.skolelinux.org/pere/blog/archive/2020/03/">March (2)</a></li>
332
333 <li><a href="https://people.skolelinux.org/pere/blog/archive/2020/04/">April (2)</a></li>
334
335 <li><a href="https://people.skolelinux.org/pere/blog/archive/2020/05/">May (3)</a></li>
336
337 <li><a href="https://people.skolelinux.org/pere/blog/archive/2020/06/">June (2)</a></li>
338
339 <li><a href="https://people.skolelinux.org/pere/blog/archive/2020/07/">July (1)</a></li>
340
341 <li><a href="https://people.skolelinux.org/pere/blog/archive/2020/09/">September (1)</a></li>
342
343 <li><a href="https://people.skolelinux.org/pere/blog/archive/2020/10/">October (1)</a></li>
344
345 <li><a href="https://people.skolelinux.org/pere/blog/archive/2020/11/">November (1)</a></li>
346
347 </ul></li>
348
349 <li>2019
350 <ul>
351
352 <li><a href="https://people.skolelinux.org/pere/blog/archive/2019/01/">January (4)</a></li>
353
354 <li><a href="https://people.skolelinux.org/pere/blog/archive/2019/02/">February (3)</a></li>
355
356 <li><a href="https://people.skolelinux.org/pere/blog/archive/2019/03/">March (3)</a></li>
357
358 <li><a href="https://people.skolelinux.org/pere/blog/archive/2019/05/">May (2)</a></li>
359
360 <li><a href="https://people.skolelinux.org/pere/blog/archive/2019/06/">June (5)</a></li>
361
362 <li><a href="https://people.skolelinux.org/pere/blog/archive/2019/07/">July (2)</a></li>
363
364 <li><a href="https://people.skolelinux.org/pere/blog/archive/2019/08/">August (1)</a></li>
365
366 <li><a href="https://people.skolelinux.org/pere/blog/archive/2019/09/">September (1)</a></li>
367
368 <li><a href="https://people.skolelinux.org/pere/blog/archive/2019/11/">November (1)</a></li>
369
370 <li><a href="https://people.skolelinux.org/pere/blog/archive/2019/12/">December (4)</a></li>
371
372 </ul></li>
373
374 <li>2018
375 <ul>
376
377 <li><a href="https://people.skolelinux.org/pere/blog/archive/2018/01/">January (1)</a></li>
378
379 <li><a href="https://people.skolelinux.org/pere/blog/archive/2018/02/">February (5)</a></li>
380
381 <li><a href="https://people.skolelinux.org/pere/blog/archive/2018/03/">March (5)</a></li>
382
383 <li><a href="https://people.skolelinux.org/pere/blog/archive/2018/04/">April (3)</a></li>
384
385 <li><a href="https://people.skolelinux.org/pere/blog/archive/2018/06/">June (2)</a></li>
386
387 <li><a href="https://people.skolelinux.org/pere/blog/archive/2018/07/">July (5)</a></li>
388
389 <li><a href="https://people.skolelinux.org/pere/blog/archive/2018/08/">August (3)</a></li>
390
391 <li><a href="https://people.skolelinux.org/pere/blog/archive/2018/09/">September (3)</a></li>
392
393 <li><a href="https://people.skolelinux.org/pere/blog/archive/2018/10/">October (5)</a></li>
394
395 <li><a href="https://people.skolelinux.org/pere/blog/archive/2018/11/">November (2)</a></li>
396
397 <li><a href="https://people.skolelinux.org/pere/blog/archive/2018/12/">December (4)</a></li>
398
399 </ul></li>
400
401 <li>2017
402 <ul>
403
404 <li><a href="https://people.skolelinux.org/pere/blog/archive/2017/01/">January (4)</a></li>
405
406 <li><a href="https://people.skolelinux.org/pere/blog/archive/2017/02/">February (3)</a></li>
407
408 <li><a href="https://people.skolelinux.org/pere/blog/archive/2017/03/">March (5)</a></li>
409
410 <li><a href="https://people.skolelinux.org/pere/blog/archive/2017/04/">April (2)</a></li>
411
412 <li><a href="https://people.skolelinux.org/pere/blog/archive/2017/06/">June (5)</a></li>
413
414 <li><a href="https://people.skolelinux.org/pere/blog/archive/2017/07/">July (1)</a></li>
415
416 <li><a href="https://people.skolelinux.org/pere/blog/archive/2017/08/">August (1)</a></li>
417
418 <li><a href="https://people.skolelinux.org/pere/blog/archive/2017/09/">September (3)</a></li>
419
420 <li><a href="https://people.skolelinux.org/pere/blog/archive/2017/10/">October (5)</a></li>
421
422 <li><a href="https://people.skolelinux.org/pere/blog/archive/2017/11/">November (3)</a></li>
423
424 <li><a href="https://people.skolelinux.org/pere/blog/archive/2017/12/">December (4)</a></li>
425
426 </ul></li>
427
428 <li>2016
429 <ul>
430
431 <li><a href="https://people.skolelinux.org/pere/blog/archive/2016/01/">January (3)</a></li>
432
433 <li><a href="https://people.skolelinux.org/pere/blog/archive/2016/02/">February (2)</a></li>
434
435 <li><a href="https://people.skolelinux.org/pere/blog/archive/2016/03/">March (3)</a></li>
436
437 <li><a href="https://people.skolelinux.org/pere/blog/archive/2016/04/">April (8)</a></li>
438
439 <li><a href="https://people.skolelinux.org/pere/blog/archive/2016/05/">May (8)</a></li>
440
441 <li><a href="https://people.skolelinux.org/pere/blog/archive/2016/06/">June (2)</a></li>
442
443 <li><a href="https://people.skolelinux.org/pere/blog/archive/2016/07/">July (2)</a></li>
444
445 <li><a href="https://people.skolelinux.org/pere/blog/archive/2016/08/">August (5)</a></li>
446
447 <li><a href="https://people.skolelinux.org/pere/blog/archive/2016/09/">September (2)</a></li>
448
449 <li><a href="https://people.skolelinux.org/pere/blog/archive/2016/10/">October (3)</a></li>
450
451 <li><a href="https://people.skolelinux.org/pere/blog/archive/2016/11/">November (8)</a></li>
452
453 <li><a href="https://people.skolelinux.org/pere/blog/archive/2016/12/">December (5)</a></li>
454
455 </ul></li>
456
457 <li>2015
458 <ul>
459
460 <li><a href="https://people.skolelinux.org/pere/blog/archive/2015/01/">January (7)</a></li>
461
462 <li><a href="https://people.skolelinux.org/pere/blog/archive/2015/02/">February (6)</a></li>
463
464 <li><a href="https://people.skolelinux.org/pere/blog/archive/2015/03/">March (1)</a></li>
465
466 <li><a href="https://people.skolelinux.org/pere/blog/archive/2015/04/">April (4)</a></li>
467
468 <li><a href="https://people.skolelinux.org/pere/blog/archive/2015/05/">May (3)</a></li>
469
470 <li><a href="https://people.skolelinux.org/pere/blog/archive/2015/06/">June (4)</a></li>
471
472 <li><a href="https://people.skolelinux.org/pere/blog/archive/2015/07/">July (6)</a></li>
473
474 <li><a href="https://people.skolelinux.org/pere/blog/archive/2015/08/">August (2)</a></li>
475
476 <li><a href="https://people.skolelinux.org/pere/blog/archive/2015/09/">September (2)</a></li>
477
478 <li><a href="https://people.skolelinux.org/pere/blog/archive/2015/10/">October (9)</a></li>
479
480 <li><a href="https://people.skolelinux.org/pere/blog/archive/2015/11/">November (6)</a></li>
481
482 <li><a href="https://people.skolelinux.org/pere/blog/archive/2015/12/">December (3)</a></li>
483
484 </ul></li>
485
486 <li>2014
487 <ul>
488
489 <li><a href="https://people.skolelinux.org/pere/blog/archive/2014/01/">January (2)</a></li>
490
491 <li><a href="https://people.skolelinux.org/pere/blog/archive/2014/02/">February (3)</a></li>
492
493 <li><a href="https://people.skolelinux.org/pere/blog/archive/2014/03/">March (8)</a></li>
494
495 <li><a href="https://people.skolelinux.org/pere/blog/archive/2014/04/">April (7)</a></li>
496
497 <li><a href="https://people.skolelinux.org/pere/blog/archive/2014/05/">May (1)</a></li>
498
499 <li><a href="https://people.skolelinux.org/pere/blog/archive/2014/06/">June (2)</a></li>
500
501 <li><a href="https://people.skolelinux.org/pere/blog/archive/2014/07/">July (2)</a></li>
502
503 <li><a href="https://people.skolelinux.org/pere/blog/archive/2014/08/">August (2)</a></li>
504
505 <li><a href="https://people.skolelinux.org/pere/blog/archive/2014/09/">September (5)</a></li>
506
507 <li><a href="https://people.skolelinux.org/pere/blog/archive/2014/10/">October (6)</a></li>
508
509 <li><a href="https://people.skolelinux.org/pere/blog/archive/2014/11/">November (3)</a></li>
510
511 <li><a href="https://people.skolelinux.org/pere/blog/archive/2014/12/">December (5)</a></li>
512
513 </ul></li>
514
515 <li>2013
516 <ul>
517
518 <li><a href="https://people.skolelinux.org/pere/blog/archive/2013/01/">January (11)</a></li>
519
520 <li><a href="https://people.skolelinux.org/pere/blog/archive/2013/02/">February (9)</a></li>
521
522 <li><a href="https://people.skolelinux.org/pere/blog/archive/2013/03/">March (9)</a></li>
523
524 <li><a href="https://people.skolelinux.org/pere/blog/archive/2013/04/">April (6)</a></li>
525
526 <li><a href="https://people.skolelinux.org/pere/blog/archive/2013/05/">May (9)</a></li>
527
528 <li><a href="https://people.skolelinux.org/pere/blog/archive/2013/06/">June (10)</a></li>
529
530 <li><a href="https://people.skolelinux.org/pere/blog/archive/2013/07/">July (7)</a></li>
531
532 <li><a href="https://people.skolelinux.org/pere/blog/archive/2013/08/">August (3)</a></li>
533
534 <li><a href="https://people.skolelinux.org/pere/blog/archive/2013/09/">September (5)</a></li>
535
536 <li><a href="https://people.skolelinux.org/pere/blog/archive/2013/10/">October (7)</a></li>
537
538 <li><a href="https://people.skolelinux.org/pere/blog/archive/2013/11/">November (9)</a></li>
539
540 <li><a href="https://people.skolelinux.org/pere/blog/archive/2013/12/">December (3)</a></li>
541
542 </ul></li>
543
544 <li>2012
545 <ul>
546
547 <li><a href="https://people.skolelinux.org/pere/blog/archive/2012/01/">January (7)</a></li>
548
549 <li><a href="https://people.skolelinux.org/pere/blog/archive/2012/02/">February (10)</a></li>
550
551 <li><a href="https://people.skolelinux.org/pere/blog/archive/2012/03/">March (17)</a></li>
552
553 <li><a href="https://people.skolelinux.org/pere/blog/archive/2012/04/">April (12)</a></li>
554
555 <li><a href="https://people.skolelinux.org/pere/blog/archive/2012/05/">May (12)</a></li>
556
557 <li><a href="https://people.skolelinux.org/pere/blog/archive/2012/06/">June (20)</a></li>
558
559 <li><a href="https://people.skolelinux.org/pere/blog/archive/2012/07/">July (17)</a></li>
560
561 <li><a href="https://people.skolelinux.org/pere/blog/archive/2012/08/">August (6)</a></li>
562
563 <li><a href="https://people.skolelinux.org/pere/blog/archive/2012/09/">September (9)</a></li>
564
565 <li><a href="https://people.skolelinux.org/pere/blog/archive/2012/10/">October (17)</a></li>
566
567 <li><a href="https://people.skolelinux.org/pere/blog/archive/2012/11/">November (10)</a></li>
568
569 <li><a href="https://people.skolelinux.org/pere/blog/archive/2012/12/">December (7)</a></li>
570
571 </ul></li>
572
573 <li>2011
574 <ul>
575
576 <li><a href="https://people.skolelinux.org/pere/blog/archive/2011/01/">January (16)</a></li>
577
578 <li><a href="https://people.skolelinux.org/pere/blog/archive/2011/02/">February (6)</a></li>
579
580 <li><a href="https://people.skolelinux.org/pere/blog/archive/2011/03/">March (6)</a></li>
581
582 <li><a href="https://people.skolelinux.org/pere/blog/archive/2011/04/">April (7)</a></li>
583
584 <li><a href="https://people.skolelinux.org/pere/blog/archive/2011/05/">May (3)</a></li>
585
586 <li><a href="https://people.skolelinux.org/pere/blog/archive/2011/06/">June (2)</a></li>
587
588 <li><a href="https://people.skolelinux.org/pere/blog/archive/2011/07/">July (7)</a></li>
589
590 <li><a href="https://people.skolelinux.org/pere/blog/archive/2011/08/">August (6)</a></li>
591
592 <li><a href="https://people.skolelinux.org/pere/blog/archive/2011/09/">September (4)</a></li>
593
594 <li><a href="https://people.skolelinux.org/pere/blog/archive/2011/10/">October (2)</a></li>
595
596 <li><a href="https://people.skolelinux.org/pere/blog/archive/2011/11/">November (3)</a></li>
597
598 <li><a href="https://people.skolelinux.org/pere/blog/archive/2011/12/">December (1)</a></li>
599
600 </ul></li>
601
602 <li>2010
603 <ul>
604
605 <li><a href="https://people.skolelinux.org/pere/blog/archive/2010/01/">January (2)</a></li>
606
607 <li><a href="https://people.skolelinux.org/pere/blog/archive/2010/02/">February (1)</a></li>
608
609 <li><a href="https://people.skolelinux.org/pere/blog/archive/2010/03/">March (3)</a></li>
610
611 <li><a href="https://people.skolelinux.org/pere/blog/archive/2010/04/">April (3)</a></li>
612
613 <li><a href="https://people.skolelinux.org/pere/blog/archive/2010/05/">May (9)</a></li>
614
615 <li><a href="https://people.skolelinux.org/pere/blog/archive/2010/06/">June (14)</a></li>
616
617 <li><a href="https://people.skolelinux.org/pere/blog/archive/2010/07/">July (12)</a></li>
618
619 <li><a href="https://people.skolelinux.org/pere/blog/archive/2010/08/">August (13)</a></li>
620
621 <li><a href="https://people.skolelinux.org/pere/blog/archive/2010/09/">September (7)</a></li>
622
623 <li><a href="https://people.skolelinux.org/pere/blog/archive/2010/10/">October (9)</a></li>
624
625 <li><a href="https://people.skolelinux.org/pere/blog/archive/2010/11/">November (13)</a></li>
626
627 <li><a href="https://people.skolelinux.org/pere/blog/archive/2010/12/">December (12)</a></li>
628
629 </ul></li>
630
631 <li>2009
632 <ul>
633
634 <li><a href="https://people.skolelinux.org/pere/blog/archive/2009/01/">January (8)</a></li>
635
636 <li><a href="https://people.skolelinux.org/pere/blog/archive/2009/02/">February (8)</a></li>
637
638 <li><a href="https://people.skolelinux.org/pere/blog/archive/2009/03/">March (12)</a></li>
639
640 <li><a href="https://people.skolelinux.org/pere/blog/archive/2009/04/">April (10)</a></li>
641
642 <li><a href="https://people.skolelinux.org/pere/blog/archive/2009/05/">May (9)</a></li>
643
644 <li><a href="https://people.skolelinux.org/pere/blog/archive/2009/06/">June (3)</a></li>
645
646 <li><a href="https://people.skolelinux.org/pere/blog/archive/2009/07/">July (4)</a></li>
647
648 <li><a href="https://people.skolelinux.org/pere/blog/archive/2009/08/">August (3)</a></li>
649
650 <li><a href="https://people.skolelinux.org/pere/blog/archive/2009/09/">September (1)</a></li>
651
652 <li><a href="https://people.skolelinux.org/pere/blog/archive/2009/10/">October (2)</a></li>
653
654 <li><a href="https://people.skolelinux.org/pere/blog/archive/2009/11/">November (3)</a></li>
655
656 <li><a href="https://people.skolelinux.org/pere/blog/archive/2009/12/">December (3)</a></li>
657
658 </ul></li>
659
660 <li>2008
661 <ul>
662
663 <li><a href="https://people.skolelinux.org/pere/blog/archive/2008/11/">November (5)</a></li>
664
665 <li><a href="https://people.skolelinux.org/pere/blog/archive/2008/12/">December (7)</a></li>
666
667 </ul></li>
668
669 </ul>
670
671
672
673 <h2>Tags</h2>
674 <ul>
675
676 <li><a href="https://people.skolelinux.org/pere/blog/tags/3d-printer">3d-printer (19)</a></li>
677
678 <li><a href="https://people.skolelinux.org/pere/blog/tags/amiga">amiga (1)</a></li>
679
680 <li><a href="https://people.skolelinux.org/pere/blog/tags/aros">aros (1)</a></li>
681
682 <li><a href="https://people.skolelinux.org/pere/blog/tags/bankid">bankid (4)</a></li>
683
684 <li><a href="https://people.skolelinux.org/pere/blog/tags/betalkontant">betalkontant (9)</a></li>
685
686 <li><a href="https://people.skolelinux.org/pere/blog/tags/bitcoin">bitcoin (12)</a></li>
687
688 <li><a href="https://people.skolelinux.org/pere/blog/tags/bootsystem">bootsystem (17)</a></li>
689
690 <li><a href="https://people.skolelinux.org/pere/blog/tags/bsa">bsa (2)</a></li>
691
692 <li><a href="https://people.skolelinux.org/pere/blog/tags/chrpath">chrpath (2)</a></li>
693
694 <li><a href="https://people.skolelinux.org/pere/blog/tags/debian">debian (194)</a></li>
695
696 <li><a href="https://people.skolelinux.org/pere/blog/tags/debian edu">debian edu (159)</a></li>
697
698 <li><a href="https://people.skolelinux.org/pere/blog/tags/debian-handbook">debian-handbook (9)</a></li>
699
700 <li><a href="https://people.skolelinux.org/pere/blog/tags/digistan">digistan (11)</a></li>
701
702 <li><a href="https://people.skolelinux.org/pere/blog/tags/dld">dld (18)</a></li>
703
704 <li><a href="https://people.skolelinux.org/pere/blog/tags/docbook">docbook (30)</a></li>
705
706 <li><a href="https://people.skolelinux.org/pere/blog/tags/drivstoffpriser">drivstoffpriser (4)</a></li>
707
708 <li><a href="https://people.skolelinux.org/pere/blog/tags/english">english (450)</a></li>
709
710 <li><a href="https://people.skolelinux.org/pere/blog/tags/fiksgatami">fiksgatami (23)</a></li>
711
712 <li><a href="https://people.skolelinux.org/pere/blog/tags/fildeling">fildeling (14)</a></li>
713
714 <li><a href="https://people.skolelinux.org/pere/blog/tags/freeculture">freeculture (34)</a></li>
715
716 <li><a href="https://people.skolelinux.org/pere/blog/tags/freedombox">freedombox (9)</a></li>
717
718 <li><a href="https://people.skolelinux.org/pere/blog/tags/frikanalen">frikanalen (20)</a></li>
719
720 <li><a href="https://people.skolelinux.org/pere/blog/tags/h264">h264 (20)</a></li>
721
722 <li><a href="https://people.skolelinux.org/pere/blog/tags/intervju">intervju (43)</a></li>
723
724 <li><a href="https://people.skolelinux.org/pere/blog/tags/isenkram">isenkram (16)</a></li>
725
726 <li><a href="https://people.skolelinux.org/pere/blog/tags/kart">kart (23)</a></li>
727
728 <li><a href="https://people.skolelinux.org/pere/blog/tags/kodi">kodi (4)</a></li>
729
730 <li><a href="https://people.skolelinux.org/pere/blog/tags/ldap">ldap (9)</a></li>
731
732 <li><a href="https://people.skolelinux.org/pere/blog/tags/lego">lego (5)</a></li>
733
734 <li><a href="https://people.skolelinux.org/pere/blog/tags/lenker">lenker (8)</a></li>
735
736 <li><a href="https://people.skolelinux.org/pere/blog/tags/linuxcnc">linuxcnc (5)</a></li>
737
738 <li><a href="https://people.skolelinux.org/pere/blog/tags/lsdvd">lsdvd (2)</a></li>
739
740 <li><a href="https://people.skolelinux.org/pere/blog/tags/ltsp">ltsp (1)</a></li>
741
742 <li><a href="https://people.skolelinux.org/pere/blog/tags/madewithcc">madewithcc (3)</a></li>
743
744 <li><a href="https://people.skolelinux.org/pere/blog/tags/mesh network">mesh network (8)</a></li>
745
746 <li><a href="https://people.skolelinux.org/pere/blog/tags/multimedia">multimedia (45)</a></li>
747
748 <li><a href="https://people.skolelinux.org/pere/blog/tags/nice free software">nice free software (15)</a></li>
749
750 <li><a href="https://people.skolelinux.org/pere/blog/tags/noark5">noark5 (23)</a></li>
751
752 <li><a href="https://people.skolelinux.org/pere/blog/tags/norsk">norsk (320)</a></li>
753
754 <li><a href="https://people.skolelinux.org/pere/blog/tags/nuug">nuug (198)</a></li>
755
756 <li><a href="https://people.skolelinux.org/pere/blog/tags/offentlig innsyn">offentlig innsyn (40)</a></li>
757
758 <li><a href="https://people.skolelinux.org/pere/blog/tags/open311">open311 (2)</a></li>
759
760 <li><a href="https://people.skolelinux.org/pere/blog/tags/opensnitch">opensnitch (4)</a></li>
761
762 <li><a href="https://people.skolelinux.org/pere/blog/tags/opphavsrett">opphavsrett (75)</a></li>
763
764 <li><a href="https://people.skolelinux.org/pere/blog/tags/personvern">personvern (114)</a></li>
765
766 <li><a href="https://people.skolelinux.org/pere/blog/tags/raid">raid (2)</a></li>
767
768 <li><a href="https://people.skolelinux.org/pere/blog/tags/reactos">reactos (1)</a></li>
769
770 <li><a href="https://people.skolelinux.org/pere/blog/tags/reprap">reprap (11)</a></li>
771
772 <li><a href="https://people.skolelinux.org/pere/blog/tags/rfid">rfid (3)</a></li>
773
774 <li><a href="https://people.skolelinux.org/pere/blog/tags/robot">robot (17)</a></li>
775
776 <li><a href="https://people.skolelinux.org/pere/blog/tags/rss">rss (1)</a></li>
777
778 <li><a href="https://people.skolelinux.org/pere/blog/tags/ruter">ruter (7)</a></li>
779
780 <li><a href="https://people.skolelinux.org/pere/blog/tags/scraperwiki">scraperwiki (2)</a></li>
781
782 <li><a href="https://people.skolelinux.org/pere/blog/tags/sikkerhet">sikkerhet (59)</a></li>
783
784 <li><a href="https://people.skolelinux.org/pere/blog/tags/sitesummary">sitesummary (4)</a></li>
785
786 <li><a href="https://people.skolelinux.org/pere/blog/tags/skepsis">skepsis (5)</a></li>
787
788 <li><a href="https://people.skolelinux.org/pere/blog/tags/standard">standard (74)</a></li>
789
790 <li><a href="https://people.skolelinux.org/pere/blog/tags/stavekontroll">stavekontroll (7)</a></li>
791
792 <li><a href="https://people.skolelinux.org/pere/blog/tags/stortinget">stortinget (14)</a></li>
793
794 <li><a href="https://people.skolelinux.org/pere/blog/tags/surveillance">surveillance (64)</a></li>
795
796 <li><a href="https://people.skolelinux.org/pere/blog/tags/sysadmin">sysadmin (5)</a></li>
797
798 <li><a href="https://people.skolelinux.org/pere/blog/tags/usenix">usenix (2)</a></li>
799
800 <li><a href="https://people.skolelinux.org/pere/blog/tags/valg">valg (9)</a></li>
801
802 <li><a href="https://people.skolelinux.org/pere/blog/tags/verkidetfri">verkidetfri (20)</a></li>
803
804 <li><a href="https://people.skolelinux.org/pere/blog/tags/video">video (78)</a></li>
805
806 <li><a href="https://people.skolelinux.org/pere/blog/tags/vitenskap">vitenskap (4)</a></li>
807
808 <li><a href="https://people.skolelinux.org/pere/blog/tags/web">web (42)</a></li>
809
810 </ul>
811
812
813 </div>
814 <p style="text-align: right">
815 Created by <a href="http://steve.org.uk/Software/chronicle">Chronicle v4.6</a>
816 </p>
817
818 </body>
819 </html>