Software/verktøy

Her skriver jeg om ulike verktøy som interesserer meg som utvikler. Produktivitetsverktøy og Visual Studio add-ins, continuous integration tools, ulike .net biblioteker.., alt får plass i denne kategorien.

Avhengighetskunst

Patrick Smacchia er en C# MVP som har utviklet et verktøy for .NET utviklere som heter nDepend. Dette er et statisk analyseverktøy som gjør det enklere å administrere kodebaser med høy kompleksitet. Patrick var så vennlig og gav meg en gratis pro-lisens av produktet for en stund tilbake, men foreløpig har jeg ikke fått anbledning til å ta det orntlig i bruk. Vi planlegger derimot noen større refaktureringer av arkitekturen vår, og da vil sansynligvis nDepend komme til god nytte.

Det jeg har brukt det til er å lage abstrakt kunst som jeg har hengt opp på kontoret. Her ser du f.eks. et fint bilde generert over alle avhengighetene i et av våre webprodukter. Skal vi kalle det a Big Ball of Mud?

DependencyGraphSnapshot

Det er flere år siden jeg kom borti nDepend første gangen, og det har nå virkelig blitt modent. Ta en titt på feature-listen for en smakebit. Det integrerte code query språket (CQL) er spesielt imponerende..

Knagger: ,

Manuell timeføring vs. automatisk logging

Utviklerne i Contiki må registrere alle timer de jobber, uavhengig om tiden er fakturerbar eller ikke. Dette gjør vi for å få en oversikt over hva vi bruker tid på, og timeføringen blir dermed svært detaljert. Dere får unnskylde språket, men dette er drit skjedelig, og føles som bortkastet tid. Og programmet vi bruker er svært lite brukervennlig, noe det har til felles med alle andre slike verktøy jeg har vært tvunget til å benytte andre steder.

currenttime
Registreringsgrensesnittet vi bruker

Kvaliteten på det som registreres blir raskt et problem når det gjøres så tungvidt. Man er nesten nødt til å “dikte litt”, ettersom utviklere flest multitasker hele tiden. Kategoriene vi skal bruke er som sakt detaljerte, men samtidig er det elementer på samme detaljenivå som mangler fullstendig. Og å hele tiden huske på hva man har gjort en dag (eller en uke (eller en måned)) er komplett umulig – i alle fall for meg.

Ok, så det er slik jeg har det på jobben. Så hvordan gjør jeg det privat? Jeg er nemlig interessert i tilsvarende mål i forhold til hva jeg gjør av personlige ting, og da benytter jeg en Mye Mer Intelligent Løsning. På laptoppen har jeg kjørende en liten service som hele tiden logger hva jeg holder på med. Informasjonen sendes til en sentral server, hvor jeg får en ekstremt detaljert oversikt over alt jeg har gjort.

Løsningen heter RescueTime, og her er noe av det jeg får ut av den – uten å gjøre en eneste, manuell registrering, og uten å betale en eneste krone. For det første kan jeg se hvor mye tid jeg har brukt i ulike applikasjoner eller på ulike sider på nettet. I tillegg til tabulære data presenteres det slik som dette:

AppsAndSites

Her kan jeg se at jeg i forrige uke totalt jobbet nesten 5 timer i Visual Studio (på privaten), jobbet nesten like mye med bloggen min, og var nesten 4 timer på twitter. Jeg kan enkelt gå inn på hver enkelt applikasjon og se hvordan tidsforbruket sprer seg fra dag for dag, eller time for time om jeg ønsker det.

Tweetdeck

Her ser du hvor mye jeg har brukt i tweetdeck siden jeg startet å bruke RescueTime. Og da er det snakk om aktiv tid i applikasjonen – for jeg har da tweetdeck kjørende hele dagen. Alle grafer og tabeller kan forøvrig brytes ned på de tidsintervallene en selv måtte ønske – fra timer til år, og også helt egendefinerte perioder. Jeg kan enkelt finne ut at jeg i dag mellom 8 og 9 om morgenen brukte 3 minutter og 9 sekunder på å sjekke min private mail, og 2 minutter og 57 sekunder på å sjekke jobbmailen. Hvilke andre teknikker kan gi deg informasjon med slik detaljegrad?

