]> pere.pagekite.me Git - homepage.git/blobdiff - blog/tags/debian/debian.rss
Generated.
[homepage.git] / blog / tags / debian / debian.rss
index 93dd71c1984cd82fb05f1675679af75716b8a1f0..929f98a7f40a6ca9af965f60f8f78907aee0d3ec 100644 (file)
                 <link>http://people.skolelinux.org/pere/blog/</link>
 
        
                 <link>http://people.skolelinux.org/pere/blog/</link>
 
        
+       <item>
+               <title>Streaming the Linux desktop to Kodi using VLC and RTSP</title>
+               <link>http://people.skolelinux.org/pere/blog/Streaming_the_Linux_desktop_to_Kodi_using_VLC_and_RTSP.html</link>
+               <guid isPermaLink="true">http://people.skolelinux.org/pere/blog/Streaming_the_Linux_desktop_to_Kodi_using_VLC_and_RTSP.html</guid>
+                <pubDate>Thu, 12 Jul 2018 02:00:00 +0200</pubDate>
+               <description>&lt;p&gt;A while back, I was asked by a friend how to stream the desktop to
+my projector connected to Kodi.  I sadly had to admit that I had no
+idea, as it was a task I never had tried.  Since then, I have been
+looking for a way to do so, preferable without much extra software to
+install on either side.  Today I found a way that seem to kind of
+work.  Not great, but it is a start.&lt;/p&gt;
+
+&lt;p&gt;I had a look at several approaches, for example
+&lt;a href=&quot;https://github.com/mfoetsch/dlna_live_streaming&quot;&gt;using uPnP
+DLNA as described in 2011&lt;/a&gt;, but it required a uPnP server, fuse and
+local storage enough to store the stream locally.  This is not going
+to work well for me, lacking enough free space, and it would
+impossible for my friend to get working.&lt;/p&gt;
+
+&lt;p&gt;Next, it occurred to me that perhaps I could use VLC to create a
+video stream that Kodi could play.  Preferably using
+broadcast/multicast, to avoid having to change any setup on the Kodi
+side when starting such stream.  Unfortunately, the only recipe I
+could find using multicast used the rtp protocol, and this protocol
+seem to not be supported by Kodi.&lt;/p&gt;
+
+&lt;p&gt;On the other hand, the rtsp protocol is working!  Unfortunately I
+have to specify the IP address of the streaming machine in both the
+sending command and the file on the Kodi server.  But it is showing my
+desktop, and thus allow us to have a shared look on the big screen at
+the programs I work on.&lt;/p&gt;
+
+&lt;p&gt;I did not spend much time investigating codeces.  I combined the
+rtp and rtsp recipes from
+&lt;a href=&quot;https://wiki.videolan.org/Documentation:Streaming_HowTo/Command_Line_Examples/&quot;&gt;the
+VLC Streaming HowTo/Command Line Examples&lt;/a&gt;, and was able to get
+this working on the desktop/streaming end.&lt;/p&gt;
+
+&lt;blockquote&gt;&lt;pre&gt;
+vlc screen:// --sout \
+  &#39;#transcode{vcodec=mp4v,acodec=mpga,vb=800,ab=128}:rtp{dst=projector.local,port=1234,sdp=rtsp://192.168.11.4:8080/test.sdp}&#39;
+&lt;/pre&gt;&lt;/blockquote&gt;
+
+&lt;p&gt;I ssh-ed into my Kodi box and created a file like this with the
+same IP address:&lt;/p&gt;
+
+&lt;blockquote&gt;&lt;pre&gt;
+echo rtsp://192.168.11.4:8080/test.sdp \
+  &gt; /storage/videos/screenstream.m3u
+&lt;/pre&gt;&lt;/blockquote&gt;
+
+&lt;p&gt;Note the 192.168.11.4 IP address is my desktops IP address.  As far
+as I can tell the IP must be hardcoded for this to work.  In other
+words, if someone elses machine is going to do the steaming, you have
+to update screenstream.m4u on the Kodi machine and adjust the vlc
+repice.  To get started, locate the file in Kodi and select the m3u
+file while the VLC stream is running.  The desktop then show up in my
+big screen. :)&lt;/p&gt;
+
+&lt;p&gt;When using the same technique to stream a video file with audio,
+the audio quality is really bad.  No idea if the problem is package
+loss or bad parameters for the transcode.  I do not know VLC nor Kodi
+enough to tell.&lt;/p&gt;
+
+&lt;p&gt;As usual, if you use Bitcoin and want to show your support of my
+activities, please send Bitcoin donations to my address
+&lt;b&gt;&lt;a href=&quot;bitcoin:15oWEoG9dUPovwmUL9KWAnYRtNJEkP1u1b&quot;&gt;15oWEoG9dUPovwmUL9KWAnYRtNJEkP1u1b&lt;/a&gt;&lt;/b&gt;.&lt;/p&gt;
+</description>
+       </item>
+       
+       <item>
+               <title>What is the most supported MIME type in Debian in 2018?</title>
+               <link>http://people.skolelinux.org/pere/blog/What_is_the_most_supported_MIME_type_in_Debian_in_2018_.html</link>
+               <guid isPermaLink="true">http://people.skolelinux.org/pere/blog/What_is_the_most_supported_MIME_type_in_Debian_in_2018_.html</guid>
+                <pubDate>Mon, 9 Jul 2018 08:05:00 +0200</pubDate>
+               <description>&lt;p&gt;Five years ago,
+&lt;a href=&quot;http://people.skolelinux.org/pere/blog/What_is_the_most_supported_MIME_type_in_Debian_.html&quot;&gt;I
+measured what the most supported MIME type in Debian was&lt;/a&gt;, by
+analysing the desktop files in all packages in the archive.  Since
+then, the DEP-11 AppStream system has been put into production, making
+the task a lot easier.  This made me want to repeat the measurement,
+to see how much things changed.  Here are the new numbers, for
+unstable only this time:
+
+&lt;p&gt;&lt;strong&gt;Debian Unstable:&lt;/strong&gt;&lt;/p&gt;
+
+&lt;pre&gt;
+  count MIME type
+  ----- -----------------------
+     56 image/jpeg
+     55 image/png
+     49 image/tiff
+     48 image/gif
+     39 image/bmp
+     38 text/plain
+     37 audio/mpeg
+     34 application/ogg
+     33 audio/x-flac
+     32 audio/x-mp3
+     30 audio/x-wav
+     30 audio/x-vorbis+ogg
+     29 image/x-portable-pixmap
+     27 inode/directory
+     27 image/x-portable-bitmap
+     27 audio/x-mpeg
+     26 application/x-ogg
+     25 audio/x-mpegurl
+     25 audio/ogg
+     24 text/html
+&lt;/pre&gt;
+
+&lt;p&gt;The list was created like this using a sid chroot: &quot;cat
+/var/lib/apt/lists/*sid*_dep11_Components-amd64.yml.gz| zcat | awk &#39;/^
+- \S+\/\S+$/ {print $2 }&#39; | sort | uniq -c | sort -nr | head -20&quot;&lt;/p&gt;
+
+&lt;p&gt;It is interesting to see how image formats have passed text/plain
+as the most announced supported MIME type.  These days, thanks to the
+AppStream system, if you run into a file format you do not know, and
+want to figure out which packages support the format, you can find the
+MIME type of the file using &quot;file --mime &amp;lt;filename&amp;gt;&quot;, and then
+look up all packages announcing support for this format in their
+AppStream metadata (XML or .desktop file) using &quot;appstreamcli
+what-provides mimetype &amp;lt;mime-type&amp;gt;.  For example if you, like
+me, want to know which packages support inode/directory, you can get a
+list like this:&lt;/p&gt;
+
+&lt;p&gt;&lt;blockquote&gt;&lt;pre&gt;
+% appstreamcli what-provides mimetype inode/directory | grep Package: | sort
+Package: anjuta
+Package: audacious
+Package: baobab
+Package: cervisia
+Package: chirp
+Package: dolphin
+Package: doublecmd-common
+Package: easytag
+Package: enlightenment
+Package: ephoto
+Package: filelight
+Package: gwenview
+Package: k4dirstat
+Package: kaffeine
+Package: kdesvn
+Package: kid3
+Package: kid3-qt
+Package: nautilus
+Package: nemo
+Package: pcmanfm
+Package: pcmanfm-qt
+Package: qweborf
+Package: ranger
+Package: sirikali
+Package: spacefm
+Package: spacefm
+Package: vifm
+%
+&lt;/pre&gt;&lt;/blockquote&gt;&lt;/p&gt;
+
+&lt;p&gt;Using the same method, I can quickly discover that the Sketchup file
+format is not yet supported by any package in Debian:&lt;/p&gt;
+
+&lt;p&gt;&lt;blockquote&gt;&lt;pre&gt;
+% appstreamcli what-provides mimetype  application/vnd.sketchup.skp
+Could not find component providing &#39;mimetype::application/vnd.sketchup.skp&#39;.
+%
+&lt;/pre&gt;&lt;/blockquote&gt;&lt;/p&gt;
+
+&lt;p&gt;Yesterday I used it to figure out which packages support the STL 3D
+format:&lt;/p&gt;
+
+&lt;p&gt;&lt;blockquote&gt;&lt;pre&gt;
+% appstreamcli what-provides mimetype  application/sla|grep Package
+Package: cura
+Package: meshlab
+Package: printrun
+%
+&lt;/pre&gt;&lt;/blockquote&gt;&lt;/p&gt;
+
+&lt;p&gt;PS: A new version of Cura was uploaded to Debian yesterday.&lt;/p&gt;
+
+&lt;p&gt;As usual, if you use Bitcoin and want to show your support of my
+activities, please send Bitcoin donations to my address
+&lt;b&gt;&lt;a href=&quot;bitcoin:15oWEoG9dUPovwmUL9KWAnYRtNJEkP1u1b&quot;&gt;15oWEoG9dUPovwmUL9KWAnYRtNJEkP1u1b&lt;/a&gt;&lt;/b&gt;.&lt;/p&gt;
+</description>
+       </item>
+       
+       <item>
+               <title>Debian APT upgrade without enough free space on the disk...</title>
+               <link>http://people.skolelinux.org/pere/blog/Debian_APT_upgrade_without_enough_free_space_on_the_disk___.html</link>
+               <guid isPermaLink="true">http://people.skolelinux.org/pere/blog/Debian_APT_upgrade_without_enough_free_space_on_the_disk___.html</guid>
+                <pubDate>Sun, 8 Jul 2018 12:10:00 +0200</pubDate>
+               <description>&lt;p&gt;Quite regularly, I let my Debian Sid/Unstable chroot stay untouch
+for a while, and when I need to update it there is not enough free
+space on the disk for apt to do a normal &#39;apt upgrade&#39;.  I normally
+would resolve the issue by doing &#39;apt install &amp;lt;somepackages&amp;gt;&#39; to
+upgrade only some of the packages in one batch, until the amount of
+packages to download fall below the amount of free space available.
+Today, I had about 500 packages to upgrade, and after a while I got
+tired of trying to install chunks of packages manually.  I concluded
+that I did not have the spare hours required to complete the task, and
+decided to see if I could automate it.  I came up with this small
+script which I call &#39;apt-in-chunks&#39;:&lt;/p&gt;
+
+&lt;p&gt;&lt;blockquote&gt;&lt;pre&gt;
+#!/bin/sh
+#
+# Upgrade packages when the disk is too full to upgrade every
+# upgradable package in one lump.  Fetching packages to upgrade using
+# apt, and then installing using dpkg, to avoid changing the package
+# flag for manual/automatic.
+
+set -e
+
+ignore() {
+    if [ &quot;$1&quot; ]; then
+       grep -v &quot;$1&quot;
+    else
+       cat
+    fi
+}
+
+for p in $(apt list --upgradable | ignore &quot;$@&quot; |cut -d/ -f1 | grep -v &#39;^Listing...&#39;); do
+    echo &quot;Upgrading $p&quot;
+    apt clean
+    apt install --download-only -y $p
+    for f in /var/cache/apt/archives/*.deb; do
+       if [ -e &quot;$f&quot; ]; then
+           dpkg -i /var/cache/apt/archives/*.deb
+           break
+       fi
+    done
+done
+&lt;/pre&gt;&lt;/blockquote&gt;&lt;/p&gt;
+
+&lt;p&gt;The script will extract the list of packages to upgrade, try to
+download the packages needed to upgrade one package, install the
+downloaded packages using dpkg.  The idea is to upgrade packages
+without changing the APT mark for the package (ie the one recording of
+the package was manually requested or pulled in as a dependency).  To
+use it, simply run it as root from the command line.  If it fail, try
+&#39;apt install -f&#39; to clean up the mess and run the script again.  This
+might happen if the new packages conflict with one of the old
+packages.  dpkg is unable to remove, while apt can do this.&lt;/p&gt;
+
+&lt;p&gt;It take one option, a package to ignore in the list of packages to
+upgrade.  The option to ignore a package is there to be able to skip
+the packages that are simply too large to unpack.  Today this was
+&#39;ghc&#39;, but I have run into other large packages causing similar
+problems earlier (like TeX).&lt;/p&gt;
+
+&lt;p&gt;Update 2018-07-08: Thanks to Paul Wise, I am aware of two
+alternative ways to handle this.  The &quot;unattended-upgrades
+--minimal-upgrade-steps&quot; option will try to calculate upgrade sets for
+each package to upgrade, and then upgrade them in order, smallest set
+first.  It might be a better option than my above mentioned script.
+Also, &quot;aptutude upgrade&quot; can upgrade single packages, thus avoiding
+the need for using &quot;dpkg -i&quot; in the script above.&lt;/p&gt;
+
+&lt;p&gt;As usual, if you use Bitcoin and want to show your support of my
+activities, please send Bitcoin donations to my address
+&lt;b&gt;&lt;a href=&quot;bitcoin:15oWEoG9dUPovwmUL9KWAnYRtNJEkP1u1b&quot;&gt;15oWEoG9dUPovwmUL9KWAnYRtNJEkP1u1b&lt;/a&gt;&lt;/b&gt;.&lt;/p&gt;
+</description>
+       </item>
+       
+       <item>
+               <title>Version 3.1 of Cura, the 3D print slicer, is now in Debian</title>
+               <link>http://people.skolelinux.org/pere/blog/Version_3_1_of_Cura__the_3D_print_slicer__is_now_in_Debian.html</link>
+               <guid isPermaLink="true">http://people.skolelinux.org/pere/blog/Version_3_1_of_Cura__the_3D_print_slicer__is_now_in_Debian.html</guid>
+                <pubDate>Tue, 13 Feb 2018 06:20:00 +0100</pubDate>
+               <description>&lt;p&gt;A new version of the
+&lt;a href=&quot;https://tracker.debian.org/pkg/cura&quot;&gt;3D printer slicer
+software Cura&lt;/a&gt;, version 3.1.0, is now available in Debian Testing
+(aka Buster) and Debian Unstable (aka Sid).  I hope you find it
+useful.  It was uploaded the last few days, and the last update will
+enter testing tomorrow.  See the
+&lt;a href=&quot;https://ultimaker.com/en/products/cura-software/release-notes&quot;&gt;release
+notes&lt;/a&gt; for the list of bug fixes and new features.  Version 3.2
+was announced 6 days ago.  We will try to get it into Debian as
+well.&lt;/p&gt;
+
+&lt;p&gt;More information related to 3D printing is available on the
+&lt;a href=&quot;https://wiki.debian.org/3DPrinting&quot;&gt;3D printing&lt;/a&gt; and
+&lt;a href=&quot;https://wiki.debian.org/3D-printer&quot;&gt;3D printer&lt;/a&gt; wiki pages
+in Debian.&lt;/p&gt;
+
+&lt;p&gt;As usual, if you use Bitcoin and want to show your support of my
+activities, please send Bitcoin donations to my address
+&lt;b&gt;&lt;a href=&quot;bitcoin:15oWEoG9dUPovwmUL9KWAnYRtNJEkP1u1b&quot;&gt;15oWEoG9dUPovwmUL9KWAnYRtNJEkP1u1b&lt;/a&gt;&lt;/b&gt;.&lt;/p&gt;
+</description>
+       </item>
+       
+       <item>
+               <title>Cura, the nice 3D print slicer, is now in Debian Unstable</title>
+               <link>http://people.skolelinux.org/pere/blog/Cura__the_nice_3D_print_slicer__is_now_in_Debian_Unstable.html</link>
+               <guid isPermaLink="true">http://people.skolelinux.org/pere/blog/Cura__the_nice_3D_print_slicer__is_now_in_Debian_Unstable.html</guid>
+                <pubDate>Sun, 17 Dec 2017 07:00:00 +0100</pubDate>
+               <description>&lt;p&gt;After several months of working and waiting, I am happy to report
+that the nice and user friendly 3D printer slicer software Cura just
+entered Debian Unstable.  It consist of five packages,
+&lt;a href=&quot;https://tracker.debian.org/pkg/cura&quot;&gt;cura&lt;/a&gt;,
+&lt;a href=&quot;https://tracker.debian.org/pkg/cura-engine&quot;&gt;cura-engine&lt;/a&gt;,
+&lt;a href=&quot;https://tracker.debian.org/pkg/libarcus&quot;&gt;libarcus&lt;/a&gt;,
+&lt;a href=&quot;https://tracker.debian.org/pkg/fdm-materials&quot;&gt;fdm-materials&lt;/a&gt;,
+&lt;a href=&quot;https://tracker.debian.org/pkg/libsavitar&quot;&gt;libsavitar&lt;/a&gt; and
+&lt;a href=&quot;https://tracker.debian.org/pkg/uranium&quot;&gt;uranium&lt;/a&gt;.  The last
+two, uranium and cura, entered Unstable yesterday.  This should make
+it easier for Debian users to print on at least the Ultimaker class of
+3D printers.  My nearest 3D printer is an Ultimaker 2+, so it will
+make life easier for at least me. :)&lt;/p&gt;
+
+&lt;p&gt;The work to make this happen was done by Gregor Riepl, and I was
+happy to assist him in sponsoring the packages.  With the introduction
+of Cura, Debian is up to three 3D printer slicers at your service,
+Cura, Slic3r and Slic3r Prusa.  If you own or have access to a 3D
+printer, give it a go. :)&lt;/p&gt;
+
+&lt;p&gt;The 3D printer software is maintained by the 3D printer Debian
+team, flocking together on the
+&lt;a href=&quot;http://lists.alioth.debian.org/cgi-bin/mailman/listinfo/3dprinter-general&quot;&gt;3dprinter-general&lt;/a&gt;
+mailing list and the
+&lt;a href=&quot;irc://irc.debian.org/#debian-3dprinting&quot;&gt;#debian-3dprinting&lt;/a&gt;
+IRC channel.&lt;/p&gt;
+
+&lt;p&gt;The next step for Cura in Debian is to update the cura package to
+version 3.0.3 and then update the entire set of packages to version
+3.1.0 which showed up the last few days.&lt;/p&gt;
+</description>
+       </item>
+       
+       <item>
+               <title>Generating 3D prints in Debian using Cura and Slic3r(-prusa)</title>
+               <link>http://people.skolelinux.org/pere/blog/Generating_3D_prints_in_Debian_using_Cura_and_Slic3r__prusa_.html</link>
+               <guid isPermaLink="true">http://people.skolelinux.org/pere/blog/Generating_3D_prints_in_Debian_using_Cura_and_Slic3r__prusa_.html</guid>
+                <pubDate>Mon, 9 Oct 2017 10:50:00 +0200</pubDate>
+               <description>&lt;p&gt;At my nearby maker space,
+&lt;a href=&quot;http://sonen.ifi.uio.no/&quot;&gt;Sonen&lt;/a&gt;, I heard the story that it
+was easier to generate gcode files for theyr 3D printers (Ultimake 2+)
+on Windows and MacOS X than Linux, because the software involved had
+to be manually compiled and set up on Linux while premade packages
+worked out of the box on Windows and MacOS X.  I found this annoying,
+as the software involved,
+&lt;a href=&quot;https://github.com/Ultimaker/Cura&quot;&gt;Cura&lt;/a&gt;, is free software
+and should be trivial to get up and running on Linux if someone took
+the time to package it for the relevant distributions.  I even found
+&lt;a href=&quot;https://bugs.debian.org/706656&quot;&gt;a request for adding into
+Debian&lt;/a&gt; from 2013, which had seem some activity over the years but
+never resulted in the software showing up in Debian.  So a few days
+ago I offered my help to try to improve the situation.&lt;/p&gt;
+
+&lt;p&gt;Now I am very happy to see that all the packages required by a
+working Cura in Debian are uploaded into Debian and waiting in the NEW
+queue for the ftpmasters to have a look.  You can track the progress
+on
+&lt;a href=&quot;https://qa.debian.org/developer.php?email=3dprinter-general%40lists.alioth.debian.org&quot;&gt;the
+status page for the 3D printer team&lt;/a&gt;.&lt;/p&gt;
+
+&lt;p&gt;The uploaded packages are a bit behind upstream, and was uploaded
+now to get slots in &lt;a href=&quot;https://ftp-master.debian.org/new.html&quot;&gt;the NEW
+queue&lt;/a&gt; while we work up updating the packages to the latest
+upstream version.&lt;/p&gt;
+
+&lt;p&gt;On a related note, two competitors for Cura, which I found harder
+to use and was unable to configure correctly for Ultimaker 2+ in the
+short time I spent on it, are already in Debian.  If you are looking
+for 3D printer &quot;slicers&quot; and want something already available in
+Debian, check out
+&lt;a href=&quot;https://tracker.debian.org/pkg/slic3r&quot;&gt;slic3r&lt;/a&gt; and
+&lt;a href=&quot;https://tracker.debian.org/pkg/slic3r-prusa&quot;&gt;slic3r-prusa&lt;/a&gt;.
+The latter is a fork of the former.&lt;/p&gt;
+
+&lt;p&gt;As usual, if you use Bitcoin and want to show your support of my
+activities, please send Bitcoin donations to my address
+&lt;b&gt;&lt;a href=&quot;bitcoin:15oWEoG9dUPovwmUL9KWAnYRtNJEkP1u1b&quot;&gt;15oWEoG9dUPovwmUL9KWAnYRtNJEkP1u1b&lt;/a&gt;&lt;/b&gt;.&lt;/p&gt;
+</description>
+       </item>
+       
+       <item>
+               <title>Visualizing GSM radio chatter using gr-gsm and Hopglass</title>
+               <link>http://people.skolelinux.org/pere/blog/Visualizing_GSM_radio_chatter_using_gr_gsm_and_Hopglass.html</link>
+               <guid isPermaLink="true">http://people.skolelinux.org/pere/blog/Visualizing_GSM_radio_chatter_using_gr_gsm_and_Hopglass.html</guid>
+                <pubDate>Fri, 29 Sep 2017 10:30:00 +0200</pubDate>
+               <description>&lt;p&gt;Every mobile phone announce its existence over radio to the nearby
+mobile cell towers.  And this radio chatter is available for anyone
+with a radio receiver capable of receiving them.  Details about the
+mobile phones with very good accuracy is of course collected by the
+phone companies, but this is not the topic of this blog post.  The
+mobile phone radio chatter make it possible to figure out when a cell
+phone is nearby, as it include the SIM card ID (IMSI).  By paying
+attention over time, one can see when a phone arrive and when it leave
+an area.  I believe it would be nice to make this information more
+available to the general public, to make more people aware of how
+their phones are announcing their whereabouts to anyone that care to
+listen.&lt;/p&gt;
+
+&lt;p&gt;I am very happy to report that we managed to get something
+visualizing this information up and running for
+&lt;a href=&quot;http://norwaymakers.org/osf17&quot;&gt;Oslo Skaperfestival 2017&lt;/a&gt;
+(Oslo Makers Festival) taking place today and tomorrow at Deichmanske
+library.  The solution is based on the
+&lt;a href=&quot;http://people.skolelinux.org/pere/blog/Easier_recipe_to_observe_the_cell_phones_around_you.html&quot;&gt;simple
+recipe for listening to GSM chatter&lt;/a&gt; I posted a few days ago, and
+will show up at the stand of &lt;a href=&quot;http://sonen.ifi.uio.no/&quot;&gt;Ă…pen
+Sone from the Computer Science department of the University of
+Oslo&lt;/a&gt;.  The presentation will show the nearby mobile phones (aka
+IMSIs) as dots in a web browser graph, with lines to the dot
+representing mobile base station it is talking to. It was working in
+the lab yesterday, and was moved into place this morning.&lt;/p&gt;
+
+&lt;p&gt;We set up a fairly powerful desktop machine using Debian
+Buster/Testing with several (five, I believe) RTL2838 DVB-T receivers
+connected and visualize the visible cell phone towers using an
+&lt;a href=&quot;https://github.com/marlow925/hopglass&quot;&gt;English version of
+Hopglass&lt;/a&gt;.  A fairly powerfull machine is needed as the
+grgsm_livemon_headless processes from
+&lt;a href=&quot;https://tracker.debian.org/pkg/gr-gsm&quot;&gt;gr-gsm&lt;/a&gt; converting
+the radio signal to data packages is quite CPU intensive.&lt;/p&gt;
+                                       
+&lt;p&gt;The frequencies to listen to, are identified using a slightly
+patched scan-and-livemon (to set the --args values for each receiver),
+and the Hopglass data is generated using the
+&lt;a href=&quot;https://github.com/petterreinholdtsen/IMSI-catcher/tree/meshviewer-output&quot;&gt;patches
+in my meshviewer-output branch&lt;/a&gt;.  For some reason we could not get
+more than four SDRs working.  There is also a geographical map trying
+to show the location of the base stations, but I believe their
+coordinates are hardcoded to some random location in Germany, I
+believe.  The code should be replaced with code to look up location in
+a text file, a sqlite database or one of the online databases
+mentioned in
+&lt;a href=&quot;https://github.com/Oros42/IMSI-catcher/issues/14&quot;&gt;the github
+issue for the topic&lt;/a&gt;.
+
+&lt;p&gt;If this sound interesting, visit the stand at the festival!&lt;/p&gt;
+</description>
+       </item>
+       
+       <item>
+               <title>Easier recipe to observe the cell phones around you</title>
+               <link>http://people.skolelinux.org/pere/blog/Easier_recipe_to_observe_the_cell_phones_around_you.html</link>
+               <guid isPermaLink="true">http://people.skolelinux.org/pere/blog/Easier_recipe_to_observe_the_cell_phones_around_you.html</guid>
+                <pubDate>Sun, 24 Sep 2017 08:30:00 +0200</pubDate>
+               <description>&lt;p&gt;A little more than a month ago I wrote
+&lt;a href=&quot;http://people.skolelinux.org/pere/blog/Simpler_recipe_on_how_to_make_a_simple__7_IMSI_Catcher_using_Debian.html&quot;&gt;how
+to observe the SIM card ID (aka IMSI number) of mobile phones talking
+to nearby mobile phone base stations using Debian GNU/Linux and a
+cheap USB software defined radio&lt;/a&gt;, and thus being able to pinpoint
+the location of people and equipment (like cars and trains) with an
+accuracy of a few kilometer.  Since then we have worked to make the
+procedure even simpler, and it is now possible to do this without any
+manual frequency tuning and without building your own packages.&lt;/p&gt;
+
+&lt;p&gt;The &lt;a href=&quot;https://tracker.debian.org/pkg/gr-gsm&quot;&gt;gr-gsm&lt;/a&gt;
+package is now included in Debian testing and unstable, and the
+IMSI-catcher code no longer require root access to fetch and decode
+the GSM data collected using gr-gsm.&lt;/p&gt;
+
+&lt;p&gt;Here is an updated recipe, using packages built by Debian and a git
+clone of two python scripts:&lt;/p&gt;
+
+&lt;ol&gt;
+
+&lt;li&gt;Start with a Debian machine running the Buster version (aka
+  testing).&lt;/li&gt;
+
+&lt;li&gt;Run &#39;&lt;tt&gt;apt install gr-gsm python-numpy python-scipy
+  python-scapy&lt;/tt&gt;&#39; as root to install required packages.&lt;/li&gt;
+
+&lt;li&gt;Fetch the code decoding GSM packages using &#39;&lt;tt&gt;git clone
+  github.com/Oros42/IMSI-catcher.git&lt;/tt&gt;&#39;.&lt;/li&gt;
+
+&lt;li&gt;Insert USB software defined radio supported by GNU Radio.&lt;/li&gt;
+
+&lt;li&gt;Enter the IMSI-catcher directory and run &#39;&lt;tt&gt;python
+  scan-and-livemon&lt;/tt&gt;&#39; to locate the frequency of nearby base
+  stations and start listening for GSM packages on one of them.&lt;/li&gt;
+
+&lt;li&gt;Enter the IMSI-catcher directory and run &#39;&lt;tt&gt;python
+  simple_IMSI-catcher.py&lt;/tt&gt;&#39; to display the collected information.&lt;/li&gt;
+
+&lt;/ol&gt;
+
+&lt;p&gt;Note, due to a bug somewhere the scan-and-livemon program (actually
+&lt;a href=&quot;https://github.com/ptrkrysik/gr-gsm/issues/336&quot;&gt;its underlying
+program grgsm_scanner&lt;/a&gt;) do not work with the HackRF radio.  It does
+work with RTL 8232 and other similar USB radio receivers you can get
+very cheaply
+(&lt;a href=&quot;https://www.ebay.com/sch/items/?_nkw=rtl+2832&quot;&gt;for example
+from ebay&lt;/a&gt;), so for now the solution is to scan using the RTL radio
+and only use HackRF for fetching GSM data.&lt;/p&gt;
+
+&lt;p&gt;As far as I can tell, a cell phone only show up on one of the
+frequencies at the time, so if you are going to track and count every
+cell phone around you, you need to listen to all the frequencies used.
+To listen to several frequencies, use the --numrecv argument to
+scan-and-livemon to use several receivers.  Further, I am not sure if
+phones using 3G or 4G will show as talking GSM to base stations, so
+this approach might not see all phones around you.  I typically see
+0-400 IMSI numbers an hour when looking around where I live.&lt;/p&gt;
+
+&lt;p&gt;I&#39;ve tried to run the scanner on a
+&lt;a href=&quot;https://wiki.debian.org/RaspberryPi&quot;&gt;Raspberry Pi 2 and 3
+running Debian Buster&lt;/a&gt;, but the grgsm_livemon_headless process seem
+to be too CPU intensive to keep up.  When GNU Radio print &#39;O&#39; to
+stdout, I am told there it is caused by a buffer overflow between the
+radio and GNU Radio, caused by the program being unable to read the
+GSM data fast enough.  If you see a stream of &#39;O&#39;s from the terminal
+where you started scan-and-livemon, you need a give the process more
+CPU power.  Perhaps someone are able to optimize the code to a point
+where it become possible to set up RPi3 based GSM sniffers?  I tried
+using Raspbian instead of Debian, but there seem to be something wrong
+with GNU Radio on raspbian, causing glibc to abort().&lt;/p&gt;
+</description>
+       </item>
+       
+       <item>
+               <title>Simpler recipe on how to make a simple $7 IMSI Catcher using Debian</title>
+               <link>http://people.skolelinux.org/pere/blog/Simpler_recipe_on_how_to_make_a_simple__7_IMSI_Catcher_using_Debian.html</link>
+               <guid isPermaLink="true">http://people.skolelinux.org/pere/blog/Simpler_recipe_on_how_to_make_a_simple__7_IMSI_Catcher_using_Debian.html</guid>
+                <pubDate>Wed, 9 Aug 2017 23:59:00 +0200</pubDate>
+               <description>&lt;p&gt;On friday, I came across an interesting article in the Norwegian
+web based ICT news magazine digi.no on
+&lt;a href=&quot;https://www.digi.no/artikler/sikkerhetsforsker-lagde-enkel-imsi-catcher-for-60-kroner-na-kan-mobiler-kartlegges-av-alle/398588&quot;&gt;how
+to collect the IMSI numbers of nearby cell phones&lt;/a&gt; using the cheap
+DVB-T software defined radios.  The article refered to instructions
+and &lt;a href=&quot;https://www.youtube.com/watch?v=UjwgNd_as30&quot;&gt;a recipe by
+Keld Norman on Youtube on how to make a simple $7 IMSI Catcher&lt;/a&gt;, and I decided to test them out.&lt;/p&gt;
+
+&lt;p&gt;The instructions said to use Ubuntu, install pip using apt (to
+bypass apt), use pip to install pybombs (to bypass both apt and pip),
+and the ask pybombs to fetch and build everything you need from
+scratch.  I wanted to see if I could do the same on the most recent
+Debian packages, but this did not work because pybombs tried to build
+stuff that no longer build with the most recent openssl library or
+some other version skew problem.  While trying to get this recipe
+working, I learned that the apt-&gt;pip-&gt;pybombs route was a long detour,
+and the only piece of software dependency missing in Debian was the
+gr-gsm package.  I also found out that the lead upstream developer of
+gr-gsm (the name stand for GNU Radio GSM) project already had a set of
+Debian packages provided in an Ubuntu PPA repository.  All I needed to
+do was to dget the Debian source package and built it.&lt;/p&gt;
+
+&lt;p&gt;The IMSI collector is a python script listening for packages on the
+loopback network device and printing to the terminal some specific GSM
+packages with IMSI numbers in them.  The code is fairly short and easy
+to understand.  The reason this work is because gr-gsm include a tool
+to read GSM data from a software defined radio like a DVB-T USB stick
+and other software defined radios, decode them and inject them into a
+network device on your Linux machine (using the loopback device by
+default).  This proved to work just fine, and I&#39;ve been testing the
+collector for a few days now.&lt;/p&gt;
+
+&lt;p&gt;The updated and simpler recipe is thus to&lt;/p&gt;
+
+&lt;ol&gt;
+
+&lt;li&gt;start with a Debian machine running Stretch or newer,&lt;/li&gt;
+
+&lt;li&gt;build and install the gr-gsm package available from
+&lt;a href=&quot;http://ppa.launchpad.net/ptrkrysik/gr-gsm/ubuntu/pool/main/g/gr-gsm/&quot;&gt;http://ppa.launchpad.net/ptrkrysik/gr-gsm/ubuntu/pool/main/g/gr-gsm/&lt;/a&gt;,&lt;/li&gt;
+
+&lt;li&gt;clone the git repostory from &lt;a href=&quot;https://github.com/Oros42/IMSI-catcher&quot;&gt;https://github.com/Oros42/IMSI-catcher&lt;/a&gt;,&lt;/li&gt;
+
+&lt;li&gt;run grgsm_livemon and adjust the frequency until the terminal
+where it was started is filled with a stream of text (meaning you
+found a GSM station).&lt;/li&gt;
+
+&lt;li&gt;go into the IMSI-catcher directory and run &#39;sudo python simple_IMSI-catcher.py&#39; to extract the IMSI numbers.&lt;/li&gt;
+
+&lt;/ol&gt;
+
+&lt;p&gt;To make it even easier in the future to get this sniffer up and
+running, I decided to package
+&lt;a href=&quot;https://github.com/ptrkrysik/gr-gsm/&quot;&gt;the gr-gsm project&lt;/a&gt;
+for Debian (&lt;a href=&quot;https://bugs.debian.org/871055&quot;&gt;WNPP
+#871055&lt;/a&gt;), and the package was uploaded into the NEW queue today.
+Luckily the gnuradio maintainer has promised to help me, as I do not
+know much about gnuradio stuff yet.&lt;/p&gt;
+
+&lt;p&gt;I doubt this &quot;IMSI cacher&quot; is anywhere near as powerfull as
+commercial tools like
+&lt;a href=&quot;https://www.thespyphone.com/portable-imsi-imei-catcher/&quot;&gt;The
+Spy Phone Portable IMSI / IMEI Catcher&lt;/a&gt; or the
+&lt;a href=&quot;https://en.wikipedia.org/wiki/Stingray_phone_tracker&quot;&gt;Harris
+Stingray&lt;/a&gt;, but I hope the existance of cheap alternatives can make
+more people realise how their whereabouts when carrying a cell phone
+is easily tracked.  Seeing the data flow on the screen, realizing that
+I live close to a police station and knowing that the police is also
+wearing cell phones, I wonder how hard it would be for criminals to
+track the position of the police officers to discover when there are
+police near by, or for foreign military forces to track the location
+of the Norwegian military forces, or for anyone to track the location
+of government officials...&lt;/p&gt;
+
+&lt;p&gt;It is worth noting that the data reported by the IMSI-catcher
+script mentioned above is only a fraction of the data broadcasted on
+the GSM network.  It will only collect one frequency at the time,
+while a typical phone will be using several frequencies, and not all
+phones will be using the frequencies tracked by the grgsm_livemod
+program.  Also, there is a lot of radio chatter being ignored by the
+simple_IMSI-catcher script, which would be collected by extending the
+parser code.  I wonder if gr-gsm can be set up to listen to more than
+one frequency?&lt;/p&gt;
+</description>
+       </item>
+       
+       <item>
+               <title>Norwegian BokmĂ¥l edition of Debian Administrator&#39;s Handbook is now available</title>
+               <link>http://people.skolelinux.org/pere/blog/Norwegian_Bokm_l_edition_of_Debian_Administrator_s_Handbook_is_now_available.html</link>
+               <guid isPermaLink="true">http://people.skolelinux.org/pere/blog/Norwegian_Bokm_l_edition_of_Debian_Administrator_s_Handbook_is_now_available.html</guid>
+                <pubDate>Tue, 25 Jul 2017 21:10:00 +0200</pubDate>
+               <description>&lt;p align=&quot;center&quot;&gt;&lt;img align=&quot;center&quot; src=&quot;http://people.skolelinux.org/pere/blog/images/2017-07-25-debian-handbook-nb-testprint.png&quot;/&gt;&lt;/p&gt;
+
+&lt;p&gt;I finally received a copy of the Norwegian BokmĂ¥l edition of
+&quot;&lt;a href=&quot;https://debian-handbook.info/&quot;&gt;The Debian Administrator&#39;s
+Handbook&lt;/a&gt;&quot;.  This test copy arrived in the mail a few days ago, and
+I am very happy to hold the result in my hand.   We spent around one and a half year translating it. This paperbook edition
+&lt;a href=&quot;https://debian-handbook.info/get/#norwegian&quot;&gt;is available
+from lulu.com&lt;/a&gt;.  If you buy it quickly, you save 25% on the list
+price.  The book is also available for download in electronic form as
+PDF, EPUB and Mobipocket, as can be
+&lt;a href=&quot;https://debian-handbook.info/browse/nb-NO/stable/&quot;&gt;read online
+as a web page&lt;/a&gt;.&lt;/p&gt;
+
+&lt;p&gt;This is the second book I publish (the first was the book
+&quot;&lt;a href=&quot;http://free-culture.cc/&quot;&gt;Free Culture&lt;/a&gt;&quot; by Lawrence Lessig
+in
+&lt;a href=&quot;http://www.lulu.com/shop/lawrence-lessig/free-culture/paperback/product-22440520.html&quot;&gt;English&lt;/a&gt;,
+&lt;a href=&quot;http://www.lulu.com/shop/lawrence-lessig/culture-libre/paperback/product-22645082.html&quot;&gt;French&lt;/a&gt;
+and
+&lt;a href=&quot;http://www.lulu.com/shop/lawrence-lessig/fri-kultur/paperback/product-22441576.html&quot;&gt;Norwegian
+BokmĂ¥l&lt;/a&gt;), and I am very excited to finally wrap up this
+project.  I hope
+&quot;&lt;a href=&quot;http://www.lulu.com/shop/rapha%C3%ABl-hertzog-and-roland-mas/h%C3%A5ndbok-for-debian-administratoren/paperback/product-23262290.html&quot;&gt;HĂ¥ndbok
+for Debian-administratoren&lt;/a&gt;&quot; will be well received.&lt;/p&gt;
+</description>
+       </item>
+       
+       <item>
+               <title>NĂ¥r nynorskoversettelsen svikter til eksamen...</title>
+               <link>http://people.skolelinux.org/pere/blog/N_r_nynorskoversettelsen_svikter_til_eksamen___.html</link>
+               <guid isPermaLink="true">http://people.skolelinux.org/pere/blog/N_r_nynorskoversettelsen_svikter_til_eksamen___.html</guid>
+                <pubDate>Sat, 3 Jun 2017 08:20:00 +0200</pubDate>
+               <description>&lt;p&gt;&lt;a href=&quot;http://www.aftenposten.no/norge/Krever-at-elever-ma-fa-annullert-eksamen-etter-rot-med-oppgavetekster-622459b.html&quot;&gt;Aftenposten
+melder i dag&lt;/a&gt; om feil i eksamensoppgavene for eksamen i politikk og
+menneskerettigheter, der teksten i bokmĂ¥ls og nynorskutgaven ikke var
+like.  Oppgaveteksten er gjengitt i artikkelen, og jeg ble nysgjerring
+pĂ¥ om den fri oversetterløsningen
+&lt;a href=&quot;https://www.apertium.org/&quot;&gt;Apertium&lt;/a&gt; ville gjort en bedre
+jobb enn Utdanningsdirektoratet.  Det kan se slik ut.&lt;/p&gt;
+
+&lt;p&gt;Her er bokmĂ¥lsoppgaven fra eksamenen:&lt;/p&gt;
+
+&lt;blockquote&gt;
+&lt;p&gt;Drøft utfordringene knyttet til nasjonalstatenes og andre aktørers
+rolle og muligheter til Ă¥ hĂ¥ndtere internasjonale utfordringer, som
+for eksempel flykningekrisen.&lt;/p&gt;
+
+&lt;p&gt;Vedlegge er eksempler pĂ¥ tekster som kan gi relevante perspektiver
+pĂ¥ temaet:&lt;/p&gt;
+&lt;ol&gt;
+&lt;li&gt;Flykningeregnskapet 2016, UNHCR og IDMC
+&lt;li&gt;«Grenseløst Europa for fall» A-Magasinet, 26. november 2015
+&lt;/ol&gt;
+
+&lt;/blockquote&gt;
+
+&lt;p&gt;Dette oversetter Apertium slik:&lt;/p&gt;
+
+&lt;blockquote&gt;
+&lt;p&gt;Drøft utfordringane knytte til nasjonalstatane sine og rolla til
+andre aktørar og høve til Ă¥ handtera internasjonale utfordringar, som
+til dømes *flykningekrisen.&lt;/p&gt;
+
+&lt;p&gt;Vedleggja er døme pĂ¥ tekster som kan gje relevante perspektiv pĂ¥
+temaet:&lt;/p&gt;
+
+&lt;ol&gt;
+&lt;li&gt;*Flykningeregnskapet 2016, *UNHCR og *IDMC&lt;/li&gt;
+&lt;li&gt;«*Grenseløst Europa for fall» A-Magasinet, 26. november 2015&lt;/li&gt;
+&lt;/ol&gt;
+
+&lt;/blockquote&gt;
+
+&lt;p&gt;Ord som ikke ble forstĂ¥tt er markert med stjerne (*), og trenger
+ekstra sprĂ¥ksjekk.  Men ingen ord er forsvunnet, slik det var i
+oppgaven elevene fikk presentert pĂ¥ eksamen.  Jeg mistenker dog at
+&quot;andre aktørers rolle og muligheter til ...&quot; burde vært oversatt til
+&quot;rolla til andre aktørar og deira høve til ...&quot; eller noe slikt, men
+det er kanskje flisespikking.  Det understreker vel bare at det alltid
+trengs korrekturlesning etter automatisk oversettelse.&lt;/p&gt;
+</description>
+       </item>
+       
+       <item>
+               <title>Detecting NFS hangs on Linux without hanging yourself...</title>
+               <link>http://people.skolelinux.org/pere/blog/Detecting_NFS_hangs_on_Linux_without_hanging_yourself___.html</link>
+               <guid isPermaLink="true">http://people.skolelinux.org/pere/blog/Detecting_NFS_hangs_on_Linux_without_hanging_yourself___.html</guid>
+                <pubDate>Thu, 9 Mar 2017 15:20:00 +0100</pubDate>
+               <description>&lt;p&gt;Over the years, administrating thousand of NFS mounting linux
+computers at the time, I often needed a way to detect if the machine
+was experiencing NFS hang.  If you try to use &lt;tt&gt;df&lt;/tt&gt; or look at a
+file or directory affected by the hang, the process (and possibly the
+shell) will hang too.  So you want to be able to detect this without
+risking the detection process getting stuck too.  It has not been
+obvious how to do this.  When the hang has lasted a while, it is
+possible to find messages like these in dmesg:&lt;/p&gt;
+
+&lt;p&gt;&lt;blockquote&gt;
+nfs: server nfsserver not responding, still trying
+&lt;br&gt;nfs: server nfsserver OK
+&lt;/blockquote&gt;&lt;/p&gt;
+  
+&lt;p&gt;It is hard to know if the hang is still going on, and it is hard to
+be sure looking in dmesg is going to work.  If there are lots of other
+messages in dmesg the lines might have rotated out of site before they
+are noticed.&lt;/p&gt;
+
+&lt;p&gt;While reading through the nfs client implementation in linux kernel
+code, I came across some statistics that seem to give a way to detect
+it.  The om_timeouts sunrpc value in the kernel will increase every
+time the above log entry is inserted into dmesg.  And after digging a
+bit further, I discovered that this value show up in
+/proc/self/mountstats on Linux.&lt;/p&gt;
+
+&lt;p&gt;The mountstats content seem to be shared between files using the
+same file system context, so it is enough to check one of the
+mountstats files to get the state of the mount point for the machine.
+I assume this will not show lazy umounted NFS points, nor NFS mount
+points in a different process context (ie with a different filesystem
+view), but that does not worry me.&lt;/p&gt;
+
+&lt;p&gt;The content for a NFS mount point look similar to this:&lt;/p&gt;
+
+&lt;p&gt;&lt;blockquote&gt;&lt;pre&gt;
+[...]
+device /dev/mapper/Debian-var mounted on /var with fstype ext3
+device nfsserver:/mnt/nfsserver/home0 mounted on /mnt/nfsserver/home0 with fstype nfs statvers=1.1
+        opts:   rw,vers=3,rsize=65536,wsize=65536,namlen=255,acregmin=3,acregmax=60,acdirmin=30,acdirmax=60,soft,nolock,proto=tcp,timeo=600,retrans=2,sec=sys,mountaddr=129.240.3.145,mountvers=3,mountport=4048,mountproto=udp,local_lock=all
+        age:    7863311
+        caps:   caps=0x3fe7,wtmult=4096,dtsize=8192,bsize=0,namlen=255
+        sec:    flavor=1,pseudoflavor=1
+        events: 61063112 732346265 1028140 35486205 16220064 8162542 761447191 71714012 37189 3891185 45561809 110486139 4850138 420353 15449177 296502 52736725 13523379 0 52182 9016896 1231 0 0 0 0 0 
+        bytes:  166253035039 219519120027 0 0 40783504807 185466229638 11677877 45561809 
+        RPC iostats version: 1.0  p/v: 100003/3 (nfs)
+        xprt:   tcp 925 1 6810 0 0 111505412 111480497 109 2672418560317 0 248 53869103 22481820
+        per-op statistics
+                NULL: 0 0 0 0 0 0 0 0
+             GETATTR: 61063106 61063108 0 9621383060 6839064400 453650 77291321 78926132
+             SETATTR: 463469 463470 0 92005440 66739536 63787 603235 687943
+              LOOKUP: 17021657 17021657 0 3354097764 4013442928 57216 35125459 35566511
+              ACCESS: 14281703 14290009 5 2318400592 1713803640 1709282 4865144 7130140
+            READLINK: 125 125 0 20472 18620 0 1112 1118
+                READ: 4214236 4214237 0 715608524 41328653212 89884 22622768 22806693
+               WRITE: 8479010 8494376 22 187695798568 1356087148 178264904 51506907 231671771
+              CREATE: 171708 171708 0 38084748 46702272 873 1041833 1050398
+               MKDIR: 3680 3680 0 773980 993920 26 23990 24245
+             SYMLINK: 903 903 0 233428 245488 6 5865 5917
+               MKNOD: 80 80 0 20148 21760 0 299 304
+              REMOVE: 429921 429921 0 79796004 61908192 3313 2710416 2741636
+               RMDIR: 3367 3367 0 645112 484848 22 5782 6002
+              RENAME: 466201 466201 0 130026184 121212260 7075 5935207 5961288
+                LINK: 289155 289155 0 72775556 67083960 2199 2565060 2585579
+             READDIR: 2933237 2933237 0 516506204 13973833412 10385 3190199 3297917
+         READDIRPLUS: 1652839 1652839 0 298640972 6895997744 84735 14307895 14448937
+              FSSTAT: 6144 6144 0 1010516 1032192 51 9654 10022
+              FSINFO: 2 2 0 232 328 0 1 1
+            PATHCONF: 1 1 0 116 140 0 0 0
+              COMMIT: 0 0 0 0 0 0 0 0
+
+device binfmt_misc mounted on /proc/sys/fs/binfmt_misc with fstype binfmt_misc
+[...]
+&lt;/pre&gt;&lt;/blockquote&gt;&lt;/p&gt;
+
+&lt;p&gt;The key number to look at is the third number in the per-op list.
+It is the number of NFS timeouts experiences per file system
+operation.  Here 22 write timeouts and 5 access timeouts.  If these
+numbers are increasing, I believe the machine is experiencing NFS
+hang.  Unfortunately the timeout value do not start to increase right
+away.  The NFS operations need to time out first, and this can take a
+while.  The exact timeout value depend on the setup.  For example the
+defaults for TCP and UDP mount points are quite different, and the
+timeout value is affected by the soft, hard, timeo and retrans NFS
+mount options.&lt;/p&gt;
+
+&lt;p&gt;The only way I have been able to get working on Debian and RedHat
+Enterprise Linux for getting the timeout count is to peek in /proc/.
+But according to
+&lt;ahref=&quot;http://docs.oracle.com/cd/E19253-01/816-4555/netmonitor-12/index.html&quot;&gt;Solaris
+10 System Administration Guide: Network Services&lt;/a&gt;, the &#39;nfsstat -c&#39;
+command can be used to get these timeout values.  But this do not work
+on Linux, as far as I can tell.  I
+&lt;ahref=&quot;http://bugs.debian.org/857043&quot;&gt;asked Debian about this&lt;/a&gt;,
+but have not seen any replies yet.&lt;/p&gt;
+
+&lt;p&gt;Is there a better way to figure out if a Linux NFS client is
+experiencing NFS hangs?  Is there a way to detect which processes are
+affected?  Is there a way to get the NFS mount going quickly once the
+network problem causing the NFS hang has been cleared?  I would very
+much welcome some clues, as we regularly run into NFS hangs.&lt;/p&gt;
+</description>
+       </item>
+       
+       <item>
+               <title>Norwegian BokmĂ¥l translation of The Debian Administrator&#39;s Handbook complete, proofreading in progress</title>
+               <link>http://people.skolelinux.org/pere/blog/Norwegian_Bokm_l_translation_of_The_Debian_Administrator_s_Handbook_complete__proofreading_in_progress.html</link>
+               <guid isPermaLink="true">http://people.skolelinux.org/pere/blog/Norwegian_Bokm_l_translation_of_The_Debian_Administrator_s_Handbook_complete__proofreading_in_progress.html</guid>
+                <pubDate>Fri, 3 Mar 2017 14:50:00 +0100</pubDate>
+               <description>&lt;p&gt;For almost a year now, we have been working on making a Norwegian
+BokmĂ¥l edition of &lt;a href=&quot;https://debian-handbook.info/&quot;&gt;The Debian
+Administrator&#39;s Handbook&lt;/a&gt;.  Now, thanks to the tireless effort of
+Ole-Erik, Ingrid and Andreas, the initial translation is complete, and
+we are working on the proof reading to ensure consistent language and
+use of correct computer science terms.  The plan is to make the book
+available on paper, as well as in electronic form.  For that to
+happen, the proof reading must be completed and all the figures need
+to be translated.  If you want to help out, get in touch.&lt;/p&gt;
+
+&lt;p&gt;&lt;a href=&quot;http://people.skolelinux.org/pere/debian-handbook/debian-handbook-nb-NO.pdf&quot;&gt;A
+
+fresh PDF edition&lt;/a&gt; in A4 format (the final book will have smaller
+pages) of the book created every morning is available for
+proofreading.  If you find any errors, please
+&lt;a href=&quot;https://hosted.weblate.org/projects/debian-handbook/&quot;&gt;visit
+Weblate and correct the error&lt;/a&gt;.  The
+&lt;a href=&quot;http://l.github.io/debian-handbook/stat/nb-NO/index.html&quot;&gt;state
+of the translation including figures&lt;/a&gt; is a useful source for those
+provide Norwegian bokmĂ¥l screen shots and figures.&lt;/p&gt;
+</description>
+       </item>
+       
+       <item>
+               <title>Unlimited randomness with the ChaosKey?</title>
+               <link>http://people.skolelinux.org/pere/blog/Unlimited_randomness_with_the_ChaosKey_.html</link>
+               <guid isPermaLink="true">http://people.skolelinux.org/pere/blog/Unlimited_randomness_with_the_ChaosKey_.html</guid>
+                <pubDate>Wed, 1 Mar 2017 20:50:00 +0100</pubDate>
+               <description>&lt;p&gt;A few days ago I ordered a small batch of
+&lt;a href=&quot;http://altusmetrum.org/ChaosKey/&quot;&gt;the ChaosKey&lt;/a&gt;, a small
+USB dongle for generating entropy created by Bdale Garbee and Keith
+Packard.  Yesterday it arrived, and I am very happy to report that it
+work great!  According to its designers, to get it to work out of the
+box, you need the Linux kernel version 4.1 or later.  I tested on a
+Debian Stretch machine (kernel version 4.9), and there it worked just
+fine, increasing the available entropy very quickly.  I wrote a small
+test oneliner to test.  It first print the current entropy level,
+drain /dev/random, and then print the entropy level for five seconds.
+Here is the situation without the ChaosKey inserted:&lt;/p&gt;
+
+&lt;blockquote&gt;&lt;pre&gt;
+% cat /proc/sys/kernel/random/entropy_avail; \
+  dd bs=1M if=/dev/random of=/dev/null count=1; \
+  for n in $(seq 1 5); do \
+     cat /proc/sys/kernel/random/entropy_avail; \
+     sleep 1; \
+  done
+300
+0+1 oppføringer inn
+0+1 oppføringer ut
+28 byte kopiert, 0,000264565 s, 106 kB/s
+4
+8
+12
+17
+21
+%
+&lt;/pre&gt;&lt;/blockquote&gt;
+
+&lt;p&gt;The entropy level increases by 3-4 every second.  In such case any
+application requiring random bits (like a HTTPS enabled web server)
+will halt and wait for more entrpy.  And here is the situation with
+the ChaosKey inserted:&lt;/p&gt;
+
+&lt;blockquote&gt;&lt;pre&gt;
+% cat /proc/sys/kernel/random/entropy_avail; \
+  dd bs=1M if=/dev/random of=/dev/null count=1; \
+  for n in $(seq 1 5); do \
+     cat /proc/sys/kernel/random/entropy_avail; \
+     sleep 1; \
+  done
+1079
+0+1 oppføringer inn
+0+1 oppføringer ut
+104 byte kopiert, 0,000487647 s, 213 kB/s
+433
+1028
+1031
+1035
+1038
+%
+&lt;/pre&gt;&lt;/blockquote&gt;
+
+&lt;p&gt;Quite the difference. :) I bought a few more than I need, in case
+someone want to buy one here in Norway. :)&lt;/p&gt;
+
+&lt;p&gt;Update: The dongle was presented at Debconf last year.  You might
+find &lt;a href=&quot;https://debconf16.debconf.org/talks/94/&quot;&gt;the talk
+recording illuminating&lt;/a&gt;.  It explains exactly what the source of
+randomness is, if you are unable to spot it from the schema drawing
+available from the ChaosKey web site linked at the start of this blog
+post.&lt;/p&gt;
+</description>
+       </item>
+       
+       <item>
+               <title>Where did that package go? &amp;mdash; geolocated IP traceroute</title>
+               <link>http://people.skolelinux.org/pere/blog/Where_did_that_package_go___mdash__geolocated_IP_traceroute.html</link>
+               <guid isPermaLink="true">http://people.skolelinux.org/pere/blog/Where_did_that_package_go___mdash__geolocated_IP_traceroute.html</guid>
+                <pubDate>Mon, 9 Jan 2017 12:20:00 +0100</pubDate>
+               <description>&lt;p&gt;Did you ever wonder where the web trafic really flow to reach the
+web servers, and who own the network equipment it is flowing through?
+It is possible to get a glimpse of this from using traceroute, but it
+is hard to find all the details.  Many years ago, I wrote a system to
+map the Norwegian Internet (trying to figure out if our plans for a
+network game service would get low enough latency, and who we needed
+to talk to about setting up game servers close to the users.  Back
+then I used traceroute output from many locations (I asked my friends
+to run a script and send me their traceroute output) to create the
+graph and the map.  The output from traceroute typically look like
+this:
+
+&lt;p&gt;&lt;pre&gt;
+traceroute to www.stortinget.no (85.88.67.10), 30 hops max, 60 byte packets
+ 1  uio-gw10.uio.no (129.240.202.1)  0.447 ms  0.486 ms  0.621 ms
+ 2  uio-gw8.uio.no (129.240.24.229)  0.467 ms  0.578 ms  0.675 ms
+ 3  oslo-gw1.uninett.no (128.39.65.17)  0.385 ms  0.373 ms  0.358 ms
+ 4  te3-1-2.br1.fn3.as2116.net (193.156.90.3)  1.174 ms  1.172 ms  1.153 ms
+ 5  he16-1-1.cr1.san110.as2116.net (195.0.244.234)  2.627 ms he16-1-1.cr2.oslosda310.as2116.net (195.0.244.48)  3.172 ms he16-1-1.cr1.san110.as2116.net (195.0.244.234)  2.857 ms
+ 6  ae1.ar8.oslosda310.as2116.net (195.0.242.39)  0.662 ms  0.637 ms ae0.ar8.oslosda310.as2116.net (195.0.242.23)  0.622 ms
+ 7  89.191.10.146 (89.191.10.146)  0.931 ms  0.917 ms  0.955 ms
+ 8  * * *
+ 9  * * *
+[...]
+&lt;/pre&gt;&lt;/p&gt;
+
+&lt;p&gt;This show the DNS names and IP addresses of (at least some of the)
+network equipment involved in getting the data traffic from me to the
+www.stortinget.no server, and how long it took in milliseconds for a
+package to reach the equipment and return to me.  Three packages are
+sent, and some times the packages do not follow the same path.  This
+is shown for hop 5, where three different IP addresses replied to the
+traceroute request.&lt;/p&gt;
+
+&lt;p&gt;There are many ways to measure trace routes.  Other good traceroute
+implementations I use are traceroute (using ICMP packages) mtr (can do
+both ICMP, UDP and TCP) and scapy (python library with ICMP, UDP, TCP
+traceroute and a lot of other capabilities).  All of them are easily
+available in &lt;a href=&quot;https://www.debian.org/&quot;&gt;Debian&lt;/a&gt;.&lt;/p&gt;
+
+&lt;p&gt;This time around, I wanted to know the geographic location of
+different route points, to visualize how visiting a web page spread
+information about the visit to a lot of servers around the globe.  The
+background is that a web site today often will ask the browser to get
+from many servers the parts (for example HTML, JSON, fonts,
+JavaScript, CSS, video) required to display the content.  This will
+leak information about the visit to those controlling these servers
+and anyone able to peek at the data traffic passing by (like your ISP,
+the ISPs backbone provider, FRA, GCHQ, NSA and others).&lt;/p&gt;
+
+&lt;p&gt;Lets pick an example, the Norwegian parliament web site
+www.stortinget.no.  It is read daily by all members of parliament and
+their staff, as well as political journalists, activits and many other
+citizens of Norway.  A visit to the www.stortinget.no web site will
+ask your browser to contact 8 other servers: ajax.googleapis.com,
+insights.hotjar.com, script.hotjar.com, static.hotjar.com,
+stats.g.doubleclick.net, www.google-analytics.com,
+www.googletagmanager.com and www.netigate.se.  I extracted this by
+asking &lt;a href=&quot;http://phantomjs.org/&quot;&gt;PhantomJS&lt;/a&gt; to visit the
+Stortinget web page and tell me all the URLs PhantomJS downloaded to
+render the page (in HAR format using
+&lt;a href=&quot;https://github.com/ariya/phantomjs/blob/master/examples/netsniff.js&quot;&gt;their
+netsniff example&lt;/a&gt;.  I am very grateful to Gorm for showing me how
+to do this).  My goal is to visualize network traces to all IP
+addresses behind these DNS names, do show where visitors personal
+information is spread when visiting the page.&lt;/p&gt;
+
+&lt;p align=&quot;center&quot;&gt;&lt;a href=&quot;www.stortinget.no-geoip.kml&quot;&gt;&lt;img
+src=&quot;http://people.skolelinux.org/pere/blog/images/2017-01-09-www.stortinget.no-geoip-small.png&quot; alt=&quot;map of combined traces for URLs used by www.stortinget.no using GeoIP&quot;/&gt;&lt;/a&gt;&lt;/p&gt;
+
+&lt;p&gt;When I had a look around for options, I could not find any good
+free software tools to do this, and decided I needed my own traceroute
+wrapper outputting KML based on locations looked up using GeoIP.  KML
+is easy to work with and easy to generate, and understood by several
+of the GIS tools I have available.  I got good help from by NUUG
+colleague Anders Einar with this, and the result can be seen in
+&lt;a href=&quot;https://github.com/petterreinholdtsen/kmltraceroute&quot;&gt;my
+kmltraceroute git repository&lt;/a&gt;.  Unfortunately, the quality of the
+free GeoIP databases I could find (and the for-pay databases my
+friends had access to) is not up to the task.  The IP addresses of
+central Internet infrastructure would typically be placed near the
+controlling companies main office, and not where the router is really
+located, as you can see from &lt;a href=&quot;www.stortinget.no-geoip.kml&quot;&gt;the
+KML file I created&lt;/a&gt; using the GeoLite City dataset from MaxMind.
+
+&lt;p align=&quot;center&quot;&gt;&lt;a href=&quot;http://people.skolelinux.org/pere/blog/images/2017-01-09-www.stortinget.no-scapy.svg&quot;&gt;&lt;img
+src=&quot;http://people.skolelinux.org/pere/blog/images/2017-01-09-www.stortinget.no-scapy-small.png&quot; alt=&quot;scapy traceroute graph for URLs used by www.stortinget.no&quot;/&gt;&lt;/a&gt;&lt;/p&gt;
+
+&lt;p&gt;I also had a look at the visual traceroute graph created by
+&lt;a href=&quot;http://www.secdev.org/projects/scapy/&quot;&gt;the scrapy project&lt;/a&gt;,
+showing IP network ownership (aka AS owner) for the IP address in
+question.
+&lt;a href=&quot;http://people.skolelinux.org/pere/blog/images/2017-01-09-www.stortinget.no-scapy.svg&quot;&gt;The
+graph display a lot of useful information about the traceroute in SVG
+format&lt;/a&gt;, and give a good indication on who control the network
+equipment involved, but it do not include geolocation.  This graph
+make it possible to see the information is made available at least for
+UNINETT, Catchcom, Stortinget, Nordunet, Google, Amazon, Telia, Level
+3 Communications and NetDNA.&lt;/p&gt;
+
+&lt;p align=&quot;center&quot;&gt;&lt;a href=&quot;https://geotraceroute.com/index.php?node=4&amp;host=www.stortinget.no&quot;&gt;&lt;img
+src=&quot;http://people.skolelinux.org/pere/blog/images/2017-01-09-www.stortinget.no-geotraceroute-small.png&quot; alt=&quot;example geotraceroute view for www.stortinget.no&quot;/&gt;&lt;/a&gt;&lt;/p&gt;
+
+&lt;p&gt;In the process, I came across the
+&lt;a href=&quot;https://geotraceroute.com/&quot;&gt;web service GeoTraceroute&lt;/a&gt; by
+Salim Gasmi.  Its methology of combining guesses based on DNS names,
+various location databases and finally use latecy times to rule out
+candidate locations seemed to do a very good job of guessing correct
+geolocation.  But it could only do one trace at the time, did not have
+a sensor in Norway and did not make the geolocations easily available
+for postprocessing.  So I contacted the developer and asked if he
+would be willing to share the code (he refused until he had time to
+clean it up), but he was interested in providing the geolocations in a
+machine readable format, and willing to set up a sensor in Norway.  So
+since yesterday, it is possible to run traces from Norway in this
+service thanks to a sensor node set up by
+&lt;a href=&quot;https://www.nuug.no/&quot;&gt;the NUUG assosiation&lt;/a&gt;, and get the
+trace in KML format for further processing.&lt;/p&gt;
+
+&lt;p align=&quot;center&quot;&gt;&lt;a href=&quot;http://people.skolelinux.org/pere/blog/images/2017-01-09-www.stortinget.no-geotraceroute-kml-join.kml&quot;&gt;&lt;img
+src=&quot;http://people.skolelinux.org/pere/blog/images/2017-01-09-www.stortinget.no-geotraceroute-kml-join.png&quot; alt=&quot;map of combined traces for URLs used by www.stortinget.no using geotraceroute&quot;/&gt;&lt;/a&gt;&lt;/p&gt;
+
+&lt;p&gt;Here we can see a lot of trafic passes Sweden on its way to
+Denmark, Germany, Holland and Ireland.  Plenty of places where the
+Snowden confirmations verified the traffic is read by various actors
+without your best interest as their top priority.&lt;/p&gt;
+
+&lt;p&gt;Combining KML files is trivial using a text editor, so I could loop
+over all the hosts behind the urls imported by www.stortinget.no and
+ask for the KML file from GeoTraceroute, and create a combined KML
+file with all the traces (unfortunately only one of the IP addresses
+behind the DNS name is traced this time.  To get them all, one would
+have to request traces using IP number instead of DNS names from
+GeoTraceroute).  That might be the next step in this project.&lt;/p&gt;
+
+&lt;p&gt;Armed with these tools, I find it a lot easier to figure out where
+the IP traffic moves and who control the boxes involved in moving it.
+And every time the link crosses for example the Swedish border, we can
+be sure Swedish Signal Intelligence (FRA) is listening, as GCHQ do in
+Britain and NSA in USA and cables around the globe.  (Hm, what should
+we tell them? :) Keep that in mind if you ever send anything
+unencrypted over the Internet.&lt;/p&gt;
+
+&lt;p&gt;PS: KML files are drawn using
+&lt;a href=&quot;http://ivanrublev.me/kml/&quot;&gt;the KML viewer from Ivan
+Rublev&lt;a/&gt;, as it was less cluttered than the local Linux application
+Marble.  There are heaps of other options too.&lt;/p&gt;
+
+&lt;p&gt;As usual, if you use Bitcoin and want to show your support of my
+activities, please send Bitcoin donations to my address
+&lt;b&gt;&lt;a href=&quot;bitcoin:15oWEoG9dUPovwmUL9KWAnYRtNJEkP1u1b&quot;&gt;15oWEoG9dUPovwmUL9KWAnYRtNJEkP1u1b&lt;/a&gt;&lt;/b&gt;.&lt;/p&gt;
+</description>
+       </item>
+       
+       <item>
+               <title>Appstream just learned how to map hardware to packages too!</title>
+               <link>http://people.skolelinux.org/pere/blog/Appstream_just_learned_how_to_map_hardware_to_packages_too_.html</link>
+               <guid isPermaLink="true">http://people.skolelinux.org/pere/blog/Appstream_just_learned_how_to_map_hardware_to_packages_too_.html</guid>
+                <pubDate>Fri, 23 Dec 2016 10:30:00 +0100</pubDate>
+               <description>&lt;p&gt;I received a very nice Christmas present today.  As my regular
+readers probably know, I have been working on the
+&lt;a href=&quot;http://packages.qa.debian.org/isenkram&quot;&gt;the Isenkram
+system&lt;/a&gt; for many years.  The goal of the Isenkram system is to make
+it easier for users to figure out what to install to get a given piece
+of hardware to work in Debian, and a key part of this system is a way
+to map hardware to packages.  Isenkram have its own mapping database,
+and also uses data provided by each package using the AppStream
+metadata format.  And today,
+&lt;a href=&quot;https://tracker.debian.org/pkg/appstream&quot;&gt;AppStream&lt;/a&gt; in
+Debian learned to look up hardware the same way Isenkram is doing it,
+ie using fnmatch():&lt;/p&gt;
+
+&lt;p&gt;&lt;pre&gt;
+% appstreamcli what-provides modalias \
+  usb:v1130p0202d0100dc00dsc00dp00ic03isc00ip00in00
+Identifier: pymissile [generic]
+Name: pymissile
+Summary: Control original Striker USB Missile Launcher
+Package: pymissile
+% appstreamcli what-provides modalias usb:v0694p0002d0000
+Identifier: libnxt [generic]
+Name: libnxt
+Summary: utility library for talking to the LEGO Mindstorms NXT brick
+Package: libnxt
+---
+Identifier: t2n [generic]
+Name: t2n
+Summary: Simple command-line tool for Lego NXT
+Package: t2n
+---
+Identifier: python-nxt [generic]
+Name: python-nxt
+Summary: Python driver/interface/wrapper for the Lego Mindstorms NXT robot
+Package: python-nxt
+---
+Identifier: nbc [generic]
+Name: nbc
+Summary: C compiler for LEGO Mindstorms NXT bricks
+Package: nbc
+%
+&lt;/pre&gt;&lt;/p&gt;
+
+&lt;p&gt;A similar query can be done using the combined AppStream and
+Isenkram databases using the isenkram-lookup tool:&lt;/p&gt;
+
+&lt;p&gt;&lt;pre&gt;
+% isenkram-lookup usb:v1130p0202d0100dc00dsc00dp00ic03isc00ip00in00
+pymissile
+% isenkram-lookup usb:v0694p0002d0000
+libnxt
+nbc
+python-nxt
+t2n
+%
+&lt;/pre&gt;&lt;/p&gt;
+
+&lt;p&gt;You can find modalias values relevant for your machine using
+&lt;tt&gt;cat $(find /sys/devices/ -name modalias)&lt;/tt&gt;.
+
+&lt;p&gt;If you want to make this system a success and help Debian users
+make the most of the hardware they have, please
+help&lt;a href=&quot;https://wiki.debian.org/AppStream/Guidelines&quot;&gt;add
+AppStream metadata for your package following the guidelines&lt;/a&gt;
+documented in the wiki.  So far only 11 packages provide such
+information, among the several hundred hardware specific packages in
+Debian. The Isenkram database on the other hand contain 101 packages,
+mostly related to USB dongles.  Most of the packages with hardware
+mapping in AppStream are LEGO Mindstorms related, because I have, as
+part of my involvement in
+&lt;a href=&quot;https://wiki.debian.org/LegoDesigners&quot;&gt;the Debian LEGO
+team&lt;/a&gt; given priority to making sure LEGO users get proposed the
+complete set of packages in Debian for that particular hardware.  The
+team also got a nice Christmas present today.  The
+&lt;a href=&quot;https://tracker.debian.org/pkg/nxt-firmware&quot;&gt;nxt-firmware
+package&lt;/a&gt; made it into Debian.  With this package in place, it is
+now possible to use the LEGO Mindstorms NXT unit with only free
+software, as the nxt-firmware package contain the source and firmware
+binaries for the NXT brick.&lt;/p&gt;
+
+&lt;p&gt;As usual, if you use Bitcoin and want to show your support of my
+activities, please send Bitcoin donations to my address
+&lt;b&gt;&lt;a href=&quot;bitcoin:15oWEoG9dUPovwmUL9KWAnYRtNJEkP1u1b&quot;&gt;15oWEoG9dUPovwmUL9KWAnYRtNJEkP1u1b&lt;/a&gt;&lt;/b&gt;.&lt;/p&gt;
+</description>
+       </item>
+       
+       <item>
+               <title>Isenkram updated with a lot more hardware-package mappings</title>
+               <link>http://people.skolelinux.org/pere/blog/Isenkram_updated_with_a_lot_more_hardware_package_mappings.html</link>
+               <guid isPermaLink="true">http://people.skolelinux.org/pere/blog/Isenkram_updated_with_a_lot_more_hardware_package_mappings.html</guid>
+                <pubDate>Tue, 20 Dec 2016 11:55:00 +0100</pubDate>
+               <description>&lt;p&gt;&lt;a href=&quot;http://packages.qa.debian.org/isenkram&quot;&gt;The Isenkram
+system&lt;/a&gt; I wrote two years ago to make it easier in Debian to find
+and install packages to get your hardware dongles to work, is still
+going strong.  It is a system to look up the hardware present on or
+connected to the current system, and map the hardware to Debian
+packages.  It can either be done using the tools in isenkram-cli or
+using the user space daemon in the isenkram package.  The latter will
+notify you, when inserting new hardware, about what packages to
+install to get the dongle working.  It will even provide a button to
+click on to ask packagekit to install the packages.&lt;/p&gt;
+
+&lt;p&gt;Here is an command line example from my Thinkpad laptop:&lt;/p&gt;
+
+&lt;p&gt;&lt;pre&gt;
+% isenkram-lookup  
+bluez
+cheese
+ethtool
+fprintd
+fprintd-demo
+gkrellm-thinkbat
+hdapsd
+libpam-fprintd
+pidgin-blinklight
+thinkfan
+tlp
+tp-smapi-dkms
+tp-smapi-source
+tpb
+%
+&lt;/pre&gt;&lt;/p&gt;
+
+&lt;p&gt;It can also list the firware package providing firmware requested
+by the load kernel modules, which in my case is an empty list because
+I have all the firmware my machine need:
+
+&lt;p&gt;&lt;pre&gt;
+% /usr/sbin/isenkram-autoinstall-firmware -l
+info: did not find any firmware files requested by loaded kernel modules.  exiting
+%
+&lt;/pre&gt;&lt;/p&gt;
+
+&lt;p&gt;The last few days I had a look at several of the around 250
+packages in Debian with udev rules.  These seem like good candidates
+to install when a given hardware dongle is inserted, and I found
+several that should be proposed by isenkram.  I have not had time to
+check all of them, but am happy to report that now there are 97
+packages packages mapped to hardware by Isenkram.  11 of these
+packages provide hardware mapping using AppStream, while the rest are
+listed in the modaliases file provided in isenkram.&lt;/p&gt;
+
+&lt;p&gt;These are the packages with hardware mappings at the moment.  The
+&lt;strong&gt;marked packages&lt;/strong&gt; are also announcing their hardware
+support using AppStream, for everyone to use:&lt;/p&gt;
+
+&lt;p&gt;air-quality-sensor, alsa-firmware-loaders, argyll,
+&lt;strong&gt;array-info&lt;/strong&gt;, avarice, avrdude, b43-fwcutter,
+bit-babbler, bluez, bluez-firmware, &lt;strong&gt;brltty&lt;/strong&gt;,
+&lt;strong&gt;broadcom-sta-dkms&lt;/strong&gt;, calibre, cgminer, cheese, colord,
+&lt;strong&gt;colorhug-client&lt;/strong&gt;, dahdi-firmware-nonfree, dahdi-linux,
+dfu-util, dolphin-emu, ekeyd, ethtool, firmware-ipw2x00, fprintd,
+fprintd-demo, &lt;strong&gt;galileo&lt;/strong&gt;, gkrellm-thinkbat, gphoto2,
+gpsbabel, gpsbabel-gui, gpsman, gpstrans, gqrx-sdr, gr-fcdproplus,
+gr-osmosdr, gtkpod, hackrf, hdapsd, hdmi2usb-udev, hpijs-ppds, hplip,
+ipw3945-source, ipw3945d, kde-config-tablet, kinect-audio-setup,
+&lt;strong&gt;libnxt&lt;/strong&gt;, libpam-fprintd, &lt;strong&gt;lomoco&lt;/strong&gt;,
+madwimax, minidisc-utils, mkgmap, msi-keyboard, mtkbabel,
+&lt;strong&gt;nbc&lt;/strong&gt;, &lt;strong&gt;nqc&lt;/strong&gt;, nut-hal-drivers, ola,
+open-vm-toolbox, open-vm-tools, openambit, pcgminer, pcmciautils,
+pcscd, pidgin-blinklight, printer-driver-splix,
+&lt;strong&gt;pymissile&lt;/strong&gt;, python-nxt, qlandkartegt,
+qlandkartegt-garmin, rosegarden, rt2x00-source, sispmctl,
+soapysdr-module-hackrf, solaar, squeak-plugins-scratch, sunxi-tools,
+&lt;strong&gt;t2n&lt;/strong&gt;, thinkfan, thinkfinger-tools, tlp, tp-smapi-dkms,
+tp-smapi-source, tpb, tucnak, uhd-host, usbmuxd, viking,
+virtualbox-ose-guest-x11, w1retap, xawtv, xserver-xorg-input-vmmouse,
+xserver-xorg-input-wacom, xserver-xorg-video-qxl,
+xserver-xorg-video-vmware, yubikey-personalization and
+zd1211-firmware&lt;/p&gt;
+
+&lt;p&gt;If you know of other packages, please let me know with a wishlist
+bug report against the isenkram-cli package, and ask the package
+maintainer to
+&lt;a href=&quot;https://wiki.debian.org/AppStream/Guidelines&quot;&gt;add AppStream
+metadata according to the guidelines&lt;/a&gt; to provide the information
+for everyone.  In time, I hope to get rid of the isenkram specific
+hardware mapping and depend exclusively on AppStream.&lt;/p&gt;
+
+&lt;p&gt;Note, the AppStream metadata for broadcom-sta-dkms is matching too
+much hardware, and suggest that the package with with any ethernet
+card.  See &lt;a href=&quot;http://bugs.debian.org/838735&quot;&gt;bug #838735&lt;/a&gt; for
+the details.  I hope the maintainer find time to address it soon.  In
+the mean time I provide an override in isenkram.&lt;/p&gt;
+</description>
+       </item>
+       
+       <item>
+               <title>Oolite, a life in space as vagabond and mercenary - nice free software</title>
+               <link>http://people.skolelinux.org/pere/blog/Oolite__a_life_in_space_as_vagabond_and_mercenary___nice_free_software.html</link>
+               <guid isPermaLink="true">http://people.skolelinux.org/pere/blog/Oolite__a_life_in_space_as_vagabond_and_mercenary___nice_free_software.html</guid>
+                <pubDate>Sun, 11 Dec 2016 11:40:00 +0100</pubDate>
+               <description>&lt;p align=&quot;center&quot;&gt;&lt;img width=&quot;70%&quot; src=&quot;http://people.skolelinux.org/pere/blog/images/2016-12-11-nice-oolite.png&quot;/&gt;&lt;/p&gt;
+
+&lt;p&gt;In my early years, I played
+&lt;a href=&quot;http://wiki.alioth.net/index.php/Classic_Elite&quot;&gt;the epic game
+Elite&lt;/a&gt; on my PC.  I spent many months trading and fighting in
+space, and reached the &#39;elite&#39; fighting status before I moved on.  The
+original Elite game was available on Commodore 64 and the IBM PC
+edition I played had a 64 KB executable.  I am still impressed today
+that the authors managed to squeeze both a 3D engine and details about
+more than 2000 planet systems across 7 galaxies into a binary so
+small.&lt;/p&gt;
+
+&lt;p&gt;I have known about &lt;a href=&quot;http://www.oolite.org/&quot;&gt;the free
+software game Oolite inspired by Elite&lt;/a&gt; for a while, but did not
+really have time to test it properly until a few days ago.  It was
+great to discover that my old knowledge about trading routes were
+still valid.  But my fighting and flying abilities were gone, so I had
+to retrain to be able to dock on a space station.  And I am still not
+able to make much resistance when I am attacked by pirates, so I
+bougth and mounted the most powerful laser in the rear to be able to
+put up at least some resistance while fleeing for my life. :)&lt;/p&gt;
+
+&lt;p&gt;When playing Elite in the late eighties, I had to discover
+everything on my own, and I had long lists of prices seen on different
+planets to be able to decide where to trade what.  This time I had the
+advantages of the
+&lt;a href=&quot;http://wiki.alioth.net/index.php/Main_Page&quot;&gt;Elite wiki&lt;/a&gt;,
+where information about each planet is easily available with common
+price ranges and suggested trading routes.  This improved my ability
+to earn money and I have been able to earn enough to buy a lot of
+useful equipent in a few days.  I believe I originally played for
+months before I could get a docking computer, while now I could get it
+after less then a week.&lt;/p&gt;
+
+&lt;p&gt;If you like science fiction and dreamed of a life as a vagabond in
+space, you should try out Oolite.  It is available for Linux, MacOSX
+and Windows, and is included in Debian and derivatives since 2011.&lt;/p&gt;
+
+&lt;p&gt;As usual, if you use Bitcoin and want to show your support of my
+activities, please send Bitcoin donations to my address
+&lt;b&gt;&lt;a href=&quot;bitcoin:15oWEoG9dUPovwmUL9KWAnYRtNJEkP1u1b&quot;&gt;15oWEoG9dUPovwmUL9KWAnYRtNJEkP1u1b&lt;/a&gt;&lt;/b&gt;.&lt;/p&gt;
+</description>
+       </item>
+       
+       <item>
+               <title>Quicker Debian installations using eatmydata</title>
+               <link>http://people.skolelinux.org/pere/blog/Quicker_Debian_installations_using_eatmydata.html</link>
+               <guid isPermaLink="true">http://people.skolelinux.org/pere/blog/Quicker_Debian_installations_using_eatmydata.html</guid>
+                <pubDate>Fri, 25 Nov 2016 14:50:00 +0100</pubDate>
+               <description>&lt;p&gt;Two years ago, I did some experiments with eatmydata and the Debian
+installation system, observing how using
+&lt;a href=&quot;http://people.skolelinux.org/pere/blog/Speeding_up_the_Debian_installer_using_eatmydata_and_dpkg_divert.html&quot;&gt;eatmydata
+could speed up the installation&lt;/a&gt; quite a bit.  My testing measured
+speedup around 20-40 percent for Debian Edu, where we install around
+1000 packages from within the installer.  The eatmydata package
+provide a way to disable/delay file system flushing.  This is a bit
+risky in the general case, as files that should be stored on disk will
+stay only in memory a bit longer than expected, causing problems if a
+machine crashes at an inconvenient time.  But for an installation, if
+the machine crashes during installation the process is normally
+restarted, and avoiding disk operations as much as possible to speed
+up the process make perfect sense.
+
+&lt;p&gt;I added code in the Debian Edu specific installation code to enable
+&lt;a href=&quot;https://tracker.debian.org/pkg/libeatmydata&quot;&gt;eatmydata&lt;/a&gt;,
+but did not have time to push it any further.  But a few months ago I
+picked it up again and worked with the libeatmydata package maintainer
+Mattia Rizzolo to make it easier for everyone to get this installation
+speedup in Debian.  Thanks to our cooperation There is now an
+eatmydata-udeb package in Debian testing and unstable, and simply
+enabling/installing it in debian-installer (d-i) is enough to get the
+quicker installations.  It can be enabled using preseeding.  The
+following untested kernel argument should do the trick:&lt;/p&gt;
+
+&lt;blockquote&gt;&lt;pre&gt;
+preseed/early_command=&quot;anna-install eatmydata-udeb&quot;
+&lt;/pre&gt;&lt;/blockquote&gt;
+
+&lt;p&gt;This should ask d-i to install the package inside the d-i
+environment early in the installation sequence.  Having it installed
+in d-i in turn will make sure the relevant scripts are called just
+after debootstrap filled /target/ with the freshly installed Debian
+system to configure apt to run dpkg with eatmydata.  This is enough to
+speed up the installation process.  There is a proposal to
+&lt;a href=&quot;https://bugs.debian.org/841153&quot;&gt;extend the idea a bit further
+by using /etc/ld.so.preload instead of apt.conf&lt;/a&gt;, but I have not
+tested its impact.&lt;/p&gt;
+
+</description>
+       </item>
+       
+       <item>
+               <title>Oversette bokmĂ¥l til nynorsk, enklere enn du tror takket være Apertium</title>
+               <link>http://people.skolelinux.org/pere/blog/Oversette_bokm_l_til_nynorsk__enklere_enn_du_tror_takket_v_re_Apertium.html</link>
+               <guid isPermaLink="true">http://people.skolelinux.org/pere/blog/Oversette_bokm_l_til_nynorsk__enklere_enn_du_tror_takket_v_re_Apertium.html</guid>
+                <pubDate>Thu, 24 Nov 2016 10:50:00 +0100</pubDate>
+               <description>&lt;p&gt;I Norge er det mange som trenger Ă¥ skrive bĂ¥de bokmĂ¥l og nynorsk.
+Eksamensoppgaver, offentlige brev og nyheter er eksempler pĂ¥ tekster
+der det er krav om skriftsprĂ¥k.  I tillegg til alle skoleoppgavene som
+elever over det ganske land skal levere inn hvert Ă¥r.  Det mange ikke
+vet er at selv om de kommersielle alternativene
+&lt;a href=&quot;https://translate.google.com/&quot;&gt;Google Translate&lt;/a&gt; og
+&lt;a href=&quot;https://www.bing.com/translator/&quot;&gt;Bing Translator&lt;/a&gt; ikke kan
+bidra med Ă¥ oversette mellom bokmĂ¥l og nynorsk, sĂ¥ finnes det et
+utmerket fri programvarealternativ som kan.  Oversetterverktøyet
+Apertium har støtte for en rekke sprĂ¥kkombinasjoner, og takket være
+den utrettelige innsatsen til blant annet Kevin Brubeck Unhammer, kan
+en bruke webtjenesten til Ă¥ fylle inn en tekst pĂ¥ bokmĂ¥l eller
+nynorsk, og fĂ¥ den automatoversatt til det andre skriftsprĂ¥ket.
+Resultatet er ikke perfekt, men et svært godt utgangspunkt.  Av og til
+er resultatet sĂ¥ bra at det kan benyttes uten endringer.  Jeg vet
+f.eks. at store deler av Joomla ble oversatt til nynorsk ved hjelp
+Apertium.  Høres det ut som noe du kan ha bruk for?  Besøk i sĂ¥ fall
+&lt;a href=&quot;https://www.apertium.org/&quot;&gt;Apertium.org&lt;/a&gt; og fyll inn
+teksten din i webskjemaet der.
+
+&lt;p&gt;Hvis du trenger maskinell tilgang til den bakenforliggende
+teknologien kan du enten installere pakken
+&lt;a href=&quot;https://tracker.debian.org/apertium-nno-nob&quot;&gt;apertium-nno-nob&lt;/a&gt;
+pĂ¥ en Debian-maskin eller bruke web-API-et tilgjengelig fra
+api.apertium.org.  Se
+&lt;a href=&quot;http://wiki.apertium.org/wiki/Apertium-apy&quot;&gt;API-dokumentasjonen&lt;/a&gt;
+for detaljer om web-API-et.  Her kan du se hvordan resultatet blir for
+denne teksten som ble skrevet pĂ¥ bokmĂ¥l over maskinoversatt til
+nynorsk.&lt;/p&gt;
+
+&lt;hr/&gt;
+
+&lt;p&gt;I Noreg er det mange som treng Ă¥ skriva bĂ¥de bokmĂ¥l og nynorsk.
+EksamensoppgĂ¥ver, offentlege brev og nyhende er døme pĂ¥ tekster der
+det er krav om skriftsprĂ¥k.  I tillegg til alle skuleoppgĂ¥vene som
+elevar over det ganske land skal levera inn kvart Ă¥r.  Det mange ikkje
+veit er at sjølv om dei kommersielle alternativa
+&lt;a href=&quot;https://translate.google.com/&quot;&gt;Google *Translate&lt;/a&gt; og
+&lt;a href=&quot;https://www.bing.com/translator/&quot;&gt;Bing *Translator&lt;/a&gt; ikkje
+kan bidra med Ă¥ omsetja mellom bokmĂ¥l og nynorsk, sĂ¥ finst det eit
+utmerka fri programvarealternativ som kan.  Omsetjarverktøyet
+*Apertium har støtte for ei rekkje sprĂ¥kkombinasjonar, og takka vera
+den utrøyttelege innsatsen til blant anna Kevin Brubeck Unhammer, kan
+ein bruka *webtjenesten til Ă¥ fylla inn ei tekst pĂ¥ bokmĂ¥l eller
+nynorsk, og fĂ¥ den *automatoversatt til det andre skriftsprĂ¥ket.
+Resultatet er ikkje perfekt, men eit svært godt utgangspunkt.  Av og
+til er resultatet sĂ¥ bra at det kan nyttast utan endringar.  Eg veit
+t.d. at store delar av *Joomla vart omsett til nynorsk ved hjelp
+*Apertium.  Høyrast det ut som noko du kan ha bruk for?  Besøk i sĂ¥
+fall &lt;a href=&quot;https://www.apertium.org/&quot;&gt;*Apertium.org&lt;/a&gt; og fyll inn
+teksta di i *webskjemaet der.
+
+&lt;p&gt;Viss du treng *maskinell tilgjenge til den *bakenforliggende
+teknologien kan du anten installera pakken
+&lt;a href=&quot;https://tracker.debian.org/apertium-nno-nob&quot;&gt;*apertium-*nno-*nob&lt;/a&gt;
+pĂ¥ ein *Debian-maskin eller bruka *web-*API-eit tilgjengeleg frĂ¥
+*api.*apertium.org.  SjĂ¥
+&lt;a href=&quot;http://wiki.apertium.org/wiki/Apertium-apy&quot;&gt;*API-dokumentasjonen&lt;/a&gt;
+for detaljar om *web-*API-eit.  Her kan du sjĂ¥ korleis resultatet vert
+for denne teksta som vart skreva pĂ¥ bokmĂ¥l over *maskinoversatt til
+nynorsk.&lt;/p&gt;
+</description>
+       </item>
+       
+       <item>
+               <title>Coz profiler for multi-threaded software is now in Debian</title>
+               <link>http://people.skolelinux.org/pere/blog/Coz_profiler_for_multi_threaded_software_is_now_in_Debian.html</link>
+               <guid isPermaLink="true">http://people.skolelinux.org/pere/blog/Coz_profiler_for_multi_threaded_software_is_now_in_Debian.html</guid>
+                <pubDate>Sun, 13 Nov 2016 12:30:00 +0100</pubDate>
+               <description>&lt;p&gt;&lt;a href=&quot;http://coz-profiler.org/&quot;&gt;The Coz profiler&lt;/a&gt;, a nice
+profiler able to run benchmarking experiments on the instrumented
+multi-threaded program, finally
+&lt;a href=&quot;https://tracker.debian.org/pkg/coz-profiler&quot;&gt;made it into
+Debian unstable yesterday&lt;/A&gt;.  LluĂ­s Vilanova and I have spent many
+months since
+&lt;a href=&quot;http://people.skolelinux.org/pere/blog/Coz_can_help_you_find_bottlenecks_in_multi_threaded_software___nice_free_software.html&quot;&gt;I
+blogged about the coz tool&lt;/a&gt; in August working with upstream to make
+it suitable for Debian.  There are still issues with clang
+compatibility, inline assembly only working x86 and minimized
+JavaScript libraries.&lt;/p&gt;
+
+&lt;p&gt;To test it, install &#39;coz-profiler&#39; using apt and run it like this:&lt;/p&gt;
+
+&lt;p&gt;&lt;blockquote&gt;
+&lt;tt&gt;coz run --- /path/to/binary-with-debug-info&lt;/tt&gt;
+&lt;/blockquote&gt;&lt;/p&gt;
+
+&lt;p&gt;This will produce a profile.coz file in the current working
+directory with the profiling information.  This is then given to a
+JavaScript application provided in the package and available from
+&lt;a href=&quot;http://plasma-umass.github.io/coz/&quot;&gt;a project web page&lt;/a&gt;.
+To start the local copy, invoke it in a browser like this:&lt;/p&gt;
+
+&lt;p&gt;&lt;blockquote&gt;
+&lt;tt&gt;sensible-browser /usr/share/coz-profiler/viewer/index.htm&lt;/tt&gt;
+&lt;/blockquote&gt;&lt;/p&gt;
+
+&lt;p&gt;See the project home page and the
+&lt;a href=&quot;https://www.usenix.org/publications/login/summer2016/curtsinger&quot;&gt;USENIX
+;login: article on Coz&lt;/a&gt; for more information on how it is
+working.&lt;/p&gt;
+</description>
+       </item>
+       
+       <item>
+               <title>My own self balancing Lego Segway</title>
+               <link>http://people.skolelinux.org/pere/blog/My_own_self_balancing_Lego_Segway.html</link>
+               <guid isPermaLink="true">http://people.skolelinux.org/pere/blog/My_own_self_balancing_Lego_Segway.html</guid>
+                <pubDate>Fri, 4 Nov 2016 10:15:00 +0100</pubDate>
+               <description>&lt;p&gt;A while back I received a Gyro sensor for the NXT
+&lt;a href=&quot;mindstorms.lego.com&quot;&gt;Mindstorms&lt;/a&gt; controller as a birthday
+present.  It had been on my wishlist for a while, because I wanted to
+build a Segway like balancing lego robot.  I had already built
+&lt;a href=&quot;http://www.nxtprograms.com/NXT2/segway/&quot;&gt;a simple balancing
+robot&lt;/a&gt; with the kids, using the light/color sensor included in the
+NXT kit as the balance sensor, but it was not working very well.  It
+could balance for a while, but was very sensitive to the light
+condition in the room and the reflective properties of the surface and
+would fall over after a short while.  I wanted something more robust,
+and had
+&lt;a href=&quot;https://www.hitechnic.com/cgi-bin/commerce.cgi?preadd=action&amp;key=NGY1044&quot;&gt;the
+gyro sensor from HiTechnic&lt;/a&gt; I believed would solve it on my
+wishlist for some years before it suddenly showed up as a gift from my
+loved ones. :)&lt;/p&gt;
+
+&lt;p&gt;Unfortunately I have not had time to sit down and play with it
+since then.  But that changed some days ago, when I was searching for
+lego segway information and came across a recipe from HiTechnic for
+building
+&lt;a href=&quot;http://www.hitechnic.com/blog/gyro-sensor/htway/&quot;&gt;the
+HTWay&lt;/a&gt;, a segway like balancing robot.  Build instructions and
+&lt;a href=&quot;https://www.hitechnic.com/upload/786-HTWayC.nxc&quot;&gt;source
+code&lt;/a&gt; was included, so it was just a question of putting it all
+together.  And thanks to the great work of many Debian developers, the
+compiler needed to build the source for the NXT is already included in
+Debian, so I was read to go in less than an hour.  The resulting robot
+do not look very impressive in its simplicity:&lt;/p&gt;
+
+&lt;p align=&quot;center&quot;&gt;&lt;img width=&quot;70%&quot; src=&quot;http://people.skolelinux.org/pere/blog/images/2016-11-04-lego-htway-robot.jpeg&quot;&gt;&lt;/p&gt;
+
+&lt;p&gt;Because I lack the infrared sensor used to control the robot in the
+design from HiTechnic, I had to comment out the last task
+(taskControl).  I simply placed /* and */ around it get the program
+working without that sensor present.  Now it balances just fine until
+the battery status run low:&lt;/p&gt;
+
+&lt;p align=&quot;center&quot;&gt;&lt;video width=&quot;70%&quot; controls=&quot;true&quot;&gt;
+   &lt;source src=&quot;http://people.skolelinux.org/pere/blog/images/2016-11-04-lego-htway-balancing.ogv&quot; type=&quot;video/ogg&quot;&gt;
+&lt;/video&gt;&lt;/p&gt;
+
+&lt;p&gt;Now we would like to teach it how to follow a line and take remote
+control instructions using the included Bluetooth receiver in the NXT.&lt;/p&gt;
+
+&lt;p&gt;If you, like me, love LEGO and want to make sure we find the tools
+they need to work with LEGO in Debian and all our derivative
+distributions like Ubuntu, check out
+&lt;a href=&quot;http://wiki.debian.org/LegoDesigners&quot;&gt;the LEGO designers
+project page&lt;/a&gt; and join the Debian LEGO team.  Personally I own a
+RCX and NXT controller (no EV3), and would like to make sure the
+Debian tools needed to program the systems I own work as they
+should.&lt;/p&gt;
+</description>
+       </item>
+       
+       <item>
+               <title>Experience and updated recipe for using the Signal app without a mobile phone</title>
+               <link>http://people.skolelinux.org/pere/blog/Experience_and_updated_recipe_for_using_the_Signal_app_without_a_mobile_phone.html</link>
+               <guid isPermaLink="true">http://people.skolelinux.org/pere/blog/Experience_and_updated_recipe_for_using_the_Signal_app_without_a_mobile_phone.html</guid>
+                <pubDate>Mon, 10 Oct 2016 11:30:00 +0200</pubDate>
+               <description>&lt;p&gt;In July
+&lt;a href=&quot;http://people.skolelinux.org/pere/blog/How_to_use_the_Signal_app_if_you_only_have_a_land_line__ie_no_mobile_phone_.html&quot;&gt;I
+wrote how to get the Signal Chrome/Chromium app working&lt;/a&gt; without
+the ability to receive SMS messages (aka without a cell phone).  It is
+time to share some experiences and provide an updated setup.&lt;/p&gt;
+
+&lt;p&gt;The Signal app have worked fine for several months now, and I use
+it regularly to chat with my loved ones.  I had a major snag at the
+end of my summer vacation, when the the app completely forgot my
+setup, identity and keys.  The reason behind this major mess was
+running out of disk space.  To avoid that ever happening again I have
+started storing everything in &lt;tt&gt;userdata/&lt;/tt&gt; in git, to be able to
+roll back to an earlier version if the files are wiped by mistake.  I
+had to use it once after introducing the git backup.  When rolling
+back to an earlier version, one need to use the &#39;reset session&#39; option
+in Signal to get going, and notify the people you talk with about the
+problem.  I assume there is some sequence number tracking in the
+protocol to detect rollback attacks.  The git repository is rather big
+(674 MiB so far), but I have not tried to figure out if some of the
+content can be added to a .gitignore file due to lack of spare
+time.&lt;/p&gt;
+
+&lt;p&gt;I&#39;ve also hit the 90 days timeout blocking, and noticed that this
+make it impossible to send messages using Signal.  I could still
+receive them, but had to patch the code with a new timestamp to send.
+I believe the timeout is added by the developers to force people to
+upgrade to the latest version of the app, even when there is no
+protocol changes, to reduce the version skew among the user base and
+thus try to keep the number of support requests down.&lt;/p&gt;
+
+&lt;p&gt;Since my original recipe, the Signal source code changed slightly,
+making the old patch fail to apply cleanly.  Below is an updated
+patch, including the shell wrapper I use to start Signal.  The
+original version required a new user to locate the JavaScript console
+and call a function from there.  I got help from a friend with more
+JavaScript knowledge than me to modify the code to provide a GUI
+button instead.  This mean that to get started you just need to run
+the wrapper and click the &#39;Register without mobile phone&#39; to get going
+now.  I&#39;ve also modified the timeout code to always set it to 90 days
+in the future, to avoid having to patch the code regularly.&lt;/p&gt;
+
+&lt;p&gt;So, the updated recipe for Debian Jessie:&lt;/p&gt;
+
+&lt;ol&gt;
+
+&lt;li&gt;First, install required packages to get the source code and the
+browser you need.  Signal only work with Chrome/Chromium, as far as I
+know, so you need to install it.
+
+&lt;pre&gt;
+apt install git tor chromium
+git clone https://github.com/WhisperSystems/Signal-Desktop.git
+&lt;/pre&gt;&lt;/li&gt;
+
+&lt;li&gt;Modify the source code using command listed in the the patch
+block below.&lt;/li&gt;
+
+&lt;li&gt;Start Signal using the run-signal-app wrapper (for example using
+&lt;tt&gt;`pwd`/run-signal-app&lt;/tt&gt;).
+
+&lt;li&gt;Click on the &#39;Register without mobile phone&#39;, will in a phone
+number you can receive calls to the next minute, receive the
+verification code and enter it into the form field and press
+&#39;Register&#39;.  Note, the phone number you use will be user Signal
+username, ie the way others can find you on Signal.&lt;/li&gt;
+
+&lt;li&gt;You can now use Signal to contact others.  Note, new contacts do
+not show up in the contact list until you restart Signal, and there is
+no way to assign names to Contacts.  There is also no way to create or
+update chat groups.  I suspect this is because the web app do not have
+a associated contact database.&lt;/li&gt;
+
+&lt;/ol&gt;
+
+&lt;p&gt;I am still a bit uneasy about using Signal, because of the way its
+main author moxie0 reject federation and accept dependencies to major
+corporations like Google (part of the code is fetched from Google) and
+Amazon (the central coordination point is owned by Amazon).  See for
+example
+&lt;a href=&quot;https://github.com/LibreSignal/LibreSignal/issues/37&quot;&gt;the
+LibreSignal issue tracker&lt;/a&gt; for a thread documenting the authors
+view on these issues.  But the network effect is strong in this case,
+and several of the people I want to communicate with already use
+Signal.  Perhaps we can all move to &lt;a href=&quot;https://ring.cx/&quot;&gt;Ring&lt;/a&gt;
+once it &lt;a href=&quot;https://bugs.debian.org/830265&quot;&gt;work on my
+laptop&lt;/a&gt;?  It already work on Windows and Android, and is included
+in &lt;a href=&quot;https://tracker.debian.org/pkg/ring&quot;&gt;Debian&lt;/a&gt; and
+&lt;a href=&quot;https://launchpad.net/ubuntu/+source/ring&quot;&gt;Ubuntu&lt;/a&gt;, but not
+working on Debian Stable.&lt;/p&gt;
+
+&lt;p&gt;Anyway, this is the patch I apply to the Signal code to get it
+working.  It switch to the production servers, disable to timeout,
+make registration easier and add the shell wrapper:&lt;/p&gt;
+
+&lt;pre&gt;
+cd Signal-Desktop; cat &amp;lt;&amp;lt;EOF | patch -p1
+diff --git a/js/background.js b/js/background.js
+index 24b4c1d..579345f 100644
+--- a/js/background.js
++++ b/js/background.js
+@@ -33,9 +33,9 @@
+         });
+     });
+-    var SERVER_URL = &#39;https://textsecure-service-staging.whispersystems.org&#39;;
++    var SERVER_URL = &#39;https://textsecure-service-ca.whispersystems.org&#39;;
+     var SERVER_PORTS = [80, 4433, 8443];
+-    var ATTACHMENT_SERVER_URL = &#39;https://whispersystems-textsecure-attachments-staging.s3.amazonaws.com&#39;;
++    var ATTACHMENT_SERVER_URL = &#39;https://whispersystems-textsecure-attachments.s3.amazonaws.com&#39;;
+     var messageReceiver;
+     window.getSocketStatus = function() {
+         if (messageReceiver) {
+diff --git a/js/expire.js b/js/expire.js
+index 639aeae..beb91c3 100644
+--- a/js/expire.js
++++ b/js/expire.js
+@@ -1,6 +1,6 @@
+ ;(function() {
+     &#39;use strict&#39;;
+-    var BUILD_EXPIRATION = 0;
++    var BUILD_EXPIRATION = Date.now() + (90 * 24 * 60 * 60 * 1000);
+     window.extension = window.extension || {};
+diff --git a/js/views/install_view.js b/js/views/install_view.js
+index 7816f4f..1d6233b 100644
+--- a/js/views/install_view.js
++++ b/js/views/install_view.js
+@@ -38,7 +38,8 @@
+             return {
+                 &#39;click .step1&#39;: this.selectStep.bind(this, 1),
+                 &#39;click .step2&#39;: this.selectStep.bind(this, 2),
+-                &#39;click .step3&#39;: this.selectStep.bind(this, 3)
++                &#39;click .step3&#39;: this.selectStep.bind(this, 3),
++                &#39;click .callreg&#39;: function() { extension.install(&#39;standalone&#39;) },
+             };
+         },
+         clearQR: function() {
+diff --git a/options.html b/options.html
+index dc0f28e..8d709f6 100644
+--- a/options.html
++++ b/options.html
+@@ -14,7 +14,10 @@
+         &amp;lt;div class=&#39;nav&#39;&gt;
+           &amp;lt;h1&gt;{{ installWelcome }}&amp;lt;/h1&gt;
+           &amp;lt;p&gt;{{ installTagline }}&amp;lt;/p&gt;
+-          &amp;lt;div&gt; &amp;lt;a class=&#39;button step2&#39;&gt;{{ installGetStartedButton }}&amp;lt;/a&gt; &amp;lt;/div&gt;
++          &amp;lt;div&gt; &amp;lt;a class=&#39;button step2&#39;&gt;{{ installGetStartedButton }}&amp;lt;/a&gt;
++          &amp;lt;br&gt; &amp;lt;a class=&quot;button callreg&quot;&gt;Register without mobile phone&amp;lt;/a&gt;
++
++        &amp;lt;/div&gt;
+           &amp;lt;span class=&#39;dot step1 selected&#39;&gt;&amp;lt;/span&gt;
+           &amp;lt;span class=&#39;dot step2&#39;&gt;&amp;lt;/span&gt;
+           &amp;lt;span class=&#39;dot step3&#39;&gt;&amp;lt;/span&gt;
+--- /dev/null   2016-10-07 09:55:13.730181472 +0200
++++ b/run-signal-app   2016-10-10 08:54:09.434172391 +0200
+@@ -0,0 +1,12 @@
++#!/bin/sh
++set -e
++cd $(dirname $0)
++mkdir -p userdata
++userdata=&quot;`pwd`/userdata&quot;
++if [ -d &quot;$userdata&quot; ] &amp;&amp; [ ! -d &quot;$userdata/.git&quot; ] ; then
++    (cd $userdata &amp;&amp; git init)
++fi
++(cd $userdata &amp;&amp; git add . &amp;&amp; git commit -m &quot;Current status.&quot; || true)
++exec chromium \
++  --proxy-server=&quot;socks://localhost:9050&quot; \
++  --user-data-dir=$userdata --load-and-launch-app=`pwd`
+EOF
+chmod a+rx run-signal-app
+&lt;/pre&gt;
+
+&lt;p&gt;As usual, if you use Bitcoin and want to show your support of my
+activities, please send Bitcoin donations to my address
+&lt;b&gt;&lt;a href=&quot;bitcoin:15oWEoG9dUPovwmUL9KWAnYRtNJEkP1u1b&quot;&gt;15oWEoG9dUPovwmUL9KWAnYRtNJEkP1u1b&lt;/a&gt;&lt;/b&gt;.&lt;/p&gt;
+</description>
+       </item>
+       
+       <item>
+               <title>Isenkram, Appstream and udev make life as a LEGO builder easier</title>
+               <link>http://people.skolelinux.org/pere/blog/Isenkram__Appstream_and_udev_make_life_as_a_LEGO_builder_easier.html</link>
+               <guid isPermaLink="true">http://people.skolelinux.org/pere/blog/Isenkram__Appstream_and_udev_make_life_as_a_LEGO_builder_easier.html</guid>
+                <pubDate>Fri, 7 Oct 2016 09:50:00 +0200</pubDate>
+               <description>&lt;p&gt;&lt;a href=&quot;http://packages.qa.debian.org/isenkram&quot;&gt;The Isenkram
+system&lt;/a&gt; provide a practical and easy way to figure out which
+packages support the hardware in a given machine.  The command line
+tool &lt;tt&gt;isenkram-lookup&lt;/tt&gt; and the tasksel options provide a
+convenient way to list and install packages relevant for the current
+hardware during system installation, both user space packages and
+firmware packages. The GUI background daemon on the other hand provide
+a pop-up proposing to install packages when a new dongle is inserted
+while using the computer.  For example, if you plug in a smart card
+reader, the system will ask if you want to install &lt;tt&gt;pcscd&lt;/tt&gt; if
+that package isn&#39;t already installed, and if you plug in a USB video
+camera the system will ask if you want to install &lt;tt&gt;cheese&lt;/tt&gt; if
+cheese is currently missing.  This already work just fine.&lt;/p&gt;
+
+&lt;p&gt;But Isenkram depend on a database mapping from hardware IDs to
+package names.  When I started no such database existed in Debian, so
+I made my own data set and included it with the isenkram package and
+made isenkram fetch the latest version of this database from git using
+http.  This way the isenkram users would get updated package proposals
+as soon as I learned more about hardware related packages.&lt;/p&gt;
+
+&lt;p&gt;The hardware is identified using modalias strings.  The modalias
+design is from the Linux kernel where most hardware descriptors are
+made available as a strings that can be matched using filename style
+globbing.  It handle USB, PCI, DMI and a lot of other hardware related
+identifiers.&lt;/p&gt;
+
+&lt;p&gt;The downside to the Isenkram specific database is that there is no
+information about relevant distribution / Debian version, making
+isenkram propose obsolete packages too.  But along came AppStream, a
+cross distribution mechanism to store and collect metadata about
+software packages.  When I heard about the proposal, I contacted the
+people involved and suggested to add a hardware matching rule using
+modalias strings in the specification, to be able to use AppStream for
+mapping hardware to packages.  This idea was accepted and AppStream is
+now a great way for a package to announce the hardware it support in a
+distribution neutral way.  I wrote
+&lt;a href=&quot;http://people.skolelinux.org/pere/blog/Using_appstream_with_isenkram_to_install_hardware_related_packages_in_Debian.html&quot;&gt;a
+recipe on how to add such meta-information&lt;/a&gt; in a blog post last
+December.  If you have a hardware related package in Debian, please
+announce the relevant hardware IDs using AppStream.&lt;/p&gt;
+
+&lt;p&gt;In Debian, almost all packages that can talk to a LEGO Mindestorms
+RCX or NXT unit, announce this support using AppStream.  The effect is
+that when you insert such LEGO robot controller into your Debian
+machine, Isenkram will propose to install the packages needed to get
+it working.  The intention is that this should allow the local user to
+start programming his robot controller right away without having to
+guess what packages to use or which permissions to fix.&lt;/p&gt;
+
+&lt;p&gt;But when I sat down with my son the other day to program our NXT
+unit using his Debian Stretch computer, I discovered something
+annoying.  The local console user (ie my son) did not get access to
+the USB device for programming the unit.  This used to work, but no
+longer in Jessie and Stretch.  After some investigation and asking
+around on #debian-devel, I discovered that this was because udev had
+changed the mechanism used to grant access to local devices.  The
+ConsoleKit mechanism from &lt;tt&gt;/lib/udev/rules.d/70-udev-acl.rules&lt;/tt&gt;
+no longer applied, because LDAP users no longer was added to the
+plugdev group during login.  Michael Biebl told me that this method
+was obsolete and the new method used ACLs instead.  This was good
+news, as the plugdev mechanism is a mess when using a remote user
+directory like LDAP.  Using ACLs would make sure a user lost device
+access when she logged out, even if the user left behind a background
+process which would retain the plugdev membership with the ConsoleKit
+setup.  Armed with this knowledge I moved on to fix the access problem
+for the LEGO Mindstorms related packages.&lt;/p&gt;
+
+&lt;p&gt;The new system uses a udev tag, &#39;uaccess&#39;.  It can either be
+applied directly for a device, or is applied in
+/lib/udev/rules.d/70-uaccess.rules for classes of devices.  As the
+LEGO Mindstorms udev rules did not have a class, I decided to add the
+tag directly in the udev rules files included in the packages.  Here
+is one example.  For the nqc C compiler for the RCX, the
+&lt;tt&gt;/lib/udev/rules.d/60-nqc.rules&lt;/tt&gt; file now look like this:
+
+&lt;p&gt;&lt;pre&gt;
+SUBSYSTEM==&quot;usb&quot;, ACTION==&quot;add&quot;, ATTR{idVendor}==&quot;0694&quot;, ATTR{idProduct}==&quot;0001&quot;, \
+    SYMLINK+=&quot;rcx-%k&quot;, TAG+=&quot;uaccess&quot;
+&lt;/pre&gt;&lt;/p&gt;
+
+&lt;p&gt;The key part is the &#39;TAG+=&quot;uaccess&quot;&#39; at the end.  I suspect all
+packages using plugdev in their /lib/udev/rules.d/ files should be
+changed to use this tag (either directly or indirectly via
+&lt;tt&gt;70-uaccess.rules&lt;/tt&gt;).  Perhaps a lintian check should be created
+to detect this?&lt;/p&gt;
+
+&lt;p&gt;I&#39;ve been unable to find good documentation on the uaccess feature.
+It is unclear to me if the uaccess tag is an internal implementation
+detail like the udev-acl tag used by
+&lt;tt&gt;/lib/udev/rules.d/70-udev-acl.rules&lt;/tt&gt;.  If it is, I guess the
+indirect method is the preferred way.  Michael
+&lt;a href=&quot;https://github.com/systemd/systemd/issues/4288&quot;&gt;asked for more
+documentation from the systemd project&lt;/a&gt; and I hope it will make
+this clearer.  For now I use the generic classes when they exist and
+is already handled by &lt;tt&gt;70-uaccess.rules&lt;/tt&gt;, and add the tag
+directly if no such class exist.&lt;/p&gt;
+
+&lt;p&gt;To learn more about the isenkram system, please check out
+&lt;a href=&quot;http://people.skolelinux.org/pere/blog/tags/isenkram/&quot;&gt;my
+blog posts tagged isenkram&lt;/a&gt;.&lt;/p&gt;
+
+&lt;p&gt;To help out making life for LEGO constructors in Debian easier,
+please join us on our IRC channel
+&lt;a href=&quot;irc://irc.debian.org/%23debian-lego&quot;&gt;#debian-lego&lt;/a&gt; and join
+the &lt;a href=&quot;https://alioth.debian.org/projects/debian-lego/&quot;&gt;Debian
+LEGO team&lt;/a&gt; in the Alioth project we created yesterday.  A mailing
+list is not yet created, but we are working on it. :)&lt;/p&gt;
+
+&lt;p&gt;As usual, if you use Bitcoin and want to show your support of my
+activities, please send Bitcoin donations to my address
+&lt;b&gt;&lt;a href=&quot;bitcoin:15oWEoG9dUPovwmUL9KWAnYRtNJEkP1u1b&quot;&gt;15oWEoG9dUPovwmUL9KWAnYRtNJEkP1u1b&lt;/a&gt;&lt;/b&gt;.&lt;/p&gt;
+</description>
+       </item>
+       
+       <item>
+               <title>First draft Norwegian BokmĂ¥l edition of The Debian Administrator&#39;s Handbook now public</title>
+               <link>http://people.skolelinux.org/pere/blog/First_draft_Norwegian_Bokm_l_edition_of_The_Debian_Administrator_s_Handbook_now_public.html</link>
+               <guid isPermaLink="true">http://people.skolelinux.org/pere/blog/First_draft_Norwegian_Bokm_l_edition_of_The_Debian_Administrator_s_Handbook_now_public.html</guid>
+                <pubDate>Tue, 30 Aug 2016 10:10:00 +0200</pubDate>
+               <description>&lt;p&gt;In April we
+&lt;a href=&quot;http://people.skolelinux.org/pere/blog/Lets_make_a_Norwegian_Bokm_l_edition_of_The_Debian_Administrator_s_Handbook.html&quot;&gt;started
+to work&lt;/a&gt; on a Norwegian BokmĂ¥l edition of the &quot;open access&quot; book on
+how to set up and administrate a Debian system.  Today I am happy to
+report that the first draft is now publicly available.  You can find
+it on &lt;a href=&quot;https://debian-handbook.info/get/&quot;&gt;get the Debian
+Administrator&#39;s Handbook page&lt;/a&gt; (under Other languages).  The first
+eight chapters have a first draft translation, and we are working on
+proofreading the content.  If you want to help out, please start
+contributing using
+&lt;a href=&quot;https://hosted.weblate.org/projects/debian-handbook/&quot;&gt;the
+hosted weblate project page&lt;/a&gt;, and get in touch using
+&lt;a href=&quot;http://lists.alioth.debian.org/mailman/listinfo/debian-handbook-translators&quot;&gt;the
+translators mailing list&lt;/a&gt;.  Please also check out
+&lt;a href=&quot;https://debian-handbook.info/contribute/&quot;&gt;the instructions for
+contributors&lt;/a&gt;.  A good way to contribute is to proofread the text
+and update weblate if you find errors.&lt;/p&gt;
+
+&lt;p&gt;Our goal is still to make the Norwegian book available on paper as well as
+electronic form.&lt;/p&gt;
+</description>
+       </item>
+       
+       <item>
+               <title>Coz can help you find bottlenecks in multi-threaded software - nice free software</title>
+               <link>http://people.skolelinux.org/pere/blog/Coz_can_help_you_find_bottlenecks_in_multi_threaded_software___nice_free_software.html</link>
+               <guid isPermaLink="true">http://people.skolelinux.org/pere/blog/Coz_can_help_you_find_bottlenecks_in_multi_threaded_software___nice_free_software.html</guid>
+                <pubDate>Thu, 11 Aug 2016 12:00:00 +0200</pubDate>
+               <description>&lt;p&gt;This summer, I read a great article
+&quot;&lt;a href=&quot;https://www.usenix.org/publications/login/summer2016/curtsinger&quot;&gt;coz:
+This Is the Profiler You&#39;re Looking For&lt;/a&gt;&quot; in USENIX ;login: about
+how to profile multi-threaded programs.  It presented a system for
+profiling software by running experiences in the running program,
+testing how run time performance is affected by &quot;speeding up&quot; parts of
+the code to various degrees compared to a normal run.  It does this by
+slowing down parallel threads while the &quot;faster up&quot; code is running
+and measure how this affect processing time.  The processing time is
+measured using probes inserted into the code, either using progress
+counters (COZ_PROGRESS) or as latency meters (COZ_BEGIN/COZ_END).  It
+can also measure unmodified code by measuring complete the program
+runtime and running the program several times instead.&lt;/p&gt;
+
+&lt;p&gt;The project and presentation was so inspiring that I would like to
+get the system into Debian.  I
+&lt;a href=&quot;https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=830708&quot;&gt;created
+a WNPP request for it&lt;/a&gt; and contacted upstream to try to make the
+system ready for Debian by sending patches.  The build process need to
+be changed a bit to avoid running &#39;git clone&#39; to get dependencies, and
+to include the JavaScript web page used to visualize the collected
+profiling information included in the source package.
+But I expect that should work out fairly soon.&lt;/p&gt;
+
+&lt;p&gt;The way the system work is fairly simple.  To run an coz experiment
+on a binary with debug symbols available, start the program like this:
+
+&lt;p&gt;&lt;blockquote&gt;&lt;pre&gt;
+coz run --- program-to-run
+&lt;/pre&gt;&lt;/blockquote&gt;&lt;/p&gt;
+
+&lt;p&gt;This will create a text file profile.coz with the instrumentation
+information.  To show what part of the code affect the performance
+most, use a web browser and either point it to
+&lt;a href=&quot;http://plasma-umass.github.io/coz/&quot;&gt;http://plasma-umass.github.io/coz/&lt;/a&gt;
+or use the copy from git (in the gh-pages branch).  Check out this web
+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
+profiling more useful you include &amp;lt;coz.h&amp;gt; and insert the
+COZ_PROGRESS or COZ_BEGIN and COZ_END at appropriate places in the
+code, rebuild and run the profiler.  This allow coz to do more
+targeted experiments.&lt;/p&gt;
+
+&lt;p&gt;A video published by ACM
+&lt;a href=&quot;https://www.youtube.com/watch?v=jE0V-p1odPg&quot;&gt;presenting the
+Coz profiler&lt;/a&gt; is available from Youtube.  There is also a paper
+from the 25th Symposium on Operating Systems Principles available
+titled
+&lt;a href=&quot;https://www.usenix.org/conference/atc16/technical-sessions/presentation/curtsinger&quot;&gt;Coz:
+finding code that counts with causal profiling&lt;/a&gt;.&lt;/p&gt;
+
+&lt;p&gt;&lt;a href=&quot;https://github.com/plasma-umass/coz&quot;&gt;The source code&lt;/a&gt;
+for Coz is available from github.  It will only build with clang
+because it uses a
+&lt;a href=&quot;https://gcc.gnu.org/bugzilla/show_bug.cgi?id=55606&quot;&gt;C++
+feature missing in GCC&lt;/a&gt;, but I&#39;ve submitted
+&lt;a href=&quot;https://github.com/plasma-umass/coz/pull/67&quot;&gt;a patch to solve
+it&lt;/a&gt; and hope it will be included in the upstream source soon.&lt;/p&gt;
+
+&lt;p&gt;Please get in touch if you, like me, would like to see this piece
+of software in Debian.  I would very much like some help with the
+packaging effort, as I lack the in depth knowledge on how to package
+C++ libraries.&lt;/p&gt;
+</description>
+       </item>
+       
+       <item>
+               <title>Unlocking HTC Desire HD on Linux using unruu and fastboot</title>
+               <link>http://people.skolelinux.org/pere/blog/Unlocking_HTC_Desire_HD_on_Linux_using_unruu_and_fastboot.html</link>
+               <guid isPermaLink="true">http://people.skolelinux.org/pere/blog/Unlocking_HTC_Desire_HD_on_Linux_using_unruu_and_fastboot.html</guid>
+                <pubDate>Thu, 7 Jul 2016 11:30:00 +0200</pubDate>
+               <description>&lt;p&gt;Yesterday, I tried to unlock a HTC Desire HD phone, and it proved
+to be a slight challenge.  Here is the recipe if I ever need to do it
+again.  It all started by me wanting to try the recipe to set up
+&lt;a href=&quot;https://blog.torproject.org/blog/mission-impossible-hardening-android-security-and-privacy&quot;&gt;an
+hardened Android installation&lt;/a&gt; from the Tor project blog on a
+device I had access to.  It is a old mobile phone with a broken
+microphone The initial idea had been to just
+&lt;a href=&quot;http://wiki.cyanogenmod.org/w/Install_CM_for_ace&quot;&gt;install
+CyanogenMod on it&lt;/a&gt;, but did not quite find time to start on it
+until a few days ago.&lt;/p&gt;
+
+&lt;p&gt;The unlock process is supposed to be simple: (1) Boot into the boot
+loader (press volume down and power at the same time), (2) select
+&#39;fastboot&#39; before (3) connecting the device via USB to a Linux
+machine, (4) request the device identifier token by running &#39;fastboot
+oem get_identifier_token&#39;, (5) request the device unlocking key using
+the &lt;a href=&quot;http://www.htcdev.com/bootloader/&quot;&gt;HTC developer web
+site&lt;/a&gt; and unlock the phone using the key file emailed to you.&lt;/p&gt;
+
+&lt;p&gt;Unfortunately, this only work fi you have hboot version 2.00.0029
+or newer, and the device I was working on had 2.00.0027.  This
+apparently can be easily fixed by downloading a Windows program and
+running it on your Windows machine, if you accept the terms Microsoft
+require you to accept to use Windows - which I do not.  So I had to
+come up with a different approach.  I got a lot of help from AndyCap
+on #nuug, and would not have been able to get this working without
+him.&lt;/p&gt;
+
+&lt;p&gt;First I needed to extract the hboot firmware from
+&lt;a href=&quot;http://www.htcdev.com/ruu/PD9810000_Ace_Sense30_S_hboot_2.00.0029.exe&quot;&gt;the
+windows binary for HTC Desire HD&lt;/a&gt; downloaded as &#39;the RUU&#39; from HTC.
+For this there is is &lt;a href=&quot;https://github.com/kmdm/unruu/&quot;&gt;a github
+project named unruu&lt;/a&gt; using libunshield.  The unshield tool did not
+recognise the file format, but unruu worked and extracted rom.zip,
+containing the new hboot firmware and a text file describing which
+devices it would work for.&lt;/p&gt;
+
+&lt;p&gt;Next, I needed to get the new firmware into the device.  For this I
+followed some instructions
+&lt;a href=&quot;http://www.htc1guru.com/2013/09/new-ruu-zips-posted/&quot;&gt;available
+from HTC1Guru.com&lt;/a&gt;, and ran these commands as root on a Linux
+machine with Debian testing:&lt;/p&gt;
+
+&lt;p&gt;&lt;pre&gt;
+adb reboot-bootloader
+fastboot oem rebootRUU
+fastboot flash zip rom.zip
+fastboot flash zip rom.zip
+fastboot reboot
+&lt;/pre&gt;&lt;/p&gt;
+
+&lt;p&gt;The flash command apparently need to be done twice to take effect,
+as the first is just preparations and the second one do the flashing.
+The adb command is just to get to the boot loader menu, so turning the
+device on while holding volume down and the power button should work
+too.&lt;/p&gt;
+
+&lt;p&gt;With the new hboot version in place I could start following the
+instructions on the HTC developer web site.  I got the device token
+like this:&lt;/p&gt;
+
+&lt;p&gt;&lt;pre&gt;
+fastboot oem get_identifier_token 2&gt;&amp;1 | sed &#39;s/(bootloader) //&#39;
+&lt;/pre&gt;
+
+&lt;p&gt;And once I got the unlock code via email, I could use it like
+this:&lt;/p&gt;
+
+&lt;p&gt;&lt;pre&gt;
+fastboot flash unlocktoken Unlock_code.bin
+&lt;/pre&gt;&lt;/p&gt;
+
+&lt;p&gt;And with that final step in place, the phone was unlocked and I
+could start stuffing the software of my own choosing into the device.
+So far I only inserted a replacement recovery image to wipe the phone
+before I start.  We will see what happen next.  Perhaps I should
+install &lt;a href=&quot;https://www.debian.org/&quot;&gt;Debian&lt;/a&gt; on it. :)&lt;/p&gt;
+</description>
+       </item>
+       
+       <item>
+               <title>How to use the Signal app if you only have a land line (ie no mobile phone)</title>
+               <link>http://people.skolelinux.org/pere/blog/How_to_use_the_Signal_app_if_you_only_have_a_land_line__ie_no_mobile_phone_.html</link>
+               <guid isPermaLink="true">http://people.skolelinux.org/pere/blog/How_to_use_the_Signal_app_if_you_only_have_a_land_line__ie_no_mobile_phone_.html</guid>
+                <pubDate>Sun, 3 Jul 2016 14:20:00 +0200</pubDate>
+               <description>&lt;p&gt;For a while now, I have wanted to test
+&lt;a href=&quot;https://whispersystems.org/&quot;&gt;the Signal app&lt;/a&gt;, as it is
+said to provide end to end encrypted communication and several of my
+friends and family are already using it.  As I by choice do not own a
+mobile phone, this proved to be harder than expected.  And I wanted to
+have the source of the client and know that it was the code used on my
+machine.  But yesterday I managed to get it working.  I used the
+Github source, compared it to the source in
+&lt;a href=&quot;https://chrome.google.com/webstore/detail/signal-private-messenger/bikioccmkafdpakkkcpdbppfkghcmihk?hl=en-US&quot;&gt;the
+Signal Chrome app&lt;/a&gt; available from the Chrome web store, applied
+patches to use the production Signal servers, started the app and
+asked for the hidden &quot;register without a smart phone&quot; form.  Here is
+the recipe how I did it.&lt;/p&gt;
+
+&lt;p&gt;First, I fetched the Signal desktop source from Github, using
+
+&lt;pre&gt;
+git clone https://github.com/WhisperSystems/Signal-Desktop.git
+&lt;/pre&gt;
+
+&lt;p&gt;Next, I patched the source to use the production servers, to be
+able to talk to other Signal users:&lt;/p&gt;
+
+&lt;pre&gt;
+cat &amp;lt;&amp;lt;EOF | patch -p0
+diff -ur ./js/background.js userdata/Default/Extensions/bikioccmkafdpakkkcpdbppfkghcmihk/0.15.0_0/js/background.js
+--- ./js/background.js  2016-06-29 13:43:15.630344628 +0200
++++ userdata/Default/Extensions/bikioccmkafdpakkkcpdbppfkghcmihk/0.15.0_0/js/background.js    2016-06-29 14:06:29.530300934 +0200
+@@ -47,8 +47,8 @@
+         });
+     });
+-    var SERVER_URL = &#39;https://textsecure-service-staging.whispersystems.org&#39;;
+-    var ATTACHMENT_SERVER_URL = &#39;https://whispersystems-textsecure-attachments-staging.s3.amazonaws.com&#39;;
++    var SERVER_URL = &#39;https://textsecure-service-ca.whispersystems.org:4433&#39;;
++    var ATTACHMENT_SERVER_URL = &#39;https://whispersystems-textsecure-attachments.s3.amazonaws.com&#39;;
+     var messageReceiver;
+     window.getSocketStatus = function() {
+         if (messageReceiver) {
+diff -ur ./js/expire.js userdata/Default/Extensions/bikioccmkafdpakkkcpdbppfkghcmihk/0.15.0_0/js/expire.js
+--- ./js/expire.js      2016-06-29 13:43:15.630344628 +0200
++++ userdata/Default/Extensions/bikioccmkafdpakkkcpdbppfkghcmihk/0.15.0_0/js/expire.js2016-06-29 14:06:29.530300934 +0200
+@@ -1,6 +1,6 @@
+ ;(function() {
+     &#39;use strict&#39;;
+-    var BUILD_EXPIRATION = 0;
++    var BUILD_EXPIRATION = 1474492690000;
+     window.extension = window.extension || {};
+EOF
+&lt;/pre&gt;
+
+&lt;p&gt;The first part is changing the servers, and the second is updating
+an expiration timestamp.  This timestamp need to be updated regularly.
+It is set 90 days in the future by the build process (Gruntfile.js).
+The value is seconds since 1970 times 1000, as far as I can tell.&lt;/p&gt;
+
+&lt;p&gt;Based on a tip and good help from the #nuug IRC channel, I wrote a
+script to launch Signal in Chromium.&lt;/p&gt;
+
+&lt;pre&gt;
+#!/bin/sh
+cd $(dirname $0)
+mkdir -p userdata
+exec chromium \
+  --proxy-server=&quot;socks://localhost:9050&quot; \
+  --user-data-dir=`pwd`/userdata --load-and-launch-app=`pwd`
+&lt;/pre&gt;
+
+&lt;p&gt; The script start the app and configure Chromium to use the Tor
+SOCKS5 proxy to make sure those controlling the Signal servers (today
+Amazon and Whisper Systems) as well as those listening on the lines
+will have a harder time location my laptop based on the Signal
+connections if they use source IP address.&lt;/p&gt;
+
+&lt;p&gt;When the script starts, one need to follow the instructions under
+&quot;Standalone Registration&quot; in the CONTRIBUTING.md file in the git
+repository.  I right clicked on the Signal window to get up the
+Chromium debugging tool, visited the &#39;Console&#39; tab and wrote
+&#39;extension.install(&quot;standalone&quot;)&#39; on the console prompt to get the
+registration form.  Then I entered by land line phone number and
+pressed &#39;Call&#39;.  5 seconds later the phone rang and a robot voice
+repeated the verification code three times.  After entering the number
+into the verification code field in the form, I could start using
+Signal from my laptop.
+
+&lt;p&gt;As far as I can tell, The Signal app will leak who is talking to
+whom and thus who know who to those controlling the central server,
+but such leakage is hard to avoid with a centrally controlled server
+setup.  It is something to keep in mind when using Signal - the
+content of your chats are harder to intercept, but the meta data
+exposing your contact network is available to people you do not know.
+So better than many options, but not great.  And sadly the usage is
+connected to my land line, thus allowing those controlling the server
+to associate it to my home and person.  I would prefer it if only
+those I knew could tell who I was on Signal.  There are options
+avoiding such information leakage, but most of my friends are not
+using them, so I am stuck with Signal for now.&lt;/p&gt;
+
+&lt;p&gt;&lt;strong&gt;Update 2017-01-10&lt;/strong&gt;: There is an updated blog post
+on this topic in
+&lt;a href=&quot;http://people.skolelinux.org/pere/blog/Experience_and_updated_recipe_for_using_the_Signal_app_without_a_mobile_phone.html&quot;&gt;Experience
+and updated recipe for using the Signal app without a mobile
+phone&lt;/a&gt;.&lt;/p&gt;
+</description>
+       </item>
+       
+       <item>
+               <title>The new &quot;best&quot; multimedia player in Debian?</title>
+               <link>http://people.skolelinux.org/pere/blog/The_new__best__multimedia_player_in_Debian_.html</link>
+               <guid isPermaLink="true">http://people.skolelinux.org/pere/blog/The_new__best__multimedia_player_in_Debian_.html</guid>
+                <pubDate>Mon, 6 Jun 2016 12:50:00 +0200</pubDate>
+               <description>&lt;p&gt;When I set out a few weeks ago to figure out
+&lt;a href=&quot;http://people.skolelinux.org/pere/blog/What_is_the_best_multimedia_player_in_Debian_.html&quot;&gt;which
+multimedia player in Debian claimed to support most file formats /
+MIME types&lt;/a&gt;, I was a bit surprised how varied the sets of MIME types
+the various players claimed support for.  The range was from 55 to 130
+MIME types.  I suspect most media formats are supported by all
+players, but this is not really reflected in the MimeTypes values in
+their desktop files.  There are probably also some bogus MIME types
+listed, but it is hard to identify which one this is.&lt;/p&gt;
+
+&lt;p&gt;Anyway, in the mean time I got in touch with upstream for some of
+the players suggesting to add more MIME types to their desktop files,
+and decided to spend some time myself improving the situation for my
+favorite media player VLC.  The fixes for VLC entered Debian unstable
+yesterday. The complete list of MIME types can be seen on the
+&lt;a href=&quot;https://wiki.debian.org/DebianMultimedia/PlayerSupport&quot;&gt;Multimedia
+player MIME type support status&lt;/a&gt; Debian wiki page.&lt;/p&gt;
+
+&lt;p&gt;The new &quot;best&quot; multimedia player in Debian?  It is VLC, followed by
+totem, parole, kplayer, gnome-mpv, mpv, smplayer, mplayer-gui and
+kmplayer.  I am sure some of the other players desktop files support
+several of the formats currently listed as working only with vlc,
+toten and parole.&lt;/p&gt;
+
+&lt;p&gt;A sad observation is that only 14 MIME types are listed as
+supported by all the tested multimedia players in Debian in their
+desktop files: audio/mpeg, audio/vnd.rn-realaudio, audio/x-mpegurl,
+audio/x-ms-wma, audio/x-scpls, audio/x-wav, video/mp4, video/mpeg,
+video/quicktime, video/vnd.rn-realvideo, video/x-matroska,
+video/x-ms-asf, video/x-ms-wmv and video/x-msvideo.  Personally I find
+it sad that video/ogg and video/webm is not supported by all the media
+players in Debian.  As far as I can tell, all of them can handle both
+formats.&lt;/p&gt;
+</description>
+       </item>
+       
+       <item>
+               <title>A program should be able to open its own files on Linux</title>
+               <link>http://people.skolelinux.org/pere/blog/A_program_should_be_able_to_open_its_own_files_on_Linux.html</link>
+               <guid isPermaLink="true">http://people.skolelinux.org/pere/blog/A_program_should_be_able_to_open_its_own_files_on_Linux.html</guid>
+                <pubDate>Sun, 5 Jun 2016 08:30:00 +0200</pubDate>
+               <description>&lt;p&gt;Many years ago, when koffice was fresh and with few users, I
+decided to test its presentation tool when making the slides for a
+talk I was giving for NUUG on Japhar, a free Java virtual machine.  I
+wrote the first draft of the slides, saved the result and went to bed
+the day before I would give the talk.  The next day I took a plane to
+the location where the meeting should take place, and on the plane I
+started up koffice again to polish the talk a bit, only to discover
+that kpresenter refused to load its own data file.  I cursed a bit and
+started making the slides again from memory, to have something to
+present when I arrived.  I tested that the saved files could be
+loaded, and the day seemed to be rescued.  I continued to polish the
+slides until I suddenly discovered that the saved file could no longer
+be loaded into kpresenter.  In the end I had to rewrite the slides
+three times, condensing the content until the talk became shorter and
+shorter.  After the talk I was able to pinpoint the problem &amp;ndash;
+kpresenter wrote inline images in a way itself could not understand.
+Eventually that bug was fixed and kpresenter ended up being a great
+program to make slides.  The point I&#39;m trying to make is that we
+expect a program to be able to load its own data files, and it is
+embarrassing to its developers if it can&#39;t.&lt;/p&gt;
+
+&lt;p&gt;Did you ever experience a program failing to load its own data
+files from the desktop file browser?  It is not a uncommon problem.  A
+while back I discovered that the screencast recorder
+gtk-recordmydesktop would save an Ogg Theora video file the KDE file
+browser would refuse to open.  No video player claimed to understand
+such file.  I tracked down the cause being &lt;tt&gt;file --mime-type&lt;/tt&gt;
+returning the application/ogg MIME type, which no video player I had
+installed listed as a MIME type they would understand.  I asked for
+&lt;a href=&quot;http://bugs.gw.com/view.php?id=382&quot;&gt;file to change its
+behavour&lt;/a&gt; and use the MIME type video/ogg instead.  I also asked
+several video players to add video/ogg to their desktop files, to give
+the file browser an idea what to do about Ogg Theora files.  After a
+while, the desktop file browsers in Debian started to handle the
+output from gtk-recordmydesktop properly.&lt;/p&gt;
+
+&lt;p&gt;But history repeats itself.  A few days ago I tested the music
+system Rosegarden again, and I discovered that the KDE and xfce file
+browsers did not know what to do with the Rosegarden project files
+(*.rg).  I&#39;ve reported &lt;a href=&quot;http://bugs.debian.org/825993&quot;&gt;the
+rosegarden problem to BTS&lt;/a&gt; and a fix is commited to git and will be
+included in the next upload.  To increase the chance of me remembering
+how to fix the problem next time some program fail to load its files
+from the file browser, here are some notes on how to fix it.&lt;/p&gt;
+
+&lt;p&gt;The file browsers in Debian in general operates on MIME types.
+There are two sources for the MIME type of a given file.  The output from
+&lt;tt&gt;file --mime-type&lt;/tt&gt; mentioned above, and the content of the
+shared MIME type registry (under /usr/share/mime/).  The file MIME
+type is mapped to programs supporting the MIME type, and this
+information is collected from
+&lt;a href=&quot;https://www.freedesktop.org/wiki/Specifications/desktop-entry-spec/&quot;&gt;the
+desktop files&lt;/a&gt; available in /usr/share/applications/.  If there is
+one desktop file claiming support for the MIME type of the file, it is
+activated when asking to open a given file.  If there are more, one
+can normally select which one to use by right-clicking on the file and
+selecting the wanted one using &#39;Open with&#39; or similar.  In general
+this work well.  But it depend on each program picking a good MIME
+type (preferably
+&lt;a href=&quot;http://www.iana.org/assignments/media-types/media-types.xhtml&quot;&gt;a
+MIME type registered with IANA&lt;/a&gt;), file and/or the shared MIME
+registry recognizing the file and the desktop file to list the MIME
+type in its list of supported MIME types.&lt;/p&gt;
+
+&lt;p&gt;The &lt;tt&gt;/usr/share/mime/packages/rosegarden.xml&lt;/tt&gt; entry for
+&lt;a href=&quot;http://www.freedesktop.org/wiki/Specifications/shared-mime-info-spec&quot;&gt;the
+Shared MIME database&lt;/a&gt; look like this:&lt;/p&gt;
+
+&lt;p&gt;&lt;blockquote&gt;&lt;pre&gt;
+&amp;lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot;?&amp;gt;
+&amp;lt;mime-info xmlns=&quot;http://www.freedesktop.org/standards/shared-mime-info&quot;&amp;gt;
+  &amp;lt;mime-type type=&quot;audio/x-rosegarden&quot;&amp;gt;
+    &amp;lt;sub-class-of type=&quot;application/x-gzip&quot;/&amp;gt;
+    &amp;lt;comment&amp;gt;Rosegarden project file&amp;lt;/comment&amp;gt;
+    &amp;lt;glob pattern=&quot;*.rg&quot;/&amp;gt;
+  &amp;lt;/mime-type&amp;gt;
+&amp;lt;/mime-info&amp;gt;
+&lt;/pre&gt;&lt;/blockquote&gt;&lt;/p&gt;
+
+&lt;p&gt;This states that audio/x-rosegarden is a kind of application/x-gzip
+(it is a gzipped XML file).  Note, it is much better to use an
+official MIME type registered with IANA than it is to make up ones own
+unofficial ones like the x-rosegarden type used by rosegarden.&lt;/p&gt;
+
+&lt;p&gt;The desktop file of the rosegarden program failed to list
+audio/x-rosegarden in its list of supported MIME types, causing the
+file browsers to have no idea what to do with *.rg files:&lt;/p&gt;
+
+&lt;p&gt;&lt;blockquote&gt;&lt;pre&gt;
+% grep Mime /usr/share/applications/rosegarden.desktop
+MimeType=audio/x-rosegarden-composition;audio/x-rosegarden-device;audio/x-rosegarden-project;audio/x-rosegarden-template;audio/midi;
+X-KDE-NativeMimeType=audio/x-rosegarden-composition
+%
+&lt;/pre&gt;&lt;/blockquote&gt;&lt;/p&gt;
+
+&lt;p&gt;The fix was to add &quot;audio/x-rosegarden;&quot; at the end of the
+MimeType= line.&lt;/p&gt;
+
+&lt;p&gt;If you run into a file which fail to open the correct program when
+selected from the file browser, please check out the output from
+&lt;tt&gt;file --mime-type&lt;/tt&gt; for the file, ensure the file ending and
+MIME type is registered somewhere under /usr/share/mime/ and check
+that some desktop file under /usr/share/applications/ is claiming
+support for this MIME type.  If not, please report a bug to have it
+fixed. :)&lt;/p&gt;
+</description>
+       </item>
+       
+       <item>
+               <title>Isenkram with PackageKit support - new version 0.23 available in Debian unstable</title>
+               <link>http://people.skolelinux.org/pere/blog/Isenkram_with_PackageKit_support___new_version_0_23_available_in_Debian_unstable.html</link>
+               <guid isPermaLink="true">http://people.skolelinux.org/pere/blog/Isenkram_with_PackageKit_support___new_version_0_23_available_in_Debian_unstable.html</guid>
+                <pubDate>Wed, 25 May 2016 10:20:00 +0200</pubDate>
+               <description>&lt;p&gt;&lt;a href=&quot;https://tracker.debian.org/pkg/isenkram&quot;&gt;The isenkram
+system&lt;/a&gt; is a user-focused solution in Debian for handling hardware
+related packages.  The idea is to have a database of mappings between
+hardware and packages, and pop up a dialog suggesting for the user to
+install the packages to use a given hardware dongle.  Some use cases
+are when you insert a Yubikey, it proposes to install the software
+needed to control it; when you insert a braille reader list it
+proposes to install the packages needed to send text to the reader;
+and when you insert a ColorHug screen calibrator it suggests to
+install the driver for it.  The system work well, and even have a few
+command line tools to install firmware packages and packages for the
+hardware already in the machine (as opposed to hotpluggable hardware).&lt;/p&gt;
+
+&lt;p&gt;The system was initially written using aptdaemon, because I found
+good documentation and example code on how to use it.  But aptdaemon
+is going away and is generally being replaced by
+&lt;a href=&quot;http://www.freedesktop.org/software/PackageKit/&quot;&gt;PackageKit&lt;/a&gt;,
+so Isenkram needed a rewrite.  And today, thanks to the great patch
+from my college Sunil Mohan Adapa in the FreedomBox project, the
+rewrite finally took place.  I&#39;ve just uploaded a new version of
+Isenkram into Debian Unstable with the patch included, and the default
+for the background daemon is now to use PackageKit.  To check it out,
+install the &lt;tt&gt;isenkram&lt;/tt&gt; package and insert some hardware dongle
+and see if it is recognised.&lt;/p&gt;
+
+&lt;p&gt;If you want to know what kind of packages isenkram would propose for
+the machine it is running on, you can check out the isenkram-lookup
+program.  This is what it look like on a Thinkpad X230:&lt;/p&gt;
+
+&lt;p&gt;&lt;blockquote&gt;&lt;pre&gt;
+% isenkram-lookup 
+bluez
+cheese
+fprintd
+fprintd-demo
+gkrellm-thinkbat
+hdapsd
+libpam-fprintd
+pidgin-blinklight
+thinkfan
+tleds
+tp-smapi-dkms
+tp-smapi-source
+tpb
+%p
+&lt;/pre&gt;&lt;/blockquote&gt;&lt;/p&gt;
+
+&lt;p&gt;The hardware mappings come from several places.  The preferred way
+is for packages to announce their hardware support using
+&lt;a href=&quot;https://www.freedesktop.org/software/appstream/docs/&quot;&gt;the
+cross distribution appstream system&lt;/a&gt;.
+See
+&lt;a href=&quot;http://people.skolelinux.org/pere/blog/tags/isenkram/&quot;&gt;previous
+blog posts about isenkram&lt;/a&gt; to learn how to do that.&lt;/p&gt;
+</description>
+       </item>
+       
+       <item>
+               <title>Discharge rate estimate in new battery statistics collector for Debian</title>
+               <link>http://people.skolelinux.org/pere/blog/Discharge_rate_estimate_in_new_battery_statistics_collector_for_Debian.html</link>
+               <guid isPermaLink="true">http://people.skolelinux.org/pere/blog/Discharge_rate_estimate_in_new_battery_statistics_collector_for_Debian.html</guid>
+                <pubDate>Mon, 23 May 2016 09:35:00 +0200</pubDate>
+               <description>&lt;p&gt;Yesterday I updated the
+&lt;a href=&quot;https://tracker.debian.org/pkg/battery-stats&quot;&gt;battery-stats
+package in Debian&lt;/a&gt; with a few patches sent to me by skilled and
+enterprising users.  There were some nice user and visible changes.
+First of all, both desktop menu entries now work.  A design flaw in
+one of the script made the history graph fail to show up (its PNG was
+dumped in ~/.xsession-errors) if no controlling TTY was available.
+The script worked when called from the command line, but not when
+called from the desktop menu.  I changed this to look for a DISPLAY
+variable or a TTY before deciding where to draw the graph, and now the
+graph window pop up as expected.&lt;/p&gt;
+
+&lt;p&gt;The next new feature is a discharge rate estimator in one of the
+graphs (the one showing the last few hours).  New is also the user of
+colours showing charging in blue and discharge in red.  The percentages
+of this graph is relative to last full charge, not battery design
+capacity.&lt;/p&gt;
+
+&lt;p align=&quot;center&quot;&gt;&lt;img src=&quot;http://people.skolelinux.org/pere/blog/images/2016-05-23-battery-stats-rate.png&quot;/&gt;&lt;/p&gt;
+
+&lt;p&gt;The other graph show the entire history of the collected battery
+statistics, comparing it to the design capacity of the battery to
+visualise how the battery life time get shorter over time.  The red
+line in this graph is what the previous graph considers 100 percent:
+
+&lt;p align=&quot;center&quot;&gt;&lt;img src=&quot;http://people.skolelinux.org/pere/blog/images/2016-05-23-battery-stats-history.png&quot;/&gt;&lt;/p&gt;
+
+&lt;p&gt;In this graph you can see that I only charge the battery to 80
+percent of last full capacity, and how the capacity of the battery is
+shrinking. :(&lt;/p&gt;
+
+&lt;p&gt;The last new feature is in the collector, which now will handle
+more hardware models.  On some hardware, Linux power supply
+information is stored in /sys/class/power_supply/ACAD/, while the
+collector previously only looked in /sys/class/power_supply/AC/.  Now
+both are checked to figure if there is power connected to the
+machine.&lt;/p&gt;
+
+&lt;p&gt;If you are interested in how your laptop battery is doing, please
+check out the
+&lt;a href=&quot;https://tracker.debian.org/pkg/battery-stats&quot;&gt;battery-stats&lt;/a&gt;
+in Debian unstable, or rebuild it on Jessie to get it working on
+Debian stable. :) The upstream source is available from &lt;a
+href=&quot;https://github.com/petterreinholdtsen/battery-stats&quot;&gt;github&lt;/a&gt;.
+Patches are very welcome.&lt;/p&gt;
+
+&lt;p&gt;As usual, if you use Bitcoin and want to show your support of my
+activities, please send Bitcoin donations to my address
+&lt;b&gt;&lt;a href=&quot;bitcoin:15oWEoG9dUPovwmUL9KWAnYRtNJEkP1u1b&quot;&gt;15oWEoG9dUPovwmUL9KWAnYRtNJEkP1u1b&lt;/a&gt;&lt;/b&gt;.&lt;/p&gt;
+</description>
+       </item>
+       
+       <item>
+               <title>Debian now with ZFS on Linux included</title>
+               <link>http://people.skolelinux.org/pere/blog/Debian_now_with_ZFS_on_Linux_included.html</link>
+               <guid isPermaLink="true">http://people.skolelinux.org/pere/blog/Debian_now_with_ZFS_on_Linux_included.html</guid>
+                <pubDate>Thu, 12 May 2016 07:30:00 +0200</pubDate>
+               <description>&lt;p&gt;Today, after many years of hard work from many people,
+&lt;a href=&quot;http://zfsonlinux.org/&quot;&gt;ZFS for Linux&lt;/a&gt; finally entered
+Debian.  The package status can be seen on
+&lt;a href=&quot;https://tracker.debian.org/pkg/zfs-linux&quot;&gt;the package tracker
+for zfs-linux&lt;/a&gt;.  and
+&lt;a href=&quot;https://qa.debian.org/developer.php?login=pkg-zfsonlinux-devel@lists.alioth.debian.org&quot;&gt;the
+team status page&lt;/a&gt;. If you want to help out, please join us.
+&lt;a href=&quot;http://anonscm.debian.org/gitweb/?p=pkg-zfsonlinux/zfs.git&quot;&gt;The
+source code&lt;/a&gt; is available via git on Alioth.  It would also be
+great if you could help out with
+&lt;a href=&quot;https://tracker.debian.org/pkg/dkms&quot;&gt;the dkms package&lt;/a&gt;, as
+it is an important piece of the puzzle to get ZFS working.&lt;/p&gt;
+</description>
+       </item>
+       
+       <item>
+               <title>What is the best multimedia player in Debian?</title>
+               <link>http://people.skolelinux.org/pere/blog/What_is_the_best_multimedia_player_in_Debian_.html</link>
+               <guid isPermaLink="true">http://people.skolelinux.org/pere/blog/What_is_the_best_multimedia_player_in_Debian_.html</guid>
+                <pubDate>Sun, 8 May 2016 09:40:00 +0200</pubDate>
+               <description>&lt;p&gt;&lt;strong&gt;Where I set out to figure out which multimedia player in
+Debian claim support for most file formats.&lt;/strong&gt;&lt;/p&gt;
+
+&lt;p&gt;A few years ago, I had a look at the media support for Browser
+plugins in Debian, to get an idea which plugins to include in Debian
+Edu.  I created a script to extract the set of supported MIME types
+for each plugin, and used this to find out which multimedia browser
+plugin supported most file formats / media types.
+&lt;a href=&quot;https://wiki.debian.org/DebianEdu/BrowserMultimedia&quot;&gt;The
+result&lt;/a&gt; can still be seen on the Debian wiki, even though it have
+not been updated for a while.  But browser plugins are less relevant
+these days, so I thought it was time to look at standalone
+players.&lt;/p&gt;
+
+&lt;p&gt;A few days ago I was tired of VLC not being listed as a viable
+player when I wanted to play videos from the Norwegian National
+Broadcasting Company, and decided to investigate why.  The cause is a
+&lt;a href=&quot;https://bugs.debian.org/822245&quot;&gt;missing MIME type in the VLC
+desktop file&lt;/a&gt;.  In the process I wrote a script to compare the set
+of MIME types announced in the desktop file and the browser plugin,
+only to discover that there is quite a large difference between the
+two for VLC.  This discovery made me dig up the script I used to
+compare browser plugins, and adjust it to compare desktop files
+instead, to try to figure out which multimedia player in Debian
+support most file formats.&lt;/p&gt;
+
+&lt;p&gt;The result can be seen on the Debian Wiki, as
+&lt;a href=&quot;https://wiki.debian.org/DebianMultimedia/PlayerSupport&quot;&gt;a
+table listing all MIME types supported by one of the packages included
+in the table&lt;/a&gt;, with the package supporting most MIME types being
+listed first in the table.&lt;/p&gt;
+
+&lt;/p&gt;The best multimedia player in Debian?  It is totem, followed by
+parole, kplayer, mpv, vlc, smplayer mplayer-gui gnome-mpv and
+kmplayer.  Time for the other players to update their announced MIME
+support?&lt;/p&gt;
+</description>
+       </item>
+       
+       <item>
+               <title>The Pyra - handheld computer with Debian preinstalled</title>
+               <link>http://people.skolelinux.org/pere/blog/The_Pyra___handheld_computer_with_Debian_preinstalled.html</link>
+               <guid isPermaLink="true">http://people.skolelinux.org/pere/blog/The_Pyra___handheld_computer_with_Debian_preinstalled.html</guid>
+                <pubDate>Wed, 4 May 2016 10:00:00 +0200</pubDate>
+               <description>A friend of mine made me aware of
+&lt;a href=&quot;https://pyra-handheld.com/boards/pages/pyra/&quot;&gt;The Pyra&lt;/a&gt;, a
+handheld computer which will be delivered with Debian preinstalled.  I
+would love to get one of those for my birthday. :)&lt;/p&gt;
+
+&lt;p&gt;The machine is a complete ARM-based PC with micro HDMI, SATA, USB
+plugs and many others connectors, and include a full keyboard and a 5&quot;
+LCD touch screen.  The 6000mAh battery is claimed to provide a whole
+day of battery life time, but I have not seen any independent tests
+confirming this.  The vendor is still collecting preorders, and the
+last I heard last night was that 22 more orders were needed before
+production started.&lt;/p&gt;
+
+&lt;p&gt;As far as I know, this is the first handheld preinstalled with
+Debian.  Please let me know if you know of any others.  Is it the
+first computer being sold with Debian preinstalled?&lt;/p&gt;
+</description>
+       </item>
+       
+       <item>
+               <title>Lets make a Norwegian BokmĂ¥l edition of The Debian Administrator&#39;s Handbook</title>
+               <link>http://people.skolelinux.org/pere/blog/Lets_make_a_Norwegian_Bokm_l_edition_of_The_Debian_Administrator_s_Handbook.html</link>
+               <guid isPermaLink="true">http://people.skolelinux.org/pere/blog/Lets_make_a_Norwegian_Bokm_l_edition_of_The_Debian_Administrator_s_Handbook.html</guid>
+                <pubDate>Sun, 10 Apr 2016 23:20:00 +0200</pubDate>
+               <description>&lt;p&gt;During this weekends
+&lt;a href=&quot;http://www.nuug.no/news/Oslo__Takk_for_feilfiksingsfesten.shtml&quot;&gt;bug
+squashing party and developer gathering&lt;/a&gt;, we decided to do our part
+to make sure there are good books about Debian available in Norwegian
+BokmĂ¥l, and got in touch with the people behind the
+&lt;a href=&quot;http://debian-handbook.info/&quot;&gt;Debian Administrator&#39;s Handbook
+project&lt;/a&gt; to get started.  If you want to help out, please start
+contributing using
+&lt;a href=&quot;https://hosted.weblate.org/projects/debian-handbook/&quot;&gt;the
+hosted weblate project page&lt;/a&gt;, and get in touch using
+&lt;a href=&quot;http://lists.alioth.debian.org/mailman/listinfo/debian-handbook-translators&quot;&gt;the
+translators mailing list&lt;/a&gt;.  Please also check out
+&lt;a href=&quot;https://debian-handbook.info/contribute/&quot;&gt;the instructions for
+contributors&lt;/a&gt;.&lt;/p&gt;
+
+&lt;p&gt;The book is already available on paper in English, French and
+Japanese, and our goal is to get it available on paper in Norwegian
+BokmĂ¥l too.  In addition to the paper edition, there are also EPUB and
+Mobi versions available.  And there are incomplete translations
+available for many more languages.&lt;/p&gt;
+</description>
+       </item>
+       
+       <item>
+               <title>One in two hundred Debian users using ZFS on Linux?</title>
+               <link>http://people.skolelinux.org/pere/blog/One_in_two_hundred_Debian_users_using_ZFS_on_Linux_.html</link>
+               <guid isPermaLink="true">http://people.skolelinux.org/pere/blog/One_in_two_hundred_Debian_users_using_ZFS_on_Linux_.html</guid>
+                <pubDate>Thu, 7 Apr 2016 22:30:00 +0200</pubDate>
+               <description>&lt;p&gt;Just for fun I had a look at the popcon number of ZFS related
+packages in Debian, and was quite surprised with what I found.  I use
+ZFS myself at home, but did not really expect many others to do so.
+But I might be wrong.&lt;/p&gt;
+
+&lt;p&gt;According to
+&lt;a href=&quot;https://qa.debian.org/popcon.php?package=spl-linux&quot;&gt;the popcon
+results for spl-linux&lt;/a&gt;, there are 1019 Debian installations, or
+0.53% of the population, with the package installed.  As far as I know
+the only use of the spl-linux package is as a support library for ZFS
+on Linux, so I use it here as proxy for measuring the number of ZFS
+installation on Linux in Debian.  In the kFreeBSD variant of Debian
+the ZFS feature is already available, and there
+&lt;a href=&quot;https://qa.debian.org/popcon.php?package=zfsutils&quot;&gt;the popcon
+results for zfsutils&lt;/a&gt; show 1625 Debian installations or 0.84% of
+the population.  So I guess I am not alone in using ZFS on Debian.&lt;/p&gt;
+
+&lt;p&gt;But even though the Debian project leader Lucas Nussbaum
+&lt;a href=&quot;https://lists.debian.org/debian-devel-announce/2015/04/msg00006.html&quot;&gt;announced
+in April 2015&lt;/a&gt; that the legal obstacles blocking ZFS on Debian were
+cleared, the package is still not in Debian.  The package is again in
+the NEW queue.  Several uploads have been rejected so far because the
+debian/copyright file was incomplete or wrong, but there is no reason
+to give up.  The current status can be seen on
+&lt;a href=&quot;https://qa.debian.org/developer.php?login=pkg-zfsonlinux-devel@lists.alioth.debian.org&quot;&gt;the
+team status page&lt;/a&gt;, and
+&lt;a href=&quot;http://anonscm.debian.org/gitweb/?p=pkg-zfsonlinux/zfs.git&quot;&gt;the
+source code&lt;/a&gt; is available on Alioth.&lt;/p&gt;
+
+&lt;p&gt;As I want ZFS to be included in next version of Debian to make sure
+my home server can function in the future using only official Debian
+packages, and the current blocker is to get the debian/copyright file
+accepted by the FTP masters in Debian, I decided a while back to try
+to help out the team.  This was the background for my blog post about
+&lt;a href=&quot;http://people.skolelinux.org/pere/blog/Creating__updating_and_checking_debian_copyright_semi_automatically.html&quot;&gt;creating,
+updating and checking debian/copyright semi-automatically&lt;/a&gt;, and I
+used the techniques I explored there to try to find any errors in the
+copyright file.  It is not very easy to check every one of the around
+2000 files in the source package, but I hope we this time got it
+right.  If you want to help out, check out the git source and try to
+find missing entries in the debian/copyright file.&lt;/p&gt;
+</description>
+       </item>
+       
+       <item>
+               <title>Full battery stats collector is now available in Debian</title>
+               <link>http://people.skolelinux.org/pere/blog/Full_battery_stats_collector_is_now_available_in_Debian.html</link>
+               <guid isPermaLink="true">http://people.skolelinux.org/pere/blog/Full_battery_stats_collector_is_now_available_in_Debian.html</guid>
+                <pubDate>Wed, 23 Mar 2016 22:10:00 +0100</pubDate>
+               <description>&lt;p&gt;Since this morning, the battery-stats package in Debian include an
+extended collector that will collect the complete battery history for
+later processing and graphing.  The original collector store the
+battery level as percentage of last full level, while the new
+collector also record battery vendor, model, serial number, design
+full level, last full level and current battery level.  This make it
+possible to predict the lifetime of the battery as well as visualise
+the energy flow when the battery is charging or discharging.&lt;/p&gt;
+
+&lt;p&gt;The new tools are available in &lt;tt&gt;/usr/share/battery-stats/&lt;/tt&gt;
+in the version 0.5.1 package in unstable.  Get the new battery level graph
+and lifetime prediction by running:
+
+&lt;p&gt;&lt;pre&gt;
+/usr/share/battery-stats/battery-stats-graph /var/log/battery-stats.csv
+&lt;/pre&gt;&lt;/p&gt;
+
+&lt;p&gt;Or select the &#39;Battery Level Graph&#39; from your application menu.&lt;/p&gt;
+
+&lt;p&gt;The flow in/out of the battery can be seen by running (no menu
+entry yet):&lt;/p&gt;
+
+&lt;p&gt;&lt;pre&gt;
+/usr/share/battery-stats/battery-stats-graph-flow
+&lt;/pre&gt;&lt;/p&gt;
+
+&lt;p&gt;I&#39;m not quite happy with the way the data is visualised, at least
+when there are few data points.  The graphs look a bit better with a
+few years of data.&lt;/p&gt;
+
+&lt;p&gt;A while back one important feature I use in the battery stats
+collector broke in Debian.  The scripts in
+&lt;tt&gt;/usr/lib/pm-utils/power.d/&lt;/tt&gt; were no longer executed.  I
+suspect it happened when Jessie started using systemd, but I do not
+know.  The issue is reported as
+&lt;a href=&quot;https://bugs.debian.org/818649&quot;&gt;bug #818649&lt;/a&gt; against
+pm-utils.  I managed to work around it by adding an udev rule to call
+the collector script every time the power connector is connected and
+disconnected.  With this fix in place it was finally time to make a
+new release of the package, and get it into Debian.&lt;/p&gt;
+
+&lt;p&gt;If you are interested in how your laptop battery is doing, please
+check out the
+&lt;a href=&quot;https://tracker.debian.org/pkg/battery-stats&quot;&gt;battery-stats&lt;/a&gt;
+in Debian unstable, or rebuild it on Jessie to get it working on
+Debian stable. :) The upstream source is available from
+&lt;a href=&quot;https://github.com/petterreinholdtsen/battery-stats&quot;&gt;github&lt;/a&gt;.
+As always, patches are very welcome.&lt;/p&gt;
+</description>
+       </item>
+       
+       <item>
+               <title>Making battery measurements a little easier in Debian</title>
+               <link>http://people.skolelinux.org/pere/blog/Making_battery_measurements_a_little_easier_in_Debian.html</link>
+               <guid isPermaLink="true">http://people.skolelinux.org/pere/blog/Making_battery_measurements_a_little_easier_in_Debian.html</guid>
+                <pubDate>Tue, 15 Mar 2016 15:00:00 +0100</pubDate>
+               <description>&lt;p&gt;Back in September, I blogged about
+&lt;a href=&quot;http://people.skolelinux.org/pere/blog/The_life_and_death_of_a_laptop_battery.html&quot;&gt;the
+system I wrote to collect statistics about my laptop battery&lt;/a&gt;, and
+how it showed the decay and death of this battery (now replaced).  I
+created a simple deb package to handle the collection and graphing,
+but did not want to upload it to Debian as there were already
+&lt;a href=&quot;https://tracker.debian.org/pkg/battery-stats&quot;&gt;a battery-stats
+package in Debian&lt;/a&gt; that should do the same thing, and I did not see
+a point of uploading a competing package when battery-stats could be
+fixed instead.  I reported a few bugs about its non-function, and
+hoped someone would step in and fix it.  But no-one did.&lt;/p&gt;
+
+&lt;p&gt;I got tired of waiting a few days ago, and took matters in my own
+hands.  The end result is that I am now the new upstream developer of
+battery stats (&lt;a href=&quot;https://github.com/petterreinholdtsen/battery-stats&quot;&gt;available from github&lt;/a&gt;) and part of the team maintaining
+battery-stats in Debian, and the package in Debian unstable is finally
+able to collect battery status using the &lt;tt&gt;/sys/class/power_supply/&lt;/tt&gt;
+information provided by the Linux kernel.  If you install the
+battery-stats package from unstable now, you will be able to get a
+graph of the current battery fill level, to get some idea about the
+status of the battery.  The source package build and work just fine in
+Debian testing and stable (and probably oldstable too, but I have not
+tested).  The default graph you get for that system look like this:&lt;/p&gt;
+
+&lt;p align=&quot;center&quot;&gt;&lt;img src=&quot;http://people.skolelinux.org/pere/blog/images/2016-03-15-battery-stats-graph-example.png&quot; width=&quot;70%&quot; align=&quot;center&quot;&gt;&lt;/p&gt;
+
+&lt;p&gt;My plans for the future is to merge my old scripts into the
+battery-stats package, as my old scripts collected a lot more details
+about the battery.  The scripts are merged into the upstream
+battery-stats git repository already, but I am not convinced they work
+yet, as I changed a lot of paths along the way.  Will have to test a
+bit more before I make a new release.&lt;/p&gt;
+
+&lt;p&gt;I will also consider changing the file format slightly, as I
+suspect the way I combine several values into one field might make it
+impossible to know the type of the value when using it for processing
+and graphing.&lt;/p&gt;
+
+&lt;p&gt;If you would like I would like to keep an close eye on your laptop
+battery, check out the battery-stats package in
+&lt;a href=&quot;https://tracker.debian.org/pkg/battery-stats&quot;&gt;Debian&lt;/a&gt; and
+on
+&lt;a href=&quot;https://github.com/petterreinholdtsen/battery-stats&quot;&gt;github&lt;/a&gt;.
+I would love some help to improve the system further.&lt;/p&gt;
+</description>
+       </item>
+       
+       <item>
+               <title>Creating, updating and checking debian/copyright semi-automatically</title>
+               <link>http://people.skolelinux.org/pere/blog/Creating__updating_and_checking_debian_copyright_semi_automatically.html</link>
+               <guid isPermaLink="true">http://people.skolelinux.org/pere/blog/Creating__updating_and_checking_debian_copyright_semi_automatically.html</guid>
+                <pubDate>Fri, 19 Feb 2016 15:00:00 +0100</pubDate>
+               <description>&lt;p&gt;Making packages for Debian requires quite a lot of attention to
+details.  And one of the details is the content of the
+debian/copyright file, which should list all relevant licenses used by
+the code in the package in question, preferably in
+&lt;a href=&quot;https://www.debian.org/doc/packaging-manuals/copyright-format/1.0/&quot;&gt;machine
+readable DEP5 format&lt;/a&gt;.&lt;/p&gt;
+
+&lt;p&gt;For large packages with lots of contributors it is hard to write
+and update this file manually, and if you get some detail wrong, the
+package is normally rejected by the ftpmasters.  So getting it right
+the first time around get the package into Debian faster, and save
+both you and the ftpmasters some work..  Today, while trying to figure
+out what was wrong with
+&lt;a href=&quot;https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=686447&quot;&gt;the
+zfsonlinux copyright file&lt;/a&gt;, I decided to spend some time on
+figuring out the options for doing this job automatically, or at least
+semi-automatically.&lt;/p&gt;
+
+&lt;p&gt;Lucikly, there are at least two tools available for generating the
+file based on the code in the source package,
+&lt;tt&gt;&lt;a href=&quot;https://tracker.debian.org/pkg/debmake&quot;&gt;debmake&lt;/a&gt;&lt;/tt&gt;
+and &lt;tt&gt;&lt;a href=&quot;https://tracker.debian.org/pkg/cme&quot;&gt;cme&lt;/a&gt;&lt;/tt&gt;.  I&#39;m
+not sure which one of them came first, but both seem to be able to
+create a sensible draft file.  As far as I can tell, none of them can
+be trusted to get the result just right, so the content need to be
+polished a bit before the file is OK to upload.  I found the debmake
+option in
+&lt;a href=&quot;http://goofying-with-debian.blogspot.com/2014/07/debmake-checking-source-against-dep-5.html&quot;&gt;a
+blog posts from 2014&lt;/a&gt;.
+
+&lt;p&gt;To generate using debmake, use the -cc option:
+
+&lt;p&gt;&lt;pre&gt;
+debmake -cc &gt; debian/copyright
+&lt;/pre&gt;&lt;/p&gt;
+
+&lt;p&gt;Note there are some problems with python and non-ASCII names, so
+this might not be the best option.&lt;/p&gt;
+
+&lt;p&gt;The cme option is based on a config parsing library, and I found
+this approach in
+&lt;a href=&quot;https://ddumont.wordpress.com/2015/04/05/improving-creation-of-debian-copyright-file/&quot;&gt;a
+blog post from 2015&lt;/a&gt;.  To generate using cme, use the &#39;update
+dpkg-copyright&#39; option:
+
+&lt;p&gt;&lt;pre&gt;
+cme update dpkg-copyright
+&lt;/pre&gt;&lt;/p&gt;
+
+&lt;p&gt;This will create or update debian/copyright.  The cme tool seem to
+handle UTF-8 names better than debmake.&lt;/p&gt;
+
+&lt;p&gt;When the copyright file is created, I would also like some help to
+check if the file is correct.  For this I found two good options,
+&lt;tt&gt;debmake -k&lt;/tt&gt; and &lt;tt&gt;license-reconcile&lt;/tt&gt;.  The former seem
+to focus on license types and file matching, and is able to detect
+ineffective blocks in the copyright file.  The latter reports missing
+copyright holders and years, but was confused by inconsistent license
+names (like CDDL vs. CDDL-1.0).  I suspect it is good to use both and
+fix all issues reported by them before uploading.  But I do not know
+if the tools and the ftpmasters agree on what is important to fix in a
+copyright file, so the package might still be rejected.&lt;/p&gt;
+
+&lt;p&gt;The devscripts tool &lt;tt&gt;licensecheck&lt;/tt&gt; deserve mentioning.  It
+will read through the source and try to find all copyright statements.
+It is not comparing the result to the content of debian/copyright, but
+can be useful when verifying the content of the copyright file.&lt;/p&gt;
+
+&lt;p&gt;Are you aware of better tools in Debian to create and update
+debian/copyright file.  Please let me know, or blog about it on
+planet.debian.org.&lt;/p&gt;
+
+&lt;p&gt;As usual, if you use Bitcoin and want to show your support of my
+activities, please send Bitcoin donations to my address
+&lt;b&gt;&lt;a href=&quot;bitcoin:15oWEoG9dUPovwmUL9KWAnYRtNJEkP1u1b&quot;&gt;15oWEoG9dUPovwmUL9KWAnYRtNJEkP1u1b&lt;/a&gt;&lt;/b&gt;.&lt;/p&gt;
+
+&lt;p&gt;&lt;strong&gt;Update 2016-02-20&lt;/strong&gt;: I got a tip from Mike Gabriel
+on how to use licensecheck and cdbs to create a draft copyright file
+
+&lt;p&gt;&lt;pre&gt;
+licensecheck --copyright -r `find * -type f` | \
+  /usr/lib/cdbs/licensecheck2dep5 &gt; debian/copyright.auto
+&lt;/pre&gt;&lt;/p&gt;
+
+&lt;p&gt;He mentioned that he normally check the generated file into the
+version control system to make it easier to discover license and
+copyright changes in the upstream source.  I will try to do the same
+with my packages in the future.&lt;/p&gt;
+
+&lt;p&gt;&lt;strong&gt;Update 2016-02-21&lt;/strong&gt;: The cme author recommended
+against using -quiet for new users, so I removed it from the proposed
+command line.&lt;/p&gt;
+</description>
+       </item>
+       
+       <item>
+               <title>Using appstream in Debian to locate packages with firmware and mime type support</title>
+               <link>http://people.skolelinux.org/pere/blog/Using_appstream_in_Debian_to_locate_packages_with_firmware_and_mime_type_support.html</link>
+               <guid isPermaLink="true">http://people.skolelinux.org/pere/blog/Using_appstream_in_Debian_to_locate_packages_with_firmware_and_mime_type_support.html</guid>
+                <pubDate>Thu, 4 Feb 2016 16:40:00 +0100</pubDate>
+               <description>&lt;p&gt;The &lt;a href=&quot;https://wiki.debian.org/DEP-11&quot;&gt;appstream system&lt;/a&gt;
+is taking shape in Debian, and one provided feature is a very
+convenient way to tell you which package to install to make a given
+firmware file available when the kernel is looking for it.  This can
+be done using apt-file too, but that is for someone else to blog
+about. :)&lt;/p&gt;
+
+&lt;p&gt;Here is a small recipe to find the package with a given firmware
+file, in this example I am looking for ctfw-3.2.3.0.bin, randomly
+picked from the set of firmware announced using appstream in Debian
+unstable.  In general you would be looking for the firmware requested
+by the kernel during kernel module loading.  To find the package
+providing the example file, do like this:&lt;/p&gt;
+
+&lt;blockquote&gt;&lt;pre&gt;
+% apt install appstream
+[...]
+% apt update
+[...]
+% appstreamcli what-provides firmware:runtime ctfw-3.2.3.0.bin | \
+  awk &#39;/Package:/ {print $2}&#39;
+firmware-qlogic
+%
+&lt;/pre&gt;&lt;/blockquote&gt;
+
+&lt;p&gt;See &lt;a href=&quot;https://wiki.debian.org/AppStream/Guidelines&quot;&gt;the
+appstream wiki&lt;/a&gt; page to learn how to embed the package metadata in
+a way appstream can use.&lt;/p&gt;
+
+&lt;p&gt;This same approach can be used to find any package supporting a
+given MIME type.  This is very useful when you get a file you do not
+know how to handle.  First find the mime type using &lt;tt&gt;file
+--mime-type&lt;/tt&gt;, and next look up the package providing support for
+it.  Lets say you got an SVG file.  Its MIME type is image/svg+xml,
+and you can find all packages handling this type like this:&lt;/p&gt;
+
+&lt;blockquote&gt;&lt;pre&gt;
+% apt install appstream
+[...]
+% apt update
+[...]
+% appstreamcli what-provides mimetype image/svg+xml | \
+  awk &#39;/Package:/ {print $2}&#39;
+bkchem
+phototonic
+inkscape
+shutter
+tetzle
+geeqie
+xia
+pinta
+gthumb
+karbon
+comix
+mirage
+viewnior
+postr
+ristretto
+kolourpaint4
+eog
+eom
+gimagereader
+midori
+%
+&lt;/pre&gt;&lt;/blockquote&gt;
+
+&lt;p&gt;I believe the MIME types are fetched from the desktop file for
+packages providing appstream metadata.&lt;/p&gt;
+</description>
+       </item>
+       
+       <item>
+               <title>Creepy, visualise geotagged social media information - nice free software</title>
+               <link>http://people.skolelinux.org/pere/blog/Creepy__visualise_geotagged_social_media_information___nice_free_software.html</link>
+               <guid isPermaLink="true">http://people.skolelinux.org/pere/blog/Creepy__visualise_geotagged_social_media_information___nice_free_software.html</guid>
+                <pubDate>Sun, 24 Jan 2016 10:50:00 +0100</pubDate>
+               <description>&lt;p&gt;Most people seem not to realise that every time they walk around
+with the computerised radio beacon known as a mobile phone their
+position is tracked by the phone company and often stored for a long
+time (like every time a SMS is received or sent).  And if their
+computerised radio beacon is capable of running programs (often called
+mobile apps) downloaded from the Internet, these programs are often
+also capable of tracking their location (if the app requested access
+during installation).  And when these programs send out information to
+central collection points, the location is often included, unless
+extra care is taken to not send the location.  The provided
+information is used by several entities, for good and bad (what is
+good and bad, depend on your point of view).  What is certain, is that
+the private sphere and the right to free movement is challenged and
+perhaps even eradicated for those announcing their location this way,
+when they share their whereabouts with private and public
+entities.&lt;/p&gt;
+
+&lt;p align=&quot;center&quot;&gt;&lt;img width=&quot;70%&quot; src=&quot;http://people.skolelinux.org/pere/blog/images/2016-01-24-nice-creepy-desktop-window.png&quot;&gt;&lt;/p&gt;
+
+&lt;p&gt;The phone company logs provide a register of locations to check out
+when one want to figure out what the tracked person was doing.  It is
+unavailable for most of us, but provided to selected government
+officials, company staff, those illegally buying information from
+unfaithful servants and crackers stealing the information.  But the
+public information can be collected and analysed, and a free software
+tool to do so is called
+&lt;a href=&quot;http://www.geocreepy.com/&quot;&gt;Creepy or Cree.py&lt;/a&gt;.  I
+discovered it when I read
+&lt;a href=&quot;http://www.aftenposten.no/kultur/Slik-kan-du-bli-overvaket-pa-Twitter-og-Instagram-uten-a-ane-det-7787884.html&quot;&gt;an
+article about Creepy&lt;/a&gt; in the Norwegian newspaper Aftenposten i
+November 2014, and decided to check if it was available in Debian.
+The python program was in Debian, but
+&lt;a href=&quot;https://tracker.debian.org/pkg/creepy&quot;&gt;the version in
+Debian&lt;/a&gt; was completely broken and practically unmaintained.  I
+uploaded a new version which did not work quite right, but did not
+have time to fix it then.  This Christmas I decided to finally try to
+get Creepy operational in Debian.  Now a fixed version is available in
+Debian unstable and testing, and almost all Debian specific patches
+are now included
+&lt;a href=&quot;https://github.com/jkakavas/creepy&quot;&gt;upstream&lt;/a&gt;.&lt;/p&gt;
+
+&lt;p&gt;The Creepy program visualises geolocation information fetched from
+Twitter, Instagram, Flickr and Google+, and allow one to get a
+complete picture of every social media message posted recently in a
+given area, or track the movement of a given individual across all
+these services.  Earlier it was possible to use the search API of at
+least some of these services without identifying oneself, but these
+days it is impossible.  This mean that to use Creepy, you need to
+configure it to log in as yourself on these services, and provide
+information to them about your search interests.  This should be taken
+into account when using Creepy, as it will also share information
+about yourself with the services.&lt;/p&gt;
+
+&lt;p&gt;The picture above show the twitter messages sent from (or at least
+geotagged with a position from) the city centre of Oslo, the capital
+of Norway.  One useful way to use Creepy is to first look at
+information tagged with an area of interest, and next look at all the
+information provided by one or more individuals who was in the area.
+I tested it by checking out which celebrity provide their location in
+twitter messages by checkout out who sent twitter messages near a
+Norwegian TV station, and next could track their position over time,
+making it possible to locate their home and work place, among other
+things.  A similar technique have been
+&lt;a href=&quot;http://www.buzzfeed.com/maxseddon/does-this-soldiers-instagram-account-prove-russia-is-covertl&quot;&gt;used
+to locate Russian soldiers in Ukraine&lt;/a&gt;, and it is both a powerful
+tool to discover lying governments, and a useful tool to help people
+understand the value of the private information they provide to the
+public.&lt;/p&gt;
+
+&lt;p&gt;The package is not trivial to backport to Debian Stable/Jessie, as
+it depend on several python modules currently missing in Jessie (at
+least python-instagram, python-flickrapi and
+python-requests-toolbelt).&lt;/p&gt;
+
+&lt;p&gt;(I have uploaded
+&lt;a href=&quot;https://screenshots.debian.net/package/creepy&quot;&gt;the image to
+screenshots.debian.net&lt;/a&gt; and licensed it under the same terms as the
+Creepy program in Debian.)&lt;/p&gt;
+</description>
+       </item>
+       
+       <item>
+               <title>Always download Debian packages using Tor - the simple recipe</title>
+               <link>http://people.skolelinux.org/pere/blog/Always_download_Debian_packages_using_Tor___the_simple_recipe.html</link>
+               <guid isPermaLink="true">http://people.skolelinux.org/pere/blog/Always_download_Debian_packages_using_Tor___the_simple_recipe.html</guid>
+                <pubDate>Fri, 15 Jan 2016 00:30:00 +0100</pubDate>
+               <description>&lt;p&gt;During his DebConf15 keynote, Jacob Appelbaum
+&lt;a href=&quot;https://summit.debconf.org/debconf15/meeting/331/what-is-to-be-done/&quot;&gt;observed
+that those listening on the Internet lines would have good reason to
+believe a computer have a given security hole&lt;/a&gt; if it download a
+security fix from a Debian mirror.  This is a good reason to always
+use encrypted connections to the Debian mirror, to make sure those
+listening do not know which IP address to attack.  In August, Richard
+Hartmann observed that encryption was not enough, when it was possible
+to interfere download size to security patches or the fact that
+download took place shortly after a security fix was released, and
+&lt;a href=&quot;http://richardhartmann.de/blog/posts/2015/08/24-Tor-enabled_Debian_mirror/&quot;&gt;proposed
+to always use Tor to download packages from the Debian mirror&lt;/a&gt;.  He
+was not the first to propose this, as the
+&lt;tt&gt;&lt;a href=&quot;https://tracker.debian.org/pkg/apt-transport-tor&quot;&gt;apt-transport-tor&lt;/a&gt;&lt;/tt&gt;
+package by Tim Retout already existed to make it easy to convince apt
+to use &lt;a href=&quot;https://www.torproject.org/&quot;&gt;Tor&lt;/a&gt;, but I was not
+aware of that package when I read the blog post from Richard.&lt;/p&gt;
+
+&lt;p&gt;Richard discussed the idea with Peter Palfrader, one of the Debian
+sysadmins, and he set up a Tor hidden service on one of the central
+Debian mirrors using the address vwakviie2ienjx6t.onion, thus making
+it possible to download packages directly between two tor nodes,
+making sure the network traffic always were encrypted.&lt;/p&gt;
+
+&lt;p&gt;Here is a short recipe for enabling this on your machine, by
+installing &lt;tt&gt;apt-transport-tor&lt;/tt&gt; and replacing http and https
+urls with tor+http and tor+https, and using the hidden service instead
+of the official Debian mirror site.  I recommend installing
+&lt;tt&gt;etckeeper&lt;/tt&gt; before you start to have a history of the changes
+done in /etc/.&lt;/p&gt;
+
+&lt;blockquote&gt;&lt;pre&gt;
+apt install apt-transport-tor
+sed -i &#39;s% http://ftp.debian.org/% tor+http://vwakviie2ienjx6t.onion/%&#39; /etc/apt/sources.list
+sed -i &#39;s% http% tor+http%&#39; /etc/apt/sources.list
+&lt;/pre&gt;&lt;/blockquote&gt;
+
+&lt;p&gt;If you have more sources listed in /etc/apt/sources.list.d/, run
+the sed commands for these too.  The sed command is assuming your are
+using the ftp.debian.org Debian mirror.  Adjust the command (or just
+edit the file manually) to match your mirror.&lt;/p&gt;
+
+&lt;p&gt;This work in Debian Jessie and later.  Note that tools like
+&lt;tt&gt;apt-file&lt;/tt&gt; only recently started using the apt transport
+system, and do not work with these tor+http URLs.  For
+&lt;tt&gt;apt-file&lt;/tt&gt; you need the version currently in experimental,
+which need a recent apt version currently only in unstable.  So if you
+need a working &lt;tt&gt;apt-file&lt;/tt&gt;, this is not for you.&lt;/p&gt;
+
+&lt;p&gt;Another advantage from this change is that your machine will start
+using Tor regularly and at fairly random intervals (every time you
+update the package lists or upgrade or install a new package), thus
+masking other Tor traffic done from the same machine.  Using Tor will
+become normal for the machine in question.&lt;/p&gt;
+
+&lt;p&gt;On &lt;a href=&quot;https://wiki.debian.org/FreedomBox&quot;&gt;Freedombox&lt;/a&gt;, APT
+is set up by default to use &lt;tt&gt;apt-transport-tor&lt;/tt&gt; when Tor is
+enabled.  It would be great if it was the default on any Debian
+system.&lt;/p&gt;
+</description>
+       </item>
+       
+       <item>
+               <title>OpenALPR, find car license plates in video streams - nice free software</title>
+               <link>http://people.skolelinux.org/pere/blog/OpenALPR__find_car_license_plates_in_video_streams___nice_free_software.html</link>
+               <guid isPermaLink="true">http://people.skolelinux.org/pere/blog/OpenALPR__find_car_license_plates_in_video_streams___nice_free_software.html</guid>
+                <pubDate>Wed, 23 Dec 2015 01:00:00 +0100</pubDate>
+               <description>&lt;p&gt;When I was a kid, we used to collect &quot;car numbers&quot;, as we used to
+call the car license plate numbers in those days.  I would write the
+numbers down in my little book and compare notes with the other kids
+to see how many region codes we had seen and if we had seen some
+exotic or special region codes and numbers.  It was a fun game to pass
+time, as we kids have plenty of it.&lt;/p&gt;
+
+&lt;p&gt;A few days I came across
+&lt;a href=&quot;https://github.com/openalpr/openalpr&quot;&gt;the OpenALPR
+project&lt;/a&gt;, a free software project to automatically discover and
+report license plates in images and video streams, and provide the
+&quot;car numbers&quot; in a machine readable format.  I&#39;ve been looking for
+such system for a while now, because I believe it is a bad idea that the
+&lt;a href=&quot;https://en.wikipedia.org/wiki/Automatic_number_plate_recognition&quot;&gt;automatic
+number plate recognition&lt;/a&gt; tool only is available in the hands of
+the powerful, and want it to be available also for the powerless to
+even the score when it comes to surveillance and sousveillance.  I
+discovered the developer
+&lt;a href=&quot;https://bugs.debian.org/747509&quot;&gt;wanted to get the tool into
+Debian&lt;/a&gt;, and as I too wanted it to be in Debian, I volunteered to
+help him get it into shape to get the package uploaded into the Debian
+archive.&lt;/p&gt;
+
+&lt;p&gt;Today we finally managed to get the package into shape and uploaded
+it into Debian, where it currently
+&lt;a href=&quot;https://ftp-master.debian.org//new/openalpr_2.2.1-1.html&quot;&gt;waits
+in the NEW queue&lt;/a&gt; for review by the Debian ftpmasters.&lt;/p&gt;
+
+&lt;p&gt;I guess you are wondering why on earth such tool would be useful
+for the common folks, ie those not running a large government
+surveillance system?  Well, I plan to put it in a computer on my bike
+and in my car, tracking the cars nearby and allowing me to be notified
+when number plates on my watch list are discovered.  Another use case
+was suggested by a friend of mine, who wanted to set it up at his home
+to open the car port automatically when it discovered the plate on his
+car.  When I mentioned it perhaps was a bit foolhardy to allow anyone
+capable of placing his license plate number of a piece of cardboard to
+open his car port, men replied that it was always unlocked anyway.  I
+guess for such use case it make sense.  I am sure there are other use
+cases too, for those with imagination and a vision.&lt;/p&gt;
+
+&lt;p&gt;If you want to build your own version of the Debian package, check
+out the upstream git source and symlink ./distros/debian to ./debian/
+before running &quot;debuild&quot; to build the source.  Or wait a bit until the
+package show up in unstable.&lt;/p&gt;
+</description>
+       </item>
+       
+       <item>
+               <title>Using appstream with isenkram to install hardware related packages in Debian</title>
+               <link>http://people.skolelinux.org/pere/blog/Using_appstream_with_isenkram_to_install_hardware_related_packages_in_Debian.html</link>
+               <guid isPermaLink="true">http://people.skolelinux.org/pere/blog/Using_appstream_with_isenkram_to_install_hardware_related_packages_in_Debian.html</guid>
+                <pubDate>Sun, 20 Dec 2015 12:20:00 +0100</pubDate>
+               <description>&lt;p&gt;Around three years ago, I created
+&lt;a href=&quot;http://packages.qa.debian.org/isenkram&quot;&gt;the isenkram
+system&lt;/a&gt; to get a more practical solution in Debian for handing
+hardware related packages.  A GUI system in the isenkram package will
+present a pop-up dialog when some hardware dongle supported by
+relevant packages in Debian is inserted into the machine.  The same
+lookup mechanism to detect packages is available as command line
+tools in the isenkram-cli package.  In addition to mapping hardware,
+it will also map kernel firmware files to packages and make it easy to
+install needed firmware packages automatically.  The key for this
+system to work is a good way to map hardware to packages, in other
+words, allow packages to announce what hardware they will work
+with.&lt;/p&gt;
+
+&lt;p&gt;I started by providing data files in the isenkram source, and
+adding code to download the latest version of these data files at run
+time, to ensure every user had the most up to date mapping available.
+I also added support for storing the mapping in the Packages file in
+the apt repositories, but did not push this approach because while I
+was trying to figure out how to best store hardware/package mappings,
+&lt;a href=&quot;http://www.freedesktop.org/software/appstream/docs/&quot;&gt;the
+appstream system&lt;/a&gt; was announced.  I got in touch and suggested to
+add the hardware mapping into that data set to be able to use
+appstream as a data source, and this was accepted at least for the
+Debian version of appstream.&lt;/p&gt;
+
+&lt;p&gt;A few days ago using appstream in Debian for this became possible,
+and today I uploaded a new version 0.20 of isenkram adding support for
+appstream as a data source for mapping hardware to packages.  The only
+package so far using appstream to announce its hardware support is my
+pymissile package.  I got help from Matthias Klumpp with figuring out
+how do add the required
+&lt;a href=&quot;https://appstream.debian.org/html/sid/main/metainfo/pymissile.html&quot;&gt;metadata
+in pymissile&lt;/a&gt;.  I added a file debian/pymissile.metainfo.xml with
+this content:&lt;/p&gt;
+
+&lt;blockquote&gt;&lt;pre&gt;
+&amp;lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot;?&amp;gt;
+&amp;lt;component&amp;gt;
+  &amp;lt;id&amp;gt;pymissile&amp;lt;/id&amp;gt;
+  &amp;lt;metadata_license&amp;gt;MIT&amp;lt;/metadata_license&amp;gt;
+  &amp;lt;name&amp;gt;pymissile&amp;lt;/name&amp;gt;
+  &amp;lt;summary&amp;gt;Control original Striker USB Missile Launcher&amp;lt;/summary&amp;gt;
+  &amp;lt;description&amp;gt;
+    &amp;lt;p&amp;gt;
+      Pymissile provides a curses interface to control an original
+      Marks and Spencer / Striker USB Missile Launcher, as well as a
+      motion control script to allow a webcamera to control the
+      launcher.
+    &amp;lt;/p&amp;gt;
+  &amp;lt;/description&amp;gt;
+  &amp;lt;provides&amp;gt;
+    &amp;lt;modalias&amp;gt;usb:v1130p0202d*&amp;lt;/modalias&amp;gt;
+  &amp;lt;/provides&amp;gt;
+&amp;lt;/component&amp;gt;
+&lt;/pre&gt;&lt;/blockquote&gt;
+
+&lt;p&gt;The key for isenkram is the component/provides/modalias value,
+which is a glob style match rule for hardware specific strings
+(modalias strings) provided by the Linux kernel.  In this case, it
+will map to all USB devices with vendor code 1130 and product code
+0202.&lt;/p&gt;
+
+&lt;p&gt;Note, it is important that the license of all the metadata files
+are compatible to have permissions to aggregate them into archive wide
+appstream files.  Matthias suggested to use MIT or BSD licenses for
+these files.  A challenge is figuring out a good id for the data, as
+it is supposed to be globally unique and shared across distributions
+(in other words, best to coordinate with upstream what to use).  But
+it can be changed later or, so we went with the package name as
+upstream for this project is dormant.&lt;/p&gt;
+
+&lt;p&gt;To get the metadata file installed in the correct location for the
+mirror update scripts to pick it up and include its content the
+appstream data source, the file must be installed in the binary
+package under /usr/share/appdata/.  I did this by adding the following
+line to debian/pymissile.install:&lt;/p&gt;
+
+&lt;blockquote&gt;&lt;pre&gt;
+debian/pymissile.metainfo.xml usr/share/appdata
+&lt;/pre&gt;&lt;/blockquote&gt;
+
+&lt;p&gt;With that in place, the command line tool isenkram-lookup will list
+all packages useful on the current computer automatically, and the GUI
+pop-up handler will propose to install the package not already
+installed if a hardware dongle is inserted into the machine in
+question.&lt;/p&gt;
+
+&lt;p&gt;Details of the modalias field in appstream is available from the 
+&lt;a href=&quot;https://wiki.debian.org/DEP-11&quot;&gt;DEP-11&lt;/a&gt; proposal.&lt;/p&gt;
+
+&lt;p&gt;To locate the modalias values of all hardware present in a machine,
+try running this command on the command line:&lt;/p&gt;
+
+&lt;blockquote&gt;&lt;pre&gt;
+cat $(find /sys/devices/|grep modalias)
+&lt;/pre&gt;&lt;/blockquote&gt;
+
+&lt;p&gt;To learn more about the isenkram system, please check out
+&lt;a href=&quot;http://people.skolelinux.org/pere/blog/tags/isenkram/&quot;&gt;my
+blog posts tagged isenkram&lt;/a&gt;.&lt;/p&gt;
+</description>
+       </item>
+       
+       <item>
+               <title>The GNU General Public License is not magic pixie dust</title>
+               <link>http://people.skolelinux.org/pere/blog/The_GNU_General_Public_License_is_not_magic_pixie_dust.html</link>
+               <guid isPermaLink="true">http://people.skolelinux.org/pere/blog/The_GNU_General_Public_License_is_not_magic_pixie_dust.html</guid>
+                <pubDate>Mon, 30 Nov 2015 09:55:00 +0100</pubDate>
+               <description>&lt;p&gt;A blog post from my fellow Debian developer Paul Wise titled
+&quot;&lt;a href=&quot;http://bonedaddy.net/pabs3/log/2015/11/27/sfc-supporter/&quot;&gt;The
+GPL is not magic pixie dust&lt;/a&gt;&quot; explain the importance of making sure
+the &lt;a href=&quot;http://www.gnu.org/copyleft/gpl.html&quot;&gt;GPL&lt;/a&gt; is enforced.
+I quote the blog post from Paul in full here with his permission:&lt;p&gt;
+
+&lt;blockquote&gt;
+
+&lt;p&gt;&lt;a href=&quot;https://sfconservancy.org/supporter/&quot;&gt;&lt;img src=&quot;https://sfconservancy.org/img/supporter-badge.png&quot; width=&quot;194&quot; height=&quot;90&quot; alt=&quot;Become a Software Freedom Conservancy Supporter!&quot; align=&quot;right&quot; border=&quot;0&quot; /&gt;&lt;/a&gt;&lt;/p&gt;
+
+&lt;blockquote&gt;
+The GPL is not magic pixie dust. It does not work by itself.&lt;br/&gt;
+
+The first step is to choose a
+&lt;a href=&quot;https://copyleft.org/&quot;&gt;copyleft&lt;/a&gt; license for your
+code.&lt;br/&gt;
+
+The next step is, when someone fails to follow that copyleft license,
+&lt;b&gt;it must be enforced&lt;/b&gt;&lt;br/&gt;
+
+and its a simple fact of our modern society that such type of
+work&lt;br/&gt;
+
+is incredibly expensive to do and incredibly difficult to do.
+&lt;/blockquote&gt;
+
+&lt;p&gt;&lt;small&gt;-- &lt;a href=&quot;http://ebb.org/bkuhn/&quot;&gt;Bradley Kuhn&lt;/a&gt;, in
+&lt;a href=&quot;http://faif.us/&quot; title=&quot;Free as in Freedom&quot;&gt;FaiF&lt;/a&gt;
+&lt;a href=&quot;http://faif.us/cast/2015/nov/24/0x57/&quot;&gt;episode
+0x57&lt;/a&gt;&lt;/small&gt;&lt;/p&gt;
+
+&lt;p&gt;As the Debian Website
+&lt;a href=&quot;https://bugs.debian.org/794116&quot;&gt;used&lt;/a&gt;
+&lt;a href=&quot;https://anonscm.debian.org/viewvc/webwml/webwml/english/intro/free.wml?r1=1.24&amp;amp;r2=1.25&quot;&gt;to&lt;/a&gt;
+imply, public domain and permissively licensed software can lead to
+the production of more proprietary software as people discover useful
+software, extend it and or incorporate it into their hardware or
+software products.  Copyleft licenses such as the GNU GPL were created
+to close off this avenue to the production of proprietary software but
+such licenses are not enough.  With the ongoing adoption of Free
+Software by individuals and groups, inevitably the community&#39;s
+expectations of license compliance are violated, usually out of
+ignorance of the way Free Software works, but not always.  As Karen
+and Bradley explained in &lt;a href=&quot;http://faif.us/&quot; title=&quot;Free as in
+Freedom&quot;&gt;FaiF&lt;/a&gt;
+&lt;a href=&quot;http://faif.us/cast/2015/nov/24/0x57/&quot;&gt;episode 0x57&lt;/a&gt;,
+copyleft is nothing if no-one is willing and able to stand up in court
+to protect it.  The reality of today&#39;s world is that legal
+representation is expensive, difficult and time consuming.  With
+&lt;a href=&quot;http://gpl-violations.org/&quot;&gt;gpl-violations.org&lt;/a&gt; in hiatus
+&lt;a href=&quot;http://gpl-violations.org/news/20151027-homepage-recovers/&quot;&gt;until&lt;/a&gt;
+some time in 2016, the &lt;a href=&quot;https://sfconservancy.org/&quot;&gt;Software
+Freedom Conservancy&lt;/a&gt; (a tax-exempt charity) is the major defender
+of the Linux project, Debian and other groups against GPL violations.
+In March the SFC supported a
+&lt;a href=&quot;https://sfconservancy.org/news/2015/mar/05/vmware-lawsuit/&quot;&gt;lawsuit
+by Christoph Hellwig&lt;/a&gt; against VMware for refusing to
+&lt;a href=&quot;https://sfconservancy.org/linux-compliance/vmware-lawsuit-faq.html&quot;&gt;comply
+with the GPL&lt;/a&gt; in relation to their use of parts of the Linux
+kernel.  Since then two of their sponsors pulled corporate funding and
+conferences
+&lt;a href=&quot;https://sfconservancy.org/blog/2015/nov/24/faif-carols-fundraiser/&quot;&gt;blocked
+or cancelled their talks&lt;/a&gt;.  As a result they have decided to rely
+less on corporate funding and more on the broad community of
+individuals who support Free Software and copyleft.  So the SFC has
+&lt;a href=&quot;https://sfconservancy.org/news/2015/nov/23/2015fundraiser/&quot;&gt;launched&lt;/a&gt;
+a &lt;a href=&quot;https://sfconservancy.org/supporter/&quot;&gt;campaign&lt;/a&gt; to create
+a community of folks who stand up for copyleft and the GPL by
+supporting their work on promoting and supporting copyleft and Free
+Software.&lt;/p&gt;
+
+&lt;p&gt;If you support Free Software,
+&lt;a href=&quot;https://sfconservancy.org/blog/2015/nov/26/like-what-I-do/&quot;&gt;like&lt;/a&gt;
+what the SFC do, agree with their
+&lt;a href=&quot;https://sfconservancy.org/linux-compliance/principles.html&quot;&gt;compliance
+principles&lt;/a&gt;, are happy about their
+&lt;a href=&quot;https://sfconservancy.org/supporter/&quot;&gt;successes&lt;/a&gt; in 2015,
+work on a project that is an SFC
+&lt;a href=&quot;https://sfconservancy.org/members/current/&quot;&gt;member&lt;/a&gt; and or
+just want to stand up for copyleft, please join
+&lt;a href=&quot;https://identi.ca/cwebber/image/JQGPA4qbTyyp3-MY8QpvuA&quot;&gt;Christopher
+Allan Webber&lt;/a&gt;,
+&lt;a href=&quot;https://sfconservancy.org/blog/2015/nov/24/faif-carols-fundraiser/&quot;&gt;Carol
+Smith&lt;/a&gt;,
+&lt;a href=&quot;http://www.jonobacon.org/2015/11/25/supporting-software-freedom-conservancy/&quot;&gt;Jono
+Bacon&lt;/a&gt;, myself and
+&lt;a href=&quot;https://sfconservancy.org/sponsors/#supporters&quot;&gt;others&lt;/a&gt; in
+becoming a
+&lt;a href=&quot;https://sfconservancy.org/supporter/&quot;&gt;supporter&lt;/a&gt;.  For the
+next week your donation will be
+&lt;a href=&quot;https://sfconservancy.org/news/2015/nov/27/black-friday/&quot;&gt;matched&lt;/a&gt;
+by an anonymous donor.  Please also consider asking your employer to
+match your donation or become a sponsor of SFC.  Don&#39;t forget to
+spread the word about your support for SFC via email, your blog and or
+social media accounts.&lt;/p&gt;
+
+&lt;/blockquote&gt;
+
+&lt;p&gt;I agree with Paul on this topic and just signed up as a Supporter
+of Software Freedom Conservancy myself.  Perhaps you should be a
+supporter too?&lt;/p&gt;
+</description>
+       </item>
+       
+       <item>
+               <title>PGP key transition statement for key EE4E02F9</title>
+               <link>http://people.skolelinux.org/pere/blog/PGP_key_transition_statement_for_key_EE4E02F9.html</link>
+               <guid isPermaLink="true">http://people.skolelinux.org/pere/blog/PGP_key_transition_statement_for_key_EE4E02F9.html</guid>
+                <pubDate>Tue, 17 Nov 2015 10:50:00 +0100</pubDate>
+               <description>&lt;p&gt;I&#39;ve needed a new OpenPGP key for a while, but have not had time to
+set it up properly.  I wanted to generate it offline and have it
+available on &lt;a href=&quot;http://shop.kernelconcepts.de/#openpgp&quot;&gt;a OpenPGP
+smart card&lt;/a&gt; for daily use, and learning how to do it and finding
+time to sit down with an offline machine almost took forever.  But
+finally I&#39;ve been able to complete the process, and have now moved
+from my old GPG key to a new GPG key.  See
+&lt;a href=&quot;http://people.skolelinux.org/pere/blog/images/2015-11-17-new-gpg-key-transition.txt&quot;&gt;the
+full transition statement, signed with both my old and new key&lt;/a&gt; for
+the details.  This is my new key:&lt;/p&gt;
+
+&lt;pre&gt;
+pub   3936R/&lt;a href=&quot;http://pgp.cs.uu.nl/stats/111D6B29EE4E02F9.html&quot;&gt;111D6B29EE4E02F9&lt;/a&gt; 2015-11-03 [expires: 2019-11-14]
+      Key fingerprint = 3AC7 B2E3 ACA5 DF87 78F1  D827 111D 6B29 EE4E 02F9
+uid                  Petter Reinholdtsen &amp;lt;pere@hungry.com&amp;gt;
+uid                  Petter Reinholdtsen &amp;lt;pere@debian.org&amp;gt;
+sub   4096R/87BAFB0E 2015-11-03 [expires: 2019-11-02]
+sub   4096R/F91E6DE9 2015-11-03 [expires: 2019-11-02]
+sub   4096R/A0439BAB 2015-11-03 [expires: 2019-11-02]
+&lt;/pre&gt;
+
+&lt;p&gt;The key can be downloaded from the OpenPGP key servers, signed by
+my old key.&lt;/p&gt;
+
+&lt;p&gt;If you signed my old key
+(&lt;a href=&quot;http://pgp.cs.uu.nl/stats/DB4CCC4B2A30D729.html&quot;&gt;DB4CCC4B2A30D729&lt;/a&gt;),
+I&#39;d very much appreciate a signature on my new key, details and
+instructions in the transition statement. I m happy to reciprocate if
+you have a similarly signed transition statement to present.&lt;/p&gt;
+</description>
+       </item>
+       
+       <item>
+               <title>The life and death of a laptop battery</title>
+               <link>http://people.skolelinux.org/pere/blog/The_life_and_death_of_a_laptop_battery.html</link>
+               <guid isPermaLink="true">http://people.skolelinux.org/pere/blog/The_life_and_death_of_a_laptop_battery.html</guid>
+                <pubDate>Thu, 24 Sep 2015 16:00:00 +0200</pubDate>
+               <description>&lt;p&gt;When I get a new laptop, the battery life time at the start is OK.
+But this do not last.  The last few laptops gave me a feeling that
+within a year, the life time is just a fraction of what it used to be,
+and it slowly become painful to use the laptop without power connected
+all the time.  Because of this, when I got a new Thinkpad X230 laptop
+about two years ago, I decided to monitor its battery state to have
+more hard facts when the battery started to fail.&lt;/p&gt;
+
+&lt;img src=&quot;http://people.skolelinux.org/pere/blog/images/2015-09-24-laptop-battery-graph.png&quot;/&gt;
+
+&lt;p&gt;First I tried to find a sensible Debian package to record the
+battery status, assuming that this must be a problem already handled
+by someone else.  I found
+&lt;a href=&quot;https://tracker.debian.org/pkg/battery-stats&quot;&gt;battery-stats&lt;/a&gt;,
+which collects statistics from the battery, but it was completely
+broken.  I sent a few suggestions to the maintainer, but decided to
+write my own collector as a shell script while I waited for feedback
+from him.  Via
+&lt;a href=&quot;http://www.ifweassume.com/2013/08/the-de-evolution-of-my-laptop-battery.html&quot;&gt;a
+blog post about the battery development on a MacBook Air&lt;/a&gt; I also
+discovered
+&lt;a href=&quot;https://github.com/jradavenport/batlog.git&quot;&gt;batlog&lt;/a&gt;, not
+available in Debian.&lt;/p&gt;
+
+&lt;p&gt;I started my collector 2013-07-15, and it has been collecting
+battery stats ever since. Now my
+/var/log/hjemmenett-battery-status.log file contain around 115,000
+measurements, from the time the battery was working great until now,
+when it is unable to charge above 7% of original capacity.  My
+collector shell script is quite simple and look like this:&lt;/p&gt;
+
+&lt;pre&gt;
+#!/bin/sh
+# Inspired by
+# http://www.ifweassume.com/2013/08/the-de-evolution-of-my-laptop-battery.html
+# See also
+# http://blog.sleeplessbeastie.eu/2013/01/02/debian-how-to-monitor-battery-capacity/
+logfile=/var/log/hjemmenett-battery-status.log
+
+files=&quot;manufacturer model_name technology serial_number \
+    energy_full energy_full_design energy_now cycle_count status&quot;
+
+if [ ! -e &quot;$logfile&quot; ] ; then
+    (
+       printf &quot;timestamp,&quot;
+       for f in $files; do
+           printf &quot;%s,&quot; $f
+       done
+       echo
+    ) &gt; &quot;$logfile&quot;
+fi
+
+log_battery() {
+    # Print complete message in one echo call, to avoid race condition
+    # when several log processes run in parallel.
+    msg=$(printf &quot;%s,&quot; $(date +%s); \
+       for f in $files; do \
+           printf &quot;%s,&quot; $(cat $f); \
+       done)
+    echo &quot;$msg&quot;
+}
+
+cd /sys/class/power_supply
+
+for bat in BAT*; do
+    (cd $bat &amp;&amp; log_battery &gt;&gt; &quot;$logfile&quot;)
+done
+&lt;/pre&gt;
+
+&lt;p&gt;The script is called when the power management system detect a
+change in the power status (power plug in or out), and when going into
+and out of hibernation and suspend.  In addition, it collect a value
+every 10 minutes.  This make it possible for me know when the battery
+is discharging, charging and how the maximum charge change over time.
+The code for the Debian package
+&lt;a href=&quot;https://github.com/petterreinholdtsen/battery-status&quot;&gt;is now
+available on github&lt;/a&gt;.&lt;/p&gt;
+
+&lt;p&gt;The collected log file look like this:&lt;/p&gt;
+
+&lt;pre&gt;
+timestamp,manufacturer,model_name,technology,serial_number,energy_full,energy_full_design,energy_now,cycle_count,status,
+1376591133,LGC,45N1025,Li-ion,974,62800000,62160000,39050000,0,Discharging,
+[...]
+1443090528,LGC,45N1025,Li-ion,974,4900000,62160000,4900000,0,Full,
+1443090601,LGC,45N1025,Li-ion,974,4900000,62160000,4900000,0,Full,
+&lt;/pre&gt;
+
+&lt;p&gt;I wrote a small script to create a graph of the charge development
+over time.  This graph depicted above show the slow death of my laptop
+battery.&lt;/p&gt;
+
+&lt;p&gt;But why is this happening?  Why are my laptop batteries always
+dying in a year or two, while the batteries of space probes and
+satellites keep working year after year.  If we are to believe
+&lt;a href=&quot;http://batteryuniversity.com/learn/article/how_to_prolong_lithium_based_batteries&quot;&gt;Battery
+University&lt;/a&gt;, the cause is me charging the battery whenever I have a
+chance, and the fix is to not charge the Lithium-ion batteries to 100%
+all the time, but to stay below 90% of full charge most of the time.
+I&#39;ve been told that the Tesla electric cars
+&lt;a href=&quot;http://my.teslamotors.com/de_CH/forum/forums/battery-charge-limit&quot;&gt;limit
+the charge of their batteries to 80%&lt;/a&gt;, with the option to charge to
+100% when preparing for a longer trip (not that I would want a car
+like Tesla where rights to privacy is abandoned, but that is another
+story), which I guess is the option we should have for laptops on
+Linux too.&lt;/p&gt;
+
+&lt;p&gt;Is there a good and generic way with Linux to tell the battery to
+stop charging at 80%, unless requested to charge to 100% once in
+preparation for a longer trip?  I found
+&lt;a href=&quot;http://askubuntu.com/questions/34452/how-can-i-limit-battery-charging-to-80-capacity&quot;&gt;one
+recipe on askubuntu for Ubuntu to limit charging on Thinkpad to
+80%&lt;/a&gt;, but could not get it to work (kernel module refused to
+load).&lt;/p&gt;
+
+&lt;p&gt;I wonder why the battery capacity was reported to be more than 100%
+at the start.  I also wonder why the &quot;full capacity&quot; increases some
+times, and if it is possible to repeat the process to get the battery
+back to design capacity.  And I wonder if the discharge and charge
+speed change over time, or if this stay the same.  I did not yet try
+to write a tool to calculate the derivative values of the battery
+level, but suspect some interesting insights might be learned from
+those.&lt;/p&gt;
+
+&lt;p&gt;Update 2015-09-24: I got a tip to install the packages
+acpi-call-dkms and tlp (unfortunately missing in Debian stable)
+packages instead of the tp-smapi-dkms package I had tried to use
+initially, and use &#39;tlp setcharge 40 80&#39; to change when charging start
+and stop.  I&#39;ve done so now, but expect my existing battery is toast
+and need to be replaced.  The proposal is unfortunately Thinkpad
+specific.&lt;/p&gt;
+</description>
+       </item>
+       
+       <item>
+               <title>New laptop - some more clues and ideas based on feedback</title>
+               <link>http://people.skolelinux.org/pere/blog/New_laptop___some_more_clues_and_ideas_based_on_feedback.html</link>
+               <guid isPermaLink="true">http://people.skolelinux.org/pere/blog/New_laptop___some_more_clues_and_ideas_based_on_feedback.html</guid>
+                <pubDate>Sun, 5 Jul 2015 21:40:00 +0200</pubDate>
+               <description>&lt;p&gt;Several people contacted me after my previous blog post about my
+need for a new laptop, and provided very useful feedback.  I wish to
+thank every one of these.  Several pointed me to the possibility of
+fixing my X230, and I am already in the process of getting Lenovo to
+do so thanks to the on site, next day support contract covering the
+machine.  But the battery is almost useless (I expect to replace it
+with a non-official battery) and I do not expect the machine to live
+for many more years, so it is time to plan its replacement.  If I did
+not have a support contract, it was suggested to find replacement parts
+using &lt;a href=&quot;http://www.francecrans.com/&quot;&gt;FrancEcrans&lt;/a&gt;, but it
+might present a language barrier as I do not understand French.&lt;/p&gt;
+
+&lt;p&gt;One tip I got was to use the
+&lt;a href=&quot;https://skinflint.co.uk/?cat=nb&quot;&gt;Skinflint&lt;/a&gt; web service to
+compare laptop models.  It seem to have more models available than
+prisjakt.no.  Another tip I got from someone I know have similar
+keyboard preferences was that the HP EliteBook 840 keyboard is not
+very good, and this matches my experience with earlier EliteBook
+keyboards I tested.  Because of this, I will not consider it any further.
+
+&lt;p&gt;When I wrote my blog post, I was not aware of Thinkpad X250, the
+newest Thinkpad X model.  The keyboard reintroduces mouse buttons
+(which is missing from the X240), and is working fairly well with
+Debian Sid/Unstable according to
+&lt;a href=&quot;http://www.corsac.net/X250/&quot;&gt;Corsac.net&lt;/a&gt;.  The reports I
+got on the keyboard quality are not consistent.  Some say the keyboard
+is good, others say it is ok, while others say it is not very good.
+Those with experience from X41 and and X60 agree that the X250
+keyboard is not as good as those trusty old laptops, and suggest I
+keep and fix my X230 instead of upgrading, or get a used X230 to
+replace it.  I&#39;m also told that the X250 lack leds for caps lock, disk
+activity and battery status, which is very convenient on my X230.  I&#39;m
+also told that the CPU fan is running very often, making it a bit
+noisy.  In any case, the X250 do not work out of the box with Debian
+Stable/Jessie, one of my requirements.&lt;/p&gt;
+
+&lt;p&gt;I have also gotten a few vendor proposals, one was
+&lt;a href=&quot;http://pro-star.com&quot;&gt;Pro-Star&lt;/a&gt;, another was
+&lt;a href=&quot;http://shop.gluglug.org.uk/product/libreboot-x200/&quot;&gt;Libreboot&lt;/a&gt;.
+The latter look very attractive to me.&lt;/p&gt;
+
+&lt;p&gt;Again, thank you all for the very useful feedback.  It help a lot
+as I keep looking for a replacement.&lt;/p&gt;
+
+&lt;p&gt;Update 2015-07-06: I was recommended to check out the
+&lt;a href=&quot;&quot;&gt;lapstore.de&lt;/a&gt; web shop for used laptops.  They got several
+different
+&lt;a href=&quot;http://www.lapstore.de/f.php/shop/lapstore/f/411/lang/x/kw/Lenovo_ThinkPad_X_Serie/&quot;&gt;old
+thinkpad X models&lt;/a&gt;, and provide one year warranty.&lt;/p&gt;
+</description>
+       </item>
+       
+       <item>
+               <title>Time to find a new laptop, as the old one is broken after only two years</title>
+               <link>http://people.skolelinux.org/pere/blog/Time_to_find_a_new_laptop__as_the_old_one_is_broken_after_only_two_years.html</link>
+               <guid isPermaLink="true">http://people.skolelinux.org/pere/blog/Time_to_find_a_new_laptop__as_the_old_one_is_broken_after_only_two_years.html</guid>
+                <pubDate>Fri, 3 Jul 2015 07:10:00 +0200</pubDate>
+               <description>&lt;p&gt;My primary work horse laptop is failing, and will need a
+replacement soon.  The left 5 cm of the screen on my Thinkpad X230
+started flickering yesterday, and I suspect the cause is a broken
+cable, as changing the angle of the screen some times get rid of the
+flickering.&lt;/p&gt;
+
+&lt;p&gt;My requirements have not really changed since I bought it, and is
+still as
+&lt;a href=&quot;http://people.skolelinux.org/pere/blog/Thank_you_Thinkpad_X41__for_your_long_and_trustworthy_service.html&quot;&gt;I
+described them in 2013&lt;/a&gt;.  The last time I bought a laptop, I had
+good help from
+&lt;a href=&quot;http://www.prisjakt.no/category.php?k=353&quot;&gt;prisjakt.no&lt;/a&gt;
+where I could select at least a few of the requirements (mouse pin,
+wifi, weight) and go through the rest manually.  Three button mouse
+and a good keyboard is not available as an option, and all the three
+laptop models proposed today (Thinkpad X240, HP EliteBook 820 G1 and
+G2) lack three mouse buttons).  It is also unclear to me how good the
+keyboard on the HP EliteBooks are.  I hope Lenovo have not messed up
+the keyboard, even if the quality and robustness in the X series have
+deteriorated since X41.&lt;/p&gt;
+
+&lt;p&gt;I wonder how I can find a sensible laptop when none of the options
+seem sensible to me?  Are there better services around to search the
+set of available laptops for features?  Please send me an email if you
+have suggestions.&lt;/p&gt;
+
+&lt;p&gt;Update 2015-07-23: I got a suggestion to check out the FSF
+&lt;a href=&quot;http://www.fsf.org/resources/hw/endorsement/respects-your-freedom&quot;&gt;list
+of endorsed hardware&lt;/a&gt;, which is useful background information.&lt;/p&gt;
+</description>
+       </item>
+       
+       <item>
+               <title>How to stay with sysvinit in Debian Jessie</title>
+               <link>http://people.skolelinux.org/pere/blog/How_to_stay_with_sysvinit_in_Debian_Jessie.html</link>
+               <guid isPermaLink="true">http://people.skolelinux.org/pere/blog/How_to_stay_with_sysvinit_in_Debian_Jessie.html</guid>
+                <pubDate>Sat, 22 Nov 2014 01:00:00 +0100</pubDate>
+               <description>&lt;p&gt;By now, it is well known that Debian Jessie will not be using
+sysvinit as its boot system by default.  But how can one keep using
+sysvinit in Jessie?  It is fairly easy, and here are a few recipes,
+courtesy of
+&lt;a href=&quot;http://www.vitavonni.de/blog/201410/2014102101-avoiding-systemd.html&quot;&gt;Erich
+Schubert&lt;/a&gt; and
+&lt;a href=&quot;http://smcv.pseudorandom.co.uk/2014/still_universal/&quot;&gt;Simon
+McVittie&lt;/a&gt;.
+
+&lt;p&gt;If you already are using Wheezy and want to upgrade to Jessie and
+keep sysvinit as your boot system, create a file
+&lt;tt&gt;/etc/apt/preferences.d/use-sysvinit&lt;/tt&gt; with this content before
+you upgrade:&lt;/p&gt;
+
+&lt;p&gt;&lt;blockquote&gt;&lt;pre&gt;
+Package: systemd-sysv
+Pin: release o=Debian
+Pin-Priority: -1
+&lt;/pre&gt;&lt;/blockquote&gt;&lt;p&gt;
+
+&lt;p&gt;This file content will tell apt and aptitude to not consider
+installing systemd-sysv as part of any installation and upgrade
+solution when resolving dependencies, and thus tell it to avoid
+systemd as a default boot system.  The end result should be that the
+upgraded system keep using sysvinit.&lt;/p&gt;
+
+&lt;p&gt;If you are installing Jessie for the first time, there is no way to
+get sysvinit installed by default (debootstrap used by
+debian-installer have no option for this), but one can tell the
+installer to switch to sysvinit before the first boot.  Either by
+using a kernel argument to the installer, or by adding a line to the
+preseed file used.  First, the kernel command line argument:
+
+&lt;p&gt;&lt;blockquote&gt;&lt;pre&gt;
+preseed/late_command=&quot;in-target apt-get install --purge -y sysvinit-core&quot;
+&lt;/pre&gt;&lt;/blockquote&gt;&lt;p&gt;
+
+&lt;p&gt;Next, the line to use in a preseed file:&lt;/p&gt;
+
+&lt;p&gt;&lt;blockquote&gt;&lt;pre&gt;
+d-i preseed/late_command string in-target apt-get install -y sysvinit-core
+&lt;/pre&gt;&lt;/blockquote&gt;&lt;p&gt;
+
+&lt;p&gt;One can of course also do this after the first boot by installing
+the sysvinit-core package.&lt;/p&gt;
+
+&lt;p&gt;I recommend only using sysvinit if you really need it, as the
+sysvinit boot sequence in Debian have several hardware specific bugs
+on Linux caused by the fact that it is unpredictable when hardware
+devices show up during boot.  But on the other hand, the new default
+boot system still have a few rough edges I hope will be fixed before
+Jessie is released.&lt;/p&gt;
+
+&lt;p&gt;Update 2014-11-26: Inspired by
+&lt;ahref=&quot;https://www.mirbsd.org/permalinks/wlog-10-tg_e20141125-tg.htm#e20141125-tg_wlog-10-tg&quot;&gt;a
+blog post by Torsten Glaser&lt;/a&gt;, added --purge to the preseed
+line.&lt;/p&gt;
+</description>
+       </item>
+       
+       <item>
+               <title>A Debian package for SMTP via Tor (aka SMTorP) using exim4</title>
+               <link>http://people.skolelinux.org/pere/blog/A_Debian_package_for_SMTP_via_Tor__aka_SMTorP__using_exim4.html</link>
+               <guid isPermaLink="true">http://people.skolelinux.org/pere/blog/A_Debian_package_for_SMTP_via_Tor__aka_SMTorP__using_exim4.html</guid>
+                <pubDate>Mon, 10 Nov 2014 13:40:00 +0100</pubDate>
+               <description>&lt;p&gt;The right to communicate with your friends and family in private,
+without anyone snooping, is a right every citicen have in a liberal
+democracy.  But this right is under serious attack these days.&lt;/p&gt;
+
+&lt;p&gt;A while back it occurred to me that one way to make the dragnet
+surveillance conducted by NSA, GCHQ, FRA and others (and confirmed by
+the whisleblower Snowden) more expensive for Internet email,
+is to deliver all email using SMTP via Tor.  Such SMTP option would be
+a nice addition to the FreedomBox project if we could send email
+between FreedomBox machines without leaking metadata about the emails
+to the people peeking on the wire.  I
+&lt;a href=&quot;http://lists.alioth.debian.org/pipermail/freedombox-discuss/2014-October/006493.html&quot;&gt;proposed
+this on the FreedomBox project mailing list in October&lt;/a&gt; and got a
+lot of useful feedback and suggestions.  It also became obvious to me
+that this was not a novel idea, as the same idea was tested and
+documented by Johannes Berg as early as 2006, and both
+&lt;a href=&quot;https://github.com/pagekite/Mailpile/wiki/SMTorP&quot;&gt;the
+Mailpile&lt;/a&gt; and &lt;a href=&quot;http://dee.su/cables&quot;&gt;the Cables&lt;/a&gt; systems
+propose a similar method / protocol to pass emails between users.&lt;/p&gt;
+
+&lt;p&gt;To implement such system one need to set up a Tor hidden service
+providing the SMTP protocol on port 25, and use email addresses
+looking like username@hidden-service-name.onion.  With such addresses
+the connections to port 25 on hidden-service-name.onion using Tor will
+go to the correct SMTP server.  To do this, one need to configure the
+Tor daemon to provide the hidden service and the mail server to accept
+emails for this .onion domain.  To learn more about Exim configuration
+in Debian and test the design provided by Johannes Berg in his FAQ, I
+set out yesterday to create a Debian package for making it trivial to
+set up such SMTP over Tor service based on Debian.  Getting it to work
+were fairly easy, and
+&lt;a href=&quot;https://github.com/petterreinholdtsen/exim4-smtorp&quot;&gt;the
+source code for the Debian package&lt;/a&gt; is available from github.  I
+plan to move it into Debian if further testing prove this to be a
+useful approach.&lt;/p&gt;
+
+&lt;p&gt;If you want to test this, set up a blank Debian machine without any
+mail system installed (or run &lt;tt&gt;apt-get purge exim4-config&lt;/tt&gt; to
+get rid of exim4).  Install tor, clone the git repository mentioned
+above, build the deb and install it on the machine.  Next, run
+&lt;tt&gt;/usr/lib/exim4-smtorp/setup-exim-hidden-service&lt;/tt&gt; and follow
+the instructions to get the service up and running.  Restart tor and
+exim when it is done, and test mail delivery using swaks like
+this:&lt;/p&gt;
+
+&lt;p&gt;&lt;blockquote&gt;&lt;pre&gt;
+torsocks swaks --server dutlqrrmjhtfa3vp.onion \
+  --to fbx@dutlqrrmjhtfa3vp.onion
+&lt;/pre&gt;&lt;/blockquote&gt;&lt;/p&gt;
+
+&lt;p&gt;This will test the SMTP delivery using tor.  Replace the email
+address with your own address to test your server. :)&lt;/p&gt;
+
+&lt;p&gt;The setup procedure is still to complex, and I hope it can be made
+easier and more automatic.  Especially the tor setup need more work.
+Also, the package include a tor-smtp tool written in C, but its task
+should probably be rewritten in some script language to make the deb
+architecture independent.  It would probably also make the code easier
+to review.  The tor-smtp tool currently need to listen on a socket for
+exim to talk to it and is started using xinetd.  It would be better if
+no daemon and no socket is needed.  I suspect it is possible to get
+exim to run a command line tool for delivery instead of talking to a
+socket, and hope to figure out how in a future version of this
+system.&lt;/p&gt;
+
+&lt;p&gt;Until I wipe my test machine, I can be reached using the
+&lt;tt&gt;fbx@dutlqrrmjhtfa3vp.onion&lt;/tt&gt; mail address, deliverable over
+SMTorP. :)&lt;/p&gt;
+</description>
+       </item>
+       
+       <item>
+               <title>listadmin, the quick way to moderate mailman lists - nice free software</title>
+               <link>http://people.skolelinux.org/pere/blog/listadmin__the_quick_way_to_moderate_mailman_lists___nice_free_software.html</link>
+               <guid isPermaLink="true">http://people.skolelinux.org/pere/blog/listadmin__the_quick_way_to_moderate_mailman_lists___nice_free_software.html</guid>
+                <pubDate>Wed, 22 Oct 2014 20:00:00 +0200</pubDate>
+               <description>&lt;p&gt;If you ever had to moderate a mailman list, like the ones on
+alioth.debian.org, you know the web interface is fairly slow to
+operate.  First you visit one web page, enter the moderation password
+and get a new page shown with a list of all the messages to moderate
+and various options for each email address.  This take a while for
+every list you moderate, and you need to do it regularly to do a good
+job as a list moderator.  But there is a quick alternative,
+&lt;a href=&quot;http://heim.ifi.uio.no/kjetilho/hacks/#listadmin&quot;&gt;the
+listadmin program&lt;/a&gt;.  It allow you to check lists for new messages
+to moderate in a fraction of a second.  Here is a test run on two
+lists I recently took over:&lt;/p&gt;
+
+&lt;p&gt;&lt;blockquote&gt;&lt;pre&gt;
+% time listadmin xiph
+fetching data for pkg-xiph-commits@lists.alioth.debian.org ... nothing in queue
+fetching data for pkg-xiph-maint@lists.alioth.debian.org ... nothing in queue
+
+real    0m1.709s
+user    0m0.232s
+sys     0m0.012s
+%
+&lt;/pre&gt;&lt;/blockquote&gt;&lt;/p&gt;
+
+&lt;p&gt;In 1.7 seconds I had checked two mailing lists and confirmed that
+there are no message in the moderation queue.  Every morning I
+currently moderate 68 mailman lists, and it normally take around two
+minutes.  When I took over the two pkg-xiph lists above a few days
+ago, there were 400 emails waiting in the moderator queue.  It took me
+less than 15 minutes to process them all using the listadmin
+program.&lt;/p&gt;
+
+&lt;p&gt;If you install
+&lt;a href=&quot;https://tracker.debian.org/pkg/listadmin&quot;&gt;the listadmin
+package&lt;/a&gt; from Debian and create a file &lt;tt&gt;~/.listadmin.ini&lt;/tt&gt;
+with content like this, the moderation task is a breeze:&lt;/p&gt;
+
+&lt;p&gt;&lt;blockquote&gt;&lt;pre&gt;
+username username@example.org
+spamlevel 23
+default discard
+discard_if_reason &quot;Posting restricted to members only. Remove us from your mail list.&quot;
+
+password secret
+adminurl https://{domain}/mailman/admindb/{list}
+mailman-list@lists.example.com
+
+password hidden
+other-list@otherserver.example.org
+&lt;/pre&gt;&lt;/blockquote&gt;&lt;/p&gt;
+
+&lt;p&gt;There are other options to set as well.  Check the manual page to
+learn the details.&lt;/p&gt;
+
+&lt;p&gt;If you are forced to moderate lists on a mailman installation where
+the SSL certificate is self signed or not properly signed by a
+generally accepted signing authority, you can set a environment
+variable when calling listadmin to disable SSL verification:&lt;/p&gt;
+
+&lt;p&gt;&lt;blockquote&gt;&lt;pre&gt;
+PERL_LWP_SSL_VERIFY_HOSTNAME=0 listadmin
+&lt;/pre&gt;&lt;/blockquote&gt;&lt;/p&gt;
+
+&lt;p&gt;If you want to moderate a subset of the lists you take care of, you
+can provide an argument to the listadmin script like I do in the
+initial screen dump (the xiph argument).  Using an argument, only
+lists matching the argument string will be processed.  This make it
+quick to accept messages if you notice the moderation request in your
+email.&lt;/p&gt;
+
+&lt;p&gt;Without the listadmin program, I would never be the moderator of 68
+mailing lists, as I simply do not have time to spend on that if the
+process was any slower. The listadmin program have saved me hours of
+time I could spend elsewhere over the years.  It truly is nice free
+software.&lt;/p&gt;
+
+&lt;p&gt;As usual, if you use Bitcoin and want to show your support of my
+activities, please send Bitcoin donations to my address
+&lt;b&gt;&lt;a href=&quot;bitcoin:15oWEoG9dUPovwmUL9KWAnYRtNJEkP1u1b&quot;&gt;15oWEoG9dUPovwmUL9KWAnYRtNJEkP1u1b&lt;/a&gt;&lt;/b&gt;.&lt;/p&gt;
+
+&lt;p&gt;Update 2014-10-27: Added missing &#39;username&#39; statement in
+configuration example.  Also, I&#39;ve been told that the
+PERL_LWP_SSL_VERIFY_HOSTNAME=0 setting do not work for everyone.  Not
+sure why.&lt;/p&gt;
+</description>
+       </item>
+       
        <item>
                <title>Debian Jessie, PXE and automatic firmware installation</title>
                <link>http://people.skolelinux.org/pere/blog/Debian_Jessie__PXE_and_automatic_firmware_installation.html</link>
        <item>
                <title>Debian Jessie, PXE and automatic firmware installation</title>
                <link>http://people.skolelinux.org/pere/blog/Debian_Jessie__PXE_and_automatic_firmware_installation.html</link>
