<?xml version="1.0" encoding="UTF-8"?>
<posts type="array">
  <post>
    <body>Anne Thomas-Manes fra Burton Group introducerede den &quot;Thing Oriented Architecture&quot; (TOA) arkitektur til stor gl&#230;de for de f&#229; &#230;gte RESTafarians der var m&#248;dt op i en eller pakkend sal p&#229; &#229;ret Jaoo. TOA er lig med &quot;The Web is REST and REST is the Web. Der var m&#229;ske ikke s&#229; meget nyt p&#229; Jaoo i &#229;r men der var meget konsolidering af de gamle dyder lige fra Haskell programmering over Lean udviklingsmetodiker til hvordan man s&#230;lger REST opad i sin organisation.

Scott Davis redede min f&#248;rste dag p&#229; Jaoo med hans tale om &#8220;Tale of Slippy Map&#8221;. Dagens &#248;rige program gav ikke den store reaktion men der var et par gode solide pr&#230;sentationer. Min gamle ven Kim Dalsgaard var trackhost p&#229; &quot;Web Oriented Data&quot; som til dels fangede min interesse sammen &quot;Browser as a platform&quot;. Disse to track passer rigtig godt sammen de trak ikke ret mange mennesker. Min interesse er baseret p&#229; at jeg tror p&#229; l&#248;skoblet interconnected data over http protokollen.

Barry Boehm tale om &quot;Scaling Up Agility&quot; var en lang reklame for agile metodikker og metoder og han l&#248;b gennem usecases hvor han beviser hvor langt man kan komme med lean udvikling. Eneste krav er at man skal havde ansat de beste adr&#230;tte resource og g&#248;re forretningen klar til iterativ informations flow hvor adoption af forandring fylder langt mere end gammel planer og rutine processer. Den eneste s&#230;tning som jeg virkelig kan huske fra denne lidt, tr&#230;tte taler, er hans statement om at man altid skal passe p&#229; n&#229;r man f&#229;r tildelt en fuldtidsansat forretningspecielist, m&#229;ske er han den eneste de i virkeligheden kunne undv&#230;re? Og nej, din Compiler Driven Testing (CDT) kan ikke bruge som test tool.

Emil Eifrem leveredere en overbevisende introduktion til Graf databasen Neo4j. Det er ikke ligefrem f&#248;rste gang jeg h&#248;re denne pr&#230;sentation men Emil har udviklet en god sans for kunsten at tale og det er en forn&#248;jelse at v&#230;re vidne til. Is&#230;r bifalder jeg hans annalogi om den kognitive tankegang fra et Whiteboard til den grafforbundende verden hvor relationer og properties er en naturlig del af data i kaotiske former. I vore dage kan en medarbejder have op til 10 jobtitler. Hvordan vil du repr&#230;sentere det? Addere en ny kolonne for hver title? nej vel, din database skal omstruktureres men du i en grafdatabase blot l&#230;gger flere properties p&#229; den node der repr&#230;sentere din medarbejder. M&#229;ske arbejder du et sted hvor alting er veddefineret og statisk og s&#229; kan du roligt fors&#230;tte med RDBMS og ORM.

Michael Feathers gav en gennemrand af Clean Functions. Han pr&#230;senterede en del crap kode for at vi skulle kunne f&#229; invokeret vores logik til at finde nogle gode st&#248;rrelser mht antal kodelinjer, klasser og sammenh&#230;nge mellem opgaver og opdeling. Der findes en flere teknikker og principper bag konceptet &quot;clean code&quot;. Personligt er det mange &#229;r siden jeg har set nogle af dem i brug i Java verden men de er langt mere udbredt i letv&#230;gtkredse.

Brian McBride viser hvordan &quot; Linkend Open Data&quot; og &quot;Semantic Web&quot; h&#230;nger sammen. Han er klar fortaler for &quot;Jena Open Source&quot; for at offentligg&#248;re data p&#229; internettet og hvordan disse data kan udnyttes. Han repetere kort en r&#230;kke principper standarder for Linked Open Data og hvordan man konsumering data til og fra andre formater som fx RDF, RDF, XML, JSON samt SPARQL Query Language. Jeg synes dette omr&#229;de er enormt sp&#230;ndende men jeg m&#229; indr&#248;mme at jeg lukkede &#248;jene lidt at tiden.

Scott Davis n&#230;rmest r&#229;bte dages bedste tale i gang mens mine &#248;jne stod p&#229; vid gab. &quot;The Tale of Slippy Map&quot; Kort fortalt er det historien om google maps og hvordan man skaber oplevelsen af den fede applikation. Hemmeligheden er at man bev&#230;ger sig p&#229; en pane som er noget st&#248;rre end det synlige omr&#229;de og der preloades mens man kigger p&#229; det synlige. Jeg h&#248;re til den meget lille gruppe af mennesker som helst vil v&#230;re helt t&#230;t p&#229; de oprindelige protokoller og derfor at fantastisk at se hvor godt google maps er designet. I &#248;vrigt er det den direkte medvirkende &#229;rsag til den k&#230;mpe susces som maps har f&#229;et. Maps applikationen best&#229;r af en stateless server del der levere koordinater og billeder i 256 x 256 pix. Klient delen er stateful og best&#229;r HTML/DIV med ca. 150 linjer af Javascript og indlejeret stylesheet. S&#229; enkelt at det er grineren. Oplevelsen er meget lig desktop applikation men er velorganiseret snyd for &#8220;the brokken web&#8221;. Mr. Scott f&#229;r ogs&#229; en p&#230;dagogisk topkarakter. Hans pr&#230;sentation er meget velovervejet men ikke tilpasset til europ&#230;iske forhold. Mange selvbestaltede supereksterne f&#248;lte sig helt sikkert forulempet og talt ned til. H&#248;jst kontroversielt.

En sjovt ting jeg har t&#230;nkt over i dag er at mange har brugt s&#230;tningen &#8220;schema-free&#8221; adskillige gange i l&#248;bet af de f&#248;rste taler. Det gl&#230;der mig meget men det g&#248;r &#248;jensynlig mange andre en del nerv&#248;se. I sessionen med Linked data var mange sp&#248;rgsm&#229;l rettet mod det faktum at man ikke har kontrol over data sourcen. Tja, men s&#229;dan er der jo s&#229; meget og endnu et eksemplet p&#229; at man kan kende svaret uden at kunne sp&#248;rgsm&#229;let.

Anden dage p&#229; Jaoo 2009 var rettet mod REST!

Simon Peyton-Jones l&#230;gger for med en fantastiske tale om Haskell. Simon forklare om type klasser som de fungere i haskell, ikke at forveksle med Java og .NET klasser. Haskell er et akademisk funktionelt sprog der ogs&#229; bruges til f&#229; kommercielle applikationer. Et af Haskell&#8217;s mest karakteristiske kendetegn er dens type system, de s&#229;kaldte &#8220;type klasser&#8221;. Type klasser tjener samme form&#229;l, at de klasser af mainstream-OO-sprog men p&#229; en anden m&#229;de. Denne tale begynder med forklare lidt om &#8220;The Birth of Language&#8221; med f&#248;rst een &#8220;geek&#8221; bruger, derp&#229; et par stykker mere, og m&#229;ske kn&#230;kker kurven og sproget et bliver popul&#230;rt udover tekniske venner og m&#229;ske adopteret af den brede masse. Simon er veloplagt og stormer gennem noget kode og beder alle som ikke forst&#229;r detaljerne r&#230;kke armen op. Der er m&#229;ske 500 mennesker i den store sal men ikke en r&#248;re sig. Publikum r&#248;r sig heller ikke der hvor Simon presser en test ind i en funktion der ikke lader sig g&#248;re. Han skure blot ud over salen, r&#230;kker armen op og siger NU.

Rachel Reinitz var en positiv overraskelse. Hun talte om &quot;Extending the Reach of your SOAwith REST&quot;. Rachel er IBM Distinguished Engineer i WebSphere Services. Hun har bygget en stor del af IBM&#8217;s uddannelse p&#229; SOA, Enterprise Service Bus, og Web Services. Rachel er top ESB ekspert. Hun vil ikke reklamere for IBM men: &quot;There are in fact good reasons to use messaging beyond IBM making a lot of money with MQ&quot;. Rachel riser hele web2.0 verden op som IBM ser kagen med Service, not software(SaaS), community added value, semple adgang til data osv.. Der er s&#230;rlige grunde til at v&#230;lge SOA og webservices fremfor REST.. Lad mig v&#230;re &#230;rlig, der er ved at g&#229; salg i den og hun opfinder termen RestfulSOA. Hvis hun viste hvem der skulle tale efter hende ville hun m&#229;ske v&#230;gle sine ord med lidt st&#248;rre omhu.

Anne Thomas-Manes fra Burton Group er en kvinde man lader tale ud.. B&#229;de ved cafeen og n&#229;r hun indtager scenen. Anne er en af NetworkWorld&#8217;s &quot;50 mest magtfulde mennesker og en respekteret ekspert i distribueret computerteknologi. Anne har deltaget i udviklingen af standarder som W3C, OASIS, JCP, UDDI.org, og WS-I. Hvordan s&#230;lger man REST i sin organisation? Forretningen t&#230;nker p&#229; afkast, ikke p&#229; hvilken underlige teknik ting der tales om i udvikling. Der er ingen reel fokus p&#229; teknologien. Elegance dosen&#8217;t sell. Hvis du har en god ide kan du s&#230;lge den til forretningen sammen med indtjenings prospekt og risici beregninger.

REST er pr&#230;cis s&#229; sikker som hvilken som helst anden ting der sendes over http protokollen siger hun. QoS h&#230;nger ikke sammen med om der er en envelope i den besked du sender men mere p&#229; skalerbarhed og p&#229;lideligehed. Med hensyn til at startop projekter mener hun ikke at det kan lade sig g&#248;re uden en &#230;gte RESTafarian som mentor. Programmeringmodellen bag REST og det at se verden som resource er meget sv&#230;r at forst&#229; i detaljer, slet ikke hvis man kommer fra en OO verden. Flere af de h&#229;rdeste RESTafarians udtaler at det kan tage op til frem 5 at forst&#229; alle elementer af REST ROA WOA. REST er en arkitektonisk stil orienteret til at formidle oplysninger om ting. REST er en form for &quot;Thing&#8217;ish Oriented Architecture&quot;.

Ian Robinson er Principal Consultant hos ThoughtWorks og forklare hvordan &#8220;hybermedia&#8221; fungere i et restfuldt milj&#248;. At han bruger Dungeons &amp; Dragons spilscenarie g&#248;r det kun en smule mere tosset. Pointen er at spiltilstanden hverken er hos serveren eller klienten men i linkage'en mellem de to. Dette princip kaldes ogs&#229; HATEOAS(Hypermedia As the Engine of Application State, REST koncept). Man har kun et entry point til spillet og efter en GET til den resource f&#229;r man de n&#230;ste muligheder der findes i spillet lige nu. Hypermedia applikationer r&#229;de bod p&#229; SOA-visionen om et distribueret system baseret p&#229; evolution&#230;re let sammensatte program protokoller