Men det stopper ikke der. RescueTime har også kategorier. De fleste applikasjoner og veldig mange websider ligger allerede ferdigdefinert med kategorier, men man kan legge til flere selv, og endre de relasjonene som er laget for deg. Dermed kan man få oversikter som denne:

TopCategories

Jeg er veldig fornøyd med å ha Dev Tools på første plass (dette er fra forrige uke). Fargene på søylene er forøvrig en indikasjon på hvor effektiv jeg er (i forhold til hva jeg bør bruke tiden min på) når jeg bruker en gitt applikasjon eller en kategori. Lys blå er bra, rød not so much.

Det er også interessant å se på kategorier over tid. Under ser du en graf som viser hvordan jeg fordeler tiden min hver dag mellom utvikling, bloggen min, social networking og andre ting.

CategoriesOverTime

Man kan som sakt også fortelle RescueTime hvor effektiv man er om man benytter en bestemt applikasjon, og da vil systemet fortelle deg hvor effektiv du er totalt sett. Slik kan man måle i hvilken grad man holder på med det man burde holde på med. Under ser du effektivitetsgrafen min for forrige uke:

EfficiencyScoreOverTime

Og neste graf viser effektiviteten for fredagen – hvor jeg måtte holde meg hjemme etter å ha vrikket foten. Jeg sto opp i sekstiden, og sjekket sansynligvis twitter, noe som igrunnen ikke er så effektivt – og dermed gikk grafen under null. Men så koblet jeg meg opp mot jobben og parprogrammerte remote til nærmere fire. Og utover kvelden drev jeg også å programmerte litt. Helt tydelig en effektiv dag.

EfficiencyScoreOverTime2

RescueTime dashboardet, hvor de fleste av disse grafene er klippet fra, gir meg også en effektivitetsindikator som sammeligner meg med øvrige brukere. Det aner meg at denne biten kommer til å bli mer avansert etterhvert som produktet utvikles videre.

EfficiencyScore

