]> pere.pagekite.me Git - homepage.git/blobdiff - blog/tags/isenkram/index.html
Generated.
[homepage.git] / blog / tags / isenkram / index.html
index 7050744928fced5aa14330a65a318e3f0132064b..f2ffe54078596e3b2e14f82117e329b37c851dd8 100644 (file)
 
     <h3>Entries tagged "isenkram".</h3>
     
+    <div class="entry">
+      <div class="title">
+        <a href="http://people.skolelinux.org/pere/blog/Isenkram__Appstream_and_udev_make_life_as_a_LEGO_builder_easier.html">Isenkram, Appstream and udev make life as a LEGO builder easier</a>
+      </div>
+      <div class="date">
+         7th October 2016
+      </div>
+      <div class="body">
+        <p><a href="http://packages.qa.debian.org/isenkram">The Isenkram
+system</a> provide a practical and easy way to figure out which
+packages support the hardware in a given machine.  The command line
+tool <tt>isenkram-lookup</tt> 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 <tt>pcscd</tt> if
+that package isn't already installed, and if you plug in a USB video
+camera the system will ask if you want to install <tt>cheese</tt> if
+cheese is currently missing.  This already work just fine.</p>
+
+<p>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.</p>
+
+<p>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.</p>
+
+<p>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
+<a href="http://people.skolelinux.org/pere/blog/Using_appstream_with_isenkram_to_install_hardware_related_packages_in_Debian.html">a
+recipe on how to add such meta-information</a> in a blog post last
+December.  If you have a hardware related package in Debian, please
+announce the relevant hardware IDs using AppStream.</p>
+
+<p>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.</p>
+
+<p>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 <tt>/lib/udev/rules.d/70-udev-acl.rules</tt>
+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.</p>
+
+<p>The new system uses a udev tag, 'uaccess'.  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
+<tt>/lib/udev/rules.d/60-nqc.rules</tt> file now look like this:
+
+<p><pre>
+SUBSYSTEM=="usb", ACTION=="add", ATTR{idVendor}=="0694", ATTR{idProduct}=="0001", \
+    SYMLINK+="rcx-%k", TAG+="uaccess"
+</pre></p>
+
+<p>The key part is the 'TAG+="uaccess"' 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
+<tt>70-uaccess.rules</tt>).  Perhaps a lintian check should be created
+to detect this?</p>
+
+<p>I'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
+<tt>/lib/udev/rules.d/70-udev-acl.rules</tt>.  If it is, I guess the
+indirect method is the preferred way.  Michael
+<a href="https://github.com/systemd/systemd/issues/4288">asked for more
+documentation from the systemd project</a> and I hope it will make
+this clearer.  For now I use the generic classes when they exist and
+is already handled by <tt>70-uaccess.rules</tt>, and add the tag
+directly if no such class exist.</p>
+
+<p>To learn more about the isenkram system, please check out
+<a href="http://people.skolelinux.org/pere/blog/tags/isenkram/">my
+blog posts tagged isenkram</a>.</p>
+
+<p>To help out making life for LEGO constructors in Debian easier,
+please join us on our IRC channel
+<a href="irc://irc.debian.org/%23debian-lego">#debian-lego</a> and join
+the <a href="https://alioth.debian.org/projects/debian-lego/">Debian
+LEGO team</a> in the Alioth project we created yesterday.  A mailing
+list is not yet created, but we are working on it. :)</p>
+
+<p>As usual, if you use Bitcoin and want to show your support of my
+activities, please send Bitcoin donations to my address
+<b><a href="bitcoin:15oWEoG9dUPovwmUL9KWAnYRtNJEkP1u1b&label=PetterReinholdtsenBlog">15oWEoG9dUPovwmUL9KWAnYRtNJEkP1u1b</a></b>.</p>
+
+      </div>
+      <div class="tags">
+        
+        
+        Tags: <a href="http://people.skolelinux.org/pere/blog/tags/debian">debian</a>, <a href="http://people.skolelinux.org/pere/blog/tags/english">english</a>, <a href="http://people.skolelinux.org/pere/blog/tags/isenkram">isenkram</a>.
+        
+        
+      </div>
+    </div>
+    <div class="padding"></div>
+    
+    <div class="entry">
+      <div class="title">
+        <a href="http://people.skolelinux.org/pere/blog/Isenkram_with_PackageKit_support___new_version_0_23_available_in_Debian_unstable.html">Isenkram with PackageKit support - new version 0.23 available in Debian unstable</a>
+      </div>
+      <div class="date">
+        25th May 2016
+      </div>
+      <div class="body">
+        <p><a href="https://tracker.debian.org/pkg/isenkram">The isenkram
+system</a> 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).</p>
+
+<p>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
+<a href="http://www.freedesktop.org/software/PackageKit/">PackageKit</a>,
+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'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 <tt>isenkram</tt> package and insert some hardware dongle
+and see if it is recognised.</p>
+
+<p>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:</p>
+
+<p><blockquote><pre>
+% isenkram-lookup 
+bluez
+cheese
+fprintd
+fprintd-demo
+gkrellm-thinkbat
+hdapsd
+libpam-fprintd
+pidgin-blinklight
+thinkfan
+tleds
+tp-smapi-dkms
+tp-smapi-source
+tpb
+%p
+</pre></blockquote></p>
+
+<p>The hardware mappings come from several places.  The preferred way
+is for packages to announce their hardware support using
+<a href="https://www.freedesktop.org/software/appstream/docs/">the
+cross distribution appstream system</a>.
+See
+<a href="http://people.skolelinux.org/pere/blog/tags/isenkram/">previous
+blog posts about isenkram</a> to learn how to do that.</p>
+
+      </div>
+      <div class="tags">
+        
+        
+        Tags: <a href="http://people.skolelinux.org/pere/blog/tags/debian">debian</a>, <a href="http://people.skolelinux.org/pere/blog/tags/english">english</a>, <a href="http://people.skolelinux.org/pere/blog/tags/isenkram">isenkram</a>.
+        
+        
+      </div>
+    </div>
+    <div class="padding"></div>
+    
+    <div class="entry">
+      <div class="title">
+        <a href="http://people.skolelinux.org/pere/blog/Using_appstream_with_isenkram_to_install_hardware_related_packages_in_Debian.html">Using appstream with isenkram to install hardware related packages in Debian</a>
+      </div>
+      <div class="date">
+        20th December 2015
+      </div>
+      <div class="body">
+        <p>Around three years ago, I created
+<a href="http://packages.qa.debian.org/isenkram">the isenkram
+system</a> 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.</p>
+
+<p>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,
+<a href="http://www.freedesktop.org/software/appstream/docs/">the
+appstream system</a> 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.</p>
+
+<p>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
+<a href="https://appstream.debian.org/html/sid/main/metainfo/pymissile.html">metadata
+in pymissile</a>.  I added a file debian/pymissile.metainfo.xml with
+this content:</p>
+
+<blockquote><pre>
+&lt;?xml version="1.0" encoding="UTF-8"?&gt;
+&lt;component&gt;
+  &lt;id&gt;pymissile&lt;/id&gt;
+  &lt;metadata_license&gt;MIT&lt;/metadata_license&gt;
+  &lt;name&gt;pymissile&lt;/name&gt;
+  &lt;summary&gt;Control original Striker USB Missile Launcher&lt;/summary&gt;
+  &lt;description&gt;
+    &lt;p&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.
+    &lt;/p&gt;
+  &lt;/description&gt;
+  &lt;provides&gt;
+    &lt;modalias&gt;usb:v1130p0202d*&lt;/modalias&gt;
+  &lt;/provides&gt;
+&lt;/component&gt;
+</pre></blockquote>
+
+<p>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.</p>
+
+<p>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.</p>
+
+<p>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:</p>
+
+<blockquote><pre>
+debian/pymissile.metainfo.xml usr/share/appdata
+</pre></blockquote>
+
+<p>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.</p>
+
+<p>Details of the modalias field in appstream is available from the 
+<a href="https://wiki.debian.org/DEP-11">DEP-11</a> proposal.</p>
+
+<p>To locate the modalias values of all hardware present in a machine,
+try running this command on the command line:</p>
+
+<blockquote><pre>
+cat $(find /sys/devices/|grep modalias)
+</pre></blockquote>
+
+<p>To learn more about the isenkram system, please check out
+<a href="http://people.skolelinux.org/pere/blog/tags/isenkram/">my
+blog posts tagged isenkram</a>.</p>
+
+      </div>
+      <div class="tags">
+        
+        
+        Tags: <a href="http://people.skolelinux.org/pere/blog/tags/debian">debian</a>, <a href="http://people.skolelinux.org/pere/blog/tags/english">english</a>, <a href="http://people.skolelinux.org/pere/blog/tags/isenkram">isenkram</a>.
+        
+        
+      </div>
+    </div>
+    <div class="padding"></div>
+    
     <div class="entry">
       <div class="title">
         <a href="http://people.skolelinux.org/pere/blog/Debian_Jessie__PXE_and_automatic_firmware_installation.html">Debian Jessie, PXE and automatic firmware installation</a>
