(M)Apple's true face

I won’t say that I would mind owning an iPhone or even a iPod touch. But since I don’t wade in money I don’t (own one that is). Anyway this Simpson’s parody of Apple and Steve Jobs is just hilarious and it makes it a bit more easy not owning an iPhone.


Mapple – The Simpsons from Mykl i am on Vimeo.

Posted in Fun, Technology | Tagged , , | Leave a comment

Twitterfri møter

No twitter

I en artikkel på Digi.no kan man lese at IBM har levert inn en patentsøknad på en «metode og prosess for å slå ned på defokuserende virksomhet under utvalgte avtalte møter». Oppfinnelsen beskrives som programvare for å hindre distraherende pc-relaterte aktiviteter på møter. Man kan vel anta at det er chat, twitter, facebook, blogging etc. under møter man ønsker komme til livs.

Må si jeg ble noe sjokkert over at det kan være behov for noe slikt i bedrifter. Enten må du ha utrolig lite motiverte og interesserte ansatte, eller så har du totalt bomma på møtets innhold eller hvem du har kalt inn til møtet. Ansatte som sittet og twittrer eller surfer på Face Book i møter bør spørre seg selv om dette er jobben for dem. Jeg har alltid hatt som krav til jobben at den skal være interessant og utfordrende. Om jeg ikke lenger glede med til å gå på jobb så er tiden inne for å se etter andre alternativer.

Det er i mine øyne mangel på respekt for både arbeidsplass og møteholder å drive med slik aktivitet under et møte. Greit nok er ikke alle møte like interessante, men et minimum av profesjonalitet bør man kunne opprettholde.

Jeg husker tilbake til høgskolen hvor det oppsto et problem når det foregikk forelesninger på klasserommene som hadde Unix terminal på hver pult. Det gjenlød en konstant klapring av tastatur gjennom alle timene og det var ikke folk som skrev notater elektronisk for å si det sånn.

Full stopp

Løsningen ble at en stor rød “nødstoppbryter” ble installert. Når foreleser kom inn var det første han gjorde å smelle inn bryteren og strømmen fra samtlige skjermer forsvant (kremt, bortsett fra min fordi jeg flyttet skjermen min over på den andre kursen). Uansett et effekivt tiltak for å holde oppmerksomheten til studentene.

Tilbake til sakens kjerne. Jeg ser ikke helt hva slags møtet som krever bruk av Twitter (jeg har ennå ikke helt sett verdien av tjenesten i det hele tatt, men det er en annen sak) eller andre sosiale nettverk/kommunikasjonsformer.Kan noen forklare med hva som er så galt med å kreve at dine ansatte/medarbeidere har fokus på møtet og møtets innhold?

I en oppfølgene artikkel uttaler markedsdirektøren i Den norske dataforening (DND) at man bare kan tape på å prøve å sperre moderne verktøy. Er Twitter, facebook og what not verktøy? Fremmer det produktiviteten i prosjektet eller kunnskapsnivået til den ansatte å lese at en venn venter på bussen, akkurat har kjøpe pizza som han skal ha til middag e.l.? Jeg har som sagt forsøkt å prøve Twitter (og før det facebook), men 90% av meldingene er søppel og har liten eller ingen relevans til meg. Da er det mye bedre og følge en blog, delta i forum eller abonnere på andre kilder med informasjon (mail lister etc).

Ingen gidder sende en epost til alle vennene sine fra mobilen om at du står og venter på 20-bussen, men gjennom Twitter får jeg nesten daglig meldinger med et sånt type innhold. Enten må jeg få et slags spam-filter på twitter eller så kutter jeg snart ut. Folk har fått et, for meg, uforklarlig behov for å kringkaste alle sine bevegelser, opplevelser og tanker.

Du kan påstå at jeg ikke er noe bedre som har både blog, er på LinkedIn, Flickr og Delicious. Men det er ifallefall tjenester eller verktøy som gir en betydelig verdi. Fortell meg verdien i Twitter!

Posted in Ramblings, Technology | Tagged , , , | Leave a comment

PI day

Today is PI day (3.14) at least in the part of the world that writes the month before the day. To celebrate I wrote this little silverlight application that calculates the first 1000 digits of PI. Update: Added the every so catchy PI song to the post.

Continue reading

Posted in Development, Technology | Tagged , , | Leave a comment