@@ -59,7 +3824,7 @@ default, while the one for user space programs is not.  This split is
 implemented in the package currently in unstable.&lt;/p&gt;
 
 &lt;p&gt;If you decide to give this a go, please let me know (via email) how
 implemented in the package currently in unstable.&lt;/p&gt;
 
 &lt;p&gt;If you decide to give this a go, please let me know (via email) how
-this recipe work for you if you decide to give it a go. :)&lt;/p&gt;
+this recipe work for you. :)&lt;/p&gt;
 
 &lt;p&gt;So, I bet you are wondering, how can this work.  First and
 foremost, it work because tasksel is modular, and driven by whatever
 
 &lt;p&gt;So, I bet you are wondering, how can this work.  First and
 foremost, it work because tasksel is modular, and driven by whatever
@@ -109,9 +3874,9 @@ installed, run &lt;tt&gt;DEBIAN_PRIORITY=critical tasksel --test
 --new-install&lt;/tt&gt; to get the list of packages that tasksel would
 install.&lt;/p&gt;
 
 --new-install&lt;/tt&gt; to get the list of packages that tasksel would
 install.&lt;/p&gt;
 
-&lt;p&gt;&lt;ahref=&quot;https://wiki.debian.org/DebianEdu/&quot;&gt;Debian Edu&lt;/a&gt; will be
-pilots in testing this feature, as isenkram is used to install
-firmware now.&lt;/p&gt;
+&lt;p&gt;&lt;a href=&quot;https://wiki.debian.org/DebianEdu/&quot;&gt;Debian Edu&lt;/a&gt; will be
+pilots in testing this feature, as isenkram is used there now to
+install firmware, replacing the earlier scripts.&lt;/p&gt;
 </description>
        </item>
        
 </description>
        </item>
        
