Posts

Showing posts from 2009

Lone Star Ruby Conf 2009 Day Two Afternoon Sessions

More Lighting Talks! A lot of people skip the lighting talks, but I find that some of the best stuff at any given conference comes out of the these intense 7 minutes sessions. Jared Ning: "Ruby Without Borders" Matthew Todd gave a talk last year asking for people to came to Tanzania and help him code in Ruby. Jared did and he loved the experience. He mentioned a very useful TextMate short-cut: If you have a bunch of files and folders open in the project drawer and you click the chevron (the triangle thingy) to close a top level folder then when you open it back up TextMate remembers the state of what folders were open and closed underneath. But sometimes you want to close down all the folders underneath. Option clicking on the chevron will do that. Also, option clicking on a closed chevron will open up all sub folders. I've been looking for this. Check out Ruby Without Borders . Jeffrey Taylor: "Fast Multi-protocol XML Parsing" Jeffrey's project had to

Lone Star Ruby Conf 2009 Day Two Morning Sessions

Last night Matz gave a keynote entitled "Why do we Love Ruby?" He talked about how Ruby embodies Quality Without A Name (Qwan). Here's a description of Qwan . I think it might be time to retire this talk, as I've seen it more than a few times before. I'd much rather hear about interesting problems he's solved while designing Ruby or meditations on where the language is heading. A humble suggestion from a guy who's very grateful for Ruby. TDD: More than just "testing" - Evan Light Evan started out his talk by pointing out that lately we've been focusing more on tools and techniques more than the goal of testing. Testing is not the end, it is a way to help you get to the goal of a well designed application. He did a live BDD coding demo - which is very courageous. I've seen way too many presenter's brains melt under the hot lights and audience pressure. He managed to pull it off and show some Behavior Driven Development. Evan likes to

Lone Star Ruby Conf 2009 Day One

I have to admit that this morning I was not looking forward to seeing another day of presentations after 3 days of Agile 2009 and 1 of Software Craftsmanship North America, but almost immediately upon entering the Norris Conference Center I felt welcomed. Part of this is that Jim Freeze, the LSRC head organizer, is a heck of a nice guy who recognized me in the hallway and said hello but also that when I sat down I noticed that every table had plenty of power for computers. Awesome. At Agile there was no power in any of the rooms and very limited access anywhere else. I type up my notes on the presentations as they happen (and I notice a lot of others do the same) so I spent much of my time at Agile glancing at my diminishing power and hoping I could make it through the next session. I know a lot of people hate open laptops at conferences but studies have shown that if you give some people something to do with their hands while they listen to a presentation they consume it more eff

Agile Conference 2009 - Day Four

Agile's Too Slow: Developing a Facebook App for the Obama Campaign - Andy Slocum Andy worked on the Facebook application for the Obama campaign. In two months they build a Facebook app that could assist users in encouraging their friends to register and vote. There where only two people on the project and they came in with the common ideas of XP: continuous integration, weekly iterations, story estimates, developer testing, etc. Except that all of the above was way too heavy for the Obama campaign's pace. They'd have an Iteration planning meeting on Monday and by the Tuesday it was out of date because so much had changed. Also Facebook apps don't really run very well outside of Facebook so they could only write tests around code that was completely isolated from the Facebook stuff. So they basically moved to a lean process with priorities set at the standup meeting every day. They also ditched the idea of continuous integration as there were only two people to int

Software Craftsmanship North America Conference

This was the first ever Software Craftsmanship conference and it was put on by my company Obtiva and 8th Light (a company I have pretty strong ties to). It was a pretty big day for the Craftsmanship movement and our little companies. Software Craftsmanship Manifesto is: As aspiring Software Craftsmen we are raising the bar of professional software development by practicing it and helping others learn the craft. Through this work we have come to value: Not only working software, but also well-crafted software Not only responding to change, but also steadily adding value Not only individuals and interactions, but also a community of professionals Not only customer collaboration, but also productive partnerships That is, in pursuit of the items on the left we have found the items on the right to be indispensable. The idea is to build on the Agile Manifesto toward better software and the community that surrounds it. Swimming Upstream, Sprouting Legs, and Running Free -- Ken Auer This

Agile Conference 2009 - Day Two