Man kan også sette opp diverse mål som RescueTime vil overvåke for deg, og rapportere grad av oppnåelse på. Jeg har sålangt satt opp fire stykker, som skal sørge for at jeg programmerer en viss mengde hver uke (#1 og 2), få meg til å huske å registrere timer på jobben (#3), og ar en tur innom DimeCasts.net og ser en 10-minutters programmeringsvideo (#4).

Goals

Så spørsmålet mitt er: Hvorfor har vi / bruker vi så dårlige og gammeldagse måter å overvåke tidsforbruk på på arbeidsplassen når det finnes teknikker som er hundre ganger bedre? RescueTime kan også brukes profesjonelt. Man kan bl.a. sette opp teams som overvåkes samlet, og for et team på 10 personer må man ut med 85 dollar i måneden. Jeg lurer på hvor mye CurrentTime, som er det vi bruker i dag, koster oss. For ikke å snakke om hva frustrasjonen over timeføringen og tiden vi bruker på manuell registrering koster.

Knagger:

doris huskeliste

Jeg har lenge lett etter et godt to-do verktøy, og har forsøkt mange, ulike verktøy. Det er veldig viktig for meg å ha et sentralt sted hvor jeg kan “huske” alle mulige ting jeg skal gjøre, og jeg trenger en viss mengde funksjonalitet – som gruppering, enkel registrering og at det er oversiktelig. Men løsningene jeg tester er ofte enten for enkle eller for kompliserte.

Doris er en online webløsning som jeg nå tror er akkurat det jeg trenger. Et veldig enkelt ajax-grensesnitt med todo-items gruppert i kategorier.

doris to-do screen shot

Jeg har bruket chromes snarvei-funksjonalitet til å legge doris inn i startmenyen i Windows, slik at når jeg nå fyrer opp Launchy og skriver “doris” så får jeg opp et pent lite vindu med todo-listen min.

Jeg har lenge gått og tenkt på at jeg burde skrive noe om viktigheten av å organisere tankene sine, og hvordan man kan bli mere effektiv ved å bruke todo-lister. Jeg er en tilhenger av Getting Things Done – jeg gjør i alle fall så godt jeg kan. Men det er mange nok som har skrevet mye bra om dette allerede. Hvis du ikke har hørt om GTD bør du sjekke det ut. Så foreløpig nøyer jeg meg med å nevne det, og fortelle hvilket todo-verktøy jeg bruker.

Farger i Visual Studio editoren

Jeg har alltid vært en theme geek. Har aldri klart å holde meg særlig lenge til den hvite bakgrunnen i Visual Studio, og eksperimenterer ofte med ulike color themes. I det siste har jeg også oppdaget hvordan fargeinstillingene kan hjelpe deg med det å lese og forstå kode raskere, men også med å identifisere kode som er vanskelig å teste og som bør refaktureres. Chris Missal har skrevet en god post om dette på LosTechies.

Det er litt slitsomt å modifisere fargeoppsettet i Visual Studio selv, jeg synes det er mye bedre å finne theme som andre har laget og importere disse. Scott Hanselman har bl.a. en bra liste med themes du kan finne her.

For det meste har jeg selv brukt John Lam’s Vibrant Ink theme, som har svart bakgrunn og sterke kontraster. Men Oren Ellenbogen’s Dark Scheme er også ganske fin – med en “off-svart” bakgrunn. Dette themet har jeg modifisert litt for å skille mellom interfaces og konkrete klasser.

I dag oppdaget jeg derimot en online tjeneste jeg fikk lyst til å dele med verden – Visual Studio Theme Generator – som lar deg enkelt eksperimentere med å konfigurere og deretter eksportere et komplett sett med fargeinnstillinger. Her noen eksempler på hva man kan generere med noen enkle museklikk:

Pass også på å bruke en font som er behagelig å lese. For tiden virker det som om de fleste bruker Consolas. Den følger med Vista og Office 2007, men kan også lastes ned fra Microsoft. Jeg bruker derimot en font som heter Anonymous som jeg synes er veldig fin. 

Knagger:

BergenFoos 2008 film med Animoto

bergenfoos2008video.jpgTar du turen innom BergenFoos-bloggen kan du nå se en liten video-kollage over Foosball-året 2008 i Bergen. Den er også tilgjenglig på YouTube.

Filmen laget jeg kjapt og greit på animoto.com: Lastet opp bildene, valgte musikk og ventet på at filmen skulle bli ferdig. En film på 30 sekunder er gratis. Skal man lage noe som er lengre så koster det 3 dollar pr. film, eller 30 dollar for ubegrenset adgang i et helt år.

Takk til Robert (Onkel Bob) Martin for å ha tipset om Animoto på Twitter.

Knagger: ,

Hva jeg har installert på min nye, gamle PC

desctop_20081023_2.jpg

For noen måneder siden var jeg lei av å ikke ha en stasjonær PC på jobben. Jeg fant et gammelt skrap som en kollega ikke lengre fikk til å virke, hev inn en del ekstra minne, og reinstallerte Windows. Og nå har jeg faktisk nesten faset ut laptoppen.

Jeg hadde en ide om at jeg skulle holde den nye PC’en så clean som mulig. Men det er ikke rent få ting det viser seg man er avhengig av, og listen over installerte programmer bare vokser og vokser. Nå føler jeg at jeg har nådd en slags baseline for hva jeg må ha, og i tilfelle dette skulle være interessant for noen andre enn meg så presenterer jeg herved listen over hva jeg har installert sålangt. Om ikke annet så kan det være greit å ha den til neste gang jeg skal ta i bruk en tom boks.

“Core”
Windows XP Pro SP2 (Vista? Glem det!), et hav av Windows update stuff, IIS, MSMQ, Java, SonicWALL (nødvendig på jobben). UxTheme patcher og misc windows themes. Tweak UI power toy.

Utils
Launchy, 7-Zip, Adobe Reader, Daemon Tools, DarkRoom, “Open Command Window Here”, PDF995 Printer driver.

Browsers og andre kommunikasjonsting
Google Chrome, Firefox m/Firebug, Google Reader Watcher, Google toolbar, Hammerhead, MeasureIt, Tab Mix Plus, Web Developer plugin og YSlow. Trillian, misc Adobe browser-plugins, Live Mesh, Microsoft SharedView, Skype.

Design
InkScape, Paint.NET, Cropper og PngCrunch. Diverse fonter.

Rammeverk og bibliotek
.Net Framework 3.5 SP1, AJAX for .net 2.0, Silverlight tools, ninject, nunit, PartCover, SQLite.NET, Java. Mener jeg skal ha nHibernate langt inne i en skuff også :D

Developer stuff
Visual Studio 2008 Team System SP1, CodeRush Xpress, Team Explorer, Consolas fonts og div instillingspakker for VS. Expression Blend 2, ScrumWorks, CCNET tray, TeamCity tray notifier, SQLite administrator, AutoIt, Fast-HelpNDepend, Reflector.

desctop_20081023_3.jpgDet er faktisk en hel del ting jeg ikke har installert enda, men som jeg helt sikkert kommer til å gjøre. Først og fremst tenker jeg på Office (er det mulig?). På andre maskiner pleier jeg også å bruke Opera, CCCleaner og FileZilla. Jeg har også tenkt å prøve ut Google Desktop Search, har aldri før klart meg uten TextPad, jeg er bare nødt til å oppgradere til IE8.., and the story goes on…

Noen ting jeg har glemt?

Reflector med add-ins

Jeg har lenge brukt Lutz Roeder’s .NET Reflector, et gratis verktøy som lar deg se på klassene i en .NET assembly, analysere dem for avhengigheter og dekompilere dem – det vil si at den gir deg kildekoden, i det .NET språket du måtte ønske. Jeg har først og fremst brukt det til å studere assemblies hvor jeg ikke har kildekoden.

Jeg har derimot ikke vært klar over at det finnes en haug med add-ins til Reflector. Nå har jeg installer noen av dem, og verktøyets bruksområder har økt enormt.

reflector.jpg

I bildet over ser du hvordan min Reflector ser ut for øyeblikket. Til venstre er treet hvor man kan browse assemblies, namespaces, klasser og funksjoner. Øverst til høyre er dekompileringsvinduet hvor man ser kildekoden.

Men under kodevinduet har jeg etter at jeg installerte CodeMetrics modulen fått et nytt vindu. Her har jeg kjørt en analyse på en av assembliene, og får opp en haug med viktige parametre som f.eks. cyclomatisk kompleksitet, og jeg kan velge mellom å se på klasser, funksjoner eller hele modulen. I tillegg får jeg en grafisk visning over klassene som rask viser meg hvor det er høyest kompleksitet (de grønne boksene).

I tillegg har jeg installert en modul som heter Review, synlig nederst i bildet. Her kan jeg skrive kommentarer etterhvert som jeg finner kode med høy kompleksitet som jeg mener må refaktureres. Etterpå kan jeg bruke review’ene til å navigere til de aktuelle funksjonene. Totalt er dette nå blitt et fantastisk verktøy for å kjøre code reviews, både alene og sammen med andre utviklere.

Det finnes også andre, nyttige add-ins som f.eks. Doubler, som kan generere testklasser, stubs og wrappers for ulike unittest rammeverk, eller Graph, som gir deg et grafisk diagram over modulene dine. Den fullstendige add-inn listen finner du på www.codeplex.com/reflectoraddins.

Til slutt bare en liten ting til jeg fant ut i går…

Man kan administrere flere, lagrede lister med assemblies, slik at man slipper å laste dem inn manuelt hver gang man starter verktøyet (om man bruker det til å se på ulike sett med assemblies). Da bruker man File>Open List funksjonen. Man kan forøvrig også lagre ulike review-filer knyttet til de ulike listene.

Har du et seriøst forhold til koden din så er Reflector nærmest et påkrevd verktøy. Genialt enkelt og ganske enkelt genialt!

Årets innovasjoner: YouOS og SketchUp

Omtrent på denne tiden pleier man å fortelle om året som har gått, men jeg har ikke tenkt å fortelle om hva som har skjedd meg, hvordan julefeiringen har vært eller hva vi fikk av julenissen. Jeg skal heller ikke oppsummere nyhetsåret eller presentere mitt livsperspektiv nå som jeg har fylt tretti.

Jeg surfer derimot innom en del slike årets største/beste ditt og datt lister, og på PC World’s liste over de 20 mest innovative, nye produktene i 2006 fant jeg et par ting jeg ikke har fått med meg fra før. Office 2007, Sony Reader og Playstation 3 er selvsagt alle med på listen, men det som fanget min interesse var:

YouOS (7. plass på listen)

Ajax-revolusjonen har gitt oss tjenester som Writely og Google Spreadsheets som lar oss jobbe med dokumentene våre fra hvilken som helst PC. YouOS tar steget litt lengre; her har du et helt operativssytem som kjører i nettleseren din.

Produktet er foreløpig i Alpha-fasen, men for entusiaster og geeks er dette noe å ta en titt på. OS’et kjører i hvilken som helst browser som støtter javascript, har innebygget deling av musikk, dokumenter osv., det er helt gratis, og hvem som helst kan være med og utvikle programmer som kjører på plattformen.

Jeg kjører YouOS i Internet Explorer.., i “kiosk” modus (start IE med -k parameteren), og da ser det slik ut:

youos.jpg

Den andre innovasjonen jeg nå skal teste ut er:

SketchUp from Google (15. plass)

Jeg har akkurat installert programmet, så noen anmeldelse kan ikke dette bli, men SketchUp er altså et 3D tegneprogram som i kjent Google stil skal det være overraskende enkelt å bruke. Jeg kan se for meg at dette kan være nyttig, for 3D har alltid vært enten vanskelig eller tidkrevende.

VS 2003 Service Pack 1 – endelig!

Etter at vi har måttet jobbe i tre år i et buggy utviklingsmiljø slapp Microsoft nå på tirsdag endelig den etterlengtede Service Pack 1 til Visual Studio 2003.

Det var ganske morsomt hvordan jeg fant denne releasen faktisk. Det var Jon Arild som klaget seg over at Microsoft aldri kom med service packs til Visual Studio. Jeg mente derimot jeg hadde hørt noe om en service pack (trodde den var kommet alt jeg :) ), så da måtte jeg lete litt. Jeg fant et utsagn fra Microsoft skrevet i november i fjor, hvor de sa de ville lansere SP1 i april 2006. Den neste referansen jeg fant var derimot et nytt innlegg fra en av utviklerne – skrevet i Juli – hvor han sa at nå var de endelig ferdige, de hadde bare en runde til med testing – og lansering ville bli 15. august.

