Mats Henricson

Mats Henricson

Saker som blippar på min radar

Så köper man en standard + svart lista

Microsoft har under en tid försökt göra sin ofullständiga standard för dokument, OOXML, bli standard, i ett desperat försök att stoppa ODF, ett sedan tidigare standardiserat dokumentformat som bland annat Open Office stödjer.

Sverige (genom SIS) hade ännu inte tagit ställning, utan mötet tog plats idag. Det visade sig att över 20 företag plötsligt hade bestämt sig för att betala 17.000 kronor för att bli medlemmar i SIS, och de röstade alla JA till OOXML. Ett antal företag, bland annat IBM, bestämde sig för att lämna mötet innan omröstningen, eftersom det hela uppenbarligen var en fars.

Här är listan på företag som uppenbarligen köpts upp av Microsoft. Skam skam skam!

  • Exor AB
  • Formpipe software AB
  • H-Vision AB
  • HP
  • Cybernetics
  • Ibi2kitAB
  • Readrift AB
  • Emric AB
  • Strand Interconnect AB
  • Nordicstation AB
  • Sourcetech AB
  • Cornerstone Sweden AB
  • Solid Park AB
  • Fishbode systems AB
  • FSSystem AB
  • KnowIT Sverige
  • Modul 1
  • IDE Nätverkskonsulter
  • Connecta AB
  • Camako Data HB
  • Sogeti AB
  • Tieto Enator Corp.

Jag kommer i alla fall att försöka undvika dessa företag i framtiden!

Här finns mer information för den som är intresserad.

Detta har hänt i sommar

För er som inte knarkar tekniknyheter lika okontrollerat som jag gör har jag nöjet att få summera de senaste 5-6 veckorna inom områdena Java, Ajax, Scrum och annat av intresse. Tro mig, jag har gallrat stenhårt.

  • JUnit 4.4 släpptes nyligen. Nyheterna var inte speciellt upphetsande.
  • En av mina favoritbloggare, Cederic Beust, har skrivit om dynamiska och statiska språk. Inte mycket text, men mycket intressant. Väl värt ett par minuter.
  • Av någon anledning är kodformattering mig nära hjärtat, så det var med visst nöje jag noterade att Slashdot hade en tråd om detta i somras. David Herron har bloggat i samma domäner, vilket är kul, även om han verkar ha snott titeln på sitt inlägg från mig.
  • Medlemmar från Ajax-ramverket Dojo har skrivit en artikel med namnet "Why Dojo", som jag tror alla som står i valet och kvalet att välja Ajax-ramverk nog bör läsa. Dojos event-modell är väldigt cool, och tydligen har den blivit extra bra i senaste 0.9 versionen av Dojo.
  • En annan Ajax-artikel med namnet "Write scalable Comet applications with Jetty and Direct Web Remoting" borde intressera alla som försöker välja Comet-ramverk. Go DWR Go!
  • ThoughtWorks har släppt en "agile project management software" med namnet Mingle. Vet inget mer om detta, men Henrik kanske känner sig manad?
  • Matt Raible har summerat "Open Source Web Frameworks’ Mailing List Traffic – June 2007", dvs hur mycket trafik är det på de olika ramverkenas mailinglistor. Ganska intressant, om man försöker avgöra vartåt det blåser. Till min stora glädje ligger Wicket bra till, Liksom GWT, men mest trafik har Ruby on Rails, vad man nu kan dra för slutsatser av det?
  • W3C funderar på att inte låta HTML 4 övergå till XHTML, eftersom de verkar vilja göra en femte version av HTML. Vad ska man tro om det?
  • Specifikationen för Java EE 6 har släppts. Troligen kommer de första implementationerna först i början av 2009.
  • Jag försöker hålla ett öga på vad som skrivs om Scala, då jag fått intrycket att det kanske är ett bra språk för framtidens multi-core processorer, så artikeln "Is Scala the new Groovy" kunde jag naturligtvis inte undvika. Sedan finns det de som tror att Terracotta är rätt väg att skriva multi-core applikationer i Java, så "Hello Terracotta" kanske är rätt ställe att börja?
  • Vill man läsa mer om JavaScrips framtid så kan man läsa här. Daniel?
  • För oss anhängare av Google Calendar är nog artikeln "Black belt scheduling with Google Calendar" oundviklig.
  • Vad kommer efter social networking? Själv har jag inte en aning, eftersom jag känner mig helt bakom flötet när det gäller Facebook, YouTube, MySpace, Twitter, etc etc etc.

