Integrerte utviklingsverktøy

Jeg har installert Linux hjemme med diverse hjelpeverktøy for utvikling. Mest fordi jeg er en tekno-junky, men også fordi jeg liker å pludre litt med ting hjemme som kan hjelpe meg å gjøre jobben min bedre.

På Linuxen min har jeg installert Subversion, DokuWiki, Bugzilla, CruiseControl, og MySQL. Jeg har konfigurert opp disse programmene slik at jeg kan sjekke inn kildekode i Subversion, så henter CruiseControl ut den koden og kompilerer den og sender meg en epost hvis den ikke greier å bygge det prosjektet kildekoden hører til.

Jeg har brukt DokuWiki til å kjapt kunne skrive ned spesifikasjoner og notater om ting jeg holder på med, og dermed ha dem lett tilgjengelig til senere. Bugzilla har jeg ikke brukt mye enda, men det er meningen at den skal hjelpe meg å holde oversikt over bugs i prosjektene mine.

Alt dette er vel og bra. Jeg har stort sett det jeg trenger til å kunne utvikle et produkt og holde oversikt over notater, og bugs, og evt om det er problemer med å bygge prosjektet fra kildekoden i Subversion.

Hvis jeg har en bug i et av prosjektene mine, må jeg skrive inn bugen i Bugzilla. Mens jeg holder på å fikse bugen skriver jeg kanskje noen notater i Wikien. Når jeg sjekker inn kode som er relatert til bugen skriver jeg innsjekkings-meldinger med notater om bugen også. Å holde dette i synk viser seg i praksis å være en tidkrevende og brysom jobb når det må gjøres manuelt.

I går leste jeg en artikkel om hvordan integrere Bugzilla, Subversion og en Wiki, slik at man enkelt kan legge inn lenker i Bugzilla til Subversion-filer, eller wiki-sider. Den forklarer også hvordan man skal få Subversion til å melde ifra til Bugzilla når en innsjekkingsmelding inneholde referanse til en bug, og legge til nye tags i wikien, så den automatisk lenker til bugs og kildekode i Subversion. Den viser også hvordan man auto-genererer ChangeLog filer direkte fra Subversion i forskjellige format.

Ingen av disse tingene er helt nye, men når man slår sammen alle verktøyene til en integrert verktøy-pakke, så blir resultatet ganske genialt! Det gjør det enklere og mindre tidkrevende å holde Bugzilla og Wiki og ChangeLogs synkronisert i forhold til koden, og man føler at man får mer utbytte av hvert enkelt verktøy når de er konfigurert slik. Jeg skal innrømme at det er totalt overkill for meg å sitte med et slikt system, men som tekno-junky er det veldig deilig å se hvordan man kan få til ting som dette. Det er nok mer noe for jobben enn for leking hjemmme.

Er alle programmeringsspråk skapt like?

Ifølge denne artikkelen er ikke alle programmeringsspråk like kraftige. Noen er mye bedre enn andre.

Det er vanskelig å ikke være enig etter å ha lest artikkelen. Han sier at man lett kan kjenne igjen språk man kan som ikke er så kraftige som språket man bruker i dag, men at det er umulig å vite om språk man ikke har erfaring med er bedre. De virker kanskje bare rare. Jeg tror det er på tide å lære noen nye programmeringsspråk.

Continuous Integration

Jeg kikket på Continuous Integration artikkelen til Martin Fowler for et par uker siden og oppdaget at han hadde oppdatert den ganske kraftig tidligere i år. Nå inkluderer den litt mer tidsriktig informasjon, som f.eks. å anbefale Subversion til versjonskontroll.

