15 May 2015

Breaking it down:

Scrumikanbanagilisticxpleanidocious is a word I dreamed up, this is its story.

It sounds like: supercalifragilisticexpialidocious

This wonderful word enters many english-speakers vocabulary at an early age thanks to that great coach, Mary Poppins. Even though the sound of it is something quite atrocious.

For those who (sadly) missed Disney's musical gem, here's a refresher:
Reporter: There probably aren't words to describe your emotions.

Mary Poppins: Now, now, now, now, gentlemen, please. On the contrary, there's a very good word. Am I right, Bert?

Bert: Tell 'em what it is.

agile/lean mashings

I was in-flight from Cape Town to Barcelona to give a talk on contracts at the  ALE unconference (yes, back in 2012), overflowing with enthusiasm.

Looking forward to a mash-up of great people in the European Agile and Lean worlds, I had a think about what we were doing as an industry.

There is a lot going on, with different schools of thought coming together, clashing, dancing, growing.

We each choose a particular subset of them all to find a way to create great software.

"There probably aren't words to describe it all"

But, "On the contrary, there's a very good word. It's...


Bringing together:

(even though the sound of it is something of a process).

And that's what we do: a weird & wonderful mash-up portmanteau of the bits that fit from what we find in the toolboxes of others.

I was so taken with it that I stood up in front of a room of people, many of whom I admired, but (mostly) hadn't met and said it as the first lightning talk. That was the start of a very #alesome conference.

Enjoy the word, use it for awesome.


Posted on Friday, May 15, 2015 by David Campey

No comments

12 May 2015

A few years back I met a young soul exploring software development. He had programmed some robots, learnt some python and gotten himself to a python conference to meet other geeks.

His name was Sam, he was 10. And he needed someone to help him get unstuck and take the next steps.

I really, really wanted to teach youngsters coding.

By this stage, I'd seen too many well-meaning attempts die in analysis paralysis trying to figure out a curriculum, where to recruit learners etc, et cetera ad nauseam.

Just do it

Instead, I said: "Why don't you come to my office for 2 hours on a Tuesday afternoon? I'll help you where you get stuck."

A few years later and up to 15 (fifteen) 7-14 year-olds (seven to fourteen year-olds) come to our boardroom every Tuesday for coderdojo.

Our neighbours Esteq have offered up their boardroom for overflow, which is amazing.


It is (lightly) organised chaos, in the manner of a self-organised learning environment. It closely mirrors professional software development.

We do a standup (what did you do last week, what will you do this week, who wants to help) and emotional check-in (using charts4hearts) to kick off each class. Then the kids pair/swarm to find interesting things to do. Sweets are at 4pm or for completing collaboratively-chosen missions.


coderdojo (coderdojo.com) "free coding clubs for young people": It's a thing, and when I looked at it, found that it's similar to what we do, so we signed up and took up their flag.

Our dojo page is at zen.coderdojo.com/dojo/113.


We have no official syllabus, but a collection of activities. Over time, this has evolved into:

Next steps

We've reached the limit of what we can do in our boardroom (overflowed already) and what I can personally do. We have:
  • a great uchi deshi (back room) WhatsApp channel with keen helpers 
  • an agreement from the CEO at an epic company in the Waterfront to run one at their training room. 
  • a keen facilitator in the southern suburbs to train including kids from the Cape Flats 
  • a school in Sea Point looking to start a coding club 
  • a potential venue at the Science Centre 

If you're in Cape Town, come collaborate with us, (check out our dojo page for details) this is your invitation.

If you're somewhere else in the world and you want to get involved, check out coderdojo.com for a dojo near you.

Posted on Tuesday, May 12, 2015 by David Campey

No comments

10 April 2015

We've gotten together again (a little under two years later) to do some more work on codespeed2.

 - unassisted deploy by Maciej
 - get the runner working with the new json data format (protocol v1) (yay)
 - some niggly bug fixes

