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