Project Euler and Linq

First I’d like to thank Stefaan for introducing me to Project Euler. Project Euler is a series of challenging mathematical/computer programming problems that will require more than just mathematical insights to solve. Although mathematics will help you arrive at elegant and efficient methods, the use of a computer and programming skills will be required to solve most problems.

Most of the problems you can brute force in resonable time, but the challenge is more of a personal level in trying to solve them elegant or in as few lines as possible.

I quickly found that the magic of yield return and Linq was well suited to solve several of the problems I’ve encountered yet. So I decided to write a blog post about them and share my new-found knowlege of Linq.

Problem 1: Add all the natural numbers below one thousand that are multiples of 3 or 5

The Enumerable pattern is quite extraordinary when used in Linq like this. So I decided to use the same pattern on other problems as well.

[code lang="csharp"]
return Enumerable.Range(1, 999)
.Where(x => x % 5 == 0 || x % 3 == 0)
.Sum();
[/code]

Problem 2: Find the sum of all the even-valued terms in the Fibonacci sequence which do not exceed four million

First I made a sequence generator for Fibonacci numbers:

[code lang="csharp"]
internal static IEnumerableFibonacciSequence()
{
  long last1 = 1;
  yield return 1;

  long last2 = 2;
  yield return 2;

  while (true)
  {
    long next = last1 + last2;
    last1 = last2;
    last2 = next;
    yield return next;
  }
}
[/code]

Problem 3: What is the largest prime factor of the number 600851475143 ?

Again I start with creating a sequence generator. This one returns the sequence of factors for any number.

[code lang="csharp"]
internal static IEnumerable GetFactors(long x)
{
    for (long factor = 1; factor * factor <= x; factor++)
    {
        if (x % factor == 0)
        {
            yield return factor;
            if (factor * factor != x)
                yield return x / factor;
        }
    }
}
[/code]

We also need a small helper function to check if a number if a prime number:

[code lang="csharp"]
private static bool IsPrime(long num)
{
  long limit = (long)Math.Sqrt(num);

  for (long d = 2; d <= limit; d++)
  {
      if (num % d == 0)
          return false;
  }

  return true;
}
[/code]

Finally the actual Linq query to find the largest prime factor of the number 600851475143 :

[code lang="csharp"]
var primeFactors = from factor in GetFactors(600851475143)
                          where IsPrime(factor)
                          select factor;

return primeFactors.Max();
[/code]

I also have use the same pattern on several of the other problems like nr 10: Find the sum of all prime numbers below 2 000 000:

[code lang="csharp"]
return PrimeNumbers()
         .TakeWhile(x => x < 2000000)
         .Sum();
[/code]

Posted in Development, Technology | Tagged , , , , | 1 Comment

Blog moved to new address and blog engine

I finally decided to move away from Blogger.com and export my blog to WordPress on my own domain. Installation of WordPress was impressingly easy, even on a Windows platform. This leaves much to be desired for my own web applications which sometimes can be quite hard to install and setup.

I’m probably going to experiment some with WordPress plugins, widgets, layout etc the next days. So don’t be alarmed if the blog looks different every time you view it.

Posted in Ramblings, Technology | Leave a comment

Find the oldest file

I had a problem at work the other day. In a project we have a service that needs to handle files on a first come, first served basis. In effect it scans a folder for files and find the file with the oldest last modified stamp, then it processes the file.

This seems a simple enough task, but once when the service was down for a long time the number of files waiting to be processed was huge (in the several hundred thousand range). Scanning a folder with that many files in C# and then determining the oldest one takes quite a long time.

So I took a look at three different methods for solving this simple task.

1. Using the DirectoryInfo.GetFiles function
2. Using the Directoty.GetFiles and then Directory.GetLastWriteTime on each file
3. Using plain old DOS dir command

For 50.000 files the first two options takes about 7 seconds each on my development machine. While using dir takes only 0.7 seconds. Thats 10 times the performance difference.

This is how I managed to tweak dir to do the work:

