Välkommen till Umeå Java User Group, en grupp för alla som är intresserade av java och angränsande ämnen. Vi träffas andra tisdagen 18.00 varje månad.
  1. JUG-mötena handlar om nätverkande framför sälj och rekrytering
  2. JUG präglas av individer framför företag
  3. JUG handlar om kunskapsutbyte framför envägsinlärning

Låter det här intresant anmäl dig då antingen via vår googlegroup eller maila. UmeJUGs kalendern hittar du här.

onsdagen den 9:e maj 2012

Open Space med blixttal

På gårdagens träff testade vi OpenSpace med blixttal på 10 minuter.

Den här gången var det fem blixttal som tilläts dra ut lite på tiden. Förutom väldigt intressanta blixttal så blev det mycket bra diskussioner runt varje ämne, och vi kommer definitivt göra detta igen!

Här följer anteckningar från talen.

Smärta i enhetstesterna är symptom på sjuk design

Av: Markus Örebrand
Mer info: podcast - Sustainable TDD, avsnitt: Test reflexology
Bad Design != Good Design

Stor fixtur

Symptom: För hög koppling till beroende, high coupling.
Åtgärd: Gruppera med fasad eller aggregatrot, förenkla, bryt isär

Komplex fixtur

Symptom: Svart magi (reflection t.ex.) behövs i fixtur.
Sjukdom: Creation and usage not separated, cohesion problem.
Åtgärd: DI, ServiceLocator

Conditioning

Symptom: SUT (bil måste köra i 30 för att kunna testa varning)
Sjukdom: Business rule in wrong place, not explicit, Cohesion
Åtgärd: Make business rule explicit.

Överbeskyddande test

Symptom: Klass 50 rader, test 200 rader. Kombinationer
Sjukdom: SUT är både databas och sökmotor, SRP-violation, cohesion.
Åtgärd: Bryt isär.

Test coverage strategi - testpyramiden

Av: Jonas Andersson


Hur köteori kan eliminera planeringsbehovet

Av: Christina Skaskiw
Mer info:
The principles of product development flow, av Donald Reinertsson (motiverar Kanban ekonomiskt)
Kanban, av David Andersson

(Se även Naked Planning från Agile Toolkit Podcast)

Planering

Planering = Push, i motsats till Pull = Flow
Tar tid = waste, inte värdeskapande
Gissar
Tråkigt

Syfte: Förutsägbarhet

Kanban kan mha historik ge oss orsak till varianser
Historik är mycket mer vetenskapligt

Köteori

Start 1909 av Copenhagen telephone company
Cost of delay, i motsats till utilization, utnyttjandegrad, beläggningsgrad
Hög utilization → lite slack → längre ledtider
Ledtid (cycle time)
Ställtid
Mål: Sänk utnyttjandegraden, mer slack, mindre varians, mer förutsägbart flöde

Flow

Hur mycket blir klart / tid = flöde
Hur lång tid / grej = cycle time

Kanban i förvaltning

Av: Jonas Andersson

(Inga anteckningar)

Exception handling with ejb:s

Av: Jonas Andersson

 Exception handling basics

1. If you can't handle an exception, don't catch it.
2. If you catch an exception, don't swallow it.
3. Catch an exception as close as possible to its source.
4. Log an exception where you catch it, unless you plan to rethrow it.
5. Structure your methods according to how fine-grained your exception handling must be.
6. Use as many typed exceptions as you need, particularly for application exceptions.

EJB Specifics

 - Catch exceptions at EJB-boundary
   - ApplicationException
       - Caller's fault
       - No implicit rollback
       - If caught → Log at DEBUG and rethrow
   - System exception
       - Unrecoverable checked or unchecked exception.
  - Log at ERROR,  wrap in EJBException.

Checked vs Unchecked

- if there isn't anything you can do about an exception, it's a system exception
  and it should be thrown as an unchecked exception




torsdagen den 12:e april 2012

Robocode aka "Umejug is going ballistic"

Explosioner, förvirring och tillknycklad metall var temat för mars månads Umejug-träff.



Samuel Moritz och Markus Örebrand handledde prototypandet av sju Robocode-robotar, där grupper om två eller tre programmerade sin robot till att navigera slagfältet och skjuta på motståndare.

Robocode är ett spel som går ut på att låta deltagarna programmera beteendet på robotar, företrädesvis i Java. Robotarna möts sedan i ett alla-mot-alla-slag där roboten med högst poäng tar hem segern.