@@ -1042,6 +1369,33 @@ please send me an email. :)</p>
 <h2>Archive</h2>
 <ul>
 
+<li>2016
+<ul>
+
+<li><a href="http://people.skolelinux.org/pere/blog/archive/2016/01/">January (3)</a></li>
+
+<li><a href="http://people.skolelinux.org/pere/blog/archive/2016/02/">February (2)</a></li>
+
+<li><a href="http://people.skolelinux.org/pere/blog/archive/2016/03/">March (3)</a></li>
+
+<li><a href="http://people.skolelinux.org/pere/blog/archive/2016/04/">April (8)</a></li>
+
+<li><a href="http://people.skolelinux.org/pere/blog/archive/2016/05/">May (8)</a></li>
+
+<li><a href="http://people.skolelinux.org/pere/blog/archive/2016/06/">June (2)</a></li>
+
+<li><a href="http://people.skolelinux.org/pere/blog/archive/2016/07/">July (2)</a></li>
+
+<li><a href="http://people.skolelinux.org/pere/blog/archive/2016/08/">August (5)</a></li>
+
+<li><a href="http://people.skolelinux.org/pere/blog/archive/2016/09/">September (2)</a></li>
+
+<li><a href="http://people.skolelinux.org/pere/blog/archive/2016/10/">October (3)</a></li>
+
+<li><a href="http://people.skolelinux.org/pere/blog/archive/2016/11/">November (8)</a></li>
+
+</ul></li>
+
 <li>2015
 <ul>
 
