FOSSday 2010

För dig som är beslutsfattare inom näringsliv eller i offentlig förvaltning eller som arbetar med fri programvara / öppen källkod.

FOSSDay 2010 är ett inspirerande halvdagsseminarium där du kan få information från företag, myndigheter och akademin kring produkter, tjänster, inköp och upphandling. Dagen organiseras av Fossgruppen och IT-Universitetet tillsammans med Op5, Cybercom och Redpill Linpro och äger rum i Göteborg den 5:e november.

Seminariet erbjuder ett fullspäckat program med start klockan 09.45. Dagen erbjuder kortare föredrag, fika, mingel och lunch samt möjlighet att prata med och besöka de företag som deltar. Vi avslutar klockan 15.00 med kaffe.

Talare som deltar på seminariet är:

Peter Östlin – op5
Kommersiella intressen som drivkraft för utvecklingen av öppen källkod

Patrik Lägermo – Cybercom Group
Starta och driva projekt med FOSS-verktyg

Göran Westerlund – Kivos
Hur samverkar västsvenska kommuner kring open source?

Thomas Altré – RedPill
Öppna möjligheter

Daniel Melin – Kammarkollegiet
Ramavtalsupphandlingen “Öppna programvaror 2010″

Marcus Rejås – Rejås Datakonsult
Öppna programvaror i offentlig verksamhet

Espen Riskedal – Cutehack
Mobila tjänster med Qt

Kostnaden för seminariet är 450 kronor och inkluderar lunch, kaffe och bullar. Anmäl dig och ditt företag på fossday.se.

Ipad adventures

Bakgrund

Jag behöver läsa en hög böcker (eller iaf bläddra igenom) på kort tid – så kort tid att det inte var aktuellt att köpa böckerna fysiskt eftersom de inte skulle gå att få skickade till Göteborg i rimlig tid (fredag till måndag). “Aha, äntligen skall Kindle få en chans” tänkte jag, men den hade leveranstid på mellan 1-2 veckor.

Blocket till räddning – en herre i Kungsbacka sålde en Ipad för 4500 kr, obruten förpackning inköpt i USA och jag slog till efter att kollat att både Amazon/Kindle och O’Reilly kan leverera till Ipad, vilket de kan. (De kan även leverera till Androidbaserade läsplattor, men jag smalnade av problemet till en plattform i dagsläget, och egentligen var det ju en Kindle jag ville ha pga läskvalitet, så om det ändå skulle bli en “dator” – varför inte pröva det hajpade). Sedan började det: problemen.

Problemen

Problem 1. En hårdvarudefekt till följd av det är att laddaren har USA-kontakt, men det ordnades lätt med gammal överbliven utrustning från Kinaresa och en morakniv.

Problem 2. Värre var det med att komma igång. Man måste köpa Windows eller Mac OS för att kunna börja använda sin Ipad. Det finns inget annat sätt att komma förbi detta. Av okänd användarvänlig anledning skall man nämligen köra Itunes och “initiera” sin Ipad in i sin Mac-värld. Lösning: Använde Antons laptop som ännu har Windowspartitionen orörd och fungerar, tanka hem Itunes och kör.
Värdet av detta aber för mig som konsumen är ännu okänt. Både windows och Mac gör ju att priset åker upp med 20 % till, och det GÅR INTE att välja bort. Skärmen bara stirrar på en med en bild av en USB-kabel och Itunes-ikon.

Problem 3. Efter första omstarten (där man faktiskt stänger av plattan) så krävde den Itunes igen – jag hade tydligen inte initierat plattan tillräckligt första gången (trots att det gick hur bra som helst att maila, köpa applikationer och böcker).

Problem 4. Efter korrekt initiering med Itunes så ville inget av de tidigare nedladdade applikationerna starta, varken Ibooks, Kindle, SSH Pro (köpeprogram) eller något av de andra. Den första animationen när programmet startar gick igenom men sedan bara programmet försvann. Inget felmeddelande, bara borta och man hamnade på hemma-/startskärmen.
Lösning: Ladda hem ett nytt program från app store, kör det och efter det så kom alla andra igång igen.

