]> pere.pagekite.me Git - homepage.git/blobdiff - blog/archive/2009/02/index.html
Change order of entries in tag and archive view.
[homepage.git] / blog / archive / 2009 / 02 / index.html
index f5c640ec15f021bd4c1fc5690080cc78a75ebe1f..a0ca2c7c57f2262191e2cc5d50476764a1d5299b 100644 (file)
     
     <div class="entry">
       <div class="title">
-        <a href="http://people.skolelinux.org/pere/blog/Intellektuelt_privilegium___et_bedre_IP_begrep.html">Intellektuelt privilegium - et bedre IP-begrep</a>
+        <a href="http://people.skolelinux.org/pere/blog/Checking_server_hardware_support_status_for_Dell__HP_and_IBM_servers.html">Checking server hardware support status for Dell, HP and IBM servers</a>
       </div>
       <div class="date">
-         1st February 2009
+        28th February 2009
       </div>
       <div class="body">
-        <p>Ofte brukes intellektuell eiendom som samlebegrep for opphavsrett,
-patenter, varemerker og forretningshemmeligheter.  Problemet med dette
-begrepet er at det er svært misvisende.  For det første er ingen av de
-begrensede monopolene det her er snakk om som kan kalles eiendom, og
-for det andre er egenskapene til de ulike monopolene så forskjellige
-at det er mer tilslørende enn opplysende å gruppere dem sammen i et
-sekkebegrep.  Blant annet Richard Stallman har
-<a href="http://www.gnu.org/philosophy/not-ipr.html">skrevet litt om dette</a>.</p>
+        <p>At work, we have a few hundred Linux servers, and with that amount
+of hardware it is important to keep track of when the hardware support
+contract expire for each server.  We have a machine (and service)
+register, which until recently did not contain much useful besides the
+machine room location and contact information for the system owner for
+each machine.  To make it easier for us to track support contract
+status, I've recently spent time on extending the machine register to
+include information about when the support contract expire, and to tag
+machines with expired contracts to make it easy to get a list of such
+machines.  I extended a perl script already being used to import
+information about machines into the register, to also do some screen
+scraping off the sites of Dell, HP and IBM (our majority of machines
+are from these vendors), and automatically check the support status
+for the relevant machines.  This make the support status information
+easily available and I hope it will make it easier for the computer
+owner to know when to get new hardware or renew the support contract.
+The result of this work documented that 27% of the machines in the
+registry is without a support contract, and made it very easy to find
+them.  27% might seem like a lot, but I see it more as the case of us
+using machines a bit longer than the 3 years a normal support contract
+last, to have test machines and a platform for less important
+services.  After all, the machines without a contract are working fine
+at the moment and the lack of contract is only a problem if any of
+them break down.  When that happen, we can either fix it using spare
+parts from other machines or move the service to another old
+machine.</p>
 
-<p>I dag kom jeg over
-<a href="http://blogs.sun.com/webmink/entry/intellectual_privilege">en
-bloggpost fra Simon Phipps</a> som foreslår å bruke intellektuelt
-privilegium som begrep i stedet, da det gjør det klarere at det ikke
-er snakk om eiendom, men et tidsbegrenset monopol.  Simon Phipps
-forteller videre at noen jobber med å skrive
-<a href="http://www.intellectualprivilege.com/book.html">en bok med
-tittel Intellectual Privilege</a>, og at boken er anbefalt av Lawrence
-Lessig.  Jeg tror jeg skal begynne å bruke begrepet intellektuelt
-privilegium når jeg snakker om opphavsrett, patenter, varemerker og
-forretningshemmeligheter framover.</p>
+<p>I believe the code for screen scraping the Dell site was originally
+written by Trond Hasle Amundsen, and later adjusted by me and Morten
+Werner Forsbring.  The HP scraping was written by me after reading a
+nice article in ;login: about how to use WWW::Mechanize, and the IBM
+scraping was written by me based on the Dell code.  I know the HTML
+parsing could be done using nice libraries, but did not want to
+introduce more dependencies.  This is the current incarnation:</p>
 
