30 september, 2010

Insiktsfullt om jobbet som programmerare

http://agile.dzone.com/articles/youre-bad-programmer-embrace

Artikeln beskriver några saker alla vet borde fixas till innan kodandet drar igång, men ganska få har orken att genomföra dem (enhetstester, byggserver, skriptade deployments, 'code-coverage'-tools osv.).

29 september, 2010

10/GUI

Jag ramlade på den här intressanta filmen/projektet för ett tag sedan. Den kommer från 10/GUI och försöker ge ett alternativ till musen som interaktionsmedel (vilket visar sig vara lättare sagt än gjort!)


Spring Framework


I mitt dagliga arbete jobbar jag främst med JEE och 'standarder' inom dess sfär. Om vi pratar system med transaktioner brukar verktyget vara EJB's som anropar någon sorts datakälla/tjänst. För att vidga mina vyer gick jag SpringSource´s officiella Core Spring-kurs innan sommaren.
Spring har varit väldigt hajpat under ganska lång tid så jag hade ganska höga förväntningar på kursen och Spring som ramverk, men jag måste säga att jag blev ganska besviken. På flera punkter.

  1. IoC/Dependency Injection: Spring´s modell för DI känns föråldrad eftersom jag jobbat en del med Google Guice innan. Konfiguration i en stor XML-fil är något man till stor del lämnat inom JEE-världen, men tydligen inte inom Spring. Kompilatorstöd någon? Typkontroll? Refactoring? Allt detta tappar man när bindingen sker i en XML-fil. MEN... Detta har Rod och grabbarna på SpringSource givetvis fattat,  detta är nästa punkt i min lista.
  2. STS (SpringSource Tool Suite): SpringSource har byggt en egen IDE som bygger på Eclipse. STS har de features som jag saknar ovan. Men jag vet inte, det känns inte riktigt som rätt väg att gå. Det känns nästan som den klassiska boken Core J2EE Patterns som kändes mer som ett sätt för SUN att "rätta till" de värsta problemen i J2EE-plattformen (EntityBeans som tungt exempel). Vissa av de patterns som listas i boken är skrattretande, "Fast Lane Reader" någon?
  3. Spring Web MVC: Struts 1 all over again, känns fullständigt passé.
Däremot finns det några riktigt guldkorn i Spring. Ett av dem är definitivt Spring JDBC. Denna del av Spring borde egentligen vara en del av JDK'n för att den sköter JDBC-hanteringen (speciellt felhantering) perfekt, klockrent! En annan del av Spring jag gillar är Spring Remoting, Spring's sätt att kommunicera med andra system/protokoll sköts mycket snyggt och enhetligt. Klienten behöver inte veta vilket kommunikationsprotokoll som används, snyggt! Man kan enkelt växla mellan RMI, HTTP Invoker (Spring's egna protokoll över HTTP, väldigt effektivt), Hessian (Binärt protokoll över HTTP, mycket effektivt), Burlap (XML-baserad serialisering över HTTP), JMS och Webservices. Stiligt.

Slutsatsen från min exkursion i Spring är att Spring har sina guldkorn, som kan användas separat (t.ex. Spring JDBC). Det känns dock som att Spring blivit den "beast" som man ville bekämpa (J2EE, krånglig konfiguration i XML osv.), numera finns det t.o.m. ett applikationsserver för Spring. JEE har tagit mycket inspiration från Spring och det känns som att JEE gänget går från klarhet till klarhet. Spring kommer helt klart få problem att attrahera utvecklare i framtiden, speciellt när JEE 6 kommer.

Men, jag skulle vilja testa Spring i något riktigt projekt för att se hur det är i verkligheten för en kurs är bara en kurs.

23 september, 2010

Yahoo! Pipes

Idag satt jag och funderade på hur jag skulle kunna aggregera flera RSS-feeds och visa dem här på sidan. Detta gjorde att jag hittade Yahoo! Pipes. Det verkar riktigt smidigt vid en första anblick. Tanken är att man via ett GUI kan skapa skapa ett "superfeed" som sedan kan delas/visas (t.ex. på denna sida).

I mitt fall ville jag visa upp några av de utvecklarfeeds jag följer med Google Reader, men hittade inget bra sätt att visa upp flera källor i samma feed, pipes to the rescue.
Screenshot från Yahoo! Pipes

Det var en enkel match att skapa ett nytt, aggregerat feed av flera existerande. Pipes erbjuder även en kraftfull filter-mekanism där innehållet kan filtreras på olika parametrar, feeds kan även översättas till ett annat språk via ett filter.