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