3:e Maj – Åter en kväll att minnas!

No Gravatar

Nu är det åter dags för en inspirationsafton av stora mått. Javaforum och nForum samkör sina teknikseminarier 3:e maj i Folkets hus vid Järntorget i Göteborg.
Denna gång behandlas allt från modularitet på JVM’en och case-studies ur veckligheten till scenario-testning och säkerhetsaspekter på .net-plattformen.
Agenda och anmälan hittar ni på respektive site. Som vanligt räcker det att anmäla sig på ett ställe för att sedan kunna växla mellan spåren efter behag.

Kvällen arrangeras av Squeed och sponsras av Experis.

Dela gärna med dig av denna flyer.

Vi ses där!

Got.clj – uppstart av en Clojure grupp

No Gravatar

Got.clj hade sitt uppstartsmöte i onsdagskväll. Got.clj är en användargrupp för Clojure och träffen hölls i Squeeds lokaler. Eftersom jag själv är intresserad av att lära mig mera om just Clojure var det ett bra tillfälle för mig att fräffa likasinnande.

Efter att vi fått en presentation om Clojure och diskuterat saker rörande gruppen så började vi titta på hur vi satt upp våra utvecklingsmiljöer. Det var intressant att få demonstrerat hur en Emacs/Clojure miljö fungerar. Emacs är riktigt kraftfullt i händerna på de som bemästrar den. Själv så tänker jag vänta med Emacs prylarna och fokusera mer på språket. Jag kunde visa upp min konfiguration med Eclipse med Counterclockwise pluginen. Eftersom jag dagligen jobbar med Eclipse så känner jag igen mig där och Clojure stödet är fullt tillräckligt för mitt använde. Det var riktigt kul att en annan deltagare laddade ner och satte upp samma konfiguration. Folk fick hjälp med att komma igång och att fixa till det där som annars brukar att strula när man sitter själv med det.

Vi tittade på 4Clojure som är ett sätt att lära sig språket på. Där finns problem att lösa i olika svårighetsgrader. Själv så har jag gått igenom en del av problemen och ofta när jag känner att de blir kluriga så har jag hittat en ny del/funktion i språket att lära mig.

Sedan fick vi demonstrerat ett grafiskt program som en deltagare skrivit ihop. Koden delades i gruppen och vi kunde köra det i våra egna miljöer. Programmet använde sig at Quil vilket verkar att vara ett kraftfullt lib för grafik. Det hade vart kul att få se fler liknande demonstrationer och grafisk programmering imponerar alltid.

Gruppen visade sig bestå av allt från sådana som aldrig provat på språket till dom som hade mycket erfarenhet. Själv så hoppas jag få tillfälle att delta på flera träffar med den här gruppen. När jag gick där ifrån så kände jag mig inspirerad att fortsätta lära mig språket. Om du är intresserad så gå in på Got.clj och boka in dig på nästa träff.

En samling med collection

No Gravatar

Jämför

HashMap<K,ArrayList<V>> things = new HashMap<K,ArrayList<V>>();
private void add(K key, V thing) {
  ArrayList<V> thingsForKey = things.get(key);
  if (!things.containsKey(key)) {
    thingsForKey = new ArrayList<V>();
    things.put(key, thingsForKey);
  }
  thingsForKey.add(thing);
}

med

HashMap<K,ArrayList<V>> things = new HashMap<K,ArrayList<V>>();
private void add_New_Style(K key, V thing) {
  if (!things.containsKey(key)) {
    things.put(key, new ArrayList<V>());
  }
  things.get(key).add(thing);
}

Den första varianten ser man ofta, och jag har själv använt den. Häromdagen upptäckte en kollega och jag att vi, utan att tänka på det, skrivit variant 2. (Vi arbetade testdrivet just där). Snyggare och enklare tycker jag. Ingen stor skillnad iofs, men ändå.

Software Passion

No Gravatar
Hotel Post

Hotel Post

I början av denna vecka hölls den av DFind Redpatch och oss på Squeed ordnade konferensen Software Passion Summit. Det var premiär för den nu i år och platsen var det fina nyrenoverade Hotel Post mitt i centrala Göteborg.

Jag valde tisdagen som konferensdag eftersom den hade flest lockande agaila föredrag.