static string ScanFilesUsingDir(string filePath)
{
   string cmd = @"c:\Windows\System32\cmd.exe";
   string args = @"/C \"dir " + filePath + " /B /O:D /T:W\"";

   Process proc = new System.Diagnostics.Process();
   proc.EnableRaisingEvents = false;
   proc.StartInfo.CreateNoWindow = false;
   proc.StartInfo.FileName = cmd;
   proc.StartInfo.Arguments = args;
   proc.StartInfo.RedirectStandardOutput = true;
   proc.StartInfo.UseShellExecute = false;
   proc.Start();

   // Display returned console information if any
   StreamReader dirOutput = proc.StandardOutput;
   string oldestFile = dirOutput.ReadLine();
   dirOutput.Close();
   proc.Kill();
   return oldestFile;
}

Oldest file found: f9e41b18-efa8-49ee-9a51-a89f7ef514ee.tmp
Activity ‘Using DirectgoryInfo’ took 00:00:07.0810000

Oldest file found: f9e41b18-efa8-49ee-9a51-a89f7ef514ee.tmp
Activity ‘Using FileInfo’ took 00:00:07.2710000

Oldest file found: f9e41b18-efa8-49ee-9a51-a89f7ef514ee.tmp
Activity ‘Using Shell Dir’ took 00:00:00.7030000

Just goes to show that POD (Plain Old Dos) still is good for something :)

Complete source code: FileGenerator.rar

Posted in Development | Tagged , , , | Leave a comment

Will Spotify survive?

Almost everyone I know is using Spotify. Sometimes it seems that the whole internet community is on Spotify even though it’s still in a somewhat closed beta. People are very satisfied with the service, and nothing can beat the free price. Does anyone actually buy the premium account?

And that is the cornerstone of my question. I’m listening to Spotify most every day. And I’m supposed to get commercials since I’m running with a free account. Well, I’m listening to Spotify at work about 4-6 hours a day. And I get perhaps 1-2 audio-ads pr. week. And up till now only one ad was not for Spotify itself. I’ve also seen some visual ads, but like the audio they mostly promote Spotify.

Does Spotify make any money? It’s not like me to complain about something beeing too good, but I’m afraid that Spotify might dissapair if they do not make any money. As for the premium it’s just too expensive to consider (especially since there is practically no ad’s with free accounts).

Will the amount of ad’s increase? What will happen with the tousands of happy free users then?
Should they consider lowering the price so they get more paying users?

I for one know that I’m going to be pi**ed if suddenly I get two ad’s between each song. That’s like false marketing by louring users to use and become dependant of the product before they show their “true colours”. (Sort of like the drug dealers giving free drugs to get you addicted). And I can promise that I’m not going to fork out for the premium account if I feel they’ve tricked me.

I can only hope that’s not their plan. Spotify if you can hear me: What’s your plan? Are you making any money? If not, consider halving your premium account price. Then you’d get a lot more members.

Posted in Uncategorized | Leave a comment

Åpen kildekode, livets rett?

I en artikkel i Teknisk ukeblad (web) kan man lese at utviklingsdirektør Lars Tveit i Bergen kommune advarer mot overdreven fokus på teknologi fremfor hva IT skal bidra til å løse.

Han mener at det er alt for sterk fokus på de tekniske løsningene fremfor oppgavene som teknologien skal løse. Fornyingsdepartementet ønsker sterk fokus på åpen kildekode for å fremme konkurranse og å redusere lisenskostnader.

I utgangspunktet blir dette rått pari sånn enkelte kommuner ser på problemstillingen. I den ene hånden har du en åpenkildekode-løsning som ikke koster noe i lisens, og i den andre hånden har du en kommersiell leverandør som skal ha x kroner initiellt og gjerne 20% av kjøpssummen årlig i lisens og vedlikehold.

Det som ofte går i glemmeboka og som de kommersielle leverandørene påpeker er at de 20% som oftest inkluderer vedlikehold (oppgraderinger, feilfikser etc). Med en åpenkildekode-løsning betaler du som oftest pr. time for slike oppdrag. I tillegg har som oftest som kommersiell leverandør en road-map og en godt planlagt plan for fremtidige versjoner og hvilke funksjoner som kommer. Dette er også noe mange åpenkildekode-løsninger mangler.

Det kan sammenliknes med å ha fast- eller flytenderente på lånet. Med fastrente (20% fast vedlikeholdsavgift) så får du forutsigbarhet på utgiftene dine. I motsatt fall kan du ende opp med ikke å få oppgradert eller fikset feil fordi du har brukt opp budsjettet for perioden.