Privat har jag varit en vecka i Småland, 4 veckor i Thailand, samt en vecka i Västerbotten, där jag och mina två söner besteg fjället Jengegietje, 1477 meter över havet, i lysande väder. Shorts och T-tröja räckte på toppen!

Om att parsa CSV filer

Att parsa CSV (Comma Separated Values) kan tyckas trivialt:

Bananer,3,22.30

Men om man vill tillåta komman i värdena, så blir det inte lika roligt:

Bananer,3,"22,30"

Jag browsade runt lite på nätet och fastnade för opencsv. Det är

  • Open source
  • Väldigt litet (2 klasser, en JAR fil på 16 KB)
  • OK dokumentation
  • Version 1.7, dvs inte beta
  • Utvecklaren har en aktiv blog
  • Populärt (ca 50 nerladdningar per dag på SourceForge)

Som genom magi fick jag samtidigt ner en lista på de kriterier jag använder när jag utvärderar ramverk! :-)

XX Framework – ett nytt webbramverk för Java

Eller nytt och nytt, har funnits i ett drygt år, verkar det som, men jag har aldrig hört talas om det förut. XX i XX Framework står för XML och XSLT.

The primary goal of the XX Framework is to handle typical application CRUD (create, retrieve, update, delete) with little or no Java programming. Instead of telling the application how to retrieve and how to display the data, we configure what to retrieve (through XML) and what to display (through XSLT).

Inget om man har aversioner mot XML, tydligen, men kanske helt rätt om enkel CRUD är ens sweet spot. Fast då kanske man ska använda Trails istället?

Kanske är det Scala?

Jag har tidigare bloggat om vilket språk som kanske kan ta oss med i multi-core racet. Erlang skulle kännas som ett nederlag (några av er kanske förstår varför). Ruby hypas ofta som nästa stora språk, men är det något att hålla i handen när man surfar loss på flera cores? Jag tvivlar, av ren princip, utan att egentligen veta. När ska man få vara ologisk och partisk om inte vid valet av nästa språk att riskera sin karriär på?

Så nyss bankade jag pannan i en artikel skriven av Bill Venners, Martin Odersky och Lex Spoon med namnet First Steps to Scala. Inledningen är mycket intressant:

Scala is a statically typed, object-oriented programming language that blends imperative and functional programming styles. Scala is designed to integrate easily with applications that run on modern virtual machines, primarily the Java virtual machine (JVM). The main Scala compiler, scalac, generates Java class files that can be run on the JVM. However, another Scala compiler exists that generates binaries that can be run on the .NET CLR, as Scala is designed to integrate with both the Java and .NET worlds. In the Java world, the Scala language can be used alongside the Java language—either as an alternative to Java—to build applications that run on the JVM.

Scala was developed starting in 2003 by Martin Odersky’s group at EPFL, Lausanne, Switzerland. Previously, Martin had been active in the Java field. He co-designed the first version of Java generics and was the original author of the current javac compiler. The work on Scala was motivated by the desire to overcome limitations imposed by backwards compatibility with Java. So Scala is not a superset of Java, but it retains seamless interoperability.

Mmmm, kanske en Rocket Day om detta i Crisps regi?

Spring Batch ser lovande ut

På mitt nuvarande uppdrag hos Keybroker har vi skapat ett rätt avancerat batch-processing ramverk, byggt på Spring och Quartz. Nu verkar det som om Spring håller på att bygga ett eget sådant ramverk med namnet Spring Batch. Deras arkitektur ser lovande ut, men tyvärr finns inte så mycket på plats ännu.

Egentligen ser jag detta som ett misslyckande för Quartz, för det var länge sedan jag stötte på ett ramverk som var i så desperat behov av en arkitekturell översyn. På ytan ser det enkelt ut, men ju djupare man dyker i dess features, ju mer desperat blir man. Den nya RetryPolicy klassen ser ut att kunna ta bort orsaken till mycket av den tandagnisslan jag tvingats göra den senaste tiden.

Too Rich For My Taste

Steve O’Grady gör under rubriken Too Rich For My Taste: The RIA Q&A ett passionerat och välformulerat försvar av den öppna webben, dvs HTML, CSS, JavaScript, och därmed också Ajax. Han menar att Silverlight, Flex/Apollo och JavaFX är fel väg, och han tror inte heller att de kommer att lyckas med annat än bli niche-spelare. Han citerar också en massa folk med liknande åsikter. Kommentarerna är också läsvärda! Kanske det intressantaste jag läst denna månad.

