]> pere.pagekite.me Git - homepage.git/blob - blog/tags/nice free software/index.html
dbe6e0019b630d99f8657288998a0b5c4a4b20d5
[homepage.git] / blog / tags / nice free software / 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 Tagged nice free software</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="nice free software.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 <h3>Entries tagged "nice free software".</h3>
22
23 <div class="entry">
24 <div class="title">
25 <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>
26 </div>
27 <div class="date">
28 7th March 2023
29 </div>
30 <div class="body">
31 <p>Today I finally found time to track down a useful radio frequency
32 scanner for my software defined radio. Just for fun I tried to locate
33 the radios used in the areas, and a good start would be to scan all
34 the frequencies to see what is in use. I've tried to find a useful
35 program earlier, but ran out of time before I managed to find a useful
36 tool. This time I was more successful, and after a few false leads I
37 found a description of
38 <a href="https://www.kali.org/tools/rtlsdr-scanner/">rtlsdr-scanner
39 over at the Kali site</a>, and was able to track down
40 <a href="https://gitlab.com/kalilinux/packages/rtlsdr-scanner.git">the
41 Kali package git repository</a> to build a deb package for the
42 scanner. Sadly the package is missing from the Debian project itself,
43 at least in Debian Bullseye. Two runtime dependencies,
44 <a href="https://gitlab.com/kalilinux/packages/python-visvis.git">python-visvis</a>
45 and
46 <a href="https://gitlab.com/kalilinux/packages/python-rtlsdr.git">python-rtlsdr</a>
47 had to be built and installed separately. Luckily '<tt>gbp
48 buildpackage</tt>' handled them just fine and no further packages had
49 to be manually built. The end result worked out of the box after
50 installation.</p>
51
52 <p>My initial scans for FM channels worked just fine, so I knew the
53 scanner was functioning. But when I tried to scan every frequency
54 from 100 to 1000 MHz, the program stopped unexpectedly near the
55 completion. After some debugging I discovered USB software radio I
56 used rejected frequencies above 948 MHz, triggering a unreported
57 exception breaking the scan. Changing the scan to end at 957 worked
58 better. I similarly found the lower limit to be around 15, and ended
59 up with the following full scan:</p>
60
61 <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>
62
63 <p>Saving the scan did not work, but exporting it as a CSV file worked
64 just fine. I ended up with around 477k CVS lines with dB level for
65 the given frequency.</p>
66
67 <p>The save failure seem to be a missing UTF-8 encoding issue in the
68 python code. Will see if I can find time to send a patch
69 <a href="https://github.com/CdeMills/RTLSDR-Scanner/">upstream</a>
70 later to fix this exception:</p>
71
72 <pre>
73 Traceback (most recent call last):
74 File "/usr/lib/python3/dist-packages/rtlsdr_scanner/main_window.py", line 485, in __on_save
75 save_plot(fullName, self.scanInfo, self.spectrum, self.locations)
76 File "/usr/lib/python3/dist-packages/rtlsdr_scanner/file.py", line 408, in save_plot
77 handle.write(json.dumps(data, indent=4))
78 TypeError: a bytes-like object is required, not 'str'
79 Traceback (most recent call last):
80 File "/usr/lib/python3/dist-packages/rtlsdr_scanner/main_window.py", line 485, in __on_save
81 save_plot(fullName, self.scanInfo, self.spectrum, self.locations)
82 File "/usr/lib/python3/dist-packages/rtlsdr_scanner/file.py", line 408, in save_plot
83 handle.write(json.dumps(data, indent=4))
84 TypeError: a bytes-like object is required, not 'str'
85 </pre>
86
87 <p>As usual, if you use Bitcoin and want to show your support of my
88 activities, please send Bitcoin donations to my address
89 <b><a href="bitcoin:15oWEoG9dUPovwmUL9KWAnYRtNJEkP1u1b">15oWEoG9dUPovwmUL9KWAnYRtNJEkP1u1b</a></b>.</p>
90
91 </div>
92 <div class="tags">
93
94
95 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>.
96
97
98 </div>
99 </div>
100 <div class="padding"></div>
101
102 <div class="entry">
103 <div class="title">
104 <a href="https://people.skolelinux.org/pere/blog/GnuCOBOL__a_free_platform_to_learn_and_use_COBOL___nice_free_software.html">GnuCOBOL, a free platform to learn and use COBOL - nice free software</a>
105 </div>
106 <div class="date">
107 29th April 2020
108 </div>
109 <div class="body">
110 <p>The curiosity got the better of me when
111 <a href="https://developers.slashdot.org/story/20/04/06/1424246/new-jersey-desperately-needs-cobol-programmers">Slashdot
112 reported</a> that New Jersey was desperately looking for
113 <a href="https://en.wikipedia.org/wiki/COBOL">COBOL</a> programmers,
114 and a few days later it was reported that
115 <a href="https://onezero.medium.com/ibm-rallies-cobol-engineers-to-save-overloaded-unemployment-systems-eeadf13eddce">IBM
116 tried to locate COBOL programmers</a>.</p>
117
118 <p>I thus decided to have a look at free software alternatives to
119 learn COBOL, and had the pleasure to find
120 <a href="https://sourceforge.net/projects/open-cobol/">GnuCOBOL</a> was
121 already <a href="https://tracker.debian.org/pkg/gnucobol">in
122 Debian</a>. It used to be called Open Cobol, and is a "compiler"
123 transforming COBOL code to C or C++ before giving it to GCC or Visual
124 Studio to build binaries.</p>
125
126 <p>I managed to get in touch with upstream, and was impressed with the
127 quick response, and also was happy to see a new Debian maintainer
128 taking over when the original one recently asked to be replaced. A
129 new Debian upload was done as recently as yesterday.</p>
130
131 <p>Using the Debian package, I was able to follow a simple COBOL
132 introduction and make and run simple COBOL programs. It was fun to
133 learn a new programming language. If you want to test for yourself,
134 <a href="https://en.wikipedia.org/wiki/GnuCOBOL">the GnuCOBOL Wikipedia
135 page</a> have a few simple examples to get you startet.</p>
136
137 <p>As I do not have much experience with COBOL, I do not know how
138 standard compliant it is, but it claim to pass most tests from COBOL
139 test suite, which sound good to me. It is nice to know it is possible
140 to learn COBOL using software without any usage restrictions, and I am
141 very happy such nice free software project as this is available. If
142 you as me is curious about COBOL, check it out.</p>
143
144 <p>As usual, if you use Bitcoin and want to show your support of my
145 activities, please send Bitcoin donations to my address
146 <b><a href="bitcoin:15oWEoG9dUPovwmUL9KWAnYRtNJEkP1u1b">15oWEoG9dUPovwmUL9KWAnYRtNJEkP1u1b</a></b>.</p>
147
148 </div>
149 <div class="tags">
150
151
152 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>.
153
154
155 </div>
156 </div>
157 <div class="padding"></div>
158
159 <div class="entry">
160 <div class="title">
161 <a href="https://people.skolelinux.org/pere/blog/PlantUML_for_text_based_UML_diagram_modelling___nice_free_software.html">PlantUML for text based UML diagram modelling - nice free software</a>
162 </div>
163 <div class="date">
164 25th March 2019
165 </div>
166 <div class="body">
167 <p>As part of my involvement with the
168 <a href="https://gitlab.com/OsloMet-ABI/nikita-noark5-core/">Nikita
169 Noark 5 core project</a>, I have been proposing improvements to the
170 API specification created by <a href="https://www.arkivverket.no/">The
171 National Archives of Norway</a> and helped migrating the text from a
172 version control system unfriendly binary format (docx) to Markdown in
173 git. Combined with the migration to a public git repository (on
174 github), this has made it possible for anyone to suggest improvement
175 to the text.</p>
176
177 <p>The specification is filled with UML diagrams. I believe the
178 original diagrams were modelled using Sparx Systems Enterprise
179 Architect, and exported as EMF files for import into docx. This
180 approach make it very hard to track changes using a version control
181 system. To improve the situation I have been looking for a good text
182 based UML format with associated command line free software tools on
183 Linux and Windows, to allow anyone to send in corrections to the UML
184 diagrams in the specification. The tool must be text based to work
185 with git, and command line to be able to run it automatically to
186 generate the diagram images. Finally, it must be free software to
187 allow anyone, even those that can not accept a non-free software
188 license, to contribute.</p>
189
190 <p>I did not know much about free software UML modelling tools when I
191 started. I have used dia and inkscape for simple modelling in the
192 past, but neither are available on Windows, as far as I could tell. I
193 came across a nice
194 <a href="https://modeling-languages.com/text-uml-tools-complete-list/">list
195 of text mode uml tools</a>, and tested out a few of the tools listed
196 there. <a href="http://plantuml.com/">The PlantUML tool</a> seemed
197 most promising. After verifying that the packages
198 <a href="https://tracker.debian.org/pkg/plantuml">is available in
199 Debian</a> and found <a href="https://github.com/plantuml/plantuml">its
200 Java source</a> under a GPL license on github, I set out to test if it
201 could represent the diagrams we needed, ie the ones currently in
202 <a href="https://github.com/arkivverket/noark5-tjenestegrensesnitt-standard/">the
203 Noark 5 Tjenestegrensesnitt specification</a>. I am happy to report
204 that it could represent them, even thought it have a few warts here
205 and there.</p>
206
207 <p>After a few days of modelling I completed the task this weekend. A
208 temporary link to the complete set of diagrams (original and from
209 PlantUML) is available in
210 <a href="https://github.com/arkivverket/noark5-tjenestegrensesnitt-standard/issues/76">the
211 github issue discussing the need for a text based UML format</a>, but
212 please note I lack a sensible tool to convert EMF files to PNGs, so
213 the "original" rendering is not as good as the original was in the
214 publised PDF.</p>
215
216 <p>Here is an example UML diagram, showing the core classes for
217 keeping metadata about archived documents:</p>
218
219 <pre>
220 @startuml
221 skinparam classAttributeIconSize 0
222
223 !include media/uml-class-arkivskaper.iuml
224 !include media/uml-class-arkiv.iuml
225 !include media/uml-class-klassifikasjonssystem.iuml
226 !include media/uml-class-klasse.iuml
227 !include media/uml-class-arkivdel.iuml
228 !include media/uml-class-mappe.iuml
229 !include media/uml-class-merknad.iuml
230 !include media/uml-class-registrering.iuml
231 !include media/uml-class-basisregistrering.iuml
232 !include media/uml-class-dokumentbeskrivelse.iuml
233 !include media/uml-class-dokumentobjekt.iuml
234 !include media/uml-class-konvertering.iuml
235 !include media/uml-datatype-elektronisksignatur.iuml
236
237 Arkivstruktur.Arkivskaper "+arkivskaper 1..*" <-o "+arkiv 0..*" Arkivstruktur.Arkiv
238 Arkivstruktur.Arkiv o--> "+underarkiv 0..*" Arkivstruktur.Arkiv
239 Arkivstruktur.Arkiv "+arkiv 1" o--> "+arkivdel 0..*" Arkivstruktur.Arkivdel
240 Arkivstruktur.Klassifikasjonssystem "+klassifikasjonssystem [0..1]" <--o "+arkivdel 1..*" Arkivstruktur.Arkivdel
241 Arkivstruktur.Klassifikasjonssystem "+klassifikasjonssystem [0..1]" o--> "+klasse 0..*" Arkivstruktur.Klasse
242 Arkivstruktur.Arkivdel "+arkivdel 0..1" o--> "+mappe 0..*" Arkivstruktur.Mappe
243 Arkivstruktur.Arkivdel "+arkivdel 0..1" o--> "+registrering 0..*" Arkivstruktur.Registrering
244 Arkivstruktur.Klasse "+klasse 0..1" o--> "+mappe 0..*" Arkivstruktur.Mappe
245 Arkivstruktur.Klasse "+klasse 0..1" o--> "+registrering 0..*" Arkivstruktur.Registrering
246 Arkivstruktur.Mappe --> "+undermappe 0..*" Arkivstruktur.Mappe
247 Arkivstruktur.Mappe "+mappe 0..1" o--> "+registrering 0..*" Arkivstruktur.Registrering
248 Arkivstruktur.Merknad "+merknad 0..*" <--* Arkivstruktur.Mappe
249 Arkivstruktur.Merknad "+merknad 0..*" <--* Arkivstruktur.Dokumentbeskrivelse
250 Arkivstruktur.Basisregistrering -|> Arkivstruktur.Registrering
251 Arkivstruktur.Merknad "+merknad 0..*" <--* Arkivstruktur.Basisregistrering
252 Arkivstruktur.Registrering "+registrering 1..*" o--> "+dokumentbeskrivelse 0..*" Arkivstruktur.Dokumentbeskrivelse
253 Arkivstruktur.Dokumentbeskrivelse "+dokumentbeskrivelse 1" o-> "+dokumentobjekt 0..*" Arkivstruktur.Dokumentobjekt
254 Arkivstruktur.Dokumentobjekt *-> "+konvertering 0..*" Arkivstruktur.Konvertering
255 Arkivstruktur.ElektroniskSignatur -[hidden]-> Arkivstruktur.Dokumentobjekt
256 @enduml
257 </pre>
258
259 <p><a href="http://plantuml.com/class-diagram">The format</a> is quite
260 compact, with little redundant information. The text expresses
261 entities and relations, and there is little layout related fluff. One
262 can reuse content by using include files, allowing for consistent
263 naming across several diagrams. The include files can be standalone
264 PlantUML too. Here is the content of
265 <tt>media/uml-class-arkivskaper.iuml</tt>:</p>
266
267 <pre>
268 @startuml
269 class Arkivstruktur.Arkivskaper <Arkivenhet> {
270 +arkivskaperID : string
271 +arkivskaperNavn : string
272 +beskrivelse : string [0..1]
273 }
274 @enduml
275 </pre>
276
277 <p>This is what the complete diagram for the PlantUML notation above
278 look like:</p>
279
280 <p><img width="80%" src="http://people.skolelinux.org/pere/blog/images/2019-03-25-noark5-plantuml-diagrameksempel.png"></p>
281
282 <p>A cool feature of PlantUML is that the generated PNG files include
283 the entire original source diagram as text. The source (with include
284 statements expanded) can be extracted using for example
285 <tt>exiftool</tt>. Another cool feature is that parts of the entities
286 can be hidden after inclusion. This allow to use include files with
287 all attributes listed, even for UML diagrams that should not list any
288 attributes.</p>
289
290 <p>The diagram also show some of the warts. Some times the layout
291 engine place text labels on top of each other, and some times it place
292 the class boxes too close to each other, not leaving room for the
293 labels on the relationship arrows. The former can be worked around by
294 placing extra newlines in the labes (ie "\n"). I did not do it here
295 to be able to demonstrate the issue. I have not found a good way
296 around the latter, so I normally try to reduce the problem by changing
297 from vertical to horizontal links to improve the layout.</p>
298
299 <p>All in all, I am quite happy with PlantUML, and very impressed with
300 how quickly its lead developer responds to questions. So far I got an
301 answer to my questions in a few hours when I send an email. I
302 definitely recommend looking at PlantUML if you need to make UML
303 diagrams. Note, PlantUML can draw a lot more than class relations.
304 Check out the documention for a complete list. :)</p>
305
306 <p>As usual, if you use Bitcoin and want to show your support of my
307 activities, please send Bitcoin donations to my address
308 <b><a href="bitcoin:15oWEoG9dUPovwmUL9KWAnYRtNJEkP1u1b">15oWEoG9dUPovwmUL9KWAnYRtNJEkP1u1b</a></b>.</p>
309
310 </div>
311 <div class="tags">
312
313
314 Tags: <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>, <a href="https://people.skolelinux.org/pere/blog/tags/noark5">noark5</a>, <a href="https://people.skolelinux.org/pere/blog/tags/nuug">nuug</a>, <a href="https://people.skolelinux.org/pere/blog/tags/standard">standard</a>.
315
316
317 </div>
318 </div>
319 <div class="padding"></div>
320
321 <div class="entry">
322 <div class="title">
323 <a href="https://people.skolelinux.org/pere/blog/Measuring_the_speaker_frequency_response_using_the_AUDMES_free_software_GUI___nice_free_software.html">Measuring the speaker frequency response using the AUDMES free software GUI - nice free software</a>
324 </div>
325 <div class="date">
326 22nd October 2018
327 </div>
328 <div class="body">
329 <p><img src="http://people.skolelinux.org/pere/blog/images/2018-10-22-audmes-measure-speakers.png" align="right" width="40%"/></p>
330
331 <p>My current home stereo is a patchwork of various pieces I got on
332 flee markeds over the years. It is amazing what kind of equipment
333 show up there. I've been wondering for a while if it was possible to
334 measure how well this equipment is working together, and decided to
335 see how far I could get using free software. After trawling the web I
336 came across an article from DIY Audio and Video on
337 <a href="https://www.diyaudioandvideo.com/Tutorial/SpeakerResponseTesting/">Speaker
338 Testing and Analysis</a> describing how to test speakers, and it listing
339 several software options, among them
340 <a href="https://sourceforge.net/projects/audmes/">AUDio MEasurement
341 System (AUDMES)</a>. It is the only free software system I could find
342 focusing on measuring speakers and audio frequency response. In the
343 process I also found an interesting article from NOVO on
344 <a href="http://novo.press/understanding-speaker-specifications-and-frequency-response/">Understanding
345 Speaker Specifications and Frequency Response</a> and an article from
346 ecoustics on
347 <a href="https://www.ecoustics.com/articles/understanding-speaker-frequency-response/">Understanding
348 Speaker Frequency Response</a>, with a lot of information on what to
349 look for and how to interpret the graphs. Armed with this knowledge,
350 I set out to measure the state of my speakers.</p>
351
352 <p>The first hurdle was that AUDMES hadn't seen a commit for 10 years
353 and did not build with current compilers and libraries. I got in
354 touch with its author, who no longer was spending time on the program
355 but gave me write access to the subversion repository on Sourceforge.
356 The end result is that now the code build on Linux and is capable of
357 saving and loading the collected frequency response data in CSV
358 format. The application is quite nice and flexible, and I was able to
359 select the input and output audio interfaces independently. This made
360 it possible to use a USB mixer as the input source, while sending
361 output via my laptop headphone connection. I lacked the hardware and
362 cabling to figure out a different way to get independent cabling to
363 speakers and microphone.</p>
364
365 <p>Using this setup I could see how a large range of high frequencies
366 apparently were not making it out of my speakers. The picture show
367 the frequency response measurement of one of the speakers. Note the
368 frequency lines seem to be slightly misaligned, compared to the CSV
369 output from the program. I can not hear several of these are high
370 frequencies, according to measurement from
371 <a href="http://freehearingtestsoftware.com">Free Hearing Test
372 Software</a>, an freeware system to measure your hearing (still
373 looking for a free software alternative), so I do not know if they are
374 coming out out the speakers. I thus do not quite know how to figure
375 out if the missing frequencies is a problem with the microphone, the
376 amplifier or the speakers, but I managed to rule out the audio card in my
377 PC by measuring my Bose noise canceling headset using its own
378 microphone. This setup was able to see the high frequency tones, so
379 the problem with my stereo had to be in the amplifier or speakers.</p>
380
381 <p>Anyway, to try to role out one factor I ended up picking up a new
382 set of speakers at a flee marked, and these work a lot better than the
383 old speakers, so I guess the microphone and amplifier is OK. If you
384 need to measure your own speakers, check out AUDMES. If more people
385 get involved, perhaps the project could become good enough to
386 <a href="https://bugs.debian.org/910876">include in Debian</a>? And if
387 you know of some other free software to measure speakers and amplifier
388 performance, please let me know. I am aware of the freeware option
389 <a href="https://www.roomeqwizard.com/">REW</a>, but I want something
390 that can be developed also when the vendor looses interest.</p>
391
392 <p>As usual, if you use Bitcoin and want to show your support of my
393 activities, please send Bitcoin donations to my address
394 <b><a href="bitcoin:15oWEoG9dUPovwmUL9KWAnYRtNJEkP1u1b">15oWEoG9dUPovwmUL9KWAnYRtNJEkP1u1b</a></b>.</p>
395
396 </div>
397 <div class="tags">
398
399
400 Tags: <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>.
401
402
403 </div>
404 </div>
405 <div class="padding"></div>
406
407 <div class="entry">
408 <div class="title">
409 <a href="https://people.skolelinux.org/pere/blog/youtube_dl_for_nedlasting_fra_NRK_med_undertekster___nice_free_software.html">youtube-dl for nedlasting fra NRK med undertekster - nice free software</a>
410 </div>
411 <div class="date">
412 28th April 2018
413 </div>
414 <div class="body">
415 <p>I <a href="https://no.wikipedia.org/wiki/VHS">VHS-kassettenes</a>
416 tid var det rett frem å ta vare på et TV-program en ønsket å kunne se
417 senere, uten å være avhengig av at programmet ble sendt på nytt.
418 Kanskje ønsket en å se programmet på hytten der det ikke var
419 TV-signal, eller av andre grunner ha det tilgjengelig for fremtidig
420 fornøyelse. Dette er blitt vanskeligere med introduksjon av
421 digital-TV og webstreaming, der opptak til harddisk er utenfor de
422 flestes kontroll hvis de bruker ufri programvare og bokser kontrollert
423 av andre. Men for NRK her i Norge, finnes det heldigvis flere fri
424 programvare-alternativer, som jeg har
425 <a href="http://people.skolelinux.org/pere/blog/Hvordan_enkelt_laste_ned_filmer_fra_NRK.html">skrevet</a>
426 <a href="http://people.skolelinux.org/pere/blog/Hvordan_enkelt_laste_ned_filmer_fra_NRK_med_den__nye__l_sningen.html">om</a>
427 <a href="http://people.skolelinux.org/pere/blog/Nedlasting_fra_NRK__som_Matroska_med_undertekster.html">før</a>.
428 Så lenge kilden for nedlastingen er lovlig lagt ut på nett (hvilket
429 jeg antar NRK gjør), så er slik lagring til privat bruk også lovlig i
430 Norge.</p>
431
432 <p>Sist jeg så på saken, i 2016, nevnte jeg at
433 <a href="https://rg3.github.com/youtube-dl/">youtube-dl</a> ikke kunne
434 bake undertekster fra NRK inn i videofilene, og at jeg derfor
435 foretrakk andre alternativer. Nylig oppdaget jeg at dette har endret
436 seg. Fordelen med youtube-dl er at den er tilgjengelig direkte fra
437 Linux-distribusjoner som <a href="https://www.debian.org/">Debian</a>
438 og <a href="https://www.ubuntu.com/">Ubuntu</a>, slik at en slipper å
439 finne ut selv hvordan en skal få dem til å virke.</p>
440
441 <p>For å laste ned et NRK-innslag med undertekster, og få den norske
442 underteksten pakket inn i videofilen, så kan følgende kommando
443 brukes:</p>
444
445 <p><pre>
446 youtube-dl --write-sub --sub-format ttml \
447 --convert-subtitles srt --embed-subs \
448 https://tv.nrk.no/serie/ramm-ferdig-gaa/MUHU11000316/27-04-2018
449 </pre></p>
450
451 <p>URL-eksemplet er dagens toppsak på tv.nrk.no. Resultatet er en
452 MP4-fil med filmen og undertekster som kan spilles av med VLC. Merk
453 at VLC ikke viser frem undertekster før du aktiverer dem. For å gjøre
454 det, høyreklikk med musa i fremviservinduet, velg menyvalget for
455 undertekst og så norsk språk. Jeg testet også '--write-auto-sub',
456 men det kommandolinjeargumentet ser ikke ut til å fungere, så jeg
457 endte opp med settet med argumentlisten over, som jeg fant i en
458 feilrapport i youtube-dl-prosjektets samling over feilrapporter.</p>
459
460 <p>Denne støtten i youtube-dl gjør det svært enkelt å lagre
461 NRK-innslag, det være seg nyheter, filmer, serier eller dokumentater,
462 for å ha dem tilgjengelig for fremtidig referanse og bruk, uavhengig
463 av hvor lenge innslagene ligger tilgjengelig hos NRK. Så får det ikke
464 hjelpe at NRKs jurister mener at det er
465 <a href="http://people.skolelinux.org/pere/blog/Best___ikke_fortelle_noen_at_streaming_er_nedlasting___.html">vesensforskjellig
466 å legge tilgjengelig for nedlasting og for streaming</a>, når det rent
467 teknisk er samme sak.</p>
468
469 <p>Programmet youtube-dl støtter også en rekke andre nettsteder, se
470 prosjektoversikten for
471 <a href="http://rg3.github.io/youtube-dl/supportedsites.html">en
472 komplett liste</a>.</p>
473
474 </div>
475 <div class="tags">
476
477
478 Tags: <a href="https://people.skolelinux.org/pere/blog/tags/multimedia">multimedia</a>, <a href="https://people.skolelinux.org/pere/blog/tags/nice free software">nice free software</a>, <a href="https://people.skolelinux.org/pere/blog/tags/norsk">norsk</a>, <a href="https://people.skolelinux.org/pere/blog/tags/video">video</a>, <a href="https://people.skolelinux.org/pere/blog/tags/web">web</a>.
479
480
481 </div>
482 </div>
483 <div class="padding"></div>
484
485 <div class="entry">
486 <div class="title">
487 <a href="https://people.skolelinux.org/pere/blog/Oolite__a_life_in_space_as_vagabond_and_mercenary___nice_free_software.html">Oolite, a life in space as vagabond and mercenary - nice free software</a>
488 </div>
489 <div class="date">
490 11th December 2016
491 </div>
492 <div class="body">
493 <p align="center"><img width="70%" src="http://people.skolelinux.org/pere/blog/images/2016-12-11-nice-oolite.png"/></p>
494
495 <p>In my early years, I played
496 <a href="http://wiki.alioth.net/index.php/Classic_Elite">the epic game
497 Elite</a> on my PC. I spent many months trading and fighting in
498 space, and reached the 'elite' fighting status before I moved on. The
499 original Elite game was available on Commodore 64 and the IBM PC
500 edition I played had a 64 KB executable. I am still impressed today
501 that the authors managed to squeeze both a 3D engine and details about
502 more than 2000 planet systems across 7 galaxies into a binary so
503 small.</p>
504
505 <p>I have known about <a href="http://www.oolite.org/">the free
506 software game Oolite inspired by Elite</a> for a while, but did not
507 really have time to test it properly until a few days ago. It was
508 great to discover that my old knowledge about trading routes were
509 still valid. But my fighting and flying abilities were gone, so I had
510 to retrain to be able to dock on a space station. And I am still not
511 able to make much resistance when I am attacked by pirates, so I
512 bougth and mounted the most powerful laser in the rear to be able to
513 put up at least some resistance while fleeing for my life. :)</p>
514
515 <p>When playing Elite in the late eighties, I had to discover
516 everything on my own, and I had long lists of prices seen on different
517 planets to be able to decide where to trade what. This time I had the
518 advantages of the
519 <a href="http://wiki.alioth.net/index.php/Main_Page">Elite wiki</a>,
520 where information about each planet is easily available with common
521 price ranges and suggested trading routes. This improved my ability
522 to earn money and I have been able to earn enough to buy a lot of
523 useful equipent in a few days. I believe I originally played for
524 months before I could get a docking computer, while now I could get it
525 after less then a week.</p>
526
527 <p>If you like science fiction and dreamed of a life as a vagabond in
528 space, you should try out Oolite. It is available for Linux, MacOSX
529 and Windows, and is included in Debian and derivatives since 2011.</p>
530
531 <p>As usual, if you use Bitcoin and want to show your support of my
532 activities, please send Bitcoin donations to my address
533 <b><a href="bitcoin:15oWEoG9dUPovwmUL9KWAnYRtNJEkP1u1b">15oWEoG9dUPovwmUL9KWAnYRtNJEkP1u1b</a></b>.</p>
534
535 </div>
536 <div class="tags">
537
538
539 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>.
540
541
542 </div>
543 </div>
544 <div class="padding"></div>
545
546 <div class="entry">
547 <div class="title">
548 <a href="https://people.skolelinux.org/pere/blog/Coz_can_help_you_find_bottlenecks_in_multi_threaded_software___nice_free_software.html">Coz can help you find bottlenecks in multi-threaded software - nice free software</a>
549 </div>
550 <div class="date">
551 11th August 2016
552 </div>
553 <div class="body">
554 <p>This summer, I read a great article
555 "<a href="https://www.usenix.org/publications/login/summer2016/curtsinger">coz:
556 This Is the Profiler You're Looking For</a>" in USENIX ;login: about
557 how to profile multi-threaded programs. It presented a system for
558 profiling software by running experiences in the running program,
559 testing how run time performance is affected by "speeding up" parts of
560 the code to various degrees compared to a normal run. It does this by
561 slowing down parallel threads while the "faster up" code is running
562 and measure how this affect processing time. The processing time is
563 measured using probes inserted into the code, either using progress
564 counters (COZ_PROGRESS) or as latency meters (COZ_BEGIN/COZ_END). It
565 can also measure unmodified code by measuring complete the program
566 runtime and running the program several times instead.</p>
567
568 <p>The project and presentation was so inspiring that I would like to
569 get the system into Debian. I
570 <a href="https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=830708">created
571 a WNPP request for it</a> and contacted upstream to try to make the
572 system ready for Debian by sending patches. The build process need to
573 be changed a bit to avoid running 'git clone' to get dependencies, and
574 to include the JavaScript web page used to visualize the collected
575 profiling information included in the source package.
576 But I expect that should work out fairly soon.</p>
577
578 <p>The way the system work is fairly simple. To run an coz experiment
579 on a binary with debug symbols available, start the program like this:
580
581 <p><blockquote><pre>
582 coz run --- program-to-run
583 </pre></blockquote></p>
584
585 <p>This will create a text file profile.coz with the instrumentation
586 information. To show what part of the code affect the performance
587 most, use a web browser and either point it to
588 <a href="http://plasma-umass.github.io/coz/">http://plasma-umass.github.io/coz/</a>
589 or use the copy from git (in the gh-pages branch). Check out this web
590 site to have a look at several example profiling runs and get an idea what the end result from the profile runs look like. To make the
591 profiling more useful you include &lt;coz.h&gt; and insert the
592 COZ_PROGRESS or COZ_BEGIN and COZ_END at appropriate places in the
593 code, rebuild and run the profiler. This allow coz to do more
594 targeted experiments.</p>
595
596 <p>A video published by ACM
597 <a href="https://www.youtube.com/watch?v=jE0V-p1odPg">presenting the
598 Coz profiler</a> is available from Youtube. There is also a paper
599 from the 25th Symposium on Operating Systems Principles available
600 titled
601 <a href="https://www.usenix.org/conference/atc16/technical-sessions/presentation/curtsinger">Coz:
602 finding code that counts with causal profiling</a>.</p>
603
604 <p><a href="https://github.com/plasma-umass/coz">The source code</a>
605 for Coz is available from github. It will only build with clang
606 because it uses a
607 <a href="https://gcc.gnu.org/bugzilla/show_bug.cgi?id=55606">C++
608 feature missing in GCC</a>, but I've submitted
609 <a href="https://github.com/plasma-umass/coz/pull/67">a patch to solve
610 it</a> and hope it will be included in the upstream source soon.</p>
611
612 <p>Please get in touch if you, like me, would like to see this piece
613 of software in Debian. I would very much like some help with the
614 packaging effort, as I lack the in depth knowledge on how to package
615 C++ libraries.</p>
616
617 </div>
618 <div class="tags">
619
620
621 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>.
622
623
624 </div>
625 </div>
626 <div class="padding"></div>
627
628 <div class="entry">
629 <div class="title">
630 <a href="https://people.skolelinux.org/pere/blog/Creepy__visualise_geotagged_social_media_information___nice_free_software.html">Creepy, visualise geotagged social media information - nice free software</a>
631 </div>
632 <div class="date">
633 24th January 2016
634 </div>
635 <div class="body">
636 <p>Most people seem not to realise that every time they walk around
637 with the computerised radio beacon known as a mobile phone their
638 position is tracked by the phone company and often stored for a long
639 time (like every time a SMS is received or sent). And if their
640 computerised radio beacon is capable of running programs (often called
641 mobile apps) downloaded from the Internet, these programs are often
642 also capable of tracking their location (if the app requested access
643 during installation). And when these programs send out information to
644 central collection points, the location is often included, unless
645 extra care is taken to not send the location. The provided
646 information is used by several entities, for good and bad (what is
647 good and bad, depend on your point of view). What is certain, is that
648 the private sphere and the right to free movement is challenged and
649 perhaps even eradicated for those announcing their location this way,
650 when they share their whereabouts with private and public
651 entities.</p>
652
653 <p align="center"><img width="70%" src="http://people.skolelinux.org/pere/blog/images/2016-01-24-nice-creepy-desktop-window.png"></p>
654
655 <p>The phone company logs provide a register of locations to check out
656 when one want to figure out what the tracked person was doing. It is
657 unavailable for most of us, but provided to selected government
658 officials, company staff, those illegally buying information from
659 unfaithful servants and crackers stealing the information. But the
660 public information can be collected and analysed, and a free software
661 tool to do so is called
662 <a href="http://www.geocreepy.com/">Creepy or Cree.py</a>. I
663 discovered it when I read
664 <a href="http://www.aftenposten.no/kultur/Slik-kan-du-bli-overvaket-pa-Twitter-og-Instagram-uten-a-ane-det-7787884.html">an
665 article about Creepy</a> in the Norwegian newspaper Aftenposten i
666 November 2014, and decided to check if it was available in Debian.
667 The python program was in Debian, but
668 <a href="https://tracker.debian.org/pkg/creepy">the version in
669 Debian</a> was completely broken and practically unmaintained. I
670 uploaded a new version which did not work quite right, but did not
671 have time to fix it then. This Christmas I decided to finally try to
672 get Creepy operational in Debian. Now a fixed version is available in
673 Debian unstable and testing, and almost all Debian specific patches
674 are now included
675 <a href="https://github.com/jkakavas/creepy">upstream</a>.</p>
676
677 <p>The Creepy program visualises geolocation information fetched from
678 Twitter, Instagram, Flickr and Google+, and allow one to get a
679 complete picture of every social media message posted recently in a
680 given area, or track the movement of a given individual across all
681 these services. Earlier it was possible to use the search API of at
682 least some of these services without identifying oneself, but these
683 days it is impossible. This mean that to use Creepy, you need to
684 configure it to log in as yourself on these services, and provide
685 information to them about your search interests. This should be taken
686 into account when using Creepy, as it will also share information
687 about yourself with the services.</p>
688
689 <p>The picture above show the twitter messages sent from (or at least
690 geotagged with a position from) the city centre of Oslo, the capital
691 of Norway. One useful way to use Creepy is to first look at
692 information tagged with an area of interest, and next look at all the
693 information provided by one or more individuals who was in the area.
694 I tested it by checking out which celebrity provide their location in
695 twitter messages by checkout out who sent twitter messages near a
696 Norwegian TV station, and next could track their position over time,
697 making it possible to locate their home and work place, among other
698 things. A similar technique have been
699 <a href="http://www.buzzfeed.com/maxseddon/does-this-soldiers-instagram-account-prove-russia-is-covertl">used
700 to locate Russian soldiers in Ukraine</a>, and it is both a powerful
701 tool to discover lying governments, and a useful tool to help people
702 understand the value of the private information they provide to the
703 public.</p>
704
705 <p>The package is not trivial to backport to Debian Stable/Jessie, as
706 it depend on several python modules currently missing in Jessie (at
707 least python-instagram, python-flickrapi and
708 python-requests-toolbelt).</p>
709
710 <p>(I have uploaded
711 <a href="https://screenshots.debian.net/package/creepy">the image to
712 screenshots.debian.net</a> and licensed it under the same terms as the
713 Creepy program in Debian.)</p>
714
715 </div>
716 <div class="tags">
717
718
719 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>.
720
721
722 </div>
723 </div>
724 <div class="padding"></div>
725
726 <div class="entry">
727 <div class="title">
728 <a href="https://people.skolelinux.org/pere/blog/OpenALPR__find_car_license_plates_in_video_streams___nice_free_software.html">OpenALPR, find car license plates in video streams - nice free software</a>
729 </div>
730 <div class="date">
731 23rd December 2015
732 </div>
733 <div class="body">
734 <p>When I was a kid, we used to collect "car numbers", as we used to
735 call the car license plate numbers in those days. I would write the
736 numbers down in my little book and compare notes with the other kids
737 to see how many region codes we had seen and if we had seen some
738 exotic or special region codes and numbers. It was a fun game to pass
739 time, as we kids have plenty of it.</p>
740
741 <p>A few days I came across
742 <a href="https://github.com/openalpr/openalpr">the OpenALPR
743 project</a>, a free software project to automatically discover and
744 report license plates in images and video streams, and provide the
745 "car numbers" in a machine readable format. I've been looking for
746 such system for a while now, because I believe it is a bad idea that the
747 <a href="https://en.wikipedia.org/wiki/Automatic_number_plate_recognition">automatic
748 number plate recognition</a> tool only is available in the hands of
749 the powerful, and want it to be available also for the powerless to
750 even the score when it comes to surveillance and sousveillance. I
751 discovered the developer
752 <a href="https://bugs.debian.org/747509">wanted to get the tool into
753 Debian</a>, and as I too wanted it to be in Debian, I volunteered to
754 help him get it into shape to get the package uploaded into the Debian
755 archive.</p>
756
757 <p>Today we finally managed to get the package into shape and uploaded
758 it into Debian, where it currently
759 <a href="https://ftp-master.debian.org//new/openalpr_2.2.1-1.html">waits
760 in the NEW queue</a> for review by the Debian ftpmasters.</p>
761
762 <p>I guess you are wondering why on earth such tool would be useful
763 for the common folks, ie those not running a large government
764 surveillance system? Well, I plan to put it in a computer on my bike
765 and in my car, tracking the cars nearby and allowing me to be notified
766 when number plates on my watch list are discovered. Another use case
767 was suggested by a friend of mine, who wanted to set it up at his home
768 to open the car port automatically when it discovered the plate on his
769 car. When I mentioned it perhaps was a bit foolhardy to allow anyone
770 capable of placing his license plate number of a piece of cardboard to
771 open his car port, men replied that it was always unlocked anyway. I
772 guess for such use case it make sense. I am sure there are other use
773 cases too, for those with imagination and a vision.</p>
774
775 <p>If you want to build your own version of the Debian package, check
776 out the upstream git source and symlink ./distros/debian to ./debian/
777 before running "debuild" to build the source. Or wait a bit until the
778 package show up in unstable.</p>
779
780 </div>
781 <div class="tags">
782
783
784 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>.
785
786
787 </div>
788 </div>
789 <div class="padding"></div>
790
791 <div class="entry">
792 <div class="title">
793 <a href="https://people.skolelinux.org/pere/blog/listadmin__the_quick_way_to_moderate_mailman_lists___nice_free_software.html">listadmin, the quick way to moderate mailman lists - nice free software</a>
794 </div>
795 <div class="date">
796 22nd October 2014
797 </div>
798 <div class="body">
799 <p>If you ever had to moderate a mailman list, like the ones on
800 alioth.debian.org, you know the web interface is fairly slow to
801 operate. First you visit one web page, enter the moderation password
802 and get a new page shown with a list of all the messages to moderate
803 and various options for each email address. This take a while for
804 every list you moderate, and you need to do it regularly to do a good
805 job as a list moderator. But there is a quick alternative,
806 <a href="http://heim.ifi.uio.no/kjetilho/hacks/#listadmin">the
807 listadmin program</a>. It allow you to check lists for new messages
808 to moderate in a fraction of a second. Here is a test run on two
809 lists I recently took over:</p>
810
811 <p><blockquote><pre>
812 % time listadmin xiph
813 fetching data for pkg-xiph-commits@lists.alioth.debian.org ... nothing in queue
814 fetching data for pkg-xiph-maint@lists.alioth.debian.org ... nothing in queue
815
816 real 0m1.709s
817 user 0m0.232s
818 sys 0m0.012s
819 %
820 </pre></blockquote></p>
821
822 <p>In 1.7 seconds I had checked two mailing lists and confirmed that
823 there are no message in the moderation queue. Every morning I
824 currently moderate 68 mailman lists, and it normally take around two
825 minutes. When I took over the two pkg-xiph lists above a few days
826 ago, there were 400 emails waiting in the moderator queue. It took me
827 less than 15 minutes to process them all using the listadmin
828 program.</p>
829
830 <p>If you install
831 <a href="https://tracker.debian.org/pkg/listadmin">the listadmin
832 package</a> from Debian and create a file <tt>~/.listadmin.ini</tt>
833 with content like this, the moderation task is a breeze:</p>
834
835 <p><blockquote><pre>
836 username username@example.org
837 spamlevel 23
838 default discard
839 discard_if_reason "Posting restricted to members only. Remove us from your mail list."
840
841 password secret
842 adminurl https://{domain}/mailman/admindb/{list}
843 mailman-list@lists.example.com
844
845 password hidden
846 other-list@otherserver.example.org
847 </pre></blockquote></p>
848
849 <p>There are other options to set as well. Check the manual page to
850 learn the details.</p>
851
852 <p>If you are forced to moderate lists on a mailman installation where
853 the SSL certificate is self signed or not properly signed by a
854 generally accepted signing authority, you can set a environment
855 variable when calling listadmin to disable SSL verification:</p>
856
857 <p><blockquote><pre>
858 PERL_LWP_SSL_VERIFY_HOSTNAME=0 listadmin
859 </pre></blockquote></p>
860
861 <p>If you want to moderate a subset of the lists you take care of, you
862 can provide an argument to the listadmin script like I do in the
863 initial screen dump (the xiph argument). Using an argument, only
864 lists matching the argument string will be processed. This make it
865 quick to accept messages if you notice the moderation request in your
866 email.</p>
867
868 <p>Without the listadmin program, I would never be the moderator of 68
869 mailing lists, as I simply do not have time to spend on that if the
870 process was any slower. The listadmin program have saved me hours of
871 time I could spend elsewhere over the years. It truly is nice free
872 software.</p>
873
874 <p>As usual, if you use Bitcoin and want to show your support of my
875 activities, please send Bitcoin donations to my address
876 <b><a href="bitcoin:15oWEoG9dUPovwmUL9KWAnYRtNJEkP1u1b">15oWEoG9dUPovwmUL9KWAnYRtNJEkP1u1b</a></b>.</p>
877
878 <p>Update 2014-10-27: Added missing 'username' statement in
879 configuration example. Also, I've been told that the
880 PERL_LWP_SSL_VERIFY_HOSTNAME=0 setting do not work for everyone. Not
881 sure why.</p>
882
883 </div>
884 <div class="tags">
885
886
887 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>.
888
889
890 </div>
891 </div>
892 <div class="padding"></div>
893
894 <div class="entry">
895 <div class="title">
896 <a href="https://people.skolelinux.org/pere/blog/S3QL__a_locally_mounted_cloud_file_system___nice_free_software.html">S3QL, a locally mounted cloud file system - nice free software</a>
897 </div>
898 <div class="date">
899 9th April 2014
900 </div>
901 <div class="body">
902 <p>For a while now, I have been looking for a sensible offsite backup
903 solution for use at home. My requirements are simple, it must be
904 cheap and locally encrypted (in other words, I keep the encryption
905 keys, the storage provider do not have access to my private files).
906 One idea me and my friends had many years ago, before the cloud
907 storage providers showed up, was to use Google mail as storage,
908 writing a Linux block device storing blocks as emails in the mail
909 service provided by Google, and thus get heaps of free space. On top
910 of this one can add encryption, RAID and volume management to have
911 lots of (fairly slow, I admit that) cheap and encrypted storage. But
912 I never found time to implement such system. But the last few weeks I
913 have looked at a system called
914 <a href="https://bitbucket.org/nikratio/s3ql/">S3QL</a>, a locally
915 mounted network backed file system with the features I need.</p>
916
917 <p>S3QL is a fuse file system with a local cache and cloud storage,
918 handling several different storage providers, any with Amazon S3,
919 Google Drive or OpenStack API. There are heaps of such storage
920 providers. S3QL can also use a local directory as storage, which
921 combined with sshfs allow for file storage on any ssh server. S3QL
922 include support for encryption, compression, de-duplication, snapshots
923 and immutable file systems, allowing me to mount the remote storage as
924 a local mount point, look at and use the files as if they were local,
925 while the content is stored in the cloud as well. This allow me to
926 have a backup that should survive fire. The file system can not be
927 shared between several machines at the same time, as only one can
928 mount it at the time, but any machine with the encryption key and
929 access to the storage service can mount it if it is unmounted.</p>
930
931 <p>It is simple to use. I'm using it on Debian Wheezy, where the
932 package is included already. So to get started, run <tt>apt-get
933 install s3ql</tt>. Next, pick a storage provider. I ended up picking
934 Greenqloud, after reading their nice recipe on
935 <a href="https://greenqloud.zendesk.com/entries/44611757-How-To-Use-S3QL-to-mount-a-StorageQloud-bucket-on-Debian-Wheezy">how
936 to use S3QL with their Amazon S3 service</a>, because I trust the laws
937 in Iceland more than those in USA when it come to keeping my personal
938 data safe and private, and thus would rather spend money on a company
939 in Iceland. Another nice recipe is available from the article
940 <a href="http://www.admin-magazine.com/HPC/Articles/HPC-Cloud-Storage">S3QL
941 Filesystem for HPC Storage</a> by Jeff Layton in the HPC section of
942 Admin magazine. When the provider is picked, figure out how to get
943 the API key needed to connect to the storage API. With Greencloud,
944 the key did not show up until I had added payment details to my
945 account.</p>
946
947 <p>Armed with the API access details, it is time to create the file
948 system. First, create a new bucket in the cloud. This bucket is the
949 file system storage area. I picked a bucket name reflecting the
950 machine that was going to store data there, but any name will do.
951 I'll refer to it as <tt>bucket-name</tt> below. In addition, one need
952 the API login and password, and a locally created password. Store it
953 all in ~root/.s3ql/authinfo2 like this:
954
955 <p><blockquote><pre>
956 [s3c]
957 storage-url: s3c://s.greenqloud.com:443/bucket-name
958 backend-login: API-login
959 backend-password: API-password
960 fs-passphrase: local-password
961 </pre></blockquote></p>
962
963 <p>I create my local passphrase using <tt>pwget 50</tt> or similar,
964 but any sensible way to create a fairly random password should do it.
965 Armed with these details, it is now time to run mkfs, entering the API
966 details and password to create it:</p>
967
968 <p><blockquote><pre>
969 # mkdir -m 700 /var/lib/s3ql-cache
970 # mkfs.s3ql --cachedir /var/lib/s3ql-cache --authfile /root/.s3ql/authinfo2 \
971 --ssl s3c://s.greenqloud.com:443/bucket-name
972 Enter backend login:
973 Enter backend password:
974 Before using S3QL, make sure to read the user's guide, especially
975 the 'Important Rules to Avoid Loosing Data' section.
976 Enter encryption password:
977 Confirm encryption password:
978 Generating random encryption key...
979 Creating metadata tables...
980 Dumping metadata...
981 ..objects..
982 ..blocks..
983 ..inodes..
984 ..inode_blocks..
985 ..symlink_targets..
986 ..names..
987 ..contents..
988 ..ext_attributes..
989 Compressing and uploading metadata...
990 Wrote 0.00 MB of compressed metadata.
991 # </pre></blockquote></p>
992
993 <p>The next step is mounting the file system to make the storage available.
994
995 <p><blockquote><pre>
996 # mount.s3ql --cachedir /var/lib/s3ql-cache --authfile /root/.s3ql/authinfo2 \
997 --ssl --allow-root s3c://s.greenqloud.com:443/bucket-name /s3ql
998 Using 4 upload threads.
999 Downloading and decompressing metadata...
1000 Reading metadata...
1001 ..objects..
1002 ..blocks..
1003 ..inodes..
1004 ..inode_blocks..
1005 ..symlink_targets..
1006 ..names..
1007 ..contents..
1008 ..ext_attributes..
1009 Mounting filesystem...
1010 # df -h /s3ql
1011 Filesystem Size Used Avail Use% Mounted on
1012 s3c://s.greenqloud.com:443/bucket-name 1.0T 0 1.0T 0% /s3ql
1013 #
1014 </pre></blockquote></p>
1015
1016 <p>The file system is now ready for use. I use rsync to store my
1017 backups in it, and as the metadata used by rsync is downloaded at
1018 mount time, no network traffic (and storage cost) is triggered by
1019 running rsync. To unmount, one should not use the normal umount
1020 command, as this will not flush the cache to the cloud storage, but
1021 instead running the umount.s3ql command like this:
1022
1023 <p><blockquote><pre>
1024 # umount.s3ql /s3ql
1025 #
1026 </pre></blockquote></p>
1027
1028 <p>There is a fsck command available to check the file system and
1029 correct any problems detected. This can be used if the local server
1030 crashes while the file system is mounted, to reset the "already
1031 mounted" flag. This is what it look like when processing a working
1032 file system:</p>
1033
1034 <p><blockquote><pre>
1035 # fsck.s3ql --force --ssl s3c://s.greenqloud.com:443/bucket-name
1036 Using cached metadata.
1037 File system seems clean, checking anyway.
1038 Checking DB integrity...
1039 Creating temporary extra indices...
1040 Checking lost+found...
1041 Checking cached objects...
1042 Checking names (refcounts)...
1043 Checking contents (names)...
1044 Checking contents (inodes)...
1045 Checking contents (parent inodes)...
1046 Checking objects (reference counts)...
1047 Checking objects (backend)...
1048 ..processed 5000 objects so far..
1049 ..processed 10000 objects so far..
1050 ..processed 15000 objects so far..
1051 Checking objects (sizes)...
1052 Checking blocks (referenced objects)...
1053 Checking blocks (refcounts)...
1054 Checking inode-block mapping (blocks)...
1055 Checking inode-block mapping (inodes)...
1056 Checking inodes (refcounts)...
1057 Checking inodes (sizes)...
1058 Checking extended attributes (names)...
1059 Checking extended attributes (inodes)...
1060 Checking symlinks (inodes)...
1061 Checking directory reachability...
1062 Checking unix conventions...
1063 Checking referential integrity...
1064 Dropping temporary indices...
1065 Backing up old metadata...
1066 Dumping metadata...
1067 ..objects..
1068 ..blocks..
1069 ..inodes..
1070 ..inode_blocks..
1071 ..symlink_targets..
1072 ..names..
1073 ..contents..
1074 ..ext_attributes..
1075 Compressing and uploading metadata...
1076 Wrote 0.89 MB of compressed metadata.
1077 #
1078 </pre></blockquote></p>
1079
1080 <p>Thanks to the cache, working on files that fit in the cache is very
1081 quick, about the same speed as local file access. Uploading large
1082 amount of data is to me limited by the bandwidth out of and into my
1083 house. Uploading 685 MiB with a 100 MiB cache gave me 305 kiB/s,
1084 which is very close to my upload speed, and downloading the same
1085 Debian installation ISO gave me 610 kiB/s, close to my download speed.
1086 Both were measured using <tt>dd</tt>. So for me, the bottleneck is my
1087 network, not the file system code. I do not know what a good cache
1088 size would be, but suspect that the cache should e larger than your
1089 working set.</p>
1090
1091 <p>I mentioned that only one machine can mount the file system at the
1092 time. If another machine try, it is told that the file system is
1093 busy:</p>
1094
1095 <p><blockquote><pre>
1096 # mount.s3ql --cachedir /var/lib/s3ql-cache --authfile /root/.s3ql/authinfo2 \
1097 --ssl --allow-root s3c://s.greenqloud.com:443/bucket-name /s3ql
1098 Using 8 upload threads.
1099 Backend reports that fs is still mounted elsewhere, aborting.
1100 #
1101 </pre></blockquote></p>
1102
1103 <p>The file content is uploaded when the cache is full, while the
1104 metadata is uploaded once every 24 hour by default. To ensure the
1105 file system content is flushed to the cloud, one can either umount the
1106 file system, or ask S3QL to flush the cache and metadata using
1107 s3qlctrl:
1108
1109 <p><blockquote><pre>
1110 # s3qlctrl upload-meta /s3ql
1111 # s3qlctrl flushcache /s3ql
1112 #
1113 </pre></blockquote></p>
1114
1115 <p>If you are curious about how much space your data uses in the
1116 cloud, and how much compression and deduplication cut down on the
1117 storage usage, you can use s3qlstat on the mounted file system to get
1118 a report:</p>
1119
1120 <p><blockquote><pre>
1121 # s3qlstat /s3ql
1122 Directory entries: 9141
1123 Inodes: 9143
1124 Data blocks: 8851
1125 Total data size: 22049.38 MB
1126 After de-duplication: 21955.46 MB (99.57% of total)
1127 After compression: 21877.28 MB (99.22% of total, 99.64% of de-duplicated)
1128 Database size: 2.39 MB (uncompressed)
1129 (some values do not take into account not-yet-uploaded dirty blocks in cache)
1130 #
1131 </pre></blockquote></p>
1132
1133 <p>I mentioned earlier that there are several possible suppliers of
1134 storage. I did not try to locate them all, but am aware of at least
1135 <a href="https://www.greenqloud.com/">Greenqloud</a>,
1136 <a href="http://drive.google.com/">Google Drive</a>,
1137 <a href="http://aws.amazon.com/s3/">Amazon S3 web serivces</a>,
1138 <a href="http://www.rackspace.com/">Rackspace</a> and
1139 <a href="http://crowncloud.net/">Crowncloud</A>. The latter even
1140 accept payment in Bitcoin. Pick one that suit your need. Some of
1141 them provide several GiB of free storage, but the prize models are
1142 quite different and you will have to figure out what suits you
1143 best.</p>
1144
1145 <p>While researching this blog post, I had a look at research papers
1146 and posters discussing the S3QL file system. There are several, which
1147 told me that the file system is getting a critical check by the
1148 science community and increased my confidence in using it. One nice
1149 poster is titled
1150 "<a href="http://www.lanl.gov/orgs/adtsc/publications/science_highlights_2013/docs/pg68_69.pdf">An
1151 Innovative Parallel Cloud Storage System using OpenStack’s SwiftObject
1152 Store and Transformative Parallel I/O Approach</a>" by Hsing-Bung
1153 Chen, Benjamin McClelland, David Sherrill, Alfred Torrez, Parks Fields
1154 and Pamela Smith. Please have a look.</p>
1155
1156 <p>Given my problems with different file systems earlier, I decided to
1157 check out the mounted S3QL file system to see if it would be usable as
1158 a home directory (in other word, that it provided POSIX semantics when
1159 it come to locking and umask handling etc). Running
1160 <a href="http://people.skolelinux.org/pere/blog/Testing_if_a_file_system_can_be_used_for_home_directories___.html">my
1161 test code to check file system semantics</a>, I was happy to discover that
1162 no error was found. So the file system can be used for home
1163 directories, if one chooses to do so.</p>
1164
1165 <p>If you do not want a locally file system, and want something that
1166 work without the Linux fuse file system, I would like to mention the
1167 <a href="http://www.tarsnap.com/">Tarsnap service</a>, which also
1168 provide locally encrypted backup using a command line client. It have
1169 a nicer access control system, where one can split out read and write
1170 access, allowing some systems to write to the backup and others to
1171 only read from it.</p>
1172
1173 <p>As usual, if you use Bitcoin and want to show your support of my
1174 activities, please send Bitcoin donations to my address
1175 <b><a href="bitcoin:15oWEoG9dUPovwmUL9KWAnYRtNJEkP1u1b">15oWEoG9dUPovwmUL9KWAnYRtNJEkP1u1b</a></b>.</p>
1176
1177 </div>
1178 <div class="tags">
1179
1180
1181 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>, <a href="https://people.skolelinux.org/pere/blog/tags/personvern">personvern</a>, <a href="https://people.skolelinux.org/pere/blog/tags/sikkerhet">sikkerhet</a>.
1182
1183
1184 </div>
1185 </div>
1186 <div class="padding"></div>
1187
1188 <div class="entry">
1189 <div class="title">
1190 <a href="https://people.skolelinux.org/pere/blog/ReactOS_Windows_clone___nice_free_software.html">ReactOS Windows clone - nice free software</a>
1191 </div>
1192 <div class="date">
1193 1st April 2014
1194 </div>
1195 <div class="body">
1196 <p>Microsoft have announced that Windows XP reaches its end of life
1197 2014-04-08, in 7 days. But there are heaps of machines still running
1198 Windows XP, and depending on Windows XP to run their applications, and
1199 upgrading will be expensive, both when it comes to money and when it
1200 comes to the amount of effort needed to migrate from Windows XP to a
1201 new operating system. Some obvious options (buy new a Windows
1202 machine, buy a MacOSX machine, install Linux on the existing machine)
1203 are already well known and covered elsewhere. Most of them involve
1204 leaving the user applications installed on Windows XP behind and
1205 trying out replacements or updated versions. In this blog post I want
1206 to mention one strange bird that allow people to keep the hardware and
1207 the existing Windows XP applications and run them on a free software
1208 operating system that is Windows XP compatible.</p>
1209
1210 <p><a href="http://www.reactos.org/">ReactOS</a> is a free software
1211 operating system (GNU GPL licensed) working on providing a operating
1212 system that is binary compatible with Windows, able to run windows
1213 programs directly and to use Windows drivers for hardware directly.
1214 The project goal is for Windows user to keep their existing machines,
1215 drivers and software, and gain the advantages from user a operating
1216 system without usage limitations caused by non-free licensing. It is
1217 a Windows clone running directly on the hardware, so quite different
1218 from the approach taken by <a href="http://www.winehq.org/">the Wine
1219 project</a>, which make it possible to run Windows binaries on
1220 Linux.</p>
1221
1222 <p>The ReactOS project share code with the Wine project, so most
1223 shared libraries available on Windows are already implemented already.
1224 There is also a software manager like the one we are used to on Linux,
1225 allowing the user to install free software applications with a simple
1226 click directly from the Internet. Check out the
1227 <a href="http://www.reactos.org/screenshots">screen shots on the
1228 project web site</a> for an idea what it look like (it looks just like
1229 Windows before metro).</p>
1230
1231 <p>I do not use ReactOS myself, preferring Linux and Unix like
1232 operating systems. I've tested it, and it work fine in a virt-manager
1233 virtual machine. The browser, minesweeper, notepad etc is working
1234 fine as far as I can tell. Unfortunately, my main test application
1235 is the software included on a CD with the Lego Mindstorms NXT, which
1236 seem to install just fine from CD but fail to leave any binaries on
1237 the disk after the installation. So no luck with that test software.
1238 No idea why, but hope someone else figure out and fix the problem.
1239 I've tried the ReactOS Live ISO on a physical machine, and it seemed
1240 to work just fine. If you like Windows and want to keep running your
1241 old Windows binaries, check it out by
1242 <a href="http://www.reactos.org/download">downloading</a> the
1243 installation CD, the live CD or the preinstalled virtual machine
1244 image.</p>
1245
1246 </div>
1247 <div class="tags">
1248
1249
1250 Tags: <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>, <a href="https://people.skolelinux.org/pere/blog/tags/reactos">reactos</a>.
1251
1252
1253 </div>
1254 </div>
1255 <div class="padding"></div>
1256
1257 <div class="entry">
1258 <div class="title">
1259 <a href="https://people.skolelinux.org/pere/blog/Video_DVD_reader_library___python_dvdvideo___nice_free_software.html">Video DVD reader library / python-dvdvideo - nice free software</a>
1260 </div>
1261 <div class="date">
1262 21st March 2014
1263 </div>
1264 <div class="body">
1265 <p>Keeping your DVD collection safe from scratches and curious
1266 children fingers while still having it available when you want to see a
1267 movie is not straight forward. My preferred method at the moment is
1268 to store a full copy of the ISO on a hard drive, and use VLC, Popcorn
1269 Hour or other useful players to view the resulting file. This way the
1270 subtitles and bonus material are still available and using the ISO is
1271 just like inserting the original DVD record in the DVD player.</p>
1272
1273 <p>Earlier I used dd for taking security copies, but it do not handle
1274 DVDs giving read errors (which are quite a few of them). I've also
1275 tried using
1276 <a href="http://people.skolelinux.org/pere/blog/Ripping_problematic_DVDs_using_dvdbackup_and_genisoimage.html">dvdbackup
1277 and genisoimage</a>, but these days I use the marvellous python library
1278 and program
1279 <a href="http://bblank.thinkmo.de/blog/new-software-python-dvdvideo">python-dvdvideo</a>
1280 written by Bastian Blank. It is
1281 <a href="http://packages.qa.debian.org/p/python-dvdvideo.html">in Debian
1282 already</a> and the binary package name is python3-dvdvideo. Instead
1283 of trying to read every block from the DVD, it parses the file
1284 structure and figure out which block on the DVD is actually in used,
1285 and only read those blocks from the DVD. This work surprisingly well,
1286 and I have been able to almost backup my entire DVD collection using
1287 this method.</p>
1288
1289 <p>So far, python-dvdvideo have failed on between 10 and
1290 20 DVDs, which is a small fraction of my collection. The most common
1291 problem is
1292 <a href="https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=720831">DVDs
1293 using UTF-16 instead of UTF-8 characters</a>, which according to
1294 Bastian is against the DVD specification (and seem to cause some
1295 players to fail too). A rarer problem is what seem to be inconsistent
1296 DVD structures, as the python library
1297 <a href="https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=723079">claim
1298 there is a overlap between objects</a>. An equally rare problem claim
1299 <a href="https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=741878">some
1300 value is out of range</a>. No idea what is going on there. I wish I
1301 knew enough about the DVD format to fix these, to ensure my movie
1302 collection will stay with me in the future.</p>
1303
1304 <p>So, if you need to keep your DVDs safe, back them up using
1305 python-dvdvideo. :)</p>
1306
1307 </div>
1308 <div class="tags">
1309
1310
1311 Tags: <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/nice free software">nice free software</a>, <a href="https://people.skolelinux.org/pere/blog/tags/opphavsrett">opphavsrett</a>, <a href="https://people.skolelinux.org/pere/blog/tags/video">video</a>.
1312
1313
1314 </div>
1315 </div>
1316 <div class="padding"></div>
1317
1318 <div class="entry">
1319 <div class="title">
1320 <a href="https://people.skolelinux.org/pere/blog/Free_Timetabling_Software___nice_free_software.html">Free Timetabling Software - nice free software</a>
1321 </div>
1322 <div class="date">
1323 7th July 2012
1324 </div>
1325 <div class="body">
1326 <p>Included in <a href="http://www.skolelinux.org/">Debian Edu /
1327 Skolelinux</a> is a large collection of end user and school specific
1328 software. It is one of the packages not installed by default but
1329 provided in the Debian archive for schools to install if they want to,
1330 is a system to automatically plan the school time table using
1331 information about available teachers, classes and rooms, combined with
1332 the list of required courses and how many hours each topic should
1333 receive. The software is
1334
1335 <a href="http://lalescu.ro/liviu/fet/">named FET</a>, and it provide a
1336 graphical user interface to input the required information, save the
1337 result in a fairly simple XML format, and generate time tables for
1338 both teachers and students. It is available both for
1339 <a href="http://lalescu.ro/liviu/fet/download.html">Linux, MacOSX and
1340 Windows</a>.</p>
1341
1342 <p>This is <a href="http://lalescu.ro/liviu/fet/features.html">the
1343 feature list</a>, liftet from the project web site:</p>
1344
1345 <p><ul>
1346
1347 <li>FET is free software, licensed under the GNU GPL v2 or later.
1348 You can freely use, copy, modify and redistribute it </li>
1349
1350 <li>Localized to en_US (US English, default), ar (Arabic), ca
1351 (Catalan), da (Danish), de (German), el (Greek), es (Spanish), fa
1352 (Persian), fr (French), gl (Galician), he (Hebrew), hu
1353 (Hungarian), id (Indonesian), it (Italian), lt (Lithuanian), mk
1354 (Macedonian), ms (Malay), nl (Dutch), pl (Polish), pt_BR
1355 (Brazilian Portuguese), ro (Romanian), ru (Russian), si (Sinhala),
1356 sk (Slovak), sr (Serbian), tr (Turkish), uk (Ukrainian), uz
1357 (Uzbek) and vi (Vietnamese) (incompletely for some languages)
1358 </li>
1359
1360 <li>Fully automatic generation algorithm, allowing also
1361 semi-automatic or manual allocation</li>
1362
1363 <li>Platform independent implementation, allowing running on
1364 GNU/Linux, Windows, Mac and any system that Qt supports </li>
1365
1366 <li>Flexible modular XML format for the input file, allowing editing
1367 with an XML editor or by hand (besides FET interface)</li>
1368
1369 <li>Import/export from CSV format</li>
1370
1371 <li>The resulted timetables are exported into HTML, XML and CSV
1372 formats </li>
1373
1374 <li>Flexible students structure, organized into sets: years, groups
1375 and subgroups. FET allows overlapping years and groups and
1376 non-overlapping subgroups. You can even define individual students
1377 (as separate sets)</li>
1378
1379 <li>Each constraint has a weight percentage, from 0.0% to 100.0%
1380 (but some special constraints are allowed to have only 100% weight
1381 percentage)</li>
1382
1383 <li>Limits for the algorithm (all these limits can be increased on
1384 demand, as a custom version, because this would require a bit more
1385 memory):
1386 <ul>
1387 <li>Maximum total number of hours (periods) per day: 60</li>
1388 <li>Maximum number of working days per week: 35</li>
1389 <li>Maximum total number of teachers: 6000</li>
1390 <li>Maximum total number of sets of students: 30000</li>
1391 <li>Maximum total number of subjects: 6000</li>
1392 <li>Virtually unlimited number of activity tags</li>
1393 <li>Maximum number of activities: 30000</li>
1394 <li>Maximum number of rooms: 6000</li>
1395 <li>Maximum number of buildings: 6000</li>
1396 <li>Possibility of adding multiple teachers and
1397 students sets for each activity. (it is possible
1398 also to have no teachers or no students sets for an
1399 activity)</li>
1400 <li>Virtually unlimited number of time constraints</li>
1401 <li>Virtually unlimited number of space constraints</li>
1402 </ul></li>
1403
1404 <li>A large and flexible palette of time constraints:
1405 <ul>
1406 <li>Break periods</li>
1407 <li>For teacher(s):
1408 <ul>
1409 <li>Not available periods</li>
1410 <li>Max/min days per week</li>
1411 <li>Max gaps per day/week</li>
1412 <li>Max hours daily/continuously</li>
1413 <li>Min hours daily</li>
1414 <li>Max hours daily/continuously with an activity tag</li>
1415
1416 <li>Respect working in an hourly interval a max number of
1417 days per week</li>
1418 </ul></li>
1419 <li>For students (sets):
1420 <ul>
1421 <li>Not available periods</li>
1422 <li>Begins early (specify max allowed beginnings at second hour)</li>
1423 <li>Max gaps per day/week</li>
1424 <li>Max hours daily/continuously</li>
1425 <li>Min hours daily</li>
1426 <li>Max hours daily/continuously with an activity tag</li>
1427
1428 <li>Respect working in an hourly interval a max number of
1429 days per week</li>
1430 </ul></li>
1431 <li>For an activity or a set of activities/subactivities:
1432 <ul>
1433 <li>A single preferred starting time</li>
1434 <li>A set of preferred starting times</li>
1435 <li>A set of preferred time slots</li>
1436 <li>Min/max days between them</li>
1437 <li>End(s) students day</li>
1438 <li>Same starting time/day/hour</li>
1439 <li>Occupy max time slots from selection (a complex and
1440 flexible constraint, useful in many situations)</li>
1441 <li>Consecutive, ordered, grouped (for 2 or 3 (sub)activities)</li>
1442 <li>Not overlapping</li>
1443 <li>Max simultaneous in selected time slots</li>
1444 <li>Min gaps between a set of (sub)activities</li>
1445 </ul></li>
1446 </ul></li>
1447
1448 <li>A large and flexible palette of space constraints:
1449 <ul>
1450 <li>Room not available periods</li>
1451 <li>For teacher(s):
1452 <ul>
1453 <li>Home room(s)</li>
1454 <li>Max building changes per day/week</li>
1455 <li>Min gaps between building changes</li>
1456 </ul>
1457 </li>
1458
1459 <li>For students (sets):
1460 <ul>
1461 <li>Home room(s)</li>
1462 <li>Max building changes per day/week</li>
1463 <li>Min gaps between building changes</li>
1464 </ul>
1465 </li>
1466 <li>Preferred room(s):
1467 <ul>
1468 <li>For a subject</li>
1469 <li>For an activity tag</li>
1470 <li>For a subject and an activity tag</li>
1471 <li>Individually for a (sub)activity</li>
1472 </ul>
1473 </li>
1474
1475 <li>For a set of activities:
1476 <ul>
1477 <li>Occupy a maximum number of different rooms</li>
1478 </ul>
1479 </li>
1480 </ul>
1481 </li>
1482 </ul></p>
1483
1484 <p>I have not used it myself, as I am not involved in time table
1485 planning at a school, but it seem to work fine when I test it. If you
1486 need to set up your schools time table, and is tired of doing it
1487 manually, check it out.
1488
1489 A quick summary on how to use it can be found in
1490 <a href="http://marvelsoft.co.in/wp/2012/03/generate-timetable-for-state-cbse-icse-igcse-schools-free/">a
1491 blog post from MarvelSoft</a>. If you find FET useful, please provide
1492 a recipe for the Debian Edu project in the
1493 <a href="http://wiki.debian.org/DebianEdu#Howtos">Debian Edu HowTo
1494 section</a>.</p>
1495
1496 </div>
1497 <div class="tags">
1498
1499
1500 Tags: <a href="https://people.skolelinux.org/pere/blog/tags/debian edu">debian edu</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>.
1501
1502
1503 </div>
1504 </div>
1505 <div class="padding"></div>
1506
1507 <p style="text-align: right;"><a href="nice free software.rss"><img src="https://people.skolelinux.org/pere/blog/xml.gif" alt="RSS Feed" width="36" height="14" /></a></p>
1508 <div id="sidebar">
1509
1510
1511
1512 <h2>Archive</h2>
1513 <ul>
1514
1515 <li>2023
1516 <ul>
1517
1518 <li><a href="https://people.skolelinux.org/pere/blog/archive/2023/01/">January (3)</a></li>
1519
1520 <li><a href="https://people.skolelinux.org/pere/blog/archive/2023/02/">February (1)</a></li>
1521
1522 <li><a href="https://people.skolelinux.org/pere/blog/archive/2023/03/">March (1)</a></li>
1523
1524 </ul></li>
1525
1526 <li>2022
1527 <ul>
1528
1529 <li><a href="https://people.skolelinux.org/pere/blog/archive/2022/02/">February (1)</a></li>
1530
1531 <li><a href="https://people.skolelinux.org/pere/blog/archive/2022/03/">March (3)</a></li>
1532
1533 <li><a href="https://people.skolelinux.org/pere/blog/archive/2022/04/">April (2)</a></li>
1534
1535 <li><a href="https://people.skolelinux.org/pere/blog/archive/2022/06/">June (2)</a></li>
1536
1537 <li><a href="https://people.skolelinux.org/pere/blog/archive/2022/07/">July (1)</a></li>
1538
1539 <li><a href="https://people.skolelinux.org/pere/blog/archive/2022/09/">September (1)</a></li>
1540
1541 <li><a href="https://people.skolelinux.org/pere/blog/archive/2022/10/">October (1)</a></li>
1542
1543 <li><a href="https://people.skolelinux.org/pere/blog/archive/2022/12/">December (1)</a></li>
1544
1545 </ul></li>
1546
1547 <li>2021
1548 <ul>
1549
1550 <li><a href="https://people.skolelinux.org/pere/blog/archive/2021/01/">January (2)</a></li>
1551
1552 <li><a href="https://people.skolelinux.org/pere/blog/archive/2021/02/">February (1)</a></li>
1553
1554 <li><a href="https://people.skolelinux.org/pere/blog/archive/2021/05/">May (1)</a></li>
1555
1556 <li><a href="https://people.skolelinux.org/pere/blog/archive/2021/06/">June (1)</a></li>
1557
1558 <li><a href="https://people.skolelinux.org/pere/blog/archive/2021/07/">July (3)</a></li>
1559
1560 <li><a href="https://people.skolelinux.org/pere/blog/archive/2021/08/">August (1)</a></li>
1561
1562 <li><a href="https://people.skolelinux.org/pere/blog/archive/2021/09/">September (1)</a></li>
1563
1564 <li><a href="https://people.skolelinux.org/pere/blog/archive/2021/10/">October (1)</a></li>
1565
1566 <li><a href="https://people.skolelinux.org/pere/blog/archive/2021/12/">December (1)</a></li>
1567
1568 </ul></li>
1569
1570 <li>2020
1571 <ul>
1572
1573 <li><a href="https://people.skolelinux.org/pere/blog/archive/2020/02/">February (2)</a></li>
1574
1575 <li><a href="https://people.skolelinux.org/pere/blog/archive/2020/03/">March (2)</a></li>
1576
1577 <li><a href="https://people.skolelinux.org/pere/blog/archive/2020/04/">April (2)</a></li>
1578
1579 <li><a href="https://people.skolelinux.org/pere/blog/archive/2020/05/">May (3)</a></li>
1580
1581 <li><a href="https://people.skolelinux.org/pere/blog/archive/2020/06/">June (2)</a></li>
1582
1583 <li><a href="https://people.skolelinux.org/pere/blog/archive/2020/07/">July (1)</a></li>
1584
1585 <li><a href="https://people.skolelinux.org/pere/blog/archive/2020/09/">September (1)</a></li>
1586
1587 <li><a href="https://people.skolelinux.org/pere/blog/archive/2020/10/">October (1)</a></li>
1588
1589 <li><a href="https://people.skolelinux.org/pere/blog/archive/2020/11/">November (1)</a></li>
1590
1591 </ul></li>
1592
1593 <li>2019
1594 <ul>
1595
1596 <li><a href="https://people.skolelinux.org/pere/blog/archive/2019/01/">January (4)</a></li>
1597
1598 <li><a href="https://people.skolelinux.org/pere/blog/archive/2019/02/">February (3)</a></li>
1599
1600 <li><a href="https://people.skolelinux.org/pere/blog/archive/2019/03/">March (3)</a></li>
1601
1602 <li><a href="https://people.skolelinux.org/pere/blog/archive/2019/05/">May (2)</a></li>
1603
1604 <li><a href="https://people.skolelinux.org/pere/blog/archive/2019/06/">June (5)</a></li>
1605
1606 <li><a href="https://people.skolelinux.org/pere/blog/archive/2019/07/">July (2)</a></li>
1607
1608 <li><a href="https://people.skolelinux.org/pere/blog/archive/2019/08/">August (1)</a></li>
1609
1610 <li><a href="https://people.skolelinux.org/pere/blog/archive/2019/09/">September (1)</a></li>
1611
1612 <li><a href="https://people.skolelinux.org/pere/blog/archive/2019/11/">November (1)</a></li>
1613
1614 <li><a href="https://people.skolelinux.org/pere/blog/archive/2019/12/">December (4)</a></li>
1615
1616 </ul></li>
1617
1618 <li>2018
1619 <ul>
1620
1621 <li><a href="https://people.skolelinux.org/pere/blog/archive/2018/01/">January (1)</a></li>
1622
1623 <li><a href="https://people.skolelinux.org/pere/blog/archive/2018/02/">February (5)</a></li>
1624
1625 <li><a href="https://people.skolelinux.org/pere/blog/archive/2018/03/">March (5)</a></li>
1626
1627 <li><a href="https://people.skolelinux.org/pere/blog/archive/2018/04/">April (3)</a></li>
1628
1629 <li><a href="https://people.skolelinux.org/pere/blog/archive/2018/06/">June (2)</a></li>
1630
1631 <li><a href="https://people.skolelinux.org/pere/blog/archive/2018/07/">July (5)</a></li>
1632
1633 <li><a href="https://people.skolelinux.org/pere/blog/archive/2018/08/">August (3)</a></li>
1634
1635 <li><a href="https://people.skolelinux.org/pere/blog/archive/2018/09/">September (3)</a></li>
1636
1637 <li><a href="https://people.skolelinux.org/pere/blog/archive/2018/10/">October (5)</a></li>
1638
1639 <li><a href="https://people.skolelinux.org/pere/blog/archive/2018/11/">November (2)</a></li>
1640
1641 <li><a href="https://people.skolelinux.org/pere/blog/archive/2018/12/">December (4)</a></li>
1642
1643 </ul></li>
1644
1645 <li>2017
1646 <ul>
1647
1648 <li><a href="https://people.skolelinux.org/pere/blog/archive/2017/01/">January (4)</a></li>
1649
1650 <li><a href="https://people.skolelinux.org/pere/blog/archive/2017/02/">February (3)</a></li>
1651
1652 <li><a href="https://people.skolelinux.org/pere/blog/archive/2017/03/">March (5)</a></li>
1653
1654 <li><a href="https://people.skolelinux.org/pere/blog/archive/2017/04/">April (2)</a></li>
1655
1656 <li><a href="https://people.skolelinux.org/pere/blog/archive/2017/06/">June (5)</a></li>
1657
1658 <li><a href="https://people.skolelinux.org/pere/blog/archive/2017/07/">July (1)</a></li>
1659
1660 <li><a href="https://people.skolelinux.org/pere/blog/archive/2017/08/">August (1)</a></li>
1661
1662 <li><a href="https://people.skolelinux.org/pere/blog/archive/2017/09/">September (3)</a></li>
1663
1664 <li><a href="https://people.skolelinux.org/pere/blog/archive/2017/10/">October (5)</a></li>
1665
1666 <li><a href="https://people.skolelinux.org/pere/blog/archive/2017/11/">November (3)</a></li>
1667
1668 <li><a href="https://people.skolelinux.org/pere/blog/archive/2017/12/">December (4)</a></li>
1669
1670 </ul></li>
1671
1672 <li>2016
1673 <ul>
1674
1675 <li><a href="https://people.skolelinux.org/pere/blog/archive/2016/01/">January (3)</a></li>
1676
1677 <li><a href="https://people.skolelinux.org/pere/blog/archive/2016/02/">February (2)</a></li>
1678
1679 <li><a href="https://people.skolelinux.org/pere/blog/archive/2016/03/">March (3)</a></li>
1680
1681 <li><a href="https://people.skolelinux.org/pere/blog/archive/2016/04/">April (8)</a></li>
1682
1683 <li><a href="https://people.skolelinux.org/pere/blog/archive/2016/05/">May (8)</a></li>
1684
1685 <li><a href="https://people.skolelinux.org/pere/blog/archive/2016/06/">June (2)</a></li>
1686
1687 <li><a href="https://people.skolelinux.org/pere/blog/archive/2016/07/">July (2)</a></li>
1688
1689 <li><a href="https://people.skolelinux.org/pere/blog/archive/2016/08/">August (5)</a></li>
1690
1691 <li><a href="https://people.skolelinux.org/pere/blog/archive/2016/09/">September (2)</a></li>
1692
1693 <li><a href="https://people.skolelinux.org/pere/blog/archive/2016/10/">October (3)</a></li>
1694
1695 <li><a href="https://people.skolelinux.org/pere/blog/archive/2016/11/">November (8)</a></li>
1696
1697 <li><a href="https://people.skolelinux.org/pere/blog/archive/2016/12/">December (5)</a></li>
1698
1699 </ul></li>
1700
1701 <li>2015
1702 <ul>
1703
1704 <li><a href="https://people.skolelinux.org/pere/blog/archive/2015/01/">January (7)</a></li>
1705
1706 <li><a href="https://people.skolelinux.org/pere/blog/archive/2015/02/">February (6)</a></li>
1707
1708 <li><a href="https://people.skolelinux.org/pere/blog/archive/2015/03/">March (1)</a></li>
1709
1710 <li><a href="https://people.skolelinux.org/pere/blog/archive/2015/04/">April (4)</a></li>
1711
1712 <li><a href="https://people.skolelinux.org/pere/blog/archive/2015/05/">May (3)</a></li>
1713
1714 <li><a href="https://people.skolelinux.org/pere/blog/archive/2015/06/">June (4)</a></li>
1715
1716 <li><a href="https://people.skolelinux.org/pere/blog/archive/2015/07/">July (6)</a></li>
1717
1718 <li><a href="https://people.skolelinux.org/pere/blog/archive/2015/08/">August (2)</a></li>
1719
1720 <li><a href="https://people.skolelinux.org/pere/blog/archive/2015/09/">September (2)</a></li>
1721
1722 <li><a href="https://people.skolelinux.org/pere/blog/archive/2015/10/">October (9)</a></li>
1723
1724 <li><a href="https://people.skolelinux.org/pere/blog/archive/2015/11/">November (6)</a></li>
1725
1726 <li><a href="https://people.skolelinux.org/pere/blog/archive/2015/12/">December (3)</a></li>
1727
1728 </ul></li>
1729
1730 <li>2014
1731 <ul>
1732
1733 <li><a href="https://people.skolelinux.org/pere/blog/archive/2014/01/">January (2)</a></li>
1734
1735 <li><a href="https://people.skolelinux.org/pere/blog/archive/2014/02/">February (3)</a></li>
1736
1737 <li><a href="https://people.skolelinux.org/pere/blog/archive/2014/03/">March (8)</a></li>
1738
1739 <li><a href="https://people.skolelinux.org/pere/blog/archive/2014/04/">April (7)</a></li>
1740
1741 <li><a href="https://people.skolelinux.org/pere/blog/archive/2014/05/">May (1)</a></li>
1742
1743 <li><a href="https://people.skolelinux.org/pere/blog/archive/2014/06/">June (2)</a></li>
1744
1745 <li><a href="https://people.skolelinux.org/pere/blog/archive/2014/07/">July (2)</a></li>
1746
1747 <li><a href="https://people.skolelinux.org/pere/blog/archive/2014/08/">August (2)</a></li>
1748
1749 <li><a href="https://people.skolelinux.org/pere/blog/archive/2014/09/">September (5)</a></li>
1750
1751 <li><a href="https://people.skolelinux.org/pere/blog/archive/2014/10/">October (6)</a></li>
1752
1753 <li><a href="https://people.skolelinux.org/pere/blog/archive/2014/11/">November (3)</a></li>
1754
1755 <li><a href="https://people.skolelinux.org/pere/blog/archive/2014/12/">December (5)</a></li>
1756
1757 </ul></li>
1758
1759 <li>2013
1760 <ul>
1761
1762 <li><a href="https://people.skolelinux.org/pere/blog/archive/2013/01/">January (11)</a></li>
1763
1764 <li><a href="https://people.skolelinux.org/pere/blog/archive/2013/02/">February (9)</a></li>
1765
1766 <li><a href="https://people.skolelinux.org/pere/blog/archive/2013/03/">March (9)</a></li>
1767
1768 <li><a href="https://people.skolelinux.org/pere/blog/archive/2013/04/">April (6)</a></li>
1769
1770 <li><a href="https://people.skolelinux.org/pere/blog/archive/2013/05/">May (9)</a></li>
1771
1772 <li><a href="https://people.skolelinux.org/pere/blog/archive/2013/06/">June (10)</a></li>
1773
1774 <li><a href="https://people.skolelinux.org/pere/blog/archive/2013/07/">July (7)</a></li>
1775
1776 <li><a href="https://people.skolelinux.org/pere/blog/archive/2013/08/">August (3)</a></li>
1777
1778 <li><a href="https://people.skolelinux.org/pere/blog/archive/2013/09/">September (5)</a></li>
1779
1780 <li><a href="https://people.skolelinux.org/pere/blog/archive/2013/10/">October (7)</a></li>
1781
1782 <li><a href="https://people.skolelinux.org/pere/blog/archive/2013/11/">November (9)</a></li>
1783
1784 <li><a href="https://people.skolelinux.org/pere/blog/archive/2013/12/">December (3)</a></li>
1785
1786 </ul></li>
1787
1788 <li>2012
1789 <ul>
1790
1791 <li><a href="https://people.skolelinux.org/pere/blog/archive/2012/01/">January (7)</a></li>
1792
1793 <li><a href="https://people.skolelinux.org/pere/blog/archive/2012/02/">February (10)</a></li>
1794
1795 <li><a href="https://people.skolelinux.org/pere/blog/archive/2012/03/">March (17)</a></li>
1796
1797 <li><a href="https://people.skolelinux.org/pere/blog/archive/2012/04/">April (12)</a></li>
1798
1799 <li><a href="https://people.skolelinux.org/pere/blog/archive/2012/05/">May (12)</a></li>
1800
1801 <li><a href="https://people.skolelinux.org/pere/blog/archive/2012/06/">June (20)</a></li>
1802
1803 <li><a href="https://people.skolelinux.org/pere/blog/archive/2012/07/">July (17)</a></li>
1804
1805 <li><a href="https://people.skolelinux.org/pere/blog/archive/2012/08/">August (6)</a></li>
1806
1807 <li><a href="https://people.skolelinux.org/pere/blog/archive/2012/09/">September (9)</a></li>
1808
1809 <li><a href="https://people.skolelinux.org/pere/blog/archive/2012/10/">October (17)</a></li>
1810
1811 <li><a href="https://people.skolelinux.org/pere/blog/archive/2012/11/">November (10)</a></li>
1812
1813 <li><a href="https://people.skolelinux.org/pere/blog/archive/2012/12/">December (7)</a></li>
1814
1815 </ul></li>
1816
1817 <li>2011
1818 <ul>
1819
1820 <li><a href="https://people.skolelinux.org/pere/blog/archive/2011/01/">January (16)</a></li>
1821
1822 <li><a href="https://people.skolelinux.org/pere/blog/archive/2011/02/">February (6)</a></li>
1823
1824 <li><a href="https://people.skolelinux.org/pere/blog/archive/2011/03/">March (6)</a></li>
1825
1826 <li><a href="https://people.skolelinux.org/pere/blog/archive/2011/04/">April (7)</a></li>
1827
1828 <li><a href="https://people.skolelinux.org/pere/blog/archive/2011/05/">May (3)</a></li>
1829
1830 <li><a href="https://people.skolelinux.org/pere/blog/archive/2011/06/">June (2)</a></li>
1831
1832 <li><a href="https://people.skolelinux.org/pere/blog/archive/2011/07/">July (7)</a></li>
1833
1834 <li><a href="https://people.skolelinux.org/pere/blog/archive/2011/08/">August (6)</a></li>
1835
1836 <li><a href="https://people.skolelinux.org/pere/blog/archive/2011/09/">September (4)</a></li>
1837
1838 <li><a href="https://people.skolelinux.org/pere/blog/archive/2011/10/">October (2)</a></li>
1839
1840 <li><a href="https://people.skolelinux.org/pere/blog/archive/2011/11/">November (3)</a></li>
1841
1842 <li><a href="https://people.skolelinux.org/pere/blog/archive/2011/12/">December (1)</a></li>
1843
1844 </ul></li>
1845
1846 <li>2010
1847 <ul>
1848
1849 <li><a href="https://people.skolelinux.org/pere/blog/archive/2010/01/">January (2)</a></li>
1850
1851 <li><a href="https://people.skolelinux.org/pere/blog/archive/2010/02/">February (1)</a></li>
1852
1853 <li><a href="https://people.skolelinux.org/pere/blog/archive/2010/03/">March (3)</a></li>
1854
1855 <li><a href="https://people.skolelinux.org/pere/blog/archive/2010/04/">April (3)</a></li>
1856
1857 <li><a href="https://people.skolelinux.org/pere/blog/archive/2010/05/">May (9)</a></li>
1858
1859 <li><a href="https://people.skolelinux.org/pere/blog/archive/2010/06/">June (14)</a></li>
1860
1861 <li><a href="https://people.skolelinux.org/pere/blog/archive/2010/07/">July (12)</a></li>
1862
1863 <li><a href="https://people.skolelinux.org/pere/blog/archive/2010/08/">August (13)</a></li>
1864
1865 <li><a href="https://people.skolelinux.org/pere/blog/archive/2010/09/">September (7)</a></li>
1866
1867 <li><a href="https://people.skolelinux.org/pere/blog/archive/2010/10/">October (9)</a></li>
1868
1869 <li><a href="https://people.skolelinux.org/pere/blog/archive/2010/11/">November (13)</a></li>
1870
1871 <li><a href="https://people.skolelinux.org/pere/blog/archive/2010/12/">December (12)</a></li>
1872
1873 </ul></li>
1874
1875 <li>2009
1876 <ul>
1877
1878 <li><a href="https://people.skolelinux.org/pere/blog/archive/2009/01/">January (8)</a></li>
1879
1880 <li><a href="https://people.skolelinux.org/pere/blog/archive/2009/02/">February (8)</a></li>
1881
1882 <li><a href="https://people.skolelinux.org/pere/blog/archive/2009/03/">March (12)</a></li>
1883
1884 <li><a href="https://people.skolelinux.org/pere/blog/archive/2009/04/">April (10)</a></li>
1885
1886 <li><a href="https://people.skolelinux.org/pere/blog/archive/2009/05/">May (9)</a></li>
1887
1888 <li><a href="https://people.skolelinux.org/pere/blog/archive/2009/06/">June (3)</a></li>
1889
1890 <li><a href="https://people.skolelinux.org/pere/blog/archive/2009/07/">July (4)</a></li>
1891
1892 <li><a href="https://people.skolelinux.org/pere/blog/archive/2009/08/">August (3)</a></li>
1893
1894 <li><a href="https://people.skolelinux.org/pere/blog/archive/2009/09/">September (1)</a></li>
1895
1896 <li><a href="https://people.skolelinux.org/pere/blog/archive/2009/10/">October (2)</a></li>
1897
1898 <li><a href="https://people.skolelinux.org/pere/blog/archive/2009/11/">November (3)</a></li>
1899
1900 <li><a href="https://people.skolelinux.org/pere/blog/archive/2009/12/">December (3)</a></li>
1901
1902 </ul></li>
1903
1904 <li>2008
1905 <ul>
1906
1907 <li><a href="https://people.skolelinux.org/pere/blog/archive/2008/11/">November (5)</a></li>
1908
1909 <li><a href="https://people.skolelinux.org/pere/blog/archive/2008/12/">December (7)</a></li>
1910
1911 </ul></li>
1912
1913 </ul>
1914
1915
1916
1917 <h2>Tags</h2>
1918 <ul>
1919
1920 <li><a href="https://people.skolelinux.org/pere/blog/tags/3d-printer">3d-printer (19)</a></li>
1921
1922 <li><a href="https://people.skolelinux.org/pere/blog/tags/amiga">amiga (1)</a></li>
1923
1924 <li><a href="https://people.skolelinux.org/pere/blog/tags/aros">aros (1)</a></li>
1925
1926 <li><a href="https://people.skolelinux.org/pere/blog/tags/bankid">bankid (4)</a></li>
1927
1928 <li><a href="https://people.skolelinux.org/pere/blog/tags/betalkontant">betalkontant (9)</a></li>
1929
1930 <li><a href="https://people.skolelinux.org/pere/blog/tags/bitcoin">bitcoin (12)</a></li>
1931
1932 <li><a href="https://people.skolelinux.org/pere/blog/tags/bootsystem">bootsystem (17)</a></li>
1933
1934 <li><a href="https://people.skolelinux.org/pere/blog/tags/bsa">bsa (2)</a></li>
1935
1936 <li><a href="https://people.skolelinux.org/pere/blog/tags/chrpath">chrpath (2)</a></li>
1937
1938 <li><a href="https://people.skolelinux.org/pere/blog/tags/debian">debian (189)</a></li>
1939
1940 <li><a href="https://people.skolelinux.org/pere/blog/tags/debian edu">debian edu (159)</a></li>
1941
1942 <li><a href="https://people.skolelinux.org/pere/blog/tags/debian-handbook">debian-handbook (9)</a></li>
1943
1944 <li><a href="https://people.skolelinux.org/pere/blog/tags/digistan">digistan (11)</a></li>
1945
1946 <li><a href="https://people.skolelinux.org/pere/blog/tags/dld">dld (18)</a></li>
1947
1948 <li><a href="https://people.skolelinux.org/pere/blog/tags/docbook">docbook (30)</a></li>
1949
1950 <li><a href="https://people.skolelinux.org/pere/blog/tags/drivstoffpriser">drivstoffpriser (4)</a></li>
1951
1952 <li><a href="https://people.skolelinux.org/pere/blog/tags/english">english (445)</a></li>
1953
1954 <li><a href="https://people.skolelinux.org/pere/blog/tags/fiksgatami">fiksgatami (23)</a></li>
1955
1956 <li><a href="https://people.skolelinux.org/pere/blog/tags/fildeling">fildeling (14)</a></li>
1957
1958 <li><a href="https://people.skolelinux.org/pere/blog/tags/freeculture">freeculture (34)</a></li>
1959
1960 <li><a href="https://people.skolelinux.org/pere/blog/tags/freedombox">freedombox (9)</a></li>
1961
1962 <li><a href="https://people.skolelinux.org/pere/blog/tags/frikanalen">frikanalen (20)</a></li>
1963
1964 <li><a href="https://people.skolelinux.org/pere/blog/tags/h264">h264 (20)</a></li>
1965
1966 <li><a href="https://people.skolelinux.org/pere/blog/tags/intervju">intervju (43)</a></li>
1967
1968 <li><a href="https://people.skolelinux.org/pere/blog/tags/isenkram">isenkram (16)</a></li>
1969
1970 <li><a href="https://people.skolelinux.org/pere/blog/tags/kart">kart (23)</a></li>
1971
1972 <li><a href="https://people.skolelinux.org/pere/blog/tags/kodi">kodi (4)</a></li>
1973
1974 <li><a href="https://people.skolelinux.org/pere/blog/tags/ldap">ldap (9)</a></li>
1975
1976 <li><a href="https://people.skolelinux.org/pere/blog/tags/lego">lego (5)</a></li>
1977
1978 <li><a href="https://people.skolelinux.org/pere/blog/tags/lenker">lenker (8)</a></li>
1979
1980 <li><a href="https://people.skolelinux.org/pere/blog/tags/linuxcnc">linuxcnc (4)</a></li>
1981
1982 <li><a href="https://people.skolelinux.org/pere/blog/tags/lsdvd">lsdvd (2)</a></li>
1983
1984 <li><a href="https://people.skolelinux.org/pere/blog/tags/ltsp">ltsp (1)</a></li>
1985
1986 <li><a href="https://people.skolelinux.org/pere/blog/tags/madewithcc">madewithcc (3)</a></li>
1987
1988 <li><a href="https://people.skolelinux.org/pere/blog/tags/mesh network">mesh network (8)</a></li>
1989
1990 <li><a href="https://people.skolelinux.org/pere/blog/tags/multimedia">multimedia (44)</a></li>
1991
1992 <li><a href="https://people.skolelinux.org/pere/blog/tags/nice free software">nice free software (14)</a></li>
1993
1994 <li><a href="https://people.skolelinux.org/pere/blog/tags/noark5">noark5 (23)</a></li>
1995
1996 <li><a href="https://people.skolelinux.org/pere/blog/tags/norsk">norsk (320)</a></li>
1997
1998 <li><a href="https://people.skolelinux.org/pere/blog/tags/nuug">nuug (198)</a></li>
1999
2000 <li><a href="https://people.skolelinux.org/pere/blog/tags/offentlig innsyn">offentlig innsyn (40)</a></li>
2001
2002 <li><a href="https://people.skolelinux.org/pere/blog/tags/open311">open311 (2)</a></li>
2003
2004 <li><a href="https://people.skolelinux.org/pere/blog/tags/opphavsrett">opphavsrett (75)</a></li>
2005
2006 <li><a href="https://people.skolelinux.org/pere/blog/tags/personvern">personvern (114)</a></li>
2007
2008 <li><a href="https://people.skolelinux.org/pere/blog/tags/raid">raid (2)</a></li>
2009
2010 <li><a href="https://people.skolelinux.org/pere/blog/tags/reactos">reactos (1)</a></li>
2011
2012 <li><a href="https://people.skolelinux.org/pere/blog/tags/reprap">reprap (11)</a></li>
2013
2014 <li><a href="https://people.skolelinux.org/pere/blog/tags/rfid">rfid (3)</a></li>
2015
2016 <li><a href="https://people.skolelinux.org/pere/blog/tags/robot">robot (17)</a></li>
2017
2018 <li><a href="https://people.skolelinux.org/pere/blog/tags/rss">rss (1)</a></li>
2019
2020 <li><a href="https://people.skolelinux.org/pere/blog/tags/ruter">ruter (7)</a></li>
2021
2022 <li><a href="https://people.skolelinux.org/pere/blog/tags/scraperwiki">scraperwiki (2)</a></li>
2023
2024 <li><a href="https://people.skolelinux.org/pere/blog/tags/sikkerhet">sikkerhet (59)</a></li>
2025
2026 <li><a href="https://people.skolelinux.org/pere/blog/tags/sitesummary">sitesummary (4)</a></li>
2027
2028 <li><a href="https://people.skolelinux.org/pere/blog/tags/skepsis">skepsis (5)</a></li>
2029
2030 <li><a href="https://people.skolelinux.org/pere/blog/tags/standard">standard (74)</a></li>
2031
2032 <li><a href="https://people.skolelinux.org/pere/blog/tags/stavekontroll">stavekontroll (7)</a></li>
2033
2034 <li><a href="https://people.skolelinux.org/pere/blog/tags/stortinget">stortinget (14)</a></li>
2035
2036 <li><a href="https://people.skolelinux.org/pere/blog/tags/surveillance">surveillance (64)</a></li>
2037
2038 <li><a href="https://people.skolelinux.org/pere/blog/tags/sysadmin">sysadmin (5)</a></li>
2039
2040 <li><a href="https://people.skolelinux.org/pere/blog/tags/usenix">usenix (2)</a></li>
2041
2042 <li><a href="https://people.skolelinux.org/pere/blog/tags/valg">valg (9)</a></li>
2043
2044 <li><a href="https://people.skolelinux.org/pere/blog/tags/verkidetfri">verkidetfri (20)</a></li>
2045
2046 <li><a href="https://people.skolelinux.org/pere/blog/tags/video">video (77)</a></li>
2047
2048 <li><a href="https://people.skolelinux.org/pere/blog/tags/vitenskap">vitenskap (4)</a></li>
2049
2050 <li><a href="https://people.skolelinux.org/pere/blog/tags/web">web (42)</a></li>
2051
2052 </ul>
2053
2054
2055 </div>
2056 <p style="text-align: right">
2057 Created by <a href="http://steve.org.uk/Software/chronicle">Chronicle v4.6</a>
2058 </p>
2059
2060 </body>
2061 </html>