Hmmm, tenkte jeg, hvilken dato er det i dag? 16. august!!! Så hvor er SP1? Søk hos Microsoft gav ingen treff. Hmmm, tenkte jeg igjen, la meg forsøke en ting til. Jeg abonnerer på nyhetsbrev om nye releaser fra Microsoft; jeg åpnet den siste mailen, klikket på direktelinken til latest developer releases, og joda, den første releasen som ligger der er nettopp VS2003 SP1.

Utrolig morsomt at jeg skulle grave sånn etter denne pakken dagen etter lansering. Hadde jeg vært litt mer spirituell så hadde jeg ikke trodd at dette var en tilfeldighet!

Nå skal jeg installere snart – tror kanskje Jon Arild har gjort det allerede – og så får vi se om vi kan merke noen forbedringer!

Direktelink til VS2003 SP1
Direktelink til VS2003 SP1 Release Notes

Merk at man må ha den orginale installasjonspakken av VS2003 tilgjengelig under oppgraderingen.

Spar tid med Google

google_accelerator.gifTakket være Google har jeg hatt 19 minutter og 48 sekunder mer tid til rådighet siste uken. På mandag installerte jeg nemlig Google Web Accelerator, et produkt fra Google Labs som får websider til å dukke opp raskere i nettleseren din.