Nu ska jag cykla Vätternrundan! Önska mig lycka till! Jag behöver det…

Vilket språk tar oss med i multicore racet?

Alex Blewitt har bloggat med rubriken Programming languages and the multi-core revolution. Han förutspår att ett meddelandebaserat språk utan sidoeffekter, exempelvis Erlang, skulle kunna ge oss det stöd vi behöver för att kunna skriva kod som på ett bra sätt kan utnyttja framtidens multi-core processorer. Vad tror ni?

Characteristics of a Good DAO

Eric Burke har i sin blog skrivit ner 13 saker man bör tänka på när man skriver sina DAO (Data Access Object) klasser. Det verkade vara en bra sammanfattning, tyckte jag.

Många jQuery exempel

Här finns en uppsjö av välgjorda Ajaxexampel i många kategorier.

JavaScript för Java programmerare

Min kollega Daniel Sundman har skapat en mycket bra presentation av JavaScript, utifrån en Java programmerares synvinkel. På vilket sätt är språken olika, vad kan man göra för coola grejer i JavaScript, och hur gör man generellt olika saker i det språket? Det bästa med presentationen är att den är gjord för att köras i Firebug, Firefox JavaScript debugger! Man startar helt enkelt Firebug, öppnar Daniels presentation (som naturligtvis är i HTML format med embeddad JavaScript) och stegar sig igenom den annoterade koden. I konsollen kan man sedan se resultetet. Många gånger sker inte alls det man väntar sig!

Nästa gång jag ska göra något som inte är trivialt i JavaScript kommer jag att fräscha upp mina kunskaper genom att stega mig igenom hans presentation.

Här finns för övrigt en massa annat Crisp material som borde kunna intressera Java programmerare i största allmänhet.

Crisp, Scrum och Jeff Sutherland

Även om en del Crispare var tidigt ute med Scrum, framför allt Henrik Kniberg, så var jag själv initialt skeptisk. Efter Henrik bestämde sig fyra andra Crispare (Jan Grape, Mats Strandberg, Magnus Axelqvist och Hans Brattberg) att gå certifieringskursen i Uppsala för ett år sedan. Jag tackade nej med motiveringen att "Scrum känns som en snedpassning ner i projektledarträsket" – ett uttalande jag fått äta upp vid ett flertal tillfällen. Men jag bjuder på det, för Scrum känns nu som ett självklart sätt att utveckla mjukvara.

När sedan Henriks bok "Scrum and XP from the trenches" blev en sådan internationell hit, så började Crisp mer och mer framstå som det starkaste Scrum-nästet i Stockholm. Våra konsulter anlitas på flera ställen som Scrum Masters, och Henrik håller företagsinterna Scrum-kurser nästan varje vecka.

Nu har Jeff Sutherland, en av de två grundarna av Scrum, bestämt sig för att hålla upprepade CSM kurser genom Crisp, samt ett Scrum-seminarium den 30:e maj. Vår ambition är nu, inte helt oväntat, att bli det starkaste Scrum-företaget i Sverige. Vi har bredden, djupet och höjden för att spänna upp en större Scrum-rymd än något annat företag i Sverige. Vi tycker redan att vi är bland de allra bästa på Java och Ajax, så Scrum känns helt rätt. Hör av er om ni vill vara med på vår resa! Vi på Crisp tycker det är spännande att vara konsulter just nu.

Silverlight

Microsoft är på väg att släppa något de kallar Silverlight version 1.1. Det hette visst något annat förut, men de har skakat fram ett namn som kanske slår lite bättre. Några påstår att det kommer att slå ihjäl Ajax, eller Flex/Flash, eller båda. Jag tror inte att något av det kommer att lyckas, av några anledningar:

  • Det är inte öppna protokoll eller miljöer
  • Det finns just nu inget stöd för Linux
  • Flash har redan ett otroligt brett stöd i alla browsers
  • Det är inte den öppna webben, utan den exekverar i en 4+ MB stor plugin
  • Det kan inte indexeras av sökmotorer
  • Alla (eller i alla fall väldigt väldigt många) misstror Microsoft

Jag tror därför inte att det blir en särskilt stor hit.

DWR 2.0!

Mitt favoritramverk för Ajax, DWR, har precis kommit i version 2.0, efter flera månaders försening! Massor med verkligt coola nya grejer, bland annat:

  • Reverse Ajax, så att man kan skriva DOM-manipulering i Java, som genererar JavaScript som exekveras i browsern
  • Comet, dvs asynkron push av data från server till klient
  • Script.aculo.us stöd, på servern