Stefan Tilkov er medstifter og chef konsulent ved innoQ, et teknologi konsulentfirma med kontorer i Tyskland og Schweiz. Stefan har v&#230;ret involveret i udformningen af store, distribuerede systemer i mere end et &#229;rti og anvender en bred vifte af teknologier og v&#230;rkt&#248;jer, der sp&#230;nder fra C++ og CORBA over J2EE/Java EE og Web Services til at Ruby on Rails. Tikov er en mand der t&#248;r sige nogle ting og jeg ser altid hans taler hvis det kan lade sig g&#248;re. I dag handler hans tale kun om at udnytte de mange muligheder for &#230;gte caching der implicit er gemt i http protokollen. Man kan v&#230;re mere eller mindre enig i hans synspunkter og personlige holdninger men hvor er det sk&#248;nt at han virkelig kan bitche over teknologere som ESB, SOA, SOAP etc. Sikker derfor jeg kan li ham? En af de mest fremtr&#230;dende fordele ved at bygge services ved hj&#230;lp af RESTful HTTP er st&#248;tten til caching og man kan uden videre bruge de sande byggesten fra internettet uden at t&#230;nke p&#229; ekstra omkostninger til infrastruktur eller software. REST er en blot at udnytte Internette p&#229; den m&#229;de det er tilt&#230;nkt. Tikov har en interessant vinkel p&#229; hvor man ligger sit REST snit i en traditionel layed applikation. Gr&#230;nsen skal ligge s&#229; t&#230;t p&#229; klienten som overhoved muligt. Hvorfor? Kun klienten har tilstand og resten af middelvaren skal v&#230;re stateless. Cool logik. Mange mennesker sad og s&#229; helt blanke ud. Jeg g&#230;tter p&#229; at man skal ha lavet et par apps i den stil for det falder nemt at tale om.

Dagens REST track p&#229; Jaoo var fortrindeligt sammensat af Tikov. Gennem dagen var dette spor velbes&#248;gt og adoptionskurven m&#229; mindst v&#230;re breakeven. Flere personer jeg talte med gav udtryk for at de n&#230;rmest er eksperter i REST mens deres mangelene forst&#229;else &#229;benlys og det g&#248;r mig lidt urolig for REST fremtiden. Det der kan &#248;del&#230;gge udbredelser af REST til masserne er d&#229;rlig r&#229;dgivning og ringer applikationer som ikke m&#248;der deres krav. Det gode ved hele er at jeg m&#229; v&#230;ret n&#229;et langt i min personlige erfaring med REST siden jeg kan s&#229; tydeligt kan se rigtig og forkert. Dagen gav mig ikke noget ny men jeg er glad for en god portion validering. :-)

Der var ikke en generelt gennemgang af REST og det var m&#229;ske en fejl. Kun specielle emner om REST s&#229;som Hybermedie, HTTP Cachaing, hvordan man ikke laver et nyt RPC kald over XML og ikke mindst om hvordan man promovere REST videre ud og op i virksomheden. Efter min mening kommer den vigtigste pointe Anne Thomas-Manes, Burton Group. Du kan v&#230;lge REST p&#229; lige fod med andre teknologere men husk at allokere en specialist som mentor.

Jeg sad og jokede med en v&#230;ldig flink fyr som lige var kommet fra lufthaven og var en del tr&#230;t. Vi var helt enige om Tikov's jokes om SOA var af en meget ringe karakter. :-)

Cameron Purdy, var manden jeg jokede med. Manden som skabte og solgte Tangosol til Oracle. Han skulle pr&#248;vet at tage et kig bagud for at se om vi kan forudsige hvad der sker i de n&#230;ste &#229;r fremover. Hvad har vi l&#230;rt og hvordan kan vi drage fordel at det. Dette var et retrospektiv tilbageblik p&#229; hvorfor C++ blev glemt over natten da Java kom ind p&#229; scenen. Det sjove er at n&#229;r man nu ser p&#229; Java og alle de ting som sker med fx Cloud Computing, Multi Core hardware og andet kan man nemt forstille sig at nye ting klart overhalder Java over en nat. Cameron pointere at man umuligt kan adoptere Agile udviklings metodik hvis det tager flere dage at lave den mindste forandring. Han bitcher ogs&#229; over Java evner til at lave pauser ved GC, et enormt memory forbrug, en sindsyg ringe startop tid. Faktisk mange af de samme ting som gjorde Java C++ overlegen i sin tid, nu er de ting en h&#230;msko. C++ var fantastisk i sin tid men hvor mange biblioteker finders der lige til C++? Nej vel! Grunden er den simple at man havde automatisk memory h&#229;ndterring. I Java derimod er vi skide ligeglade med memory forbrug, vi smider bare det hele v&#230;k og det var ogs&#229; godt nok i en tid i de n&#230;ste &#229;r vil det blive en stigende forhindring.

Det var min mening at f&#248;lge Cloud tracket i dag men en s&#230;rlig omst&#230;ndighed gjorde at det blev meget anderledes. 

See &quot;Attending Conferences&quot;:/posts/116-Attending-conferences

Kevlin Henney var min redning. Og hvilken en. Filuren var fyldt til bristepunktet og med god grund. Kevlin er en super behagelig taler med klare synspunkter om udviklings metodik. Han er fx ikke s&#230;rlig imponeret af hele den agile bev&#230;gelse. I disse &#229;r er det som man skal udvikle efter agile principper for at cool. SCRUM fx ligger meget v&#230;gt p&#229; proriterede backlog emner mens det man i mange tilf&#230;lde burde fokusere p&#229; var at navigere uden om de v&#230;sentlige risicifaktorer. Det ligger implicit i mange agile metoder at design er behandlet som en kontinuerlig aktivitet men m&#229;ske er design kun en af mange faser i udviklingen. Udvikling er ogs&#229; prototyper til TDD, arkitektur, refactoring og retrospektiv betragtninger med fortl&#248;bende feedback. Men denne erkendelse er ikke nok til at kommunikere hvordan et design bliver dannet og udvikler sig. Design fra kode fragmenter til store systemer kan forudses og diskuteret gennem fort&#230;llinger p&#229; lige m&#229;de som med programmerings episoder og pattern historier. Kevlin har ogs&#229; meget interessante vinkler p&#229; softwaretesting. Han giver nogle pragtfulde eksempler og jeg giver ham ret i at mange laver de mest stupide unittests. And hey,camel case doesn't scale over 40 chars. :-)

Michael Nygard har senest skrevet &quot;Release It! Design and Deploy Production-Ready Software&quot;, en bog, der indenholder mange af hans tanker om udvikling af software som kan overlever i den virkelige verden. Michael bestr&#230;ber sig p&#229; at lindre den daglige smerte for den enkelte udvikler. Han har brugt &#229;r p&#229; at finde ud af hvad det betyder at v&#230;re en professionel programm&#248;r der bekymrer sig om kunst, kvalitet og h&#229;ndv&#230;rk. Han kan ikke fordrage apati eller spildt potentiale. Han taler til udviklere men ogs&#229; i h&#248;j grad til management og andre der bev&#230;ger sig i periferien af udviklings milj&#248;et.

I denne tale fokusere Michael p&#229; tenologi, planl&#230;gning og risk management. N&#229;r man sk&#230;re alt bullshitet v&#230;k er: &quot;projects are experiments&quot;. N&#229;r et firma planl&#230;gger sin fremtid er det altid i gode solide blokke. fx n&#230;ste &#229;r skal vi forbedre vores indtjening med 2.5 procent, ikke 100 procent og ikke -100 procent. Faktum er at alle virksomheder g&#229;r fallit uden at det er planlagt. &quot;requirements are ignorance&quot;, Denne bem&#230;rkning omhandler ikke at du som person er arrogant men blot at du er usikker med det samme du ikke ved noget med 100 procent sikkerhed. Det betyder at du kun kan g&#230;tte rigtigt eller forkert. Men det viser sig at man kan g&#230;tte 90 procent rigtig uden at vide noget med sikkerhed. T&#230;nk p&#229; hvorn&#229;r Johannes Gutenberg tykkede sin f&#248;rste bibel? Det ved du m&#229;ske ikke, men du var at det var f&#248;r &#229;r 1800 og efter &#229;r 1200. Hvis man samler 5 personer vil de med 93 procent sikkerhed repr&#230;sentere gennemsnitsh&#248;jten i verden. Du skal i hverfald aldrig sige: det har jeg ingen ide om! &quot;Guessing is Truth&quot;. Mit g&#230;t er at jeg s&#229; snart som muligt skal h&#248;re Michael tale igen!

Jaoo var for mig endnu en god oplevelse med bravende gode talere. Kun en enkelt gang m&#229;tte jeg forlade en session og ty til min tidligere post om at hvordan man beg&#229;r sig til konferencer. Alt i alt endnu en vellykket Jaoo med en grad af validering af allerede adoptere teknologer og konsolidering af allerede velkende processer. Husk at konferencen f&#248;rst er slut n&#229;r alle omkring dig ved hvad der forgik.

Som professionel udvikler stiller jeg mig det samme sp&#248;rgsm&#229;l efter hver konference: Er der noget jeg vil g&#248;re anderledes i mit job p&#229; baggrund af mine oplevelser p&#229; Jaoo? Ja, jeg vil intensivere min udbredelse af historien om d&#248;dsstjernen og rebelfl&#229;den. Konceptet med et system falder mere og mere til jorden og vi taler mere og mere om at publicere data og linke dem sammen p&#229; forunderlig vis. Koplingerne mellem de enkelte systemdele benytter sig mere og mere at allerede erhverve og gennempr&#248;vet software som fx routere og proxy servere. Oh hey, for sidste gang, klienttilstand findes i klientprogrammet. ikke p&#229; serveren.

&quot;Small Things Loosely Joined Written Fast&quot;:/posts/122-Small-Things-Loosely-Joined-Written-Fast</body>
    <category-id type="integer" nil="true"></category-id>
    <created-at type="datetime">2009-10-06T22:14:08Z</created-at>
    <id type="integer">149</id>
    <post-id type="NilClass">149</post-id>
    <published type="boolean">true</published>
    <tag-id type="NilClass">42</tag-id>
    <title>Thing'ish RESTafarian at Jaoo</title>
    <updated-at type="datetime">2009-10-08T11:43:36Z</updated-at>
  </post>
  <post>
    <body>This post is deleted. 

See &quot;Thing-ish-RESTafarian-at-Jaoo&quot;:/posts/149-Thing-ish-RESTafarian-at-Jaoo


