This is the next to last (§1, §2) of my posts about the Viking Law.
Vikings were not plundering all the time, despite Hägar had suggested something like this. They were also merchants and such being the case they have had some important principles.
This is the next to last (§1, §2) of my posts about the Viking Law.
Vikings were not plundering all the time, despite Hägar had suggested something like this. They were also merchants and such being the case they have had some important principles.
category: General |
no comment
This post is written on 28. November 2009 by Sascha Binger.
From my last vacation in Norway I have brought a postcard with the reputed “Viking Laws”. I have posted it on my monitor to be remembered.

These days I concentrate myself on learning about agility and I recognized a lot of similarities between agility and the Vikings Law.
Has it been their secret of being able to reach America a long time before Columbus? Let` s have a look…
category: Agile, General |
no comment
This post is written on 28. October 2009 by Sascha Binger.
Visited and written by: Andreas & Thomas
The answer to the question from the tile of this keynote is: Yes! As already partly in the tutorials yesterday Lisa has again emphasized how important it is that there are no silos in agile teams. Instead it is all about solving the given task (developing quality software) in a collaborative mode. To do so (agile) testers are as important as (agile) developers and all other potential members of the team.
(read more…)
category: Agile Testing, Agile Testing Days |
no comment
This post is written on 13. October 2009 by Thomas Jaspers.
One of the biggest problems in agile development teams is “effort”. Of course it is always about effort, because effort is money and we all like our money. In planning we can cope with effort quite easily: “oh that’s a week effort”, but when it comes down to “what to do today” we start struggling. And how can we complete the “one week effort” if we struggle with our daily work?
My proposal for solving this issue is: At the end of the day, whatever you have done this day, if it is not complete, throw it away!
(read more…)
category: eXtreme Programming |
no comment
This post is written on 3. September 2009 by Fabian Lange.
Was yesterday really only the second day of Agile 2009? Then I have to hurry to write down my impressions, before the next day will have been started.
category: Agile, Conferences |
no comment
This post is written on 26. August 2009 by Andreas Ebbert-Karroum.
Tonight, I wanted to plan my schedule for the forthcoming Agile 2009 conference in Chicago. I very much look forward to the conference and can hardly make up my mind, which sessions I want to see – because there will be so many I will miss. Planning requires some form of organization, and the conference webpage offers to download iCalendar files to import the sessions into your calendar. This is a great idea, but doesn’t work if you either live in a different timezone that Chicago, or use Outlook as your calendar. My assumption is that one of the two criteria will match most conference participants, which really makes me wonder how well tested the calendar file feature on the webpage is. Anyway, I took a dive into the specs of iCalendar and wrote a little Groovy script to convert the available calendar files.
>> All sessions are converted and available for download, ready to be imported into your calendar.
There were two problems with the original files. Here’s one example:
BEGIN:VCALENDAR VERSION:2.0 PRODID:Agile2009 METHOD:PUBLISH CALSCALE:GREGORIAN X-WR-CALNAME:Agile2009 X-WR-CALDESC:Agile2009 BEGIN:VEVENT UID:1220 DTSTART:20090825T140000 DTEND:20090825T173000 SUMMARY:User Stories for Agile Requirements LOCATION:Columbus IJ URL;VALUE=URI:http://agile2009.agilealliance.org/node/1220 DTSTAMP:20090209T022940Z LAST-UPDATED:20090723T173948Z END:VEVENT END:VCALENDAR
The start and end time contains no timezone information. The iCalendar specifies that if you postfix that time with a “Z”, it means that the time is UTC. So the transformation is simple: add five hours to convert Chicago time to UTC, and append a “Z”.
The second problem becomes apparent as soon as you import your second session. On the first import, Outlook outmatically creates a new Calendar “Agile2009″. Nice. When you import your second session, it goes again into a new calendar “Agile2009 (1)”. You get the pattern. To fix it, you have to remove the X-WR-CALNAME and X-WR-CALDESC properties. This seems to be a common problem with Outlook. But luckily, this is also easy to fix.
To automate the conversion (and scrape all calendar files from the Agile 2009 conference webpage), I wrote this script. I’m sure it still can be optimized. What I really love is the String handling with negative indexes and easiness of regex handling, it makes these kind of tasks so much easier
public class ConvertCalendar{ private static final String VCAL_TIME_FMT = "yyyyMMdd'T'HHmmss"; public static void main(def args){ // use the smartphone page to get all valid session numbers // http://agile2009.pairwith.us/sessions InputStream sessionStream = new URL("http://agile2009.pairwith.us/sessions").openConnection().inputStream String sessions = org.apache.commons.io.IOUtils.toString(sessionStream); List calList = new ArrayList(); // href="/sessions/5107" sessions.eachMatch(/href="\/sessions\/\d{1,4}"/) { InputStream calendarStream = new URL("http://agile2009.agilealliance.org/session_ical/" + it[16 .. -2]).openConnection().inputStream String calendar = org.apache.commons.io.IOUtils.toString(calendarStream); File calendarFile = new File("./cals/temp - calendar.ics"); def calendarFileWriter = new FileWriter(calendarFile) def calendarFileName = ""; calendar.eachLine { def vCalLine = it; if (vCalLine ==~ /^X-WR-CALNAME:.*/ || vCalLine ==~ /^X-WR-CALDESC:.*/) { // ignore that line } else if (vCalLine ==~ /^DTSTART:.*/ ) { def origDate = Date.parse(VCAL_TIME_FMT, vCalLine[-15..-1]) vCalLine = vCalLine[0..-16] + DateUtils.addHours(origDate,5).format(VCAL_TIME_FMT) + "Z"; calendarFileWriter.write("${vCalLine}\n") calendarFileName = origDate.format("yyyy-MM-dd'T'HHmm"); } else if (vCalLine ==~ /^DTEND:.*/) { def origDate = Date.parse(VCAL_TIME_FMT, vCalLine[-15..-1]) vCalLine = vCalLine[0..-16] + DateUtils.addHours(origDate,5).format(VCAL_TIME_FMT) + "Z"; calendarFileWriter.write("${vCalLine}\n") } else if (vCalLine ==~ /^SUMMARY:.*/) { calendarFileName = calendarFileName + " " + vCalLine[8..-1].replaceAll("[^\\w\\s]", "") println "Processing " + calendarFileName calendarFileWriter.write("${vCalLine}\n") } else { calendarFileWriter.write("${vCalLine}\n") } } calendarFileWriter.close(); calendarFile.renameTo(new File("./cals/"+calendarFileName+".ics")) calList.add(calendarFileName+".ics") calendarStream.close(); } println "Text to paste into Wordpress after uploading: " println "<ul>" Collections.sort(calList) calList.each { println "<li><a href="\">${it}</a></li>" } println "</ul>" }}
category: Agile, Conferences |
no comment
This post is written on 19. August 2009 by Andreas Ebbert-Karroum.


