Petter Reinholdtsen

Vitenskapens dogmer...
2009-03-27 11:30

Handspåleggere og andre tilhengere av ikke-etterprøvbar medisin, samt de som mener at verden ikke utviklet seg i henhold til evolusjonsteorien, hevder ofte at vitenskapen er dogmatisk og at vitenskapsfolk velger å ignorere alt vitenskapsfolk ikke kan forklare. Intet kunne være lenger fra sannheten. En interessant observasjon dog, er hvilke "dogmer" som ligger til grunn for vitenskapen. Her er et forsøk på å nevne noen av de grunnleggende antagelsene som legges til grunn.

Først og fremst ligger det til grunn en tro om at verden, verdensrommet og universet har de samme egenskapene overalt. Dvs. at en ikke tror at virkeligheten oppfører seg forskjellig f.eks. på jorden og i verdensrommet. Dette er ingen selvfølgelig antagelse, da f.eks. de gamle grekerne antok at virkeligheten var forskjellig på jorden og i himmelen. Antagelsen om at virkeligheten oppfører seg etter de samme "reglene" overalt skjøt først fart etter middelalderen.

Når en så har begynt å tro at virkeligheten oppfører seg likt overalt, så kan en begynne å tro at det er mulig å observere virkeligheten, og ut fra observasjoner kunne finne en forklaring, et sett med "regler", som kan brukes til å forutse hva som kommer til å skje i fremtiden basert på observasjoner gjort i fortiden. Eksempler på dette er at en kan beregne hvor lang tid en sten som er sluppet ned fra et hus vil bruke før den treffer bakken (og ikke tror at den i noen tilfeller vil fly oppover i stedet for nedover). En kan altså lage en mental modell over sammenhenger i virkeligheten, og bruke denne modellen til å, enten ved hjelp av logiske argumentasjonsrekker eller matematiske beregninger, forklare hva som kommer til å skje. Hvis modellen viser seg å fungere bra for observasjoner i dag, så kan en på tilsvarende vis beregne eller logisk sette sammen hva som har foregått i fortiden som ledet frem til det vi kan observere i dag.

Sist, men ikke minst, så tror vitenskapsfolk på at det er mulig å observere virkeligheten, og å tro på disse observasjonene (innenfor rimelig feilmargin som følger av måten observasjonen er gjort på). En tror altså ikke på at noen bakenfor virkeligheten forsøker å lure oss til å observere noe som ikke eksisterer. Det er naturligvis umulig (eller kanskje til nød svært vanskelig) å motbevise at vi lever i Matrix-aktige omgivelser, der vi observerer noe som eksisterer kun som en simulering i datamaskiner. Det at noe er umulig å motbevise gjør dog ikke at det blir spesielt interessant å ta utgangspunkt i. Det er antagelig ikke grenser for hvor mange måter det er mulig å tenke seg at vi blir lurt til å oppleve en virkelighet som "egentlig" ikke eksisterer, men i og med at den eksisterer for oss, så er det i hovedsak et filosofisk spørsmål om hva det betyr å eksistere. Det er ikke spesielt relevant for vitenskapen, som altså tar utgangspunkt i at den virkeligheten vi observerer eksisterer, virker likt overalt, og kan forstås med logikk og matematikk.

Det kan virke som om de som hevder at vitenskapen er ute av stand til å ta inn over seg Snåsamannens evner, homeopatiske forklaringsmodeller og en skapende gud, ikke tror på det samme som vitenskapsfolk. De kan ikke tro at den virkeligheten vi observerer eksisterer, virker likt overalt, og kan forstås med logikk og matematikk. Mitt problem med å tro på på det samme, er at hvis disse forutsetningene ikke ligger til grunn, så er det ingen grenser for hva en kan komme opp med av ideer til hvordan virkeligheten fungerer. Både Harry Potters magi, kreasjonistenes allmektige skaper, det flygende spagettimonsteret, Snåsamannens helbredelser, Haitis voodo, samenes ganding og middelalderens hekserier blir like gyldige. Jeg tror ikke noen av disse er spesielt sannsynlige, og velger derfor å ta utgangspunkt i vitenskapens rammer for hvordan virkeligheten skal forstås. For å sitere en reklamekampanje fra England: Vitenskap sender deg til månen. Religion sender deg inn i skyskrapere. Takke meg til en tur til månen.

Tags: norsk, vitenskap.
Første reprap-integreringsforsøk - Z-aksen beveger seg
2009-03-19 22:15

I går tok jeg mot til meg, og løste problemet med z-aksen ved å borre i delen som manglet feste mot tannjulet som skal drive z-aksereimen. Dermed var det klart for å montere z-akse-akslingen på motoren og komme et steg videre med reprap-monteringen. Prøvekjørte den i dag med testprogrammet til stepmotoren, og kunne glad konstatere at det hele fungerte. I hvert fall når stepmotoren ikke forsøkte å snurre for raskt rundt. Ved høy hastighet roterte ikke akslingen i det hele tatt. Motoren ble bare stående å vibrere. Usikker på hvorfor, men antar motoren ikke har nok kraft til å få hele akslingen til å rotere så raskt. Denne øvelsen avslørte dog et annet problem med monteringen så langt. Under testingen begynte skruer og muttere å ry ned fra ulike deler av reprap-konstruksjonen. Jeg har ikke skrudd alt hard nok sammen til å tåle slike vibrasjoner. Tror en 5-6 skruver og/eller muttere løsnet. Brukte ganske lang tid på å finne ut hvor det manglet deler og skru ting sammen igjen. Antar alt må strammes skikkelig til før første utskrift.