Inledningsvis hade robotarna ganska primitiva beteenden, till exempel: "Kör rakt fram, sväng höger ett halvt varv, skjut om något råkar dyka upp på radarn". Innan kvällens slut fick några robotar mer avancerade beteenden för bland annat målsökande och flykt/kringflackande.

Två skarpa slag utspelades under kvällen. Första slaget vanns av roboten "SuperRobot", andra slaget vanns av "TheKiller". Vinnarna fick ta emot applåder och priser mot att de avslöjade vilken strategi de valt.

Sogetis wifi och git-servern på Samuels laptop gick heta under kvällen, och innan kvällen var slut hade vi lärt oss en del nya saker om både git och trådlösa nätverk.

Gitrepot finns tillgängligt på github för den som vill ta vid där kvällen slutade:
https://github.com/umejug/umerobo

Inställningar för att dra in projektet i Eclipse finns i bilden till höger.

onsdagen den 14:e mars 2012

Git with Matthew

Ca 30 pers kom och lyssnade på den mycket passionerade och energirika Matthew McCullough. Det var en mycket intressant och intensiv hangout och vi kunde konstatera efteråt att alla var nöjda och gärna vill köra fler google hangouts. Matthew började övergripande och förklarade skillnaden mellan centrala repos som svn och distribuerade som git, och gick sedan vidare med process, live-demo och intressanta detaljer om bland annat komprimering, hashes, jGit etc.

Matthews slides kan du hitta på https://docs.google.com/open?id=0B4cff4pJTlNuSV9aX2FiQmRUd0N6d0g2eEZQbjExdw

//Jonas


torsdagen den 23:e februari 2012

Eftersnack: Java EE/Glassfish workshop med Arun Gupta

Ca 30 personer kom och lyssnade på Arun Gupta när han gick igenom hur man bygger en webapplikation från scratch med Java EE6 i NetBeans och löpande deploy:ar den i Glassfish. Vi fick bland annat:
- generera entiteter från databasschema
- skapa EJB som ansvarar för entitets-access.
- skapa en enkel servlet som använde EJB:n ovan för att skriva ut entiteter.
- använda JSF och facelets för att skriva ut entiteter snyggt.

Workshop:en var klart uppskattad. Tempot var högt, men de flesta stannade en timme extra, så energi och intresse fanns det gott om. Ett citat som jag tyckte var lite kul var någon som sa ungefär att "såhär celebert besök har vi inte haft sedan Linus Torvalds var här 1998" (med reservation för att både ordval och årtal kan vara fel :)

Mer detaljer kan du läsa på Arun Gupta:s blogg där länk till pdf med labben också finns, samt betraktelser om att besöka ett vintrigt Umeå. Infotech besökte oss också och skrev en artikel
Att ta med Arun på en skidtur var grymt kul både för honom och mig, jag hoppas att vi kan locka fler internationella talare till Umeå framöver.

Några bilder från infotechs artikel:

Arun Gupta
Java-evangelisten Arun Gupta, i mitten, tillsammans med arrangörerna Jonas Andersson och Mattias Sällström från Umeå Java Group.

Arun Gupta
Mycket road visade Arun Gupta hur han under dagen prövat längdskidåkning för första gången i sitt liv. Ett äventyr för en Java-evangelist från San Fransisco.  

söndagen den 5:e februari 2012

Java EE 6/GlassFish workshop with Arun Gupta

Torsdagen den 16:e februari har vi kanonbesök från San Fransisco!
Till vårens första träff får vi besök av Oracles JEE evengelist Arun Gupta. Arun är en välkänd talare vi Java konferenser världen över, han höll bla en teknisk keynote vid JavaOne 2011.

Swedbank sponsrar mat! Om du inte redan anmält dig så maila umejug+ee6workshop@gmail.com för att anmäla dig! (Max 50 deltagare)

Observera att den 16:e är en torsdag, Arun talar på JFokus (13-15:e) och kunde alltså inte komma tisdag :)

Arun kommer att hålla en Java EE 6 och Glassfish workshop motsvarande den på JFokus men förkortad, bio och info därifrån följer. Observera att om du vill vara med och koda så bör du ha en dator med Java och NetBeans installerad, se mer info nedan.

Tutorial: HANDS-ON LAB: Building an end-to-end application using Java EE 6 and NetBeans