</body>
    <category-id type="integer" nil="true"></category-id>
    <created-at type="datetime">2009-10-05T21:20:42Z</created-at>
    <id type="integer">148</id>
    <post-id type="NilClass">148</post-id>
    <published type="boolean">false</published>
    <tag-id type="NilClass">42</tag-id>
    <title>The Tale of Slippy Jaoo</title>
    <updated-at type="datetime">2009-10-08T10:55:46Z</updated-at>
  </post>
  <post>
    <body>Jeg kender svaret men desv&#230;rre ikke sp&#248;rgsm&#229;let. Det var min indgangsvinkel til dette &#229;rs JAOO. Denne holdning er i h&#248;j grad pr&#230;et af titlen p&#229; keynote speaken p&#229; dag et. Ca. 20 foredrag og tre bufs senere forst&#229;r jeg bedre sp&#248;rgsm&#229;let men til geng&#230;ld forsvandt svaret ud i morgendisen men det essentielle st&#229;r alene tilbage endnu mere tydeligt end f&#248;r. Softwarebranchen har problemer og de kommer fra en uventet kant.  

Med udgangspunkt i &quot;hvor er vi p&#229; vej hen&quot; synes det naturligt at udforske hvor vi kom fra. Det foredrag som gav mest mening var derfor 50-50 af Guy L. Steele og Richard P. Gabriel. De leverede varen i et formidabelt show hvor der blev kigget tilbage p&#229; 50 &#229;rs udvalgte klassikere bland programmeringssprog hvoraf de bedste og mest betydende egenskaber blev riset op og sat i perspektiv for vores dages sprog. 

Man kan diskutere form og udtryk p&#229; en session, denne var ironisk og fyldt med statements, musik og underlige indslag. Jeg kan ikke gennemskude om alle br&#248;d sig om sessionen men for mit vedkommende var det perfekt og jeg kunne se at de selv n&#248;dt hvert sekund. De to &#230;ldre herrer sluttede af med at dedikere et &#248;jeblik til de store mennesker som har lavet en r&#230;kke programmeringssprog men nu ikke l&#230;ngere er iblandt os. For mig var det et stort &#248;jeblik og en str&#230;k oplevelse. 

If&#248;lge JAOO keynote speaker Anders Hejlsberg har vi ikke l&#230;rt ret meget gennem alle de &#229;r. Som programm&#248;rer er vores input til systemerne stadig p&#229; et lav niveau. Han illustrer dette med en lille test med henholdsvis Pascal og C#. Andres skrev selv Pascal og har stor andel i C# og det viser sig at Pascal koden til hallo verden kun fylder ca. 50 procent i forhold til C#. S&#229; hvad har vi vundet? Anders p&#229;taler at et sprogs omverden har &#230;ndret sig drastisk grad i forhold til programmeringssprog og hvis man udelukkende beholder fokus p&#229; input metodik er det helt galt.  

I det hele taget har programmeringssprog en stor rolle i dette &#229;rs JAOO og det er godt for mig som elsker den slags. Selv JavaScript har sin egen session hvilket ikke er underligt n&#229;r man ser JavaScript V8 motoren bliver pr&#230;senteret af Lars Bak. V8 spiller med sine muskler og fortolker koden signifikant hurtigere end alle konkurrenter.   

Men der foreg&#229;r ogs&#229; noget andet! Det f&#229;r mig til at t&#230;nke p&#229; den Japanske metode til at introducere nye problemer, den g&#229;r ud p&#229; at splitte problemet op i st&#248;rrelser som kan h&#229;ndteres enkeltvis men sammen giver de en naturligvis en showstopper. En slags just in time princip for virkelige problemer. 

Andres udtalte ordet &quot;funktionel programmering&quot; ca. 29 gange under sit foredrag men m&#229;ske er det et tilf&#230;lde? Senere samme dag viste Erik Meijer betydelige samtidighedsproblemer med LINQ i forbindelse med multicore teknologi og sen binding. Dette er kun en personlig observation men jeg kan m&#230;rke noget ulme. 

Som s&#230;dvanlig er der positive keynotes og supersmarte salgs gimmicks der indikere de vanlige forbedringer indenfor programmeringssprog men der er ogs&#229; dommedags profetier som fors&#248;ger at g&#248;re os teknon&#248;rder klar p&#229; store udfordringer i fremtiden. Vi som udviklere og programm&#248;rer er ikke kommet l&#230;ngere de sidste 50 &#229;r og vores metodik er stadig simple kode konstruktioner for at udtrykke selv helt simple ting for forretningen. 

Hvilket bringer mig til en anden trend i tiden som har taget udspring hos folk fra rails comunitiet. Hvad betyder ordet at skrive i kode? Hvorfor skriver vi i koder og i s&#229; fald, hvem kan afl&#230;se dem? Som udgangspunkt burde det v&#230;re alle der deltager aktivt i et projekt. Er den kode vi skriver til mand eller maskine? Sam Aaron udtaler at vi m&#229; til at betragte kode som noget andet hvis vi skal over den barriere hvori vi lever i dag. Sam fort&#230;ller om Aesthetic programming with Ruby, og hans bud er at betragte kode som digte eller poesi og dermed &#248;ge den menneskelige intervention. 

Flere og flere talere giver udtryk for at funktionel deklarativ programmering er fremtiden. Ruby on Rails bliver ofte brugt som model n&#229;r det g&#230;lder eksempler p&#229; deklarativ programmering. ActiveRecord benytter en deklarativ metode til at fasts&#230;tte relationer mellem modelobjekter. Ideen bag deklarativ programmering er at n&#248;jes med at beskrive problemet frem for hvordan det l&#248;ses.  

Hvorfor spiller funktionel programmering stadig en rolle? Vi m&#229; erkende Moore's lov og adoptere nye krav i en stigende frekvens og dermed f&#229;r funktionel programmering sin plads p&#229; den baggrund som renhed og foranderlighed h&#229;ndteres i forbindelse med funktionelle konstruktioner og bivirkninger. Fx renhed, der betyder at en metode/funktion, givet et input ikke laver et state eller forandring, en effekt. Side Effects and Functional Programming. 

John Davies bruger ikke tid p&#229; databaser. Hans kunder vil have svar her og nu. Investment bankning lever i reentrant memory og persisterer(m&#229;ske) sine komplekse data strukturer i XML format efter lukketid. Denne metodik er mentalt sv&#230;rt at adoptere for mange men vi er noget stykker som i mange &#229;r har talt om at fjerne databasen og i den forbindelse er det ligefremt. Andre personer som fx Emil(the grat neo) mener at tiden er inden til nye former for stores fx den graf baserede model hvilket henvender meget bedre til en dynamisk adaptiv verden. Neo4j er enkelt at bruge og indkoorporere fra start en objekt orienteret tankegang. 

Klassen er d&#248;d, l&#230;nge leve gr&#230;nseflader! Qi4j bringer den nye id&#233; om Composite Oriented Programing, hvor der ikke findes adf&#230;rd p&#229; en klasse, men i stedet bliver klassen et &quot;composite&quot; af gr&#230;nseflader. Objekterne bygges af Mixin moduler der angives p&#229; klassen via annotationer. Rickard &#214;berg forsl&#229;r at vi bruger Neo4j og klasse l&#248;se objekter for at undg&#229; repeterende kode. 

Selv klasserne er objekter. Neal Ford Neal Ford befinder sig godt med ruby objekter. Man kan kun en ting med disse objekter, nemlig sende en besked til et andet objekt. Man kan ogs&#229; reflektere p&#229; objekter, &#230;ndre dem eller m&#229;ske fjerne en metode hvis den er ubelejlig. This is the real NEO. Metaprogramming in Ruby for fun and profit. And fun it was.

Ola Bini g&#229;r han kl&#230;dt som det passer ham. Og han er skrap som en barberkniv. Jeg er fuldt af respekt den kn&#230;gt. Denne session starter han med at sige at der nok er lidt for mange slides og s&#230;tter tempo fra start. Mit g&#230;r er at han s&#230;tter ca. halvdelen af de fremm&#248;dte p&#229; de f&#248;rste 10 minutter men det er sgu sjovt. Jeg har set hans demo f&#248;r men de virker altid godt p&#229; nye medlemmer i ruby klubben. Is&#230;r er det cool at vise det intermix med b&#229;de ruby og Java kodet i samme linjer. 

Frank Buschmann afholder reviews. Omr&#229;det interesserer mig ikke men jeg m&#229; sige at Frank kan formulere de essentielle ting i en grad s&#229; indholdet alligevel bliver vedkommet for mange. Hvor ofte h&#248;re man ikke en projektleder iv&#230;rks&#230;tte et review uden m&#229;l eller retning. Frank s&#230;tter sp&#248;rgsm&#229;lstegn ved hele problemstillingen og mere end antyder at vi ikke l&#230;gger v&#230;gt p&#229; denne proces. Og det er synd, man m&#229; huske p&#229; at form&#229;let ved et rewiew er at hj&#230;lpe arkitekter og udviklere samt at videregive information om kvaliteten i projektet til ledelsen. En af de store problemer ved review er at definere hvorn&#229;r nok er nok. Alting har en gr&#230;nse og specielt i forbindelse med en bestemt egenskab er det vigtig at man ikke blot udf&#248;re et review i blinde men at det i review specifikationen tydelige fremg&#229;r i hvilken egenskaber som &#248;nskes afklarede. En anden vigtig paramter i et review er at definere hvorn&#229;r man skal stoppe med at reviewe. Hvad betyder godt nok og hvad m&#229;les der p&#229;? Hvis et review bliver iv&#230;rksat i forbindelse med performents er det vigtigt at man specificere hvor voldsom en performance test man vil have. 

Stefan Tilkov er en af mine helte. M&#229;ske fordi jeg selv har arbejdet meget i en serviceorienteret verden. I serviceorienteret design findes der meget f&#229; tjenester men hver af dem promoverer en lang r&#230;kke operationer. Hver service har sit eget interface og tjenesten i sig selv udg&#248;r ikke nogen enhed. Man identificerer enheder gennem oplysninger der sendes som dokumenter som gerne tunnel POST&#8217;tes over HTTP og derved misbruger applikationsprotokollen. 

I en ressource-orienteret verden (REST) bliver de vigtigste ressourcer er identificeret, og disse kan v&#230;re enheder, samlinger, eller noget andet designeren synes fortjener at have sin egen URI. Standard metoderne, i dette tilf&#230;lde HTTP verberne - bliver lagt til den ressource-specifikke semantik. Alle ressourcer har det samme ensartede interface. Repr&#230;sentationen er det output som ressourcerne returnere styres af content-type og kan indenholde mange forskellige gengivelser af ressourcer fx XML, HTML, JSON, Yaml,  PDF, ATOM, osv. Det er vigtigt man husker at hypermedia sine repr&#230;sentationer. Hybermedia udg&#248;r den m&#229;de som internettet er interconnected.  

