1 <?xml version=
"1.0" encoding=
"utf-8"?>
2 <rss version='
2.0' xmlns:lj='http://www.livejournal.org/rss/lj/
1.0/'
>
4 <title>Petter Reinholdtsen - Entries tagged nice free software
</title>
5 <description>Entries tagged nice free software
</description>
6 <link>https://people.skolelinux.org/pere/blog/
</link>
10 <title>rtlsdr-scanner, software defined radio frequency scanner for Linux - nice free software
</title>
11 <link>https://people.skolelinux.org/pere/blog/rtlsdr_scanner__software_defined_radio_frequency_scanner_for_Linux____nice_free_software.html
</link>
12 <guid isPermaLink=
"true">https://people.skolelinux.org/pere/blog/rtlsdr_scanner__software_defined_radio_frequency_scanner_for_Linux____nice_free_software.html
</guid>
13 <pubDate>Fri,
7 Apr
2023 23:
10:
00 +
0200</pubDate>
14 <description><p
>Today I finally found time to track down a useful radio frequency
15 scanner for my software defined radio. Just for fun I tried to locate
16 the radios used in the areas, and a good start would be to scan all
17 the frequencies to see what is in use. I
've tried to find a useful
18 program earlier, but ran out of time before I managed to find a useful
19 tool. This time I was more successful, and after a few false leads I
20 found a description of
21 <a href=
"https://www.kali.org/tools/rtlsdr-scanner/
">rtlsdr-scanner
22 over at the Kali site
</a
>, and was able to track down
23 <a href=
"https://gitlab.com/kalilinux/packages/rtlsdr-scanner.git
">the
24 Kali package git repository
</a
> to build a deb package for the
25 scanner. Sadly the package is missing from the Debian project itself,
26 at least in Debian Bullseye. Two runtime dependencies,
27 <a href=
"https://gitlab.com/kalilinux/packages/python-visvis.git
">python-visvis
</a
>
29 <a href=
"https://gitlab.com/kalilinux/packages/python-rtlsdr.git
">python-rtlsdr
</a
>
30 had to be built and installed separately. Luckily
'<tt
>gbp
31 buildpackage
</tt
>' handled them just fine and no further packages had
32 to be manually built. The end result worked out of the box after
33 installation.
</p
>
35 <p
>My initial scans for FM channels worked just fine, so I knew the
36 scanner was functioning. But when I tried to scan every frequency
37 from
100 to
1000 MHz, the program stopped unexpectedly near the
38 completion. After some debugging I discovered USB software radio I
39 used rejected frequencies above
948 MHz, triggering a unreported
40 exception breaking the scan. Changing the scan to end at
957 worked
41 better. I similarly found the lower limit to be around
15, and ended
42 up with the following full scan:
</p
>
44 <p
><a href=
"https://people.skolelinux.org/pere/blog/images/
2023-
04-
07-radio-freq-scanning.png
"><img src=
"https://people.skolelinux.org/pere/blog/images/
2023-
04-
07-radio-freq-scanning.png
" width=
"100%
"></a
></p
>
46 <p
>Saving the scan did not work, but exporting it as a CSV file worked
47 just fine. I ended up with around
477k CVS lines with dB level for
48 the given frequency.
</p
>
50 <p
>The save failure seem to be a missing UTF-
8 encoding issue in the
51 python code. Will see if I can find time to send a patch
52 <a href=
"https://github.com/CdeMills/RTLSDR-Scanner/
">upstream
</a
>
53 later to fix this exception:
</p
>
56 Traceback (most recent call last):
57 File
"/usr/lib/python3/dist-packages/rtlsdr_scanner/main_window.py
", line
485, in __on_save
58 save_plot(fullName, self.scanInfo, self.spectrum, self.locations)
59 File
"/usr/lib/python3/dist-packages/rtlsdr_scanner/file.py
", line
408, in save_plot
60 handle.write(json.dumps(data, indent=
4))
61 TypeError: a bytes-like object is required, not
'str
'
62 Traceback (most recent call last):
63 File
"/usr/lib/python3/dist-packages/rtlsdr_scanner/main_window.py
", line
485, in __on_save
64 save_plot(fullName, self.scanInfo, self.spectrum, self.locations)
65 File
"/usr/lib/python3/dist-packages/rtlsdr_scanner/file.py
", line
408, in save_plot
66 handle.write(json.dumps(data, indent=
4))
67 TypeError: a bytes-like object is required, not
'str
'
70 <p
>As usual, if you use Bitcoin and want to show your support of my
71 activities, please send Bitcoin donations to my address
72 <b
><a href=
"bitcoin:
15oWEoG9dUPovwmUL9KWAnYRtNJEkP1u1b
">15oWEoG9dUPovwmUL9KWAnYRtNJEkP1u1b
</a
></b
>.
</p
>
77 <title>GnuCOBOL, a free platform to learn and use COBOL - nice free software
</title>
78 <link>https://people.skolelinux.org/pere/blog/GnuCOBOL__a_free_platform_to_learn_and_use_COBOL___nice_free_software.html
</link>
79 <guid isPermaLink=
"true">https://people.skolelinux.org/pere/blog/GnuCOBOL__a_free_platform_to_learn_and_use_COBOL___nice_free_software.html
</guid>
80 <pubDate>Wed,
29 Apr
2020 13:
10:
00 +
0200</pubDate>
81 <description><p
>The curiosity got the better of me when
82 <a href=
"https://developers.slashdot.org/story/
20/
04/
06/
1424246/new-jersey-desperately-needs-cobol-programmers
">Slashdot
83 reported
</a
> that New Jersey was desperately looking for
84 <a href=
"https://en.wikipedia.org/wiki/COBOL
">COBOL
</a
> programmers,
85 and a few days later it was reported that
86 <a href=
"https://onezero.medium.com/ibm-rallies-cobol-engineers-to-save-overloaded-unemployment-systems-eeadf13eddce
">IBM
87 tried to locate COBOL programmers
</a
>.
</p
>
89 <p
>I thus decided to have a look at free software alternatives to
90 learn COBOL, and had the pleasure to find
91 <a href=
"https://sourceforge.net/projects/open-cobol/
">GnuCOBOL
</a
> was
92 already
<a href=
"https://tracker.debian.org/pkg/gnucobol
">in
93 Debian
</a
>. It used to be called Open Cobol, and is a
"compiler
"
94 transforming COBOL code to C or C++ before giving it to GCC or Visual
95 Studio to build binaries.
</p
>
97 <p
>I managed to get in touch with upstream, and was impressed with the
98 quick response, and also was happy to see a new Debian maintainer
99 taking over when the original one recently asked to be replaced. A
100 new Debian upload was done as recently as yesterday.
</p
>
102 <p
>Using the Debian package, I was able to follow a simple COBOL
103 introduction and make and run simple COBOL programs. It was fun to
104 learn a new programming language. If you want to test for yourself,
105 <a href=
"https://en.wikipedia.org/wiki/GnuCOBOL
">the GnuCOBOL Wikipedia
106 page
</a
> have a few simple examples to get you startet.
</p
>
108 <p
>As I do not have much experience with COBOL, I do not know how
109 standard compliant it is, but it claim to pass most tests from COBOL
110 test suite, which sound good to me. It is nice to know it is possible
111 to learn COBOL using software without any usage restrictions, and I am
112 very happy such nice free software project as this is available. If
113 you as me is curious about COBOL, check it out.
</p
>
115 <p
>As usual, if you use Bitcoin and want to show your support of my
116 activities, please send Bitcoin donations to my address
117 <b
><a href=
"bitcoin:
15oWEoG9dUPovwmUL9KWAnYRtNJEkP1u1b
">15oWEoG9dUPovwmUL9KWAnYRtNJEkP1u1b
</a
></b
>.
</p
>
122 <title>PlantUML for text based UML diagram modelling - nice free software
</title>
123 <link>https://people.skolelinux.org/pere/blog/PlantUML_for_text_based_UML_diagram_modelling___nice_free_software.html
</link>
124 <guid isPermaLink=
"true">https://people.skolelinux.org/pere/blog/PlantUML_for_text_based_UML_diagram_modelling___nice_free_software.html
</guid>
125 <pubDate>Mon,
25 Mar
2019 09:
35:
00 +
0100</pubDate>
126 <description><p
>As part of my involvement with the
127 <a href=
"https://gitlab.com/OsloMet-ABI/nikita-noark5-core/
">Nikita
128 Noark
5 core project
</a
>, I have been proposing improvements to the
129 API specification created by
<a href=
"https://www.arkivverket.no/
">The
130 National Archives of Norway
</a
> and helped migrating the text from a
131 version control system unfriendly binary format (docx) to Markdown in
132 git. Combined with the migration to a public git repository (on
133 github), this has made it possible for anyone to suggest improvement
134 to the text.
</p
>
136 <p
>The specification is filled with UML diagrams. I believe the
137 original diagrams were modelled using Sparx Systems Enterprise
138 Architect, and exported as EMF files for import into docx. This
139 approach make it very hard to track changes using a version control
140 system. To improve the situation I have been looking for a good text
141 based UML format with associated command line free software tools on
142 Linux and Windows, to allow anyone to send in corrections to the UML
143 diagrams in the specification. The tool must be text based to work
144 with git, and command line to be able to run it automatically to
145 generate the diagram images. Finally, it must be free software to
146 allow anyone, even those that can not accept a non-free software
147 license, to contribute.
</p
>
149 <p
>I did not know much about free software UML modelling tools when I
150 started. I have used dia and inkscape for simple modelling in the
151 past, but neither are available on Windows, as far as I could tell. I
153 <a href=
"https://modeling-languages.com/text-uml-tools-complete-list/
">list
154 of text mode uml tools
</a
>, and tested out a few of the tools listed
155 there.
<a href=
"http://plantuml.com/
">The PlantUML tool
</a
> seemed
156 most promising. After verifying that the packages
157 <a href=
"https://tracker.debian.org/pkg/plantuml
">is available in
158 Debian
</a
> and found
<a href=
"https://github.com/plantuml/plantuml
">its
159 Java source
</a
> under a GPL license on github, I set out to test if it
160 could represent the diagrams we needed, ie the ones currently in
161 <a href=
"https://github.com/arkivverket/noark5-tjenestegrensesnitt-standard/
">the
162 Noark
5 Tjenestegrensesnitt specification
</a
>. I am happy to report
163 that it could represent them, even thought it have a few warts here
166 <p
>After a few days of modelling I completed the task this weekend. A
167 temporary link to the complete set of diagrams (original and from
168 PlantUML) is available in
169 <a href=
"https://github.com/arkivverket/noark5-tjenestegrensesnitt-standard/issues/
76">the
170 github issue discussing the need for a text based UML format
</a
>, but
171 please note I lack a sensible tool to convert EMF files to PNGs, so
172 the
"original
" rendering is not as good as the original was in the
173 publised PDF.
</p
>
175 <p
>Here is an example UML diagram, showing the core classes for
176 keeping metadata about archived documents:
</p
>
180 skinparam classAttributeIconSize
0
182 !include media/uml-class-arkivskaper.iuml
183 !include media/uml-class-arkiv.iuml
184 !include media/uml-class-klassifikasjonssystem.iuml
185 !include media/uml-class-klasse.iuml
186 !include media/uml-class-arkivdel.iuml
187 !include media/uml-class-mappe.iuml
188 !include media/uml-class-merknad.iuml
189 !include media/uml-class-registrering.iuml
190 !include media/uml-class-basisregistrering.iuml
191 !include media/uml-class-dokumentbeskrivelse.iuml
192 !include media/uml-class-dokumentobjekt.iuml
193 !include media/uml-class-konvertering.iuml
194 !include media/uml-datatype-elektronisksignatur.iuml
196 Arkivstruktur.Arkivskaper
"+arkivskaper
1..*
" <-o
"+arkiv
0..*
" Arkivstruktur.Arkiv
197 Arkivstruktur.Arkiv o--
> "+underarkiv
0..*
" Arkivstruktur.Arkiv
198 Arkivstruktur.Arkiv
"+arkiv
1" o--
> "+arkivdel
0..*
" Arkivstruktur.Arkivdel
199 Arkivstruktur.Klassifikasjonssystem
"+klassifikasjonssystem [
0.
.1]
" <--o
"+arkivdel
1..*
" Arkivstruktur.Arkivdel
200 Arkivstruktur.Klassifikasjonssystem
"+klassifikasjonssystem [
0.
.1]
" o--
> "+klasse
0..*
" Arkivstruktur.Klasse
201 Arkivstruktur.Arkivdel
"+arkivdel
0.
.1" o--
> "+mappe
0..*
" Arkivstruktur.Mappe
202 Arkivstruktur.Arkivdel
"+arkivdel
0.
.1" o--
> "+registrering
0..*
" Arkivstruktur.Registrering
203 Arkivstruktur.Klasse
"+klasse
0.
.1" o--
> "+mappe
0..*
" Arkivstruktur.Mappe
204 Arkivstruktur.Klasse
"+klasse
0.
.1" o--
> "+registrering
0..*
" Arkivstruktur.Registrering
205 Arkivstruktur.Mappe --
> "+undermappe
0..*
" Arkivstruktur.Mappe
206 Arkivstruktur.Mappe
"+mappe
0.
.1" o--
> "+registrering
0..*
" Arkivstruktur.Registrering
207 Arkivstruktur.Merknad
"+merknad
0..*
" <--* Arkivstruktur.Mappe
208 Arkivstruktur.Merknad
"+merknad
0..*
" <--* Arkivstruktur.Dokumentbeskrivelse
209 Arkivstruktur.Basisregistrering -|
> Arkivstruktur.Registrering
210 Arkivstruktur.Merknad
"+merknad
0..*
" <--* Arkivstruktur.Basisregistrering
211 Arkivstruktur.Registrering
"+registrering
1..*
" o--
> "+dokumentbeskrivelse
0..*
" Arkivstruktur.Dokumentbeskrivelse
212 Arkivstruktur.Dokumentbeskrivelse
"+dokumentbeskrivelse
1" o-
> "+dokumentobjekt
0..*
" Arkivstruktur.Dokumentobjekt
213 Arkivstruktur.Dokumentobjekt *-
> "+konvertering
0..*
" Arkivstruktur.Konvertering
214 Arkivstruktur.ElektroniskSignatur -[hidden]-
> Arkivstruktur.Dokumentobjekt
218 <p
><a href=
"http://plantuml.com/class-diagram
">The format
</a
> is quite
219 compact, with little redundant information. The text expresses
220 entities and relations, and there is little layout related fluff. One
221 can reuse content by using include files, allowing for consistent
222 naming across several diagrams. The include files can be standalone
223 PlantUML too. Here is the content of
224 <tt
>media/uml-class-arkivskaper.iuml
</tt
>:
</p
>
228 class Arkivstruktur.Arkivskaper
<Arkivenhet
> {
229 +arkivskaperID : string
230 +arkivskaperNavn : string
231 +beskrivelse : string [
0.
.1]
236 <p
>This is what the complete diagram for the PlantUML notation above
239 <p
><img width=
"80%
" src=
"http://people.skolelinux.org/pere/blog/images/
2019-
03-
25-noark5-plantuml-diagrameksempel.png
"></p
>
241 <p
>A cool feature of PlantUML is that the generated PNG files include
242 the entire original source diagram as text. The source (with include
243 statements expanded) can be extracted using for example
244 <tt
>exiftool
</tt
>. Another cool feature is that parts of the entities
245 can be hidden after inclusion. This allow to use include files with
246 all attributes listed, even for UML diagrams that should not list any
247 attributes.
</p
>
249 <p
>The diagram also show some of the warts. Some times the layout
250 engine place text labels on top of each other, and some times it place
251 the class boxes too close to each other, not leaving room for the
252 labels on the relationship arrows. The former can be worked around by
253 placing extra newlines in the labes (ie
"\n
"). I did not do it here
254 to be able to demonstrate the issue. I have not found a good way
255 around the latter, so I normally try to reduce the problem by changing
256 from vertical to horizontal links to improve the layout.
</p
>
258 <p
>All in all, I am quite happy with PlantUML, and very impressed with
259 how quickly its lead developer responds to questions. So far I got an
260 answer to my questions in a few hours when I send an email. I
261 definitely recommend looking at PlantUML if you need to make UML
262 diagrams. Note, PlantUML can draw a lot more than class relations.
263 Check out the documention for a complete list. :)
</p
>
265 <p
>As usual, if you use Bitcoin and want to show your support of my
266 activities, please send Bitcoin donations to my address
267 <b
><a href=
"bitcoin:
15oWEoG9dUPovwmUL9KWAnYRtNJEkP1u1b
">15oWEoG9dUPovwmUL9KWAnYRtNJEkP1u1b
</a
></b
>.
</p
>
272 <title>Measuring the speaker frequency response using the AUDMES free software GUI - nice free software
</title>
273 <link>https://people.skolelinux.org/pere/blog/Measuring_the_speaker_frequency_response_using_the_AUDMES_free_software_GUI___nice_free_software.html
</link>
274 <guid isPermaLink=
"true">https://people.skolelinux.org/pere/blog/Measuring_the_speaker_frequency_response_using_the_AUDMES_free_software_GUI___nice_free_software.html
</guid>
275 <pubDate>Mon,
22 Oct
2018 08:
40:
00 +
0200</pubDate>
276 <description><p
><img src=
"http://people.skolelinux.org/pere/blog/images/
2018-
10-
22-audmes-measure-speakers.png
" align=
"right
" width=
"40%
"/
></p
>
278 <p
>My current home stereo is a patchwork of various pieces I got on
279 flee markeds over the years. It is amazing what kind of equipment
280 show up there. I
've been wondering for a while if it was possible to
281 measure how well this equipment is working together, and decided to
282 see how far I could get using free software. After trawling the web I
283 came across an article from DIY Audio and Video on
284 <a href=
"https://www.diyaudioandvideo.com/Tutorial/SpeakerResponseTesting/
">Speaker
285 Testing and Analysis
</a
> describing how to test speakers, and it listing
286 several software options, among them
287 <a href=
"https://sourceforge.net/projects/audmes/
">AUDio MEasurement
288 System (AUDMES)
</a
>. It is the only free software system I could find
289 focusing on measuring speakers and audio frequency response. In the
290 process I also found an interesting article from NOVO on
291 <a href=
"http://novo.press/understanding-speaker-specifications-and-frequency-response/
">Understanding
292 Speaker Specifications and Frequency Response
</a
> and an article from
294 <a href=
"https://www.ecoustics.com/articles/understanding-speaker-frequency-response/
">Understanding
295 Speaker Frequency Response
</a
>, with a lot of information on what to
296 look for and how to interpret the graphs. Armed with this knowledge,
297 I set out to measure the state of my speakers.
</p
>
299 <p
>The first hurdle was that AUDMES hadn
't seen a commit for
10 years
300 and did not build with current compilers and libraries. I got in
301 touch with its author, who no longer was spending time on the program
302 but gave me write access to the subversion repository on Sourceforge.
303 The end result is that now the code build on Linux and is capable of
304 saving and loading the collected frequency response data in CSV
305 format. The application is quite nice and flexible, and I was able to
306 select the input and output audio interfaces independently. This made
307 it possible to use a USB mixer as the input source, while sending
308 output via my laptop headphone connection. I lacked the hardware and
309 cabling to figure out a different way to get independent cabling to
310 speakers and microphone.
</p
>
312 <p
>Using this setup I could see how a large range of high frequencies
313 apparently were not making it out of my speakers. The picture show
314 the frequency response measurement of one of the speakers. Note the
315 frequency lines seem to be slightly misaligned, compared to the CSV
316 output from the program. I can not hear several of these are high
317 frequencies, according to measurement from
318 <a href=
"http://freehearingtestsoftware.com
">Free Hearing Test
319 Software
</a
>, an freeware system to measure your hearing (still
320 looking for a free software alternative), so I do not know if they are
321 coming out out the speakers. I thus do not quite know how to figure
322 out if the missing frequencies is a problem with the microphone, the
323 amplifier or the speakers, but I managed to rule out the audio card in my
324 PC by measuring my Bose noise canceling headset using its own
325 microphone. This setup was able to see the high frequency tones, so
326 the problem with my stereo had to be in the amplifier or speakers.
</p
>
328 <p
>Anyway, to try to role out one factor I ended up picking up a new
329 set of speakers at a flee marked, and these work a lot better than the
330 old speakers, so I guess the microphone and amplifier is OK. If you
331 need to measure your own speakers, check out AUDMES. If more people
332 get involved, perhaps the project could become good enough to
333 <a href=
"https://bugs.debian.org/
910876">include in Debian
</a
>? And if
334 you know of some other free software to measure speakers and amplifier
335 performance, please let me know. I am aware of the freeware option
336 <a href=
"https://www.roomeqwizard.com/
">REW
</a
>, but I want something
337 that can be developed also when the vendor looses interest.
</p
>
339 <p
>As usual, if you use Bitcoin and want to show your support of my
340 activities, please send Bitcoin donations to my address
341 <b
><a href=
"bitcoin:
15oWEoG9dUPovwmUL9KWAnYRtNJEkP1u1b
">15oWEoG9dUPovwmUL9KWAnYRtNJEkP1u1b
</a
></b
>.
</p
>
346 <title>youtube-dl for nedlasting fra NRK med undertekster - nice free software
</title>
347 <link>https://people.skolelinux.org/pere/blog/youtube_dl_for_nedlasting_fra_NRK_med_undertekster___nice_free_software.html
</link>
348 <guid isPermaLink=
"true">https://people.skolelinux.org/pere/blog/youtube_dl_for_nedlasting_fra_NRK_med_undertekster___nice_free_software.html
</guid>
349 <pubDate>Sat,
28 Apr
2018 10:
30:
00 +
0200</pubDate>
350 <description><p
>I
<a href=
"https://no.wikipedia.org/wiki/VHS
">VHS-kassettenes
</a
>
351 tid var det rett frem å ta vare på et TV-program en ønsket å kunne se
352 senere, uten å være avhengig av at programmet ble sendt på nytt.
353 Kanskje ønsket en å se programmet på hytten der det ikke var
354 TV-signal, eller av andre grunner ha det tilgjengelig for fremtidig
355 fornøyelse. Dette er blitt vanskeligere med introduksjon av
356 digital-TV og webstreaming, der opptak til harddisk er utenfor de
357 flestes kontroll hvis de bruker ufri programvare og bokser kontrollert
358 av andre. Men for NRK her i Norge, finnes det heldigvis flere fri
359 programvare-alternativer, som jeg har
360 <a href=
"http://people.skolelinux.org/pere/blog/Hvordan_enkelt_laste_ned_filmer_fra_NRK.html
">skrevet
</a
>
361 <a href=
"http://people.skolelinux.org/pere/blog/Hvordan_enkelt_laste_ned_filmer_fra_NRK_med_den__nye__l_sningen.html
">om
</a
>
362 <a href=
"http://people.skolelinux.org/pere/blog/Nedlasting_fra_NRK__som_Matroska_med_undertekster.html
">før
</a
>.
363 Så lenge kilden for nedlastingen er lovlig lagt ut på nett (hvilket
364 jeg antar NRK gjør), så er slik lagring til privat bruk også lovlig i
367 <p
>Sist jeg så på saken, i
2016, nevnte jeg at
368 <a href=
"https://rg3.github.com/youtube-dl/
">youtube-dl
</a
> ikke kunne
369 bake undertekster fra NRK inn i videofilene, og at jeg derfor
370 foretrakk andre alternativer. Nylig oppdaget jeg at dette har endret
371 seg. Fordelen med youtube-dl er at den er tilgjengelig direkte fra
372 Linux-distribusjoner som
<a href=
"https://www.debian.org/
">Debian
</a
>
373 og
<a href=
"https://www.ubuntu.com/
">Ubuntu
</a
>, slik at en slipper å
374 finne ut selv hvordan en skal få dem til å virke.
</p
>
376 <p
>For å laste ned et NRK-innslag med undertekster, og få den norske
377 underteksten pakket inn i videofilen, så kan følgende kommando
381 youtube-dl --write-sub --sub-format ttml \
382 --convert-subtitles srt --embed-subs \
383 https://tv.nrk.no/serie/ramm-ferdig-gaa/MUHU11000316/
27-
04-
2018
384 </pre
></p
>
386 <p
>URL-eksemplet er dagens toppsak på tv.nrk.no. Resultatet er en
387 MP4-fil med filmen og undertekster som kan spilles av med VLC. Merk
388 at VLC ikke viser frem undertekster før du aktiverer dem. For å gjøre
389 det, høyreklikk med musa i fremviservinduet, velg menyvalget for
390 undertekst og så norsk språk. Jeg testet også
'--write-auto-sub
',
391 men det kommandolinjeargumentet ser ikke ut til å fungere, så jeg
392 endte opp med settet med argumentlisten over, som jeg fant i en
393 feilrapport i youtube-dl-prosjektets samling over feilrapporter.
</p
>
395 <p
>Denne støtten i youtube-dl gjør det svært enkelt å lagre
396 NRK-innslag, det være seg nyheter, filmer, serier eller dokumentater,
397 for å ha dem tilgjengelig for fremtidig referanse og bruk, uavhengig
398 av hvor lenge innslagene ligger tilgjengelig hos NRK. Så får det ikke
399 hjelpe at NRKs jurister mener at det er
400 <a href=
"http://people.skolelinux.org/pere/blog/Best___ikke_fortelle_noen_at_streaming_er_nedlasting___.html
">vesensforskjellig
401 å legge tilgjengelig for nedlasting og for streaming
</a
>, når det rent
402 teknisk er samme sak.
</p
>
404 <p
>Programmet youtube-dl støtter også en rekke andre nettsteder, se
405 prosjektoversikten for
406 <a href=
"http://rg3.github.io/youtube-dl/supportedsites.html
">en
407 komplett liste
</a
>.
</p
>
412 <title>Oolite, a life in space as vagabond and mercenary - nice free software
</title>
413 <link>https://people.skolelinux.org/pere/blog/Oolite__a_life_in_space_as_vagabond_and_mercenary___nice_free_software.html
</link>
414 <guid isPermaLink=
"true">https://people.skolelinux.org/pere/blog/Oolite__a_life_in_space_as_vagabond_and_mercenary___nice_free_software.html
</guid>
415 <pubDate>Sun,
11 Dec
2016 11:
40:
00 +
0100</pubDate>
416 <description><p align=
"center
"><img width=
"70%
" src=
"http://people.skolelinux.org/pere/blog/images/
2016-
12-
11-nice-oolite.png
"/
></p
>
418 <p
>In my early years, I played
419 <a href=
"http://wiki.alioth.net/index.php/Classic_Elite
">the epic game
420 Elite
</a
> on my PC. I spent many months trading and fighting in
421 space, and reached the
'elite
' fighting status before I moved on. The
422 original Elite game was available on Commodore
64 and the IBM PC
423 edition I played had a
64 KB executable. I am still impressed today
424 that the authors managed to squeeze both a
3D engine and details about
425 more than
2000 planet systems across
7 galaxies into a binary so
428 <p
>I have known about
<a href=
"http://www.oolite.org/
">the free
429 software game Oolite inspired by Elite
</a
> for a while, but did not
430 really have time to test it properly until a few days ago. It was
431 great to discover that my old knowledge about trading routes were
432 still valid. But my fighting and flying abilities were gone, so I had
433 to retrain to be able to dock on a space station. And I am still not
434 able to make much resistance when I am attacked by pirates, so I
435 bougth and mounted the most powerful laser in the rear to be able to
436 put up at least some resistance while fleeing for my life. :)
</p
>
438 <p
>When playing Elite in the late eighties, I had to discover
439 everything on my own, and I had long lists of prices seen on different
440 planets to be able to decide where to trade what. This time I had the
442 <a href=
"http://wiki.alioth.net/index.php/Main_Page
">Elite wiki
</a
>,
443 where information about each planet is easily available with common
444 price ranges and suggested trading routes. This improved my ability
445 to earn money and I have been able to earn enough to buy a lot of
446 useful equipent in a few days. I believe I originally played for
447 months before I could get a docking computer, while now I could get it
448 after less then a week.
</p
>
450 <p
>If you like science fiction and dreamed of a life as a vagabond in
451 space, you should try out Oolite. It is available for Linux, MacOSX
452 and Windows, and is included in Debian and derivatives since
2011.
</p
>
454 <p
>As usual, if you use Bitcoin and want to show your support of my
455 activities, please send Bitcoin donations to my address
456 <b
><a href=
"bitcoin:
15oWEoG9dUPovwmUL9KWAnYRtNJEkP1u1b
">15oWEoG9dUPovwmUL9KWAnYRtNJEkP1u1b
</a
></b
>.
</p
>
461 <title>Coz can help you find bottlenecks in multi-threaded software - nice free software
</title>
462 <link>https://people.skolelinux.org/pere/blog/Coz_can_help_you_find_bottlenecks_in_multi_threaded_software___nice_free_software.html
</link>
463 <guid isPermaLink=
"true">https://people.skolelinux.org/pere/blog/Coz_can_help_you_find_bottlenecks_in_multi_threaded_software___nice_free_software.html
</guid>
464 <pubDate>Thu,
11 Aug
2016 12:
00:
00 +
0200</pubDate>
465 <description><p
>This summer, I read a great article
466 "<a href=
"https://www.usenix.org/publications/login/summer2016/curtsinger
">coz:
467 This Is the Profiler You
're Looking For
</a
>" in USENIX ;login: about
468 how to profile multi-threaded programs. It presented a system for
469 profiling software by running experiences in the running program,
470 testing how run time performance is affected by
"speeding up
" parts of
471 the code to various degrees compared to a normal run. It does this by
472 slowing down parallel threads while the
"faster up
" code is running
473 and measure how this affect processing time. The processing time is
474 measured using probes inserted into the code, either using progress
475 counters (COZ_PROGRESS) or as latency meters (COZ_BEGIN/COZ_END). It
476 can also measure unmodified code by measuring complete the program
477 runtime and running the program several times instead.
</p
>
479 <p
>The project and presentation was so inspiring that I would like to
480 get the system into Debian. I
481 <a href=
"https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=
830708">created
482 a WNPP request for it
</a
> and contacted upstream to try to make the
483 system ready for Debian by sending patches. The build process need to
484 be changed a bit to avoid running
'git clone
' to get dependencies, and
485 to include the JavaScript web page used to visualize the collected
486 profiling information included in the source package.
487 But I expect that should work out fairly soon.
</p
>
489 <p
>The way the system work is fairly simple. To run an coz experiment
490 on a binary with debug symbols available, start the program like this:
492 <p
><blockquote
><pre
>
493 coz run --- program-to-run
494 </pre
></blockquote
></p
>
496 <p
>This will create a text file profile.coz with the instrumentation
497 information. To show what part of the code affect the performance
498 most, use a web browser and either point it to
499 <a href=
"http://plasma-umass.github.io/coz/
">http://plasma-umass.github.io/coz/
</a
>
500 or use the copy from git (in the gh-pages branch). Check out this web
501 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
502 profiling more useful you include
&lt;coz.h
&gt; and insert the
503 COZ_PROGRESS or COZ_BEGIN and COZ_END at appropriate places in the
504 code, rebuild and run the profiler. This allow coz to do more
505 targeted experiments.
</p
>
507 <p
>A video published by ACM
508 <a href=
"https://www.youtube.com/watch?v=jE0V-p1odPg
">presenting the
509 Coz profiler
</a
> is available from Youtube. There is also a paper
510 from the
25th Symposium on Operating Systems Principles available
512 <a href=
"https://www.usenix.org/conference/atc16/technical-sessions/presentation/curtsinger
">Coz:
513 finding code that counts with causal profiling
</a
>.
</p
>
515 <p
><a href=
"https://github.com/plasma-umass/coz
">The source code
</a
>
516 for Coz is available from github. It will only build with clang
518 <a href=
"https://gcc.gnu.org/bugzilla/show_bug.cgi?id=
55606">C++
519 feature missing in GCC
</a
>, but I
've submitted
520 <a href=
"https://github.com/plasma-umass/coz/pull/
67">a patch to solve
521 it
</a
> and hope it will be included in the upstream source soon.
</p
>
523 <p
>Please get in touch if you, like me, would like to see this piece
524 of software in Debian. I would very much like some help with the
525 packaging effort, as I lack the in depth knowledge on how to package
526 C++ libraries.
</p
>
531 <title>Creepy, visualise geotagged social media information - nice free software
</title>
532 <link>https://people.skolelinux.org/pere/blog/Creepy__visualise_geotagged_social_media_information___nice_free_software.html
</link>
533 <guid isPermaLink=
"true">https://people.skolelinux.org/pere/blog/Creepy__visualise_geotagged_social_media_information___nice_free_software.html
</guid>
534 <pubDate>Sun,
24 Jan
2016 10:
50:
00 +
0100</pubDate>
535 <description><p
>Most people seem not to realise that every time they walk around
536 with the computerised radio beacon known as a mobile phone their
537 position is tracked by the phone company and often stored for a long
538 time (like every time a SMS is received or sent). And if their
539 computerised radio beacon is capable of running programs (often called
540 mobile apps) downloaded from the Internet, these programs are often
541 also capable of tracking their location (if the app requested access
542 during installation). And when these programs send out information to
543 central collection points, the location is often included, unless
544 extra care is taken to not send the location. The provided
545 information is used by several entities, for good and bad (what is
546 good and bad, depend on your point of view). What is certain, is that
547 the private sphere and the right to free movement is challenged and
548 perhaps even eradicated for those announcing their location this way,
549 when they share their whereabouts with private and public
552 <p align=
"center
"><img width=
"70%
" src=
"http://people.skolelinux.org/pere/blog/images/
2016-
01-
24-nice-creepy-desktop-window.png
"></p
>
554 <p
>The phone company logs provide a register of locations to check out
555 when one want to figure out what the tracked person was doing. It is
556 unavailable for most of us, but provided to selected government
557 officials, company staff, those illegally buying information from
558 unfaithful servants and crackers stealing the information. But the
559 public information can be collected and analysed, and a free software
560 tool to do so is called
561 <a href=
"http://www.geocreepy.com/
">Creepy or Cree.py
</a
>. I
562 discovered it when I read
563 <a href=
"http://www.aftenposten.no/kultur/Slik-kan-du-bli-overvaket-pa-Twitter-og-Instagram-uten-a-ane-det-
7787884.html
">an
564 article about Creepy
</a
> in the Norwegian newspaper Aftenposten i
565 November
2014, and decided to check if it was available in Debian.
566 The python program was in Debian, but
567 <a href=
"https://tracker.debian.org/pkg/creepy
">the version in
568 Debian
</a
> was completely broken and practically unmaintained. I
569 uploaded a new version which did not work quite right, but did not
570 have time to fix it then. This Christmas I decided to finally try to
571 get Creepy operational in Debian. Now a fixed version is available in
572 Debian unstable and testing, and almost all Debian specific patches
574 <a href=
"https://github.com/jkakavas/creepy
">upstream
</a
>.
</p
>
576 <p
>The Creepy program visualises geolocation information fetched from
577 Twitter, Instagram, Flickr and Google+, and allow one to get a
578 complete picture of every social media message posted recently in a
579 given area, or track the movement of a given individual across all
580 these services. Earlier it was possible to use the search API of at
581 least some of these services without identifying oneself, but these
582 days it is impossible. This mean that to use Creepy, you need to
583 configure it to log in as yourself on these services, and provide
584 information to them about your search interests. This should be taken
585 into account when using Creepy, as it will also share information
586 about yourself with the services.
</p
>
588 <p
>The picture above show the twitter messages sent from (or at least
589 geotagged with a position from) the city centre of Oslo, the capital
590 of Norway. One useful way to use Creepy is to first look at
591 information tagged with an area of interest, and next look at all the
592 information provided by one or more individuals who was in the area.
593 I tested it by checking out which celebrity provide their location in
594 twitter messages by checkout out who sent twitter messages near a
595 Norwegian TV station, and next could track their position over time,
596 making it possible to locate their home and work place, among other
597 things. A similar technique have been
598 <a href=
"http://www.buzzfeed.com/maxseddon/does-this-soldiers-instagram-account-prove-russia-is-covertl
">used
599 to locate Russian soldiers in Ukraine
</a
>, and it is both a powerful
600 tool to discover lying governments, and a useful tool to help people
601 understand the value of the private information they provide to the
604 <p
>The package is not trivial to backport to Debian Stable/Jessie, as
605 it depend on several python modules currently missing in Jessie (at
606 least python-instagram, python-flickrapi and
607 python-requests-toolbelt).
</p
>
609 <p
>(I have uploaded
610 <a href=
"https://screenshots.debian.net/package/creepy
">the image to
611 screenshots.debian.net
</a
> and licensed it under the same terms as the
612 Creepy program in Debian.)
</p
>
617 <title>OpenALPR, find car license plates in video streams - nice free software
</title>
618 <link>https://people.skolelinux.org/pere/blog/OpenALPR__find_car_license_plates_in_video_streams___nice_free_software.html
</link>
619 <guid isPermaLink=
"true">https://people.skolelinux.org/pere/blog/OpenALPR__find_car_license_plates_in_video_streams___nice_free_software.html
</guid>
620 <pubDate>Wed,
23 Dec
2015 01:
00:
00 +
0100</pubDate>
621 <description><p
>When I was a kid, we used to collect
"car numbers
", as we used to
622 call the car license plate numbers in those days. I would write the
623 numbers down in my little book and compare notes with the other kids
624 to see how many region codes we had seen and if we had seen some
625 exotic or special region codes and numbers. It was a fun game to pass
626 time, as we kids have plenty of it.
</p
>
628 <p
>A few days I came across
629 <a href=
"https://github.com/openalpr/openalpr
">the OpenALPR
630 project
</a
>, a free software project to automatically discover and
631 report license plates in images and video streams, and provide the
632 "car numbers
" in a machine readable format. I
've been looking for
633 such system for a while now, because I believe it is a bad idea that the
634 <a href=
"https://en.wikipedia.org/wiki/Automatic_number_plate_recognition
">automatic
635 number plate recognition
</a
> tool only is available in the hands of
636 the powerful, and want it to be available also for the powerless to
637 even the score when it comes to surveillance and sousveillance. I
638 discovered the developer
639 <a href=
"https://bugs.debian.org/
747509">wanted to get the tool into
640 Debian
</a
>, and as I too wanted it to be in Debian, I volunteered to
641 help him get it into shape to get the package uploaded into the Debian
644 <p
>Today we finally managed to get the package into shape and uploaded
645 it into Debian, where it currently
646 <a href=
"https://ftp-master.debian.org//new/openalpr_2.2
.1-
1.html
">waits
647 in the NEW queue
</a
> for review by the Debian ftpmasters.
</p
>
649 <p
>I guess you are wondering why on earth such tool would be useful
650 for the common folks, ie those not running a large government
651 surveillance system? Well, I plan to put it in a computer on my bike
652 and in my car, tracking the cars nearby and allowing me to be notified
653 when number plates on my watch list are discovered. Another use case
654 was suggested by a friend of mine, who wanted to set it up at his home
655 to open the car port automatically when it discovered the plate on his
656 car. When I mentioned it perhaps was a bit foolhardy to allow anyone
657 capable of placing his license plate number of a piece of cardboard to
658 open his car port, men replied that it was always unlocked anyway. I
659 guess for such use case it make sense. I am sure there are other use
660 cases too, for those with imagination and a vision.
</p
>
662 <p
>If you want to build your own version of the Debian package, check
663 out the upstream git source and symlink ./distros/debian to ./debian/
664 before running
"debuild
" to build the source. Or wait a bit until the
665 package show up in unstable.
</p
>
670 <title>listadmin, the quick way to moderate mailman lists - nice free software
</title>
671 <link>https://people.skolelinux.org/pere/blog/listadmin__the_quick_way_to_moderate_mailman_lists___nice_free_software.html
</link>
672 <guid isPermaLink=
"true">https://people.skolelinux.org/pere/blog/listadmin__the_quick_way_to_moderate_mailman_lists___nice_free_software.html
</guid>
673 <pubDate>Wed,
22 Oct
2014 20:
00:
00 +
0200</pubDate>
674 <description><p
>If you ever had to moderate a mailman list, like the ones on
675 alioth.debian.org, you know the web interface is fairly slow to
676 operate. First you visit one web page, enter the moderation password
677 and get a new page shown with a list of all the messages to moderate
678 and various options for each email address. This take a while for
679 every list you moderate, and you need to do it regularly to do a good
680 job as a list moderator. But there is a quick alternative,
681 <a href=
"http://heim.ifi.uio.no/kjetilho/hacks/#listadmin
">the
682 listadmin program
</a
>. It allow you to check lists for new messages
683 to moderate in a fraction of a second. Here is a test run on two
684 lists I recently took over:
</p
>
686 <p
><blockquote
><pre
>
687 % time listadmin xiph
688 fetching data for pkg-xiph-commits@lists.alioth.debian.org ... nothing in queue
689 fetching data for pkg-xiph-maint@lists.alioth.debian.org ... nothing in queue
695 </pre
></blockquote
></p
>
697 <p
>In
1.7 seconds I had checked two mailing lists and confirmed that
698 there are no message in the moderation queue. Every morning I
699 currently moderate
68 mailman lists, and it normally take around two
700 minutes. When I took over the two pkg-xiph lists above a few days
701 ago, there were
400 emails waiting in the moderator queue. It took me
702 less than
15 minutes to process them all using the listadmin
705 <p
>If you install
706 <a href=
"https://tracker.debian.org/pkg/listadmin
">the listadmin
707 package
</a
> from Debian and create a file
<tt
>~/.listadmin.ini
</tt
>
708 with content like this, the moderation task is a breeze:
</p
>
710 <p
><blockquote
><pre
>
711 username username@example.org
714 discard_if_reason
"Posting restricted to members only. Remove us from your mail list.
"
717 adminurl https://{domain}/mailman/admindb/{list}
718 mailman-list@lists.example.com
721 other-list@otherserver.example.org
722 </pre
></blockquote
></p
>
724 <p
>There are other options to set as well. Check the manual page to
725 learn the details.
</p
>
727 <p
>If you are forced to moderate lists on a mailman installation where
728 the SSL certificate is self signed or not properly signed by a
729 generally accepted signing authority, you can set a environment
730 variable when calling listadmin to disable SSL verification:
</p
>
732 <p
><blockquote
><pre
>
733 PERL_LWP_SSL_VERIFY_HOSTNAME=
0 listadmin
734 </pre
></blockquote
></p
>
736 <p
>If you want to moderate a subset of the lists you take care of, you
737 can provide an argument to the listadmin script like I do in the
738 initial screen dump (the xiph argument). Using an argument, only
739 lists matching the argument string will be processed. This make it
740 quick to accept messages if you notice the moderation request in your
743 <p
>Without the listadmin program, I would never be the moderator of
68
744 mailing lists, as I simply do not have time to spend on that if the
745 process was any slower. The listadmin program have saved me hours of
746 time I could spend elsewhere over the years. It truly is nice free
749 <p
>As usual, if you use Bitcoin and want to show your support of my
750 activities, please send Bitcoin donations to my address
751 <b
><a href=
"bitcoin:
15oWEoG9dUPovwmUL9KWAnYRtNJEkP1u1b
">15oWEoG9dUPovwmUL9KWAnYRtNJEkP1u1b
</a
></b
>.
</p
>
753 <p
>Update
2014-
10-
27: Added missing
'username
' statement in
754 configuration example. Also, I
've been told that the
755 PERL_LWP_SSL_VERIFY_HOSTNAME=
0 setting do not work for everyone. Not
761 <title>S3QL, a locally mounted cloud file system - nice free software
</title>
762 <link>https://people.skolelinux.org/pere/blog/S3QL__a_locally_mounted_cloud_file_system___nice_free_software.html
</link>
763 <guid isPermaLink=
"true">https://people.skolelinux.org/pere/blog/S3QL__a_locally_mounted_cloud_file_system___nice_free_software.html
</guid>
764 <pubDate>Wed,
9 Apr
2014 11:
30:
00 +
0200</pubDate>
765 <description><p
>For a while now, I have been looking for a sensible offsite backup
766 solution for use at home. My requirements are simple, it must be
767 cheap and locally encrypted (in other words, I keep the encryption
768 keys, the storage provider do not have access to my private files).
769 One idea me and my friends had many years ago, before the cloud
770 storage providers showed up, was to use Google mail as storage,
771 writing a Linux block device storing blocks as emails in the mail
772 service provided by Google, and thus get heaps of free space. On top
773 of this one can add encryption, RAID and volume management to have
774 lots of (fairly slow, I admit that) cheap and encrypted storage. But
775 I never found time to implement such system. But the last few weeks I
776 have looked at a system called
777 <a href=
"https://bitbucket.org/nikratio/s3ql/
">S3QL
</a
>, a locally
778 mounted network backed file system with the features I need.
</p
>
780 <p
>S3QL is a fuse file system with a local cache and cloud storage,
781 handling several different storage providers, any with Amazon S3,
782 Google Drive or OpenStack API. There are heaps of such storage
783 providers. S3QL can also use a local directory as storage, which
784 combined with sshfs allow for file storage on any ssh server. S3QL
785 include support for encryption, compression, de-duplication, snapshots
786 and immutable file systems, allowing me to mount the remote storage as
787 a local mount point, look at and use the files as if they were local,
788 while the content is stored in the cloud as well. This allow me to
789 have a backup that should survive fire. The file system can not be
790 shared between several machines at the same time, as only one can
791 mount it at the time, but any machine with the encryption key and
792 access to the storage service can mount it if it is unmounted.
</p
>
794 <p
>It is simple to use. I
'm using it on Debian Wheezy, where the
795 package is included already. So to get started, run
<tt
>apt-get
796 install s3ql
</tt
>. Next, pick a storage provider. I ended up picking
797 Greenqloud, after reading their nice recipe on
798 <a href=
"https://greenqloud.zendesk.com/entries/
44611757-How-To-Use-S3QL-to-mount-a-StorageQloud-bucket-on-Debian-Wheezy
">how
799 to use S3QL with their Amazon S3 service
</a
>, because I trust the laws
800 in Iceland more than those in USA when it come to keeping my personal
801 data safe and private, and thus would rather spend money on a company
802 in Iceland. Another nice recipe is available from the article
803 <a href=
"http://www.admin-magazine.com/HPC/Articles/HPC-Cloud-Storage
">S3QL
804 Filesystem for HPC Storage
</a
> by Jeff Layton in the HPC section of
805 Admin magazine. When the provider is picked, figure out how to get
806 the API key needed to connect to the storage API. With Greencloud,
807 the key did not show up until I had added payment details to my
810 <p
>Armed with the API access details, it is time to create the file
811 system. First, create a new bucket in the cloud. This bucket is the
812 file system storage area. I picked a bucket name reflecting the
813 machine that was going to store data there, but any name will do.
814 I
'll refer to it as
<tt
>bucket-name
</tt
> below. In addition, one need
815 the API login and password, and a locally created password. Store it
816 all in ~root/.s3ql/authinfo2 like this:
818 <p
><blockquote
><pre
>
820 storage-url: s3c://s.greenqloud.com:
443/bucket-name
821 backend-login: API-login
822 backend-password: API-password
823 fs-passphrase: local-password
824 </pre
></blockquote
></p
>
826 <p
>I create my local passphrase using
<tt
>pwget
50</tt
> or similar,
827 but any sensible way to create a fairly random password should do it.
828 Armed with these details, it is now time to run mkfs, entering the API
829 details and password to create it:
</p
>
831 <p
><blockquote
><pre
>
832 # mkdir -m
700 /var/lib/s3ql-cache
833 # mkfs.s3ql --cachedir /var/lib/s3ql-cache --authfile /root/.s3ql/authinfo2 \
834 --ssl s3c://s.greenqloud.com:
443/bucket-name
836 Enter backend password:
837 Before using S3QL, make sure to read the user
's guide, especially
838 the
'Important Rules to Avoid Loosing Data
' section.
839 Enter encryption password:
840 Confirm encryption password:
841 Generating random encryption key...
842 Creating metadata tables...
852 Compressing and uploading metadata...
853 Wrote
0.00 MB of compressed metadata.
854 #
</pre
></blockquote
></p
>
856 <p
>The next step is mounting the file system to make the storage available.
858 <p
><blockquote
><pre
>
859 # mount.s3ql --cachedir /var/lib/s3ql-cache --authfile /root/.s3ql/authinfo2 \
860 --ssl --allow-root s3c://s.greenqloud.com:
443/bucket-name /s3ql
861 Using
4 upload threads.
862 Downloading and decompressing metadata...
872 Mounting filesystem...
874 Filesystem Size Used Avail Use% Mounted on
875 s3c://s.greenqloud.com:
443/bucket-name
1.0T
0 1.0T
0% /s3ql
877 </pre
></blockquote
></p
>
879 <p
>The file system is now ready for use. I use rsync to store my
880 backups in it, and as the metadata used by rsync is downloaded at
881 mount time, no network traffic (and storage cost) is triggered by
882 running rsync. To unmount, one should not use the normal umount
883 command, as this will not flush the cache to the cloud storage, but
884 instead running the umount.s3ql command like this:
886 <p
><blockquote
><pre
>
889 </pre
></blockquote
></p
>
891 <p
>There is a fsck command available to check the file system and
892 correct any problems detected. This can be used if the local server
893 crashes while the file system is mounted, to reset the
"already
894 mounted
" flag. This is what it look like when processing a working
895 file system:
</p
>
897 <p
><blockquote
><pre
>
898 # fsck.s3ql --force --ssl s3c://s.greenqloud.com:
443/bucket-name
899 Using cached metadata.
900 File system seems clean, checking anyway.
901 Checking DB integrity...
902 Creating temporary extra indices...
903 Checking lost+found...
904 Checking cached objects...
905 Checking names (refcounts)...
906 Checking contents (names)...
907 Checking contents (inodes)...
908 Checking contents (parent inodes)...
909 Checking objects (reference counts)...
910 Checking objects (backend)...
911 ..processed
5000 objects so far..
912 ..processed
10000 objects so far..
913 ..processed
15000 objects so far..
914 Checking objects (sizes)...
915 Checking blocks (referenced objects)...
916 Checking blocks (refcounts)...
917 Checking inode-block mapping (blocks)...
918 Checking inode-block mapping (inodes)...
919 Checking inodes (refcounts)...
920 Checking inodes (sizes)...
921 Checking extended attributes (names)...
922 Checking extended attributes (inodes)...
923 Checking symlinks (inodes)...
924 Checking directory reachability...
925 Checking unix conventions...
926 Checking referential integrity...
927 Dropping temporary indices...
928 Backing up old metadata...
938 Compressing and uploading metadata...
939 Wrote
0.89 MB of compressed metadata.
941 </pre
></blockquote
></p
>
943 <p
>Thanks to the cache, working on files that fit in the cache is very
944 quick, about the same speed as local file access. Uploading large
945 amount of data is to me limited by the bandwidth out of and into my
946 house. Uploading
685 MiB with a
100 MiB cache gave me
305 kiB/s,
947 which is very close to my upload speed, and downloading the same
948 Debian installation ISO gave me
610 kiB/s, close to my download speed.
949 Both were measured using
<tt
>dd
</tt
>. So for me, the bottleneck is my
950 network, not the file system code. I do not know what a good cache
951 size would be, but suspect that the cache should e larger than your
952 working set.
</p
>
954 <p
>I mentioned that only one machine can mount the file system at the
955 time. If another machine try, it is told that the file system is
958 <p
><blockquote
><pre
>
959 # mount.s3ql --cachedir /var/lib/s3ql-cache --authfile /root/.s3ql/authinfo2 \
960 --ssl --allow-root s3c://s.greenqloud.com:
443/bucket-name /s3ql
961 Using
8 upload threads.
962 Backend reports that fs is still mounted elsewhere, aborting.
964 </pre
></blockquote
></p
>
966 <p
>The file content is uploaded when the cache is full, while the
967 metadata is uploaded once every
24 hour by default. To ensure the
968 file system content is flushed to the cloud, one can either umount the
969 file system, or ask S3QL to flush the cache and metadata using
972 <p
><blockquote
><pre
>
973 # s3qlctrl upload-meta /s3ql
974 # s3qlctrl flushcache /s3ql
976 </pre
></blockquote
></p
>
978 <p
>If you are curious about how much space your data uses in the
979 cloud, and how much compression and deduplication cut down on the
980 storage usage, you can use s3qlstat on the mounted file system to get
983 <p
><blockquote
><pre
>
985 Directory entries:
9141
988 Total data size:
22049.38 MB
989 After de-duplication:
21955.46 MB (
99.57% of total)
990 After compression:
21877.28 MB (
99.22% of total,
99.64% of de-duplicated)
991 Database size:
2.39 MB (uncompressed)
992 (some values do not take into account not-yet-uploaded dirty blocks in cache)
994 </pre
></blockquote
></p
>
996 <p
>I mentioned earlier that there are several possible suppliers of
997 storage. I did not try to locate them all, but am aware of at least
998 <a href=
"https://www.greenqloud.com/
">Greenqloud
</a
>,
999 <a href=
"http://drive.google.com/
">Google Drive
</a
>,
1000 <a href=
"http://aws.amazon.com/s3/
">Amazon S3 web serivces
</a
>,
1001 <a href=
"http://www.rackspace.com/
">Rackspace
</a
> and
1002 <a href=
"http://crowncloud.net/
">Crowncloud
</A
>. The latter even
1003 accept payment in Bitcoin. Pick one that suit your need. Some of
1004 them provide several GiB of free storage, but the prize models are
1005 quite different and you will have to figure out what suits you
1008 <p
>While researching this blog post, I had a look at research papers
1009 and posters discussing the S3QL file system. There are several, which
1010 told me that the file system is getting a critical check by the
1011 science community and increased my confidence in using it. One nice
1013 "<a href=
"http://www.lanl.gov/orgs/adtsc/publications/science_highlights_2013/docs/pg68_69.pdf
">An
1014 Innovative Parallel Cloud Storage System using OpenStack’s SwiftObject
1015 Store and Transformative Parallel I/O Approach
</a
>" by Hsing-Bung
1016 Chen, Benjamin McClelland, David Sherrill, Alfred Torrez, Parks Fields
1017 and Pamela Smith. Please have a look.
</p
>
1019 <p
>Given my problems with different file systems earlier, I decided to
1020 check out the mounted S3QL file system to see if it would be usable as
1021 a home directory (in other word, that it provided POSIX semantics when
1022 it come to locking and umask handling etc). Running
1023 <a href=
"http://people.skolelinux.org/pere/blog/Testing_if_a_file_system_can_be_used_for_home_directories___.html
">my
1024 test code to check file system semantics
</a
>, I was happy to discover that
1025 no error was found. So the file system can be used for home
1026 directories, if one chooses to do so.
</p
>
1028 <p
>If you do not want a locally file system, and want something that
1029 work without the Linux fuse file system, I would like to mention the
1030 <a href=
"http://www.tarsnap.com/
">Tarsnap service
</a
>, which also
1031 provide locally encrypted backup using a command line client. It have
1032 a nicer access control system, where one can split out read and write
1033 access, allowing some systems to write to the backup and others to
1034 only read from it.
</p
>
1036 <p
>As usual, if you use Bitcoin and want to show your support of my
1037 activities, please send Bitcoin donations to my address
1038 <b
><a href=
"bitcoin:
15oWEoG9dUPovwmUL9KWAnYRtNJEkP1u1b
">15oWEoG9dUPovwmUL9KWAnYRtNJEkP1u1b
</a
></b
>.
</p
>
1043 <title>ReactOS Windows clone - nice free software
</title>
1044 <link>https://people.skolelinux.org/pere/blog/ReactOS_Windows_clone___nice_free_software.html
</link>
1045 <guid isPermaLink=
"true">https://people.skolelinux.org/pere/blog/ReactOS_Windows_clone___nice_free_software.html
</guid>
1046 <pubDate>Tue,
1 Apr
2014 12:
10:
00 +
0200</pubDate>
1047 <description><p
>Microsoft have announced that Windows XP reaches its end of life
1048 2014-
04-
08, in
7 days. But there are heaps of machines still running
1049 Windows XP, and depending on Windows XP to run their applications, and
1050 upgrading will be expensive, both when it comes to money and when it
1051 comes to the amount of effort needed to migrate from Windows XP to a
1052 new operating system. Some obvious options (buy new a Windows
1053 machine, buy a MacOSX machine, install Linux on the existing machine)
1054 are already well known and covered elsewhere. Most of them involve
1055 leaving the user applications installed on Windows XP behind and
1056 trying out replacements or updated versions. In this blog post I want
1057 to mention one strange bird that allow people to keep the hardware and
1058 the existing Windows XP applications and run them on a free software
1059 operating system that is Windows XP compatible.
</p
>
1061 <p
><a href=
"http://www.reactos.org/
">ReactOS
</a
> is a free software
1062 operating system (GNU GPL licensed) working on providing a operating
1063 system that is binary compatible with Windows, able to run windows
1064 programs directly and to use Windows drivers for hardware directly.
1065 The project goal is for Windows user to keep their existing machines,
1066 drivers and software, and gain the advantages from user a operating
1067 system without usage limitations caused by non-free licensing. It is
1068 a Windows clone running directly on the hardware, so quite different
1069 from the approach taken by
<a href=
"http://www.winehq.org/
">the Wine
1070 project
</a
>, which make it possible to run Windows binaries on
1073 <p
>The ReactOS project share code with the Wine project, so most
1074 shared libraries available on Windows are already implemented already.
1075 There is also a software manager like the one we are used to on Linux,
1076 allowing the user to install free software applications with a simple
1077 click directly from the Internet. Check out the
1078 <a href=
"http://www.reactos.org/screenshots
">screen shots on the
1079 project web site
</a
> for an idea what it look like (it looks just like
1080 Windows before metro).
</p
>
1082 <p
>I do not use ReactOS myself, preferring Linux and Unix like
1083 operating systems. I
've tested it, and it work fine in a virt-manager
1084 virtual machine. The browser, minesweeper, notepad etc is working
1085 fine as far as I can tell. Unfortunately, my main test application
1086 is the software included on a CD with the Lego Mindstorms NXT, which
1087 seem to install just fine from CD but fail to leave any binaries on
1088 the disk after the installation. So no luck with that test software.
1089 No idea why, but hope someone else figure out and fix the problem.
1090 I
've tried the ReactOS Live ISO on a physical machine, and it seemed
1091 to work just fine. If you like Windows and want to keep running your
1092 old Windows binaries, check it out by
1093 <a href=
"http://www.reactos.org/download
">downloading
</a
> the
1094 installation CD, the live CD or the preinstalled virtual machine
1100 <title>Video DVD reader library / python-dvdvideo - nice free software
</title>
1101 <link>https://people.skolelinux.org/pere/blog/Video_DVD_reader_library___python_dvdvideo___nice_free_software.html
</link>
1102 <guid isPermaLink=
"true">https://people.skolelinux.org/pere/blog/Video_DVD_reader_library___python_dvdvideo___nice_free_software.html
</guid>
1103 <pubDate>Fri,
21 Mar
2014 15:
25:
00 +
0100</pubDate>
1104 <description><p
>Keeping your DVD collection safe from scratches and curious
1105 children fingers while still having it available when you want to see a
1106 movie is not straight forward. My preferred method at the moment is
1107 to store a full copy of the ISO on a hard drive, and use VLC, Popcorn
1108 Hour or other useful players to view the resulting file. This way the
1109 subtitles and bonus material are still available and using the ISO is
1110 just like inserting the original DVD record in the DVD player.
</p
>
1112 <p
>Earlier I used dd for taking security copies, but it do not handle
1113 DVDs giving read errors (which are quite a few of them). I
've also
1115 <a href=
"http://people.skolelinux.org/pere/blog/Ripping_problematic_DVDs_using_dvdbackup_and_genisoimage.html
">dvdbackup
1116 and genisoimage
</a
>, but these days I use the marvellous python library
1118 <a href=
"http://bblank.thinkmo.de/blog/new-software-python-dvdvideo
">python-dvdvideo
</a
>
1119 written by Bastian Blank. It is
1120 <a href=
"http://packages.qa.debian.org/p/python-dvdvideo.html
">in Debian
1121 already
</a
> and the binary package name is python3-dvdvideo. Instead
1122 of trying to read every block from the DVD, it parses the file
1123 structure and figure out which block on the DVD is actually in used,
1124 and only read those blocks from the DVD. This work surprisingly well,
1125 and I have been able to almost backup my entire DVD collection using
1126 this method.
</p
>
1128 <p
>So far, python-dvdvideo have failed on between
10 and
1129 20 DVDs, which is a small fraction of my collection. The most common
1131 <a href=
"https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=
720831">DVDs
1132 using UTF-
16 instead of UTF-
8 characters
</a
>, which according to
1133 Bastian is against the DVD specification (and seem to cause some
1134 players to fail too). A rarer problem is what seem to be inconsistent
1135 DVD structures, as the python library
1136 <a href=
"https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=
723079">claim
1137 there is a overlap between objects
</a
>. An equally rare problem claim
1138 <a href=
"https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=
741878">some
1139 value is out of range
</a
>. No idea what is going on there. I wish I
1140 knew enough about the DVD format to fix these, to ensure my movie
1141 collection will stay with me in the future.
</p
>
1143 <p
>So, if you need to keep your DVDs safe, back them up using
1144 python-dvdvideo. :)
</p
>
1149 <title>Free Timetabling Software - nice free software
</title>
1150 <link>https://people.skolelinux.org/pere/blog/Free_Timetabling_Software___nice_free_software.html
</link>
1151 <guid isPermaLink=
"true">https://people.skolelinux.org/pere/blog/Free_Timetabling_Software___nice_free_software.html
</guid>
1152 <pubDate>Sat,
7 Jul
2012 09:
50:
00 +
0200</pubDate>
1153 <description><p
>Included in
<a href=
"http://www.skolelinux.org/
">Debian Edu /
1154 Skolelinux
</a
> is a large collection of end user and school specific
1155 software. It is one of the packages not installed by default but
1156 provided in the Debian archive for schools to install if they want to,
1157 is a system to automatically plan the school time table using
1158 information about available teachers, classes and rooms, combined with
1159 the list of required courses and how many hours each topic should
1160 receive. The software is
1162 <a href=
"http://lalescu.ro/liviu/fet/
">named FET
</a
>, and it provide a
1163 graphical user interface to input the required information, save the
1164 result in a fairly simple XML format, and generate time tables for
1165 both teachers and students. It is available both for
1166 <a href=
"http://lalescu.ro/liviu/fet/download.html
">Linux, MacOSX and
1167 Windows
</a
>.
</p
>
1169 <p
>This is
<a href=
"http://lalescu.ro/liviu/fet/features.html
">the
1170 feature list
</a
>, liftet from the project web site:
</p
>
1174 <li
>FET is free software, licensed under the GNU GPL v2 or later.
1175 You can freely use, copy, modify and redistribute it
</li
>
1177 <li
>Localized to en_US (US English, default), ar (Arabic), ca
1178 (Catalan), da (Danish), de (German), el (Greek), es (Spanish), fa
1179 (Persian), fr (French), gl (Galician), he (Hebrew), hu
1180 (Hungarian), id (Indonesian), it (Italian), lt (Lithuanian), mk
1181 (Macedonian), ms (Malay), nl (Dutch), pl (Polish), pt_BR
1182 (Brazilian Portuguese), ro (Romanian), ru (Russian), si (Sinhala),
1183 sk (Slovak), sr (Serbian), tr (Turkish), uk (Ukrainian), uz
1184 (Uzbek) and vi (Vietnamese) (incompletely for some languages)
1187 <li
>Fully automatic generation algorithm, allowing also
1188 semi-automatic or manual allocation
</li
>
1190 <li
>Platform independent implementation, allowing running on
1191 GNU/Linux, Windows, Mac and any system that Qt supports
</li
>
1193 <li
>Flexible modular XML format for the input file, allowing editing
1194 with an XML editor or by hand (besides FET interface)
</li
>
1196 <li
>Import/export from CSV format
</li
>
1198 <li
>The resulted timetables are exported into HTML, XML and CSV
1201 <li
>Flexible students structure, organized into sets: years, groups
1202 and subgroups. FET allows overlapping years and groups and
1203 non-overlapping subgroups. You can even define individual students
1204 (as separate sets)
</li
>
1206 <li
>Each constraint has a weight percentage, from
0.0% to
100.0%
1207 (but some special constraints are allowed to have only
100% weight
1208 percentage)
</li
>
1210 <li
>Limits for the algorithm (all these limits can be increased on
1211 demand, as a custom version, because this would require a bit more
1214 <li
>Maximum total number of hours (periods) per day:
60</li
>
1215 <li
>Maximum number of working days per week:
35</li
>
1216 <li
>Maximum total number of teachers:
6000</li
>
1217 <li
>Maximum total number of sets of students:
30000</li
>
1218 <li
>Maximum total number of subjects:
6000</li
>
1219 <li
>Virtually unlimited number of activity tags
</li
>
1220 <li
>Maximum number of activities:
30000</li
>
1221 <li
>Maximum number of rooms:
6000</li
>
1222 <li
>Maximum number of buildings:
6000</li
>
1223 <li
>Possibility of adding multiple teachers and
1224 students sets for each activity. (it is possible
1225 also to have no teachers or no students sets for an
1226 activity)
</li
>
1227 <li
>Virtually unlimited number of time constraints
</li
>
1228 <li
>Virtually unlimited number of space constraints
</li
>
1229 </ul
></li
>
1231 <li
>A large and flexible palette of time constraints:
1233 <li
>Break periods
</li
>
1234 <li
>For teacher(s):
1236 <li
>Not available periods
</li
>
1237 <li
>Max/min days per week
</li
>
1238 <li
>Max gaps per day/week
</li
>
1239 <li
>Max hours daily/continuously
</li
>
1240 <li
>Min hours daily
</li
>
1241 <li
>Max hours daily/continuously with an activity tag
</li
>
1243 <li
>Respect working in an hourly interval a max number of
1244 days per week
</li
>
1245 </ul
></li
>
1246 <li
>For students (sets):
1248 <li
>Not available periods
</li
>
1249 <li
>Begins early (specify max allowed beginnings at second hour)
</li
>
1250 <li
>Max gaps per day/week
</li
>
1251 <li
>Max hours daily/continuously
</li
>
1252 <li
>Min hours daily
</li
>
1253 <li
>Max hours daily/continuously with an activity tag
</li
>
1255 <li
>Respect working in an hourly interval a max number of
1256 days per week
</li
>
1257 </ul
></li
>
1258 <li
>For an activity or a set of activities/subactivities:
1260 <li
>A single preferred starting time
</li
>
1261 <li
>A set of preferred starting times
</li
>
1262 <li
>A set of preferred time slots
</li
>
1263 <li
>Min/max days between them
</li
>
1264 <li
>End(s) students day
</li
>
1265 <li
>Same starting time/day/hour
</li
>
1266 <li
>Occupy max time slots from selection (a complex and
1267 flexible constraint, useful in many situations)
</li
>
1268 <li
>Consecutive, ordered, grouped (for
2 or
3 (sub)activities)
</li
>
1269 <li
>Not overlapping
</li
>
1270 <li
>Max simultaneous in selected time slots
</li
>
1271 <li
>Min gaps between a set of (sub)activities
</li
>
1272 </ul
></li
>
1273 </ul
></li
>
1275 <li
>A large and flexible palette of space constraints:
1277 <li
>Room not available periods
</li
>
1278 <li
>For teacher(s):
1280 <li
>Home room(s)
</li
>
1281 <li
>Max building changes per day/week
</li
>
1282 <li
>Min gaps between building changes
</li
>
1286 <li
>For students (sets):
1288 <li
>Home room(s)
</li
>
1289 <li
>Max building changes per day/week
</li
>
1290 <li
>Min gaps between building changes
</li
>
1293 <li
>Preferred room(s):
1295 <li
>For a subject
</li
>
1296 <li
>For an activity tag
</li
>
1297 <li
>For a subject and an activity tag
</li
>
1298 <li
>Individually for a (sub)activity
</li
>
1302 <li
>For a set of activities:
1304 <li
>Occupy a maximum number of different rooms
</li
>
1309 </ul
></p
>
1311 <p
>I have not used it myself, as I am not involved in time table
1312 planning at a school, but it seem to work fine when I test it. If you
1313 need to set up your schools time table, and is tired of doing it
1314 manually, check it out.
1316 A quick summary on how to use it can be found in
1317 <a href=
"http://marvelsoft.co.in/wp/
2012/
03/generate-timetable-for-state-cbse-icse-igcse-schools-free/
">a
1318 blog post from MarvelSoft
</a
>. If you find FET useful, please provide
1319 a recipe for the Debian Edu project in the
1320 <a href=
"http://wiki.debian.org/DebianEdu#Howtos
">Debian Edu HowTo
1321 section
</a
>.
</p
>