The Java EE 6 platform allows you to write enterprise Java applications using much lesser code from its earlier versions. It breaks the "one size fits all" approach with Profiles and extensively improves on the Java EE 5 developer productivity features. Several specifications like CDI, JSF 2, EJB 3.1, JAX-RS, JPA 2, Servlets 3, and Bean Validation make the platform more powerful. It also enables extensibility by embracing open source libraries and frameworks such that they are treated as first class citizens of the platform. NetBeans, Eclipse, and IntelliJ provide extensive tooling for Java EE 6.
This hands-on lab builds a complete end-to-end application using all different technologies of Java EE 6 with NetBeans. You'll learn the tips and tricks to be more effective in your development and deployment cycles. And you'll also learn how to monitor your Java EE 6 applications more effectively. A quick preview of Eclipse and IntelliJ tooling will also be shown.
Please have the following software pre-installed:
JDK 1.6/1.7 (http://www.oracle.com/technetwork/java/javase/downloads/index.html)
NetBeans 7.0+ "All" or "Java EE" version (http://netbeans.org/downloads/index.html)
Arun Gupta

Arun Gupta, Oracle


Arun Gupta is a Java evangelist working at Oracle. Arun has over 15 years of experience in the software industry working in the Java(TM) platform and several web-related technologies. In his current role, he works to create and foster the community around Java EE and GlassFish. He has been with the Java EE team since its inception and contributed to all releases. Arun has extensive world wide speaking experience on myriad of topics and loves to engage with the community, customers, partners, and Java User Groups everywhere to spread the goodness of Java. He is a prolific blogger athttp://blogs.oracle.com/arungupta with over 1200 blog entries and frequent visitors from all around the world with a cumulative page visits > 1.2 million. He is a passionate runner and always up for running in any part of the world.

måndagen den 5:e december 2011

Global Day of Coderetreat

I lördags gick Global Day of Coderetreat av stapeln, där UmeJUG arrangerade en av drygt 100 Coderetreats världen över med fler än 2000 deltagare. Via Twitter, live.coderetreat.org och en hangout i Google+ kunde vi följa de andra platserna. Är ganska säker på att vi var i världstopp när det gäller kvinnligt deltagande, 20%, jättekul. Att sedan Ulf och Simon satt sig i bilen halv sju en lördagmorgon för att åka från Skelleftå för att delta är mycket imponerande.

Dagen inleddes med gemensam enklare frukost under vilken vi fick chansen att bekanta oss med varandra. Sedan följd en kort video från vår galaxysponsor heroku och en introduktion. Vi hann med tre stycken sessioner innan lunch. Några tyckte att det var konstigt att slänga bort koden och börja om på ny kula varje gång, men det är bara en vanesak.

Under den trevliga lunchen med mat från Annas Mat kom Mikael Hansson från Infotech och kollade in läget. En artikel om GDCR i Umeå utmynade det i.

Djupt koncentrerade under den fjärde sessionen
Efter lunchen tog vi med hjälp av godisskålen nya tag och dagens femte och sjätte sessioner var kanske dagens höjdpunkt. Alla fick erfara att det är väldigt svårt att kommunicera med kod och att hur man än försöker misstolka tester så löser man, med rätt tester, ändå problemet. Förutom Java programmerades det i C# och C++. Dagen avslutades med en closing circle och utlottning av två priser, Markus vann en e-bok från Pragmatic Prog och Simon en JetBrains licens. Allt som allt var det en kul och inspirerande dag.

Utmaningar
Under de sex sessionerna  prövade vi några olika utmaningar allt för att tänja på våra bekvämlighetszonerna och få tillfälle att reflektera över vad vi håller på med.
  1. TDD, parprogrammering.
  2. Ping-Pong - Paret "skjuter" falerande tester på varandra.
  3. Missing tool
    • Inga nakna primitiver - använd domän-nära objekt.
    • Inga if-satser - låt polymorfism göra jobbet.
    • Ingen mus - det går snabbar om man bara använder tangentbordet
  4. Inga new - Använd dependency injection
  5. Mute och Evil Coder
    • Paren får inte prata med varandra, utan bara kommunicera via koden.
    • Den ene skriver tester och den andre får dem gröna, men den andre ("evil coder") gör sitt bästa för att implementera fel saker.
  6. Code swap - paren byter kod från föregående session med varandra. 
Lärdomar från deltagarna
  • TDD funkar (och inte tar längre tid).
  • Det finns många lösningar på samma problem. Om man kastar sin kod när man har förstått problemet den löser och skriver det igen får man en naturligare utformning av programmet.
  • Verktygstips och kodvana:
  • Det är klurigt att skriva kommunicerande kod!
  • Det är svårt att ta över någon annans kod
Läs mer om coderetreat. Tack till Metria och Sogeti som såg till att vi hade mat och lokaler!