Hvis vi byggede flere applikationer som var interconnected p&#229; en &#230;gte l&#248;s facon kunne vi skalerer de enkelte software dele efter deres individuelle brug. Det er faktisk tragisk at vi er ved at kunne k&#248;be hardware med 32 eller 64 cores men vi kan ikke udnytte dem. Java g&#248;r sig parat til denne nye verden ved at udvide de tr&#229;dede muligheder i deres API, MS vil ha os til funktionel programmering igen hvilket ikke harmonere med meget r&#248;re om domain specifikke sprog og mere kunde interaktion. I begge tilf&#230;lde bliver det ikke letter at v&#230;re programm&#248;r. 

Hvor g&#229;r programmeringssprogene hen?

Stenalderen sluttede ikke fordi der ikke var flere sten! </body>
    <category-id type="integer">3</category-id>
    <created-at type="datetime">2008-10-03T03:06:00Z</created-at>
    <id type="integer">121</id>
    <post-id type="NilClass">121</post-id>
    <published type="boolean">false</published>
    <tag-id type="NilClass">42</tag-id>
    <title>Where Are Programming Languages Going?</title>
    <updated-at type="datetime">2008-10-08T07:26:27Z</updated-at>
  </post>
  <post>
    <body>D&#248;dsstjernen fra starwars var en k&#230;mpe monolitiske stjerne med enorme laserkanoner. Den var bygget til at g&#248;re det af med opr&#248;rerne. Den var ikke helt f&#230;rdigbygget, der manglede endnu nogle essentielle elementer men det gjorde ikke noget i det store billede idet den opfyldte alle de krav som det galaktiske imperium kunne &#248;nske til en intergalaktiske rumstation. D&#248;dsstjernen som en monolitisk installation bet&#248;d at komponenter var t&#230;t forbundene og skabte stor afh&#230;ngighed. Hvis en komponent gik itu havde det implikationer p&#229; resten af strukturen. St&#248;rrelse gav og andre ulemper, fx var det sv&#230;rt at gemme sig i rummet og flugt fra en overh&#230;ngende fare n&#230;sten umuligt og hvis man alligevel skulle g&#229; til overlydsfart m&#229;tte man trimme alle delsystemer til hastigheden. 

Rebelfl&#229;den havde helt andre karakteristika. Det var udpinte sm&#229; rumfart&#248;jer i forskellig stand og ydeevne. Nogle skibe kunne skyde en ekstrem hastighed mens andre er langsomme men kunne skyde pr&#230;cist. De var sm&#229; og adr&#230;tte fart&#248;jer, indtil de faldt ned i stumper og stykker. Selv om halvdelen af fart&#248;jerne var ukampdygtige kunne resten af de sm&#229; skibe stadig bek&#230;mpe det galaktiske imperium.

To vidt forskellige strategier. 

For at &#248;del&#230;gge d&#248;dsstjernen skulle Luke finde en mand med plastikovertr&#230;k og en falleret skuespiller med rusten laser gun. Og hele rebelfl&#229;den naturligvis. 

Justin Gehtland var langt den st&#248;rste oplevelse p&#229; konferencen RailsConf i Berlin. Hans tale &#8221;Small Things, Loosely Joined, Written Fast&#8221; kunne v&#230;re taget lige ud af hans bog &#8221;Better, Faster, Lighter Java&#8221; eller en af hans andre 8 b&#248;ger som har modtaget utallige priser. Justin har billedligt talt ikke bare h&#229;r i ansigtet men ogs&#229; langt ned at ryggen n&#229;r det g&#230;lder om komme ud over scenekanten med hans pointer. I denne tale er emnet l&#248;st koblede systemer og det var forl&#248;serne for en gamle Java hacker som mig. </body>
    <category-id type="integer">11</category-id>
    <created-at type="datetime">2008-10-02T04:19:00Z</created-at>
    <id type="integer">122</id>
    <post-id type="NilClass">122</post-id>
    <published type="boolean">false</published>
    <tag-id type="NilClass">42</tag-id>
    <title>Small Things, Loosely Joined, Written Fast</title>
    <updated-at type="datetime">2008-10-07T20:37:54Z</updated-at>
  </post>
  <post>
    <body>Den naturlige evolution har ramt rails. Keynote spekker David Heinemeier Hansson reflekterer over sine bedrifter og tanker gennem de sidste fem &#229;r med rails. Overvejelser omkring &#8220;mature software&#8221; og fastholdelse af kundesegment spiller en betydede rolle. Rails er nu et fuldt etableret produkt som er alment accepteret bredt over hele verden i det lettere applikationssegment. Med en s&#229;dan en succes f&#248;lger en str&#248;m af modstridende interesser som vil fors&#248;ge at tr&#230;kke rails i forskellige retninger og DHH m&#229; med sin karakter bibeholde kontrol over udviklingen og jeg tror at keynoten var ment til at stabilisere forventninger og krav til rails i den n&#230;rmeste fremtid.  
 
Keynote&#8217;n handlede om menneskets naturlige udviklingsproces over paradigmet, vi vil alle blive klogere med tiden! DHH laborere over hans version af konceptet legacycode og konkludere at al kode bliver legacy lige efter den er konstrueret. Men det skal ikke betragtes som en d&#229;rlig ting, vi skal v&#230;re stolte af den legacy kode vi frembringer idet det ethvert stykke kode repr&#230;sentere vores stade p&#229; tidspunktet. David mener at koden er statisk men at vi som mennesker forandre os i forhold til koden. Vi udviklere vores syn og opfattelse af opgaven og ser hurtigt derefter l&#248;sningen i et anden lys. Det handler om egen udvikling af smag, viden og personlige pr&#230;ferencer. 

Indr&#248;mmet, jeg er ikke ubetinget stolt af de applikationer var med at fremstille omkring &#229;rtusindskiftet. Tiden kr&#230;vede store applikationsarkitekturer med mange lag. Det kunne jo v&#230;re at man ville udskifte hele business modellen, hvilket naturligvis aldrig er sket. Et par &#229;r senere blev design pattern det helt store og applikationerne var nu b&#229;de fyldt med logiske lag og vertikale design patterns. Mit st&#248;rste problem var dog med at begrunde hvorfor jeg som alle andre var med at &#248;del&#230;gge en masse applikationer med overengineered arkitektur. 

&quot;Se post om Overengineered-Software&quot;:/posts/118-Overengineered-Software

For at illustrere sin pointe omkring legacy kode benyttede DHH muligheden for at vise nogle eksempler fra den tidlige rails kodebase. Han detekterede nogle sjove konstruktioner, de var naturligvis perfekte da de blev skrevet men nu flere &#229;r efter var de b&#229;de komiske, misvisende og samlet i wastebin klasser med underlig navngivning. Nu da man er blevet s&#229; meget klogere og ens subjektive vurdering er baseret p&#229; flere &#229;rs kodebase ser man ens arbejde i en anden kontekst. Kun rookie programm&#248;re h&#230;vder at de skriver perfekt kode og David havde ondt af dem som tror at rails l&#248;ser alle deres problemer.  

David citeret Joel Spolsky: &quot;God software tager 10 &#229;r at skrive&quot;, men omformuleres til: &quot;Virkelig vellykket software tager 10 &#229;r at skrive&quot;. Hvis du &#248;nsker at g&#248;re noget lykkes, du har i sinde at have arbejdet med det i lang tid. M&#229;let for alle b&#248;r v&#230;re at arbejde med software som tage 10 &#229;r at skrive, og v&#230;re glad for det. Et andet Joel Spolsky citat: &quot;Det st&#248;rste strategisk fejltagelse enhver software virksomhed kan g&#248;re: Omskriv al koden fra bunden&quot;. 

Der findes ikke en endegyldig l&#248;sning p&#229; legacy kode. Det er bevist at rene omskrivninger af kode ikke l&#248;ser store problemer men blot giver nye problemer. En god regel er at omskrive sm&#229; dele af koden og David har i tilgift et r&#229;d som lyder: &quot;Du er n&#248;dt til at forlade den kode du arbejder med i bedre stand en du fandt den&quot;. 

Legacy er ikke s&#229; slemt mener David, det holder dig &#230;rlig om dig selv og hvordan du udvikler dig som programm&#248;r.
</body>
    <category-id type="integer">3</category-id>
    <created-at type="datetime">2008-09-08T03:08:00Z</created-at>
    <id type="integer">119</id>
    <post-id type="NilClass">119</post-id>
    <published type="boolean">false</published>
    <tag-id type="NilClass">42</tag-id>
    <title>RailsConf  Europe 2008 Keynote</title>
    <updated-at type="datetime">2008-09-08T12:33:37Z</updated-at>
  </post>
  <post>
    <body>Pigerne fra konferenceorganisationen kan genkende mig fra sidste &#229;r, jeg bliver skrevet ind og f&#229; en kop kaffe der har samme farve som beskidt br&#248;ndvand. M&#229;ske har vi bes&#248;gt TheServerSide Java Symposium-Europe for mange gange. 

Hotellet er det helt nye Clarion Congress Hotel i Prague. Et f&#248;rsteklasses hotel med gode faciliteter, fitnesscenter, forretningscenter, klasse restaurant, cafe og lounge. Til alt held kunne man f&#229; espresso i det tilst&#248;dende butikscenter som ogs&#229; er en del af hotellet.  

Den d&#229;rlige konference kaffe repr&#230;senter p&#229; udm&#230;rket vis dette &#229;rs udgave af &quot;the serverside symposium&quot;. Efter nogle gode &#229;r med Nitin Bharti som ansvarshavende redakt&#248;r er denne rolle overtaget af en ny mand og det kunne m&#230;rkes. Flere af talerne f&#248;lte ikke de var en integreret del af konferencen ligesom der ikke var udstukken en f&#230;lles retning for alle sessionerne. Det er desv&#230;rre noget som kan m&#230;rkes hos publikum. Det samlede billede for konferencen blev derfor uskarpt. 

TSSJS-Europe er den eneste konference med en 8 til 1 fordeling mellem talere og deltagere. Det betyder at man til enhver tid kan komme i direkte kontakt med en tech lead p&#229; JCP 2.0, konfrontere en forfatter eller sp&#248;rge Ola om JRuby nu er hurtigere end Scala? Personligt betragter jeg dette som en k&#230;mpe fordel frem for andre meget st&#248;rre konferencer. Interaktionen mellem tilh&#248;rer og talere n&#230;rmest et kendem&#230;rke. 

De store talerprofiler som Neal Ford og Ted Neward kan deres job. Det er en oplevelse at overv&#230;re deres pr&#230;sentationer. Den nye &#8221;mand&#8221; i klassen, Ola Bini er ligeledes i topklasse med sin med sin direkte form og lynene intelligens har skabt sig et ry p&#229; rekordtid. Ogs&#229; folk som Mike Keith, John Davies og Nati Shalom g&#248;r det rigtig godt. 