Matt has put together screenshots based on submission of the first new runner result (against the two-year old data dump we used for testing).

Home page

Inline images 3

Changes from last known revision in old data dump (pretty old)

Inline images 4

Nice spiky timing data :)

Inline images 1

The history of that module (also based on old testing data dump)

Inline images 2

Now we just need to set up the nightlies and see more continuous data :)

Posted on Friday, April 10, 2015 by David Campey

No comments

05 July 2013

First Graphs

In week 2 of CodeSpeed2, the rewrite of CodeSpeed for pypy and the PSF, we got our first graphs up.

Malte & Matt just having coaxed a benchmark run into the first bar chart

By the end of the week, we had the first cut on three graphs.

Revision timings

Normalised data

History graph

These are being drawn from bench mark runner output data submitted via the Cyclone endpoint, persisted to MongoDB, fetched from the API, represented in an Angular.js object and rendered with d3.js.


The API is served up via Cylcone and so far we have the endpoints below.





For usage details, tests are in /src/test in the repository bitbucket.org/pypy/codespeed2.


Also in this week we had some meaningful discussion about what terms mean in this context.

Best summarised in the following sentence:
The runner runs Benchmarks (which are Modules e.g. ai.py) and produces Benchmark_Runner_Output data which contains [one or more] BenchMark_Results
A key observation: the system under test is pypy and the modules (e.g. ai) are the benchmarks being run against that.

Up next: User Experience / Flow

In the next week we'll be crafting a first take on how users select and navigate data. D3 gives us some interesting options for hyper-linking in the SVG itself.

Posted on Friday, July 05, 2013 by David Campey

No comments

29 April 2013

What're we doing in the CodeSpeed re-write? Well, to get us all on the bus, in our first iteration we started off the first day with an inception deck.

The Inception Deck

As discussed in Jonathan Rasmusson's Agile Samurai:

Many projects get killed before they even get out of the starting blocks.
This is mostly because of the following reasons:
  1. They fail to ask the right questions.
  2. They don’t have the courage to ask the tough ones.
So, seeing as we're a courageous bunch and wanted to avoid the fail, we started with an inception deck.

Why are we here?

This project is funded by the PSF and donated time from Information Logistics and is beeing overseen by Maciej Fijalkowski.
The answer we came up with to the question "why are we here?" was:
Because PSF likes us enough to rewrite codespeed
So that: it has tests on python code and javascript that let you do TDD
So that: Maciej or any interested dev can easily test and implement a feature in an afternoon... and know the answer to: "Does it work?"

Meet the Neighbours

IL Team: Matt, Malte, Dave
PyPy devs: Maciej, Alex, ...
PSF: in particular: Jessie, Brett CPython test
Greater Community:
Twisted: JP Calderon,
Apple: Glyph,
CTPUG: Simon & DavidM

Show the solution

"munch munch munch" -- fijall

Technologies we chose to get started:
  • cyclone io
  • mongo db
  • angular.js
  • d3.js

What's going to give?

We'd rather deliver features more slowly and have tests, quality is very important. We are building dev tools here.

The product can be extended after we're done with this phase.

What's it going to take?

We have 6 weeks
1: API serving, receiving uploads
2: First graphs
3: ++
4-6: Smart search, statistics

What Keeps you up at night?

Not much really, Excited.

Elevator Pitch

For maciej, codespeed2 is a benchmark run visualiser that lets you understand performance.
Unlike codespeed it is extensible.

And, we're off!

With that quick summary done, we all headed off into the first week.

In the first week: we got the backend up and running, accepting all the different formats from the runner and persisting to MongoDB. Check out bitbucket.org/pypy/codespeed2 for the blow-by-blow.

Next post: week 2 update.

Posted on Monday, April 29, 2013 by David Campey

No comments

25 March 2012

Today I hosted the third code retreat at Information Logistics.

Today was a great success with six awesome developers from around Cape Town pitching up, three of whom I'd never met. We started out with coffee and intros then watched Corey's intro to the technique.