Keynoten på tisdagen med Gojko Adzic var lättlyssnad med intressant innehåll som var lätt att relatera till. Han sa att han jobbade med software delivery vilket är ett mycket trevligt begrepp. Det är alldeles för lätt hänt att man bara gör software utan att komma till delivery!

Han berättade om företag som trodde att de var agila och körde scrum med iterationer på ett par veckor men som i själva verket inte släppte ut något i produktion mer än var två-och-ett-halfte-år. Det låter lite galet men är inte alltid så långt ifrån verkligheten. Ett bra citat som jag tog med mig var att scrum och kanban bara är speglar där man tydligare ser en del av verkligheten. Men man väljer själv vilket område man vill spegla, och där ligger en stor risk att man sätter spegeln på en del av sin process som ser fin och bra ut, till exempel utvecklingsiterationerna, när man egentligen skulle speglat hela cykeln fram till produktionssättning. Han menade också att enligt forskningen praktiserade de flesta organisationer “water-scrum-fall-metoden”.

Tom Gilb

Tom Gilb

Andra intressanta föredrag ur min synvinkel höll Tom Gilb, Jakob Mattsson och Nick Oostvogels. Tom Gilb trashade det agila manifestet med huvudpoängen att vi ska sträva efter ingenjörsmässigt mätbart värde för intressenter, inte bara leverera fungerande kod. Han kallar sitt koncept för Competitive Engineering som är en iterativ metod där även intressenter omvärderas med jämna mellanrum. Jag gillar detta eftersom han presenterar en metod att arbeta med att fylla på produktbackloggen på ett strukturerat sätt som man kan mata scrum-teamen med.

Soffhörna

Soffhörna

Jakob Mattson är en lokal programmeringsspråknörd — i positiv bemärkelse — som diskuterade på ett närmast filosofiskt sätt om olika programmeringsspråk, främst dynamiska.

Nick Oostvogels från Belgien pratade om Kanban med upplägget att ta död på fem vanliga argument mot detsamma. Han har en blogg som verkar läsvärd.

Flera av föredragen hölls i små lokaler som blev knökfulla så att folk fick stå, men sammantaget var det en bra konferens i härlig miljö och med många tankeväckande föredrag!

Upstart och Tomcat

No Gravatar

Ett sätt att starta Tomcat som en tjänst på en Linuxmaskin med Upstart (Ubuntu, Red Hat EL 6, ev Debian och Fedora). Först installation (utan att verifiera med PGP eller MD5):

$ sudo -s
[sudo] password for your_username:
# useradd tomcat --home=/opt/tomcat --shell=/bin/false
# cd /opt
# curl http://apache.dataphone.se/tomcat/tomcat-7/v7.0.26/bin/apache-tomcat-7.0.26.tar.gz | tar xz
# mv apache-tomcat-7.0.27 tomcat

Och sedan själva Upstart-konfigurationen, /etc/init/tomcat.conf:

# Tomcat config

description    "Apache Tomcat Server"
author         "My Name "

start on runlevel [2345]
stop on runlevel [!2345]

respawn
umask 022

# in case someone plays as root ...
pre-start script
    chown tomcat:tomcat -R /opt/tomcat
end script

exec sudo -u tomcat /opt/tomcat/bin/catalina.sh run

Sedan kan man styra tomcat med (sudo) start|restart|stop tomcat om man skulle behöva, liksom kolla (sudo) status tomcat för att se om om den startats eller ej.

Presentation av Andreas Brink på Javafroum

No Gravatar

Refactoring Toward Deeper Insight

DDD Findings in Batch Processing, a Case Study When I was introduced to the Domain-Driven Design (DDD) approach close to ten years ago, it provided me with some of the missing pieces I needed to implement Object-Orientation in an effective way. And over the years I’ve been coming back to Eric Evans’ very rich and deep book many times to discover something new to help me design better software – thinking tools and practical design advice, in the small and in the large. Over the years Object-Orientation has become less important to me, but DDD is still my default starting point when I am helping teams to refactor their architectures and take control over their code bases. Many teams have already made attempts to implement DDD, but very often they don’t get the effects they were hoping for. It turns out that DDD is hard to get right. In a current project I have been involved in yet another effort to implement DDD on a legacy code base. And I have made some interesting findings. Batch processing scenarios opened up my eyes to some intrinsic problems with the DDD approach. Issues that have been have been nagging me over the years became very clear. And yet again I managed to gain deeper insight in the DDD approach and come up with some quite interesting ways to implement it.