Dog var flere af de &#248;riger talere af en ringe kvalitet. Fx havde jeg set frem til at blive trukket gennem Grails s&#229; jeg kunne ha set lyset igen med Java. Men det blev fuldst&#230;ndigt &#248;delagt af en d&#229;rlig pr&#230;station. 

Tilsyneladende er der ikke nogen der arbejder med business cases i Java mere. M&#229;ske gider de bare ikke dele deres erfaringer i den retning eller ogs&#229; arbejder alle med arkitektur og sikkerhed. Kun rent tekniske ting blevet taget op hvilken er typisk for Java folk men keder mig i l&#230;ngden. 

TSSJS-Europe handlede meget om den dynamiske vinkel. Der var sessioner med sprog som Groovy, Grails og ogs&#229; en del om paradime skiftet imod domain specifikke sprog og her er forvirringen total. Kun f&#229; talere kunne med overbevisning tale om DSL mens flere andre kunne sige DSL mens deres &#248;jne var blanke. 

What's new

Restfulness er langsomt p&#229; vej ind i Java verden. Flere f&#248;rende talere tager konceptet mere og mere til sig. Men den brede masse af Java programm&#248;rer og businessfolk kan ikke se det sjove. Argumenter som sikkerhed og tusindvis af transport formere, ESB'er og osv fylder mere i deres bevisthed end den enlige protokol.

Produktiviteten stinker i Java. Det ved alle. Derfor er sessioner med dynamiske sprog og tilgange popul&#230;re. Java er det sidste store generelle programmeringssprog og fremtiden er en m&#230;gte af mange sm&#229; sprog som alle har det til f&#230;lles at de kan eksekveres p&#229; en JVM. Det kan fx Scala, Groovy, GRails, JRuby og flok som vil noget indenfor systemudvikling m&#229; l&#230;re sig et nyt sprog om &#229;ret. De andre skal vedligeholde de gamle systemer. 

Flere CPU kommer til at s&#230;tte farten p&#229; Java programmerne ned. De n&#230;ste &#229;r kommer hardwaren til at best&#229; af mange cores men mindre kraft i hver enkelt core. Som det er nu kan Java kun h&#229;ndtere en CPU pr. JVM og vi har ikke &#230;gte samtidighed og Java programmerne vil m&#229;ske blive 2 til 10 gange langsommer. Der arbejdes h&#229;rdt p&#229; at f&#229; Java til at underst&#248;tte samtidighed. Fx er GC nu konstrueret s&#229;dan at hver CPU f&#229;r en OS tr&#229;d med GC, f&#248;r ville GC stoppe alle CPU'er mens den k&#248;re. JVM'en vil give &#230;gte samtidighed, og n&#229;r det sker skal ca. 90 procent af vores gamle programmer skrives om.

Scala er et funktionelt objektorienteret sprog. Ted Neward viste nogle af de kvaliteter Scala har. Fx skriver man kun ca. en femte del kode i forhold til Java og meget af den trivielle side er v&#230;k og man beh&#248;ver ikke dot mellem metode kald hvilket g&#248;r en k&#230;mpe forskel n&#229;r man skriver DSL. Super session. 

Mange taler om det men f&#229; forst&#229;r det. Domain specifikke sprog. Der er et stort hype omkring DSL men min erfaring siger mig at kun folk med middel til god viden om dynamiske sprog fanger essensen af DSL. Resten vil bare v&#230;re cool med de smarte. Ved diskussionerne bagefter ramte det mig at forst&#229;endelsen er virkelig sv&#230;r for folk fra statiske procedurale milj&#248;er. 

For mig var den st&#248;rste oplevelse Neal Ford&#8217;s pr&#230;sentation om paradigme skift imod dynamiske sprog. Han pointerede med at tydelighed den modvillighed som er nestet ind i vores hoveder. Fx syntes vi at programmering med XML var fedt fordi vi kunne opn&#229; sen binding i vores software. Nu 10 &#229;r senere har vi opn&#229;et total binding idet XML har overtaget selve programlinjernes form&#229;l og vi er totalt h&#230;mmede hver gang en &#230;ndring skal gennemf&#248;res. Super cool session. 

Reaktionen imod den stilstand som vi befinder os i er fx high level sprog som muligg&#248;r deklarative programmering. Deklarativ programmering i den form hvor man beskriver &quot;hvad&quot; der skal g&#248;res frem for &quot;hvordan&quot; det skal g&#248;res. 

Der var ogs&#229; en masse framework snak, Spring, JPA, EJB 3.1, Seam, Wicket men det gider jeg ikke kommentere. For mig er det, whatever. 

&quot;Fotos fra TSSJS-Europe&quot;:http://www.flickr.com/photos/frankvilhelmsen/tags/prague/
</body>
    <category-id type="integer">3</category-id>
    <created-at type="datetime">2008-06-21T04:51:00Z</created-at>
    <id type="integer">113</id>
    <post-id type="NilClass">113</post-id>
    <published type="boolean">false</published>
    <tag-id type="NilClass">42</tag-id>
    <title>TheServerSide Java Symposium-Europe Wrap</title>
    <updated-at type="datetime">2008-06-24T08:38:49Z</updated-at>
  </post>
  <post>
    <body>Solen skinner p&#229; en sk&#248;n dag. Den offenlige trafik er brudt samme efter et bankkup og jeg er p&#229; vej til IT Universitetet i K&#248;benhavn. Det er tid til den f&#248;rste RubyFools konference i K&#248;benhavn. IT Universitetet p&#229; amager er bygget af samme mand som byggede Nordea i K&#248;benhavns havn. Det ser man p&#229; det sindsyge spild af rum og plads kun 2 meter inde i bygningen. Gulvet er den n&#230;sten ting man l&#230;gger m&#230;rke til, det minder om T&#229;rby station. Bygningen er kedelig og uden karisma. 

h3. Keynote Dave Thomas

Dagens keynote speaker Dave Thomas har til geng&#230;ld masser af spunkt. Jeg m&#229; indr&#248;mme at han er set i bedre form men det fede ved ham er at hans bundnieau er h&#248;jt. Hans prim&#230;re budskab er at man skal finde gl&#230;den i ens arbejde. Keynoten er delvis en blanding af talen om &#8220;Software Craftsmanship&#8221; hvor hans p&#229;stand er at vi som udviklere eller programm&#248;re ikke har et s&#230;t af v&#230;rkt&#248;jer som vi benytter hvergang og alts&#229; dermed ikke noget h&#229;ndv&#230;rk i traditionel forstand. Nej vi starter fra bunden hvergang og sidestilles dermed med kunsterne, skribenter eller digter. Jeg kan nu bedst li den sidste da jeg lever med skriveblokering hver morgen. Dave lister en stribe ting som g&#248;r ham forelsket.(red. I Ruby)

I Ruby kan man g&#248;re en ting p&#229; mange m&#229;der, fx en for l&#248;kke kan laves p&#229; seks m&#229;der. Andre sprog definere en bestemt syntaks som skal f&#248;lges overalt mens Ruby lader programm&#248;ren bestemme hvilken form han bryder sig mest om og det g&#248;r en verden til forskel. En essentiel forskel er at mange nu er beviste om at de skriver koden til andre mennesker og ikke til systemet. I hele software historien har vi skrevet kode til maskinerne, men nu er vi alle ved at kommet til den erkendelse, af koden vi skriver skal l&#230;ses og vedligeholdes af mennesker. 

Jeg kan li Dave og hans pauser i talerne, han kan vel snart skrive en bog om at l&#230;gge pauser ind i taler. Jeg kan li at han, som en af de f&#229;, giver sig selv tid til eftertanke og refleksion over hans arbejde. Dave laborer en del over paradokset at v&#230;re perfekt eller tro man har skabt noget perfekt. Hvis noget er perfekt kan det ikke blive bedre. Hvis man &#230;ndre det perfekte er sandsynligheden for at fejle 100 procent. Det var Lucilio Vanini(1600) som sagde at &quot;den st&#248;rste perfektion i sig selv er uperfekt.&quot; Man kan tage den lidt l&#230;ngere og sige at intet nyt kommer ud af perfektion, fx med disse citater fra Dave Thomas's slideshow:

    * &quot;It is absurd to look for perfection&quot;
    * &quot;Perfectionism is the enemy of creation&quot;
    * &quot;Out of perfection nothing can be made. Every process involves breaking something up&quot;
    * &quot;Perfectionism is the word of the opressor&quot;
    * &quot;Perfectionism os slow death&quot;
    * &quot;Only mediocrity can be trusted to be always at its best&quot;
    * &quot;Perfection has one grave defect: it is apt to be dull&quot;


Meningen er at hvis man er n&#230;rtagende med sine perfekte koder bliver man ikke bedre. Betragt alt hvad man laver fra nye vinkler, med andre perspektiver, en anden kontekst og vend ofte tilbage for at forbedre. Hans form&#229;l med hele denne seance er at pointere at man ikke skal v&#230;re s&#229; pokkers stivnakke men mere efterstr&#230;be en pragmatisk holdning. Men mest vigtigt af alt, ha det sjovt. 

Dave pointere at Ruby ikke er perfekt, men inkonsistent. Hvis man skulle g&#248;re sproget konsistent skulle man g&#248;re Matz mere retskaffen. Denne pointe fik Matz til at grine h&#248;jt. Tydeligvis ikke den vej han t&#230;nker. 


h3. REST with Stefan Tilkov

Efter at have l&#230;st ca. 200 posts fra Stefan var mine forventninger h&#248;je. Han levede ikke helt op til dem. Jeg forventede en skarp og let provokerende anti SOA gut som ikke holder sig tilbage for at give sin uforbeholdne mening. 

Stefan har en klar ide om hvordan REST skal fortolkes og han er god til at pr&#230;cisere de ofte mange fejl opfattelser folk har omkring REST principperne. REST er en forholdvis nemt stil at adoptere men kr&#230;ver en del arbejder f&#248;r man helt f&#229;r det forkromede overblik under huden. Tilkov giver tre bud p&#229; REST og hvad REST betyder for ham. Han understreger at man ikke laver REST bare fordi man kan returnere XML.

# En arkitektonisk stil. Rod Fielding beskriver en r&#230;kke regler som skal overholdes og arkitektonisk princip underlagt kommunikations protokollen HTTP.
# Web brugt rigtigt. Applikations arkitektur der bruger HTTP, URI og andre web standarder. Er p&#229; web og ikke gennem web. WOA, ROA eller RESTfull HTTP.
# XML uden SOAP. Send XML over HTTP. Overtr&#230;der web p&#229; lige fod med WS. POX

Kun den f&#248;rste er &#230;gte REST. Fordi det er s&#229;dan Rod har bestemt det. Den anden kan bruges. Med den tredie mulighed f&#248;lger den sorte pest.