Neste steg er å få laget z-aksebåndet. Der trenger jeg egnet lim og en konstruksjon for å klemme bandet sammen under limingen, som beskrevet på reprap-wikien. Er blitt tipset om svart superlim som er elastisk også etter at det tørket, og dro ned til Small Size Hobbyland på Lilletorget som skulle ha slikt, men da jeg var innom fikk jeg høre at de ikke lenger hadde slikt lim. Må finne ut hvor i Oslo jeg kan skaffe slikt. Kanskje Panduro har? Vet ikke hva limet egentlig heter, så det er vanskelig å søke på nett.

Tags: 3d-printer, norsk, nuug, reprap.
Avisene i endring
2009-03-15 22:15

Jeg kom over bloggposten "Newspapers and Thinking the Unthinkable" som jeg synes forklarer godt hva som skjer med aviser, og fikk meg til å tenke litt rundt andre utdøende forretningsmodeller basert på å løse problemer som ikke lenger eksisterer. Det blir spennende å se hva vi ender opp med.

Tags: norsk, nuug.
En skam at det ikke finnes ordrett referat fra norske domstoler
2009-03-13 18:00

Advokatene jobber i disse dager hardt for å bli kvitt juryordningen fra norske domstoler. Det har de forsåvidt jobbet med i mange år. Personlig tror jeg det er å starte i feil ende, og en dårlig ide.

Visst du at det ikke lages ordrett referat fra norske domstoler? Det er ingen som skriver ned alt som sies i en norsk rettsal slik en ser i TV-serier fra USA. Det som publiseres er dommerens oppsummering, og alt som ikke blir med i den oppsummeringen er det vanskelig å få dokumentert i ettertid. Konsekvensen er at en kan lyve så mye en vil fra vitneboksen uten å bli tatt for det i ettertid, hvis dommeren ikke syntes det som ble sagt var så interessant at det ble med i dokumentet som dokumenterer domsavsigelsen. Mens alt som sies fra Stortingets talerstol er tilgjengelig på web etter kort tid for kontroll og kritikk, er det ingen tilsvarende mulighet for det som sies fra vitneboksen i en norsk domstol. Kan dette føre til at en sak varer lengre enn nødvendig i rettssystemet? Jeg tror det, og synes det er en skam at det ikke publiseres ordrette referater fra norske rettsaler.

En relatert observasjon er at det i utvalgte deler av landet eksperimenteres med lydopptak fra rettsalen, men disse opptakene er kun tilgjengelig for dommeren til hjelp når oppsummeringen skrives. Jeg synes som et minimum at disse lydopptakene som en regel burde vært publisert offentlig på web.

Tags: norsk.
Testing av reprap-elektronikken igang
2009-03-12 16:00

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.

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 stepper motordriveren (v1.1), 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å reprap-sidene om PC-strømforsyninger. 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 tipset meg om at en nedgradering til versjon 0012 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.

Tags: 3d-printer, norsk, nuug, reprap.
Frikanalen og jul i studentrådet
2009-03-11 23:40

I går lanserte NUUGs videogruppe Frikanalen med åpne standarder, 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.

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.

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 vandring i jerusalem via religiøst vinklede nyheter til kreasjonisk retorikk, men også fine dokumentarer om redningsselskapet og interessante tegneserieanmeldelser. Det jeg derimot har hatt størst glede av, er jul i studentrådet, der hver episode var en fest å se på. Jeg håper NUUG lykkes med å få ut sine opptak med like stor suksess.

Tags: norsk, nuug, video.
Lisensvalg for NUUG-opptakene endelig på plass
2009-03-06 21:20

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 Creative Commons Navngivelse-Del på samme vilkår 3.0 Norge. 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.

Tags: norsk, nuug, video.
Teknisk program for Go Open 2009 er nesten ferdig
2009-03-05 22:30

Etter lang tids jobbing begynner endelig programmet til det tekniske sporet på konferansen Go Open 2009 å bli ferdig. Det blir 9 punkter på programmet, og etter alt å dømme blir det disse 9:

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.

Tags: norsk, nuug.
Checking server hardware support status for Dell, HP and IBM servers
2009-02-28 23:50

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.

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:

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&cs=nodhs1&l=no&s=dhs&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/<[^>]+?>/;/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/<[^>]+?>/;/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 && $serial) {
            my $content =
                get("http://www-947.ibm.com/systems/support/supportsite.wss/warranty?action=warranty&brandind=5000008&Submit=Submit&type=$producttype&serial=$serial");
            if ($content) {
                $content =~ s/<[^>]+?>/;/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;
}

Here are some examples on how to use the function, using fake serial numbers. The information passed in as arguments are fetched from dmidecode.

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");

I would recommend this approach for tracking support contracts for everyone with more than a few computers to administer. :)

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.

Tags: english, nuug.
Using bar codes at a computing center
2009-02-20 08:50

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.

In the last issue of Linux Journal, I came across a project libdmtx to write and read bar code blocks as defined in the The Data Matrix Standard. 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 bar code writer written in postscript capable of creating such bar codes, but this was the first time I found a tool to read these bar codes.

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.

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.

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.

Tags: english, nuug.

RSS feed

Created by Chronicle v3.5