Arkanoid / Breakout i DHTML/Ajax

Många spel har under det senaste året konverterats till Ajax, ändå blev jag förvånad när jag upptäckte att någon på Yahoo gjort en riktigt bra version av Breakout i JavaScript. Tanken svindlar vid tanken på hur mycket jobb det måste ha varit.

Ant eller Maven?

Matt Raible har summerat konverteringen av AppFuse från Ant till Maven. Vad kan man säga, annat än "Hjälp"?

Suger JSF?

Matt Raible, han som startade AppFuse, har bloggat med rubriken "JSF still sucks?" Jag har själv inte använt JSF i produktion, utan bara labbat med det, och inte speciellt gillat det jag sett. Någon med avvikande åsikt?

Closures för Java SE 7

Jag har inventerat de artiklar som finns på nätet som beskriver de fyra (!) olika förslag som finns på hur closures ska se ut för Java. Jag tror att dessa fyra artiklar bäst beskriver vad som är meningen, och hur det kan bli i Java SE 7:

http://artima.com/weblogs/viewpost.jsp?thread=202004
http://crazybob.org/2006/10/java-closure-spectrum.html
http://getahead.org/blog/joe/2007/03/15/emerging_java_technologies_at_qcon.html
http://gafter.blogspot.com/2006/08/whats-point-of-closures.html

Prototype Graphic Framework (PGF)

Ett av de stora problemen med Ajax är att det inte funnits ett Canvas man kan rita på. Eller problemet har väl snarare varit att man inte kunnat lita på vilket Canvas som finns hos klienten. I Firefox finns SVG, i Internet Explorer finns VML. Aldrig mötas de två, så vad gör man om man vill rita grafer och annat, och inte vill överge den öppna webben och börja med Flash? Jo, nu finns Prototype Graphic Framework som inte helt oväntat bygger på ramverket Prototype. Det erbjuder en syntax för att rita grafer, som sedan i botten använder sig av SVG i Firefox och Opera, men VML i Explorer. Detta kan visa sig vara ett viktigt steg i framtidens Ajax!

JSLT – ett javascript-baserat alternativ till XSLT

Jag har alltid varit skeptisk till X-et i Ajax, dvs XML. Varför skapa och skicka ett så bökigt format som XML från servern, för att sedan processas i JavaScript, ett språk som inte så många är duktiga på? Nu har Rik Arends skapat JSLT, som ger möjlighet att processa XML med hjälp av JavaScript-syntax som liknar XSLT. Nu är XSLT i och för sig ett språk som inte ens en mor kan älska, men det kan vara väldigt kraftfullt vid rätt tillfälle.

Ajax Canvas exempel

Ett ganska remarkabelt exempel som använder sig av SVG i Firefox och VML i Internet Explorer för att visa flygrutter på en Google karta. Tydligen används Bindows som Ajax-ramverk. Ta en titt på exemplet!

Flex2 jämfört med JavaScript/Dojo/Prototype/DWR

En grupp utvecklare bestämde sig för att pröva Flex2 för sin produkt, men kom fram till att det inte var stabilt nog för annat än små applikationer. De har nu gått tillbaka till kombinationen JavaScript/Dojo/Prototype/DWR, och är nu produktiva igen.

Semantic Spam

Stephen Downes bloggade om varför han ansåg att den semantiska weeben var dömd att misslyckas. Han har en hel del bra poänger, framför allt att han inte trodde företag skulle vilja komma överens om samma vokabulärer (vilket de i och för sig inte ska behöva göra enligt W3Cs förslag). Hur som helst så hamnade detta på Slashdot, och den efterföljande diskussionen (på nivå 4) var väldigt intressant. Bland annat fick jag lära mig ett helt nytt ord, sematisk spam! Det är när spammare lägger upp material på nätet som är helt korrekt enligt RDF och OWL, men som länkar till spam och elände.

Brendan Eich om den öppna webben

Hittade just Brendan Eichs blog, hjärnan bakom JavaScript. Jag lyssnade på ett keynote speech han höll för ett år sedan på konferensen The Ajax Experience, och hans berättelse om hur det gick till var rätt fascinerande. Jag fick intrycket att de hackade ihop allt på typ två veckor för att det skulle med en specifik release av Netscape!

Han jobbar just nu mest med JavaScript 2.0, men verkar involverad i mycket som pågår i och runt Firefox och webbstandards. Hans senaste blog, om den öppna webben, var mycket intressant. Han hävdar bestämt att Flash inte är bra för webben, så han torde inte heller vara alltför entusiastisk över Apollo.