Hvorvidt din applikationer er &#230;gte RESTful kan kontroleres med fem enkelt steps.

# Hver resource skal v&#230;re uniq identificerbar.
# Link resource til hinanden.
# Brug standard metoder. HTTP, GET, POST, DELETE, osv.
# Returner forskellige repr&#230;sentationer. JS, JSON, XML osv.
# Kommunikere uden kommunikations tilstand p&#229; server.

Hvis man kan svare ja til disse sp&#248;rgsm&#229;l f&#229;r man en masse fordele. fx vil applikationen skalere godt idet serveren ikke holder p&#229; klient tilstand og m&#229;ske rammer det n&#230;sten link en helt anden server. Man f&#229;r ogs&#229; et enkelt og uniformt interface gennem l&#248;sningen med stabilt antal af operationer.
N&#229;r man designer en RESTful applikation kan man f&#248;lge fire steps. Tilkov spurter gennem punkterne som oprindeligt er defineret REST bogen fra &#229;r 2003.

* Identificer resourcer og design URI layout.
* Identificer repr&#230;sentation formatter.
* Identificer metode semantik.
* Identificer respons koder.

En blandt publikum sp&#248;rger hvordan man kan holde sig DRY hvis man fx kan oprette en kunde p&#229; flere forskellige m&#229;der i UI. Stefan svare meget underligt, han skeler ikke mellem UI og REST hvilket jeg slet ikke forst&#229;r. REST er jo ikke et api til UI. REST api&#8217;et giver en URI hvor man kan kreerer en ny kunde. Applikationen som laver UI m&#229; have flere controller som render forskelige views men benytter samme REST service. Jeg tror de fleste har har pr&#248;vet at se repreterene kode i deres controllere og de er som regel bare et symptom p&#229; godt funktionalitet i brugergr&#230;nsefladen. Jeg er stor tilh&#230;nger af Tilkov og jeg fandt tr&#248;st hos ham da jeg s&#229; mange projekter stagnere p&#229; grund af SOA og WS d&#248;dsstjerne teknologier.

h3. Rails 2.0.1
 
Michael Koziarski havede kogt et 3 timers foredrag om nye ting i Rails 2.0.1 ned til 1 time. Han er helt sikkert dygtig men jeg kan ikke holde til hans ensartede stemmef&#248;ring. F&#248;rst til sidst kom nogle nyheder som jeg kunne bruge. fx metoden protect_against_forgery som beskytter mod Cross-site request forgery.  

h3. Versionering

Ole &#216;stergaard holder et foredrag om versionering p&#229; modelniveau. Han l&#248;ber gennem de plugins som findes til Rails som kan n&#230;sten al det men forventer. Problemet er dog at de ikke kan netop det som Ole kr&#230;ver og han har p&#229; den baggrund opfundet endnu et plugin. Alle plugins arbejder med samme l&#248;sninger. Shadow copies. Samme metodik som &quot;Time Machine&quot; i OS X.  

Alle plugins arbejder med generelt datalogisk problem. Lad os antage at en aktie applikation ikke kan finde historie p&#229; alle transaktioner og firmaet er ved at g&#229; konkurs. S&#229; jeg vil vide hvem der har gjort hvad 2 uger tilbage. 

Ole hacker en del kode og det g&#229;r galt en enkelt gang. Naturligvis, den sande mester kendes ikke p&#229; de fejl man laver men mere p&#229; hvordan man evner at komme videre. 

h3. Merb 

Min gode ven Kim taler om Merb. Et letv&#230;gts MCV fremwork som er ORM agnostic. Emnet er meget interesant idet n&#230;sten alle kun kender Rails men der findes andre l&#248;sninger. Merb er hurtigere, mere letv&#230;gt og adr&#230;t. Merb er at fortr&#230;kke hvis l&#248;sningen kun omhandler fx REST, service gr&#230;nseflade. Merb er thredsafe og giver dermed mulighed for at eksekvere flere samtidige tr&#229;de i mods&#230;tning til Rails. 

Kim taler om det faktum at Merb er mere organiseret end Rails med jeg tror nu at det sidst fremkommende framework har en fordel blot fordi man som professionel stj&#230;ler ideer fra de andre. 

Desv&#230;rre for fordraget er Kim meget nerv&#248;s og kommer aldrig ind i det mode hvor man kan nyde emnet og give sig hen. Det er synd for jeg ved at han har enorme m&#230;ngder af god erfaring at &#248;se af. 

h3. Thrackhosts

Jeg bliver n&#248;dt til at give en bad smily til trackhost paradigmet som burde give noget anden og mere end blot: Her har vi en taler. Ja tak. det viste jeg sgu da godt, det st&#229;r ovenik&#248;bet i programmet. S&#229; hvad fanden laver s&#229; en trackhost? Han udfordre de folk som er p&#229; hans trackhost liste, han konfrontere dem og stiller forventninger i sigte hos publikum. Han tager et skridt tilbage og leder den r&#248;de tr&#229;d som b&#248;r findes p&#229; et track! Og han g&#248;r det med list og konduite s&#229; publikum er sikre p&#229; at talerne giver sig helt ud og selv f&#229;r noget ud af eventen. Helt &#230;rligt, jeg kan ikke bruge en trackhost som mumler og bare repetere hvad jeg i forvejen kan se p&#229; tavlen. 
Glenn Vanderburg kan den slags. Han var trackhost p&#229; Advanced ruby og Rails og fik p&#229; fornem vis pr&#230;senteret talerne samt gennemg&#229;et Leaky abstraction. 

h3. The Law of Leaky Abstraction

Loven om Leaky Abstraction betyder at hvergang vi bygget endnu et smart abstraktions lag ovenp&#229; for at opn&#229; bedre performents eller enkelthed som vil effektiver verdenen, ender vi op med at bruge mere tid p&#229; de underliggende lag. Moralen er at man ikke kan abstrahere sig fra l&#230;rdom. 
Glenn mener at det st&#248;rste i Ruby og Rails er openness. Det er muligt at se, bruge og bearbejde ruby kode med korte roundtrips. Han bifalder at Rails er lavet for de 90 procent almindelge krav men stadig &#229;bent for forandring i de sidste 10 procent. 

h3. Matz 

Konferencens h&#248;jdepunkt var at m&#248;de skaberen af Ruby. Yukihiro Matsumoto. Matz er en venlig og ydmyg mand som bare gerne vil hacke kode og hygge sig med sin famille. Matz holder en keynote om Ruby, fortid nutid og fremtid. Og s&#229; sov han over sig p&#229; dagen hvor han skulle holde keynoten og ankom f&#248;rst i sidste &#248;jeblik.  
I 1992 var Matz uden job og havde masser af tid tilovers. Han n&#248;d at downloade programmeringssprog for at afpr&#248;ve dem. 

En dag fik han et job p&#229; kontor hvor der stod en computer hvor han i hemmelighed arbejdede p&#229; sit nye sprog. Han tog de fede ting fra Fortran, Cobolt, Lisp, Agol og blandede med scriptsprog som Perl og Python og miksede dem samme.  
Det var ikke nogen succes. Han m&#229;tte gennem 10 fors&#248;g f&#248;r et tilfredssmil brede sig. Matz arbejdede med grundtanken at sproget skulle g&#248;re ham glad n&#229;r han arbejdede med det. Det skulle v&#230;re udtryksfuldt og hurtigt samt ha en let syntaks. Et n&#248;gle ord i Ruby er produktivitet. 

Matz fors&#248;ger flere gange at underbygge det faktum at software betyde mere og mere for virksomhederne men tiden til at skabe bliver stadig mere knap. Hans pointe er at branchen i mange &#229;r har fors&#248;gt at optimere p&#229; metodikker og hele supportsystem omkring software udvikling men kun f&#229; t&#230;nker p&#229; de v&#230;rkt&#248;jer vi bruger. Jeg kan kun v&#230;re enig. 

Matz fortalte om Ruby 1.9 og nogen af de nye features. Fx returnere metoderne each, map nu enumerators. Ikke noget under at codebase vokser og Java har m&#229;ske ikke levet forg&#230;ves. Trods alt. 

&lt;pre&gt;
e1 = [1, 2, 3, 4].each
e2 = [10, 11, 4].each
loop {
	p e1.next+e2.next
} # prints 11, 13, 7
&lt;/pre&gt;

Hvad sker der noget en liste l&#248;ber t&#248;r for entiteter? Ikke noget. Er det farligt. Jeg kan overhoved ikke overskue alle konsekvenser ved denne mulighed, eller risiko endnu.   

Fibers er ogs&#229; en ny ting I Ruby. En firber er en slags letv&#230;gts tr&#229;d. Efter min bedste overbevisning er det ikke meningen at disse tr&#229;de skal eksekvere p&#229; forskellige cores men udelukkende kunne sikre asynkron k&#248;rsel. 

Jeg opfandt Ruby til mig selv, for at f&#248;le mig godt tilpas og nyde at arbejde. Og hvis jeg kan hj&#230;lpe med at f&#229; de samme f&#248;lelser op i folk over hele jorden er det sk&#248;nt. Citat Matz. </body>
    <category-id type="integer">3</category-id>
    <created-at type="datetime">2008-04-01T13:17:00Z</created-at>
    <id type="integer">107</id>
    <post-id type="NilClass">107</post-id>
    <published type="boolean">false</published>
    <tag-id type="NilClass">42</tag-id>
    <title>First rubyfools conference</title>
    <updated-at type="datetime">2008-09-12T12:32:57Z</updated-at>
  </post>
  <post>
    <body>Jeg har lige h&#248;rt John Davies for syvende gang over de seneste &#229;r og det er altid en forn&#248;jelse. John er en world wide veteran indenfor IT konferencer og har v&#230;ret aktiv konsulent siden c programmeringssproget var state of the art. Gennem &#229;rerne har han haft adskillige store stillinger og firmaer med specialer som (SWIFT, FpML, ISO-20022. osv). John taler om investeringsbanker og alle de udfordringer som de m&#248;der s&#229;som, ekstrem hastighed, reaktionsevne og absolut garanti. 

Garanteret garanti aspektet bliver sat i alvorligt perspektiv n&#229;r en vendor bliver holdt til ansvar for hver og eneste besked, lidt af en mundfuld n&#229;r man t&#230;nker p&#229; at en SWIFT besked med udligning af kontobel&#248;b mellem landekonti er p&#229; samme bel&#248;b som en vendor er v&#230;rd og der bliver sent nogle hundrede om dagen. 

N&#229;r man arbejder med investeringssystemer betyder reaktionstid og hastighed alt. Systemerne er sat op til at gennemf&#248;re handler ved meget pr&#230;cise udregnede gr&#230;nser og hvis disse systemer halter blot 10 millisekunder i forhold til de andre investeringssystemer er det dem der l&#248;ber med de gode handler. Det er ikke for sjov at alle de store investeringsforretninger ligger t&#230;t placere op ad hinanden og enkelte endda direkte ovenp&#229; b&#248;rsen i London. Investeringsforretningerne ligger ogs&#229; i umiddelbar n&#230;rhed af de st&#248;rste backbones for at hindre at eventuelle routere stj&#230;ler den vigtige beslutnings tid. 