Ifølge statistikk-siden til Web Accelerator har jeg siden mandag ettermiddag loadet tretusen-tohundre-og-syv websider. Dette har tatt totalt ca en komma to dager. Men takket være diverse teknikker som google-caching og pre-loading har det tatt 19,8 minutter mindre tid enn det ellers ville har gjort.

Og det beste er at Web Accelerator bare blir bedre og bedre etterhvert som du bruker den. Jeg gleder meg til å se det grønne feltet vokse.
google_accelerator_stats.gif

En komma to dager load time…, det høres ganske mye ut egentlig. Når vi bruker internett mye i jobb-sammenheng så kand det altså være verdt å installere dette produktet for å øke effektiviteten. La oss si at jeg har spart ca 10 av de minuttene på jobb denne uken. Hvis alle i avdelingen hadde gjort det samme blir det fort halv-annen time mer Effekt i uka – uten at det koster oss noen ting… Hvis alle browser nettet like mye som meg da (hvilket er noe tvilsomt).


Torbjørn: La oss anta to ulike definisjoner av Template Method pattern - de to ytterpunkte...

Lars-Petter: Hei igjen. Siden du inviterer til å ta diskusjonen i bloggen, og har tatt deg t...

Torbjørn: Lars-Petter: Det er én måte å se det på. Det er absolutt fortsatt Template M...