Inte bara problem

Animationerna är gränslöst snygga, man blir nästan som Gollum om man är nörd och pixelintresserad.

Ogillar

AppStore-applikationen är inte jättebra utan snarare väldigt begränsad och uppmuntrar inte till att hitta och tanka hem hur många applikationer som helst. Att över huvud taget hitta knappen som gör att man tankar hem och installerar ett program, gratis eller ej, tog mig en minut att hitta. Call to action?

Skärmen är rätt lågupplöst och det är inte kul att läsa böcker.

Den väger ganska mycket – mer än en tung pocket och därför inget jag skulle ligga och hålla över huvudet i sängen eller liknande. Det är tom svårt att veta var man skall göra av den när man sitter i soffa eller vid ett bord. Har sett att en del Androidtabletter har inbyggd fot.

Skärmen reflekterar ljus från lampor. På flygplatsen och i flygplanet fick jag se till att välja en bra plats för att inte bli störd av bländande lampor runt omkring.

Amazon t ex har en del menyer som aktiveras när man hänger med musen över dem (hover), men med Ipaden måste man träffa den lilla lilla ytan med drop-down-ikonen (triangel på spets).

Att köra Ipod-applikationer på Ipaden blir till ett skämt.

Saknar kamera så att man kan köra VOIP (Skype).

Slutsats efter 3 timmars användning

Skitkul, skitdyr skitpryl med skitsnygga animationer. tv.nu-applikationen är riktigt läcker, men det tror och hoppas jag att Androidversionen är också.

Jag kommer absolut att skaffa Androidplattor – det är vanebildande roligt och bekvämt att kunna göra ganska mycket utan att isolera sig helt från omvärlden, och det tog inte mer än 15 minuter innan jag försökte peka på min laptopskärm för att klicka på en knapp i ett webb-UI.

Ett varningens finger

Den ersätter inte en laptop – det gick bättre att skriva på än jag trodde, men inte i närheten så snabbt som på en laptop (detta bloginlägg hade varit mördande att försöka skriva t ex). Placering av enheten – vare sig det är i knät, på bord, på plånbok eller annan tillfällig lösning – allt är onaturligt och plattan väger så pass mycket att “vad som helst” fungerar inte som stöd.

Den ersätter inte tidning eller andra liknande föremål helt ut (även om det är lite snyggt):

Bok: Pragmatic Programmer

Cover of Pragmatic Programmer
The Pragmatic Programmer

Detta är helt enkelt en bok som varje programmerare bör ha läst. Den innehåller ca 80 konkreta tips som omges av beskrivning av hur man bör jobba i olika perspektiv. Innehåller tips som dessa:

  • 20: Keep Knowledge in Plain Text
  • 21: Use the Power of Command Shells
  • 23: Always Use Source Code Control
  • 30: You Can’t Write Perfect Software
  • 32: Crash Early
  • 34: Use Exceptions for Exceptional Problems
  • 38: Put Abstractions in Code, Details in Metadata
  • 47: Refactor Early, Refactor Often

På rubriken Debugging, bl a

  • 24: Fix the Problem, Not the Blame
  • 25: Don’t Panic
  • 26: “select” Isn’t Broken
  • 27: Don’t Assume It – Prove It

Jag har faktiskt skrivit av alla tips i en lång lista, för att enkelt kunna läsa igenom lite då och då.

Agile Testing Days 2010 coming up

Speaker at Agile Testing Days 2010
I'll Be There

In about six weeks I’ll give a talk at Agile Testing Days together with Emily Bache. The talk’s title is set to “The Coding Dojo
as a forum for teaching TDD” and we are last to speak on Wednesday before the final key note of the day (and the “chill out” event). I’m looking forward to the conference which I’m sure will be full of insights and rewarding in many ways.

