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