I forhold til traditionelle systemer er disse ogs&#229; specielle p&#229; en anden m&#229;de. Deres maximale respons tid er m&#229;ske nede p&#229; ca. 3 millisekunder og det s&#230;tter sp&#248;rgsm&#229;l som &quot;vil du k&#248;be MS aktie nu&quot; i relief. Ethvert sp&#248;rgsm&#229;l skal  behandler enorme m&#230;ngder af data inden det er muligt at svare. Det er mere normalt at man loader alt data ind i memory om morgenen og gemmer for lang tid arkiv om aftenen efter handlerne er overst&#229;et. 
 
Ydermere kan der arbejde ofte flere tusind mennesker p&#229; selvsamme systemer. Det kr&#230;ver en fornuftig planl&#230;gning og k&#248;ligt overblik at have s&#229; mange programm&#248;rer til at arbejde sammen ude en direkte samh&#248;righed. 

Service stak 

I flere foredrag taler John ogs&#229; om den software stak der fortr&#230;kkes i de banker hvor hans virksomhed er tilknyttet. Denne gang sagde han at Applikation servere er for nedadg&#229;ende i den slags banker. Det har l&#230;nge v&#230;ret s&#229;dan at man ikke m&#229; benytte EJB fordi de er langsomme og ikke persistent nok. John er glad for teknologier som GIGAspaces og Java Spaces.  

Enlig ville jeg gerne skrive lidt om SWIFT formatet. Men det bliver nok f&#248;rst om lidt. I det gamle Javahouse arbejdede vi for en bank med SWIFT formatet. Jeg ville &#248;nske vi p&#229; det tidspunkt have set det SWIFT API som John har lavet i sit firma, C24.  
</body>
    <category-id type="integer">11</category-id>
    <created-at type="datetime">2008-01-31T05:15:00Z</created-at>
    <id type="integer">96</id>
    <post-id type="NilClass">96</post-id>
    <published type="boolean">false</published>
    <tag-id type="NilClass">42</tag-id>
    <title>High performance architecture</title>
    <updated-at type="datetime">2008-02-06T04:31:11Z</updated-at>
  </post>
  <post>
    <body>Hvad er smuk kode? Det er som denne form for syntaks kommer mere og mere op for tiden. Mange mennesker omtaler &quot;beautyfull code&quot; som noget der bare er i orden og som man som udvikler b&#248;r have respekt for. N&#229;r jeg h&#248;rer den slags t&#230;nker jeg straks p&#229; deres kulturelle baggrund, hvilket t&#248;j de g&#229;r i og m&#229;ske ogs&#229; hvilken type bil de har. Hvad opfatter hvem som v&#230;rende smukt og hvilken betydning ligger der i det hele taget i ordet smukt?

Det var med stor &#230;refrygt og forventning jeg entrerer den lille sal p&#229; Jaoo hvori Marcel Molina skulle tale om smuk kode. Jeg er glad for at det var Marcel da han er utroligt fattet og har dybe forgreninger i den litter&#230;re verden. Som forventet begyndte Marcel at bygge et historiske fundament op over den klassiske filosofi. Han r&#248;re b&#229;de Plato og Descartes indgang til det at v&#230;re smuk. Hans konklution er at den reelle sk&#248;nhed ligger i et samspil mellem tre aspekter som kan svinge i indbyrdes styrke. 

De tre aspekter er:

&lt;pre&gt;
Proportion udtrykker en relativ indbyrdes ligeligt fordelt st&#248;rrelse og v&#230;gt. 
Integrity overholde det enlige formal. T&#230;nkt p&#229; en hammer af glas. Selv om den 
er smuk lever den ikke helt op til det enlige form&#229;l. 
Klarhed er overblik og forst&#229;else gennem mening og funktion.
&lt;/pre&gt;

Efter en indg&#229;ende gennemgang af de tre grundelementer i den klassiske teori er vi ved at kunne overf&#248;re dette til et enligt fors&#248;g med kode.

Som et eksempel viste Marcel en metode som han tidligere synes var smuk, ca. 25 linjer lang og temmelig sv&#230;r at l&#230;se. Faktisk s&#229; sv&#230;r at han skulle koncentrere sig en del bare for at l&#230;se koden. Ideen er nu at m&#229;le metode imod de tre aspekter som tilsammen udg&#248;r smuk kode efter klassisk filosofi, nemlig m&#229;lt mod Proportion, Integritet og Klarhed.

&lt;pre&gt;
Proportion. Fejl, m&#229;ske er den for stor og kompliceret.
Integritet. Fejl, korrekt men benytter eksterne eller un&#248;dige biblioteker.
Klarhed. Fejl, Sv&#230;rt l&#230;sbar.
&lt;/pre&gt;

Marcel fort&#230;ller at han efter nogle &#229;r m&#229; skrive koden om bla. fordi den slet ikke performer og skaber deadlooks. Koden er enkel at skrive om, den fylder hurtigt kun 7 linjer kode og fungere fint uden eksterne biblioteker. Og vigtigst at alt, den deadlooker ikke hardwaren.

&lt;pre&gt;
Proportion. Succes, den er velproportioneret.
Integritet. Succes. Den g&#248;r hvad der forventes og er meget performent.
Klarhed. Succes. Koden er letl&#230;selig og udtrykker klart funktionen.
&lt;/pre&gt;

Jeg har aldrig t&#230;nkt at ligestille nogle linjer kode med samme menneskelige mekanisme som styre min sexdrive. Men jeg m&#229; indr&#248;mme at jeg selv ikke har bedre forslag n&#229;r det g&#230;lder evnen til at bed&#248;mme kode. Hidtil har jeg bed&#248;mt kode udefra en klar forstilling om at de ting jeg har gjort og l&#230;rt er de rigtige men det beh&#248;ver jo langfra at v&#230;re sandt. 

Hvad synes du?</body>
    <category-id type="integer">11</category-id>
    <created-at type="datetime">2007-09-29T12:56:00Z</created-at>
    <id type="integer">71</id>
    <post-id type="NilClass">71</post-id>
    <published type="boolean">false</published>
    <tag-id type="NilClass">42</tag-id>
    <title>Beautiful code</title>
    <updated-at type="datetime">2009-11-16T13:47:10Z</updated-at>
  </post>
  <post>
    <body>&lt;img src=&quot;http://farm2.static.flickr.com/1393/1434935532_b6fab94136_m.jpg&quot; width=&quot;120&quot; height=&quot;80&quot; /&gt;

Selvom jeg n&#230;sten lige er kommet hjem fra RailsConf i Berlin kan jeg ikke modst&#229; JAOOs heldags Ruby track. Jaoo havde f&#229;et navne som Glenn Vanderburg, Charles Nutter, Marcel Molina Jr, Justin Gehtland, Rich Kilmer og Chad Fowler til &#197;rhus. Det var fedt at se hvor mange mennesker de trak, nogle af de andre spor var n&#230;sten tomme. 

Efter min mening er det sk&#248;nt at h&#248;re alle de fede ord om teknologier og protokoller som: WOA, ROA, REST, Ruby, Javascript, mashups, HTTP, XML, HTML, JSon, POX, HAML, SASS osv.
En ting som ogs&#229; trak rigtigt mange flok fra andre teknologier var Rich Kilmer om Domain Specific Languages. Han er total sej n&#229;r det kommer dertil og fortalte om nogle projekter hvor han havde brug DSL til at modeller systemet hvilket giver en enest&#229;ende mulighed for at gennemg&#229; kildekode med forretningen. Vildt sp&#230;ndende. 
Martin Fowler fra ThoughtWorks er glad for Jaoo. Ikke fordi det ligger i &#197;rhus men fordi der er samlet s&#229; mange forskellige talere fra andre teknologier at man d&#229;rligt har tid til at slappe af. Man ser sj&#230;ldent s&#229; mange talere g&#229; til de andres foredrag hvilket jeg mener indikere god kvalitet.  

Javascript kommer igen, ingen tvivl om det. Men det slog mig at noget af snakken gik p&#229; at Javascript kun er godt i en browser. Ja for fanden, hvor ellers. Men er sgu da en idiot hvis man tror man kan brygge applikationer i Javascript p&#229; serveren. 

Flere andre programmeringssprog er p&#229; vej ind. fx Haskell og Erlang. Haskell har f&#229;et C#3.0 op p&#229; et nyt plan med Linq. Som jeg ser det er Erlang er endnu vigtigere idet vi m&#229; agere p&#229; det faktum at vores maskiner bliver skaleret ud i stede for op. Hardwaren vi benytter f&#229;r flere CPU'er og Erlang som programmeringssprog er forberedt til at kunne styre og fordele dette i mods&#230;tning til andre teknologier hvor de enkelte udviklere fors&#248;ger at kode sig ud p&#229; flere cpu'er. Dette et d&#248;mt til fejle p&#229; forh&#229;nd. 

Et andet emne som blev ber&#248;rt p&#229; Jaoo var design software patterns. En fremf&#248;rte denne udtagelse: mange projekter fejler med deres arkitektur fordi de fx f&#248;lger Gang of Four (GoF) bogen. Problemet er at n&#229;r mange programm&#248;rer h&#248;rer om design patterns, &#248;nsker de at benytte dem i alle mulige og umuligt situationer. N&#229;r man designer et system b&#248;r det reflektere den verden det skal leve i og ifald en design pattern kan afhj&#230;lpe et specifikt problem er det godt. 
</body>
    <category-id type="integer">3</category-id>
    <created-at type="datetime">2007-09-23T06:42:00Z</created-at>
    <id type="integer">47</id>
    <post-id type="NilClass">47</post-id>
    <published type="boolean">false</published>
    <tag-id type="NilClass">42</tag-id>
    <title>JAOO 2007 wrap up</title>
    <updated-at type="datetime">2008-04-08T07:26:07Z</updated-at>
  </post>
  <post>
    <body>Det jeg lod m&#230;rke til ved RalisConf Europe 2007 i Berlin var is&#230;r alle de ting som slet ikke blev omtalt eller diskuteret. Umiddelbart har jeg ikke konkluderet hvorvidt jeg synes det er godt eller skidt men det fordret klart forretningsprocessen. 

N&#229;r en flok Java n&#248;rder er samlet under en konference bliver der normalt altid diskuteret heftigt om alle de teknologiske spisfindigheder omkring platformen. N&#229;r en samling af Ruby on Rails n&#248;rder er samlet bliver der diskuteret model objekter og smartass features som fx Ajax. Er der forskel? ja i h&#248;j grad.

