Nerdapalooza 2009 – I wish I had been there

Looks like Schaffer the DarkLord has been kicking it in Orlando this month for the nerdapalooza 2009.

Dual core looked cool to:

I had the chance to visit Orlando this year for the ExtJS user conference 2009. Hey! Maybe the ExtJS crew can make some kind of deal with nerdapalooza for the next conference?

so Copenhagen is not the center of the world?

flueknepperi

“flueknepperi”:

danish slang for being overly obsessed with details

I was recently asked to start blogging in english instead of danish. This makes sense since I start making more online friends these days – I also hope to be able to contribute more back to the various communities I am a part of.

“What is the meaning of your blog title” you might think? To me being pedantic is not necessarily a bad thing. Try looking the word up in various dictionaries , and you’ll see that the word “pedant” mostly has negative connotations. From wiktionary : A person who is overly concerned with formal rules and trivial points of learning. That’s me – and a good focus for my blog. “trivial points of learning” are easy to write in a blog entry – and formal rules are interresting to me as a programmer.

So I’ll write a lot of small details and trivial things here;)

closures -oh yeah?

Hvad mon der sker her :


var a=1;
function foo() {
var a;
function bar() {
a=2;
return a;
}
return bar;
}

a=3;
var b=foo();
var c=b();
alert(c);
alert(a);

Cloud computing man kan bruge til noget

Jeg har tidligere kigget på brugen af vmware ifm test og udvikling. Jeg har fundet ud af det det kan være fordelagtigt at opbevare udviklingsmiljøer og databaseopsætninger på virtuelle maskiner – det hjælper typisk med at min hoved-udviklingsmaskine ikke bliver ‘møget’ til af diverse projekter jeg kigger på i løbet af ugen. Jeg har også kigget på Google App Engine for java - det er godt med nogle fasttømrede api’er der er klargjort til af fungere på en større gruppe af maskiner på en gang – så performance og skalerbarhed har været der fra starten ( Jeg hører også gode ting om Amazon EC2)

Det har dog bæret sådan at det bliver lidt bøvlet at vedligeholde diverse images rundt omkring – og Google App Engine for java stiller væsentlige begrænsninger på hvordan man kan skrive SQL – og det kan blive vanskeligt at få benyttet GIS operatorer på GAE (Bemærk at jeg slet ikke har prøvet microsofts nye Azure platform)

Bob McWhirter kører iøjeblikket et projekt for jboss , hvor han iøjeblikket eksperimenterer med puppet til at administrere virtuelle maskiner. Jboss håndterer udviklingen under projektet jboss cloud . Ideen er at man kan benytte “metaappliance” til at generere de øvrige “appliances”. Jboss understøttede clustering allerede fra version 4 – det nye i eksperimentet er nu maskin-håndteringen, hvor deployment-platformene inkluderer ec2, vmware, kvm .

Jeg håber at kunne bruge jboss-cloud projektet til at håndtere mine udviklingsservere på en mere fornuftig vis :)

nåda. "ting" kan også JSON!

Her i eftermiddags kiggede jeg lidt videre på ting projektet. Det viser sig at andre end mig har haft problemer med at bruge webservicen : http://krakoa.dk/wordpress/2009/05/31/refindting/ . Her bemærkede jeg en kommentar der nævnte ting også kunne json , så jeg kastede mig ud i flg php kode :


class Ting_Client {
var $opensearch = "http://didicas.dbc.dk/opensearch/";

public function search($query){
$hc=new HTTPClient();
$url = $this->opensearch."?action=searchRequest&query=$query&facets.number=10&outputType=json";
$host = $hc->extractHost($url);
$hc->connect($host);
return( $hc->Get($url) );
}
}

Her antager jeg at din php klient også kan hente HTML sider ligesom min kan . På den facon kunne man tænke sig noget i denne her stil:


$t=new Ting_Client();
$searchResponse = json_decode($t->search($query));
if($searchResponse->searchResult->hitCount>0) {
print "

    \r\n";
    foreach( $searchResponse->searchResult->records->tingRecord
    as $rec){
    $isbn=$rec->dc->identifier[0];
    $isbn=preg_replace("/ISBN\:/","",$isbn);
    print "
  • ".$rec->dc->title[0]."
  • ";
    }
    }

    hvor beskrivelsen på de enkelte poster kan benyttes til at lave et mashup. Jeg har her prøvet med slashdemocracy, men det virker vist ikke helt for andet end ISBN.

    Da jeg kiggede på outputtet fra ting , så undrede jeg mig lidt over hvorfor at man ikke havde valgt at bruge Z39.50 , men det er så også ok. Når man har kigget på outputtet fra ting i et stykke tid, så giver det nogenlunde mening.

ding på github – mine første 20 minutter

