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

18 September 2011

All of us at Information Logistics took the break from routine to take part in the Scrum Safari. My mind's still processing the influx of conversations from last week's gathering in Somerset West.

Excellent event as usual, well done to the committee and everyone else who helped out in some way. And thanks to all who came along and made this event great.

Outline of my experience (speaker details):

Day 1

  1. Welcome with Austin / Mitch
  2. Boris Gloger's keynote on Agile and Management
  3. Sigi's Leadership talk
  4. Manoj: "It's about the culture, stupid"
  5. Serious Play with Thorsten
  6. Evening chat
Day 2
  1. Scrum clinic - was both doctor and patient
  2. Lightning talks (with a pop-in at the Agile Jazz and Games sessions)
  3. Lean vs Agile keynote with [x]
  4. Team game of pool to wrap up

This little red scrum user group book is already sporting twenty-five pages of notes to process, so I'll be attempting to linkify the above list with posts over the next few weeks at some point.

Posted on Sunday, September 18, 2011 by David Campey


16 September 2011

For the last while we've been building and putting the finishing touches on our new offices at the Gatehouse in Century City.

The main event is three 20 square metre team rooms. The rooms are visually connected with big glass windows but have closing doors for when things get rowdy (or sensitive).

It's all shiny and new-smelling, the aircon/heating works wonderfully (how often do workspaces miss out on that crucial detail?!) and we have our foosball table plonked in the middle of the common area.

Building has beautiful internal spaces, (scary) talking elevator, wheelchair accessibility, smart lighting, across the road from the Colosseum mini-mall and is a brief walk away from Canal Walk.


Today was officially my first full day at the new offices. I spent today pairing with Luke on some enhancements to his project. We set up a mini task-board and happily hacked the day away.

Looking forward to growing our company in the new space.

Posted on Friday, September 16, 2011 by David Campey

No comments