I Rails er adoption en k&#230;mpe fordel. Det er f&#248;rst virkeligt g&#229;et op for mig efter disse tre dage i Berlin hvor stor en aflastning det er at der findes en solid konsensus mellem alle de tilstedev&#230;rende omkring en masse punkter som David har bestemt. Jeg har aldrig v&#230;ret til en konference hvor der har stillet s&#229; lidt skeptiske sp&#248;rgsm&#229;l til de beslutninger som ligger til grund for frameworket. Man kan argumentere om det er sundt eller ej, men faktum er at det fjerner en masse triviel st&#248;j og f&#229;r folk til fokuser p&#229; de enlige problemer. Forretningen. 
  

Vel tilbage fra RalisConf Europe 2007 er det netop g&#229;et op for mig at jeg tr&#230;nger til ferie. Det var et par rigtig gode dage sammen men en masse Ruby on Rails fans fulde af entusiasme og masser af spas. Efter min mening har denne konference i nogen grad mindet mig og den l&#248;sslupne men interessante holdning som var til stede under de f&#248;rste store Java konferencer for 10 &#229;r siden. Desv&#230;rre gav det ogs&#229; en fornemmelse af lethed og mangle p&#229; cases fra den virkelige verden hvor problemerne bor. Jeg talte med flere som var enige i min antagelse om at der ligesom manglede lidt substans i flere af indslagene.  

Naturligvis skulle David Heinemeier Hansson selv holde en keynote som god &#229;bning p&#229; to fulde dage med taler. Det gjorde han ogs&#229; ok, Casper Fabricius har lavet en fin blog om keynoten. 

&quot;David Heinemeier Hansson RalisConf Europe 2007 Keynote&quot;:http://casperfabricius.com/blog/2007/09/18/railsconf2007-dhh



Her er mit personlige udpluk af de folk som efter min mening g&#248;r en forskel. Ola Bini, Craig R. McClanahan, Roy T. Fielding, Cyndi Mitchell, Jonathan Siege, Marcel Molina Jr, Michael Koziarski, og sidst men ikke mindst Neal Ford.  

Den bedste kommentar for mig kom dog ikke fra en Rubyist men fra VP hos ThoughtWorks &quot;Cyndi Mitchell&quot;:http://www.thoughtworks.com/who-we-are/leadership-profiles/cyndi-mitchell.html Cyndi startede med at runde de glade DOT COM dage af, det var en tid uden forretningsmodel men med masser af bloatware og penge ikke mindst. Virksomheder blev fortalt at de skulle investere store summer i infrastruktur og middelsoftware. Og det gjorde de med det resultat at 2004 blev et &#229;r med store problemerne med data migrering og vedligehold af store systemer. Forretningerne lod deres afmagt g&#229; ud over IT afdelingerne. Det var(er) et rod! 

Og nu er det s&#229; jeg bliver n&#248;dt til at undskylde. Som (tidligere) Java specialist f&#248;lte mig truffet over at ha bidraget med en masse bloatware! Ja for fanden, vi havde penge nok til at lave det jeg kalder Ikea applikationer. Ikea st&#229;r for mig som en applikation der samler hele forretningsomr&#229;det under en hat. I denne applikation fylder man s&#229; alle de frameworks og design patterns man kan finde. Jeg ved det. Jeg holdt taler om fremgangsm&#229;den. Jeg var en idiot. 

Nu kr&#230;ver forretningen mere p&#229; 6 m&#229;neder end de fik p&#229; 2 &#229;r. Ikke kun hurtigere, de vil ogs&#229; kunne &#230;ndre undervejs, og bagefter med korte reflekser. Den globale &#248;konomi tr&#230;nger igennem og vi m&#229; kunne reagere hurtigere. Forretningerne kigger efter en bedre m&#229;de, og nu findes der en bedre m&#229;de. Man beh&#248;ver ikke mere k&#230;mpe infrastruktur for at lave en forretningsapplikation. Man beh&#248;ver ikke vente m&#229;nedsvis p&#229; resultatet.  

Ruby g&#248;r det muligt. Rails med David spisen bragte ruby til hvermand. Nu kommer der nye teknologer som JRuby og IronRuby der er med at sikre adoption af Ruby i virksomhederne p&#229; lige fod med Java og .NET. 

Ruby og Rails udviklere med mange kvalifikationer og forretnings viden er med til at &quot;Crossing the Chasm&quot;:/blog/show/68

Det er en sp&#230;ndende tid og jeg vil v&#230;re med. 

En der ikke vil v&#230;re med er &quot;Ola Bini&quot;:http://ola-bini.blogspot.com/ Han fascinerer mig, ikke pga hans sorte negle men mere fordi har siger tingene ligeud og arbejder p&#229; JRuby. Ola er ikke bange for at komme med nogle p&#229;stande fx at Ruby on Rails ALDRIG kommer ind som Enterprise applikation i virksomhederne, med mindre man bruger JRuby on Java pga driftafd. M&#229;ske har han faktisk ret, ikke at jeg er meget for at bifalde den kommentar men jeg arbejder flere steder hvor det er faktum. 

Ola elsker Ruby, JRuby og bitche altid p&#229; den virkelig ruby med ting som;

* Green threading
* Partial Unicode support
* Speed (slow)
* Memory management, specifically the garbage collector
* C language extensions
* Politics (you want me to switch to what?)
* Legacy (Java is everywhere)
&lt;/ul&gt;


Neal Ford er applikations arkitekt hos ThoughtWorks. Ud over at v&#230;re en eminent taler har Neal v&#230;ret rundt omkring og fx skrevet b&#248;ger som Art of Java Web Development. Han ramte p&#229; et &#248;mt sted. Hvordan ved man at ens javascript virker? Av den sad. &quot;Selenium&quot;:http://www.openqa.org/selenium er et test v&#230;rkt&#248;j der simulere en webbrowser og s&#229; kan invokere b&#229;de html sider og Ajax komponenter hverfor sig. P&#229; samme m&#229;de kan man teste sine javascripts uden at teste underliggene bibliotek med. Neal er en forn&#248;jelse at h&#248;re p&#229;, man tr&#230;kkes gennem sjove episoder og 50 min g&#229;r alt for hurtigt. Som en side gevinst blev Firebug plugin Firebug brugt til gr&#230;nsen. Sejt     


</body>
    <category-id type="integer">3</category-id>
    <created-at type="datetime">2007-09-20T03:54:00Z</created-at>
    <id type="integer">69</id>
    <post-id type="NilClass">69</post-id>
    <published type="boolean">false</published>
    <tag-id type="NilClass">42</tag-id>
    <title>RalisConf Europe 2007 Wrap up</title>
    <updated-at type="datetime">2008-02-18T01:46:41Z</updated-at>
  </post>
  <post>
    <body>Efter min mening var TSSJS 2007 en succes. De helt store udtalelser kom fra bla. Martin Fowler, John Davies, Neal Ford, Ted Neward og &#229;rets helt store overraskelse Ola Bini.  

Der er altid et element af hygge over TSSJS. Selve konferencen er s&#229; tilpas lille at man nemt kan networke med alle. Vi er tre tidligere kollegaer fra Javahouse som taget denne tur sammen flere gange. Det giver god lejlighed til at batche hinanden med alle typer af teknologi sp&#248;rgsm&#229;l men den helt store fordel er vigtigheden af at kunne vende de mange informationer med hinanden. 

Man kunne fristes til at tro at de ca. 70 foredrag fordelt over 3 dage ville give en masse nye vinkler og viden om specifikke produkter. Det var ikke tilf&#230;ldet i &#229;r. Der var meget f&#229; nye produkter men et par nye m&#229;der at benytte gamle p&#229;, bla. Ajax Push teknologi.

Parallelisering af processer. Vores maskiner bliver fulde af CPU'er og vi skal kunne udnytte dem. Flere fordrag var rettet imod den nye Java 1.5 concurrency pakke. Desv&#230;rre er abstraktions niveauet stadig alt for lavt og vi som udviklere skal vide alt for meget om locks og monitors. Heinz Kabutz havde fundet en par nye love om parallelitet bla The &#8221;Law of Greek Driving&#8221;

Den st&#248;rste skuffelse kom fra en paneltalk der som udgangspunkt skulle pr&#230;cisere hvor fremtiden for Java findes. Fedt, jeg s&#229; frem til at h&#248;re fra de mest innovative mennesker p&#229; dette sp&#248;rgsm&#229;l. Det var katastrofalt. Det var kun Ola Bina og Martin Folwer som kunne sige noget fornuftigt om fremtiden, de andre som var i panelet havde ikke en eneste ide om hvor de er p&#229; vej hen. Min fortolkning af dette er at Java er d&#248;d. Hvis man ikke kan udstikke en form for retning hvorimod man arbejder er det bare slut og sproget er legacy. Men Java som platform kan leve mange &#229;r endnu. P&#229; sp&#248;rgsm&#229;let om hvordan Java ser ud i &#229;r 2020 svare Ola Bini overbeviseene, JVM'en lever men du vil ikke kunne genkende den!

Jeg var lidt forundret over at sproget Scala ikke blev n&#230;vnt mere. Det fungere p&#230;nt som en abstraktion over Java syntaksen og er mere powerfuld. 

Ted Neward var hurtig i sit svar om SOA. En l&#248;st koblet applikation med SOA. hmmm Ted mener ikke at SOA er l&#248;sningen men en af de mere pr&#230;cise definitioner er b&#229;de bedre og hurtigere. Faktisk er sp&#248;rgsm&#229;let om man har en eneste fordel ved en l&#248;s koblet applikation ud over at ingen kan bruge den f&#248;r den bliver fast koble, fx med en WSDL? Ted har for&#248;vrigt en rammende om hvorfor alle altid f&#248;lger Gatner. Jeg ved det ikke, men han har ret. 

Som jeg ser det, er det virkelige problem begr&#230;nsning. Hvis man ikke t&#248;r begr&#230;nse sig til en l&#248;sning m&#229; der laves en mere &#229;ben indgang hvilket passer perfekt til SOA. Det uheldige ved denne fremgangs m&#229;de er at den aldrig bliver f&#230;rdig.

RiFE web framework imponere mig. Det er basseret p&#229; metaprogrammering, continuations og scaffolding crud. Jeg er overbevist om at vi kommer til h&#248;re meget mere til dette. Gert Balvin viste en demo k&#248;rende p&#229; Terracotta med tre maskiner. Sejt. 



</body>
    <category-id type="integer">3</category-id>
    <created-at type="datetime">2007-07-02T04:35:00Z</created-at>
    <id type="integer">55</id>
    <post-id type="NilClass">55</post-id>
    <published type="boolean">false</published>
    <tag-id type="NilClass">42</tag-id>
    <title>TheServerSide Java Symposium</title>
    <updated-at type="datetime">2008-04-03T08:57:25Z</updated-at>
  </post>
</posts>