-      </div>
-      <div class="tags">
-        
-        
-        Tags: <a href="http://people.skolelinux.org/pere/blog/tags/norsk">norsk</a>, <a href="http://people.skolelinux.org/pere/blog/tags/nuug">nuug</a>.
-        
-        
-      </div>
-    </div>
-    <div class="padding"></div>
-    
-    <div class="entry">
-      <div class="title">
-        <a href="http://people.skolelinux.org/pere/blog/Norge_trenger_en_personvernforening.html">Norge trenger en personvernforening</a>
-      </div>
-      <div class="date">
-         1st February 2009
-      </div>
-      <div class="body">
-        <p>De siste årene har jeg forsøkt å få liv i
-<a href="http://www.personvern.no/">foreningen Personvern i Norge</a>.  Norge
-trenger en organisasjon som jobber med å sette personvern på agendaen
-og som kan være en motvekt til de mange som gjerne raderer bort
-personvernet av behagelighetshensyn eller ut fra villfarelsen om at en
-får økt sikkerhet av å redusere personvernet.  Foreløbig har det ikke
-lykkes å få på plass kritisk masse av interesserte på epostlisten, og
-nå tror jeg det er på tide å endre tilnærming.  I stedet for å forsøke
-å rekruttere folk til epostlisten og håpe at når nok folk er samlet
-vil noen ta initiativ og sørge for at det begynner å skje ting, så
-tror jeg det er en ide å ta utgangspunkt i de som er der i dag og
-sette sammen et interrimstyre.  Forslaget er sendt til epostlisten, så
-nå får vi se om noen er enig.</p>
+<pre>
+use LWP::Simple;
+use POSIX;
+use WWW::Mechanize;
+use Date::Parse;
+[...]
+sub get_support_info {
+    my ($machine, $model, $serial, $productnumber) = @_;
+    my $str;
+
+    if ( $model =~ m/^Dell / ) {
+        # fetch website from Dell support
+        my $url = "http://support.euro.dell.com/support/topics/topic.aspx/emea/shared/support/my_systems_info/no/details?c=no&amp;cs=nodhs1&amp;l=no&amp;s=dhs&amp;ServiceTag=$serial";
+        my $webpage = get($url);
+        return undef unless ($webpage);
+
+        my $daysleft = -1;
+        my @lines = split(/\n/, $webpage);
+        foreach my $line (@lines) {
+            next unless ($line =~ m/Beskrivelse/);
+            $line =~ s/&lt;[^>]+?>/;/gm;
+            $line =~ s/^.+?;(Beskrivelse;)/$1/;
+
+            my @f = split(/\;/, $line);
+            @f = @f[13 .. $#f];
+            my $lastend = "";
+            while ($f[3] eq "DELL") {
+                my ($type, $startstr, $endstr, $days) = @f[0, 5, 7, 10];
+
+                my $start = POSIX::strftime("%Y-%m-%d",
+                                            localtime(str2time($startstr)));
+                my $end = POSIX::strftime("%Y-%m-%d",
+                                          localtime(str2time($endstr)));
+                $str .= "$type $start -> $end ";
+                @f = @f[14 .. $#f];
+                $lastend = $end if ($end gt $lastend);
+            }
+            my $today = POSIX::strftime("%Y-%m-%d", localtime(time));
+            tag_machine_unsupported($machine)
+                if ($lastend lt $today);
+        }
+    } elsif ( $model =~ m/^HP / ) {
+        my $mech = WWW::Mechanize->new();
+        my $url =
+            'http://www1.itrc.hp.com/service/ewarranty/warrantyInput.do';
+        $mech->get($url);
+        my $fields = {
+            'BODServiceID' => 'NA',
+            'RegisteredPurchaseDate' => '',
+            'country' => 'NO',
+            'productNumber' => $productnumber,
+            'serialNumber1' => $serial,
+        };
+        $mech->submit_form( form_number => 2,
+                            fields      => $fields );
+        # Next step is screen scraping
+        my $content = $mech->content();
+
+        $content =~ s/&lt;[^>]+?>/;/gm;
+        $content =~ s/\s+/ /gm;
+        $content =~ s/;\s*;/;;/gm;
+        $content =~ s/;[\s;]+/;/gm;
+
+        my $today = POSIX::strftime("%Y-%m-%d", localtime(time));
+
+        while ($content =~ m/;Warranty Type;/) {
+            my ($type, $status, $startstr, $stopstr) = $content =~
+                m/;Warranty Type;([^;]+);.+?;Status;(\w+);Start Date;([^;]+);End Date;([^;]+);/;
+            $content =~ s/^.+?;Warranty Type;//;
+            my $start = POSIX::strftime("%Y-%m-%d",
+                                        localtime(str2time($startstr)));
+            my $end = POSIX::strftime("%Y-%m-%d",
+                                      localtime(str2time($stopstr)));
+
+            $str .= "$type ($status) $start -> $end ";
+
+            tag_machine_unsupported($machine)
+                if ($end lt $today);
+        }
+    } elsif ( $model =~ m/^IBM / ) {
+        # This code ignore extended support contracts.
+        my ($producttype) = $model =~ m/.*-\[(.{4}).+\]-/;
+        if ($producttype &amp;&amp; $serial) {
+            my $content =
+                get("http://www-947.ibm.com/systems/support/supportsite.wss/warranty?action=warranty&amp;brandind=5000008&amp;Submit=Submit&amp;type=$producttype&amp;serial=$serial");
+            if ($content) {
+                $content =~ s/&lt;[^>]+?>/;/gm;
+                $content =~ s/\s+/ /gm;
+                $content =~ s/;\s*;/;;/gm;
+                $content =~ s/;[\s;]+/;/gm;
+
+                $content =~ s/^.+?;Warranty status;//;
+                my ($status, $end) = $content =~ m/;Warranty status;([^;]+)\s*;Expiration date;(\S+) ;/;
+
+                $str .= "($status) -> $end ";
+
+                my $today = POSIX::strftime("%Y-%m-%d", localtime(time));
+                tag_machine_unsupported($machine)
+                    if ($end lt $today);
+            }
+        }
+    }
+    return $str;
+}
+</pre>
+
+<p>Here are some examples on how to use the function, using fake
+serial numbers.  The information passed in as arguments are fetched
+from dmidecode.</p>
+
+<pre>
+print get_support_info("hp.host", "HP ProLiant BL460c G1", "1234567890"
+                       "447707-B21");
+print get_support_info("dell.host", "Dell Inc. PowerEdge 2950", "1234567");
+print get_support_info("ibm.host", "IBM eserver xSeries 345 -[867061X]-",
+                       "1234567");
+</pre>
+
+<p>I would recommend this approach for tracking support contracts for
+everyone with more than a few computers to administer. :)</p>
+
+<p>Update 2009-03-06: The IBM page do not include extended support
+contracts, so it is useless in that case.  The original Dell code do
+not handle extended support contracts either, but has been updated to
+do so.</p>
 
       </div>
       <div class="tags">
         
         
-        Tags: <a href="http://people.skolelinux.org/pere/blog/tags/norsk">norsk</a>, <a href="http://people.skolelinux.org/pere/blog/tags/personvern">personvern</a>.
+        Tags: <a href="http://people.skolelinux.org/pere/blog/tags/english">english</a>, <a href="http://people.skolelinux.org/pere/blog/tags/nuug">nuug</a>.
         
         
       </div>
@@ -96,49 +203,59 @@ nå får vi se om noen er enig.</p>
     
     <div class="entry">
       <div class="title">
-        <a href="http://people.skolelinux.org/pere/blog/Min_reprap_tar_sakte_form.html">Min reprap tar sakte form</a>
+        <a href="http://people.skolelinux.org/pere/blog/Using_bar_codes_at_a_computing_center.html">Using bar codes at a computing center</a>
       </div>
       <div class="date">
-         3rd February 2009
+        20th February 2009
       </div>
       <div class="body">
-        <p>Min reprap begynner å ta form.  Den er nå kommet så langt at den er
-blitt en kubisk ramme.  Z-aksen er montert men ikke kalibrert, og det
-hele er klart for litt enkel testing.  Har møtt på to problemer som
-blokkerer videre montering, men har oppnått kontakt med Audun Vaaler
-ved Høgskolen i Østfold som forteller at de er nesten ferdig med et
-tilsvarende byggesett som det jeg tar utgangspunkt i, og håper de kan
-forklare hvordan de kom rundt problemene.  De to problemene er
-relatert til Z-aksen og Y-aksen.  </p>
+        <p>At work with the University of Oslo, we have several hundred computers
+in our computing center.  This give us a challenge in tracking the
+location and cabling of the computers, when they are added, moved and
+removed.  Some times the location register is not updated when a
+computer is inserted or moved and we then have to search the room for
+the "missing" computer.</p>
 
-<p>For Z-aksen, er det et stjernehjul som festes på motoraksen ved
-tannjulet som driver z-aksebåndet og som skal holde båndet på plass.
-Problemet med det nederste stjernejulet er at det er helt løst, og
-blir liggende på motoren 5 mm nedenfor tannjulet, i stedet for å ligge
-inntil tannjulet slik det skal.  Mulig løsningen er å borre i
-stjernehjulet, eller lime det fast.</p>
+<p>In the last issue of Linux Journal, I came across a project
+<a href="http://www.libdmtx.org/">libdmtx</a> to write and read bar
+code blocks as defined in the
+<a href="http://en.wikipedia.org/wiki/Data_Matrix">The Data Matrix
+Standard</a>.  This is bar codes that can be read with a normal
+digital camera, for example that on a cell phone, and several such bar
+codes can be read by libdmtx from one picture.  The bar code standard
+allow up to 2 KiB to be written in the tag.  There is another project
+with <a href="http://www.terryburton.co.uk/barcodewriter/">a bar code
+writer written in postscript</a> capable of creating such bar codes,
+but this was the first time I found a tool to read these bar
+codes.</p>
 
-<p>For Y-aksen, er det en plastdel som ser ut til å mangle som skulle
-dekket to skruver som kommer i veien for kraftoverføringsmekanismen
-fra motoren til selve aksen, slik at mekanismen kan snurre fritt.</p>
+<p>It occurred to me that this could be used to tag and track the
+machines in our computing center.  If both racks and computers are
+tagged this way, we can use a picture of the rack and all its
+computers to detect the rack location of any computer in that rack.
+If we do this regularly for the entire room, we will find all
+locations, and can detect movements and removals.</p>
 
-<p>Når det gjelder elektronikken til min reprap, så er min gode venn
-Anders Rosnes igang med å lodde sammen delene og han forteller at
-koblingsbordet for Arduino er klart, og en temperatursensor og en
-optoswitch er også klar.  Gleder meg til å teste dem.  Må bare finne
-ut hvordan jeg laster opp firmware i Arduino-en. :)</p>
+<p>I decided to test if this would work in practice, and picked a
+random rack and tagged all the machines with their names.  Next, I
+took pictures with my digital camera, and gave the dmtxread program
+these JPEG pictures to see how many tags it could read.  This worked
+fairly well.  If the pictures was well focused and not taken from the
+side, all tags in the image could be read.  Because of limited space
+between the racks, I was unable to get a good picture of the entire
+rack, but could without problem read all tags from a picture covering
+about half the rack.  I had to limit the search time used by dmtxread
+to 60000 ms to make sure it terminated in a reasonable time frame.</p>
 