We had three sessions before lunch with great pairing, everyone was experienced in TDD so going was good. The pairs explored approaches to Conway's game of Life, from implementing the rules to different approaches to the universe/environment.

I heard the cries of panic at a stack overflow; we tried a pattern matching approach which ended up newing up the universe and creating lenses. We also got better at facetious implementation and avoiding primitive obsession generated some great insights on seams and testability. And lots of laughter.

Each session ended after 45 minutes with my annoying alarm going off and us deleting our code (sometimes gratefully). There were enough people today for each session to be with someone new which was excellent.


Then we sat down to a nice long Thai lunch at Chai-Yo where war stories were shared and a bit more context built. A game of foosball wrapped up the lunch-time and then it was back to coding.

Pairing without talking

We had one session after lunch: which for me was the highlight. We tried pairing without talking, with one partner writing tests and the other implementing. This was pure fun, trying to balance leading with tests and challenging er .. challenges. It was almost like a game of chess with each partner playing their move with relish.

Closing Circle

This brought us to 15:30 where we had the closing circle, discussing learnings, surprises and things we would change.


  • Tests can drive architecture quickly
  • Fluent syntax for building tests was an easy refactor, and fun
  • Pairing is all about Attitude, we were all able to pair successfully even though we'd just met
  • Different people with diferent backgrounds can think very similarly
  • New adventures in resharper
  • NUnit TestCase... now we can't go back
  • The fun of silent pairing
  • Finding other people who love code

Things we'd change:

  • More people next time
  • Order something more filling at lunch
  • Bring better dev gear (keyboards/mice/faster laptop)
  • If the group is big enough, try pair facilitation

And, finally, the group photo.

Posted on Sunday, March 25, 2012 by David Campey

No comments

19 December 2011

On day 2 of the Cape Town Scrum Gathering (a.k.a. Scrum Safari) there were a few lightning talks in the afternoon. I was lucky enough to nab the last slot.

Patrick Vine was at hand to capture the talks and they were posted on vimeo by the sugsa committee.

I've collated links to the talks on vimeo with my (somewhat terse) notes from the gathering.

Annu Augustine: Saying No

Step 1: Don't say the word no!
Instead: not now, let's explore, what if?
Listen, understand context, then use the same language
To motivate prioritization, show lack of connection to the goal
Watch Saying No on vimeo

Cara Turner: Achievable Goals

Maybe we achieved it?
Cara took us through how to frame a goal to assist success.
Watch Achievable Goals on vimeo

Brent: Agile Success

How to tame the dragon: we can't tame a two headed dragon
Client induction is important to get on the same page
Working software is different: "We don't build ships like this" -- indeed.
Agile Success

Pat Vine: Fixed Price Scrum

Why? The customer wants:

  • to know cost
  • to reduce risk
  • requirement for tender
Fixed cost helps some things: scope, date.
Backlog management? + on the end
Watch Fixed Price Scrum on vimeo

Carlo Kruger: Your sprint review sux

15 minute tester demo of the sprint!
Ken: no applause please, we're just doing our job. If we pattern praise, bad things won't come out.
Purpose of the review is to inspect and adapt the product, we need to be exposed to failure to expose learning.
If we raise the stakes, we remove space. Rather remove untrusted people.
We are inspecting the work of the whole team in a facilitated conversation.
Format: Set stage, gather data, generate insight, choose focus.
Watch Your sprint review sux on vimeo

David Campey: Agile Contracting

Check-in: who has seen their contract?
There is a tension between customer collaboration and contract negotiation.
We do team weeks with money for nothing, unboxed does pay for points, Gabby Benefield is suggesting a series of fixed price projects.
Some inspection of our contract.
This talk relates to my agile contracting series.
Watch Agile Contracting on vimeo

All in all a great storm of lightning to spark off new ideas. See you at the next gathering?

Posted on Monday, December 19, 2011 by David Campey

1 comment