"I Come to Bury Agile, Not to Praise It" -- Keynote by Dr. Alistair Cockburn So this is one of those classic keynotes where the title has little to do with the content of the talk. I did enjoy the keynote, very much so, but only the first 10 minutes were devoted to Agile's 'Death.' Alistair came out following a bagpiper playing "Amazing Grace" -- like a funeral. I gotta admit that it was a pretty nice entrance. Then he gave a modified version of "I came to bury Caesar, not to praise him" speech from Shakespeare's Julius Caesar (full text here: http://alistair.cockburn.us/I+come+to+bury+Agile%2c+not+to+praise+it ). His point was that Agile started out as something for small, co-located, groups and was pretty rare. It is now very prominent and used in quite large organizations. So it has gone through a bunch of changes despite the fact that we call it by the same name. Not quite a 'death' but "Isn't it weird how we sti

Agile Conference 2009 - Day One

It's been 5 years since I attended the granddaddy of Agile conferences and I have to say that the first day was damn good. My notes my be a little rough, so I apologize in advance, but if I don't type and post them on the day I pretty much never will. Workflow is Orthogonal to Schedule -- Mary Poppendieck Mary started out with an example of on time development from 1929: The Empire State Building. In September of 1929 they started cleaning the constructions site of previous buildings and by May 1st of 1931 the building was finished and open to the public. It was exactly on time and 18% under budget. Cash flow was king: Every day of construction was another day before they could start getting their money back. How did they do it? They focused on flow. They thought of the project as "A marching band going through the building and out the top." Key success factors: The owner, architect, and builder got along well and worked as a team. They had a deeply experienced

My Apprenticeship - Wednesday, August 18, 2004

This summer I'm revisiting my short apprenticeship at Object Mentor. I'll be posting commentary on all my posts from the summer of 2004 exactly 5 years later to the day. This is the last post of the series. Wednesday 8-18-04 Last day of XPAU and I'm pretty burnt. I'm typing this from the airport in Calgary where they inform me that they are running an hour behind. This is bad because my connecting flight in Las Vegas is an hour and 20 minutes after I land. So I'll have 20 minutes to catch my flight, assuming they can keep to their prediction. I don't have high hopes. I might have to miss work tomorrow. Which would kinda suck because I need to figure out what's going on this year. With Rylander and Miller gone, I'm going to need some time to plan with the new guys. Today I slept in and skipped the morning stuff. Then I hung out in the FitFest room, writing code, and chatting with Micah, David, and Paul. Ken stopped by later and we said our goodbyes. I hop

My Apprenticeship - Tuesday, August 17, 2004

This summer I'm revisiting my short apprenticeship at Object Mentor. I'll be posting commentary on all my posts from the summer of 2004 exactly 5 years later to the day. Tuesday 8-17-04 Got up late, hustled downstairs to get some breakfast, only too discover that I didn't care much for either of the Keynotes that morning. Some Microsoft guy was gonna talk about Visual Studio and M.S. agility. Hmm. I had already chatted with the guys at the Microsoft booth about the new Visual Studio and here's the scoop: The will be unit testing integrated, but it will be Microsoft's own version. They did say that V.S. will let other products add on and integrate on their own -- but they couldn't show me that. I will be interested to see if they will allow Nunit to integrate as seamlessly as IntelliJ and Eclipse do. So I wasn't real interested in that. The other talk was about the future of C++. I'm still trying to avoid C++ until I have to acknowledge its presence, so I

My Apprenticeship - Sunday, August 15, 2004

This summer I'm revisiting my short apprenticeship at Object Mentor. I'll be posting commentary on all my posts from the summer of 2004 exactly 5 years later to the day. Sunday 8-15-04 Every time I think I understand FitNesse I'm wrong. After a day of using it for Acceptance Testing I know a lot more about it, but I'm going to assume there's more. But this is jumping to the end, I'll back up. At the beginning of 'XP for a Day' Micah and James (the teachers) split the groups up and we started the planning game. James, the customer, had a bunch of stories written on 3X5 cards that he wanted implemented in the game. For example: One was a magic arrow that you could fire that would turn if it hit a wall (you specify the direction it will turn when you fire it). Another was a GUI for the game. And another was shooting regular arrows that would kill the Wumpus if they passed through the room he was in. Another was a randomly generated map. And so on. After Jam

My Apprenticeship - Saturday, August 14, 2004

This summer I'm revisiting my short apprenticeship at Object Mentor. I'll be posting commentary on all my posts from the summer of 2004 exactly 5 years later to the day. Saturday 8-14-04 Travel day today. Flew to Phoenix, AZ (4 hours) and then to Calgary (3 hours) plus 1 hour for lateness and layovers is an 8 hour trip that should have taken 3 (Chi to Cal). And there was a fun little dash from gate A11 to B7 (which are much farther apart than you might guess using your knowledge of the alphabet) because my first flight landed late. Check in at the Hyatt Regency was easy and gorgeous. The conference space is really nice too. Micah, Paul, David, James, Justin (Micah's younger brother), Bob, and I spent some of Saturday night setting up the 'XP for a Day' Tutorial space. There's gonna be 3 teams of 4 (2 pairs each) working on 'Hunt the Wumpus.' So we needed to link all the computers up, set up FitNesse, and get CVS working. James has been nice enough to let

My Apprenticeship - Friday, August 13, 2004

This summer I'm revisiting my short apprenticeship at Object Mentor. I'll be posting commentary on all my posts from the summer of 2004 exactly 5 years later to the day. Friday 8-13-04 Last day in Gurnee. The Object Mentors decided that pizza wasn't enough for my birthday, so they took me out to one of those fancy Japanese steakhouses. Ya know, I've never actually been to one of those knife-flying, death-defying, make-it-all-on-a-grill-while-you-watch restaurants. A good time was had by all. It's been a good summer. I've learned tons about class design principles, patterns, pair programming, test driven design, and a whole bunch of intangibles. Without a doubt the coolest thing about working at OM was being able to lean over and ask David, or Micah, or Paul, or James, or -- Look, everybody sitting next to me had great ideas about programming and, as cool as all their classes are, working with great programmers is a much better way to learn. Speaking of Object Me

My Apprenticeship - Thursday, August 12, 2004

This summer I'm revisiting my short apprenticeship at Object Mentor. I'll be posting commentary on all my posts from the summer of 2004 exactly 5 years later to the day. Thursday 8-12-04 My Birthday today and the guys at OM were kind enough to buy me some pizza. Later on tonight I'm going to have a quiet little get-together at my favorite restaurant: Club Lucky. Tomorrow is my last day at Object Mentor's Gurnee location. Saturday I'll be heading up to Canada and XPAU. Paul (the other OM apprentice) and I will be sharing a room at the Hyatt Regency. But here's the fun part: The last day of XPAU is Wednesday and my job as high school physics teacher starts back up on Thursday. So I'll be catching an 8:30pm flight from Calgary on Wednesday that arrives in Chicago (via Las Vegas) at 5am Thursday morning. Then it's a cab ride to work and meetings that start at 7:30am. Let's hope some sleep happens on the plane. I'm pretty excited about XPAU, although

My Apprenticeship - Wednesday, August 11, 2004

This summer I'm revisiting my short apprenticeship at Object Mentor. I'll be posting commentary on all my posts from the summer of 2004 exactly 5 years later to the day. Wednesday 8-11-04 I successfully broke the connection between the ChessBoard and the Pawn and the King. Pawn has its own PawnChessBoardIntereface and the king has KingChessBoardInterface. Each of these interfaces are pretty thin, so I'm back in a more comfortable place, design wise. I've also figured out a way to keep the rest of the pieces from needing to know about the ChessBoard. Instead of creating a FindAllLegalMoves method for each piece object, I'm going to look at the type of check the king is in. The king can be attacked straight on, diagonally, or it's a knight attack. If it's a Knight attack, this particular attack can't be blocked so I don't have to worry about trying. With diagonal or straight attacks I can find the squares between the king and the attack and then check

My Apprenticeship - Tuesday, August 10, 2004

This summer I'm revisiting my short apprenticeship at Object Mentor. I'll be posting commentary on all my posts from the summer of 2004 exactly 5 years later to the day. Tuesday 8-10-04 Well, I got the king's weirdo move logic straightened out. And the pawn's. But now I'm looking at my ChessBoard class and I'm unhappy. ChessBoard does a lot stuff and I'm beginning to suspect that all the chess pieces are going to have to know about it. Why, you ask? Lemme tell ya: In order to figure out if there is a checkmate I have to first figure out if the king is in danger. No problem: did it already. But checkmate means that the king not only is in danger but that there is no way to get it out of danger on the next move. One way to get out of check would be to move the king. So I need a findAllLegalMoves method in the king class. But to find all the legal moves, the king will have to know what pieces are on the board. Another way to get out of check is to take the piec

My Apprenticeship - Monday, August 9, 2004

This summer I'm revisiting my short apprenticeship at Object Mentor. I'll be posting commentary on all my posts from the summer of 2004 exactly 5 years later to the day. Monday 8-9-04 XPAU is only a week away and most of the things that need to be shipped have been shipped. So Monday was the calm before the storm. Micah had a hundred or so neglected emails to answer and some odds-and-end work to do. David and Paul were pairing on the dot Net FitNesse project (making FitNesse work with C#). And I have been asked (dared) to write a chess program by Micah. Before I get into the intricate parts of chess software, I should mention David's correction of my previous post. On the subject of acceptance testing vs. unit testing, he says that it's important to point out that the customer owns the ATs and developers own the UTs. A developer can have loads of passing UTs, but it's the ATs that the customer ultimately cares about. On the subject of Chess, I'm finding that jus

My Apprenticeship - Friday, August 6, 2004

This summer I'm revisiting my short apprenticeship at Object Mentor. I'll be posting commentary on all my posts from the summer of 2004 exactly 5 years later to the day. Friday 8-6-04 Last day of the TDD and refactoring class today. We started with an intro to FitNesse, which is acceptance testing. The basic idea is that while unit tests are concerned with the inner workings of the classes and methods, acceptance testing is after more global behavior. An acceptance test tends to simulate the actual operation of the program. What you do is enter some data in a table that the user might enter. Now this table is in a wiki which is being served by FitNesse which may be running locally or on the company server. Then, when you push the button (on the wiki page) that sez 'Test,' FitNesse parses the wiki text and feeds the data from the table into your program. And then it checks the output against the table you created (on the wiki) with the expected output. Which sounds a lot

My Apprenticeship - Thursday, August 5, 2004

This summer I'm revisiting my short apprenticeship at Object Mentor. I'll be posting commentary on all my posts from the summer of 2004 exactly 5 years later to the day. Thursday 8-5-04 Well, knowing more about mocking objects would have helped a lot when I was writing my TDD Tic Tac Toe. Mocking Objects was, of course, one of the subjects of today's class. The whole day was devoted to TDD (the first day we were refactoring existing sample code) but I was pretty familiar with most of it except for the mock object pattern. Which seems like a big part and just goes to show that sometimes it's nice to have someone explain something to you even though you think you already understand it. I'm working with a possible future intern: Matt. He's at DePaul and might be helping OM out in the fall (he has to work around his class schedule). Matt's been taking a bunch of non-computer classes this summer so he's a little rusty in the programming department. And he kee

My Apprenticeship - Wednesday, August 4, 2004

This summer I'm revisiting my short apprenticeship at Object Mentor. I'll be posting commentary on all my posts from the summer of 2004 exactly 5 years later to the day. Wednesday 8-4-04 Good news! With Jet Brains' 'Resharper' plug-in installed, Visual Studio is way more fun. Not as cool as IntelliJ, but it's getting there. As you might have guessed, the TDD and Refactoring class is being taught in C#. The first day was weird for me: I realized that a few months ago I would have been way overwhelmed but now I was following along with ease. I wasn't some sort of huge revelation, it's just that while James was writing a bunch of UML on the board I not only didn't have that sinking feeling UML used to inspire but I knew what pattern he was going for before he finished. Cool. The course is shaping up like this: Basic refactoring and Unit tests today, tomorrow should be test-first programming with refactoring (always with refactoring), and I suspect we wi

My Apprenticeship - Tuesday, August 3, 2004

This summer I'm revisiting my short apprenticeship at Object Mentor. I'll be posting commentary on all my posts from the summer of 2004 exactly 5 years later to the day. Tuesday 8-3-04 Other than a little bit of time spent with Micah explaining Word Press to Bob, I was able to code all day. Whoo! Some hints from Micah yesterday and a lot of trial and error today led me to finally get the hang of testing methods that rely on user input from the keyboard. When the program is really running, I pass in a regular old keyboard InputStream (System.in) to my userInput method. However, in a test, I can load up a ByteArrayInputStream with all the values I want entered (separated by newlines, of course) and then every time a function I'm testing calls for a user input it gets my preset values instead. Which is pretty darn cool. Of course this took a large chunk of the day to get it working exactly how I want. Java IO can be a wee bit tricky. The rest of my time was spent applying the

My Apprenticeship - Monday, August 2, 2004

This summer I'm revisiting my short apprenticeship at Object Mentor. I'll be posting commentary on all my posts from the summer of 2004 exactly 5 years later to the day. Monday 8-2-04 Word Press has been successfully installed on the Object Mentor servers and 'ButUncleBob.com' should be available for blogging in a few days. So head on over there sometime soon and pick a fight with Bob Martin about some XP practice or other. The install, as usual, was a bit of a problem until we realized that since PHP and MySQL were installed separately, we had to run a program to make them talk to each other. Said program was downloaded, installed, and then everything went smoothly. Nice. Micah has now officially charged me with making a chess program to compete with his creation. Baby steps, Micah. First I gotta get it to let two humans play each other. After some discussion I've given up on my 'special moves class' because it's way more of a maintenance nightmare then

My Apprenticeship - Friday, July 30, 2004

This summer I'm revisiting my short apprenticeship at Object Mentor. I'll be posting commentary on all my posts from the summer of 2004 exactly 5 years later to the day. Friday 7-30-04 IntelliJ IDEA 4.5 just came out and there's a been a flurry of emails about how it lets you analyze your code. The Martins (Micah and Bob) are trading barbs about whose code is more redundant. Paul looked some 10 year old code he was working on and it had hundreds of repetitions. I've only just installed 4.5, so I haven't had time to try the new features. Dare I analyze my old projects? The pawn is killing me. My chess program takes the pretty obvious tact of having a ChessPiece interface from which all the pieces inherit. Bishops, Knights, Rooks, don't really need to know about the ChessBoard. You can just give them their move and they'll tell you if it's legal. The ChessBoard will do a check to see if any pieces are in the way of a move. But the Pawn -- What a jerk! Pawn