-<p>Når det gjelder NUUGs reprap-prosjekt, så er det framgang og Ole
-Kristian, Tollef og Ketil besøke IFI for å få fortgang i produksjon av
-plastdeler, og Ole Kristian forteller at han har funnet en kilde til
-de fleste metalldelene.  Gleder meg til å se resultaten av det
-arbeidet.</p>
+<p>My conclusion is that this could work, and we should probably look
+at adjusting our computer tagging procedures to use bar codes for
+easier automatic tracking of computers.</p>
 
       </div>
       <div class="tags">
         
         
-        Tags: <a href="http://people.skolelinux.org/pere/blog/tags/3d-printer">3d-printer</a>, <a href="http://people.skolelinux.org/pere/blog/tags/norsk">norsk</a>, <a href="http://people.skolelinux.org/pere/blog/tags/nuug">nuug</a>, <a href="http://people.skolelinux.org/pere/blog/tags/reprap">reprap</a>.
+        Tags: <a href="http://people.skolelinux.org/pere/blog/tags/english">english</a>, <a href="http://people.skolelinux.org/pere/blog/tags/nuug">nuug</a>.
         
         
       </div>
@@ -147,28 +264,36 @@ arbeidet.</p>
     
     <div class="entry">
       <div class="title">
-        <a href="http://people.skolelinux.org/pere/blog/F_rste_vellykkede_videostr_m_fra_NUUG.html">Første vellykkede videostrøm fra NUUG</a>
+        <a href="http://people.skolelinux.org/pere/blog/Kart_over_overv_kningskamera_i_Norge.html">Kart over overvåkningskamera i Norge</a>
       </div>
       <div class="date">
