Chris Parsons's avatar

Archivey the Robot

by: Chris Parsons

Following hot on the heels of Pushy, I’ve implemented the companion application Archivey. This will delete all but the last five messages on a wave, excepting the top message. It’s meant to be used in conjunction with Pushy and any other chatty robots to keep the number of messages in a wave down to a manageable level.

Potential other uses would be in a chatting context: you don’t always want to see the complete history of a chat session and this could be a way to hide the noise. Remember that you can always see the complete history by clicking Playback on the wave, so the messages aren’t lost: they’re just archived.

To use, add archiveyrobot@appspot.com to a wave. Be warned, as soon as a new message is added it will merrily start deleting messages, so be careful!

Source code on github. Hope you like it: let me know if you find it useful.

Chris Parsons's avatar

Introducing Pushy – github notifications to google wave

by: Chris Parsons

I’ve been having a bit of a love affair with Google Wave recently. Like most people I watched the long introductory video, then tried out the sandbox last July and didn’t really get it. I then read this interesting post which spurred me on to try using it for actual work.

Guess what? It works. Our conversations have become more structured and organised. We’re finding that it does help with keeping everything together in one place, and is more ‘alive’ somehow than a traditional wiki.

So I thought: “Wouldn’t it be cool if you could have your github messages popping up in wave?”

So here’s the results of my handiwork: Pushy.

In simple terms, it’s a robot which accepts any form of HTTP post and adds the content as a new message on the wave. It has special handling for github post-receive hooks: it formats them nicely using a gadget.

How to use it

Log on to wave.google.com and add pushyrobot@appspot.com to a new wave. The robot will add a message giving you the URL to post to:

Pushys receive message

Then, when you post to this url (here I’m using curl):

$ curl -d "testing pushy" http://pushyrobot.appspot.com/push/googlewave.com/fjWFoDWkf

It will add the message to the wave:

The message appears

If you’re using the github notifications, simply add the URL verbatim to your project’s service hooks as a Post-Receive hook:

Github service hook configuration page

Click “Test Hook” and the wave will update. Any new commits to this project should now appear.

Here’s what the commit messages for github commits look like:

Github commit message view

Source code

The source code is at github.com/chrismdp/pushy. It’s my first Python project and first App Engine deployment, so be gentle :) I’d welcome forks and patches: especially if you extend the special formatting for other services.

Enjoy! Do let me know if you use it for anything useful.

UPDATE: The wave forum post discussing the robot is here.

UPDATE: Pushy now supports google code’s PostCommitWebHooks and formats them in a similar way to github commits.

Enrique Comba Riepenhausen's avatar

Michael DiBernardo in the Wandering Book

by: Enrique Comba Riepenhausen

The new entry of The Wandering Book by Michael DiBernardo is a very interesting one. In the first part of it he praises the Software Craftsmanship community (our strive to learn and improve, the way we try to make our software as simple as possible, etc), but it is actually the part “under the line” that caught my attention.

Michael DiBernardo's entry in the Wandering Book

My concern is the conflict between what we are preaching and how that is interpreted in the context of how we appear to others. Because seriously – if someone is pontificating to me about simplicity, elegance in design, attention to detail – how much can I appreciate what he is saying if he is wearing a 6 year old ironic t-shirt and khakis that are several sizes too big for him?

Michael has a very valid point there!

Software Developers are notorious for their out of the norm (to be diplomatically correct here) dressing habits. If we are to raise the bar in software development and try to be professionals we have to think of all the aspects of it. The little things, that our customers can see from us as professionals will surely reflect on how we interact with them. I am not saying we should wear suits and ties, but we surely need to work on our presence.

Imagine going to the doctors and he is wearing a think geek t-shirt about some sort of zombie rights and khakis… Would you let him perform open heart surgery on you?

Steve Tooke's avatar

Exploring Harmony for javascript BDD with RSpec

by: Steve Tooke

2nd March 2010

We try to BDD all of our production code, but the one area we always seem to struggle with is our javascript. There are various test/spec frameworks for javascript, but we’ve never quite found one we’ve been totally happy with.

There’s been a fair amount of interest lately in a new ruby gem which allows you to execute javascript against a DOM from within a ruby process. Harmony uses Johnson a ruby wrapper for the Mozilla SpiderMonkey javascript runtime.

To get started figuring out how I might be able to integrate harmony into my workflow, I’ve created a very simple project which uses rspec to make some very simple assertions about javascript behaviour.

Enrique Comba Riepenhausen's avatar

Farewell

by: Enrique Comba Riepenhausen

Water washed you upon the shores of this earth
were you walked erect with the gusts of wind caressing your hair
now in flames you go from us never to be forgotten.

aimee's avatar

Presentation of my apprenticeship task

by: aimee

Here is a presentation i made to some of my colleagues on friday explaining my first apprenticeship task, my wiki, how i went about it, the problems i encountered and what i learnt from the whole experience.

See my Apprenticeship task presentation on youtube.

Chris Parsons's avatar

BBC Talk on A Philosophy of Software

by: Chris Parsons

