]> pere.pagekite.me Git - homepage.git/blob - blog/tags/nice free software/nice free software.rss
1fbf5efc1be9173dddca5b2aa37c741bbe98050e
[homepage.git] / blog / tags / nice free software / nice free software.rss
1 <?xml version="1.0" encoding="utf-8"?>
2 <rss version='2.0' xmlns:lj='http://www.livejournal.org/rss/lj/1.0/'>
3 <channel>
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>
7
8
9 <item>
10 <title>OpenALPR, find car license plates in video streams - nice free software</title>
11 <link>http://people.skolelinux.org/pere/blog/OpenALPR__find_car_license_plates_in_video_streams___nice_free_software.html</link>
12 <guid isPermaLink="true">http://people.skolelinux.org/pere/blog/OpenALPR__find_car_license_plates_in_video_streams___nice_free_software.html</guid>
13 <pubDate>Wed, 23 Dec 2015 01:00:00 +0100</pubDate>
14 <description>&lt;p&gt;When I was a kid, we used to collect &quot;car numbers&quot;, as we used to
15 call the car license plate numbers in those days. I would write the
16 numbers down in my little book and compare notes with the other kids
17 to see how many region codes we had seen and if we had seen some
18 exotic or special region codes and numbers. It was a fun game to pass
19 time, as we kids have plenty of it.&lt;/p&gt;
20
21 &lt;p&gt;A few days I came across
22 &lt;a href=&quot;https://github.com/openalpr/openalpr&quot;&gt;the OpenALPR
23 project&lt;/a&gt;, a free software project to automatically discover and
24 report license plates in images and video streams, and provide the
25 &quot;car numbers&quot; in a machine readable format. I&#39;ve been looking for
26 such system for a while now, because I believe it is a bad idea that the
27 &lt;a href=&quot;https://en.wikipedia.org/wiki/Automatic_number_plate_recognition&quot;&gt;automatic
28 number plate recognition&lt;/a&gt; tool only is available in the hands of
29 the powerful, and want it to be available also for the powerless to
30 even the score when it comes to surveillance and sousveillance. I
31 discovered the developer
32 &lt;a href=&quot;https://bugs.debian.org/747509&quot;&gt;wanted to get the tool into
33 Debian&lt;/a&gt;, and as I too wanted it to be in Debian, I volunteered to
34 help him get it into shape to get the package uploaded into the Debian
35 archive.&lt;/p&gt;
36
37 &lt;p&gt;Today we finally managed to get the package into shape and uploaded
38 it into Debian, where it currently
39 &lt;a href=&quot;https://ftp-master.debian.org//new/openalpr_2.2.1-1.html&quot;&gt;waits
40 in the NEW queue&lt;/a&gt; for review by the Debian ftpmasters.&lt;/p&gt;
41
42 &lt;p&gt;I guess you are wondering why on earth such tool would be useful
43 for the common folks, ie those not running a large government
44 surveillance system? Well, I plan to put it in a computer on my bike
45 and in my car, tracking the cars nearby and allowing me to be notified
46 when number plates on my watch list are discovered. Another use case
47 was suggested by a friend of mine, who wanted to set it up at his home
48 to open the car port automatically when it discovered the plate on his
49 car. When I mentioned it perhaps was a bit foolhardy to allow anyone
50 capable of placing his license plate number of a piece of cardboard to
51 open his car port, men replied that it was always unlocked anyway. I
52 guess for such use case it make sense. I am sure there are other use
53 cases too, for those with imagination and a vision.&lt;/p&gt;
54
55 &lt;p&gt;If you want to build your own version of the Debian package, check
56 out the upstream git source and symlink ./distros/debian to ./debian/
57 before running &quot;debuild&quot; to build the source. Or wait a bit until the
58 package show up in unstable.&lt;/p&gt;
59 </description>
60 </item>
61
62 <item>
63 <title>listadmin, the quick way to moderate mailman lists - nice free software</title>
64 <link>http://people.skolelinux.org/pere/blog/listadmin__the_quick_way_to_moderate_mailman_lists___nice_free_software.html</link>
65 <guid isPermaLink="true">http://people.skolelinux.org/pere/blog/listadmin__the_quick_way_to_moderate_mailman_lists___nice_free_software.html</guid>
66 <pubDate>Wed, 22 Oct 2014 20:00:00 +0200</pubDate>
67 <description>&lt;p&gt;If you ever had to moderate a mailman list, like the ones on
68 alioth.debian.org, you know the web interface is fairly slow to
69 operate. First you visit one web page, enter the moderation password
70 and get a new page shown with a list of all the messages to moderate
71 and various options for each email address. This take a while for
72 every list you moderate, and you need to do it regularly to do a good
73 job as a list moderator. But there is a quick alternative,
74 &lt;a href=&quot;http://heim.ifi.uio.no/kjetilho/hacks/#listadmin&quot;&gt;the
75 listadmin program&lt;/a&gt;. It allow you to check lists for new messages
76 to moderate in a fraction of a second. Here is a test run on two
77 lists I recently took over:&lt;/p&gt;
78
79 &lt;p&gt;&lt;blockquote&gt;&lt;pre&gt;
80 % time listadmin xiph
81 fetching data for pkg-xiph-commits@lists.alioth.debian.org ... nothing in queue
82 fetching data for pkg-xiph-maint@lists.alioth.debian.org ... nothing in queue
83
84 real 0m1.709s
85 user 0m0.232s
86 sys 0m0.012s
87 %
88 &lt;/pre&gt;&lt;/blockquote&gt;&lt;/p&gt;
89
90 &lt;p&gt;In 1.7 seconds I had checked two mailing lists and confirmed that
91 there are no message in the moderation queue. Every morning I
92 currently moderate 68 mailman lists, and it normally take around two
93 minutes. When I took over the two pkg-xiph lists above a few days
94 ago, there were 400 emails waiting in the moderator queue. It took me
95 less than 15 minutes to process them all using the listadmin
96 program.&lt;/p&gt;
97
98 &lt;p&gt;If you install
99 &lt;a href=&quot;https://tracker.debian.org/pkg/listadmin&quot;&gt;the listadmin
100 package&lt;/a&gt; from Debian and create a file &lt;tt&gt;~/.listadmin.ini&lt;/tt&gt;
101 with content like this, the moderation task is a breeze:&lt;/p&gt;
102
103 &lt;p&gt;&lt;blockquote&gt;&lt;pre&gt;
104 username username@example.org
105 spamlevel 23
106 default discard
107 discard_if_reason &quot;Posting restricted to members only. Remove us from your mail list.&quot;
108
109 password secret
110 adminurl https://{domain}/mailman/admindb/{list}
111 mailman-list@lists.example.com
112
113 password hidden
114 other-list@otherserver.example.org
115 &lt;/pre&gt;&lt;/blockquote&gt;&lt;/p&gt;
116
117 &lt;p&gt;There are other options to set as well. Check the manual page to
118 learn the details.&lt;/p&gt;
119
120 &lt;p&gt;If you are forced to moderate lists on a mailman installation where
121 the SSL certificate is self signed or not properly signed by a
122 generally accepted signing authority, you can set a environment
123 variable when calling listadmin to disable SSL verification:&lt;/p&gt;
124
125 &lt;p&gt;&lt;blockquote&gt;&lt;pre&gt;
126 PERL_LWP_SSL_VERIFY_HOSTNAME=0 listadmin
127 &lt;/pre&gt;&lt;/blockquote&gt;&lt;/p&gt;
128
129 &lt;p&gt;If you want to moderate a subset of the lists you take care of, you
130 can provide an argument to the listadmin script like I do in the
131 initial screen dump (the xiph argument). Using an argument, only
132 lists matching the argument string will be processed. This make it
133 quick to accept messages if you notice the moderation request in your
134 email.&lt;/p&gt;
135
136 &lt;p&gt;Without the listadmin program, I would never be the moderator of 68
137 mailing lists, as I simply do not have time to spend on that if the
138 process was any slower. The listadmin program have saved me hours of
139 time I could spend elsewhere over the years. It truly is nice free
140 software.&lt;/p&gt;
141
142 &lt;p&gt;As usual, if you use Bitcoin and want to show your support of my
143 activities, please send Bitcoin donations to my address
144 &lt;b&gt;&lt;a href=&quot;bitcoin:15oWEoG9dUPovwmUL9KWAnYRtNJEkP1u1b&amp;label=PetterReinholdtsenBlog&quot;&gt;15oWEoG9dUPovwmUL9KWAnYRtNJEkP1u1b&lt;/a&gt;&lt;/b&gt;.&lt;/p&gt;
145
146 &lt;p&gt;Update 2014-10-27: Added missing &#39;username&#39; statement in
147 configuration example. Also, I&#39;ve been told that the
148 PERL_LWP_SSL_VERIFY_HOSTNAME=0 setting do not work for everyone. Not
149 sure why.&lt;/p&gt;
150 </description>
151 </item>
152
153 <item>
154 <title>S3QL, a locally mounted cloud file system - nice free software</title>
155 <link>http://people.skolelinux.org/pere/blog/S3QL__a_locally_mounted_cloud_file_system___nice_free_software.html</link>
156 <guid isPermaLink="true">http://people.skolelinux.org/pere/blog/S3QL__a_locally_mounted_cloud_file_system___nice_free_software.html</guid>
157 <pubDate>Wed, 9 Apr 2014 11:30:00 +0200</pubDate>
158 <description>&lt;p&gt;For a while now, I have been looking for a sensible offsite backup
159 solution for use at home. My requirements are simple, it must be
160 cheap and locally encrypted (in other words, I keep the encryption
161 keys, the storage provider do not have access to my private files).
162 One idea me and my friends had many years ago, before the cloud
163 storage providers showed up, was to use Google mail as storage,
164 writing a Linux block device storing blocks as emails in the mail
165 service provided by Google, and thus get heaps of free space. On top
166 of this one can add encryption, RAID and volume management to have
167 lots of (fairly slow, I admit that) cheap and encrypted storage. But
168 I never found time to implement such system. But the last few weeks I
169 have looked at a system called
170 &lt;a href=&quot;https://bitbucket.org/nikratio/s3ql/&quot;&gt;S3QL&lt;/a&gt;, a locally
171 mounted network backed file system with the features I need.&lt;/p&gt;
172
173 &lt;p&gt;S3QL is a fuse file system with a local cache and cloud storage,
174 handling several different storage providers, any with Amazon S3,
175 Google Drive or OpenStack API. There are heaps of such storage
176 providers. S3QL can also use a local directory as storage, which
177 combined with sshfs allow for file storage on any ssh server. S3QL
178 include support for encryption, compression, de-duplication, snapshots
179 and immutable file systems, allowing me to mount the remote storage as
180 a local mount point, look at and use the files as if they were local,
181 while the content is stored in the cloud as well. This allow me to
182 have a backup that should survive fire. The file system can not be
183 shared between several machines at the same time, as only one can
184 mount it at the time, but any machine with the encryption key and
185 access to the storage service can mount it if it is unmounted.&lt;/p&gt;
186
187 &lt;p&gt;It is simple to use. I&#39;m using it on Debian Wheezy, where the
188 package is included already. So to get started, run &lt;tt&gt;apt-get
189 install s3ql&lt;/tt&gt;. Next, pick a storage provider. I ended up picking
190 Greenqloud, after reading their nice recipe on
191 &lt;a href=&quot;https://greenqloud.zendesk.com/entries/44611757-How-To-Use-S3QL-to-mount-a-StorageQloud-bucket-on-Debian-Wheezy&quot;&gt;how
192 to use S3QL with their Amazon S3 service&lt;/a&gt;, because I trust the laws
193 in Iceland more than those in USA when it come to keeping my personal
194 data safe and private, and thus would rather spend money on a company
195 in Iceland. Another nice recipe is available from the article
196 &lt;a href=&quot;http://www.admin-magazine.com/HPC/Articles/HPC-Cloud-Storage&quot;&gt;S3QL
197 Filesystem for HPC Storage&lt;/a&gt; by Jeff Layton in the HPC section of
198 Admin magazine. When the provider is picked, figure out how to get
199 the API key needed to connect to the storage API. With Greencloud,
200 the key did not show up until I had added payment details to my
201 account.&lt;/p&gt;
202
203 &lt;p&gt;Armed with the API access details, it is time to create the file
204 system. First, create a new bucket in the cloud. This bucket is the
205 file system storage area. I picked a bucket name reflecting the
206 machine that was going to store data there, but any name will do.
207 I&#39;ll refer to it as &lt;tt&gt;bucket-name&lt;/tt&gt; below. In addition, one need
208 the API login and password, and a locally created password. Store it
209 all in ~root/.s3ql/authinfo2 like this:
210
211 &lt;p&gt;&lt;blockquote&gt;&lt;pre&gt;
212 [s3c]
213 storage-url: s3c://s.greenqloud.com:443/bucket-name
214 backend-login: API-login
215 backend-password: API-password
216 fs-passphrase: local-password
217 &lt;/pre&gt;&lt;/blockquote&gt;&lt;/p&gt;
218
219 &lt;p&gt;I create my local passphrase using &lt;tt&gt;pwget 50&lt;/tt&gt; or similar,
220 but any sensible way to create a fairly random password should do it.
221 Armed with these details, it is now time to run mkfs, entering the API
222 details and password to create it:&lt;/p&gt;
223
224 &lt;p&gt;&lt;blockquote&gt;&lt;pre&gt;
225 # mkdir -m 700 /var/lib/s3ql-cache
226 # mkfs.s3ql --cachedir /var/lib/s3ql-cache --authfile /root/.s3ql/authinfo2 \
227 --ssl s3c://s.greenqloud.com:443/bucket-name
228 Enter backend login:
229 Enter backend password:
230 Before using S3QL, make sure to read the user&#39;s guide, especially
231 the &#39;Important Rules to Avoid Loosing Data&#39; section.
232 Enter encryption password:
233 Confirm encryption password:
234 Generating random encryption key...
235 Creating metadata tables...
236 Dumping metadata...
237 ..objects..
238 ..blocks..
239 ..inodes..
240 ..inode_blocks..
241 ..symlink_targets..
242 ..names..
243 ..contents..
244 ..ext_attributes..
245 Compressing and uploading metadata...
246 Wrote 0.00 MB of compressed metadata.
247 # &lt;/pre&gt;&lt;/blockquote&gt;&lt;/p&gt;
248
249 &lt;p&gt;The next step is mounting the file system to make the storage available.
250
251 &lt;p&gt;&lt;blockquote&gt;&lt;pre&gt;
252 # mount.s3ql --cachedir /var/lib/s3ql-cache --authfile /root/.s3ql/authinfo2 \
253 --ssl --allow-root s3c://s.greenqloud.com:443/bucket-name /s3ql
254 Using 4 upload threads.
255 Downloading and decompressing metadata...
256 Reading metadata...
257 ..objects..
258 ..blocks..
259 ..inodes..
260 ..inode_blocks..
261 ..symlink_targets..
262 ..names..
263 ..contents..
264 ..ext_attributes..
265 Mounting filesystem...
266 # df -h /s3ql
267 Filesystem Size Used Avail Use% Mounted on
268 s3c://s.greenqloud.com:443/bucket-name 1.0T 0 1.0T 0% /s3ql
269 #
270 &lt;/pre&gt;&lt;/blockquote&gt;&lt;/p&gt;
271
272 &lt;p&gt;The file system is now ready for use. I use rsync to store my
273 backups in it, and as the metadata used by rsync is downloaded at
274 mount time, no network traffic (and storage cost) is triggered by
275 running rsync. To unmount, one should not use the normal umount
276 command, as this will not flush the cache to the cloud storage, but
277 instead running the umount.s3ql command like this:
278
279 &lt;p&gt;&lt;blockquote&gt;&lt;pre&gt;
280 # umount.s3ql /s3ql
281 #
282 &lt;/pre&gt;&lt;/blockquote&gt;&lt;/p&gt;
283
284 &lt;p&gt;There is a fsck command available to check the file system and
285 correct any problems detected. This can be used if the local server
286 crashes while the file system is mounted, to reset the &quot;already
287 mounted&quot; flag. This is what it look like when processing a working
288 file system:&lt;/p&gt;
289
290 &lt;p&gt;&lt;blockquote&gt;&lt;pre&gt;
291 # fsck.s3ql --force --ssl s3c://s.greenqloud.com:443/bucket-name
292 Using cached metadata.
293 File system seems clean, checking anyway.
294 Checking DB integrity...
295 Creating temporary extra indices...
296 Checking lost+found...
297 Checking cached objects...
298 Checking names (refcounts)...
299 Checking contents (names)...
300 Checking contents (inodes)...
301 Checking contents (parent inodes)...
302 Checking objects (reference counts)...
303 Checking objects (backend)...
304 ..processed 5000 objects so far..
305 ..processed 10000 objects so far..
306 ..processed 15000 objects so far..
307 Checking objects (sizes)...
308 Checking blocks (referenced objects)...
309 Checking blocks (refcounts)...
310 Checking inode-block mapping (blocks)...
311 Checking inode-block mapping (inodes)...
312 Checking inodes (refcounts)...
313 Checking inodes (sizes)...
314 Checking extended attributes (names)...
315 Checking extended attributes (inodes)...
316 Checking symlinks (inodes)...
317 Checking directory reachability...
318 Checking unix conventions...
319 Checking referential integrity...
320 Dropping temporary indices...
321 Backing up old metadata...
322 Dumping metadata...
323 ..objects..
324 ..blocks..
325 ..inodes..
326 ..inode_blocks..
327 ..symlink_targets..
328 ..names..
329 ..contents..
330 ..ext_attributes..
331 Compressing and uploading metadata...
332 Wrote 0.89 MB of compressed metadata.
333 #
334 &lt;/pre&gt;&lt;/blockquote&gt;&lt;/p&gt;
335
336 &lt;p&gt;Thanks to the cache, working on files that fit in the cache is very
337 quick, about the same speed as local file access. Uploading large
338 amount of data is to me limited by the bandwidth out of and into my
339 house. Uploading 685 MiB with a 100 MiB cache gave me 305 kiB/s,
340 which is very close to my upload speed, and downloading the same
341 Debian installation ISO gave me 610 kiB/s, close to my download speed.
342 Both were measured using &lt;tt&gt;dd&lt;/tt&gt;. So for me, the bottleneck is my
343 network, not the file system code. I do not know what a good cache
344 size would be, but suspect that the cache should e larger than your
345 working set.&lt;/p&gt;
346
347 &lt;p&gt;I mentioned that only one machine can mount the file system at the
348 time. If another machine try, it is told that the file system is
349 busy:&lt;/p&gt;
350
351 &lt;p&gt;&lt;blockquote&gt;&lt;pre&gt;
352 # mount.s3ql --cachedir /var/lib/s3ql-cache --authfile /root/.s3ql/authinfo2 \
353 --ssl --allow-root s3c://s.greenqloud.com:443/bucket-name /s3ql
354 Using 8 upload threads.
355 Backend reports that fs is still mounted elsewhere, aborting.
356 #
357 &lt;/pre&gt;&lt;/blockquote&gt;&lt;/p&gt;
358
359 &lt;p&gt;The file content is uploaded when the cache is full, while the
360 metadata is uploaded once every 24 hour by default. To ensure the
361 file system content is flushed to the cloud, one can either umount the
362 file system, or ask S3QL to flush the cache and metadata using
363 s3qlctrl:
364
365 &lt;p&gt;&lt;blockquote&gt;&lt;pre&gt;
366 # s3qlctrl upload-meta /s3ql
367 # s3qlctrl flushcache /s3ql
368 #
369 &lt;/pre&gt;&lt;/blockquote&gt;&lt;/p&gt;
370
371 &lt;p&gt;If you are curious about how much space your data uses in the
372 cloud, and how much compression and deduplication cut down on the
373 storage usage, you can use s3qlstat on the mounted file system to get
374 a report:&lt;/p&gt;
375
376 &lt;p&gt;&lt;blockquote&gt;&lt;pre&gt;
377 # s3qlstat /s3ql
378 Directory entries: 9141
379 Inodes: 9143
380 Data blocks: 8851
381 Total data size: 22049.38 MB
382 After de-duplication: 21955.46 MB (99.57% of total)
383 After compression: 21877.28 MB (99.22% of total, 99.64% of de-duplicated)
384 Database size: 2.39 MB (uncompressed)
385 (some values do not take into account not-yet-uploaded dirty blocks in cache)
386 #
387 &lt;/pre&gt;&lt;/blockquote&gt;&lt;/p&gt;
388
389 &lt;p&gt;I mentioned earlier that there are several possible suppliers of
390 storage. I did not try to locate them all, but am aware of at least
391 &lt;a href=&quot;https://www.greenqloud.com/&quot;&gt;Greenqloud&lt;/a&gt;,
392 &lt;a href=&quot;http://drive.google.com/&quot;&gt;Google Drive&lt;/a&gt;,
393 &lt;a href=&quot;http://aws.amazon.com/s3/&quot;&gt;Amazon S3 web serivces&lt;/a&gt;,
394 &lt;a href=&quot;http://www.rackspace.com/&quot;&gt;Rackspace&lt;/a&gt; and
395 &lt;a href=&quot;http://crowncloud.net/&quot;&gt;Crowncloud&lt;/A&gt;. The latter even
396 accept payment in Bitcoin. Pick one that suit your need. Some of
397 them provide several GiB of free storage, but the prize models are
398 quite different and you will have to figure out what suits you
399 best.&lt;/p&gt;
400
401 &lt;p&gt;While researching this blog post, I had a look at research papers
402 and posters discussing the S3QL file system. There are several, which
403 told me that the file system is getting a critical check by the
404 science community and increased my confidence in using it. One nice
405 poster is titled
406 &quot;&lt;a href=&quot;http://www.lanl.gov/orgs/adtsc/publications/science_highlights_2013/docs/pg68_69.pdf&quot;&gt;An
407 Innovative Parallel Cloud Storage System using OpenStack’s SwiftObject
408 Store and Transformative Parallel I/O Approach&lt;/a&gt;&quot; by Hsing-Bung
409 Chen, Benjamin McClelland, David Sherrill, Alfred Torrez, Parks Fields
410 and Pamela Smith. Please have a look.&lt;/p&gt;
411
412 &lt;p&gt;Given my problems with different file systems earlier, I decided to
413 check out the mounted S3QL file system to see if it would be usable as
414 a home directory (in other word, that it provided POSIX semantics when
415 it come to locking and umask handling etc). Running
416 &lt;a href=&quot;http://people.skolelinux.org/pere/blog/Testing_if_a_file_system_can_be_used_for_home_directories___.html&quot;&gt;my
417 test code to check file system semantics&lt;/a&gt;, I was happy to discover that
418 no error was found. So the file system can be used for home
419 directories, if one chooses to do so.&lt;/p&gt;
420
421 &lt;p&gt;If you do not want a locally file system, and want something that
422 work without the Linux fuse file system, I would like to mention the
423 &lt;a href=&quot;http://www.tarsnap.com/&quot;&gt;Tarsnap service&lt;/a&gt;, which also
424 provide locally encrypted backup using a command line client. It have
425 a nicer access control system, where one can split out read and write
426 access, allowing some systems to write to the backup and others to
427 only read from it.&lt;/p&gt;
428
429 &lt;p&gt;As usual, if you use Bitcoin and want to show your support of my
430 activities, please send Bitcoin donations to my address
431 &lt;b&gt;&lt;a href=&quot;bitcoin:15oWEoG9dUPovwmUL9KWAnYRtNJEkP1u1b&amp;label=PetterReinholdtsenBlog&quot;&gt;15oWEoG9dUPovwmUL9KWAnYRtNJEkP1u1b&lt;/a&gt;&lt;/b&gt;.&lt;/p&gt;
432 </description>
433 </item>
434
435 <item>
436 <title>ReactOS Windows clone - nice free software</title>
437 <link>http://people.skolelinux.org/pere/blog/ReactOS_Windows_clone___nice_free_software.html</link>
438 <guid isPermaLink="true">http://people.skolelinux.org/pere/blog/ReactOS_Windows_clone___nice_free_software.html</guid>
439 <pubDate>Tue, 1 Apr 2014 12:10:00 +0200</pubDate>
440 <description>&lt;p&gt;Microsoft have announced that Windows XP reaches its end of life
441 2014-04-08, in 7 days. But there are heaps of machines still running
442 Windows XP, and depending on Windows XP to run their applications, and
443 upgrading will be expensive, both when it comes to money and when it
444 comes to the amount of effort needed to migrate from Windows XP to a
445 new operating system. Some obvious options (buy new a Windows
446 machine, buy a MacOSX machine, install Linux on the existing machine)
447 are already well known and covered elsewhere. Most of them involve
448 leaving the user applications installed on Windows XP behind and
449 trying out replacements or updated versions. In this blog post I want
450 to mention one strange bird that allow people to keep the hardware and
451 the existing Windows XP applications and run them on a free software
452 operating system that is Windows XP compatible.&lt;/p&gt;
453
454 &lt;p&gt;&lt;a href=&quot;http://www.reactos.org/&quot;&gt;ReactOS&lt;/a&gt; is a free software
455 operating system (GNU GPL licensed) working on providing a operating
456 system that is binary compatible with Windows, able to run windows
457 programs directly and to use Windows drivers for hardware directly.
458 The project goal is for Windows user to keep their existing machines,
459 drivers and software, and gain the advantages from user a operating
460 system without usage limitations caused by non-free licensing. It is
461 a Windows clone running directly on the hardware, so quite different
462 from the approach taken by &lt;a href=&quot;http://www.winehq.org/&quot;&gt;the Wine
463 project&lt;/a&gt;, which make it possible to run Windows binaries on
464 Linux.&lt;/p&gt;
465
466 &lt;p&gt;The ReactOS project share code with the Wine project, so most
467 shared libraries available on Windows are already implemented already.
468 There is also a software manager like the one we are used to on Linux,
469 allowing the user to install free software applications with a simple
470 click directly from the Internet. Check out the
471 &lt;a href=&quot;http://www.reactos.org/screenshots&quot;&gt;screen shots on the
472 project web site&lt;/a&gt; for an idea what it look like (it looks just like
473 Windows before metro).&lt;/p&gt;
474
475 &lt;p&gt;I do not use ReactOS myself, preferring Linux and Unix like
476 operating systems. I&#39;ve tested it, and it work fine in a virt-manager
477 virtual machine. The browser, minesweeper, notepad etc is working
478 fine as far as I can tell. Unfortunately, my main test application
479 is the software included on a CD with the Lego Mindstorms NXT, which
480 seem to install just fine from CD but fail to leave any binaries on
481 the disk after the installation. So no luck with that test software.
482 No idea why, but hope someone else figure out and fix the problem.
483 I&#39;ve tried the ReactOS Live ISO on a physical machine, and it seemed
484 to work just fine. If you like Windows and want to keep running your
485 old Windows binaries, check it out by
486 &lt;a href=&quot;http://www.reactos.org/download&quot;&gt;downloading&lt;/a&gt; the
487 installation CD, the live CD or the preinstalled virtual machine
488 image.&lt;/p&gt;
489 </description>
490 </item>
491
492 <item>
493 <title>Video DVD reader library / python-dvdvideo - nice free software</title>
494 <link>http://people.skolelinux.org/pere/blog/Video_DVD_reader_library___python_dvdvideo___nice_free_software.html</link>
495 <guid isPermaLink="true">http://people.skolelinux.org/pere/blog/Video_DVD_reader_library___python_dvdvideo___nice_free_software.html</guid>
496 <pubDate>Fri, 21 Mar 2014 15:25:00 +0100</pubDate>
497 <description>&lt;p&gt;Keeping your DVD collection safe from scratches and curious
498 children fingers while still having it available when you want to see a
499 movie is not straight forward. My preferred method at the moment is
500 to store a full copy of the ISO on a hard drive, and use VLC, Popcorn
501 Hour or other useful players to view the resulting file. This way the
502 subtitles and bonus material are still available and using the ISO is
503 just like inserting the original DVD record in the DVD player.&lt;/p&gt;
504
505 &lt;p&gt;Earlier I used dd for taking security copies, but it do not handle
506 DVDs giving read errors (which are quite a few of them). I&#39;ve also
507 tried using
508 &lt;a href=&quot;http://people.skolelinux.org/pere/blog/Ripping_problematic_DVDs_using_dvdbackup_and_genisoimage.html&quot;&gt;dvdbackup
509 and genisoimage&lt;/a&gt;, but these days I use the marvellous python library
510 and program
511 &lt;a href=&quot;http://bblank.thinkmo.de/blog/new-software-python-dvdvideo&quot;&gt;python-dvdvideo&lt;/a&gt;
512 written by Bastian Blank. It is
513 &lt;a href=&quot;http://packages.qa.debian.org/p/python-dvdvideo.html&quot;&gt;in Debian
514 already&lt;/a&gt; and the binary package name is python3-dvdvideo. Instead
515 of trying to read every block from the DVD, it parses the file
516 structure and figure out which block on the DVD is actually in used,
517 and only read those blocks from the DVD. This work surprisingly well,
518 and I have been able to almost backup my entire DVD collection using
519 this method.&lt;/p&gt;
520
521 &lt;p&gt;So far, python-dvdvideo have failed on between 10 and
522 20 DVDs, which is a small fraction of my collection. The most common
523 problem is
524 &lt;a href=&quot;https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=720831&quot;&gt;DVDs
525 using UTF-16 instead of UTF-8 characters&lt;/a&gt;, which according to
526 Bastian is against the DVD specification (and seem to cause some
527 players to fail too). A rarer problem is what seem to be inconsistent
528 DVD structures, as the python library
529 &lt;a href=&quot;https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=723079&quot;&gt;claim
530 there is a overlap between objects&lt;/a&gt;. An equally rare problem claim
531 &lt;a href=&quot;https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=741878&quot;&gt;some
532 value is out of range&lt;/a&gt;. No idea what is going on there. I wish I
533 knew enough about the DVD format to fix these, to ensure my movie
534 collection will stay with me in the future.&lt;/p&gt;
535
536 &lt;p&gt;So, if you need to keep your DVDs safe, back them up using
537 python-dvdvideo. :)&lt;/p&gt;
538 </description>
539 </item>
540
541 <item>
542 <title>Free Timetabling Software - nice free software</title>
543 <link>http://people.skolelinux.org/pere/blog/Free_Timetabling_Software___nice_free_software.html</link>
544 <guid isPermaLink="true">http://people.skolelinux.org/pere/blog/Free_Timetabling_Software___nice_free_software.html</guid>
545 <pubDate>Sat, 7 Jul 2012 09:50:00 +0200</pubDate>
546 <description>&lt;p&gt;Included in &lt;a href=&quot;http://www.skolelinux.org/&quot;&gt;Debian Edu /
547 Skolelinux&lt;/a&gt; is a large collection of end user and school specific
548 software. It is one of the packages not installed by default but
549 provided in the Debian archive for schools to install if they want to,
550 is a system to automatically plan the school time table using
551 information about available teachers, classes and rooms, combined with
552 the list of required courses and how many hours each topic should
553 receive. The software is
554
555 &lt;a href=&quot;http://lalescu.ro/liviu/fet/&quot;&gt;named FET&lt;/a&gt;, and it provide a
556 graphical user interface to input the required information, save the
557 result in a fairly simple XML format, and generate time tables for
558 both teachers and students. It is available both for
559 &lt;a href=&quot;http://lalescu.ro/liviu/fet/download.html&quot;&gt;Linux, MacOSX and
560 Windows&lt;/a&gt;.&lt;/p&gt;
561
562 &lt;p&gt;This is &lt;a href=&quot;http://lalescu.ro/liviu/fet/features.html&quot;&gt;the
563 feature list&lt;/a&gt;, liftet from the project web site:&lt;/p&gt;
564
565 &lt;p&gt;&lt;ul&gt;
566
567 &lt;li&gt;FET is free software, licensed under the GNU GPL v2 or later.
568 You can freely use, copy, modify and redistribute it &lt;/li&gt;
569
570 &lt;li&gt;Localized to en_US (US English, default), ar (Arabic), ca
571 (Catalan), da (Danish), de (German), el (Greek), es (Spanish), fa
572 (Persian), fr (French), gl (Galician), he (Hebrew), hu
573 (Hungarian), id (Indonesian), it (Italian), lt (Lithuanian), mk
574 (Macedonian), ms (Malay), nl (Dutch), pl (Polish), pt_BR
575 (Brazilian Portuguese), ro (Romanian), ru (Russian), si (Sinhala),
576 sk (Slovak), sr (Serbian), tr (Turkish), uk (Ukrainian), uz
577 (Uzbek) and vi (Vietnamese) (incompletely for some languages)
578 &lt;/li&gt;
579
580 &lt;li&gt;Fully automatic generation algorithm, allowing also
581 semi-automatic or manual allocation&lt;/li&gt;
582
583 &lt;li&gt;Platform independent implementation, allowing running on
584 GNU/Linux, Windows, Mac and any system that Qt supports &lt;/li&gt;
585
586 &lt;li&gt;Flexible modular XML format for the input file, allowing editing
587 with an XML editor or by hand (besides FET interface)&lt;/li&gt;
588
589 &lt;li&gt;Import/export from CSV format&lt;/li&gt;
590
591 &lt;li&gt;The resulted timetables are exported into HTML, XML and CSV
592 formats &lt;/li&gt;
593
594 &lt;li&gt;Flexible students structure, organized into sets: years, groups
595 and subgroups. FET allows overlapping years and groups and
596 non-overlapping subgroups. You can even define individual students
597 (as separate sets)&lt;/li&gt;
598
599 &lt;li&gt;Each constraint has a weight percentage, from 0.0% to 100.0%
600 (but some special constraints are allowed to have only 100% weight
601 percentage)&lt;/li&gt;
602
603 &lt;li&gt;Limits for the algorithm (all these limits can be increased on
604 demand, as a custom version, because this would require a bit more
605 memory):
606 &lt;ul&gt;
607 &lt;li&gt;Maximum total number of hours (periods) per day: 60&lt;/li&gt;
608 &lt;li&gt;Maximum number of working days per week: 35&lt;/li&gt;
609 &lt;li&gt;Maximum total number of teachers: 6000&lt;/li&gt;
610 &lt;li&gt;Maximum total number of sets of students: 30000&lt;/li&gt;
611 &lt;li&gt;Maximum total number of subjects: 6000&lt;/li&gt;
612 &lt;li&gt;Virtually unlimited number of activity tags&lt;/li&gt;
613 &lt;li&gt;Maximum number of activities: 30000&lt;/li&gt;
614 &lt;li&gt;Maximum number of rooms: 6000&lt;/li&gt;
615 &lt;li&gt;Maximum number of buildings: 6000&lt;/li&gt;
616 &lt;li&gt;Possibility of adding multiple teachers and
617 students sets for each activity. (it is possible
618 also to have no teachers or no students sets for an
619 activity)&lt;/li&gt;
620 &lt;li&gt;Virtually unlimited number of time constraints&lt;/li&gt;
621 &lt;li&gt;Virtually unlimited number of space constraints&lt;/li&gt;
622 &lt;/ul&gt;&lt;/li&gt;
623
624 &lt;li&gt;A large and flexible palette of time constraints:
625 &lt;ul&gt;
626 &lt;li&gt;Break periods&lt;/li&gt;
627 &lt;li&gt;For teacher(s):
628 &lt;ul&gt;
629 &lt;li&gt;Not available periods&lt;/li&gt;
630 &lt;li&gt;Max/min days per week&lt;/li&gt;
631 &lt;li&gt;Max gaps per day/week&lt;/li&gt;
632 &lt;li&gt;Max hours daily/continuously&lt;/li&gt;
633 &lt;li&gt;Min hours daily&lt;/li&gt;
634 &lt;li&gt;Max hours daily/continuously with an activity tag&lt;/li&gt;
635
636 &lt;li&gt;Respect working in an hourly interval a max number of
637 days per week&lt;/li&gt;
638 &lt;/ul&gt;&lt;/li&gt;
639 &lt;li&gt;For students (sets):
640 &lt;ul&gt;
641 &lt;li&gt;Not available periods&lt;/li&gt;
642 &lt;li&gt;Begins early (specify max allowed beginnings at second hour)&lt;/li&gt;
643 &lt;li&gt;Max gaps per day/week&lt;/li&gt;
644 &lt;li&gt;Max hours daily/continuously&lt;/li&gt;
645 &lt;li&gt;Min hours daily&lt;/li&gt;
646 &lt;li&gt;Max hours daily/continuously with an activity tag&lt;/li&gt;
647
648 &lt;li&gt;Respect working in an hourly interval a max number of
649 days per week&lt;/li&gt;
650 &lt;/ul&gt;&lt;/li&gt;
651 &lt;li&gt;For an activity or a set of activities/subactivities:
652 &lt;ul&gt;
653 &lt;li&gt;A single preferred starting time&lt;/li&gt;
654 &lt;li&gt;A set of preferred starting times&lt;/li&gt;
655 &lt;li&gt;A set of preferred time slots&lt;/li&gt;
656 &lt;li&gt;Min/max days between them&lt;/li&gt;
657 &lt;li&gt;End(s) students day&lt;/li&gt;
658 &lt;li&gt;Same starting time/day/hour&lt;/li&gt;
659 &lt;li&gt;Occupy max time slots from selection (a complex and
660 flexible constraint, useful in many situations)&lt;/li&gt;
661 &lt;li&gt;Consecutive, ordered, grouped (for 2 or 3 (sub)activities)&lt;/li&gt;
662 &lt;li&gt;Not overlapping&lt;/li&gt;
663 &lt;li&gt;Max simultaneous in selected time slots&lt;/li&gt;
664 &lt;li&gt;Min gaps between a set of (sub)activities&lt;/li&gt;
665 &lt;/ul&gt;&lt;/li&gt;
666 &lt;/ul&gt;&lt;/li&gt;
667
668 &lt;li&gt;A large and flexible palette of space constraints:
669 &lt;ul&gt;
670 &lt;li&gt;Room not available periods&lt;/li&gt;
671 &lt;li&gt;For teacher(s):
672 &lt;ul&gt;
673 &lt;li&gt;Home room(s)&lt;/li&gt;
674 &lt;li&gt;Max building changes per day/week&lt;/li&gt;
675 &lt;li&gt;Min gaps between building changes&lt;/li&gt;
676 &lt;/ul&gt;
677 &lt;/li&gt;
678
679 &lt;li&gt;For students (sets):
680 &lt;ul&gt;
681 &lt;li&gt;Home room(s)&lt;/li&gt;
682 &lt;li&gt;Max building changes per day/week&lt;/li&gt;
683 &lt;li&gt;Min gaps between building changes&lt;/li&gt;
684 &lt;/ul&gt;
685 &lt;/li&gt;
686 &lt;li&gt;Preferred room(s):
687 &lt;ul&gt;
688 &lt;li&gt;For a subject&lt;/li&gt;
689 &lt;li&gt;For an activity tag&lt;/li&gt;
690 &lt;li&gt;For a subject and an activity tag&lt;/li&gt;
691 &lt;li&gt;Individually for a (sub)activity&lt;/li&gt;
692 &lt;/ul&gt;
693 &lt;/li&gt;
694
695 &lt;li&gt;For a set of activities:
696 &lt;ul&gt;
697 &lt;li&gt;Occupy a maximum number of different rooms&lt;/li&gt;
698 &lt;/ul&gt;
699 &lt;/li&gt;
700 &lt;/ul&gt;
701 &lt;/li&gt;
702 &lt;/ul&gt;&lt;/p&gt;
703
704 &lt;p&gt;I have not used it myself, as I am not involved in time table
705 planning at a school, but it seem to work fine when I test it. If you
706 need to set up your schools time table, and is tired of doing it
707 manually, check it out.
708
709 A quick summary on how to use it can be found in
710 &lt;a href=&quot;http://marvelsoft.co.in/wp/2012/03/generate-timetable-for-state-cbse-icse-igcse-schools-free/&quot;&gt;a
711 blog post from MarvelSoft&lt;/a&gt;. If you find FET useful, please provide
712 a recipe for the Debian Edu project in the
713 &lt;a href=&quot;http://wiki.debian.org/DebianEdu#Howtos&quot;&gt;Debian Edu HowTo
714 section&lt;/a&gt;.&lt;/p&gt;
715 </description>
716 </item>
717
718 </channel>
719 </rss>