@@ -1065,7 +1419,9 @@ please send me an email. :)</p>
 
 <li><a href="http://people.skolelinux.org/pere/blog/archive/2015/10/">October (9)</a></li>
 
-<li><a href="http://people.skolelinux.org/pere/blog/archive/2015/11/">November (5)</a></li>
+<li><a href="http://people.skolelinux.org/pere/blog/archive/2015/11/">November (6)</a></li>
+
+<li><a href="http://people.skolelinux.org/pere/blog/archive/2015/12/">December (3)</a></li>
 
 </ul></li>
 
@@ -1269,41 +1625,41 @@ please send me an email. :)</p>
 
  <li><a href="http://people.skolelinux.org/pere/blog/tags/bitcoin">bitcoin (9)</a></li>
 
- <li><a href="http://people.skolelinux.org/pere/blog/tags/bootsystem">bootsystem (15)</a></li>
+ <li><a href="http://people.skolelinux.org/pere/blog/tags/bootsystem">bootsystem (16)</a></li>
 
  <li><a href="http://people.skolelinux.org/pere/blog/tags/bsa">bsa (2)</a></li>
 
  <li><a href="http://people.skolelinux.org/pere/blog/tags/chrpath">chrpath (2)</a></li>
 
- <li><a href="http://people.skolelinux.org/pere/blog/tags/debian">debian (113)</a></li>
+ <li><a href="http://people.skolelinux.org/pere/blog/tags/debian">debian (141)</a></li>
 