Jeg fald lige over http://github.com/kdb/ding/tree/master på github, hvor Københavns biblioteker er igang med at kode en drupal baseret frontend til ting projektet. Nu er jeg jo ikke lige en haj til drupal og php , så jeg startede med at nøjes med at kigge på en klient til php5. Den var også enormt kompliceret , så jeg skøjtede videre til http://didicas.dbc.dk/opensearch/opensearch.wsdl og prøvede at lave en php5 webservice klient vha nusoap.

Den virkede ikke lige, så prøvede jeg istedet at skrive “wsdl http://didicas.dbc.dk/opensearch/opensearch.wsdl” på kommandolinjen (her var det heldigt at jeg havde installeret Windows SDK’et ) . Den kommando lavede filen tingService.cs til mig .

Jeg så straks at designeren af skemaet kan lide lower camelcase - det undrede mig dog at typerne resulterer i små begyndelsesbogstaver for mine klasser.

Ved at kigge lidt i tingService.cs så jeg hvilke parametre man skulle bruge . Jeg ved ikke lige hvad formatType og sortType skal bruges til ,så jeg lavede bare en default constructor på den. Det førte til flg kode:


using System;

public class test {
public static void Main(){

tingService t=new tingService();
searchResult sr = t.search("test", "", null, new formatType(), true, 1, true, 5, true, new sortType(), true);
Console.Write(sr.hitCount);
//Console.Write(sr.records[0].relations[0]);
}
}

jeg kompilerede koden med “csc test.cs tingService.cs” og fik umiddelbart en køretidsfejl. .NET frameworket rapporterede om en Ikke-afviklet undtagelse ifm en HTTP fejl 301 hvor det blev meddelt at endepunktet var flyttet til http://didicas.dbc.dk/opensearch/

Efter at have tilføjet et “/” til endepunktet for servicen i tingService.cs , så kunne jeg se at der er “1320″ svar på søgningen “test” .

Jeg kan se at resultaterne bliver afleveret i en struktur kaldet “tingRecord” i det returnerede searchResult, men jeg kan ikke umiddelbart overskue hvordan man hiver resultaterne ud derfra. Jeg vil prøve at følge lidt med i projektet og kigge lidt nærmere på wsdl filen ved lejlighed :)

Udkast til 3G WITS

Jeg deltager iøjeblikket i W.I.T.S arbejdsgruppen ( nærmere beskrevet her http://michael.hinnerup.net/blog/2009/06/22/wits/ ) . Vi arbejder på at specificere den ultimative arbejdsplads i solen. Efter specifikationsarbejdet begyndte , så har jeg opdaget at det er fordelagtigt med bistand til at holde hustandens børn beskæftet mens arbejdet i solen er igang. Det kan illustreres med flg. eksempel:

WITS 3G

Bemærk den diskrete placering af en Mørk guld fra Svaneke brughus, der benyttes til det forestående arbejde på 3G WITS

opdatering 2009-06-26:

Michael har påpeget at det er 3G WITS. ikke WITS 3G. Det har jeg lige ændret før vi påbegynder prototype arbejdet!

ext.data.writer og CRUD

Jeg har kigget lidt nærmere på ext.data.writer og har delt nogle noter her :

http://pedant.dk/archive/CRUD_in_extjs_3_0.pdf

Basalt set kan man nu på en nem måde foretage sig de fleste operationer man kunne forvente sig i en webapplikation der snakker med en database. Det er der jo sådan set ikke noget banebrydende i – nu kan man det også fra extjs . Jeg eksperimenterer i øjeblikket med hvordan man bruger denne nye funktionalitet nemmest – det gør jeg iøjeblikket i :

http://github.com/jacobandresen/yase/tree/master

Missing in action !

Jeg har igennem årene set forskellige måder hvordan man kan få data ind og ud af en database i forskellige sprog. problemet beskrives som ORB – Object Relational Mapping – hvordan man kan få data i relationelle databaser til at fungere nemmest sammen med et objektorienteret sprog.

her i midten af 2009 er der følgende state of the art løsninger:

Den løsning der er blevet valgt i de projekter jeg har været i nærheden af har typisk været afhængig af hvilke erfaringer medlemmerne nu har haft.

Her forleden sad jeg og så Missing in action og kom til at tænke på at starten af relationelle databaser var omkring Vietnam krigen ( IBM lavede System R i 70′erne ). Når vi tænker på at objekterede sprog også har eksisteret siden 70′erne , så er det lidt underligt at det ikke er helt oplagt hvordan man løser ORM problemet endnu.

Ted Neward har beskrevet ORM problemet som The Vietnam of Computer science . Vietnamkrigen er ofte blevet beskrevet som en krig som USA aldrig kunne have vundet.

Jeg har kendskab til flere projekter der stadigvæk kæmper med at løse ORM problemet – de må betragtes som værende “Missing in Action”. Kan vi ikke sende Chuck Norris ind for at redde dem ? :P

En maskine der siger "bing"

Jeg prøver at følge med i hvad der sker inden for søgemaskine-feltet . Det forlyder at Microsoft også har opfundet en maskine der siger Bing:

Microsoft har beskrevet den nærmere her :