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