- <li><a href="http://people.skolelinux.org/pere/blog/tags/debian edu">debian edu (153)</a></li>
+ <li><a href="http://people.skolelinux.org/pere/blog/tags/debian edu">debian edu (158)</a></li>
 
  <li><a href="http://people.skolelinux.org/pere/blog/tags/digistan">digistan (10)</a></li>
 
- <li><a href="http://people.skolelinux.org/pere/blog/tags/dld">dld (15)</a></li>
+ <li><a href="http://people.skolelinux.org/pere/blog/tags/dld">dld (16)</a></li>
 
- <li><a href="http://people.skolelinux.org/pere/blog/tags/docbook">docbook (20)</a></li>
+ <li><a href="http://people.skolelinux.org/pere/blog/tags/docbook">docbook (23)</a></li>
 
  <li><a href="http://people.skolelinux.org/pere/blog/tags/drivstoffpriser">drivstoffpriser (4)</a></li>
 
- <li><a href="http://people.skolelinux.org/pere/blog/tags/english">english (295)</a></li>
+ <li><a href="http://people.skolelinux.org/pere/blog/tags/english">english (333)</a></li>
 
  <li><a href="http://people.skolelinux.org/pere/blog/tags/fiksgatami">fiksgatami (23)</a></li>
 
  <li><a href="http://people.skolelinux.org/pere/blog/tags/fildeling">fildeling (12)</a></li>
 
- <li><a href="http://people.skolelinux.org/pere/blog/tags/freeculture">freeculture (24)</a></li>
+ <li><a href="http://people.skolelinux.org/pere/blog/tags/freeculture">freeculture (29)</a></li>
 
  <li><a href="http://people.skolelinux.org/pere/blog/tags/freedombox">freedombox (9)</a></li>
 
- <li><a href="http://people.skolelinux.org/pere/blog/tags/frikanalen">frikanalen (16)</a></li>
+ <li><a href="http://people.skolelinux.org/pere/blog/tags/frikanalen">frikanalen (18)</a></li>
 
  <li><a href="http://people.skolelinux.org/pere/blog/tags/h264">h264 (20)</a></li>
 
  <li><a href="http://people.skolelinux.org/pere/blog/tags/intervju">intervju (42)</a></li>
 
- <li><a href="http://people.skolelinux.org/pere/blog/tags/isenkram">isenkram (10)</a></li>
+ <li><a href="http://people.skolelinux.org/pere/blog/tags/isenkram">isenkram (13)</a></li>
 
  <li><a href="http://people.skolelinux.org/pere/blog/tags/kart">kart (19)</a></li>
 
@@ -1317,19 +1673,21 @@ please send me an email. :)</p>
 
  <li><a href="http://people.skolelinux.org/pere/blog/tags/mesh network">mesh network (8)</a></li>
 
- <li><a href="http://people.skolelinux.org/pere/blog/tags/multimedia">multimedia (36)</a></li>
+ <li><a href="http://people.skolelinux.org/pere/blog/tags/multimedia">multimedia (39)</a></li>
+
+ <li><a href="http://people.skolelinux.org/pere/blog/tags/nice free software">nice free software (8)</a></li>
 
- <li><a href="http://people.skolelinux.org/pere/blog/tags/norsk">norsk (271)</a></li>
+ <li><a href="http://people.skolelinux.org/pere/blog/tags/norsk">norsk (283)</a></li>
 
- <li><a href="http://people.skolelinux.org/pere/blog/tags/nuug">nuug (177)</a></li>
+ <li><a href="http://people.skolelinux.org/pere/blog/tags/nuug">nuug (182)</a></li>
 
- <li><a href="http://people.skolelinux.org/pere/blog/tags/offentlig innsyn">offentlig innsyn (22)</a></li>
+ <li><a href="http://people.skolelinux.org/pere/blog/tags/offentlig innsyn">offentlig innsyn (26)</a></li>
 
  <li><a href="http://people.skolelinux.org/pere/blog/tags/open311">open311 (2)</a></li>
 
