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.

API

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

Upload

/api/raw_benchmark_runner_baseline_output
/api/raw_benchmark_runner_output

Retrieval

/api/c_python_normalized_benchmarks
/api/benchmark_history
/api/benchmark_result

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

Taxonomy

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,
Linaro,
ARM/Raspberry,
Calxeda
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.


Sessions

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.

Lunch

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.

Learnings/surprises:

  • 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

2 comments

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.

Joy.

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

15 September 2011

This is the third in my Agile Contracting series.
As with the previous post, this is a verbatim copy of my speech notes, with some mark-up.
[DL]

It's about the Why

Time for our own medicine [mime spoon] joke about mirroring.

Well, we're working towards alignment, but we also feel the need for a contract.

It's time for some of our own medicine. Bring out the User story.


User Stories

If we were to write the user story for our contract what would it look like?
  • As a software developer, I want a contract, so that...
  • As a team, we want a contract, so that...
  • As a software company, I want a contract so that?
Do we really know?

[ to C]
19th Century Contract
(picture by kladcat)
Okay, no fair. That's not a story, that's an epic.

And we want the things we want in epics because.. well we're playing catch up, everone else has them.

Everyone else has them so that makes it good? *side-eye* That's a discussion better left for later.
[C]

Scary Power

So we know the scary thing about user stories is: like goals, once we define them we set the ball in motion.

We know the why and the what and the how will inevitably follow.

So, let's see what this baby can do.
As a team,
we want this,
so that this great thing happens.

Feel the power

As a team we want: access to a product owner
so that: we get answers and resolutions quickly and don't have to guess or debate
How: add a clause to the contract!

As a team we want: a variable backlog
So that: we can do what is actually needed as we discover it
How: add a clause to the contract!

As a team we want: an agile release plan
So that: the client can have expectations that match reality
How: add a clause to the contract.

As a team we want: anything
Because of this good reason
How: Add a clause to the contract.


So, what do these clauses look like? I'll tell you about ours soon.
First off, some more stories:

As a board/person paying
I want to know when we will be expected to pay
so that I can budget and do financial calculations
How: make it clear in the contract

As the end user
I want to play with the software early
so that I can stress less and get what I want
How: expose delivery mechanisms in the contract.


We can really get our teeth into this product: "the contract" if we bring our formiddable armada to bear on it.

Behaviour Driven Development

So, what's next? BDD... behaviour driven development.

Crazy Crayon Physics Scenario
(picture by slopjop)
Given a team working on 2 week sprints
When the sprint commitment is not achieved
Then : these are penalties/discounts
[discussion, examples]


Given a team on hourly Time & Materials
When we run a four week month and everything goes well
Then this is the process and financials
[discussion, smiles]


Given a team paid on Time and Materials
When we get to April 2011 and everyone takes the gap and gets 2 weeks leave
Then how does this baby hold up
[nervous laughter?, discussion]
And what happens to the release plan?

Given a client with cash-flow problems
When they stop paying
Then what do we do?
[explain illusion attern of decline, discussion]

TDD

The next tool we have is Test Driven Development.

Pure TDD involves only writing a line of code if you can write a test that makes the product fail.

So we use scenarios and more focused tests to actually create a contract from the ground up that is tested, testable and has no cruft.

Then run that by a lawyer with the tests and ask what extra tests you should add.

Back to Agile Contracting series index.

Posted on Thursday, September 15, 2011 by David Campey

No comments