Johannes Thönes

Software-Developer, ThoughtWorker, Permanent Journeyman, Ruby Enthusiast, Java and Devils Advocate.

My 2016 Personal Futurespective

A few people asked me to share the agenda for this year’s personal retrospective.


This year, instead of focusing on what happened, I wanted to focus on the future. Therefore it’s a futurespective rather than a retrospective.

I create a custom agenda for every big retrospective. This one was created for this year, exclusively. For a different example for a year 2015 retrospective have a look at this writeup from my colleague Pat Kua. If you need help creating yours feel free to reach out to me.

You will notice that the agenda’s focus is creating a vision for my life in the future. I have been making very good progress with smaller goals from retrospectives in the past, but I felt it was time to more big picture.

3 Things I Learned at ThoughtWorks I Did Not Expect to Learn

In May 2014 it will be two years since I joined ThoughtWorks Germany. The time here has been an amazing journey. I have learned many things.


I learned more about agile software development and I worked with interesting technologies. I am also dealing with clients and represent my company at a client site. I did learn of all that - and I don’t expect to stop learning anytime soon.

But there were a few things I learned, which I did not expect to learn at ThoughtWorks. I want to share three of them with you.

HTML5: Offline Upload of Images

I am currently working on an application which has needs to work offline. This has the beneficial side effect, we use the different HTML5 storage capabilities. One of the is the File API, which we are using to store images locally - before queuing them for upload to a backend server.

In this article, I will share some code how we did this. The example works in Google Chrome - for DOM manipulation I will use JQuery.

Retrospectives Without Action Items?

Have you ever had a retrospective where you didn’t define actions to be executed and checked up on in the next retrospective? I did. article-image

I facilitated a retrospective using the Lean Coffee exercise. This helped to generate some good discussion, but in the end there was no action item. Is that a bad thing?

Write a Letter to Yourself - Personal Retrospectives Exercises

The write a letter to yourself exercise is an exercise to create continuity between two personal retrospectives. You write a letter - addressed to yourself - where you summarise what you learned and decided in this personal retrospective.


Then you put the letter in an envelope and close it. At the beginning of the next retrospective you open the envelope and read the letter. Thereby you can bridge two personal retrospectives together.

Personal Retrospectives Exercises: Open Thoughts Paper

The ‘open thought paper’ is simple a place, where you can write down your thoughts during a personal retrospective.


I use it, to capture thoughts that otherwise are in danger to be forgotten. This is especially helpful during focused exercises like the timeline ([1] and [2]), where there will be thoughts coming up, you cannot process into the current context.

Personal Retrospectives Exercises: Colour the Timeline

Now I want to introduce the ‘colour the timeline’ exercise for you personal retrospective.


A timeline is a chronological overview over the period you are reflecting on. This has been filled with facts before. Now you analyse it deliberate by using colours to describe your feelings.


When you have filled a timeline, now its time to analyse it. On way is to colour code the events, so you can see, when you had which kind of feelings over the timeframe. Use this in the generate insight phase, to get a clearer understanding of the connection of what happened and what you did.

Personal Retrospectives Execises: Fill a Timeline

I give a short introduction to the ‘fill the timeline’ personal retrospective exercise, which is the basis for further analysis of the timeline. A timeline is a hand-written, temporal overview of the events important to you in a defined timeframe.


I use timelines often - therefore it’s the first exercise I share with you. I’ll try to keep the structure of this post for the following posts as well: purpose, steps, remarks and alternatives.

Waiting for a JavaScript Event With Selenium/Capybara

I came a cross the question, how I could wait for a JavaScript Event in Capybara using the Selenium Webdriver.

This is what I came up with:

def wait_for_javascript_event event_name
  selenium_bridge.setScriptTimeout(Capybara.default_wait_time * 1000)

    "var callback = arguments[arguments.length - 1];
    $(window).one('#{event_name}', function() {setTimeout(callback, 1); return true;});"

def selenium_driver

def selenium_bridge

So, what is going on?