- <li><a href="http://people.skolelinux.org/pere/blog/tags/opphavsrett">opphavsrett (57)</a></li>
+ <li><a href="http://people.skolelinux.org/pere/blog/tags/opphavsrett">opphavsrett (62)</a></li>
 
- <li><a href="http://people.skolelinux.org/pere/blog/tags/personvern">personvern (92)</a></li>
+ <li><a href="http://people.skolelinux.org/pere/blog/tags/personvern">personvern (95)</a></li>
 
  <li><a href="http://people.skolelinux.org/pere/blog/tags/raid">raid (1)</a></li>
 
@@ -1339,27 +1697,27 @@ please send me an email. :)</p>
 
  <li><a href="http://people.skolelinux.org/pere/blog/tags/rfid">rfid (3)</a></li>
 
- <li><a href="http://people.skolelinux.org/pere/blog/tags/robot">robot (9)</a></li>
+ <li><a href="http://people.skolelinux.org/pere/blog/tags/robot">robot (10)</a></li>
 
  <li><a href="http://people.skolelinux.org/pere/blog/tags/rss">rss (1)</a></li>
 
- <li><a href="http://people.skolelinux.org/pere/blog/tags/ruter">ruter (4)</a></li>
+ <li><a href="http://people.skolelinux.org/pere/blog/tags/ruter">ruter (5)</a></li>
 
  <li><a href="http://people.skolelinux.org/pere/blog/tags/scraperwiki">scraperwiki (2)</a></li>
 
- <li><a href="http://people.skolelinux.org/pere/blog/tags/sikkerhet">sikkerhet (44)</a></li>
+ <li><a href="http://people.skolelinux.org/pere/blog/tags/sikkerhet">sikkerhet (52)</a></li>
 
  <li><a href="http://people.skolelinux.org/pere/blog/tags/sitesummary">sitesummary (4)</a></li>
 
- <li><a href="http://people.skolelinux.org/pere/blog/tags/skepsis">skepsis (4)</a></li>
+ <li><a href="http://people.skolelinux.org/pere/blog/tags/skepsis">skepsis (5)</a></li>
 
- <li><a href="http://people.skolelinux.org/pere/blog/tags/standard">standard (48)</a></li>
+ <li><a href="http://people.skolelinux.org/pere/blog/tags/standard">standard (49)</a></li>
 
- <li><a href="http://people.skolelinux.org/pere/blog/tags/stavekontroll">stavekontroll (3)</a></li>
+ <li><a href="http://people.skolelinux.org/pere/blog/tags/stavekontroll">stavekontroll (5)</a></li>
 
  <li><a href="http://people.skolelinux.org/pere/blog/tags/stortinget">stortinget (10)</a></li>
 
- <li><a href="http://people.skolelinux.org/pere/blog/tags/surveillance">surveillance (36)</a></li>
+ <li><a href="http://people.skolelinux.org/pere/blog/tags/surveillance">surveillance (43)</a></li>
 
  <li><a href="http://people.skolelinux.org/pere/blog/tags/sysadmin">sysadmin (2)</a></li>
 
@@ -1367,11 +1725,11 @@ please send me an email. :)</p>
 
  <li><a href="http://people.skolelinux.org/pere/blog/tags/valg">valg (8)</a></li>
 
- <li><a href="http://people.skolelinux.org/pere/blog/tags/video">video (54)</a></li>
+ <li><a href="http://people.skolelinux.org/pere/blog/tags/video">video (59)</a></li>
 
  <li><a href="http://people.skolelinux.org/pere/blog/tags/vitenskap">vitenskap (4)</a></li>
 
- <li><a href="http://people.skolelinux.org/pere/blog/tags/web">web (37)</a></li>
+ <li><a href="http://people.skolelinux.org/pere/blog/tags/web">web (38)</a></li>
 
 </ul>