Kort fortalt handler artikkelen om hvordan man får ned antall bugs i kode, og minimalisert stresset forbundet med integrering av moduler til en fungerende build, ved å integrere hele tiden. Det gjøres ved at man har en såkalt ‘build server’, som Cruise Control. Denne programvaren sørger for å bygge hele løsningen og kjøre tester, automatisk og så ofte som mulig, enten på bestemte tidspunkt, eller når noen sjekker inn ny kode i versjonskontroll-systemet. Hvis noe går gale får de ansvarlige utviklerne beskjed i form av e-post eller, hvis de vil, kan de sjekke resultatene av byggingen på en vevside som genereres av Cruise Control. Artikkelen forklarer fordelene ved å gjøre dette, og hvordan få det til i praksis.

Jeg har installert og kjørt Cruise Control noen dager nå, og det virker som et solid system, som burde kunne brukes på de fleste prosjekter. Det må innrømmes at det føles som overkill for meg her hjemme, men det å ha praktisk erfaring med Continuous Integration kan bare være en fordel, slik jeg ser det.

Epigenetics

Jeg så nettopp ferdig The Ghost in Your Genes. Den handler om et tema jeg hørte om første gang for et par måneder siden, som heter epigenetics. Kort fortalt, handler det om at genetikk og arving av gener ikke er helt slik man har trodd til nå.

Man har trodd at genene til en person ble ført videre fra en generasjon til neste uforandret, og kun mutasjoner kunne forandre genene nevneverdig. Epigenetics prøver å forklare noe som er oppdaget de siste årene; nemlig at arvematerialet til en person har plutselig blitt forandret i en generasjon, og så ført videre til de neste generasjonene. Epi er gresk for “på”, og epigenetikk er genetikk oppå genene. Epigenetics sier at det er eget system som gjør at gener kan bli slått på eller av, avhengig av ytre faktorer, som f.eks. miljø eller stress. Dvs at miljøet til bestefaren din kan påvirke livslengden din, eller sjansen for at du får visse sykdommer. Det betyr at ens valg å ikke ta vare på sin egen kropp kan påvirke generasjonene som kommer etter deg også. Dine barn og barnebarn kan få kreft fordi du røyker!

Epigenetikk er både spennende og skremmende på samme tid. Hvis dette stemmer, så betyr det at man har et enda større ansvar for å ta vare på seg selv, for man tar da også vare på genene og helsen til kommende generasjoner. Det betyr også at man lettere kan forklare hvordan tretti tusen gener i genomet til mennesker kan ha så mye variasjon i seg.

Kloning

Denne helgen kjøpte jeg ny harddisk til linux-boksen min. Den gamle harddisken hvinte som en sliten sekkepipe spillt av en full skotte. Det tok litt tid å finne informasjonen jeg trengte, og det jeg fant var spredt på flere sider. Siden jeg pleier å glemme sånne ting til neste gang jeg trenger det, skrev jeg ned hva jeg gjorde, og la det ut her på hjemmesiden min som en How-to artikkel.

I den forbindelse fjernet jeg “programmering” fra venstre menyen, og erstattet den med “artikler”. Jeg får prøve å rettferdiggjøre siste r’n i “artikler” etterhvert.

Ubuntu

Nå har jeg visserlig installert Ubuntu hjemme!

Det har tatt sin tid, spesiellt pga adsl-modemet mitt er av gresk type, som i tillegg er usb-basert, og dermed krever ekstra konfigurering og rekompilering av kernel.

Men.. nå er det gjort. Ubuntu er linux gateway og firewall’n min, og jeg har webserver, mysql, bugzilla, dokuwiki, subversion, og snart en eller annen form for servlet container. *pust*

Eneste jeg mangler nå er nok fritid til å bruke alt dette spennende nye greiene!

Lediggang er roten til alt ondt

Det sies at man ikke skal slappe av for mye, og forventes at man har dårlig samvittighet hvis man ikke gjør noe produktivt.br /Men nå sitter jeg her og er halvsjuk, og finner ut at det å slappe av skal være en fin ting. Bra saker. Ikke at jeg egentlig hadde dårlig samvittighet.. eller? ..

Ellers har jeg kommet over disse fine websidene:

http://www.afterlifeseasons.com/

http://www.mullerphoto.com/