Lars-Petter: Hei. Har du ikke i prinsippet her gått over fra Template Method (arv) til Strat...

Christian Abildsø: I alle fall i C#, så føles dette som kode som blir mer fleksibel men vanskelig...

Torbjørn: Hei Henrik, og takk for tilbudet. Ble oppmerksom på Rasberry Pi for under en uk...

Henrik Sandaker Palm: Ang. større hobby prosjekt. Du er som er en slik rakker på programmering har j...

Øivind Nilsen: Slutt å bruke mobilnummeret mitt som eksempel !...

Bjørn Einar Bjartnes: Jeg har også latt meg fascinere av Clojure, uten at jeg har kommet så veldig l...

Bjørn Einar Bjartnes: Sweet :) Jeg tror egentlig jeg liker det som det er, med musikk. Litt av utford...

 Hold deg oppdatert

Søk i bloggen

Ferske innlegg

  • Template Method del 4: Multippel arv
  • Template Method Intermesso
  • Template Method del 3: Bare funksjoner
  • Template Method del 2: På vei mot funksjonell programmering
  • Kategorier

  • .net ninja (37)
  • Bøker (17)
  • Diverse prosjekter (35)
  • DSL (10)
  • Erlang (10)
  • F# (5)
  • Hardware (1)
  • Jobb (77)
  • Julekalender (51)
  • kjempekjekt.com (23)
  • LISP/Clojure (33)
  • NNUG / community (60)
  • O/RM & databaser (10)
  • Off topic (116)
  • OO-design/clean code (30)
  • Podcasts (14)
  • Polyglot (77)
  • Ruby (27)
  • Silverlight / RIA (3)
  • Software/verktøy (20)
  • Softwareutvikling (20)
  • Testing / TDD (30)
  • the contiki strip (13)
  • User experience (3)
  • WCF (3)
  • Webutvikling (32)
  • WPF (9)
  • WTF (12)
  • Last ned Wallpaper

    Programmeringsbloggens tøffe skrivebordsbakgrunn med snippets fra ulike språk laster du ned her!

    Abonner via epost

    Om du vil kan du få alle nye blogposter tilsendt til din epost. Abonner nå, det er kjempeenkelt!

    Meta