-        11th February 2009
+        15th February 2009
       </div>
       <div class="body">
-        <p>Jeg ble glad for å se under
-<a href="http://www.nuug.no/aktiviteter/20090210-compiz/">gårdagens
-medlemsmøte</a> i NUUG Oslo at utsending av live-video fra møtet
-fungerte for første gang.  Forrige gang ble det ved en teknisk tabbe
-sendt video uten lyd.  Vi kan takke Ole Kristian Lien og resten av
-videogruppen i NUUG for at nå NUUG-medlemmer over det ganske land 
-kunne se foredraget samtidig med oss i Oslo.  Vi opplevde til og med
-under møtet å motta spørsmål via IRC som ble besvart der og da.
-Opptaket publiseres så snart det er kopiert over til NUUGs
-webserver og komprimert.</p>
+        <p>I regi av
+<a href="http://www.personvern.no/">personvernforeningen</a> har jeg
+startet på
+<a href="http://personvern.no/wiki/index.php/Kameraovervåkning">et
+kart over overvåkningskamera i Norge</a>.  Bakgrunnen er at det etter
+min mening bærer galt avsted med den massive overvåkningen som
+finner sted i Norge i dag, og at flere og flere overvåkningskamera
+gjør det vanskeligere og vanskeligere å gå igjennom livet uten at
+små og store brødre trenger inn i ens private sfære.  Datatilsynet
+har et register over kameraovervåkning, men det viser seg å være
+ubrukelig både til å finne ut hvor det er kamera plassert, og til å
+sjekke om et kamera en kommer over er registrert.  Dette nye kartet
+fikser en av disse manglene, men det vil fortsatt være umulig å vite
+om et kamera er registrert etter lovens krav eller ikke.  Pr. nå er
+22 kamera i Oslo registrert, og det trengs flere til å registrere
+alle.  Informasjonen registreres direkte inn i <a
+href="http://www.openstreetmap.org/">OpenStreetmap</a>, så hentes det
+automatisk over i spesialkartet.</p>
 
       </div>
       <div class="tags">
         
         
-        Tags: <a href="http://people.skolelinux.org/pere/blog/tags/norsk">norsk</a>, <a href="http://people.skolelinux.org/pere/blog/tags/nuug">nuug</a>, <a href="http://people.skolelinux.org/pere/blog/tags/video">video</a>.
+        Tags: <a href="http://people.skolelinux.org/pere/blog/tags/norsk">norsk</a>, <a href="http://people.skolelinux.org/pere/blog/tags/personvern">personvern</a>, <a href="http://people.skolelinux.org/pere/blog/tags/surveillance">surveillance</a>.
         
         
       </div>