Å tro at firma som lager og/eller leverer åpenkildekode-løsningen gir bort noe gratis er naivt. Noen har brukt tid og penger på å utvikle løsningen og noen har brukt tid og penger på å opprette et salgs-, support- og opplæringsapparat rundt løsningen. De skal ha sine penger tilbake med gevinst de også, akkurat som en leverandør av en kommersiell-løsning.

Et firma som ikke selv har brukt tid og penger på utvikling har et konkurransefortrinn ved at de ikke må tjene inn igjen utgiftene brukt til utvikling, dermed har de mulighet for å prise seg godt under en ren kommersiell leverandør som også må tjene inn igjen millioner i utviklingsutgifter. Konkurrerer to slike på like vilkår? Eller mener vår sosialistiske regjering kanskje at alle bør utvikle på community-basis. Slik at i stedet for at en leverandør bruker millioner på utvikling så står det 100-vis av frivillige bak? Disse frivillige kan jo gå på arbeidsledigshetstrygt :) for å tjene til sitt daglige brød. For å leve på “street-cred” og vann er tøft i lengden.

Jeg har selv opplevd at en kunde som trodde de hadde skutt gullfugler og kjøpt en åpenkildekode-løsning kom til oss og ønsker våre kommersielle løsning i stedet. De hadde slitt seg gjennom flere leverandører og brukt utallige timer på konsulentbistand for tilpassning, feilfiksing, opplæring etc. Allikevel var de ikke tilfreds med sluttresultatet.

For en kjøper som skal vurdere mellom en kommersiell og en “åpen” løsning er det viktigste å se på TCO (total cost of ownership) over flere år. Du må kontakte andre som alt bruker samme løsning og innhente tall fra dem.

Viktige momenter:

Innkjøpspris
Lisensavgift pr år
Årlig oppgradering til seneste versjon
Feilsøking og retting
Sikkerhet/risk (både i leverandør og løsning)
Kurs
Opplæringsmateriale
Kundesupport (telefon, epost, 24/7 eller hva som er aktuelt for dere)

Posted in Ramblings | 3 Comments

More strange http headers

This is a follow-up on my last post about Norwegian newspaper VG adding a reference to Rick Astley (Rick rolling) in their http response headers.

Seems VG is not the only website. I’ve discovered that slashdot (popular nerd news site) adds a random quote to their response headers:

X-Leela: You did the best you could, I guess, and some of these gorillas are okay.
X-Bender: Comedy’s a dead art form. Now tragedy — THAT’S funny.
X-Bender: Stupid anti-pimping laws!
X-Bender: Gimme your biggest, strongest, cheapest drink.

Both Leela and Bender are characters from the comic Futurama.

Or how about this from http://www.scriptworld.kh-webcenter.de/

Limerick: There was a young fellow named Fisher,Who was fishing for fish in a fissure,,When a cod, with a grin,,Pulled the fisherman in,Now they’re fishing the fissure for Fisher.

Or this from http://www.icm-computer.co.uk/

X-kluged-by: Nick, Mic, Ash, Andy
X-munged-by: The powers that be
X-Sanity-Provided-By: Ashleigh
X-Powered-By: Intravenous Caffeine Drips,ASP.NET

The question is why? Is this just an eccentric form of nerdy humor or does theese extra headers have a meaning? Slashdot with all it’s readers are propably throwing away quite a lot of bandwith each year by adding something nearly no one will ever notice.

If you have an answer or know of more site adding strange http headers please let me know.

Posted in Technology | Leave a comment

VG.no is Rickrolling

Doing some http debugging and as usual I use vg.no as a test page since they have such a nice short domain name.

I noticed something funny in their http response headers:

HTTP/1.1 200 OK
X-VG-WebServer: leonora, leonora
X-VG-WebCache: fritz
X-Rick-Would-Never: Give you up
X-VG-Varnish-IP: 10.0.4.152
X-Varnish: 2005612975 2003787473
Age: 541
Connection: keep-alive
Content-Length: 164544
Cache-Control: max-age=900
Content-Type: text/html; charset=iso-8859-1
Date: Tue, 03 Feb 2009 12:52:28 GMT
Expires: Tue, 03 Feb 2009 12:58:27 GMT
Last-Modified: Tue, 03 Feb 2009 12:43:26 GMT

Seems someone at VG is Rickrolling every http request :)

Posted in Uncategorized | Leave a comment