]> 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>2024
268 <ul>
269
270 <li><a href="https://people.skolelinux.org/pere/blog/archive/2024/01/">January (1)</a></li>
271
272 <li><a href="https://people.skolelinux.org/pere/blog/archive/2024/02/">February (1)</a></li>
273
274 <li><a href="https://people.skolelinux.org/pere/blog/archive/2024/03/">March (1)</a></li>
275
276 </ul></li>
277
278 <li>2023
279 <ul>
280
281 <li><a href="https://people.skolelinux.org/pere/blog/archive/2023/01/">January (3)</a></li>
282
283 <li><a href="https://people.skolelinux.org/pere/blog/archive/2023/02/">February (1)</a></li>
284
285 <li><a href="https://people.skolelinux.org/pere/blog/archive/2023/04/">April (2)</a></li>
286
287 <li><a href="https://people.skolelinux.org/pere/blog/archive/2023/05/">May (3)</a></li>
288
289 <li><a href="https://people.skolelinux.org/pere/blog/archive/2023/06/">June (1)</a></li>
290
291 <li><a href="https://people.skolelinux.org/pere/blog/archive/2023/08/">August (1)</a></li>
292
293 <li><a href="https://people.skolelinux.org/pere/blog/archive/2023/09/">September (1)</a></li>
294
295 <li><a href="https://people.skolelinux.org/pere/blog/archive/2023/10/">October (1)</a></li>
296
297 <li><a href="https://people.skolelinux.org/pere/blog/archive/2023/11/">November (4)</a></li>
298
299 <li><a href="https://people.skolelinux.org/pere/blog/archive/2023/12/">December (1)</a></li>
300
301 </ul></li>
302
303 <li>2022
304 <ul>
305
306 <li><a href="https://people.skolelinux.org/pere/blog/archive/2022/02/">February (1)</a></li>
307
308 <li><a href="https://people.skolelinux.org/pere/blog/archive/2022/03/">March (3)</a></li>
309
310 <li><a href="https://people.skolelinux.org/pere/blog/archive/2022/04/">April (2)</a></li>
311
312 <li><a href="https://people.skolelinux.org/pere/blog/archive/2022/06/">June (2)</a></li>
313
314 <li><a href="https://people.skolelinux.org/pere/blog/archive/2022/07/">July (1)</a></li>
315
316 <li><a href="https://people.skolelinux.org/pere/blog/archive/2022/09/">September (1)</a></li>
317
318 <li><a href="https://people.skolelinux.org/pere/blog/archive/2022/10/">October (1)</a></li>
319
320 <li><a href="https://people.skolelinux.org/pere/blog/archive/2022/12/">December (1)</a></li>
321
322 </ul></li>
323
324 <li>2021
325 <ul>
326
327 <li><a href="https://people.skolelinux.org/pere/blog/archive/2021/01/">January (2)</a></li>
328
329 <li><a href="https://people.skolelinux.org/pere/blog/archive/2021/02/">February (1)</a></li>
330
331 <li><a href="https://people.skolelinux.org/pere/blog/archive/2021/05/">May (1)</a></li>
332
333 <li><a href="https://people.skolelinux.org/pere/blog/archive/2021/06/">June (1)</a></li>
334
335 <li><a href="https://people.skolelinux.org/pere/blog/archive/2021/07/">July (3)</a></li>
336
337 <li><a href="https://people.skolelinux.org/pere/blog/archive/2021/08/">August (1)</a></li>
338
339 <li><a href="https://people.skolelinux.org/pere/blog/archive/2021/09/">September (1)</a></li>
340
341 <li><a href="https://people.skolelinux.org/pere/blog/archive/2021/10/">October (1)</a></li>
342
343 <li><a href="https://people.skolelinux.org/pere/blog/archive/2021/12/">December (1)</a></li>
344
345 </ul></li>
346
347 <li>2020
348 <ul>
349
350 <li><a href="https://people.skolelinux.org/pere/blog/archive/2020/02/">February (2)</a></li>
351
352 <li><a href="https://people.skolelinux.org/pere/blog/archive/2020/03/">March (2)</a></li>
353
354 <li><a href="https://people.skolelinux.org/pere/blog/archive/2020/04/">April (2)</a></li>
355
356 <li><a href="https://people.skolelinux.org/pere/blog/archive/2020/05/">May (3)</a></li>
357
358 <li><a href="https://people.skolelinux.org/pere/blog/archive/2020/06/">June (2)</a></li>
359
360 <li><a href="https://people.skolelinux.org/pere/blog/archive/2020/07/">July (1)</a></li>
361
362 <li><a href="https://people.skolelinux.org/pere/blog/archive/2020/09/">September (1)</a></li>
363
364 <li><a href="https://people.skolelinux.org/pere/blog/archive/2020/10/">October (1)</a></li>
365
366 <li><a href="https://people.skolelinux.org/pere/blog/archive/2020/11/">November (1)</a></li>
367
368 </ul></li>
369
370 <li>2019
371 <ul>
372
373 <li><a href="https://people.skolelinux.org/pere/blog/archive/2019/01/">January (4)</a></li>
374
375 <li><a href="https://people.skolelinux.org/pere/blog/archive/2019/02/">February (3)</a></li>
376
377 <li><a href="https://people.skolelinux.org/pere/blog/archive/2019/03/">March (3)</a></li>
378
379 <li><a href="https://people.skolelinux.org/pere/blog/archive/2019/05/">May (2)</a></li>
380
381 <li><a href="https://people.skolelinux.org/pere/blog/archive/2019/06/">June (5)</a></li>
382
383 <li><a href="https://people.skolelinux.org/pere/blog/archive/2019/07/">July (2)</a></li>
384
385 <li><a href="https://people.skolelinux.org/pere/blog/archive/2019/08/">August (1)</a></li>
386
387 <li><a href="https://people.skolelinux.org/pere/blog/archive/2019/09/">September (1)</a></li>
388
389 <li><a href="https://people.skolelinux.org/pere/blog/archive/2019/11/">November (1)</a></li>
390
391 <li><a href="https://people.skolelinux.org/pere/blog/archive/2019/12/">December (4)</a></li>
392
393 </ul></li>
394
395 <li>2018
396 <ul>
397
398 <li><a href="https://people.skolelinux.org/pere/blog/archive/2018/01/">January (1)</a></li>
399
400 <li><a href="https://people.skolelinux.org/pere/blog/archive/2018/02/">February (5)</a></li>
401
402 <li><a href="https://people.skolelinux.org/pere/blog/archive/2018/03/">March (5)</a></li>
403
404 <li><a href="https://people.skolelinux.org/pere/blog/archive/2018/04/">April (3)</a></li>
405
406 <li><a href="https://people.skolelinux.org/pere/blog/archive/2018/06/">June (2)</a></li>
407
408 <li><a href="https://people.skolelinux.org/pere/blog/archive/2018/07/">July (5)</a></li>
409
410 <li><a href="https://people.skolelinux.org/pere/blog/archive/2018/08/">August (3)</a></li>
411
412 <li><a href="https://people.skolelinux.org/pere/blog/archive/2018/09/">September (3)</a></li>
413
414 <li><a href="https://people.skolelinux.org/pere/blog/archive/2018/10/">October (5)</a></li>
415
416 <li><a href="https://people.skolelinux.org/pere/blog/archive/2018/11/">November (2)</a></li>
417
418 <li><a href="https://people.skolelinux.org/pere/blog/archive/2018/12/">December (4)</a></li>
419
420 </ul></li>
421
422 <li>2017
423 <ul>
424
425 <li><a href="https://people.skolelinux.org/pere/blog/archive/2017/01/">January (4)</a></li>
426
427 <li><a href="https://people.skolelinux.org/pere/blog/archive/2017/02/">February (3)</a></li>
428
429 <li><a href="https://people.skolelinux.org/pere/blog/archive/2017/03/">March (5)</a></li>
430
431 <li><a href="https://people.skolelinux.org/pere/blog/archive/2017/04/">April (2)</a></li>
432
433 <li><a href="https://people.skolelinux.org/pere/blog/archive/2017/06/">June (5)</a></li>
434
435 <li><a href="https://people.skolelinux.org/pere/blog/archive/2017/07/">July (1)</a></li>
436
437 <li><a href="https://people.skolelinux.org/pere/blog/archive/2017/08/">August (1)</a></li>
438
439 <li><a href="https://people.skolelinux.org/pere/blog/archive/2017/09/">September (3)</a></li>
440
441 <li><a href="https://people.skolelinux.org/pere/blog/archive/2017/10/">October (5)</a></li>
442
443 <li><a href="https://people.skolelinux.org/pere/blog/archive/2017/11/">November (3)</a></li>
444
445 <li><a href="https://people.skolelinux.org/pere/blog/archive/2017/12/">December (4)</a></li>
446
447 </ul></li>
448
449 <li>2016
450 <ul>
451
452 <li><a href="https://people.skolelinux.org/pere/blog/archive/2016/01/">January (3)</a></li>
453
454 <li><a href="https://people.skolelinux.org/pere/blog/archive/2016/02/">February (2)</a></li>
455
456 <li><a href="https://people.skolelinux.org/pere/blog/archive/2016/03/">March (3)</a></li>
457
458 <li><a href="https://people.skolelinux.org/pere/blog/archive/2016/04/">April (8)</a></li>
459
460 <li><a href="https://people.skolelinux.org/pere/blog/archive/2016/05/">May (8)</a></li>
461
462 <li><a href="https://people.skolelinux.org/pere/blog/archive/2016/06/">June (2)</a></li>
463
464 <li><a href="https://people.skolelinux.org/pere/blog/archive/2016/07/">July (2)</a></li>
465
466 <li><a href="https://people.skolelinux.org/pere/blog/archive/2016/08/">August (5)</a></li>
467
468 <li><a href="https://people.skolelinux.org/pere/blog/archive/2016/09/">September (2)</a></li>
469
470 <li><a href="https://people.skolelinux.org/pere/blog/archive/2016/10/">October (3)</a></li>
471
472 <li><a href="https://people.skolelinux.org/pere/blog/archive/2016/11/">November (8)</a></li>
473
474 <li><a href="https://people.skolelinux.org/pere/blog/archive/2016/12/">December (5)</a></li>
475
476 </ul></li>
477
478 <li>2015
479 <ul>
480
481 <li><a href="https://people.skolelinux.org/pere/blog/archive/2015/01/">January (7)</a></li>
482
483 <li><a href="https://people.skolelinux.org/pere/blog/archive/2015/02/">February (6)</a></li>
484
485 <li><a href="https://people.skolelinux.org/pere/blog/archive/2015/03/">March (1)</a></li>
486
487 <li><a href="https://people.skolelinux.org/pere/blog/archive/2015/04/">April (4)</a></li>
488
489 <li><a href="https://people.skolelinux.org/pere/blog/archive/2015/05/">May (3)</a></li>
490
491 <li><a href="https://people.skolelinux.org/pere/blog/archive/2015/06/">June (4)</a></li>
492
493 <li><a href="https://people.skolelinux.org/pere/blog/archive/2015/07/">July (6)</a></li>
494
495 <li><a href="https://people.skolelinux.org/pere/blog/archive/2015/08/">August (2)</a></li>
496
497 <li><a href="https://people.skolelinux.org/pere/blog/archive/2015/09/">September (2)</a></li>
498
499 <li><a href="https://people.skolelinux.org/pere/blog/archive/2015/10/">October (9)</a></li>
500
501 <li><a href="https://people.skolelinux.org/pere/blog/archive/2015/11/">November (6)</a></li>
502
503 <li><a href="https://people.skolelinux.org/pere/blog/archive/2015/12/">December (3)</a></li>
504
505 </ul></li>
506
507 <li>2014
508 <ul>
509
510 <li><a href="https://people.skolelinux.org/pere/blog/archive/2014/01/">January (2)</a></li>
511
512 <li><a href="https://people.skolelinux.org/pere/blog/archive/2014/02/">February (3)</a></li>
513
514 <li><a href="https://people.skolelinux.org/pere/blog/archive/2014/03/">March (8)</a></li>
515
516 <li><a href="https://people.skolelinux.org/pere/blog/archive/2014/04/">April (7)</a></li>
517
518 <li><a href="https://people.skolelinux.org/pere/blog/archive/2014/05/">May (1)</a></li>
519
520 <li><a href="https://people.skolelinux.org/pere/blog/archive/2014/06/">June (2)</a></li>
521
522 <li><a href="https://people.skolelinux.org/pere/blog/archive/2014/07/">July (2)</a></li>
523
524 <li><a href="https://people.skolelinux.org/pere/blog/archive/2014/08/">August (2)</a></li>
525
526 <li><a href="https://people.skolelinux.org/pere/blog/archive/2014/09/">September (5)</a></li>
527
528 <li><a href="https://people.skolelinux.org/pere/blog/archive/2014/10/">October (6)</a></li>
529
530 <li><a href="https://people.skolelinux.org/pere/blog/archive/2014/11/">November (3)</a></li>
531
532 <li><a href="https://people.skolelinux.org/pere/blog/archive/2014/12/">December (5)</a></li>
533
534 </ul></li>
535
536 <li>2013
537 <ul>
538
539 <li><a href="https://people.skolelinux.org/pere/blog/archive/2013/01/">January (11)</a></li>
540
541 <li><a href="https://people.skolelinux.org/pere/blog/archive/2013/02/">February (9)</a></li>
542
543 <li><a href="https://people.skolelinux.org/pere/blog/archive/2013/03/">March (9)</a></li>
544
545 <li><a href="https://people.skolelinux.org/pere/blog/archive/2013/04/">April (6)</a></li>
546
547 <li><a href="https://people.skolelinux.org/pere/blog/archive/2013/05/">May (9)</a></li>
548
549 <li><a href="https://people.skolelinux.org/pere/blog/archive/2013/06/">June (10)</a></li>
550
551 <li><a href="https://people.skolelinux.org/pere/blog/archive/2013/07/">July (7)</a></li>
552
553 <li><a href="https://people.skolelinux.org/pere/blog/archive/2013/08/">August (3)</a></li>
554
555 <li><a href="https://people.skolelinux.org/pere/blog/archive/2013/09/">September (5)</a></li>
556
557 <li><a href="https://people.skolelinux.org/pere/blog/archive/2013/10/">October (7)</a></li>
558
559 <li><a href="https://people.skolelinux.org/pere/blog/archive/2013/11/">November (9)</a></li>
560
561 <li><a href="https://people.skolelinux.org/pere/blog/archive/2013/12/">December (3)</a></li>
562
563 </ul></li>
564
565 <li>2012
566 <ul>
567
568 <li><a href="https://people.skolelinux.org/pere/blog/archive/2012/01/">January (7)</a></li>
569
570 <li><a href="https://people.skolelinux.org/pere/blog/archive/2012/02/">February (10)</a></li>
571
572 <li><a href="https://people.skolelinux.org/pere/blog/archive/2012/03/">March (17)</a></li>
573
574 <li><a href="https://people.skolelinux.org/pere/blog/archive/2012/04/">April (12)</a></li>
575
576 <li><a href="https://people.skolelinux.org/pere/blog/archive/2012/05/">May (12)</a></li>
577
578 <li><a href="https://people.skolelinux.org/pere/blog/archive/2012/06/">June (20)</a></li>
579
580 <li><a href="https://people.skolelinux.org/pere/blog/archive/2012/07/">July (17)</a></li>
581
582 <li><a href="https://people.skolelinux.org/pere/blog/archive/2012/08/">August (6)</a></li>
583
584 <li><a href="https://people.skolelinux.org/pere/blog/archive/2012/09/">September (9)</a></li>
585
586 <li><a href="https://people.skolelinux.org/pere/blog/archive/2012/10/">October (17)</a></li>
587
588 <li><a href="https://people.skolelinux.org/pere/blog/archive/2012/11/">November (10)</a></li>
589
590 <li><a href="https://people.skolelinux.org/pere/blog/archive/2012/12/">December (7)</a></li>
591
592 </ul></li>
593
594 <li>2011
595 <ul>
596
597 <li><a href="https://people.skolelinux.org/pere/blog/archive/2011/01/">January (16)</a></li>
598
599 <li><a href="https://people.skolelinux.org/pere/blog/archive/2011/02/">February (6)</a></li>
600
601 <li><a href="https://people.skolelinux.org/pere/blog/archive/2011/03/">March (6)</a></li>
602
603 <li><a href="https://people.skolelinux.org/pere/blog/archive/2011/04/">April (7)</a></li>
604
605 <li><a href="https://people.skolelinux.org/pere/blog/archive/2011/05/">May (3)</a></li>
606
607 <li><a href="https://people.skolelinux.org/pere/blog/archive/2011/06/">June (2)</a></li>
608
609 <li><a href="https://people.skolelinux.org/pere/blog/archive/2011/07/">July (7)</a></li>
610
611 <li><a href="https://people.skolelinux.org/pere/blog/archive/2011/08/">August (6)</a></li>
612
613 <li><a href="https://people.skolelinux.org/pere/blog/archive/2011/09/">September (4)</a></li>
614
615 <li><a href="https://people.skolelinux.org/pere/blog/archive/2011/10/">October (2)</a></li>
616
617 <li><a href="https://people.skolelinux.org/pere/blog/archive/2011/11/">November (3)</a></li>
618
619 <li><a href="https://people.skolelinux.org/pere/blog/archive/2011/12/">December (1)</a></li>
620
621 </ul></li>
622
623 <li>2010
624 <ul>
625
626 <li><a href="https://people.skolelinux.org/pere/blog/archive/2010/01/">January (2)</a></li>
627
628 <li><a href="https://people.skolelinux.org/pere/blog/archive/2010/02/">February (1)</a></li>
629
630 <li><a href="https://people.skolelinux.org/pere/blog/archive/2010/03/">March (3)</a></li>
631
632 <li><a href="https://people.skolelinux.org/pere/blog/archive/2010/04/">April (3)</a></li>
633
634 <li><a href="https://people.skolelinux.org/pere/blog/archive/2010/05/">May (9)</a></li>
635
636 <li><a href="https://people.skolelinux.org/pere/blog/archive/2010/06/">June (14)</a></li>
637
638 <li><a href="https://people.skolelinux.org/pere/blog/archive/2010/07/">July (12)</a></li>
639
640 <li><a href="https://people.skolelinux.org/pere/blog/archive/2010/08/">August (13)</a></li>
641
642 <li><a href="https://people.skolelinux.org/pere/blog/archive/2010/09/">September (7)</a></li>
643
644 <li><a href="https://people.skolelinux.org/pere/blog/archive/2010/10/">October (9)</a></li>
645
646 <li><a href="https://people.skolelinux.org/pere/blog/archive/2010/11/">November (13)</a></li>
647
648 <li><a href="https://people.skolelinux.org/pere/blog/archive/2010/12/">December (12)</a></li>
649
650 </ul></li>
651
652 <li>2009
653 <ul>
654
655 <li><a href="https://people.skolelinux.org/pere/blog/archive/2009/01/">January (8)</a></li>
656
657 <li><a href="https://people.skolelinux.org/pere/blog/archive/2009/02/">February (8)</a></li>
658
659 <li><a href="https://people.skolelinux.org/pere/blog/archive/2009/03/">March (12)</a></li>
660
661 <li><a href="https://people.skolelinux.org/pere/blog/archive/2009/04/">April (10)</a></li>
662
663 <li><a href="https://people.skolelinux.org/pere/blog/archive/2009/05/">May (9)</a></li>
664
665 <li><a href="https://people.skolelinux.org/pere/blog/archive/2009/06/">June (3)</a></li>
666
667 <li><a href="https://people.skolelinux.org/pere/blog/archive/2009/07/">July (4)</a></li>
668
669 <li><a href="https://people.skolelinux.org/pere/blog/archive/2009/08/">August (3)</a></li>
670
671 <li><a href="https://people.skolelinux.org/pere/blog/archive/2009/09/">September (1)</a></li>
672
673 <li><a href="https://people.skolelinux.org/pere/blog/archive/2009/10/">October (2)</a></li>
674
675 <li><a href="https://people.skolelinux.org/pere/blog/archive/2009/11/">November (3)</a></li>
676
677 <li><a href="https://people.skolelinux.org/pere/blog/archive/2009/12/">December (3)</a></li>
678
679 </ul></li>
680
681 <li>2008
682 <ul>
683
684 <li><a href="https://people.skolelinux.org/pere/blog/archive/2008/11/">November (5)</a></li>
685
686 <li><a href="https://people.skolelinux.org/pere/blog/archive/2008/12/">December (7)</a></li>
687
688 </ul></li>
689
690 </ul>
691
692
693
694 <h2>Tags</h2>
695 <ul>
696
697 <li><a href="https://people.skolelinux.org/pere/blog/tags/3d-printer">3d-printer (19)</a></li>
698
699 <li><a href="https://people.skolelinux.org/pere/blog/tags/amiga">amiga (1)</a></li>
700
701 <li><a href="https://people.skolelinux.org/pere/blog/tags/aros">aros (1)</a></li>
702
703 <li><a href="https://people.skolelinux.org/pere/blog/tags/bankid">bankid (4)</a></li>
704
705 <li><a href="https://people.skolelinux.org/pere/blog/tags/betalkontant">betalkontant (9)</a></li>
706
707 <li><a href="https://people.skolelinux.org/pere/blog/tags/bitcoin">bitcoin (12)</a></li>
708
709 <li><a href="https://people.skolelinux.org/pere/blog/tags/bootsystem">bootsystem (17)</a></li>
710
711 <li><a href="https://people.skolelinux.org/pere/blog/tags/bsa">bsa (2)</a></li>
712
713 <li><a href="https://people.skolelinux.org/pere/blog/tags/chrpath">chrpath (3)</a></li>
714
715 <li><a href="https://people.skolelinux.org/pere/blog/tags/debian">debian (197)</a></li>
716
717 <li><a href="https://people.skolelinux.org/pere/blog/tags/debian edu">debian edu (159)</a></li>
718
719 <li><a href="https://people.skolelinux.org/pere/blog/tags/debian-handbook">debian-handbook (9)</a></li>
720
721 <li><a href="https://people.skolelinux.org/pere/blog/tags/digistan">digistan (11)</a></li>
722
723 <li><a href="https://people.skolelinux.org/pere/blog/tags/dld">dld (18)</a></li>
724
725 <li><a href="https://people.skolelinux.org/pere/blog/tags/docbook">docbook (32)</a></li>
726
727 <li><a href="https://people.skolelinux.org/pere/blog/tags/drivstoffpriser">drivstoffpriser (4)</a></li>
728
729 <li><a href="https://people.skolelinux.org/pere/blog/tags/english">english (457)</a></li>
730
731 <li><a href="https://people.skolelinux.org/pere/blog/tags/fiksgatami">fiksgatami (23)</a></li>
732
733 <li><a href="https://people.skolelinux.org/pere/blog/tags/fildeling">fildeling (14)</a></li>
734
735 <li><a href="https://people.skolelinux.org/pere/blog/tags/freeculture">freeculture (34)</a></li>
736
737 <li><a href="https://people.skolelinux.org/pere/blog/tags/freedombox">freedombox (9)</a></li>
738
739 <li><a href="https://people.skolelinux.org/pere/blog/tags/frikanalen">frikanalen (20)</a></li>
740
741 <li><a href="https://people.skolelinux.org/pere/blog/tags/h264">h264 (20)</a></li>
742
743 <li><a href="https://people.skolelinux.org/pere/blog/tags/intervju">intervju (43)</a></li>
744
745 <li><a href="https://people.skolelinux.org/pere/blog/tags/isenkram">isenkram (17)</a></li>
746
747 <li><a href="https://people.skolelinux.org/pere/blog/tags/kart">kart (23)</a></li>
748
749 <li><a href="https://people.skolelinux.org/pere/blog/tags/kodi">kodi (6)</a></li>
750
751 <li><a href="https://people.skolelinux.org/pere/blog/tags/ldap">ldap (9)</a></li>
752
753 <li><a href="https://people.skolelinux.org/pere/blog/tags/lego">lego (5)</a></li>
754
755 <li><a href="https://people.skolelinux.org/pere/blog/tags/lenker">lenker (8)</a></li>
756
757 <li><a href="https://people.skolelinux.org/pere/blog/tags/linuxcnc">linuxcnc (5)</a></li>
758
759 <li><a href="https://people.skolelinux.org/pere/blog/tags/lsdvd">lsdvd (2)</a></li>
760
761 <li><a href="https://people.skolelinux.org/pere/blog/tags/ltsp">ltsp (1)</a></li>
762
763 <li><a href="https://people.skolelinux.org/pere/blog/tags/madewithcc">madewithcc (3)</a></li>
764
765 <li><a href="https://people.skolelinux.org/pere/blog/tags/mesh network">mesh network (8)</a></li>
766
767 <li><a href="https://people.skolelinux.org/pere/blog/tags/multimedia">multimedia (46)</a></li>
768
769 <li><a href="https://people.skolelinux.org/pere/blog/tags/nice free software">nice free software (15)</a></li>
770
771 <li><a href="https://people.skolelinux.org/pere/blog/tags/noark5">noark5 (25)</a></li>
772
773 <li><a href="https://people.skolelinux.org/pere/blog/tags/norsk">norsk (324)</a></li>
774
775 <li><a href="https://people.skolelinux.org/pere/blog/tags/nuug">nuug (199)</a></li>
776
777 <li><a href="https://people.skolelinux.org/pere/blog/tags/offentlig innsyn">offentlig innsyn (41)</a></li>
778
779 <li><a href="https://people.skolelinux.org/pere/blog/tags/open311">open311 (2)</a></li>
780
781 <li><a href="https://people.skolelinux.org/pere/blog/tags/opensnitch">opensnitch (4)</a></li>
782
783 <li><a href="https://people.skolelinux.org/pere/blog/tags/opphavsrett">opphavsrett (76)</a></li>
784
785 <li><a href="https://people.skolelinux.org/pere/blog/tags/personvern">personvern (114)</a></li>
786
787 <li><a href="https://people.skolelinux.org/pere/blog/tags/raid">raid (3)</a></li>
788
789 <li><a href="https://people.skolelinux.org/pere/blog/tags/reactos">reactos (1)</a></li>
790
791 <li><a href="https://people.skolelinux.org/pere/blog/tags/reprap">reprap (11)</a></li>
792
793 <li><a href="https://people.skolelinux.org/pere/blog/tags/rfid">rfid (3)</a></li>
794
795 <li><a href="https://people.skolelinux.org/pere/blog/tags/robot">robot (17)</a></li>
796
797 <li><a href="https://people.skolelinux.org/pere/blog/tags/rss">rss (1)</a></li>
798
799 <li><a href="https://people.skolelinux.org/pere/blog/tags/ruter">ruter (7)</a></li>
800
801 <li><a href="https://people.skolelinux.org/pere/blog/tags/scraperwiki">scraperwiki (2)</a></li>
802
803 <li><a href="https://people.skolelinux.org/pere/blog/tags/sikkerhet">sikkerhet (60)</a></li>
804
805 <li><a href="https://people.skolelinux.org/pere/blog/tags/sitesummary">sitesummary (4)</a></li>
806
807 <li><a href="https://people.skolelinux.org/pere/blog/tags/skepsis">skepsis (5)</a></li>
808
809 <li><a href="https://people.skolelinux.org/pere/blog/tags/standard">standard (76)</a></li>
810
811 <li><a href="https://people.skolelinux.org/pere/blog/tags/stavekontroll">stavekontroll (7)</a></li>
812
813 <li><a href="https://people.skolelinux.org/pere/blog/tags/stortinget">stortinget (14)</a></li>
814
815 <li><a href="https://people.skolelinux.org/pere/blog/tags/surveillance">surveillance (65)</a></li>
816
817 <li><a href="https://people.skolelinux.org/pere/blog/tags/sysadmin">sysadmin (5)</a></li>
818
819 <li><a href="https://people.skolelinux.org/pere/blog/tags/usenix">usenix (2)</a></li>
820
821 <li><a href="https://people.skolelinux.org/pere/blog/tags/valg">valg (9)</a></li>
822
823 <li><a href="https://people.skolelinux.org/pere/blog/tags/verkidetfri">verkidetfri (22)</a></li>
824
825 <li><a href="https://people.skolelinux.org/pere/blog/tags/video">video (80)</a></li>
826
827 <li><a href="https://people.skolelinux.org/pere/blog/tags/vitenskap">vitenskap (4)</a></li>
828
829 <li><a href="https://people.skolelinux.org/pere/blog/tags/web">web (42)</a></li>
830
831 </ul>
832
833
834 </div>
835 <p style="text-align: right">
836 Created by <a href="http://steve.org.uk/Software/chronicle">Chronicle v4.6</a>
837 </p>
838
839 </body>
840 </html>