@@ -209,36 +334,79 @@ bootsekvens tilgjengelig i stabil utgave, vha pakken
     
     <div class="entry">
       <div class="title">
-        <a href="http://people.skolelinux.org/pere/blog/Kart_over_overv_kningskamera_i_Norge.html">Kart over overvåkningskamera i Norge</a>
+        <a href="http://people.skolelinux.org/pere/blog/F_rste_vellykkede_videostr_m_fra_NUUG.html">Første vellykkede videostrøm fra NUUG</a>
       </div>
       <div class="date">
-        15th February 2009
+        11th February 2009
       </div>
       <div class="body">
-        <p>I regi av
-<a href="http://www.personvern.no/">personvernforeningen</a> har jeg
-startet på
-<a href="http://personvern.no/wiki/index.php/Kameraovervåkning">et
-kart over overvåkningskamera i Norge</a>.  Bakgrunnen er at det etter
-min mening bærer galt avsted med den massive overvåkningen som
-finner sted i Norge i dag, og at flere og flere overvåkningskamera
-gjør det vanskeligere og vanskeligere å gå igjennom livet uten at
-små og store brødre trenger inn i ens private sfære.  Datatilsynet
-har et register over kameraovervåkning, men det viser seg å være
-ubrukelig både til å finne ut hvor det er kamera plassert, og til å
-sjekke om et kamera en kommer over er registrert.  Dette nye kartet
-fikser en av disse manglene, men det vil fortsatt være umulig å vite
-om et kamera er registrert etter lovens krav eller ikke.  Pr. nå er
-22 kamera i Oslo registrert, og det trengs flere til å registrere
-alle.  Informasjonen registreres direkte inn i <a
-href="http://www.openstreetmap.org/">OpenStreetmap</a>, så hentes det
-automatisk over i spesialkartet.</p>
+        <p>Jeg ble glad for å se under
+<a href="http://www.nuug.no/aktiviteter/20090210-compiz/">gårdagens
+medlemsmøte</a> i NUUG Oslo at utsending av live-video fra møtet
+fungerte for første gang.  Forrige gang ble det ved en teknisk tabbe
+sendt video uten lyd.  Vi kan takke Ole Kristian Lien og resten av
+videogruppen i NUUG for at nå NUUG-medlemmer over det ganske land 
+kunne se foredraget samtidig med oss i Oslo.  Vi opplevde til og med
+under møtet å motta spørsmål via IRC som ble besvart der og da.
+Opptaket publiseres så snart det er kopiert over til NUUGs
+webserver og komprimert.</p>
+
+      </div>
+      <div class="tags">
+        
+        
+        Tags: <a href="http://people.skolelinux.org/pere/blog/tags/norsk">norsk</a>, <a href="http://people.skolelinux.org/pere/blog/tags/nuug">nuug</a>, <a href="http://people.skolelinux.org/pere/blog/tags/video">video</a>.
+        
+        
+      </div>
+    </div>
+    <div class="padding"></div>
+    
+    <div class="entry">
+      <div class="title">
+        <a href="http://people.skolelinux.org/pere/blog/Min_reprap_tar_sakte_form.html">Min reprap tar sakte form</a>
+      </div>
+      <div class="date">
+         3rd February 2009
+      </div>
+      <div class="body">
+        <p>Min reprap begynner å ta form.  Den er nå kommet så langt at den er
+blitt en kubisk ramme.  Z-aksen er montert men ikke kalibrert, og det
+hele er klart for litt enkel testing.  Har møtt på to problemer som
+blokkerer videre montering, men har oppnått kontakt med Audun Vaaler
+ved Høgskolen i Østfold som forteller at de er nesten ferdig med et
+tilsvarende byggesett som det jeg tar utgangspunkt i, og håper de kan
+forklare hvordan de kom rundt problemene.  De to problemene er
+relatert til Z-aksen og Y-aksen.  </p>
+
+<p>For Z-aksen, er det et stjernehjul som festes på motoraksen ved
+tannjulet som driver z-aksebåndet og som skal holde båndet på plass.
+Problemet med det nederste stjernejulet er at det er helt løst, og
+blir liggende på motoren 5 mm nedenfor tannjulet, i stedet for å ligge
+inntil tannjulet slik det skal.  Mulig løsningen er å borre i
+stjernehjulet, eller lime det fast.</p>
+
+<p>For Y-aksen, er det en plastdel som ser ut til å mangle som skulle
+dekket to skruver som kommer i veien for kraftoverføringsmekanismen
+fra motoren til selve aksen, slik at mekanismen kan snurre fritt.</p>
+
+<p>Når det gjelder elektronikken til min reprap, så er min gode venn
+Anders Rosnes igang med å lodde sammen delene og han forteller at
+koblingsbordet for Arduino er klart, og en temperatursensor og en
+optoswitch er også klar.  Gleder meg til å teste dem.  Må bare finne
+ut hvordan jeg laster opp firmware i Arduino-en. :)</p>
+
+<p>Når det gjelder NUUGs reprap-prosjekt, så er det framgang og Ole
+Kristian, Tollef og Ketil besøke IFI for å få fortgang i produksjon av
+plastdeler, og Ole Kristian forteller at han har funnet en kilde til
+de fleste metalldelene.  Gleder meg til å se resultaten av det
+arbeidet.</p>
 
       </div>
       <div class="tags">
         
         
