<link></link>
<atom:link href="index.rss" rel="self" type="application/rss+xml" />
+ <item>
+ <title>Fransk idiotlovforslag hinker gjennom parlamentet</title>
+ <link>Fransk_idiotlovforslag_hinker_gjennom_parlamentet.html</link>
+ <guid isPermaLink="true">Fransk_idiotlovforslag_hinker_gjennom_parlamentet.html</guid>
+ <pubDate>Fri, 10 Apr 2009 00:10:00 +0200</pubDate>
+ <description>
+<p><a href="http://www.dagbladet.no/2009/04/09/kultur/musikk/fildeling/tekno/5689356/">Dagbladet
+melder at det franske idiotforslaget om å kutte Internet-forbindelsen
+til alle som blir anklaget for å ha brutt opphavsretten 3 ganger</a>
+ble nedstemt i dag med 21 mot 15 stemmer. Vinklingen i Dagbladet er
+litt merkelig når en vet at det samme forslaget ble vedtatt i
+parlamentets andre kammer med 12 mot 4 stemmer, etter at det
+<a href="http://opendotdotdot.blogspot.com/2009/04/hadopi-law-passed-by-12-votes-to-4.html">overraskende
+ble foreslått å ta saken opp til votering 22:45 sist torsdag</a>,
+etter sigende i strid med vanlige rutiner i det franske parlamentet.</p>
+
+<p>Det hele blir ennå mer komisk når et vet at
+<a href="http://www.zeropaid.com/news/10034/political_hypocrisy_french_president_sued_for_copyright_infringement/">presidentens
+parti er blitt anklaget for å ha brutt opphavsretten</a>. Mon tro om
+partet skal miste internet-forbindelsen hvis de får 2 anklager til
+rettet mot seg.</p>
+</description>
+ </item>
+
+ <item>
+ <title>Recording video from cron using VLC</title>
+ <link>Recording_video_from_cron_using_VLC.html</link>
+ <guid isPermaLink="true">Recording_video_from_cron_using_VLC.html</guid>
+ <pubDate>Sun, 5 Apr 2009 10:00:00 +0200</pubDate>
+ <description>
+<p>One think I have wanted to figure out for a along time is how to
+run vlc from cron to do recording of video streams on the net. The
+task is trivial with mplayer, but I do not really trust the security
+of mplayer (it crashes too often on strange input), and thus prefer
+vlc. I finally found a way to do it today. I spent an hour or so
+searching the web for recipes and reading the documentation. The
+hardest part was to get rid of the GUI window, but after finding the
+dummy interface, the command line finally presented itself:</p>
+
+<blockquote><pre>URL=http://www.ping.uio.no/video/rms-oslo_2009.ogg
+SAVEFILE=rms.ogg
+DISPLAY= vlc -q $URL \
+ --sout="#duplicate{dst=std{access=file,url='$SAVEFILE'},dst=nodisplay}" \
+ --intf=dummy</pre></blockquote>
+
+<p>The command stream the URL and store it in the SAVEFILE by
+duplicating the output stream to "nodisplay" and the file, using the
+dummy interface. The dummy interface and the nodisplay output make
+sure no X interface is needed.</p>
+
+<p>The cron job then need to start this job with the appropriate URL
+and file name to save, sleep for the duration wanted, and then kill
+the vlc process with SIGTERM. Here is a complete script
+<tt>vlc-record</tt> to use from <tt>at</tt> or <tt>cron</tt>:</p>
+
+<blockquote><pre>#!/bin/sh
+set -e
+URL="$1"
+SAVEFILE="$2"
+DURATION="$3"
+DISPLAY= vlc -q "$URL" \
+ --sout="#duplicate{dst=std{access=file,url='$SAVEFILE'},dst=nodisplay}" \
+ --intf=dummy < /dev/null > /dev/null 2>&1 &
+pid=$!
+sleep $DURATION
+kill $pid
+wait $pid</pre></blockquote>
+</description>
+ </item>
+
+ <item>
+ <title>Standardize on protocols and formats, not vendors and applications</title>
+ <link>Standardize_on_protocols_and_formats__not_vendors_and_applications.html</link>
+ <guid isPermaLink="true">Standardize_on_protocols_and_formats__not_vendors_and_applications.html</guid>
+ <pubDate>Mon, 30 Mar 2009 11:50:00 +0200</pubDate>
+ <description>
+<p>Where I work at the University of Oslo, one decision stand out as a
+very good one to form a long lived computer infrastructure. It is the
+simple one, lost by many in todays computer industry: Standardize on
+open network protocols and open exchange/storage formats, not applications.
+Applications come and go, while protocols and files tend to stay, and
+thus one want to make it easy to change application and vendor, while
+avoiding conversion costs and locking users to a specific platform or
+application.</p>
+
+<p>This approach make it possible to replace the client applications
+independently of the server applications. One can even allow users to
+use several different applications as long as they handle the selected
+protocol and format. In the normal case, only one client application
+is recommended and users only get help if they choose to use this
+application, but those that want to deviate from the easy path are not
+blocked from doing so.</p>
+
+<p>It also allow us to replace the server side without forcing the
+users to replace their applications, and thus allow us to select the
+best server implementation at any moment, when scale and resouce
+requirements change.</p>
+
+<p>I strongly recommend standardizing - on open network protocols and
+open formats, but I would never recommend standardizing on a single
+application that do not use open network protocol or open formats.</p>
+</description>
+ </item>
+
+ <item>
+ <title>Returning from Skolelinux developer gathering</title>
+ <link>Returning_from_Skolelinux_developer_gathering.html</link>
+ <guid isPermaLink="true">Returning_from_Skolelinux_developer_gathering.html</guid>
+ <pubDate>Sun, 29 Mar 2009 21:00:00 +0200</pubDate>
+ <description>
+<p>I'm sitting on the train going home from this weekends Debian
+Edu/Skolelinux development gathering. I got a bit done tuning the
+desktop, and looked into the dynamic service location protocol
+implementation avahi. It look like it could be useful for us. Almost
+30 people participated, and I believe it was a great environment to
+get to know the Skolelinux system. Walter Bender, involved in the
+development of the Sugar educational platform, presented his stuff and
+also helped me improve my OLPC installation. He also showed me that
+his Turtle Art application can be used in standalone mode, and we
+agreed that I would help getting it packaged for Debian. As a
+standalone application it would be great for Debian Edu. We also
+tried to get the video conferencing working with two OLPCs, but that
+proved to be too hard for us. The application seem to need more work
+before it is ready for me. I look forward to getting home and relax
+now. :)</p>
+</description>
+ </item>
+
+ <item>
+ <title>Time for new LDAP schemas replacing RFC 2307?</title>
+ <link>Time_for_new__LDAP_schemas_replacing_RFC_2307_.html</link>
+ <guid isPermaLink="true">Time_for_new__LDAP_schemas_replacing_RFC_2307_.html</guid>
+ <pubDate>Sun, 29 Mar 2009 20:30:00 +0200</pubDate>
+ <description>
+<p>The state of standardized LDAP schemas on Linux is far from
+optimal. There is RFC 2307 documenting one way to store NIS maps in
+LDAP, and a modified version of this normally called RFC 2307bis, with
+some modifications to be compatible with Active Directory. The RFC
+specification handle the content of a lot of system databases, but do
+not handle DNS zones and DHCP configuration.</p>
+
+<p>In <a href="http://www.skolelinux.org/">Debian Edu/Skolelinux</a>,
+we would like to store information about users, SMB clients/hosts,
+filegroups, netgroups (users and hosts), DHCP and DNS configuration,
+and LTSP configuration in LDAP. These objects have a lot in common,
+but with the current LDAP schemas it is not possible to have one
+object per entity. For example, one need to have at least three LDAP
+objects for a given computer, one with the SMB related stuff, one with
+DNS information and another with DHCP information. The schemas
+provided for DNS and DHCP are impossible to combine into one LDAP
+object. In addition, it is impossible to implement quick queries for
+netgroup membership, because of the way NIS triples are implemented.
+It just do not scale. I believe it is time for a few RFC
+specifications to cleam up this mess.</p>
+
+<p>I would like to have one LDAP object representing each computer in
+the network, and this object can then keep the SMB (ie host key), DHCP
+(mac address/name) and DNS (name/IP address) settings in one place.
+It need to be efficently stored to make sure it scale well.</p>
+
+<p>I would also like to have a quick way to map from a user or
+computer and to the net group this user or computer is a member.</p>
+
+<p>Active Directory have done a better job than unix heads like myself
+in this regard, and the unix side need to catch up. Time to start a
+new IETF work group?</p>
+</description>
+ </item>
+
+ <item>
+ <title>Hva er egentlig en åpen standard?</title>
+ <link>Hva_er_egentlig_en___pen_standard_.html</link>
+ <guid isPermaLink="true">Hva_er_egentlig_en___pen_standard_.html</guid>
+ <pubDate>Sat, 28 Mar 2009 10:50:00 +0100</pubDate>
+ <description>
+<p>Jeg møter alle slags interessante mennesker på min vei, og et møte
+jeg lærte mye av var å treffe på en svært kompetent IT-fyr som
+benektet ting jeg anser som åpenbart og selvfølgelig når det gjelder
+standarder. Det var interessant, da det fikk meg til å tenke litt
+nøyere på hvilke mekanismer som ligger til grunn for at noe oppfattes
+som en standard. Det hele startet med arbeid rundt integrering av NSS
+LDAP mot Active Directory, og problemer som oppstår pga. at Active
+Directory ikke følger LDAP-spesifikasjonen som dokumentert i RFCer fra
+IETF (konkret, AD returnerer kun et subset av attributter hvis det er
+mer enn 1500 atributter av en gitt type i et LDAP-objekt, og en må be
+om resten i bolker av 1500). Jeg hevdet måten dette ble gjort på brøt
+med LDAP-spesifikasjonen, og henviste til hvor i LDAP-spesifikasjonen
+fra IETF det sto at oppførselen til AD ikke fulgte
+LDAP-spesifikasjonen. AD-spesialisten overrasket meg da ved å
+fortelle at IETF var ikke de som definerte LDAP-spesifikasjonen, og at
+Active Directory ikke brøt den virkelige LDAP-spesifikasjonen som han
+mente lå til grunn. Jeg ble spesielt overrasket over denne
+tilnærmingen til problemstillingen, da til og med Microsoft så vidt
+jeg kan se anerkjenner IETF som organisasjonen som definerer
+LDAP-spesifikasjonen. Jeg fikk aldri spurt hvem han mente sto bak den
+egentlige LDAP-spesifikasjonen, da det var irrelevant for problemet vi
+måtte løse (få Linux og AD til å fungere sammen). Dette møtet
+fortalte meg uansett at det ikke er gitt at alle aktører er enige om
+hva en standard er, og hva som er kilden til en gitt standard. Det er
+vanskelig å enes om felles standarder før en først enes om hvem som
+bestemmer hva en gitt standard innebærer.</p>
+
+<p>Hva er så en standard? I sin abstrakte form er det noe å samles
+om. På engelsk er en av betydningene fane brukt i krig, du vet, den
+type fane en samlet seg rundt på kamplassen i riddertiden. En
+standard definerer altså et felleskap, noen som har noe felles. Det
+er naturligvis mange måter å utgjøre et felleskap på. En kan
+f.eks. enes om å gjøre alt slik som Ole gjør det, og dermed si at Oles
+oppførsel er standard. Hver gang Ole endrer oppførsel endrer også
+standarden seg uten noe mer organisering og prosedyre. En variant av
+dette er å gjøre slik som Ole har gjort det i stedet for slik Ole til
+enhver til gjør noe. Dette er ofte litt enklere å forholde seg til,
+da en slipper å sjekke med Ole hver gang for å vite hvordan ting skal
+gjøres nå, men hvis det Ole gjorde noe dumt den gang en bestemte seg
+for å følge Ole, så er det vanskeligere å få endret oppførsel for å
+unngå dette dumme.</p>
+
+<p>En kan også ta det et skritt videre, og istedet for å basere seg på
+enkeltpersoners oppførsel sette seg ned og bli enige om hvordan en
+skal gjøre ting, dvs. lage et felleskap basert på konsensus. Dette
+tar naturligvis litt mer tid (en må diskutere ting i forkant før en
+kan sette igang), men det kan bidra til at den oppførselen en
+planlegger å benytte seg av er mer gjennomtenkt. Det ender også
+typisk opp med en beskrivelse av ønsket oppførsel som flere kan forstå
+- da flere har vært involvert i å utarbeide beskrivelsen.</p>
+
+<p>Dette er dessverre ikke alt som trengs for å forstå hva en åpen
+standard er for noe. Der alle kan se på hvordan folk oppfører seg, og
+dermed har valget om de vil oppføre seg likt eller ikke, så er det
+endel juridiske faktorer som gjør det hele mer komplisert -
+opphavsretten og patentlovgivningen for å være helt konkret. For å gi
+et eksempel. Hvis noen blir enige om å alltid plystre en bestemt
+melodi når de møtes, for å identifisere hverandre, så kan
+opphavsretten brukes til å styre hvem som får lov til å gjøre dette.
+De har standardisert hvordan de kjenner igjen alle som følger denne
+standarden, men ikke alle har nødvendigvis lov til å følge den.
+Musikk er opphavsrettsbeskyttet, og fremføring av musikk i
+offentligheten er opphavsmannens enerett (dvs. et monopol). Det vil i
+sin ytterste konsekvens si at alle som skal plystre en
+opphavsrettsbeskyttet melodi i det offentlige rom må ha godkjenning
+fra opphavsmannen. Har en ikke dette, så bryter en loven og kan
+straffes. Det er dermed mulig for opphavsmannen å kontrollere hvem
+som får lov til å benytte seg av denne standarden. En annen variant
+er hvis en standard er dokumentert, så er dokumentet som definerer
+standarden (spesifikasjonen) beskyttet av opphavsretten, og det er
+dermed mulig for rettighetsinnehaver å begrense tilgang til
+spesifikasjonen, og slik styre hvem som kan ta i bruk standarden på
+den måten.</p>
+
+<p>Der opphavsretten innvilger et monopol på kunstneriske uttrykk med
+verkshøyde, innvilger patentlovgivningen monopol på ideer. Hvis en
+slik patentert idé (fortrinnsvis uttrykt i en teknisk innretning, men
+det er kompliserende faktorer som gjør at det ikke er et krav) trengs
+for å ta i bruk en standard, så vil den som innehar patent kunne styre
+hvem som får ta i bruk standarden. Det er dermed ikke gitt at alle
+kan delta i et standard-felleskap, og hvis de kan delta, så er det
+ikke sikkert at det er på like vilkår. F.eks. kan rettighetsinnehaver
+sette vilkår som gjør at noen faller utenfor, det være seg av
+finansielle, avtalemessige eller prinsipielle årsaker. Vanlige slike
+vilkår er "må betale litt for hver kunde/bruker" som utelukker de som
+gir bort en løsning gratis og "må gi fra seg retten til å håndheve
+sine egne patentrettigheter ovenfor rettighetshaver" som utelukker
+alle som ønsker å beholde den muligheten.</p>
+
+<p>En åpen standard innebærer for meg at alle kan få innsikt i en
+komplett beskrivelse av oppførsel som standarden skal dekke, og at
+ingen kan nektes å benytte seg av standarden. Noen mener at det
+holder at alle med tilstrekkelig finansiering kan få tilgang til
+spesifikasjonen og at en kun har finansielle krav til bruk.
+Pga. denne konflikten har et nytt begrep spredt seg de siste årene,
+nemlig fri og åpen standard, der en har gjort det klart at alle må ha
+komplett og lik tilgang til spesifikasjoner og retten til å gjøre bruk
+av en standard for at en standard skal kunne kalles fri og åpen.</p>
+</description>
+ </item>
+
<item>
<title>Vitenskapens dogmer...</title>
<link>Vitenskapens_dogmer___.html</link>
</description>
</item>
- <item>
- <title>Testing av reprap-elektronikken igang</title>
- <link>Testing_av_reprap_elektronikken_igang.html</link>
- <guid isPermaLink="true">Testing_av_reprap_elektronikken_igang.html</guid>
- <pubDate>Thu, 12 Mar 2009 16:00:00 +0100</pubDate>
- <description>
-<p>Lenge siden det var en oppdatering av status for min 3D-skriver og
-i mellomtiden har det skjedd en god del. Reprap-en er nesten ferdig
-montert, og elektronikken er også nesten ferdig loddet. Det ser ut
-til at bits-from-bytes sitt byggesett versjon 2.01 hadde noen småfeil,
-der en del manglet og en annen hadde suboptimalt design. Jeg løser
-antagelig det ene problemet med å borre noen ekstra hull til skruver i
-en plastdelen som trenger å festes. Det andre problemet håper jeg å
-få hjelp fra Audun Vaaler ved Høgskolen i Østfold til å løse.
-Høgskolen er igang med å bygge en tilsvarende reprap i versjon 2.0, og
-er kommet litt lenger enn meg. De kan forhåpentligvis skrive ut den
-delen jeg mangler på denne.</p>
-
-<p>Når det gjelder elektronikken, så er mye allerede loddet sammen av
-min venn Anders Rosnes, som har mer peiling på elektronikk og lodding
-enn meg. Jeg fikk i dag testet
-<a href="http://reprap.org/bin/view/Main/Stepper_Motor_Driver_1_1">stepper
-motordriveren (v1.1)</a>, og det fungerte. Jeg møtte et lite problem
-med strømforsyningen, en standard ATX-strømforsyning som nektet å
-fungere før jeg hadde satt en ledning mellom GRD og PS_ON som
-beskrevet på
-<a href="http://dev.www.reprap.org/bin/view/Main/PCPowerSupply">reprap-sidene
-om PC-strømforsyninger</a>. Jeg møtte også et annet problem med
-Arduino-programvaren. Versjon 0013 fungerer visst ikke på
-Debian/Etch. Den kompilerte binæren ble på 0 bytes. En side jeg fant
-vha. et Google-søk
-<a href="http://www.arduino.cc/cgi-bin/yabb2/YaBB.pl?num=1234153046/5">tipset
-meg</A> om at en nedgradering
-til <a href="http://arduino.googlecode.com/files/arduino-0012-linux.tgz">versjon
-0012</a> kunne løse problemet, og endelig ser jeg motorakslingen
-snurre. Nå er det å koble sammen mekanikk og elektronikk for å se om
-reprap-en kvikner til.</p>
-</description>
- </item>
-
- <item>
- <title>Frikanalen og jul i studentrådet</title>
- <link>Frikanalen_og_jul_i_studentr__det.html</link>
- <guid isPermaLink="true">Frikanalen_og_jul_i_studentr__det.html</guid>
- <pubDate>Wed, 11 Mar 2009 23:40:00 +0100</pubDate>
- <description>
-<p>I går
-<a href="http://lists.nuug.no/pipermail/interesserte/2009-March/000387.html">lanserte</a>
-NUUGs videogruppe
-<a href="http://www.frikanalen.no">Frikanalen</a> med
-<a href="http://www.nuug.no/pub/video/frikanalen/frontpage.cgi">åpne
-standarder</a>, og resultatet av noen intense uker med arbeide kunne
-endelig presenteres. Jeg har tro på åpen kanalkonseptet som
-Frikanalen er et eksempel på, der borgerne får anledning til å
-kringkaste sitt syn på en åpen og demokratisk måte. Jeg er veldig
-glad vi har fått gjort kanalen tilgjengelig i Ogg Theora, slik at alle
-kan få tilgang til opptakene på web, og slipper å måtte installere MS
-Silverlight for å spille av opptakene.</p>
-
-<p>Frikanalen har en brokete historie, og dagens inkarnasjon er ikke
-helt slik foreningen Åpen kanal planla det for mange år siden, noe som
-er bakgrunnen for at det fredag 13. mars 2009 kl 09:00 starter en
-rettsak i Oslo tingrett der Kringkasterforeningen (tidligere
-foreningen Åpen kanal) har saksøkt kulturdepartementet over
-konsesjonsvilkårene til Frikanalen. Jeg er spent på resultatet.</p>
-
-<p>I arbeidet med Frikanalen med åpne standarder, så har vi hatt glede
-av å se en rekke av innslagene som er tilgjengelig. Her er mye
-religiøst sludder, fra
-<a href="http://www.nuug.no/pub/video/frikanalen/fetchvideo.cgi?videoId=720">vandring
-i jerusalem</a> via
-<a href="http://www.nuug.no/pub/video/frikanalen/fetchvideo.cgi?videoId=779">religiøst
-vinklede nyheter</a> til
-<a
-href="http://www.nuug.no/pub/video/frikanalen/fetchvideo.cgi?videoId=2077">kreasjonisk
-retorikk</a>, men også fine
-<a href="http://www.nuug.no/pub/video/frikanalen/fetchvideo.cgi?videoId=407">dokumentarer
-om redningsselskapet</a> og
-<a href="http://www.nuug.no/pub/video/frikanalen/fetchvideo.cgi?videoId=2204">interessante
-tegneserieanmeldelser</a>. Det jeg derimot har hatt størst glede av,
-er
-
-<a href="http://www.nuug.no/pub/video/frikanalen/fetchvideo.cgi?videoId=1556">jul
-i studentrådet</a>, der hver episode var en fest å se på. Jeg håper
-NUUG lykkes med å få ut sine opptak med like stor suksess.</p>
-</description>
- </item>
-
- <item>
- <title>Lisensvalg for NUUG-opptakene endelig på plass</title>
- <link>Lisensvalg_for_NUUG_opptakene_endelig_p___plass.html</link>
- <guid isPermaLink="true">Lisensvalg_for_NUUG_opptakene_endelig_p___plass.html</guid>
- <pubDate>Fri, 6 Mar 2009 21:20:00 +0100</pubDate>
- <description>
-<p>Etter mange års meditasjon over temaet, har NUUG endelig klart å
-bestemme seg for hvilken lisens vi skal bruke på videoopptakene som
-gjøres av NUUGs videogruppe. Ole Kristian har annonsert at lisensen
-blir <a href="http://creativecommons.org/licenses/by-sa/3.0/no/">Creative
-Commons Navngivelse-Del på samme vilkår 3.0 Norge</a>. Jeg er veldig
-glad for at denne saken endelig er landet. Lisensen for opptaket til
-Stallman-foredraget ble en annen pga. at lisensvalget ikke var avklart
-på forhånd og IFI og PING ønsket CC-BY-ND, og må ses på som et unntak
-i denne sammenhengen.</p>
-</description>
- </item>
-
- <item>
- <title>Teknisk program for Go Open 2009 er nesten ferdig</title>
- <link>Teknisk_program_for_Go_Open_2009_er_nesten_ferdig.html</link>
- <guid isPermaLink="true">Teknisk_program_for_Go_Open_2009_er_nesten_ferdig.html</guid>
- <pubDate>Thu, 5 Mar 2009 22:30:00 +0100</pubDate>
- <description>
-<p>Etter lang tids jobbing begynner endelig programmet til det
-tekniske sporet på konferansen <a href="http://www.goopen.no/">Go Open
-2009</a> å bli ferdig. Det blir 9 punkter på programmet, og etter alt
-å dømme blir det disse 9:</p>
-
-<ul>
-
-<li>"Open Telephony: A solution greater than the sum of its parts" med
- Jon "maddog" Hall</li>
-<li>OpenSolaris-relatert med Ian Murdock fra SUN</li>
-<li>"The inner workings of the OpenStreetmap project and the
- technology used" med Andy Allan </li>
-<li>Coreboot-relatert med Peter Stuge</li>
-<li>"Gratis værdata fra Meteorologisk institutt" med Trond Michelsen</li>
-<li>RRDtool/Nagios-relatert med Tobias Oetiker</li>
-<li>"Developers guide to server-side productivity and fun using open
- source platforms and frameworks" med en gjeng folk fra
- JavaBin-miljøet</li>
-<li>"G(et)it Nå!" med Marcus Ramberg</li>
-<li>Om kontrolltelling av valgresultater med fri programvare med Mitch
- Trachtenberg</li>
-
-</ul>
-
-<p>De siste bekreftelsene og overskrifter mangler og kommer
-forhåpentlig på plass før mandag, men jeg håper dette blir et program
-flere enn meg vil sette pris på. Jeg gleder meg i hvert fall
-stort.</p>
-</description>
- </item>
-
- <item>
- <title>Checking server hardware support status for Dell, HP and IBM servers</title>
- <link>Checking_server_hardware_support_status_for_Dell__HP_and_IBM_servers.html</link>
- <guid isPermaLink="true">Checking_server_hardware_support_status_for_Dell__HP_and_IBM_servers.html</guid>
- <pubDate>Sat, 28 Feb 2009 23:50:00 +0100</pubDate>
- <description>
-<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>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>
-</description>
- </item>
-
- <item>
- <title>Using bar codes at a computing center</title>
- <link>Using_bar_codes_at_a_computing_center.html</link>
- <guid isPermaLink="true">Using_bar_codes_at_a_computing_center.html</guid>
- <pubDate>Fri, 20 Feb 2009 08:50:00 +0100</pubDate>
- <description>
-<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>
-</description>
- </item>
-
</channel>
</rss>