Video of a talk I gave recently at the BBC about the nature of software development. We discuss craftsmanship, apprenticeship and the limitations of university education, amongst other topics.

Watch the video here:

Chris Parsons's avatar

The Story Card Is Not The Story

by: Chris Parsons

At Eden we’ve used a number of different options for tracking work to be done on projects. In the early days we used Basecamp tasks. We then rolled our own system, which we’ve since abandoned due to a gradual shift in our business practices. We’ve used Pivotal Tracker extensively. Whilst we still use Tracker a fair amount, on one of our new projects we’re currently using index cards stuck to a kanban board, with Google Wave for extended documentation and discussion. In the past, we’ve spent a bunch of time arguing about which of these devices better and which is worse, with a view to settling on the “best” system. The merits of simple systems over complex ones, and digital over analogue, have been endlessly debated. I now think that all of these arguments miss the point. A couple of weeks ago, Enrique spent some time teaching us an early version of our one-day agile workshop. Through the ensuing discussion, I finally got to an important insight about what a story actually is, or rather what it isn’t. The story is not the terminology, or which precise language you use to describe it. It’s not the text on the card at all in the fact, or even the card itself. It’s not the line in Pivotal Tracker and it’s not the task in Basecamp. All of the tools we use represent some facet of the story, and help kick-start discussion. They remind us of the story, but they are not the story itself. The story is simply the team’s understanding of the work to be done: nothing more. This understanding reframed my view of the endless cards vs online vs Tracker vs everything else debate. These are merely useful props: methods of communicating within the team in order to achieving shared understanding. Granted, some tools are better than others. But they are just that: tools. Nothing should be sacrosanct: we should feel free to replace tools and methods that are failing for a particular client, even if they’ve succeeded on other projects. I now think settling on the “best” system is a vain exercise: we’d spend our time much better simply by properly listening to the customer and doing what they say. The same principle applies to the almost-as-endless UX/Design communication methods fight. Should we use Balsamiq mockups, or HTML wireframes, or Photoshop mockups, or Sharpies and paper? Answer: use what works. Use whatever tools you need to get your message out into the collective consciousness of the team (that includes developers, designers, testers and customers), so that the work can get done to the customer’s satisfaction. These methods are simply ways of getting messages across: they have differing emphases, and carry different risks. Often I think the whole way we approach the tools debate is wrong. We ask: “how can we use our favourite tool/method to track the metrics for this project?” Shouldn’t our question instead be: “How can we ensure we are communicating properly with the customer so we can deliver what they really want?” The tool question then becomes secondary and the critical issue of good communication becomes paramount. The story card is not the story. Let’s ensure our projects serve the customer rather than our favourite tool.
Spencer Turner's avatar

Craftsmanship Task – Lessons (Part1)

by: Spencer Turner

A quick blog post about things I have learned whilst working on my (as yet unfinished) wiki.

I am a really bad blogger!

No really. I am so bad at finding time to write stuff up, hence this is quite a long post. I should have written each of these up at the time, but I end up coding, not blogging in the time I have. I must do more of both…

Testing is hard

This is not to say it’s not worth it…but I do find it hard. I’ve found, often writing the tests is harder than writing the code, however, not testing makes thinks 100% harder in another way, in that you can’t tell if something is really working.

I’ve found Pair Programming Bot really good for making me behave!

TDD

Testing the right things is not easy. I’ve found I’m often testing for the sake of it, and not really resolving very much with my tests.

I’ve also found that no matter how much testing I do, it doesn’t circumvent having an idea of direction before you start.

You can code yourself into a hole TDD just as easily as not!

Big chunks of time are massively more productive than the same amount of time in smaller chunks

I have a family and a long commute, so time is the thing I am most short of. This causes the most problems in that I find it hard to get into whatever I am doing in the time I have available. When I get a few hours, I can get so much more done than 20 minutes here and there. Not because you can’t do anything in 20 minutes, but I tend to find I’ve lost context or a grasp on where I was going if I have to walk away from code before it’s a good time to stop.

Failing publicly is hard

I am trying to teach my son that the first step to learning how to do something, is to fail at it…

The reality is that whilst this is true, even as an adult, I find it frustrating and embarrassing, so I know how hard it must be for him.

It can’t always be the best

In the same vein, my son is a perfectionist. He hates to have even the smallest thing wrong. I have over the years got better at not falling into that trap, but when learning something completely new, it’s hard to know where it is acceptable to have something ‘wrong’ and fix it later.

Breaking down code in the right way

I’ve learned quite a bit about how to organise my code in this task. I am not happy with it yet (by a long chalk) but I am learning. It can’t always be perfect!

Pairing & review

All the eden guys have been really helpful about critiquing my code with me and pairing with me to improve my code. I’d totally recommend that you get someone to look over your work (or whatever nature) as often as possible and better still pair with you. You will learn a lot quicker.

We pair on UI/UX work, which is my speciality. This probably sounds odd, but two sets of eyes and ideas has proven to always be better than one so far.

Part 2 to follow.

At some point in the (hopefully) not to distant future, I’ll follow this up with another post about this task and what I’ve learned.