Bok: Test-Driven Development

Test-Driven Development By Example

av Kent Beck

ISBN: 9780321146533

Detta är en bok som i tre steg visar hur Kent Beck tycker man skall skriva kod. Boken är lättläst, enkel att förstå och Beck är ganska tydlig i vad  han menar och hur han föreslår att man skall jobba.

Min behållning av boken är den lilla privata lappen med “test att skriva” – något som han alltså förespråkar men som jag själv aldrig använt i större utsträckning. Jag petar istället ner alla test-idéer i kod, typ:

// FIXME: testa null

Om jag skall ge mig på att sammanfatta vad han förespråkar så är det:

  • börja litet
  • använd en lista där du skriver upp testfall som du vet eller kommer på behöver testas
  • låt design växa fram
  • använd refaktoreringssteget till att skriva den riktiga implementation
  • misslyckas man med ett stort test, skriv ett mindre istället
  • få hellre ett test till att gå igenom än att ha vacker kod

Jag rekomenderar boken till någon som har ett hum om vad TDD är men som inte sett hur det kan fungera i praktiken. Kodexemplen är visserligen ganska lätta men det intressanta är att se hur han jobbar med problemlösning, vad TDD-metodiken ger och att det banne mig inte är svårt att börja.

Build.version

Med hjälp av MANIFEST


				org.codehaus.mojo
				maven-buildnumber-plugin
				0.9.6
				
					
						validate
						
							create
						
					
				
			

Denna plugin kräver att man satt upp SCM ordentligt så att versionnummer kan hämtas därifrån!


				org.apache.maven.plugins
				maven-war-plugin
				2.0
				
					
						
							${buildNumber}
						
					
				
			
	private String readBuildNumber(ServletContext servletContext) {
		try {
			URL resource = servletContext.getResource("/META-INF/MANIFEST.MF");
			InputStream manifestStream = resource.openStream();
			Manifest mf = new Manifest(manifestStream);
			Attributes atts = mf.getMainAttributes();
			String value = atts.getValue("Implementation-Build");
			if (value == null) {
				throw new IllegalArgumentException("Implementation-Build attribute is not set in MANIFEST " + resource.toExternalForm());
			}
			manifestStream.close();
			return value;
		} catch (Exception e) {
			throw new IllegalStateException("Failed to read Implementation-Build attribute from MANIFEST.MF");
		}
	}

Eller som vanlig resource (properties)


		
			
				src/main/resources
				true
			
		

assertThat(Hamcrest).looksNice();

I väntan på David Saff’s alternative assertThat(x).y() så nöjer jag mig med:

public class EmptyMatcher extends TypeSafeMatcher<Collection < ?>> {

    @Override
    public boolean matchesSafely(Collection< ?> c) {
        return c.isEmpty();
    }

    public void describeTo(Description desc) {
        desc.appendText("empty");
    }

    @Factory
    public static lt;T> Matcher< ? super Collection> isEmpty() {
        return new EmptyMatcher();
    }
}

som gör att man kan skriva trevlig enkelt läsbar kod, t ex:

@Test
public void filteringAnEmptyListReturnsAnEmptyList() {
    List anEmptyList = new ArrayList();
    List result = testee.filter(emptyList());
    assertThat(result, isEmpty());
    // men helst: assertThat(result).isEmpty();
}

Webbtryck.se igång

Tomas Ekman (tidigare på Tryck Till Tusen Grafiska, nu på Brilliant Smile) frågade mig om jag kunde göra en web-to-print-lösning åt honom. Det gjorde jag på knappt 25 timmar och resultatet kör nu live på webbtryck.se.

Lösningen fungerar fint och Tomas kunder (mäklare där två kontor nu kör för fullt) är nöjda, så pass nöjda att jag skall försöka se om vi inte kan få fler kunder att använda systemet.