@@ -486,8 +4251,20 @@ everyone.&lt;/p&gt;
 
 &lt;p&gt;Update 2014-09-24: Since a few days ago, enabling this optimization
 will break installation of all programs using gnutls because of
 
 &lt;p&gt;Update 2014-09-24: Since a few days ago, enabling this optimization
 will break installation of all programs using gnutls because of
-&lt;a href=&quot;https://bugs.debian.org/702711&quot;&gt;bug #702711.  An updated
+&lt;a href=&quot;https://bugs.debian.org/702711&quot;&gt;bug #702711&lt;/a&gt;.  An updated
 eatmydata package in Debian will solve it.&lt;/p&gt;
 eatmydata package in Debian will solve it.&lt;/p&gt;
+
+&lt;p&gt;Update 2014-10-17: The bug mentioned above is fixed in testing and
+the optimization work again.  And I have discovered that the
+dpkg-divert trick is not really needed and implemented a slightly
+simpler approach as part of the debian-edu-install package.  See
+tools/edu-eatmydata-install in the source package.&lt;/p&gt;
+
+&lt;p&gt;Update 2014-11-11: Unfortunately, a new
+&lt;a href=&quot;http://bugs.debian.org/765738&quot;&gt;bug #765738&lt;/a&gt; in eatmydata only
+triggering on i386 made it into testing, and broke this installation
+optimization again.  If &lt;a href=&quot;http://bugs.debian.org/768893&quot;&gt;unblock
+request 768893&lt;/a&gt; is accepted, it should be working again.&lt;/p&gt;
 </description>
        </item>
        
 </description>
        </item>
        
