Episodes 1 - 10
E01 - From humble beginnings
- In this first episode, Antony Marcano and Andy Palmer show their initial efforts in writing the NarrativeFixture for FitNesse. Using the basics of the pomodoro technique, each episode is 25minutes long, showing Andy and Antony pairing - warts and all. Too many online videos show an ideal scenario. This video shows the real deal including uncertainty, debate and eventual clarity. This episode is guest starring Dr Sue Black: twitter.com/dr_black Additional links: antonymarcano.com andypalmer.com
E02 - “Given that” or “Given that the”
- This episode picks up from where Andy and Antony established the FitNesse wiki and created a page and place holder acceptance test for the first imaginary user story. Existing examples of "typical" FitNesse tests are shown and the guys draft the first most basic example that will drive out the implementation of the NarrativeFixture. After resolving some classpath issues and with a brief mention of how JNarrate (http://jnarrate.org) fits into the picture, the guys then explore some options around the syntax of the tests... what do you think of the outcome?
E03 - Abandon Mission
- After forgetting to record the previous two 25 minute sessions this episode summarises what you missed. Attempting to then proceed, the guys are faced with a puzzling problem... forcing them to abandon the session... Additional Links: http://antonymarcano.com http://andypalmer.com
E04 - Actor, First I Mock Thee!
- Seemingly ignoring the problem they had in the previous episode (mainly because they just needed a reboot - or something like that) Andy and Antony start writing the first unit tests for the NarrativeFixture. Using the exceptions in the acceptance test to provide direction and JUnitMax to light the way, they start implementing the NarrativeFixture in earnest... Additional Links: http://antonymarcano.com http://andypalmer.com
E05 - What's wrong with the colour?
- Andy and Antony got feedback from a potential 'customer' who happens to be a Graphic Designer. He didn't like the colours ;-) but once the guys got him to stop worrying about that, he gave them useful feedback about the wording of the acceptance test. He also showed a preference for the wiki page rather than the almost identically worded JNarrate test... Java code that says almost exactly the same as the FitNesse acceptance test... This episode picks up shortly after that discussion has happened... What do you think? Wiki or code?
E06 - Apology Accepted
- In the previous episode, Andy and Antony were having difficulty with some generics. They get it to compile after some reading and experimentation. This episode, including a shameless plug for their Agile2009 proposal, sees the continued evolution of the CastingDirector - the class responsible for finding the driver API that will fulfil the instructions in the actions declared in the acceptance tests. Encountering their first 'Exception' scenario for the CastingDirector, Andy and Antony conduct their trademark role-play with a random passer-by to find the right name for the exception... the result is unconventional... but somehow feels right.
E07 - The Camel Case
- Continuing to evolve the CastingDirector, Andy and Antony deal with several checked exceptions... but refer to them as something else (see S01E06). The CastingDirector tells them that it can't find a class called "the FitNesse Wiki"... well of course not... that has spaces in it and java class names cannot... how did they deal with that? Mentioned articles: http://andypalmer.com/2008/09/checked-exceptions/
E08 - Dummys for Experts
- The previously introduced SubjectMatterExpert was only represented using mocks. In this episode, the acceptance test drives Andy and Antony to start implementing the SME for real. How does the SME relate to the actions it provides to the caller... how does the acceptance test force them to implement it? Watch this episode to find out.
E09 - Duplication Hokey
- The new SubjectMatterExpert (rather than "ActionFinder") can tell you how to do any action you've defined. Andy and Antony realise that it's doing something similar to another class. They employ some copy-paste programming to put the duplication in... then refactor the duplication back out again. See what new class emerges and how we ask that class for the crucial information it has.
E10 - The Space Man!
- Despite several technical problems getting the broadcast started... we got there in the end... In this episode we moved the Translator forward... Robert, a live guest, added an insight by suggesting a test... we thought it would pass... he knew it would fail... Watch the video to find out why.
Episodes 11 - 20
E11 - The Expert Takes Exception
- In this episode, our subject matter expert took exception to being asked to do something beyond its expertise. Watch as we try to appease him.
E12 - The Magic Wiki
- Andy and Antony StartForTheFirstTime... well, actually they implement the action class "StartForTheFirstTime". All appears to be going well...
E13 - It's all about the When
- In this episode, Andy and Antony move onto the "When" of the acceptance test... Not before some refactoring of a unit test that they'd realised would not work as they moved forward.
E14 - Mocking FitNesse Users
- The 'When' is now working... the example "Role" and "Action" now need to be implemented. Antony is troubled by having to have a class for a named role and thinks they should be separated... but Andy and Antony agree in the end that it would be speculation to do it any other way.
E15 - When it all goes horribly wrong
- In the process of implementing the "GoToTheHomepage" action, the guys realise that the StartForTheFirstTime action isn't starting anything at any time! Baffled, they explore a number of avenues....
E16 - I love it when a plan comes together
- In the few minutes between the last episode and this one, Andy and Antony realise that something crucial was missing. The FitNesse wiki is now starting for the first time, every time... but they have to fight against their urge to move on to the next cool interesting feature and make sure that no one has to be baffled like that ever again...
E17 - If in doubt, reinstall!
- Another setback hits the guys as the updated version of JUnitMax doesn't seem to be working as expected. Antony's new PC still hasn't arrived and they are convinced that the problems are because of ongoing problems with his current machine.
E18 - JUnit to the Max
- After the previous episode's setback, Andy and Antony make progress again. JUnitMax is working again and the new features are looking good! Let's rock!
E19 - Future Andy and Antony
- The guys messed up the audio recording, so future Andy and Antony had to record over the video with a narrative... This episode picks up from a long 3-4 week break due to Andy being on holiday in Australia. The guys deal with some code warnings around unchecked exceptions... Whilst writing a test they realise that the capability it represents is actually redundant... leading them to understand why one specific unchecked exception warning was perfectly acceptable. Watch it to find out more... In this video: http://antonymarcano.com http://andypalmer.com
E20 - Time for some Spring Cleaning
- The guys clean up their .hgignore so that mercurial checkins don't include files they aren't interested in. They do some other equally interesting spring cleaning... This is probably the least exciting episode so far... but if you're interested in seeing the mercurial eclipse plugin being used... then this is the one to watch. In this video: http://antonymarcano.com http://andypalmer.com
Episodes 21 - 30
E21 - The Beginning of the End
- The guys have had enough of having to manually kill the browsers and wiki server after each run of this first acceptance test. They start to implement a new capability - "The End"... The method by which all actors are told to finish up for the day... In this video: http://antonymarcano.com http://andypalmer.com
E22 - Overwhelming Responsibility!
- The End has begun, and now we're in the middle of the end. The casting director needs to know how to send the actors home after a hard day's night. It's starting to become clear that the director needs to get to know his actors by name, and it seems that we are asking too much of him. A new member of staff needs to be hired...
E23 - ‘Role’ out the Agent
- The echo in this one seems to be quite bad, due to the live session in the background. The guys now have a job title for the new member of staff - Casting Agent. They also realise that the acceptance test needs another piece of critical context...
E24 - Nothing is Cast in Stone
- The Casting Agent has to come from somewhere... Do we write a whole new class or do we already have the Casting Agent under a different name? It's the latter! So, where was the Casting Agent hiding? (The echo in this one seems to be quite bad, due to the live session in the background - sorry)
E25 - Where in the world?!
- Now that we have the Casting Agent and Director in their distinct roles, we need a way of telling them where people that would play a given role would hang out. Starting out with roleLocation - Andy and Antony realise again that another crucial aspect of the context is missing and add yet another feature to the Narrative Fixture...
E26 - This is not the metaphor...
- Feeling unhappy with the metaphor Andy and Antony explore several different ideas. Something just isn't fitting right and is holding them back. Star Wars puns aplenty, the guys decide to fight it out during a 5 minute break...
E27 - Demographically Speaking
- Suddenly, it all becomes clear! The process of actually writing the code with the wrong metaphor helped us find the right metaphor! Andy and Antony are happy again! So, if you wanted to look for roles in particular categories, what would that category be?
E28 - Character Building Stuff
- The value of the metaphor shines through as we are finding it easier to work out what the next steps are. The movie/story metaphor in the code is making all the difference! This eepisode sees the guys getting close to finishing the Casting Director, but is already hinting that there is something else we hadn't previously considered.
E29 - The Dressing Room
- The Casting Director needs somewhere to keep the actors once they've been cast. More high-five moments in this eepisode... hopefully this means that the guys are finally finding their rhythm on this new project. The new capability highlights yet another aspect of the initial context in the test that we'd omitted.
E30 - Diversity in the workplace
- We discovered that the WebUser was in a different demographic to the Wiki (unsurprisingly). This meant that we needed the ability to look in multiple demographics to find the actor 'type-cast' for the role.
Episodes 31 - 40
E31 - Stepping on each other's toes
- NOTE - The video feed is lost around 20 minutes in, the audio continues. We wanted you to at least have the option to listen, so we published anyway. The acceptance test failed in a way that we didn't expect indicating that the design wasn't quite right yet. We realise that we gave the Casting Director a responsibility that was actually the Casting Agent's...
E32 - Dealing with ambiguity
- NOTE - The video feed is lost around 15 minutes in, the audio continues. We wanted you to at least have the option to listen, so we published anyway. The casting agent couldn't handle more than one demographic. Now that it can, what happens if we can find a role in more than one place? Find out by watching this episode.
E33 - There's no place like home
- NOTE - The video feed is lost around 20 minutes in and there is no audio. We wanted you to at least have the option to see what we were doing, so we uploaded anyway. Now that the casting director has a dressing room full of actors, he can tell them to go home at the end of the day. But will they? Maybe they can't go home until they're out of character...
E34 - Actors Advisor
- NOTE - This is another one of the corrupted videos :-( Video is good for around 20 minutes but there is no audio. We wanted you to at least have the option to see what we were doing, so we uploaded anyway. To send the actors home we need to make sure that they are out of character. I.e. we need to make sure that whatever that actor is representing is shut down. For this, we need an advisor to find the appropriate entity who can help the actor get out of character.
E35 - Are you in Character?
- Finally, the audio and video problems have been solved and we have full audio and video back!! In this episode, the actors learn how to know when they are and are not in character. This is important because later they're going to receive therapy and they need to know if they've already received the help that they need.
E36 - Finding the Therapist
- Actors get advice on the best therapist that can help them to get them out of the character they're in. The pace of development is picking up noticeably now...
E37 - Taking Exception to writing repetitive tests
- The guys do a little tidying up of the ActorsAdvisor, before working on what he should say when the Therapist is being elusive. Finally tiring of writing the same try / catch tests over and over again, they create the Thrown Exception template.
E38 - The Frustrating Case of the Wiki Therapist
- The Actors Advisor can now look up the appropriate therapist, but what if the Therapist doesn't know how to help? The guys define the behaviour of the Advisor in this situation, and then bump into a problem with helping Actors get out of character.
E39 - Home Time
- Finally, the Therapist gets the Wiki out of character. No more manually killing off the Wiki and WebDriver instances.
E40 - Onto Then
- Having got the actors to go home after a session, the guys turn their attention to the Then. Trying to show that the Narrative Fixture correctly uses behaviour from the parent class proves to be difficult. We always thought that the children caused problems for the parents, not the other way round.
Episodes 41 - 48
E41 - And then? and then? and then?
- Having resolved the issue with the parent class (on Fathers Day, how appropriate), the guys continue with implementing the Then. The guys are getting twitchy as they are almost at the point where this acceptance test is functionally complete.
E42 - An outside chance
- Taking advantage of a pleasant summers evening, the guys relocate to the garden. This episode combines the soothing sounds of birdsong with the soporific (er, stimulating) voices of your hosts, along with the occasional jet en-route to Heathrow Episode 42 should have been the answer to life, the universe and everything, but instead it's just another step on the journey. A new abstraction is beginning to make itself known, ready to burst onto the scene, just like in the film Alien
E43 - It's not easy being green
- It's cold outside, there's no kind of atmosphere I'm all alone (more or less) Moving inside, away from the cold, dark night, the guys realise that there is a Librarian itching to burst out (maybe it was those glasses that triggered it) The guys discuss how the librarian will be used, and how we'll start implementing it. Before they do that though, Andy says "Let's just get this question working first"
E44 - Make way for the Librarian
- Beginning to tire after a long day and a lot of driving, the guys refactor the various places that classes are "found" and "created" to similar implementations. The Librarian will take care of all this work later, we will just need to tell it to find us something in a particular location.
E45 - The Librarian's Induction Day Begins
- Grappling with some bizarre misbehaviours of eclipse, the guys press on with 'training' the Librarian in how to find things in the library.
E46 - Putting the librarian in its place
- The librarian begins to complain. Not without good cause. We realise that it's about time to put the librarian in its place!
E47 - SubjectMatterExpert gets a helping hand
- The poor SME simply had to know how to do too much. Luckily, the librarian is here to help. More refactoring still to do as we find ways to tighten up the narratives in the code.
E48 - The SME and the Librarian get wired
- As part of moving the responsibility for finding things out of the SME, our intrepid duo resolve a test that is now doing too much.