-        Tags: <a href="http://people.skolelinux.org/pere/blog/tags/norsk">norsk</a>, <a href="http://people.skolelinux.org/pere/blog/tags/personvern">personvern</a>, <a href="http://people.skolelinux.org/pere/blog/tags/surveillance">surveillance</a>.
+        Tags: <a href="http://people.skolelinux.org/pere/blog/tags/3d-printer">3d-printer</a>, <a href="http://people.skolelinux.org/pere/blog/tags/norsk">norsk</a>, <a href="http://people.skolelinux.org/pere/blog/tags/nuug">nuug</a>, <a href="http://people.skolelinux.org/pere/blog/tags/reprap">reprap</a>.
         
         
       </div>
@@ -247,59 +415,31 @@ automatisk over i spesialkartet.</p>
     
     <div class="entry">
       <div class="title">
-        <a href="http://people.skolelinux.org/pere/blog/Using_bar_codes_at_a_computing_center.html">Using bar codes at a computing center</a>
+        <a href="http://people.skolelinux.org/pere/blog/Norge_trenger_en_personvernforening.html">Norge trenger en personvernforening</a>
       </div>
       <div class="date">
-        20th February 2009
+         1st February 2009
       </div>
       <div class="body">
-        <p>At work with the University of Oslo, we have several hundred computers
-in our computing center.  This give us a challenge in tracking the
-location and cabling of the computers, when they are added, moved and
-removed.  Some times the location register is not updated when a
-computer is inserted or moved and we then have to search the room for
-the "missing" computer.</p>
-
-<p>In the last issue of Linux Journal, I came across a project
-<a href="http://www.libdmtx.org/">libdmtx</a> to write and read bar
-code blocks as defined in the
-<a href="http://en.wikipedia.org/wiki/Data_Matrix">The Data Matrix
-Standard</a>.  This is bar codes that can be read with a normal
-digital camera, for example that on a cell phone, and several such bar
-codes can be read by libdmtx from one picture.  The bar code standard
-allow up to 2 KiB to be written in the tag.  There is another project
-with <a href="http://www.terryburton.co.uk/barcodewriter/">a bar code
-writer written in postscript</a> capable of creating such bar codes,
-but this was the first time I found a tool to read these bar
-codes.</p>
-
-<p>It occurred to me that this could be used to tag and track the
-machines in our computing center.  If both racks and computers are
-tagged this way, we can use a picture of the rack and all its
-computers to detect the rack location of any computer in that rack.
-If we do this regularly for the entire room, we will find all
-locations, and can detect movements and removals.</p>
-
-<p>I decided to test if this would work in practice, and picked a
-random rack and tagged all the machines with their names.  Next, I
-took pictures with my digital camera, and gave the dmtxread program
-these JPEG pictures to see how many tags it could read.  This worked
-fairly well.  If the pictures was well focused and not taken from the
-side, all tags in the image could be read.  Because of limited space
-between the racks, I was unable to get a good picture of the entire
-rack, but could without problem read all tags from a picture covering
-about half the rack.  I had to limit the search time used by dmtxread
-to 60000 ms to make sure it terminated in a reasonable time frame.</p>
-
-<p>My conclusion is that this could work, and we should probably look
-at adjusting our computer tagging procedures to use bar codes for
-easier automatic tracking of computers.</p>
+        <p>De siste årene har jeg forsøkt å få liv i
+<a href="http://www.personvern.no/">foreningen Personvern i Norge</a>.  Norge
+trenger en organisasjon som jobber med å sette personvern på agendaen
+og som kan være en motvekt til de mange som gjerne raderer bort
+personvernet av behagelighetshensyn eller ut fra villfarelsen om at en
+får økt sikkerhet av å redusere personvernet.  Foreløbig har det ikke
+lykkes å få på plass kritisk masse av interesserte på epostlisten, og
+nå tror jeg det er på tide å endre tilnærming.  I stedet for å forsøke
+å rekruttere folk til epostlisten og håpe at når nok folk er samlet
+vil noen ta initiativ og sørge for at det begynner å skje ting, så
+tror jeg det er en ide å ta utgangspunkt i de som er der i dag og
+sette sammen et interrimstyre.  Forslaget er sendt til epostlisten, så
+nå får vi se om noen er enig.</p>
 
       </div>
       <div class="tags">
         
         
