Posts

Showing posts with the label commentary

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...

My Apprenticeship - Thursday, July 29, 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 7-29-04 So I was doing one last re-install of Word Press, just to make sure I understood everything that could go wrong -- But apparently there was one more thing. I just couldn't sign in from my laptop when I pointed it's browser at the Linux box. I know I had the right login and password because it worked on the other machine. After spending too much time messing around in the Linux terminal, I went back to my laptop, deleted the cookies associated with that website, and everything was fine. Cookies are a problem. The chess program is proving to be an interesting problem. Everything wants to know about everything else. Must... Manage... Dependencies... "Everything wants to know about everything else" I fight this battle every day. And I continue to fight cookies and other browse...

My Apprenticeship - Wednesday, July 28, 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 7-28-04 Not a whole lot going on today. I messed around with Word Press. Paul continues to remove the html from FitNesse. Which is more like storing the html inside methods so that the chance of a typo is reduced -- if you have to constantly add in a bunch of cryptic strings then you probably will mistype somewhere which can cause hard to find problems. However, if you make a method that adds in a html tag, then either every instance of that tag works or fails. The IDE will tell you if you've entered the method correctly, thereby reducing the chance of a typo causing a troublesome error. Susan and Ellen are pretty swamped under the pressure of getting XPAU up and running. David's having a good time with his class, but they're working him like a red headed stepchild. I got to meet Micah...

My Apprenticeship - Tuesday, July 27, 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 7-27-04 Today I worked on cleaning up Word Press so that it looked nicer and behaved better. Alex King was nice enough to hold a contest for the best Word Press skins and publish the results here: www.alexking.org/index.php?content=software/wordpress/styles.php For now, 'But Uncle Bob,' is using the 'Dark Fire' skin. I also spent a fair amount of the day figuring out the various features of the program so that I can teach Micah when he comes back. Once you get it working (and, if the server has already been set up for you, that is not too hard) WP is a nifty little program. Tomorrow I think I'm going to wipe the Linux box, reinstall the OS, and put WP back up because the first install was so crazy that I'm not completely sure I can repeat it without wasting a whole bunch of Micah...

My Apprenticeship - Monday, July 26, 2004

Image
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 7-26-04 Word Press is up and running! I had a bunch of ideas when I arrived, but before I got too far I said to my self: 'Self, maybe you outta try starting Apache, MySQL, and run install.php from Mozilla just one more time' Well, I wouldn't be telling ya about it if it hadn't worked. Of course when I say it worked, I mean that the install actually started but not that everything was fine from the get go. First I gave it the path that the wordpress folder was in, but not where the files were. So everything failed, but did so is a way that I could see that every place it was looking was missing a '/wordpress' so I fixed that. Then I tried to look at it on another computer but I was getting a screwed up version of the site. What wordpress really wants when it asks for the location ...

My Apprenticeship - Thursday, July 22, 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 7-22-04 Finished up the patterns class today and I have to say that David did a pretty good job. With new material, not much teaching experience, and Paul and I firing questions at him he was able to get through the class rather easily. Sure there were some confusing slides and weird-ball patterns, but the cool thing about OM giving him this week to flesh out the course is that he can make note of the problems and then talk to Micah or Bob to straighten things out. Next week he does it for real with paying customers and I think he'll do fine. I, however, need to write more code. This Word Press/Linux/MySQL/Apache/PHP adventure I've been on has been very informative but sorely lacking in full-on coding. I need to remember to ask Micah (or Bob, or David, or Paul) for some advice on a side project...