@@ -1104,7 +4881,7 @@ only read from it.&lt;/p&gt;
 
 &lt;p&gt;As usual, if you use Bitcoin and want to show your support of my
 activities, please send Bitcoin donations to my address
 
 &lt;p&gt;As usual, if you use Bitcoin and want to show your support of my
 activities, please send Bitcoin donations to my address
-&lt;b&gt;&lt;a href=&quot;bitcoin:15oWEoG9dUPovwmUL9KWAnYRtNJEkP1u1b&amp;label=PetterReinholdtsenBlog&quot;&gt;15oWEoG9dUPovwmUL9KWAnYRtNJEkP1u1b&lt;/a&gt;&lt;/b&gt;.&lt;/p&gt;
+&lt;b&gt;&lt;a href=&quot;bitcoin:15oWEoG9dUPovwmUL9KWAnYRtNJEkP1u1b&quot;&gt;15oWEoG9dUPovwmUL9KWAnYRtNJEkP1u1b&lt;/a&gt;&lt;/b&gt;.&lt;/p&gt;
 </description>
        </item>
        
 </description>
        </item>
        
@@ -2747,7 +6524,7 @@ it. :)&lt;/p&gt;
 
 &lt;p&gt;As usual, if you use bitcoin and want to show your support of my
 activities, please send Bitcoin donations to my address
 
 &lt;p&gt;As usual, if you use bitcoin and want to show your support of my
 activities, please send Bitcoin donations to my address