-        Tags: <a href="http://people.skolelinux.org/pere/blog/tags/english">english</a>, <a href="http://people.skolelinux.org/pere/blog/tags/nuug">nuug</a>.
+        Tags: <a href="http://people.skolelinux.org/pere/blog/tags/norsk">norsk</a>, <a href="http://people.skolelinux.org/pere/blog/tags/personvern">personvern</a>.
         
         
       </div>
@@ -308,178 +448,38 @@ easier automatic tracking of computers.</p>
     
     <div class="entry">
       <div class="title">
-        <a href="http://people.skolelinux.org/pere/blog/Checking_server_hardware_support_status_for_Dell__HP_and_IBM_servers.html">Checking server hardware support status for Dell, HP and IBM servers</a>
+        <a href="http://people.skolelinux.org/pere/blog/Intellektuelt_privilegium___et_bedre_IP_begrep.html">Intellektuelt privilegium - et bedre IP-begrep</a>
       </div>
       <div class="date">
-        28th February 2009
+         1st February 2009
       </div>
       <div class="body">
-        <p>At work, we have a few hundred Linux servers, and with that amount
-of hardware it is important to keep track of when the hardware support
-contract expire for each server.  We have a machine (and service)
-register, which until recently did not contain much useful besides the
-machine room location and contact information for the system owner for
-each machine.  To make it easier for us to track support contract
-status, I've recently spent time on extending the machine register to
-include information about when the support contract expire, and to tag
-machines with expired contracts to make it easy to get a list of such
-machines.  I extended a perl script already being used to import
-information about machines into the register, to also do some screen
-scraping off the sites of Dell, HP and IBM (our majority of machines
-are from these vendors), and automatically check the support status
-for the relevant machines.  This make the support status information
-easily available and I hope it will make it easier for the computer
-owner to know when to get new hardware or renew the support contract.
-The result of this work documented that 27% of the machines in the
-registry is without a support contract, and made it very easy to find
-them.  27% might seem like a lot, but I see it more as the case of us
-using machines a bit longer than the 3 years a normal support contract
-last, to have test machines and a platform for less important
-services.  After all, the machines without a contract are working fine
-at the moment and the lack of contract is only a problem if any of
-them break down.  When that happen, we can either fix it using spare
-parts from other machines or move the service to another old
-machine.</p>
-
-<p>I believe the code for screen scraping the Dell site was originally
-written by Trond Hasle Amundsen, and later adjusted by me and Morten
-Werner Forsbring.  The HP scraping was written by me after reading a
-nice article in ;login: about how to use WWW::Mechanize, and the IBM
-scraping was written by me based on the Dell code.  I know the HTML
-parsing could be done using nice libraries, but did not want to
-introduce more dependencies.  This is the current incarnation:</p>
-
-<pre>
-use LWP::Simple;
-use POSIX;
-use WWW::Mechanize;
-use Date::Parse;
-[...]
-sub get_support_info {
-    my ($machine, $model, $serial, $productnumber) = @_;
-    my $str;
-
-    if ( $model =~ m/^Dell / ) {
-        # fetch website from Dell support
-        my $url = "http://support.euro.dell.com/support/topics/topic.aspx/emea/shared/support/my_systems_info/no/details?c=no&amp;cs=nodhs1&amp;l=no&amp;s=dhs&amp;ServiceTag=$serial";
-        my $webpage = get($url);
-        return undef unless ($webpage);
-
-        my $daysleft = -1;
-        my @lines = split(/\n/, $webpage);
-        foreach my $line (@lines) {
-            next unless ($line =~ m/Beskrivelse/);
-            $line =~ s/&lt;[^>]+?>/;/gm;
-            $line =~ s/^.+?;(Beskrivelse;)/$1/;
-
-            my @f = split(/\;/, $line);
-            @f = @f[13 .. $#f];
-            my $lastend = "";
-            while ($f[3] eq "DELL") {
-                my ($type, $startstr, $endstr, $days) = @f[0, 5, 7, 10];
-
-                my $start = POSIX::strftime("%Y-%m-%d",
-                                            localtime(str2time($startstr)));
-                my $end = POSIX::strftime("%Y-%m-%d",
-                                          localtime(str2time($endstr)));
-                $str .= "$type $start -> $end ";
-                @f = @f[14 .. $#f];
-                $lastend = $end if ($end gt $lastend);
-            }
-            my $today = POSIX::strftime("%Y-%m-%d", localtime(time));
-            tag_machine_unsupported($machine)
-                if ($lastend lt $today);
-        }
-    } elsif ( $model =~ m/^HP / ) {
-        my $mech = WWW::Mechanize->new();
-        my $url =
-            'http://www1.itrc.hp.com/service/ewarranty/warrantyInput.do';
-        $mech->get($url);
-        my $fields = {
-            'BODServiceID' => 'NA',
-            'RegisteredPurchaseDate' => '',
-            'country' => 'NO',
-            'productNumber' => $productnumber,
-            'serialNumber1' => $serial,
-        };
-        $mech->submit_form( form_number => 2,
-                            fields      => $fields );
-        # Next step is screen scraping
-        my $content = $mech->content();
-
-        $content =~ s/&lt;[^>]+?>/;/gm;
-        $content =~ s/\s+/ /gm;
-        $content =~ s/;\s*;/;;/gm;
-        $content =~ s/;[\s;]+/;/gm;
-
-        my $today = POSIX::strftime("%Y-%m-%d", localtime(time));
-
-        while ($content =~ m/;Warranty Type;/) {
-            my ($type, $status, $startstr, $stopstr) = $content =~
-                m/;Warranty Type;([^;]+);.+?;Status;(\w+);Start Date;([^;]+);End Date;([^;]+);/;
-            $content =~ s/^.+?;Warranty Type;//;
-            my $start = POSIX::strftime("%Y-%m-%d",
-                                        localtime(str2time($startstr)));
-            my $end = POSIX::strftime("%Y-%m-%d",
-                                      localtime(str2time($stopstr)));
-
-            $str .= "$type ($status) $start -> $end ";
-
-            tag_machine_unsupported($machine)
-                if ($end lt $today);
-        }
-    } elsif ( $model =~ m/^IBM / ) {
-        # This code ignore extended support contracts.
-        my ($producttype) = $model =~ m/.*-\[(.{4}).+\]-/;
-        if ($producttype &amp;&amp; $serial) {
-            my $content =
-                get("http://www-947.ibm.com/systems/support/supportsite.wss/warranty?action=warranty&amp;brandind=5000008&amp;Submit=Submit&amp;type=$producttype&amp;serial=$serial");
-            if ($content) {
-                $content =~ s/&lt;[^>]+?>/;/gm;
-                $content =~ s/\s+/ /gm;
-                $content =~ s/;\s*;/;;/gm;
-                $content =~ s/;[\s;]+/;/gm;
-
-                $content =~ s/^.+?;Warranty status;//;
-                my ($status, $end) = $content =~ m/;Warranty status;([^;]+)\s*;Expiration date;(\S+) ;/;
-
-                $str .= "($status) -> $end ";
-
-                my $today = POSIX::strftime("%Y-%m-%d", localtime(time));
-                tag_machine_unsupported($machine)
-                    if ($end lt $today);
-            }
-        }
-    }
-    return $str;
-}
-</pre>
-
-<p>Here are some examples on how to use the function, using fake
-serial numbers.  The information passed in as arguments are fetched
-from dmidecode.</p>
-
-<pre>
-print get_support_info("hp.host", "HP ProLiant BL460c G1", "1234567890"
-                       "447707-B21");
-print get_support_info("dell.host", "Dell Inc. PowerEdge 2950", "1234567");
-print get_support_info("ibm.host", "IBM eserver xSeries 345 -[867061X]-",
-                       "1234567");
-</pre>
-
-<p>I would recommend this approach for tracking support contracts for
-everyone with more than a few computers to administer. :)</p>
+        <p>Ofte brukes intellektuell eiendom som samlebegrep for opphavsrett,
+patenter, varemerker og forretningshemmeligheter.  Problemet med dette
+begrepet er at det er svært misvisende.  For det første er ingen av de
+begrensede monopolene det her er snakk om som kan kalles eiendom, og
+for det andre er egenskapene til de ulike monopolene så forskjellige
+at det er mer tilslørende enn opplysende å gruppere dem sammen i et
+sekkebegrep.  Blant annet Richard Stallman har
+<a href="http://www.gnu.org/philosophy/not-ipr.html">skrevet litt om dette</a>.</p>
 
-<p>Update 2009-03-06: The IBM page do not include extended support
-contracts, so it is useless in that case.  The original Dell code do
-not handle extended support contracts either, but has been updated to
-do so.</p>
+<p>I dag kom jeg over
+<a href="http://blogs.sun.com/webmink/entry/intellectual_privilege">en
+bloggpost fra Simon Phipps</a> som foreslår å bruke intellektuelt
+privilegium som begrep i stedet, da det gjør det klarere at det ikke
+er snakk om eiendom, men et tidsbegrenset monopol.  Simon Phipps
+forteller videre at noen jobber med å skrive
+<a href="http://www.intellectualprivilege.com/book.html">en bok med
+tittel Intellectual Privilege</a>, og at boken er anbefalt av Lawrence
+Lessig.  Jeg tror jeg skal begynne å bruke begrepet intellektuelt
+privilegium når jeg snakker om opphavsrett, patenter, varemerker og
+forretningshemmeligheter framover.</p>
 
       </div>
       <div class="tags">
         
         
-        Tags: <a href="http://people.skolelinux.org/pere/blog/tags/english">english</a>, <a href="http://people.skolelinux.org/pere/blog/tags/nuug">nuug</a>.
+        Tags: <a href="http://people.skolelinux.org/pere/blog/tags/norsk">norsk</a>, <a href="http://people.skolelinux.org/pere/blog/tags/nuug">nuug</a>.
         
         
       </div>