]> pere.pagekite.me Git - homepage.git/blob - blog/index.html
Generated.
[homepage.git] / blog / index.html
1 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
2 "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
3 <html xmlns="http://www.w3.org/1999/xhtml" dir="ltr">
4 <head>
5 <meta http-equiv="Content-Type" content="text/html;charset=utf-8" />
6 <title>Petter Reinholdtsen</title>
7 <link rel="stylesheet" type="text/css" media="screen" href="https://people.skolelinux.org/pere/blog/style.css" />
8 <link rel="stylesheet" type="text/css" media="screen" href="https://people.skolelinux.org/pere/blog/vim.css" />
9 <link rel="alternate" title="RSS Feed" href="https://people.skolelinux.org/pere/blog/index.rss" type="application/rss+xml" />
10 </head>
11 <body>
12 <div class="title">
13 <h1>
14 <a href="https://people.skolelinux.org/pere/blog/">Petter Reinholdtsen</a>
15
16 </h1>
17
18 </div>
19
20
21
22 <div class="entry">
23 <div class="title"><a href="https://people.skolelinux.org/pere/blog/What_did_I_learn_from_OpenSnitch_this_summer_.html">What did I learn from OpenSnitch this summer?</a></div>
24 <div class="date">11th June 2023</div>
25 <div class="body"><p>With yesterdays
26 <a href="https://www.debian.org/News/2023/20230610">release of Debian
27 12 Bookworm</a>, I am happy to know the
28 <a href="https://tracker.debian.org/pkg/opensnitch">the interactive
29 application firewall OpenSnitch</a> is available for a wider audience.
30 I have been running it for a few weeks now, and have been surprised
31 about some of the programs connecting to the Internet. Some programs
32 are obviously calling out from my machine, like the NTP network based
33 clock adjusting system and Tor to reach other Tor clients, but others
34 were more dubious. For example, the KDE Window manager try to look up
35 the host name in DNS, for no apparent reason, but if this lookup is
36 blocked the KDE desktop get periodically stuck when I use it. Another
37 surprise was how much Firefox call home directly to mozilla.com,
38 mozilla.net and googleapis.com, to mention a few, when I visit other
39 web pages. This direct connection happen even if I told Firefox to
40 always use a proxy, and the proxy setting is ignored for this traffic.
41 Other surprising connections come from audacity and dirmngr (I do not
42 use Gnome). It took some trial and error to get a good default set of
43 permissions. Without it, I would get popups asking for permissions at
44 any time, also the most inconvenient ones where I am in the middle of
45 a time sensitive gaming session.</p>
46
47 <p>I suspect some application developers should rethink when then need
48 to use network connections or DNS lookups, and recommend testing
49 OpenSnitch (only <tt>apt install opensnitch</tt> away in Debian
50 Bookworm) to locate and report any surprising Internet connections on
51 your desktop machine.</p>
52
53 <p>At the moment the upstream developer and Debian package maintainer
54 is working on making the system more reliable in Debian, by enabling
55 the eBPF kernel module to track processes and connections instead of
56 depending in content in /proc/. This should enter unstable fairly
57 soon.</p>
58
59 <p>As usual, if you use Bitcoin and want to show your support of my
60 activities, please send Bitcoin donations to my address
61 <b><a href="bitcoin:15oWEoG9dUPovwmUL9KWAnYRtNJEkP1u1b">15oWEoG9dUPovwmUL9KWAnYRtNJEkP1u1b</a></b>.</p>
62 </div>
63 <div class="tags">
64
65
66 Tags: <a href="https://people.skolelinux.org/pere/blog/tags/debian">debian</a>, <a href="https://people.skolelinux.org/pere/blog/tags/english">english</a>, <a href="https://people.skolelinux.org/pere/blog/tags/opensnitch">opensnitch</a>.
67
68
69 </div>
70 </div>
71 <div class="padding"></div>
72
73 <div class="entry">
74 <div class="title"><a href="https://people.skolelinux.org/pere/blog/wmbusmeters__parse_data_from_your_utility_meter___nice_free_software.html">wmbusmeters, parse data from your utility meter - nice free software</a></div>
75 <div class="date">19th May 2023</div>
76 <div class="body"><p>There is a European standard for reading utility meters like water,
77 gas, electricity or heat distribution meters. The
78 <a href="https://en.wikipedia.org/wiki/Meter-Bus">Meter-Bus standard
79 (EN 13757-2, EN 13757-3 and EN 137574)</a> provide a cross vendor way
80 to talk to and collect meter data. I ran into this standard when I
81 wanted to monitor some heat distribution meters, and managed to find
82 free software that could do the job. The meters in question broadcast
83 encrypted messages with meter information via radio, and the hardest
84 part was to track down the encryption keys from the vendor. With this
85 in place I could set up a MQTT gateway to submit the meter data for
86 graphing.</p>
87
88 <p>The free software systems in question,
89 <a href="https://tracker.debian.org/pkg/rtl-wmbus">rtl-wmbus</a> to
90 read the messages from a software defined radio, and
91 <a href="https://tracker.debian.org/pkg/wmbusmeters">wmbusmeters</a> to
92 decrypt and decode the content of the messages, is working very well
93 and allowe me to get frequent updates from my meters. I got in touch
94 with upstream last year to see if there was any interest in publishing
95 the packages via Debian. I was very happy to learn that Fredrik
96 Öhrström volunteered to maintain the packages, and I have since
97 assisted him in getting Debian package build rules in place as well as
98 sponsoring the packages into the Debian archive. Sadly we completed
99 it too late for them to become part of the next stable Debian release
100 (Bookworm). The wmbusmeters package just cleared the NEW queue. It
101 will need some work to fix a built problem, but I expect Fredrik will
102 find a solution soon.</p>
103
104 <p>If you got a infrastructure meter supporting the Meter Bus
105 standard, I strongly recommend having a look at these nice
106 packages.</p>
107
108 <p>As usual, if you use Bitcoin and want to show your support of my
109 activities, please send Bitcoin donations to my address
110 <b><a href="bitcoin:15oWEoG9dUPovwmUL9KWAnYRtNJEkP1u1b">15oWEoG9dUPovwmUL9KWAnYRtNJEkP1u1b</a></b>.</p>
111 </div>
112 <div class="tags">
113
114
115 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>.
116
117
118 </div>
119 </div>
120 <div class="padding"></div>
121
122 <div class="entry">
123 <div class="title"><a href="https://people.skolelinux.org/pere/blog/The_2023_LinuxCNC_Norwegian_developer_gathering.html">The 2023 LinuxCNC Norwegian developer gathering</a></div>
124 <div class="date">14th May 2023</div>
125 <div class="body"><p>The LinuxCNC project is making headway these days. A lot of
126 patches and issues have seen activity on
127 <a href="https://github.com/LinuxCNC/linuxcnc/">the project github
128 pages</a> recently. A few weeks ago there was a developer gathering
129 over at the <a href="https://tormach.com/">Tormach</a> headquarter in
130 Wisconsin, and now we are planning a new gathering in Norway. If you
131 wonder what LinuxCNC is, lets quote Wikipedia:</p>
132
133 <blockquote>
134 "LinuxCNC is a software system for numerical control of
135 machines such as milling machines, lathes, plasma cutters, routers,
136 cutting machines, robots and hexapods. It can control up to 9 axes or
137 joints of a CNC machine using G-code (RS-274NGC) as input. It has
138 several GUIs suited to specific kinds of usage (touch screen,
139 interactive development)."
140 </blockquote>
141
142 <p>The Norwegian developer gathering take place the weekend June 16th
143 to 18th this year, and is open for everyone interested in contributing
144 to LinuxCNC. Up to date information about the gathering can be found
145 in
146 <a href="https://sourceforge.net/p/emc/mailman/emc-developers/thread/sa64jp06nob.fsf%40hjemme.reinholdtsen.name/#msg37837251">the
147 developer mailing list thread</a> where the gathering was announced.
148 Thanks to the good people at
149 <a href="https://www.debian.org/">Debian</a>,
150 <a href="https://www.redpill-linpro.com/">Redpill-Linpro</a> and
151 <a href="https://www.nuugfoundation.no/no/">NUUG Foundation</a>, we
152 have enough sponsor funds to pay for food, and shelter for the people
153 traveling from afar to join us. If you would like to join the
154 gathering, get in touch.</p>
155
156 <p>As usual, if you use Bitcoin and want to show your support of my
157 activities, please send Bitcoin donations to my address
158 <b><a href="bitcoin:15oWEoG9dUPovwmUL9KWAnYRtNJEkP1u1b">15oWEoG9dUPovwmUL9KWAnYRtNJEkP1u1b</a></b>.</p>
159 </div>
160 <div class="tags">
161
162
163 Tags: <a href="https://people.skolelinux.org/pere/blog/tags/debian">debian</a>, <a href="https://people.skolelinux.org/pere/blog/tags/english">english</a>, <a href="https://people.skolelinux.org/pere/blog/tags/linuxcnc">linuxcnc</a>.
164
165
166 </div>
167 </div>
168 <div class="padding"></div>
169
170 <div class="entry">
171 <div class="title"><a href="https://people.skolelinux.org/pere/blog/OpenSnitch_in_Debian_ready_for_prime_time.html">OpenSnitch in Debian ready for prime time</a></div>
172 <div class="date">13th May 2023</div>
173 <div class="body"><p>A bit delayed,
174 <a href="https://tracker.debian.org/pkg/opensnitch">the interactive
175 application firewall OpenSnitch</a> package in Debian now got the
176 latest fixes ready for Debian Bookworm. Because it depend on a
177 package missing on some architectures, the autopkgtest check of the
178 testing migration script did not understand that the tests were
179 actually working, so the migration was delayed. A bug in the package
180 dependencies is also fixed, so those installing the firewall package
181 (opensnitch) now also get the GUI admin tool (python3-opensnitch-ui)
182 installed by default. I am very grateful to Gustavo Iñiguez Goya for
183 his work on getting the package ready for Debian Bookworm.</p>
184
185 <p>Armed with this package I have discovered some surprising
186 connections from programs I believed were able to work completly
187 offline, and it has already proven its worth, at least to me. If you
188 too want to get more familiar with the kind of programs using
189 Internett connections on your machine, I recommend testing <tt>apt
190 install opensnitch</tt> in Bookworm and see what you think.</p>
191
192 <p>The package is still not able to build its eBPF module within
193 Debian. Not sure how much work it would be to get it working, but
194 suspect some kernel related packages need to be extended with more
195 header files to get it working.</p>
196
197 <p>As usual, if you use Bitcoin and want to show your support of my
198 activities, please send Bitcoin donations to my address
199 <b><a href="bitcoin:15oWEoG9dUPovwmUL9KWAnYRtNJEkP1u1b">15oWEoG9dUPovwmUL9KWAnYRtNJEkP1u1b</a></b>.</p>
200 </div>
201 <div class="tags">
202
203
204 Tags: <a href="https://people.skolelinux.org/pere/blog/tags/debian">debian</a>, <a href="https://people.skolelinux.org/pere/blog/tags/english">english</a>, <a href="https://people.skolelinux.org/pere/blog/tags/opensnitch">opensnitch</a>.
205
206
207 </div>
208 </div>
209 <div class="padding"></div>
210
211 <div class="entry">
212 <div class="title"><a href="https://people.skolelinux.org/pere/blog/Speech_to_text__she_APTly_whispered__how_hard_can_it_be_.html">Speech to text, she APTly whispered, how hard can it be?</a></div>
213 <div class="date">23rd April 2023</div>
214 <div class="body"><p>While visiting a convention during Easter, it occurred to me that
215 it would be great if I could have a digital Dictaphone with
216 transcribing capabilities, providing me with texts to cut-n-paste into
217 stuff I need to write. The background is that long drives often bring
218 up the urge to write on texts I am working on, which of course is out
219 of the question while driving. With the release of
220 <a href="https://github.com/openai/whisper/">OpenAI Whisper</a>, this
221 seem to be within reach with Free Software, so I decided to give it a
222 go. OpenAI Whisper is a Linux based neural network system to read in
223 audio files and provide text representation of the speech in that
224 audio recording. It handle multiple languages and according to its
225 creators even can translate into a different language than the spoken
226 one. I have not tested the latter feature. It can either use the CPU
227 or a GPU with CUDA support. As far as I can tell, CUDA in practice
228 limit that feature to NVidia graphics cards. I have few of those, as
229 they do not work great with free software drivers, and have not tested
230 the GPU option. While looking into the matter, I did discover some
231 work to provide CUDA support on non-NVidia GPUs, and some work with
232 the library used by Whisper to port it to other GPUs, but have not
233 spent much time looking into GPU support yet. I've so far used an old
234 X220 laptop as my test machine, and only transcribed using its
235 CPU.</p>
236
237 <p>As it from a privacy standpoint is unthinkable to use computers
238 under control of someone else (aka a "cloud" service) to transcribe
239 ones thoughts and personal notes, I want to run the transcribing
240 system locally on my own computers. The only sensible approach to me
241 is to make the effort I put into this available for any Linux user and
242 to upload the needed packages into Debian. Looking at Debian Bookworm, I
243 discovered that only three packages were missing,
244 <a href="https://bugs.debian.org/1034307">tiktoken</a>,
245 <a href="https://bugs.debian.org/1034144">triton</a>, and
246 <a href="https://bugs.debian.org/1034091">openai-whisper</a>. For a while
247 I also believed
248 <a href="https://bugs.debian.org/1034286">ffmpeg-python</a> was
249 needed, but as its
250 <a href="https://github.com/kkroening/ffmpeg-python/issues/760">upstream
251 seem to have vanished</a> I found it safer
252 <a href="https://github.com/openai/whisper/pull/1242">to rewrite
253 whisper</a> to stop depending on in than to introduce ffmpeg-python
254 into Debian. I decided to place these packages under the umbrella of
255 <a href="https://salsa.debian.org/deeplearning-team">the Debian Deep
256 Learning Team</a>, which seem like the best team to look after such
257 packages. Discussing the topic within the group also made me aware
258 that the triton package was already a future dependency of newer
259 versions of the torch package being planned, and would be needed after
260 Bookworm is released.</p>
261
262 <p>All required code packages have been now waiting in
263 <a href="https://ftp-master.debian.org/new.html">the Debian NEW
264 queue</a> since Wednesday, heading for Debian Experimental until
265 Bookworm is released. An unsolved issue is how to handle the neural
266 network models used by Whisper. The default behaviour of Whisper is
267 to require Internet connectivity and download the model requested to
268 <tt>~/.cache/whisper/</tt> on first invocation. This obviously would
269 fail <a href="https://people.debian.org/~bap/dfsg-faq.html">the
270 deserted island test of free software</a> as the Debian packages would
271 be unusable for someone stranded with only the Debian archive and solar
272 powered computer on a deserted island.</p>
273
274 <p>Because of this, I would love to include the models in the Debian
275 mirror system. This is problematic, as the models are very large
276 files, which would put a heavy strain on the Debian mirror
277 infrastructure around the globe. The strain would be even higher if
278 the models change often, which luckily as far as I can tell they do
279 not. The small model, which according to its creator is most useful
280 for English and in my experience is not doing a great job there
281 either, is 462 MiB (deb is 414 MiB). The medium model, which to me
282 seem to handle English speech fairly well is 1.5 GiB (deb is 1.3 GiB)
283 and the large model is 2.9 GiB (deb is 2.6 GiB). I would assume
284 everyone with enough resources would prefer to use the large model for
285 highest quality. I believe the models themselves would have to go
286 into the non-free part of the Debian archive, as they are not really
287 including any useful source code for updating the models. The
288 "source", aka the model training set, according to the creators
289 consist of "680,000 hours of multilingual and multitask supervised
290 data collected from the web", which to me reads material with both
291 unknown copyright terms, unavailable to the general public. In other
292 words, the source is not available according to the Debian Free
293 Software Guidelines and the model should be considered non-free.</p>
294
295 <p>I asked the Debian FTP masters for advice regarding uploading a
296 model package on their IRC channel, and based on the feedback there it
297 is still unclear to me if such package would be accepted into the
298 archive. In any case I wrote build rules for a
299 <a href="https://salsa.debian.org/deeplearning-team/openai-whisper-model">OpenAI
300 Whisper model package</a> and
301 <a href="https://github.com/openai/whisper/pull/1257">modified the
302 Whisper code base</a> to prefer shared files under <tt>/usr/</tt> and
303 <tt>/var/</tt> over user specific files in <tt>~/.cache/whisper/</tt>
304 to be able to use these model packages, to prepare for such
305 possibility. One solution might be to include only one of the models
306 (small or medium, I guess) in the Debian archive, and ask people to
307 download the others from the Internet. Not quite sure what to do
308 here, and advice is most welcome (use the debian-ai mailing list).</p>
309
310 <p>To make it easier to test the new packages while I wait for them to
311 clear the NEW queue, I created an APT source targeting bookworm. I
312 selected Bookworm instead of Bullseye, even though I know the latter
313 would reach more users, is that some of the required dependencies are
314 missing from Bullseye and I during this phase of testing did not want
315 to backport a lot of packages just to get up and running.</p>
316
317 <p>Here is a recipe to run as user root if you want to test OpenAI
318 Whisper using Debian packages on your Debian Bookworm installation,
319 first adding the APT repository GPG key to the list of trusted keys,
320 then setting up the APT repository and finally installing the packages
321 and one of the models:</p>
322
323 <p><pre>
324 curl https://geekbay.nuug.no/~pere/openai-whisper/D78F5C4796F353D211B119E28200D9B589641240.asc \
325 -o /etc/apt/trusted.gpg.d/pere-whisper.asc
326 mkdir -p /etc/apt/sources.list.d
327 cat > /etc/apt/sources.list.d/pere-whisper.list &lt;&lt;EOF
328 deb https://geekbay.nuug.no/~pere/openai-whisper/ bookworm main
329 deb-src https://geekbay.nuug.no/~pere/openai-whisper/ bookworm main
330 EOF
331 apt update
332 apt install openai-whisper
333 </pre></p>
334
335 <p>The package work for me, but have not yet been tested on any other
336 computer than my own. With it, I have been able to (badly) transcribe
337 a 2 minute 40 second Norwegian audio clip to test using the small
338 model. This took 11 minutes and around 2.2 GiB of RAM. Transcribing
339 the same file with the medium model gave a accurate text in 77 minutes
340 using around 5.2 GiB of RAM. My test machine had too little memory to
341 test the large model, which I believe require 11 GiB of RAM. In
342 short, this now work for me using Debian packages, and I hope it will
343 for you and everyone else once the packages enter Debian.</p>
344
345 <p>Now I can start on the audio recording part of this project.</p>
346
347 <p>As usual, if you use Bitcoin and want to show your support of my
348 activities, please send Bitcoin donations to my address
349 <b><a href="bitcoin:15oWEoG9dUPovwmUL9KWAnYRtNJEkP1u1b">15oWEoG9dUPovwmUL9KWAnYRtNJEkP1u1b</a></b>.</p>
350 </div>
351 <div class="tags">
352
353
354 Tags: <a href="https://people.skolelinux.org/pere/blog/tags/debian">debian</a>, <a href="https://people.skolelinux.org/pere/blog/tags/english">english</a>, <a href="https://people.skolelinux.org/pere/blog/tags/multimedia">multimedia</a>, <a href="https://people.skolelinux.org/pere/blog/tags/video">video</a>.
355
356
357 </div>
358 </div>
359 <div class="padding"></div>
360
361 <div class="entry">
362 <div class="title"><a href="https://people.skolelinux.org/pere/blog/rtlsdr_scanner__software_defined_radio_frequency_scanner_for_Linux____nice_free_software.html">rtlsdr-scanner, software defined radio frequency scanner for Linux - nice free software</a></div>
363 <div class="date"> 7th April 2023</div>
364 <div class="body"><p>Today I finally found time to track down a useful radio frequency
365 scanner for my software defined radio. Just for fun I tried to locate
366 the radios used in the areas, and a good start would be to scan all
367 the frequencies to see what is in use. I've tried to find a useful
368 program earlier, but ran out of time before I managed to find a useful
369 tool. This time I was more successful, and after a few false leads I
370 found a description of
371 <a href="https://www.kali.org/tools/rtlsdr-scanner/">rtlsdr-scanner
372 over at the Kali site</a>, and was able to track down
373 <a href="https://gitlab.com/kalilinux/packages/rtlsdr-scanner.git">the
374 Kali package git repository</a> to build a deb package for the
375 scanner. Sadly the package is missing from the Debian project itself,
376 at least in Debian Bullseye. Two runtime dependencies,
377 <a href="https://gitlab.com/kalilinux/packages/python-visvis.git">python-visvis</a>
378 and
379 <a href="https://gitlab.com/kalilinux/packages/python-rtlsdr.git">python-rtlsdr</a>
380 had to be built and installed separately. Luckily '<tt>gbp
381 buildpackage</tt>' handled them just fine and no further packages had
382 to be manually built. The end result worked out of the box after
383 installation.</p>
384
385 <p>My initial scans for FM channels worked just fine, so I knew the
386 scanner was functioning. But when I tried to scan every frequency
387 from 100 to 1000 MHz, the program stopped unexpectedly near the
388 completion. After some debugging I discovered USB software radio I
389 used rejected frequencies above 948 MHz, triggering a unreported
390 exception breaking the scan. Changing the scan to end at 957 worked
391 better. I similarly found the lower limit to be around 15, and ended
392 up with the following full scan:</p>
393
394 <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>
395
396 <p>Saving the scan did not work, but exporting it as a CSV file worked
397 just fine. I ended up with around 477k CVS lines with dB level for
398 the given frequency.</p>
399
400 <p>The save failure seem to be a missing UTF-8 encoding issue in the
401 python code. Will see if I can find time to send a patch
402 <a href="https://github.com/CdeMills/RTLSDR-Scanner/">upstream</a>
403 later to fix this exception:</p>
404
405 <pre>
406 Traceback (most recent call last):
407 File "/usr/lib/python3/dist-packages/rtlsdr_scanner/main_window.py", line 485, in __on_save
408 save_plot(fullName, self.scanInfo, self.spectrum, self.locations)
409 File "/usr/lib/python3/dist-packages/rtlsdr_scanner/file.py", line 408, in save_plot
410 handle.write(json.dumps(data, indent=4))
411 TypeError: a bytes-like object is required, not 'str'
412 Traceback (most recent call last):
413 File "/usr/lib/python3/dist-packages/rtlsdr_scanner/main_window.py", line 485, in __on_save
414 save_plot(fullName, self.scanInfo, self.spectrum, self.locations)
415 File "/usr/lib/python3/dist-packages/rtlsdr_scanner/file.py", line 408, in save_plot
416 handle.write(json.dumps(data, indent=4))
417 TypeError: a bytes-like object is required, not 'str'
418 </pre>
419
420 <p>As usual, if you use Bitcoin and want to show your support of my
421 activities, please send Bitcoin donations to my address
422 <b><a href="bitcoin:15oWEoG9dUPovwmUL9KWAnYRtNJEkP1u1b">15oWEoG9dUPovwmUL9KWAnYRtNJEkP1u1b</a></b>.</p>
423 </div>
424 <div class="tags">
425
426
427 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>.
428
429
430 </div>
431 </div>
432 <div class="padding"></div>
433
434 <div class="entry">
435 <div class="title"><a href="https://people.skolelinux.org/pere/blog/OpenSnitch_available_in_Debian_Sid_and_Bookworm.html">OpenSnitch available in Debian Sid and Bookworm</a></div>
436 <div class="date">25th February 2023</div>
437 <div class="body"><p>Thanks to the efforts of the OpenSnitch lead developer Gustavo
438 Iñiguez Goya allowing me to sponsor the upload,
439 <a href="https://tracker.debian.org/pkg/opensnitch">the interactive
440 application firewall OpenSnitch</a> is now available in Debian
441 Testing, soon to become the next stable release of Debian.</p>
442
443 <p>This is a package which set up a network firewall on one or more
444 machines, which is controlled by a graphical user interface that will
445 ask the user if a program should be allowed to connect to the local
446 network or the Internet. If some background daemon is trying to dial
447 home, it can be blocked from doing so with a simple mouse click, or by
448 default simply by not doing anything when the GUI question dialog pop
449 up. A list of all programs discovered using the network is provided
450 in the GUI, giving the user an overview of how the machine(s) programs
451 use the network.</p>
452
453 <p>OpenSnitch was uploaded for NEW processing about a month ago, and I
454 had little hope of it getting accepted and shaping up in time for the
455 package freeze, but the Debian ftpmasters proved to be amazingly quick
456 at checking out the package and it was accepted into the archive about
457 week after the first upload. It is now team maintained under the Go
458 language team umbrella. A few fixes to the default setup is only in
459 Sid, and should migrate to Testing/Bookworm in a week.</p>
460
461 <p>During testing I ran into an
462 <a href="https://github.com/evilsocket/opensnitch/issues/813">issue
463 with Minecraft server broadcasts disappearing</a>, which was quickly
464 resolved by the developer with a patch and a proposed configuration
465 change. I've been told this was caused by the Debian packages default
466 use if /proc/ information to track down kernel status, instead of the
467 newer eBPF module that can be used. The reason is simply that
468 upstream and I have failed to find a way to build the eBPF modules for
469 OpenSnitch without a complete configured Linux kernel source tree,
470 which as far as we can tell is unavailable as a build dependency in
471 Debian. We tried unsuccessfully so far to use the kernel-headers
472 package. It would be great if someone could provide some clues how to
473 build eBPF modules on build daemons in Debian, possibly without the full
474 kernel source.</p>
475
476 <p>As usual, if you use Bitcoin and want to show your support of my
477 activities, please send Bitcoin donations to my address
478 <b><a href="bitcoin:15oWEoG9dUPovwmUL9KWAnYRtNJEkP1u1b">15oWEoG9dUPovwmUL9KWAnYRtNJEkP1u1b</a></b>.</p>
479 </div>
480 <div class="tags">
481
482
483 Tags: <a href="https://people.skolelinux.org/pere/blog/tags/debian">debian</a>, <a href="https://people.skolelinux.org/pere/blog/tags/english">english</a>, <a href="https://people.skolelinux.org/pere/blog/tags/opensnitch">opensnitch</a>.
484
485
486 </div>
487 </div>
488 <div class="padding"></div>
489
490 <div class="entry">
491 <div class="title"><a href="https://people.skolelinux.org/pere/blog/Is_the_desktop_recommending_your_program_for_opening_its_files_.html">Is the desktop recommending your program for opening its files?</a></div>
492 <div class="date">29th January 2023</div>
493 <div class="body"><p>Linux desktop systems
494 <a href="https://specifications.freedesktop.org/basedir-spec/basedir-spec-latest.html">have
495 standardized</a> how programs present themselves to the desktop
496 system. If a package include a .desktop file in
497 /usr/share/applications/, Gnome, KDE, LXDE, Xfce and the other desktop
498 environments will pick up the file and use its content to generate the
499 menu of available programs in the system. A lesser known fact is that
500 a package can also explain to the desktop system how to recognize the
501 files created by the program in question, and use it to open these
502 files on request, for example via a GUI file browser.</p>
503
504 <p>A while back I ran into a package that did not tell the desktop
505 system how to recognize its files and was not used to open its files
506 in the file browser and fixed it. In the process I wrote a simple
507 debian/tests/ script to ensure the setup keep working. It might be
508 useful for other packages too, to ensure any future version of the
509 package keep handling its own files.</p>
510
511 <p>For this to work the file format need a useful MIME type that can
512 be used to identify the format. If the file format do not yet have a
513 MIME type, it should define one and preferably also
514 <a href="https://www.iana.org/assignments/media-types/media-types.xhtml">register
515 it with IANA</a> to ensure the MIME type string is reserved.</p>
516
517 <p>The script uses the <tt>xdg-mime</tt> program from xdg-utils to
518 query the database of standardized package information and ensure it
519 return sensible values. It also need the location of an example file
520 for xdg-mime to guess the format of.</p>
521
522 <pre>
523 #!/bin/sh
524 #
525 # Author: Petter Reinholdtsen
526 # License: GPL v2 or later at your choice.
527 #
528 # Validate the MIME setup, making sure motor types have
529 # application/vnd.openmotor+yaml associated with them and is connected
530 # to the openmotor desktop file.
531
532 retval=0
533
534 mimetype="application/vnd.openmotor+yaml"
535 testfile="test/data/real/o3100/motor.ric"
536 mydesktopfile="openmotor.desktop"
537
538 filemime="$(xdg-mime query filetype "$testfile")"
539
540 if [ "$mimetype" != "$filemime" ] ; then
541 retval=1
542 echo "error: xdg-mime claim motor file MIME type is $filemine, not $mimetype"
543 else
544 echo "success: xdg-mime report correct mime type $mimetype for motor file"
545 fi
546
547 desktop=$(xdg-mime query default "$mimetype")
548
549 if [ "$mydesktopfile" != "$desktop" ]; then
550 retval=1
551 echo "error: xdg-mime claim motor file should be handled by $desktop, not $mydesktopfile"
552 else
553 echo "success: xdg-mime agree motor file should be handled by $mydesktopfile"
554 fi
555
556 exit $retval
557 </pre>
558
559 <p>It is a simple way to ensure your users are not very surprised when
560 they try to open one of your file formats in their file browser.</p>
561
562 <p>As usual, if you use Bitcoin and want to show your support of my
563 activities, please send Bitcoin donations to my address
564 <b><a href="bitcoin:15oWEoG9dUPovwmUL9KWAnYRtNJEkP1u1b">15oWEoG9dUPovwmUL9KWAnYRtNJEkP1u1b</a></b>.</p>
565 </div>
566 <div class="tags">
567
568
569 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>.
570
571
572 </div>
573 </div>
574 <div class="padding"></div>
575
576 <div class="entry">
577 <div class="title"><a href="https://people.skolelinux.org/pere/blog/Opensnitch__the_application_level_interactive_firewall__heading_into_the_Debian_archive.html">Opensnitch, the application level interactive firewall, heading into the Debian archive</a></div>
578 <div class="date">22nd January 2023</div>
579 <div class="body"><p>While reading a
580 <a href="https://sneak.berlin/20230115/macos-scans-your-local-files-now/">blog
581 post claiming MacOS X recently started scanning local files and
582 reporting information about them to Apple</a>, even on a machine where
583 all such callback features had been disabled, I came across a
584 description of the Little Snitch application for MacOS X. It seemed
585 like a very nice tool to have in the tool box, and I decided to see if
586 something similar was available for Linux.</p>
587
588 <p>It did not take long to find
589 <a href="https://github.com/evilsocket/opensnitch">the OpenSnitch
590 package</a>, which has been in development since 2017, and now is in
591 version 1.5.0. It has had a
592 <a href="https://bugs.debian.org/909567">request for Debian
593 packaging</a> since 2018, but no-one completed the job so far. Just
594 for fun, I decided to see if I could help, and I was very happy to
595 discover that
596 <a href="https://github.com/evilsocket/opensnitch/issues/304">upstream
597 want a Debian package too</a>.</p>
598
599 <p>After struggling a bit with getting the program to run, figuring
600 out building Go programs (and a little failed detour to look at eBPF
601 builds too - help needed), I am very happy to report that I am
602 sponsoring upstream to maintain the package in Debian, and it has
603 since this morning been waiting in NEW for the ftpmasters to have a
604 look. Perhaps it can get into the archive in time for the Bookworm
605 release?</p>
606
607 <p>As usual, if you use Bitcoin and want to show your support of my
608 activities, please send Bitcoin donations to my address
609 <b><a href="bitcoin:15oWEoG9dUPovwmUL9KWAnYRtNJEkP1u1b">15oWEoG9dUPovwmUL9KWAnYRtNJEkP1u1b</a></b>.</p>
610 </div>
611 <div class="tags">
612
613
614 Tags: <a href="https://people.skolelinux.org/pere/blog/tags/debian">debian</a>, <a href="https://people.skolelinux.org/pere/blog/tags/english">english</a>, <a href="https://people.skolelinux.org/pere/blog/tags/opensnitch">opensnitch</a>.
615
616
617 </div>
618 </div>
619 <div class="padding"></div>
620
621 <div class="entry">
622 <div class="title"><a href="https://people.skolelinux.org/pere/blog/LinuxCNC_MQTT_publisher_component.html">LinuxCNC MQTT publisher component</a></div>
623 <div class="date"> 8th January 2023</div>
624 <div class="body"><p>I watched <a href="https://yewtu.be/watch?v=jmKUV3aNLjk">a 2015
625 video from Andreas Schiffler</a> the other day, where he set up
626 <a href="https://linuxcnc.org/">LinuxCNC</a> to send status
627 information to the MQTT broker IBM Bluemix. As I also use MQTT for
628 graphing, it occured to me that a generic MQTT LinuxCNC component
629 would be useful and I set out to implement it. Today I got the first
630 draft limping along and submitted as
631 <a href="https://github.com/LinuxCNC/linuxcnc/pull/2253">a patch to the
632 LinuxCNC project</a>.</p>
633
634 <p>The simple part was setting up the MQTT publishing code in Python.
635 I already have set up other parts submitting data to my Mosquito MQTT
636 broker, so I could reuse that code. Writing a LinuxCNC component in
637 Python as new to me, but using existing examples in the code
638 repository and the extensive documentation, this was fairly straight
639 forward. The hardest part was creating a automated test for the
640 component to ensure it was working. Testing it in a simulated
641 LinuxCNC machine proved very useful, as I discovered features I needed
642 that I had not thought of yet, and adjusted the code quite a bit to
643 make it easier to test without a operational MQTT broker
644 available.</p>
645
646 <p>The draft is ready and working, but I am unsure which LinuxCNC HAL
647 pins I should collect and publish by default (in other words, the
648 default set of information pieces published), and how to get the
649 machine name from the LinuxCNC INI file. The latter is a minor
650 detail, but I expect it would be useful in a setup with several
651 machines available. I am hoping for feedback from the experienced
652 LinuxCNC developers and users, to make the component even better
653 before it can go into the mainland LinuxCNC code base.</p>
654
655 <p>Since I started on the MQTT component, I came across
656 <a href="https://yewtu.be/watch?v=Bqa2grG0XtA">another video from Kent
657 VanderVelden</a> where he combine LinuxCNC with a set of screen glasses
658 controlled by a Raspberry Pi, and it occured to me that it would
659 be useful for such use cases if LinuxCNC also provided a REST API for
660 querying its status. I hope to start on such component once the MQTT
661 component is working well.</p>
662
663 <p>As usual, if you use Bitcoin and want to show your support of my
664 activities, please send Bitcoin donations to my address
665 <b><a href="bitcoin:15oWEoG9dUPovwmUL9KWAnYRtNJEkP1u1b">15oWEoG9dUPovwmUL9KWAnYRtNJEkP1u1b</a></b>.</p>
666 </div>
667 <div class="tags">
668
669
670 Tags: <a href="https://people.skolelinux.org/pere/blog/tags/debian">debian</a>, <a href="https://people.skolelinux.org/pere/blog/tags/english">english</a>, <a href="https://people.skolelinux.org/pere/blog/tags/linuxcnc">linuxcnc</a>, <a href="https://people.skolelinux.org/pere/blog/tags/robot">robot</a>.
671
672
673 </div>
674 </div>
675 <div class="padding"></div>
676
677 <p style="text-align: right;"><a href="index.rss"><img src="https://people.skolelinux.org/pere/blog/xml.gif" alt="RSS feed" width="36" height="14" /></a></p>
678 <div id="sidebar">
679
680
681
682 <h2>Archive</h2>
683 <ul>
684
685 <li>2023
686 <ul>
687
688 <li><a href="https://people.skolelinux.org/pere/blog/archive/2023/01/">January (3)</a></li>
689
690 <li><a href="https://people.skolelinux.org/pere/blog/archive/2023/02/">February (1)</a></li>
691
692 <li><a href="https://people.skolelinux.org/pere/blog/archive/2023/04/">April (2)</a></li>
693
694 <li><a href="https://people.skolelinux.org/pere/blog/archive/2023/05/">May (3)</a></li>
695
696 <li><a href="https://people.skolelinux.org/pere/blog/archive/2023/06/">June (1)</a></li>
697
698 </ul></li>
699
700 <li>2022
701 <ul>
702
703 <li><a href="https://people.skolelinux.org/pere/blog/archive/2022/02/">February (1)</a></li>
704
705 <li><a href="https://people.skolelinux.org/pere/blog/archive/2022/03/">March (3)</a></li>
706
707 <li><a href="https://people.skolelinux.org/pere/blog/archive/2022/04/">April (2)</a></li>
708
709 <li><a href="https://people.skolelinux.org/pere/blog/archive/2022/06/">June (2)</a></li>
710
711 <li><a href="https://people.skolelinux.org/pere/blog/archive/2022/07/">July (1)</a></li>
712
713 <li><a href="https://people.skolelinux.org/pere/blog/archive/2022/09/">September (1)</a></li>
714
715 <li><a href="https://people.skolelinux.org/pere/blog/archive/2022/10/">October (1)</a></li>
716
717 <li><a href="https://people.skolelinux.org/pere/blog/archive/2022/12/">December (1)</a></li>
718
719 </ul></li>
720
721 <li>2021
722 <ul>
723
724 <li><a href="https://people.skolelinux.org/pere/blog/archive/2021/01/">January (2)</a></li>
725
726 <li><a href="https://people.skolelinux.org/pere/blog/archive/2021/02/">February (1)</a></li>
727
728 <li><a href="https://people.skolelinux.org/pere/blog/archive/2021/05/">May (1)</a></li>
729
730 <li><a href="https://people.skolelinux.org/pere/blog/archive/2021/06/">June (1)</a></li>
731
732 <li><a href="https://people.skolelinux.org/pere/blog/archive/2021/07/">July (3)</a></li>
733
734 <li><a href="https://people.skolelinux.org/pere/blog/archive/2021/08/">August (1)</a></li>
735
736 <li><a href="https://people.skolelinux.org/pere/blog/archive/2021/09/">September (1)</a></li>
737
738 <li><a href="https://people.skolelinux.org/pere/blog/archive/2021/10/">October (1)</a></li>
739
740 <li><a href="https://people.skolelinux.org/pere/blog/archive/2021/12/">December (1)</a></li>
741
742 </ul></li>
743
744 <li>2020
745 <ul>
746
747 <li><a href="https://people.skolelinux.org/pere/blog/archive/2020/02/">February (2)</a></li>
748
749 <li><a href="https://people.skolelinux.org/pere/blog/archive/2020/03/">March (2)</a></li>
750
751 <li><a href="https://people.skolelinux.org/pere/blog/archive/2020/04/">April (2)</a></li>
752
753 <li><a href="https://people.skolelinux.org/pere/blog/archive/2020/05/">May (3)</a></li>
754
755 <li><a href="https://people.skolelinux.org/pere/blog/archive/2020/06/">June (2)</a></li>
756
757 <li><a href="https://people.skolelinux.org/pere/blog/archive/2020/07/">July (1)</a></li>
758
759 <li><a href="https://people.skolelinux.org/pere/blog/archive/2020/09/">September (1)</a></li>
760
761 <li><a href="https://people.skolelinux.org/pere/blog/archive/2020/10/">October (1)</a></li>
762
763 <li><a href="https://people.skolelinux.org/pere/blog/archive/2020/11/">November (1)</a></li>
764
765 </ul></li>
766
767 <li>2019
768 <ul>
769
770 <li><a href="https://people.skolelinux.org/pere/blog/archive/2019/01/">January (4)</a></li>
771
772 <li><a href="https://people.skolelinux.org/pere/blog/archive/2019/02/">February (3)</a></li>
773
774 <li><a href="https://people.skolelinux.org/pere/blog/archive/2019/03/">March (3)</a></li>
775
776 <li><a href="https://people.skolelinux.org/pere/blog/archive/2019/05/">May (2)</a></li>
777
778 <li><a href="https://people.skolelinux.org/pere/blog/archive/2019/06/">June (5)</a></li>
779
780 <li><a href="https://people.skolelinux.org/pere/blog/archive/2019/07/">July (2)</a></li>
781
782 <li><a href="https://people.skolelinux.org/pere/blog/archive/2019/08/">August (1)</a></li>
783
784 <li><a href="https://people.skolelinux.org/pere/blog/archive/2019/09/">September (1)</a></li>
785
786 <li><a href="https://people.skolelinux.org/pere/blog/archive/2019/11/">November (1)</a></li>
787
788 <li><a href="https://people.skolelinux.org/pere/blog/archive/2019/12/">December (4)</a></li>
789
790 </ul></li>
791
792 <li>2018
793 <ul>
794
795 <li><a href="https://people.skolelinux.org/pere/blog/archive/2018/01/">January (1)</a></li>
796
797 <li><a href="https://people.skolelinux.org/pere/blog/archive/2018/02/">February (5)</a></li>
798
799 <li><a href="https://people.skolelinux.org/pere/blog/archive/2018/03/">March (5)</a></li>
800
801 <li><a href="https://people.skolelinux.org/pere/blog/archive/2018/04/">April (3)</a></li>
802
803 <li><a href="https://people.skolelinux.org/pere/blog/archive/2018/06/">June (2)</a></li>
804
805 <li><a href="https://people.skolelinux.org/pere/blog/archive/2018/07/">July (5)</a></li>
806
807 <li><a href="https://people.skolelinux.org/pere/blog/archive/2018/08/">August (3)</a></li>
808
809 <li><a href="https://people.skolelinux.org/pere/blog/archive/2018/09/">September (3)</a></li>
810
811 <li><a href="https://people.skolelinux.org/pere/blog/archive/2018/10/">October (5)</a></li>
812
813 <li><a href="https://people.skolelinux.org/pere/blog/archive/2018/11/">November (2)</a></li>
814
815 <li><a href="https://people.skolelinux.org/pere/blog/archive/2018/12/">December (4)</a></li>
816
817 </ul></li>
818
819 <li>2017
820 <ul>
821
822 <li><a href="https://people.skolelinux.org/pere/blog/archive/2017/01/">January (4)</a></li>
823
824 <li><a href="https://people.skolelinux.org/pere/blog/archive/2017/02/">February (3)</a></li>
825
826 <li><a href="https://people.skolelinux.org/pere/blog/archive/2017/03/">March (5)</a></li>
827
828 <li><a href="https://people.skolelinux.org/pere/blog/archive/2017/04/">April (2)</a></li>
829
830 <li><a href="https://people.skolelinux.org/pere/blog/archive/2017/06/">June (5)</a></li>
831
832 <li><a href="https://people.skolelinux.org/pere/blog/archive/2017/07/">July (1)</a></li>
833
834 <li><a href="https://people.skolelinux.org/pere/blog/archive/2017/08/">August (1)</a></li>
835
836 <li><a href="https://people.skolelinux.org/pere/blog/archive/2017/09/">September (3)</a></li>
837
838 <li><a href="https://people.skolelinux.org/pere/blog/archive/2017/10/">October (5)</a></li>
839
840 <li><a href="https://people.skolelinux.org/pere/blog/archive/2017/11/">November (3)</a></li>
841
842 <li><a href="https://people.skolelinux.org/pere/blog/archive/2017/12/">December (4)</a></li>
843
844 </ul></li>
845
846 <li>2016
847 <ul>
848
849 <li><a href="https://people.skolelinux.org/pere/blog/archive/2016/01/">January (3)</a></li>
850
851 <li><a href="https://people.skolelinux.org/pere/blog/archive/2016/02/">February (2)</a></li>
852
853 <li><a href="https://people.skolelinux.org/pere/blog/archive/2016/03/">March (3)</a></li>
854
855 <li><a href="https://people.skolelinux.org/pere/blog/archive/2016/04/">April (8)</a></li>
856
857 <li><a href="https://people.skolelinux.org/pere/blog/archive/2016/05/">May (8)</a></li>
858
859 <li><a href="https://people.skolelinux.org/pere/blog/archive/2016/06/">June (2)</a></li>
860
861 <li><a href="https://people.skolelinux.org/pere/blog/archive/2016/07/">July (2)</a></li>
862
863 <li><a href="https://people.skolelinux.org/pere/blog/archive/2016/08/">August (5)</a></li>
864
865 <li><a href="https://people.skolelinux.org/pere/blog/archive/2016/09/">September (2)</a></li>
866
867 <li><a href="https://people.skolelinux.org/pere/blog/archive/2016/10/">October (3)</a></li>
868
869 <li><a href="https://people.skolelinux.org/pere/blog/archive/2016/11/">November (8)</a></li>
870
871 <li><a href="https://people.skolelinux.org/pere/blog/archive/2016/12/">December (5)</a></li>
872
873 </ul></li>
874
875 <li>2015
876 <ul>
877
878 <li><a href="https://people.skolelinux.org/pere/blog/archive/2015/01/">January (7)</a></li>
879
880 <li><a href="https://people.skolelinux.org/pere/blog/archive/2015/02/">February (6)</a></li>
881
882 <li><a href="https://people.skolelinux.org/pere/blog/archive/2015/03/">March (1)</a></li>
883
884 <li><a href="https://people.skolelinux.org/pere/blog/archive/2015/04/">April (4)</a></li>
885
886 <li><a href="https://people.skolelinux.org/pere/blog/archive/2015/05/">May (3)</a></li>
887
888 <li><a href="https://people.skolelinux.org/pere/blog/archive/2015/06/">June (4)</a></li>
889
890 <li><a href="https://people.skolelinux.org/pere/blog/archive/2015/07/">July (6)</a></li>
891
892 <li><a href="https://people.skolelinux.org/pere/blog/archive/2015/08/">August (2)</a></li>
893
894 <li><a href="https://people.skolelinux.org/pere/blog/archive/2015/09/">September (2)</a></li>
895
896 <li><a href="https://people.skolelinux.org/pere/blog/archive/2015/10/">October (9)</a></li>
897
898 <li><a href="https://people.skolelinux.org/pere/blog/archive/2015/11/">November (6)</a></li>
899
900 <li><a href="https://people.skolelinux.org/pere/blog/archive/2015/12/">December (3)</a></li>
901
902 </ul></li>
903
904 <li>2014
905 <ul>
906
907 <li><a href="https://people.skolelinux.org/pere/blog/archive/2014/01/">January (2)</a></li>
908
909 <li><a href="https://people.skolelinux.org/pere/blog/archive/2014/02/">February (3)</a></li>
910
911 <li><a href="https://people.skolelinux.org/pere/blog/archive/2014/03/">March (8)</a></li>
912
913 <li><a href="https://people.skolelinux.org/pere/blog/archive/2014/04/">April (7)</a></li>
914
915 <li><a href="https://people.skolelinux.org/pere/blog/archive/2014/05/">May (1)</a></li>
916
917 <li><a href="https://people.skolelinux.org/pere/blog/archive/2014/06/">June (2)</a></li>
918
919 <li><a href="https://people.skolelinux.org/pere/blog/archive/2014/07/">July (2)</a></li>
920
921 <li><a href="https://people.skolelinux.org/pere/blog/archive/2014/08/">August (2)</a></li>
922
923 <li><a href="https://people.skolelinux.org/pere/blog/archive/2014/09/">September (5)</a></li>
924
925 <li><a href="https://people.skolelinux.org/pere/blog/archive/2014/10/">October (6)</a></li>
926
927 <li><a href="https://people.skolelinux.org/pere/blog/archive/2014/11/">November (3)</a></li>
928
929 <li><a href="https://people.skolelinux.org/pere/blog/archive/2014/12/">December (5)</a></li>
930
931 </ul></li>
932
933 <li>2013
934 <ul>
935
936 <li><a href="https://people.skolelinux.org/pere/blog/archive/2013/01/">January (11)</a></li>
937
938 <li><a href="https://people.skolelinux.org/pere/blog/archive/2013/02/">February (9)</a></li>
939
940 <li><a href="https://people.skolelinux.org/pere/blog/archive/2013/03/">March (9)</a></li>
941
942 <li><a href="https://people.skolelinux.org/pere/blog/archive/2013/04/">April (6)</a></li>
943
944 <li><a href="https://people.skolelinux.org/pere/blog/archive/2013/05/">May (9)</a></li>
945
946 <li><a href="https://people.skolelinux.org/pere/blog/archive/2013/06/">June (10)</a></li>
947
948 <li><a href="https://people.skolelinux.org/pere/blog/archive/2013/07/">July (7)</a></li>
949
950 <li><a href="https://people.skolelinux.org/pere/blog/archive/2013/08/">August (3)</a></li>
951
952 <li><a href="https://people.skolelinux.org/pere/blog/archive/2013/09/">September (5)</a></li>
953
954 <li><a href="https://people.skolelinux.org/pere/blog/archive/2013/10/">October (7)</a></li>
955
956 <li><a href="https://people.skolelinux.org/pere/blog/archive/2013/11/">November (9)</a></li>
957
958 <li><a href="https://people.skolelinux.org/pere/blog/archive/2013/12/">December (3)</a></li>
959
960 </ul></li>
961
962 <li>2012
963 <ul>
964
965 <li><a href="https://people.skolelinux.org/pere/blog/archive/2012/01/">January (7)</a></li>
966
967 <li><a href="https://people.skolelinux.org/pere/blog/archive/2012/02/">February (10)</a></li>
968
969 <li><a href="https://people.skolelinux.org/pere/blog/archive/2012/03/">March (17)</a></li>
970
971 <li><a href="https://people.skolelinux.org/pere/blog/archive/2012/04/">April (12)</a></li>
972
973 <li><a href="https://people.skolelinux.org/pere/blog/archive/2012/05/">May (12)</a></li>
974
975 <li><a href="https://people.skolelinux.org/pere/blog/archive/2012/06/">June (20)</a></li>
976
977 <li><a href="https://people.skolelinux.org/pere/blog/archive/2012/07/">July (17)</a></li>
978
979 <li><a href="https://people.skolelinux.org/pere/blog/archive/2012/08/">August (6)</a></li>
980
981 <li><a href="https://people.skolelinux.org/pere/blog/archive/2012/09/">September (9)</a></li>
982
983 <li><a href="https://people.skolelinux.org/pere/blog/archive/2012/10/">October (17)</a></li>
984
985 <li><a href="https://people.skolelinux.org/pere/blog/archive/2012/11/">November (10)</a></li>
986
987 <li><a href="https://people.skolelinux.org/pere/blog/archive/2012/12/">December (7)</a></li>
988
989 </ul></li>
990
991 <li>2011
992 <ul>
993
994 <li><a href="https://people.skolelinux.org/pere/blog/archive/2011/01/">January (16)</a></li>
995
996 <li><a href="https://people.skolelinux.org/pere/blog/archive/2011/02/">February (6)</a></li>
997
998 <li><a href="https://people.skolelinux.org/pere/blog/archive/2011/03/">March (6)</a></li>
999
1000 <li><a href="https://people.skolelinux.org/pere/blog/archive/2011/04/">April (7)</a></li>
1001
1002 <li><a href="https://people.skolelinux.org/pere/blog/archive/2011/05/">May (3)</a></li>
1003
1004 <li><a href="https://people.skolelinux.org/pere/blog/archive/2011/06/">June (2)</a></li>
1005
1006 <li><a href="https://people.skolelinux.org/pere/blog/archive/2011/07/">July (7)</a></li>
1007
1008 <li><a href="https://people.skolelinux.org/pere/blog/archive/2011/08/">August (6)</a></li>
1009
1010 <li><a href="https://people.skolelinux.org/pere/blog/archive/2011/09/">September (4)</a></li>
1011
1012 <li><a href="https://people.skolelinux.org/pere/blog/archive/2011/10/">October (2)</a></li>
1013
1014 <li><a href="https://people.skolelinux.org/pere/blog/archive/2011/11/">November (3)</a></li>
1015
1016 <li><a href="https://people.skolelinux.org/pere/blog/archive/2011/12/">December (1)</a></li>
1017
1018 </ul></li>
1019
1020 <li>2010
1021 <ul>
1022
1023 <li><a href="https://people.skolelinux.org/pere/blog/archive/2010/01/">January (2)</a></li>
1024
1025 <li><a href="https://people.skolelinux.org/pere/blog/archive/2010/02/">February (1)</a></li>
1026
1027 <li><a href="https://people.skolelinux.org/pere/blog/archive/2010/03/">March (3)</a></li>
1028
1029 <li><a href="https://people.skolelinux.org/pere/blog/archive/2010/04/">April (3)</a></li>
1030
1031 <li><a href="https://people.skolelinux.org/pere/blog/archive/2010/05/">May (9)</a></li>
1032
1033 <li><a href="https://people.skolelinux.org/pere/blog/archive/2010/06/">June (14)</a></li>
1034
1035 <li><a href="https://people.skolelinux.org/pere/blog/archive/2010/07/">July (12)</a></li>
1036
1037 <li><a href="https://people.skolelinux.org/pere/blog/archive/2010/08/">August (13)</a></li>
1038
1039 <li><a href="https://people.skolelinux.org/pere/blog/archive/2010/09/">September (7)</a></li>
1040
1041 <li><a href="https://people.skolelinux.org/pere/blog/archive/2010/10/">October (9)</a></li>
1042
1043 <li><a href="https://people.skolelinux.org/pere/blog/archive/2010/11/">November (13)</a></li>
1044
1045 <li><a href="https://people.skolelinux.org/pere/blog/archive/2010/12/">December (12)</a></li>
1046
1047 </ul></li>
1048
1049 <li>2009
1050 <ul>
1051
1052 <li><a href="https://people.skolelinux.org/pere/blog/archive/2009/01/">January (8)</a></li>
1053
1054 <li><a href="https://people.skolelinux.org/pere/blog/archive/2009/02/">February (8)</a></li>
1055
1056 <li><a href="https://people.skolelinux.org/pere/blog/archive/2009/03/">March (12)</a></li>
1057
1058 <li><a href="https://people.skolelinux.org/pere/blog/archive/2009/04/">April (10)</a></li>
1059
1060 <li><a href="https://people.skolelinux.org/pere/blog/archive/2009/05/">May (9)</a></li>
1061
1062 <li><a href="https://people.skolelinux.org/pere/blog/archive/2009/06/">June (3)</a></li>
1063
1064 <li><a href="https://people.skolelinux.org/pere/blog/archive/2009/07/">July (4)</a></li>
1065
1066 <li><a href="https://people.skolelinux.org/pere/blog/archive/2009/08/">August (3)</a></li>
1067
1068 <li><a href="https://people.skolelinux.org/pere/blog/archive/2009/09/">September (1)</a></li>
1069
1070 <li><a href="https://people.skolelinux.org/pere/blog/archive/2009/10/">October (2)</a></li>
1071
1072 <li><a href="https://people.skolelinux.org/pere/blog/archive/2009/11/">November (3)</a></li>
1073
1074 <li><a href="https://people.skolelinux.org/pere/blog/archive/2009/12/">December (3)</a></li>
1075
1076 </ul></li>
1077
1078 <li>2008
1079 <ul>
1080
1081 <li><a href="https://people.skolelinux.org/pere/blog/archive/2008/11/">November (5)</a></li>
1082
1083 <li><a href="https://people.skolelinux.org/pere/blog/archive/2008/12/">December (7)</a></li>
1084
1085 </ul></li>
1086
1087 </ul>
1088
1089
1090
1091 <h2>Tags</h2>
1092 <ul>
1093
1094 <li><a href="https://people.skolelinux.org/pere/blog/tags/3d-printer">3d-printer (19)</a></li>
1095
1096 <li><a href="https://people.skolelinux.org/pere/blog/tags/amiga">amiga (1)</a></li>
1097
1098 <li><a href="https://people.skolelinux.org/pere/blog/tags/aros">aros (1)</a></li>
1099
1100 <li><a href="https://people.skolelinux.org/pere/blog/tags/bankid">bankid (4)</a></li>
1101
1102 <li><a href="https://people.skolelinux.org/pere/blog/tags/betalkontant">betalkontant (9)</a></li>
1103
1104 <li><a href="https://people.skolelinux.org/pere/blog/tags/bitcoin">bitcoin (12)</a></li>
1105
1106 <li><a href="https://people.skolelinux.org/pere/blog/tags/bootsystem">bootsystem (17)</a></li>
1107
1108 <li><a href="https://people.skolelinux.org/pere/blog/tags/bsa">bsa (2)</a></li>
1109
1110 <li><a href="https://people.skolelinux.org/pere/blog/tags/chrpath">chrpath (2)</a></li>
1111
1112 <li><a href="https://people.skolelinux.org/pere/blog/tags/debian">debian (194)</a></li>
1113
1114 <li><a href="https://people.skolelinux.org/pere/blog/tags/debian edu">debian edu (159)</a></li>
1115
1116 <li><a href="https://people.skolelinux.org/pere/blog/tags/debian-handbook">debian-handbook (9)</a></li>
1117
1118 <li><a href="https://people.skolelinux.org/pere/blog/tags/digistan">digistan (11)</a></li>
1119
1120 <li><a href="https://people.skolelinux.org/pere/blog/tags/dld">dld (18)</a></li>
1121
1122 <li><a href="https://people.skolelinux.org/pere/blog/tags/docbook">docbook (30)</a></li>
1123
1124 <li><a href="https://people.skolelinux.org/pere/blog/tags/drivstoffpriser">drivstoffpriser (4)</a></li>
1125
1126 <li><a href="https://people.skolelinux.org/pere/blog/tags/english">english (450)</a></li>
1127
1128 <li><a href="https://people.skolelinux.org/pere/blog/tags/fiksgatami">fiksgatami (23)</a></li>
1129
1130 <li><a href="https://people.skolelinux.org/pere/blog/tags/fildeling">fildeling (14)</a></li>
1131
1132 <li><a href="https://people.skolelinux.org/pere/blog/tags/freeculture">freeculture (34)</a></li>
1133
1134 <li><a href="https://people.skolelinux.org/pere/blog/tags/freedombox">freedombox (9)</a></li>
1135
1136 <li><a href="https://people.skolelinux.org/pere/blog/tags/frikanalen">frikanalen (20)</a></li>
1137
1138 <li><a href="https://people.skolelinux.org/pere/blog/tags/h264">h264 (20)</a></li>
1139
1140 <li><a href="https://people.skolelinux.org/pere/blog/tags/intervju">intervju (43)</a></li>
1141
1142 <li><a href="https://people.skolelinux.org/pere/blog/tags/isenkram">isenkram (16)</a></li>
1143
1144 <li><a href="https://people.skolelinux.org/pere/blog/tags/kart">kart (23)</a></li>
1145
1146 <li><a href="https://people.skolelinux.org/pere/blog/tags/kodi">kodi (4)</a></li>
1147
1148 <li><a href="https://people.skolelinux.org/pere/blog/tags/ldap">ldap (9)</a></li>
1149
1150 <li><a href="https://people.skolelinux.org/pere/blog/tags/lego">lego (5)</a></li>
1151
1152 <li><a href="https://people.skolelinux.org/pere/blog/tags/lenker">lenker (8)</a></li>
1153
1154 <li><a href="https://people.skolelinux.org/pere/blog/tags/linuxcnc">linuxcnc (5)</a></li>
1155
1156 <li><a href="https://people.skolelinux.org/pere/blog/tags/lsdvd">lsdvd (2)</a></li>
1157
1158 <li><a href="https://people.skolelinux.org/pere/blog/tags/ltsp">ltsp (1)</a></li>
1159
1160 <li><a href="https://people.skolelinux.org/pere/blog/tags/madewithcc">madewithcc (3)</a></li>
1161
1162 <li><a href="https://people.skolelinux.org/pere/blog/tags/mesh network">mesh network (8)</a></li>
1163
1164 <li><a href="https://people.skolelinux.org/pere/blog/tags/multimedia">multimedia (45)</a></li>
1165
1166 <li><a href="https://people.skolelinux.org/pere/blog/tags/nice free software">nice free software (15)</a></li>
1167
1168 <li><a href="https://people.skolelinux.org/pere/blog/tags/noark5">noark5 (23)</a></li>
1169
1170 <li><a href="https://people.skolelinux.org/pere/blog/tags/norsk">norsk (320)</a></li>
1171
1172 <li><a href="https://people.skolelinux.org/pere/blog/tags/nuug">nuug (198)</a></li>
1173
1174 <li><a href="https://people.skolelinux.org/pere/blog/tags/offentlig innsyn">offentlig innsyn (40)</a></li>
1175
1176 <li><a href="https://people.skolelinux.org/pere/blog/tags/open311">open311 (2)</a></li>
1177
1178 <li><a href="https://people.skolelinux.org/pere/blog/tags/opensnitch">opensnitch (4)</a></li>
1179
1180 <li><a href="https://people.skolelinux.org/pere/blog/tags/opphavsrett">opphavsrett (75)</a></li>
1181
1182 <li><a href="https://people.skolelinux.org/pere/blog/tags/personvern">personvern (114)</a></li>
1183
1184 <li><a href="https://people.skolelinux.org/pere/blog/tags/raid">raid (2)</a></li>
1185
1186 <li><a href="https://people.skolelinux.org/pere/blog/tags/reactos">reactos (1)</a></li>
1187
1188 <li><a href="https://people.skolelinux.org/pere/blog/tags/reprap">reprap (11)</a></li>
1189
1190 <li><a href="https://people.skolelinux.org/pere/blog/tags/rfid">rfid (3)</a></li>
1191
1192 <li><a href="https://people.skolelinux.org/pere/blog/tags/robot">robot (17)</a></li>
1193
1194 <li><a href="https://people.skolelinux.org/pere/blog/tags/rss">rss (1)</a></li>
1195
1196 <li><a href="https://people.skolelinux.org/pere/blog/tags/ruter">ruter (7)</a></li>
1197
1198 <li><a href="https://people.skolelinux.org/pere/blog/tags/scraperwiki">scraperwiki (2)</a></li>
1199
1200 <li><a href="https://people.skolelinux.org/pere/blog/tags/sikkerhet">sikkerhet (59)</a></li>
1201
1202 <li><a href="https://people.skolelinux.org/pere/blog/tags/sitesummary">sitesummary (4)</a></li>
1203
1204 <li><a href="https://people.skolelinux.org/pere/blog/tags/skepsis">skepsis (5)</a></li>
1205
1206 <li><a href="https://people.skolelinux.org/pere/blog/tags/standard">standard (74)</a></li>
1207
1208 <li><a href="https://people.skolelinux.org/pere/blog/tags/stavekontroll">stavekontroll (7)</a></li>
1209
1210 <li><a href="https://people.skolelinux.org/pere/blog/tags/stortinget">stortinget (14)</a></li>
1211
1212 <li><a href="https://people.skolelinux.org/pere/blog/tags/surveillance">surveillance (64)</a></li>
1213
1214 <li><a href="https://people.skolelinux.org/pere/blog/tags/sysadmin">sysadmin (5)</a></li>
1215
1216 <li><a href="https://people.skolelinux.org/pere/blog/tags/usenix">usenix (2)</a></li>
1217
1218 <li><a href="https://people.skolelinux.org/pere/blog/tags/valg">valg (9)</a></li>
1219
1220 <li><a href="https://people.skolelinux.org/pere/blog/tags/verkidetfri">verkidetfri (20)</a></li>
1221
1222 <li><a href="https://people.skolelinux.org/pere/blog/tags/video">video (78)</a></li>
1223
1224 <li><a href="https://people.skolelinux.org/pere/blog/tags/vitenskap">vitenskap (4)</a></li>
1225
1226 <li><a href="https://people.skolelinux.org/pere/blog/tags/web">web (42)</a></li>
1227
1228 </ul>
1229
1230
1231 </div>
1232 <p style="text-align: right">
1233 Created by <a href="http://steve.org.uk/Software/chronicle">Chronicle v4.6</a>
1234 </p>
1235
1236 </body>
1237 </html>