-&lt;b&gt;&lt;a href=&quot;bitcoin:15oWEoG9dUPovwmUL9KWAnYRtNJEkP1u1b&amp;label=PetterReinholdtsenBlog&quot;&gt;15oWEoG9dUPovwmUL9KWAnYRtNJEkP1u1b&lt;/a&gt;&lt;/b&gt;.&lt;/p&gt;
+&lt;b&gt;&lt;a href=&quot;bitcoin:15oWEoG9dUPovwmUL9KWAnYRtNJEkP1u1b&quot;&gt;15oWEoG9dUPovwmUL9KWAnYRtNJEkP1u1b&lt;/a&gt;&lt;/b&gt;.&lt;/p&gt;
 </description>
        </item>
        
 </description>
        </item>
        
@@ -3668,7 +7445,7 @@ not be able to get all the features out of the client.&lt;/p&gt;
 
 &lt;p&gt;As usual, if you use bitcoin and want to show your support of my
 activities, please send Bitcoin donations to my address
 
 &lt;p&gt;As usual, if you use bitcoin and want to show your support of my
 activities, please send Bitcoin donations to my address
-&lt;b&gt;&lt;a href=&quot;bitcoin:15oWEoG9dUPovwmUL9KWAnYRtNJEkP1u1b&amp;label=PetterReinholdtsenBlog&quot;&gt;15oWEoG9dUPovwmUL9KWAnYRtNJEkP1u1b&lt;/a&gt;&lt;/b&gt;.&lt;/p&gt;
+&lt;b&gt;&lt;a href=&quot;bitcoin:15oWEoG9dUPovwmUL9KWAnYRtNJEkP1u1b&quot;&gt;15oWEoG9dUPovwmUL9KWAnYRtNJEkP1u1b&lt;/a&gt;&lt;/b&gt;.&lt;/p&gt;
 </description>
        </item>
        
 </description>
        </item>
        
@@ -3737,7 +7514,7 @@ bitcoin is not quite anonymous and untracked. :) I wonder if the
 number of users have gone up since then.  If you use bitcoin and want
 to show your support of my activity, please send Bitcoin donations to
 the same address as last time,
 number of users have gone up since then.  If you use bitcoin and want
 to show your support of my activity, please send Bitcoin donations to
 the same address as last time,
-&lt;b&gt;&lt;a href=&quot;bitcoin:15oWEoG9dUPovwmUL9KWAnYRtNJEkP1u1b&amp;label=PetterReinholdtsenBlog&quot;&gt;15oWEoG9dUPovwmUL9KWAnYRtNJEkP1u1b&lt;/a&gt;&lt;/b&gt;.&lt;/p&gt;
+&lt;b&gt;&lt;a href=&quot;bitcoin:15oWEoG9dUPovwmUL9KWAnYRtNJEkP1u1b&quot;&gt;15oWEoG9dUPovwmUL9KWAnYRtNJEkP1u1b&lt;/a&gt;&lt;/b&gt;.&lt;/p&gt;
 </description>
        </item>
        
 </description>
        </item>