Hur som helst så kläcker han ur sig tankvärdheter i en fart jag sällan sett. Några exempel:

Forking can be the right thing, or it can be a kind of mutually-assured-destruction option that keeps everyone acting in the interest of not forking.

I assert that there is something wrong with web-like "rich" formats that aren’t hyperlink-able or indexable by search-engines.

If I were VP of Engineering in a 10,000 person company, I would want the security blanket of the C-like syntax and a static type system for a well-known, big-bell-curve language like AS3, C#, or Java.

Väldigt intressant artikel!

A Relational View of the Semantic Web

Hur ska man kunna göra queries på data i den semantiska webben, om datat inte alltid följer samma definition av datat? En artikel på XML.com försöker reda ut hur det kan fungera i en modell med många NULLs. Kan man göra queries ändå, när man istället för en relationsdatabas har en databas av tuples? Ibland blir det lite väl teoretiskt för mig, men intressant.

Är Wicket nästa stora webbramverk för Java?

Genom åren har jag skrivit webb applikationer med Servlets, JSP och nu senast Tapestry, som jag länge sett som det bästa av dem alla, mest för att det är komponentbaserat och för att template filerna är plain vanilla HTML. Min senaste brottningsmatch med Tapestry var tyvärr inte helt angenäm. Ofta var det enkelt att använda, men ibland blev lösningarna oroväckande bakvända. Dokumentationen för Tapestry är inte heller helt tillfredsställande, och jag förstår fortfarande inte page rewinding!

Sedan Wicket kom för något drygt år sedan har jag varit mycket sugen på att prova det. För några veckor sedan såg jag ett Java jobb här i Stockholm där de sökte personer kunniga i Wicket!

Hur som helst så har Peter Thomas skrivit en lång utvärdering av Wicket gentemot Spring MVC, och från min synvinkel är den ganska rättvis. Jag har bara sett Spring MVC på avstånd, men inte blivit imponerad.

Assessing the Survivors of the Java IDE Wars

Det finns numera bara tre utvecklingsmiljöer kvar för Java: Eclipse, NetBeans och IntelliJ. (Sorry Oracle, men jag känner inte en människa som använder er IDE). Denna artikel utvärderar dem mot varandra på flera områden, och min slutsats är att IntelliJ är bäst, följt av NetBeans, medan Eclipse kommer sist, vilket inte förvånar mig. Det är inte helt lätt att avgöra vem totalvinnaren är, eftersom de har olika styrkor på olika områden, men jag ångrar inte de kronor jag lagt ut på min IntelliJ licens.

Ivar Jacobson gör en pudel!

Ivar Jacobson, Pan-Wei Ng, och Ian Spence har just publicerat en ganska lång artikel i DDJ med namnet Enough of Processes: Let’s Do Practices, Part I. Det är, förvånande nog, ett ganska ärligt erkännande att dagens processer för mjukvaruutveckling inte fungerar.

In the first installment of this two-part article, we examine the issues facing the current generation of processes and show why we have all had enough of them.

Ett ganska häpnadsväckande uttalande från skaparen av RUP! Artikeln räknar upp många anledningar till varför processer i dagens mening har problem, och presenterar sedan en teaser till något de kallar Practices, men väntar med att förklara vad de menar till den ännu opublicerade Part II av artikeln.

I någon mening är det kanske intressant vad de har i kikaren, men det verkar trots allt som om de egentligen inte vet vad de talar om.

The industry is not really getting any better at developing software

Really? Jag tycker Scrum, XP och TDD är väldigt tydliga och rejäla steg i rätt riktning.

VÄLDIGT snygga Ajax widgets (med kod) från Yahoo

Yahoo har släppt något de kallar Ext 1.0, där det medföljer en uppsättning exempel som är mycket snygga. Navigera ner i något av foldrarna och klicka på HTML filerna, så får ni se hur snyggt det går att göra Ajax-widgets. Här är några exempel.

Auto-scrolling page navigation

Tobie Langel har skrivit en mycket instruktiv artikel (med det fyndiga namnet "A fistful of $$") för hur han hackade ihop JavaScript koden till auto-scrolling page navigation, så att texten auto-scrollar (istället för att bara hoppa) när man klickar på en länk som pekar till ett ankare på samma sida. Det enda man behöver göra är att lägga till hans JavaScript voodoo i headern, och off you go. Prova den här.