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>http://people.skolelinux.org/pere/blog/
</link>
10 <title>Oolite, a life in space as vagabond and mercenary - nice free software
</title>
11 <link>http://people.skolelinux.org/pere/blog/Oolite__a_life_in_space_as_vagabond_and_mercenary___nice_free_software.html
</link>
12 <guid isPermaLink=
"true">http://people.skolelinux.org/pere/blog/Oolite__a_life_in_space_as_vagabond_and_mercenary___nice_free_software.html
</guid>
13 <pubDate>Sun,
11 Dec
2016 11:
40:
00 +
0100</pubDate>
14 <description><p align=
"center
"><img width=
"70%
" src=
"http://people.skolelinux.org/pere/blog/images/
2016-
12-
11-nice-oolite.png
"/
></p
>
16 <p
>In my early years, I played
17 <a href=
"http://wiki.alioth.net/index.php/Classic_Elite
">the epic game
18 Elite
</a
> on my PC. I spent many months trading and fighting in
19 space, and reached the
'elite
' fighting status before I moved on. The
20 original Elite game was available on Commodore
64 and the IBM PC
21 edition I played had a
64 KB executable. I am still impressed today
22 that the authors managed to squeeze both a
3D engine and details about
23 more than
2000 planet systems across
7 galaxies into a binary so
26 <p
>I have known about
<a href=
"http://www.oolite.org/
">the free
27 software game Oolite inspired by Elite
</a
> for a while, but did not
28 really have time to test it properly until a few days ago. It was
29 great to discover that my old knowledge about trading routes were
30 still valid. But my fighting and flying abilities were gone, so I had
31 to retrain to be able to dock on a space station. And I am still not
32 able to make much resistance when I am attacked by pirates, so I
33 bougth and mounted the most powerful laser in the rear to be able to
34 put up at least some resistance while fleeing for my life. :)
</p
>
36 <p
>When playing Elite in the late eighties, I had to discover
37 everything on my own, and I had long lists of prices seen on different
38 planets to be able to decide where to trade what. This time I had the
40 <a href=
"http://wiki.alioth.net/index.php/Main_Page
">Elite wiki
</a
>,
41 where information about each planet is easily available with common
42 price ranges and suggested trading routes. This improved my ability
43 to earn money and I have been able to earn enough to buy a lot of
44 useful equipent in a few days. I believe I originally played for
45 months before I could get a docking computer, while now I could get it
46 after less then a week.
</p
>
48 <p
>If you like science fiction and dreamed of a life as a vagabond in
49 space, you should try out Oolite. It is available for Linux, MacOSX
50 and Windows, and is included in Debian and derivatives since
2011.
</p
>
52 <p
>As usual, if you use Bitcoin and want to show your support of my
53 activities, please send Bitcoin donations to my address
54 <b
><a href=
"bitcoin:
15oWEoG9dUPovwmUL9KWAnYRtNJEkP1u1b
&label=PetterReinholdtsenBlog
">15oWEoG9dUPovwmUL9KWAnYRtNJEkP1u1b
</a
></b
>.
</p
>
59 <title>Coz can help you find bottlenecks in multi-threaded software - nice free software
</title>
60 <link>http://people.skolelinux.org/pere/blog/Coz_can_help_you_find_bottlenecks_in_multi_threaded_software___nice_free_software.html
</link>
61 <guid isPermaLink=
"true">http://people.skolelinux.org/pere/blog/Coz_can_help_you_find_bottlenecks_in_multi_threaded_software___nice_free_software.html
</guid>
62 <pubDate>Thu,
11 Aug
2016 12:
00:
00 +
0200</pubDate>
63 <description><p
>This summer, I read a great article
64 "<a href=
"https://www.usenix.org/publications/login/summer2016/curtsinger
">coz:
65 This Is the Profiler You
're Looking For
</a
>" in USENIX ;login: about
66 how to profile multi-threaded programs. It presented a system for
67 profiling software by running experiences in the running program,
68 testing how run time performance is affected by
"speeding up
" parts of
69 the code to various degrees compared to a normal run. It does this by
70 slowing down parallel threads while the
"faster up
" code is running
71 and measure how this affect processing time. The processing time is
72 measured using probes inserted into the code, either using progress
73 counters (COZ_PROGRESS) or as latency meters (COZ_BEGIN/COZ_END). It
74 can also measure unmodified code by measuring complete the program
75 runtime and running the program several times instead.
</p
>
77 <p
>The project and presentation was so inspiring that I would like to
78 get the system into Debian. I
79 <a href=
"https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=
830708">created
80 a WNPP request for it
</a
> and contacted upstream to try to make the
81 system ready for Debian by sending patches. The build process need to
82 be changed a bit to avoid running
'git clone
' to get dependencies, and
83 to include the JavaScript web page used to visualize the collected
84 profiling information included in the source package.
85 But I expect that should work out fairly soon.
</p
>
87 <p
>The way the system work is fairly simple. To run an coz experiment
88 on a binary with debug symbols available, start the program like this:
90 <p
><blockquote
><pre
>
91 coz run --- program-to-run
92 </pre
></blockquote
></p
>
94 <p
>This will create a text file profile.coz with the instrumentation
95 information. To show what part of the code affect the performance
96 most, use a web browser and either point it to
97 <a href=
"http://plasma-umass.github.io/coz/
">http://plasma-umass.github.io/coz/
</a
>
98 or use the copy from git (in the gh-pages branch). Check out this web
99 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
100 profiling more useful you include
&lt;coz.h
&gt; and insert the
101 COZ_PROGRESS or COZ_BEGIN and COZ_END at appropriate places in the
102 code, rebuild and run the profiler. This allow coz to do more
103 targeted experiments.
</p
>
105 <p
>A video published by ACM
106 <a href=
"https://www.youtube.com/watch?v=jE0V-p1odPg
">presenting the
107 Coz profiler
</a
> is available from Youtube. There is also a paper
108 from the
25th Symposium on Operating Systems Principles available
110 <a href=
"https://www.usenix.org/conference/atc16/technical-sessions/presentation/curtsinger
">Coz:
111 finding code that counts with causal profiling
</a
>.
</p
>
113 <p
><a href=
"https://github.com/plasma-umass/coz
">The source code
</a
>
114 for Coz is available from github. It will only build with clang
116 <a href=
"https://gcc.gnu.org/bugzilla/show_bug.cgi?id=
55606">C++
117 feature missing in GCC
</a
>, but I
've submitted
118 <a href=
"https://github.com/plasma-umass/coz/pull/
67">a patch to solve
119 it
</a
> and hope it will be included in the upstream source soon.
</p
>
121 <p
>Please get in touch if you, like me, would like to see this piece
122 of software in Debian. I would very much like some help with the
123 packaging effort, as I lack the in depth knowledge on how to package
124 C++ libraries.
</p
>
129 <title>Creepy, visualise geotagged social media information - nice free software
</title>
130 <link>http://people.skolelinux.org/pere/blog/Creepy__visualise_geotagged_social_media_information___nice_free_software.html
</link>
131 <guid isPermaLink=
"true">http://people.skolelinux.org/pere/blog/Creepy__visualise_geotagged_social_media_information___nice_free_software.html
</guid>
132 <pubDate>Sun,
24 Jan
2016 10:
50:
00 +
0100</pubDate>
133 <description><p
>Most people seem not to realise that every time they walk around
134 with the computerised radio beacon known as a mobile phone their
135 position is tracked by the phone company and often stored for a long
136 time (like every time a SMS is received or sent). And if their
137 computerised radio beacon is capable of running programs (often called
138 mobile apps) downloaded from the Internet, these programs are often
139 also capable of tracking their location (if the app requested access
140 during installation). And when these programs send out information to
141 central collection points, the location is often included, unless
142 extra care is taken to not send the location. The provided
143 information is used by several entities, for good and bad (what is
144 good and bad, depend on your point of view). What is certain, is that
145 the private sphere and the right to free movement is challenged and
146 perhaps even eradicated for those announcing their location this way,
147 when they share their whereabouts with private and public
150 <p align=
"center
"><img width=
"70%
" src=
"http://people.skolelinux.org/pere/blog/images/
2016-
01-
24-nice-creepy-desktop-window.png
"></p
>
152 <p
>The phone company logs provide a register of locations to check out
153 when one want to figure out what the tracked person was doing. It is
154 unavailable for most of us, but provided to selected government
155 officials, company staff, those illegally buying information from
156 unfaithful servants and crackers stealing the information. But the
157 public information can be collected and analysed, and a free software
158 tool to do so is called
159 <a href=
"http://www.geocreepy.com/
">Creepy or Cree.py
</a
>. I
160 discovered it when I read
161 <a href=
"http://www.aftenposten.no/kultur/Slik-kan-du-bli-overvaket-pa-Twitter-og-Instagram-uten-a-ane-det-
7787884.html
">an
162 article about Creepy
</a
> in the Norwegian newspaper Aftenposten i
163 November
2014, and decided to check if it was available in Debian.
164 The python program was in Debian, but
165 <a href=
"https://tracker.debian.org/pkg/creepy
">the version in
166 Debian
</a
> was completely broken and practically unmaintained. I
167 uploaded a new version which did not work quite right, but did not
168 have time to fix it then. This Christmas I decided to finally try to
169 get Creepy operational in Debian. Now a fixed version is available in
170 Debian unstable and testing, and almost all Debian specific patches
172 <a href=
"https://github.com/jkakavas/creepy
">upstream
</a
>.
</p
>
174 <p
>The Creepy program visualises geolocation information fetched from
175 Twitter, Instagram, Flickr and Google+, and allow one to get a
176 complete picture of every social media message posted recently in a
177 given area, or track the movement of a given individual across all
178 these services. Earlier it was possible to use the search API of at
179 least some of these services without identifying oneself, but these
180 days it is impossible. This mean that to use Creepy, you need to
181 configure it to log in as yourself on these services, and provide
182 information to them about your search interests. This should be taken
183 into account when using Creepy, as it will also share information
184 about yourself with the services.
</p
>
186 <p
>The picture above show the twitter messages sent from (or at least
187 geotagged with a position from) the city centre of Oslo, the capital
188 of Norway. One useful way to use Creepy is to first look at
189 information tagged with an area of interest, and next look at all the
190 information provided by one or more individuals who was in the area.
191 I tested it by checking out which celebrity provide their location in
192 twitter messages by checkout out who sent twitter messages near a
193 Norwegian TV station, and next could track their position over time,
194 making it possible to locate their home and work place, among other
195 things. A similar technique have been
196 <a href=
"http://www.buzzfeed.com/maxseddon/does-this-soldiers-instagram-account-prove-russia-is-covertl
">used
197 to locate Russian soldiers in Ukraine
</a
>, and it is both a powerful
198 tool to discover lying governments, and a useful tool to help people
199 understand the value of the private information they provide to the
202 <p
>The package is not trivial to backport to Debian Stable/Jessie, as
203 it depend on several python modules currently missing in Jessie (at
204 least python-instagram, python-flickrapi and
205 python-requests-toolbelt).
</p
>
207 <p
>(I have uploaded
208 <a href=
"https://screenshots.debian.net/package/creepy
">the image to
209 screenshots.debian.net
</a
> and licensed it under the same terms as the
210 Creepy program in Debian.)
</p
>
215 <title>OpenALPR, find car license plates in video streams - nice free software
</title>
216 <link>http://people.skolelinux.org/pere/blog/OpenALPR__find_car_license_plates_in_video_streams___nice_free_software.html
</link>
217 <guid isPermaLink=
"true">http://people.skolelinux.org/pere/blog/OpenALPR__find_car_license_plates_in_video_streams___nice_free_software.html
</guid>
218 <pubDate>Wed,
23 Dec
2015 01:
00:
00 +
0100</pubDate>
219 <description><p
>When I was a kid, we used to collect
"car numbers
", as we used to
220 call the car license plate numbers in those days. I would write the
221 numbers down in my little book and compare notes with the other kids
222 to see how many region codes we had seen and if we had seen some
223 exotic or special region codes and numbers. It was a fun game to pass
224 time, as we kids have plenty of it.
</p
>
226 <p
>A few days I came across
227 <a href=
"https://github.com/openalpr/openalpr
">the OpenALPR
228 project
</a
>, a free software project to automatically discover and
229 report license plates in images and video streams, and provide the
230 "car numbers
" in a machine readable format. I
've been looking for
231 such system for a while now, because I believe it is a bad idea that the
232 <a href=
"https://en.wikipedia.org/wiki/Automatic_number_plate_recognition
">automatic
233 number plate recognition
</a
> tool only is available in the hands of
234 the powerful, and want it to be available also for the powerless to
235 even the score when it comes to surveillance and sousveillance. I
236 discovered the developer
237 <a href=
"https://bugs.debian.org/
747509">wanted to get the tool into
238 Debian
</a
>, and as I too wanted it to be in Debian, I volunteered to
239 help him get it into shape to get the package uploaded into the Debian
242 <p
>Today we finally managed to get the package into shape and uploaded
243 it into Debian, where it currently
244 <a href=
"https://ftp-master.debian.org//new/openalpr_2.2
.1-
1.html
">waits
245 in the NEW queue
</a
> for review by the Debian ftpmasters.
</p
>
247 <p
>I guess you are wondering why on earth such tool would be useful
248 for the common folks, ie those not running a large government
249 surveillance system? Well, I plan to put it in a computer on my bike
250 and in my car, tracking the cars nearby and allowing me to be notified
251 when number plates on my watch list are discovered. Another use case
252 was suggested by a friend of mine, who wanted to set it up at his home
253 to open the car port automatically when it discovered the plate on his
254 car. When I mentioned it perhaps was a bit foolhardy to allow anyone
255 capable of placing his license plate number of a piece of cardboard to
256 open his car port, men replied that it was always unlocked anyway. I
257 guess for such use case it make sense. I am sure there are other use
258 cases too, for those with imagination and a vision.
</p
>
260 <p
>If you want to build your own version of the Debian package, check
261 out the upstream git source and symlink ./distros/debian to ./debian/
262 before running
"debuild
" to build the source. Or wait a bit until the
263 package show up in unstable.
</p
>
268 <title>listadmin, the quick way to moderate mailman lists - nice free software
</title>
269 <link>http://people.skolelinux.org/pere/blog/listadmin__the_quick_way_to_moderate_mailman_lists___nice_free_software.html
</link>
270 <guid isPermaLink=
"true">http://people.skolelinux.org/pere/blog/listadmin__the_quick_way_to_moderate_mailman_lists___nice_free_software.html
</guid>
271 <pubDate>Wed,
22 Oct
2014 20:
00:
00 +
0200</pubDate>
272 <description><p
>If you ever had to moderate a mailman list, like the ones on
273 alioth.debian.org, you know the web interface is fairly slow to
274 operate. First you visit one web page, enter the moderation password
275 and get a new page shown with a list of all the messages to moderate
276 and various options for each email address. This take a while for
277 every list you moderate, and you need to do it regularly to do a good
278 job as a list moderator. But there is a quick alternative,
279 <a href=
"http://heim.ifi.uio.no/kjetilho/hacks/#listadmin
">the
280 listadmin program
</a
>. It allow you to check lists for new messages
281 to moderate in a fraction of a second. Here is a test run on two
282 lists I recently took over:
</p
>
284 <p
><blockquote
><pre
>
285 % time listadmin xiph
286 fetching data for pkg-xiph-commits@lists.alioth.debian.org ... nothing in queue
287 fetching data for pkg-xiph-maint@lists.alioth.debian.org ... nothing in queue
293 </pre
></blockquote
></p
>
295 <p
>In
1.7 seconds I had checked two mailing lists and confirmed that
296 there are no message in the moderation queue. Every morning I
297 currently moderate
68 mailman lists, and it normally take around two
298 minutes. When I took over the two pkg-xiph lists above a few days
299 ago, there were
400 emails waiting in the moderator queue. It took me
300 less than
15 minutes to process them all using the listadmin
303 <p
>If you install
304 <a href=
"https://tracker.debian.org/pkg/listadmin
">the listadmin
305 package
</a
> from Debian and create a file
<tt
>~/.listadmin.ini
</tt
>
306 with content like this, the moderation task is a breeze:
</p
>
308 <p
><blockquote
><pre
>
309 username username@example.org
312 discard_if_reason
"Posting restricted to members only. Remove us from your mail list.
"
315 adminurl https://{domain}/mailman/admindb/{list}
316 mailman-list@lists.example.com
319 other-list@otherserver.example.org
320 </pre
></blockquote
></p
>
322 <p
>There are other options to set as well. Check the manual page to
323 learn the details.
</p
>
325 <p
>If you are forced to moderate lists on a mailman installation where
326 the SSL certificate is self signed or not properly signed by a
327 generally accepted signing authority, you can set a environment
328 variable when calling listadmin to disable SSL verification:
</p
>
330 <p
><blockquote
><pre
>
331 PERL_LWP_SSL_VERIFY_HOSTNAME=
0 listadmin
332 </pre
></blockquote
></p
>
334 <p
>If you want to moderate a subset of the lists you take care of, you
335 can provide an argument to the listadmin script like I do in the
336 initial screen dump (the xiph argument). Using an argument, only
337 lists matching the argument string will be processed. This make it
338 quick to accept messages if you notice the moderation request in your
341 <p
>Without the listadmin program, I would never be the moderator of
68
342 mailing lists, as I simply do not have time to spend on that if the
343 process was any slower. The listadmin program have saved me hours of
344 time I could spend elsewhere over the years. It truly is nice free
347 <p
>As usual, if you use Bitcoin and want to show your support of my
348 activities, please send Bitcoin donations to my address
349 <b
><a href=
"bitcoin:
15oWEoG9dUPovwmUL9KWAnYRtNJEkP1u1b
&label=PetterReinholdtsenBlog
">15oWEoG9dUPovwmUL9KWAnYRtNJEkP1u1b
</a
></b
>.
</p
>
351 <p
>Update
2014-
10-
27: Added missing
'username
' statement in
352 configuration example. Also, I
've been told that the
353 PERL_LWP_SSL_VERIFY_HOSTNAME=
0 setting do not work for everyone. Not
359 <title>S3QL, a locally mounted cloud file system - nice free software
</title>
360 <link>http://people.skolelinux.org/pere/blog/S3QL__a_locally_mounted_cloud_file_system___nice_free_software.html
</link>
361 <guid isPermaLink=
"true">http://people.skolelinux.org/pere/blog/S3QL__a_locally_mounted_cloud_file_system___nice_free_software.html
</guid>
362 <pubDate>Wed,
9 Apr
2014 11:
30:
00 +
0200</pubDate>
363 <description><p
>For a while now, I have been looking for a sensible offsite backup
364 solution for use at home. My requirements are simple, it must be
365 cheap and locally encrypted (in other words, I keep the encryption
366 keys, the storage provider do not have access to my private files).
367 One idea me and my friends had many years ago, before the cloud
368 storage providers showed up, was to use Google mail as storage,
369 writing a Linux block device storing blocks as emails in the mail
370 service provided by Google, and thus get heaps of free space. On top
371 of this one can add encryption, RAID and volume management to have
372 lots of (fairly slow, I admit that) cheap and encrypted storage. But
373 I never found time to implement such system. But the last few weeks I
374 have looked at a system called
375 <a href=
"https://bitbucket.org/nikratio/s3ql/
">S3QL
</a
>, a locally
376 mounted network backed file system with the features I need.
</p
>
378 <p
>S3QL is a fuse file system with a local cache and cloud storage,
379 handling several different storage providers, any with Amazon S3,
380 Google Drive or OpenStack API. There are heaps of such storage
381 providers. S3QL can also use a local directory as storage, which
382 combined with sshfs allow for file storage on any ssh server. S3QL
383 include support for encryption, compression, de-duplication, snapshots
384 and immutable file systems, allowing me to mount the remote storage as
385 a local mount point, look at and use the files as if they were local,
386 while the content is stored in the cloud as well. This allow me to
387 have a backup that should survive fire. The file system can not be
388 shared between several machines at the same time, as only one can
389 mount it at the time, but any machine with the encryption key and
390 access to the storage service can mount it if it is unmounted.
</p
>
392 <p
>It is simple to use. I
'm using it on Debian Wheezy, where the
393 package is included already. So to get started, run
<tt
>apt-get
394 install s3ql
</tt
>. Next, pick a storage provider. I ended up picking
395 Greenqloud, after reading their nice recipe on
396 <a href=
"https://greenqloud.zendesk.com/entries/
44611757-How-To-Use-S3QL-to-mount-a-StorageQloud-bucket-on-Debian-Wheezy
">how
397 to use S3QL with their Amazon S3 service
</a
>, because I trust the laws
398 in Iceland more than those in USA when it come to keeping my personal
399 data safe and private, and thus would rather spend money on a company
400 in Iceland. Another nice recipe is available from the article
401 <a href=
"http://www.admin-magazine.com/HPC/Articles/HPC-Cloud-Storage
">S3QL
402 Filesystem for HPC Storage
</a
> by Jeff Layton in the HPC section of
403 Admin magazine. When the provider is picked, figure out how to get
404 the API key needed to connect to the storage API. With Greencloud,
405 the key did not show up until I had added payment details to my
408 <p
>Armed with the API access details, it is time to create the file
409 system. First, create a new bucket in the cloud. This bucket is the
410 file system storage area. I picked a bucket name reflecting the
411 machine that was going to store data there, but any name will do.
412 I
'll refer to it as
<tt
>bucket-name
</tt
> below. In addition, one need
413 the API login and password, and a locally created password. Store it
414 all in ~root/.s3ql/authinfo2 like this:
416 <p
><blockquote
><pre
>
418 storage-url: s3c://s.greenqloud.com:
443/bucket-name
419 backend-login: API-login
420 backend-password: API-password
421 fs-passphrase: local-password
422 </pre
></blockquote
></p
>
424 <p
>I create my local passphrase using
<tt
>pwget
50</tt
> or similar,
425 but any sensible way to create a fairly random password should do it.
426 Armed with these details, it is now time to run mkfs, entering the API
427 details and password to create it:
</p
>
429 <p
><blockquote
><pre
>
430 # mkdir -m
700 /var/lib/s3ql-cache
431 # mkfs.s3ql --cachedir /var/lib/s3ql-cache --authfile /root/.s3ql/authinfo2 \
432 --ssl s3c://s.greenqloud.com:
443/bucket-name
434 Enter backend password:
435 Before using S3QL, make sure to read the user
's guide, especially
436 the
'Important Rules to Avoid Loosing Data
' section.
437 Enter encryption password:
438 Confirm encryption password:
439 Generating random encryption key...
440 Creating metadata tables...
450 Compressing and uploading metadata...
451 Wrote
0.00 MB of compressed metadata.
452 #
</pre
></blockquote
></p
>
454 <p
>The next step is mounting the file system to make the storage available.
456 <p
><blockquote
><pre
>
457 # mount.s3ql --cachedir /var/lib/s3ql-cache --authfile /root/.s3ql/authinfo2 \
458 --ssl --allow-root s3c://s.greenqloud.com:
443/bucket-name /s3ql
459 Using
4 upload threads.
460 Downloading and decompressing metadata...
470 Mounting filesystem...
472 Filesystem Size Used Avail Use% Mounted on
473 s3c://s.greenqloud.com:
443/bucket-name
1.0T
0 1.0T
0% /s3ql
475 </pre
></blockquote
></p
>
477 <p
>The file system is now ready for use. I use rsync to store my
478 backups in it, and as the metadata used by rsync is downloaded at
479 mount time, no network traffic (and storage cost) is triggered by
480 running rsync. To unmount, one should not use the normal umount
481 command, as this will not flush the cache to the cloud storage, but
482 instead running the umount.s3ql command like this:
484 <p
><blockquote
><pre
>
487 </pre
></blockquote
></p
>
489 <p
>There is a fsck command available to check the file system and
490 correct any problems detected. This can be used if the local server
491 crashes while the file system is mounted, to reset the
"already
492 mounted
" flag. This is what it look like when processing a working
493 file system:
</p
>
495 <p
><blockquote
><pre
>
496 # fsck.s3ql --force --ssl s3c://s.greenqloud.com:
443/bucket-name
497 Using cached metadata.
498 File system seems clean, checking anyway.
499 Checking DB integrity...
500 Creating temporary extra indices...
501 Checking lost+found...
502 Checking cached objects...
503 Checking names (refcounts)...
504 Checking contents (names)...
505 Checking contents (inodes)...
506 Checking contents (parent inodes)...
507 Checking objects (reference counts)...
508 Checking objects (backend)...
509 ..processed
5000 objects so far..
510 ..processed
10000 objects so far..
511 ..processed
15000 objects so far..
512 Checking objects (sizes)...
513 Checking blocks (referenced objects)...
514 Checking blocks (refcounts)...
515 Checking inode-block mapping (blocks)...
516 Checking inode-block mapping (inodes)...
517 Checking inodes (refcounts)...
518 Checking inodes (sizes)...
519 Checking extended attributes (names)...
520 Checking extended attributes (inodes)...
521 Checking symlinks (inodes)...
522 Checking directory reachability...
523 Checking unix conventions...
524 Checking referential integrity...
525 Dropping temporary indices...
526 Backing up old metadata...
536 Compressing and uploading metadata...
537 Wrote
0.89 MB of compressed metadata.
539 </pre
></blockquote
></p
>
541 <p
>Thanks to the cache, working on files that fit in the cache is very
542 quick, about the same speed as local file access. Uploading large
543 amount of data is to me limited by the bandwidth out of and into my
544 house. Uploading
685 MiB with a
100 MiB cache gave me
305 kiB/s,
545 which is very close to my upload speed, and downloading the same
546 Debian installation ISO gave me
610 kiB/s, close to my download speed.
547 Both were measured using
<tt
>dd
</tt
>. So for me, the bottleneck is my
548 network, not the file system code. I do not know what a good cache
549 size would be, but suspect that the cache should e larger than your
550 working set.
</p
>
552 <p
>I mentioned that only one machine can mount the file system at the
553 time. If another machine try, it is told that the file system is
556 <p
><blockquote
><pre
>
557 # mount.s3ql --cachedir /var/lib/s3ql-cache --authfile /root/.s3ql/authinfo2 \
558 --ssl --allow-root s3c://s.greenqloud.com:
443/bucket-name /s3ql
559 Using
8 upload threads.
560 Backend reports that fs is still mounted elsewhere, aborting.
562 </pre
></blockquote
></p
>
564 <p
>The file content is uploaded when the cache is full, while the
565 metadata is uploaded once every
24 hour by default. To ensure the
566 file system content is flushed to the cloud, one can either umount the
567 file system, or ask S3QL to flush the cache and metadata using
570 <p
><blockquote
><pre
>
571 # s3qlctrl upload-meta /s3ql
572 # s3qlctrl flushcache /s3ql
574 </pre
></blockquote
></p
>
576 <p
>If you are curious about how much space your data uses in the
577 cloud, and how much compression and deduplication cut down on the
578 storage usage, you can use s3qlstat on the mounted file system to get
581 <p
><blockquote
><pre
>
583 Directory entries:
9141
586 Total data size:
22049.38 MB
587 After de-duplication:
21955.46 MB (
99.57% of total)
588 After compression:
21877.28 MB (
99.22% of total,
99.64% of de-duplicated)
589 Database size:
2.39 MB (uncompressed)
590 (some values do not take into account not-yet-uploaded dirty blocks in cache)
592 </pre
></blockquote
></p
>
594 <p
>I mentioned earlier that there are several possible suppliers of
595 storage. I did not try to locate them all, but am aware of at least
596 <a href=
"https://www.greenqloud.com/
">Greenqloud
</a
>,
597 <a href=
"http://drive.google.com/
">Google Drive
</a
>,
598 <a href=
"http://aws.amazon.com/s3/
">Amazon S3 web serivces
</a
>,
599 <a href=
"http://www.rackspace.com/
">Rackspace
</a
> and
600 <a href=
"http://crowncloud.net/
">Crowncloud
</A
>. The latter even
601 accept payment in Bitcoin. Pick one that suit your need. Some of
602 them provide several GiB of free storage, but the prize models are
603 quite different and you will have to figure out what suits you
606 <p
>While researching this blog post, I had a look at research papers
607 and posters discussing the S3QL file system. There are several, which
608 told me that the file system is getting a critical check by the
609 science community and increased my confidence in using it. One nice
611 "<a href=
"http://www.lanl.gov/orgs/adtsc/publications/science_highlights_2013/docs/pg68_69.pdf
">An
612 Innovative Parallel Cloud Storage System using OpenStack’s SwiftObject
613 Store and Transformative Parallel I/O Approach
</a
>" by Hsing-Bung
614 Chen, Benjamin McClelland, David Sherrill, Alfred Torrez, Parks Fields
615 and Pamela Smith. Please have a look.
</p
>
617 <p
>Given my problems with different file systems earlier, I decided to
618 check out the mounted S3QL file system to see if it would be usable as
619 a home directory (in other word, that it provided POSIX semantics when
620 it come to locking and umask handling etc). Running
621 <a href=
"http://people.skolelinux.org/pere/blog/Testing_if_a_file_system_can_be_used_for_home_directories___.html
">my
622 test code to check file system semantics
</a
>, I was happy to discover that
623 no error was found. So the file system can be used for home
624 directories, if one chooses to do so.
</p
>
626 <p
>If you do not want a locally file system, and want something that
627 work without the Linux fuse file system, I would like to mention the
628 <a href=
"http://www.tarsnap.com/
">Tarsnap service
</a
>, which also
629 provide locally encrypted backup using a command line client. It have
630 a nicer access control system, where one can split out read and write
631 access, allowing some systems to write to the backup and others to
632 only read from it.
</p
>
634 <p
>As usual, if you use Bitcoin and want to show your support of my
635 activities, please send Bitcoin donations to my address
636 <b
><a href=
"bitcoin:
15oWEoG9dUPovwmUL9KWAnYRtNJEkP1u1b
&label=PetterReinholdtsenBlog
">15oWEoG9dUPovwmUL9KWAnYRtNJEkP1u1b
</a
></b
>.
</p
>
641 <title>ReactOS Windows clone - nice free software
</title>
642 <link>http://people.skolelinux.org/pere/blog/ReactOS_Windows_clone___nice_free_software.html
</link>
643 <guid isPermaLink=
"true">http://people.skolelinux.org/pere/blog/ReactOS_Windows_clone___nice_free_software.html
</guid>
644 <pubDate>Tue,
1 Apr
2014 12:
10:
00 +
0200</pubDate>
645 <description><p
>Microsoft have announced that Windows XP reaches its end of life
646 2014-
04-
08, in
7 days. But there are heaps of machines still running
647 Windows XP, and depending on Windows XP to run their applications, and
648 upgrading will be expensive, both when it comes to money and when it
649 comes to the amount of effort needed to migrate from Windows XP to a
650 new operating system. Some obvious options (buy new a Windows
651 machine, buy a MacOSX machine, install Linux on the existing machine)
652 are already well known and covered elsewhere. Most of them involve
653 leaving the user applications installed on Windows XP behind and
654 trying out replacements or updated versions. In this blog post I want
655 to mention one strange bird that allow people to keep the hardware and
656 the existing Windows XP applications and run them on a free software
657 operating system that is Windows XP compatible.
</p
>
659 <p
><a href=
"http://www.reactos.org/
">ReactOS
</a
> is a free software
660 operating system (GNU GPL licensed) working on providing a operating
661 system that is binary compatible with Windows, able to run windows
662 programs directly and to use Windows drivers for hardware directly.
663 The project goal is for Windows user to keep their existing machines,
664 drivers and software, and gain the advantages from user a operating
665 system without usage limitations caused by non-free licensing. It is
666 a Windows clone running directly on the hardware, so quite different
667 from the approach taken by
<a href=
"http://www.winehq.org/
">the Wine
668 project
</a
>, which make it possible to run Windows binaries on
671 <p
>The ReactOS project share code with the Wine project, so most
672 shared libraries available on Windows are already implemented already.
673 There is also a software manager like the one we are used to on Linux,
674 allowing the user to install free software applications with a simple
675 click directly from the Internet. Check out the
676 <a href=
"http://www.reactos.org/screenshots
">screen shots on the
677 project web site
</a
> for an idea what it look like (it looks just like
678 Windows before metro).
</p
>
680 <p
>I do not use ReactOS myself, preferring Linux and Unix like
681 operating systems. I
've tested it, and it work fine in a virt-manager
682 virtual machine. The browser, minesweeper, notepad etc is working
683 fine as far as I can tell. Unfortunately, my main test application
684 is the software included on a CD with the Lego Mindstorms NXT, which
685 seem to install just fine from CD but fail to leave any binaries on
686 the disk after the installation. So no luck with that test software.
687 No idea why, but hope someone else figure out and fix the problem.
688 I
've tried the ReactOS Live ISO on a physical machine, and it seemed
689 to work just fine. If you like Windows and want to keep running your
690 old Windows binaries, check it out by
691 <a href=
"http://www.reactos.org/download
">downloading
</a
> the
692 installation CD, the live CD or the preinstalled virtual machine
698 <title>Video DVD reader library / python-dvdvideo - nice free software
</title>
699 <link>http://people.skolelinux.org/pere/blog/Video_DVD_reader_library___python_dvdvideo___nice_free_software.html
</link>
700 <guid isPermaLink=
"true">http://people.skolelinux.org/pere/blog/Video_DVD_reader_library___python_dvdvideo___nice_free_software.html
</guid>
701 <pubDate>Fri,
21 Mar
2014 15:
25:
00 +
0100</pubDate>
702 <description><p
>Keeping your DVD collection safe from scratches and curious
703 children fingers while still having it available when you want to see a
704 movie is not straight forward. My preferred method at the moment is
705 to store a full copy of the ISO on a hard drive, and use VLC, Popcorn
706 Hour or other useful players to view the resulting file. This way the
707 subtitles and bonus material are still available and using the ISO is
708 just like inserting the original DVD record in the DVD player.
</p
>
710 <p
>Earlier I used dd for taking security copies, but it do not handle
711 DVDs giving read errors (which are quite a few of them). I
've also
713 <a href=
"http://people.skolelinux.org/pere/blog/Ripping_problematic_DVDs_using_dvdbackup_and_genisoimage.html
">dvdbackup
714 and genisoimage
</a
>, but these days I use the marvellous python library
716 <a href=
"http://bblank.thinkmo.de/blog/new-software-python-dvdvideo
">python-dvdvideo
</a
>
717 written by Bastian Blank. It is
718 <a href=
"http://packages.qa.debian.org/p/python-dvdvideo.html
">in Debian
719 already
</a
> and the binary package name is python3-dvdvideo. Instead
720 of trying to read every block from the DVD, it parses the file
721 structure and figure out which block on the DVD is actually in used,
722 and only read those blocks from the DVD. This work surprisingly well,
723 and I have been able to almost backup my entire DVD collection using
724 this method.
</p
>
726 <p
>So far, python-dvdvideo have failed on between
10 and
727 20 DVDs, which is a small fraction of my collection. The most common
729 <a href=
"https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=
720831">DVDs
730 using UTF-
16 instead of UTF-
8 characters
</a
>, which according to
731 Bastian is against the DVD specification (and seem to cause some
732 players to fail too). A rarer problem is what seem to be inconsistent
733 DVD structures, as the python library
734 <a href=
"https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=
723079">claim
735 there is a overlap between objects
</a
>. An equally rare problem claim
736 <a href=
"https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=
741878">some
737 value is out of range
</a
>. No idea what is going on there. I wish I
738 knew enough about the DVD format to fix these, to ensure my movie
739 collection will stay with me in the future.
</p
>
741 <p
>So, if you need to keep your DVDs safe, back them up using
742 python-dvdvideo. :)
</p
>
747 <title>Free Timetabling Software - nice free software
</title>
748 <link>http://people.skolelinux.org/pere/blog/Free_Timetabling_Software___nice_free_software.html
</link>
749 <guid isPermaLink=
"true">http://people.skolelinux.org/pere/blog/Free_Timetabling_Software___nice_free_software.html
</guid>
750 <pubDate>Sat,
7 Jul
2012 09:
50:
00 +
0200</pubDate>
751 <description><p
>Included in
<a href=
"http://www.skolelinux.org/
">Debian Edu /
752 Skolelinux
</a
> is a large collection of end user and school specific
753 software. It is one of the packages not installed by default but
754 provided in the Debian archive for schools to install if they want to,
755 is a system to automatically plan the school time table using
756 information about available teachers, classes and rooms, combined with
757 the list of required courses and how many hours each topic should
758 receive. The software is
760 <a href=
"http://lalescu.ro/liviu/fet/
">named FET
</a
>, and it provide a
761 graphical user interface to input the required information, save the
762 result in a fairly simple XML format, and generate time tables for
763 both teachers and students. It is available both for
764 <a href=
"http://lalescu.ro/liviu/fet/download.html
">Linux, MacOSX and
765 Windows
</a
>.
</p
>
767 <p
>This is
<a href=
"http://lalescu.ro/liviu/fet/features.html
">the
768 feature list
</a
>, liftet from the project web site:
</p
>
772 <li
>FET is free software, licensed under the GNU GPL v2 or later.
773 You can freely use, copy, modify and redistribute it
</li
>
775 <li
>Localized to en_US (US English, default), ar (Arabic), ca
776 (Catalan), da (Danish), de (German), el (Greek), es (Spanish), fa
777 (Persian), fr (French), gl (Galician), he (Hebrew), hu
778 (Hungarian), id (Indonesian), it (Italian), lt (Lithuanian), mk
779 (Macedonian), ms (Malay), nl (Dutch), pl (Polish), pt_BR
780 (Brazilian Portuguese), ro (Romanian), ru (Russian), si (Sinhala),
781 sk (Slovak), sr (Serbian), tr (Turkish), uk (Ukrainian), uz
782 (Uzbek) and vi (Vietnamese) (incompletely for some languages)
785 <li
>Fully automatic generation algorithm, allowing also
786 semi-automatic or manual allocation
</li
>
788 <li
>Platform independent implementation, allowing running on
789 GNU/Linux, Windows, Mac and any system that Qt supports
</li
>
791 <li
>Flexible modular XML format for the input file, allowing editing
792 with an XML editor or by hand (besides FET interface)
</li
>
794 <li
>Import/export from CSV format
</li
>
796 <li
>The resulted timetables are exported into HTML, XML and CSV
799 <li
>Flexible students structure, organized into sets: years, groups
800 and subgroups. FET allows overlapping years and groups and
801 non-overlapping subgroups. You can even define individual students
802 (as separate sets)
</li
>
804 <li
>Each constraint has a weight percentage, from
0.0% to
100.0%
805 (but some special constraints are allowed to have only
100% weight
806 percentage)
</li
>
808 <li
>Limits for the algorithm (all these limits can be increased on
809 demand, as a custom version, because this would require a bit more
812 <li
>Maximum total number of hours (periods) per day:
60</li
>
813 <li
>Maximum number of working days per week:
35</li
>
814 <li
>Maximum total number of teachers:
6000</li
>
815 <li
>Maximum total number of sets of students:
30000</li
>
816 <li
>Maximum total number of subjects:
6000</li
>
817 <li
>Virtually unlimited number of activity tags
</li
>
818 <li
>Maximum number of activities:
30000</li
>
819 <li
>Maximum number of rooms:
6000</li
>
820 <li
>Maximum number of buildings:
6000</li
>
821 <li
>Possibility of adding multiple teachers and
822 students sets for each activity. (it is possible
823 also to have no teachers or no students sets for an
825 <li
>Virtually unlimited number of time constraints
</li
>
826 <li
>Virtually unlimited number of space constraints
</li
>
827 </ul
></li
>
829 <li
>A large and flexible palette of time constraints:
831 <li
>Break periods
</li
>
832 <li
>For teacher(s):
834 <li
>Not available periods
</li
>
835 <li
>Max/min days per week
</li
>
836 <li
>Max gaps per day/week
</li
>
837 <li
>Max hours daily/continuously
</li
>
838 <li
>Min hours daily
</li
>
839 <li
>Max hours daily/continuously with an activity tag
</li
>
841 <li
>Respect working in an hourly interval a max number of
842 days per week
</li
>
843 </ul
></li
>
844 <li
>For students (sets):
846 <li
>Not available periods
</li
>
847 <li
>Begins early (specify max allowed beginnings at second hour)
</li
>
848 <li
>Max gaps per day/week
</li
>
849 <li
>Max hours daily/continuously
</li
>
850 <li
>Min hours daily
</li
>
851 <li
>Max hours daily/continuously with an activity tag
</li
>
853 <li
>Respect working in an hourly interval a max number of
854 days per week
</li
>
855 </ul
></li
>
856 <li
>For an activity or a set of activities/subactivities:
858 <li
>A single preferred starting time
</li
>
859 <li
>A set of preferred starting times
</li
>
860 <li
>A set of preferred time slots
</li
>
861 <li
>Min/max days between them
</li
>
862 <li
>End(s) students day
</li
>
863 <li
>Same starting time/day/hour
</li
>
864 <li
>Occupy max time slots from selection (a complex and
865 flexible constraint, useful in many situations)
</li
>
866 <li
>Consecutive, ordered, grouped (for
2 or
3 (sub)activities)
</li
>
867 <li
>Not overlapping
</li
>
868 <li
>Max simultaneous in selected time slots
</li
>
869 <li
>Min gaps between a set of (sub)activities
</li
>
870 </ul
></li
>
871 </ul
></li
>
873 <li
>A large and flexible palette of space constraints:
875 <li
>Room not available periods
</li
>
876 <li
>For teacher(s):
878 <li
>Home room(s)
</li
>
879 <li
>Max building changes per day/week
</li
>
880 <li
>Min gaps between building changes
</li
>
884 <li
>For students (sets):
886 <li
>Home room(s)
</li
>
887 <li
>Max building changes per day/week
</li
>
888 <li
>Min gaps between building changes
</li
>
891 <li
>Preferred room(s):
893 <li
>For a subject
</li
>
894 <li
>For an activity tag
</li
>
895 <li
>For a subject and an activity tag
</li
>
896 <li
>Individually for a (sub)activity
</li
>
900 <li
>For a set of activities:
902 <li
>Occupy a maximum number of different rooms
</li
>
907 </ul
></p
>
909 <p
>I have not used it myself, as I am not involved in time table
910 planning at a school, but it seem to work fine when I test it. If you
911 need to set up your schools time table, and is tired of doing it
912 manually, check it out.
914 A quick summary on how to use it can be found in
915 <a href=
"http://marvelsoft.co.in/wp/
2012/
03/generate-timetable-for-state-cbse-icse-igcse-schools-free/
">a
916 blog post from MarvelSoft
</a
>. If you find FET useful, please provide
917 a recipe for the Debian Edu project in the
918 <a href=
"http://wiki.debian.org/DebianEdu#Howtos
">Debian Edu HowTo
919 section
</a
>.
</p
>