Posts

Showing posts from June, 2009

My Apprenticeship - Wednesday, June 30, 2004

I've moved my blog. Google's Blogger doesn't currently have a way to redirect to a non-Blogger url so here is a link to where this post lives: https://jakescruggs.com/blog/2004/06/30/my-apprenticeship-wednesday-june-30 . Sorry for any inconvenience.

My Apprenticeship - Tuesday, June 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. Tuesday 6-29-04 Well, I didn't drive today, but I did make some progress toward figuring out what was going on. We built a few custom widgets that would translate wiki text that was problematic (for instance: Putting three single quotes around something ('''something''') makes it appear in bold, and two are italics, so 5 should be both italics and bold, right? Not exactly, the FitNesse wiki was only catching the first 3 single quotes. So we used a regular expression (what's a regular expression? A bunch of symbols, which kinda look like swearing ("'''''(.+?)'''''" or ^#[^\r\n]*(?:(?:\r\n)|\n|\r)?), that look for patterns: like a word or words surrounded by five single quotes) to build a custom widget to catch just such a case). Su

My Apprenticeship - Monday, June 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. Monday 6-28-04 In the morning I installed 40 meg or so of windows 'critical security updates' and after lunch I installed MS Visual Studio. Then I went home. But seriously folks, that was a fair chunk of my day (2.5 hours alone to install MSVS). Paul and I paired on the OMwiki conversion (to FitNesse) project. I can't say that I'm understanding much. We had this big problem were we couldn't use the 'get' and 'set' methods, but I'm still not sure how we solved it. We did manage to get the conversion program to move all the files to the FitNesse wiki and emulate the FitNesse file structure. But we didn't actually convert the individual pages to FitNesse wiki text yet. I'm so out of it that, when I saw the program run and the files appearing, I thought somehow Pau

My Apprenticeship - Friday, June 25, 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 6-25-04 We finished the C# class today with an exercise devoted to Threads. In case you have some operation that will take lots of time (like, say, writing to a file) you can send it off on its own while the rest of the program continues on its own way. This is called MultiThreading and it's pretty cool. We designed a thread that scans a directory (folder) every second to see if any text files have been placed in it. If it finds any, it moves them to another folder. We forgot to kill the thread when we were done with it, so the test kept running after we thought it was done. When we tried to manually place some files in the forbidden directory they automatically moved away. Because the cowboys and I are nerds, we created a whole bunch of text files and tired to jam them in the folder before the progr

My Apprenticeship - Thursday, June 24, 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 6-24-04 You Cowboy has taken to saying 'sankyou' when Cowboy helps him out. Cowboy replies with an even more Asianized 'sankyou' and we move on. You Cowboy is also fond of saying 'RefRactor' and 'Ohh Cowboy'' (with this sort of world-weary sigh that's just perfect) There were times when I couldn't code because I was laughing so hard. A quality experience. The pattern that established itself is this: Micah introduces some concept in C#, such as event handling, and we stare at him confusedly. Then we do a project involving said concept. I get really confused, while the Cowboys trade barbs. Eventually we figure it out. And Cowboy checks his eTrade account. Repeat cycle. Incidentally, 'delegates' are really cool. They are methods that you can pass arou

My Apprenticeship - Wednesday, June 23, 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 6-23-04 More fun today with 'Cowboy' and 'You Cowboy.' We got to a point where I was totally lost. Finally. Monday and Tuesday were all about picking up small things and differences from Java. Today we got into some full on Polymorphism and it was cool/confusing. Cowboy and You Cowboy were all over it and, unfortunately, I was driving (had control of the keyboard). Cowboy started talking a mile a minute while You Cowboy had some helpful suggestions about topics unrelated. I had just about no idea what I was typing. I don't think pair programming works very well with 'pairs' of three -- sometimes there is too much going on and rational thought is impeded. Later I was able to catch on and here's what was happening: The CheckBook can take in Deposits and Checks, both of wh

My Apprenticeship - Tuesday, June 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. Tuesday 6-22-04 More C# today. I was working with two paying customers: Tony and Jeff. Watching those two bounce off each other was a riot. Jeff kept wanting Tony to type faster and Tony got even with Jeff by adopting an Asian accent (Jeff's Asian). Jeff wasn't super impressed with either TDD or refactoring so he kept advocating shortcuts, but Tony kept telling him to slow down 'Cowboy.' Why 'cowboy,' I don't know but it was pretty funny. We wrote a checkbook program today and we got to use polymorphism. A checkbook can take in deposits or checks, but both are really transactions. So we wrote an abstract Transaction class and then had the Check and Deposit classes inherit from it. It passed the tests, but I need to look it over because by the end of the day we had given in to Jeff

My Apprenticeship - Monday, June 21, 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 6-21-04 Long bike ride in the rain this morning. Only got scary when those 16 wheelers zoomed by throwing a few gallons of water at me and my wiener bike. Micah was teaching the C# class today and lots of it was familiar b/c Java and C# are pretty darn similar, but it was cool to review TDD best practices while working with someone who didn't know about 'em. I was paired up with one of the paying customers ('Tony') and we managed to figure out M.S. Visual Studio. It's kinda like FrontPage in that it tries to force you to do things the Microsoft way. The refactoring tools are pretty crappy -- no extract method option (which is my new favorite thing)! So Tony and I had to do our own refactoring which was a good exercise. C# does have a cool decimal class which gives you arbitrary pre

ORD Sessions and and introducing Flurn

I went to the first ever ORD session last night sponsored by Inventables and Google Chicago and worked on some metric_fu stuff. The idea of the ORD sessions is that there's a lot of open source developers in the Chicago (ORD is the O'Hare airport code) area so why not get them together to hack on some stuff. I'd say over 20 people showed up and had a great time. It didn't hurt that every one who came got an unlocked google phone as a free surprise gift. When they announced, earlier in the evening, that there would be a surprise we all thought: "Oh cool, I'll probably get a t-shirt or a squishy ball." So the phone sort of blew us away. As to metric_fu, Jeff from Inventables and I paired on a new meta metric called "Flurn." It's a combination of FLog and chURN and it tells you about files that not only are very complex but also change all the time. This is pretty bad because if the file is in constant flux and it's got a lot of

My Apprenticeship - Friday, June 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. Friday 6-18-04 I arrived this morning to find that the Martins are back in town. Bob seems like a good guy. I didn't talk to him much, but working next to someone all day can give you a good impression of a person and Bob seemed easygoing and fun. He also was trying to quote some obscure line from a classic Star Trek episode (you know the one where the crew of the Enterprise have been captured by an alien being (again) who wants to learn about humanity (as always) by having them play out some bit of 19th or 20th century history (this time it was the shootout at the OK coral)? Well, I do.) so that gets put in the plus column. Micah took a look at our project. Then he asked us what we thought the project was. Uh oh. 'Er, to change the OMwiki python code so that it operates more like the FitNess wiki?'

My Apprenticeship - Thursday, June 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. Thursday 6-17-04 You know what? I had fun today. Imagine that. Yes, some of the day was spent looking at the OMwiki pyhton code which still confuses the hell out of me, but I learned how to extract methods in Eclipse. I know I'm not the first person to say this but, the 'extract method' thingy is way cool. It makes it sooo easy to slice large pieces of crazy code into much smaller, friendly, bits. Almost fully automated creation of methods. Neato. The other fun thing I did today was getting my Python Tic Tac Toe to not only run, but to play perfect. It takes forever, though. David and Paul say it shouldn't take that much longer than Java, but it does. If the TTT board is empty, it takes about a minute to make a move. Yet more fun, I'm doing a TDD (Test Driven Design) re-write of Tic Tac Toe

My Apprenticeship - Wednesday, June 16, 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 6-16-04 The first part of the day was more crazy python code. I was asking Paul some more questions about the Visitor pattern and at some point, while he was describing some aspect or another, he said 'It's kinda like a linked-list.' This happens a lot. Somebody at OM explains some complicated thing with another complicated thing and I have to take a deep breath and say 'So, what is a linked-list?' At which point paper comes out and drawings are made and I realize that I hadn't really understood arrays until then. I'm so behind the curve in terminology it can be overwhelming. But, I should add, this is a thousand times better than being bored in my Java class. From way too slow to way too fast in one month. Total immersion is supposed to be a good way to learn a language. I

My Apprenticeship - Tueday, June 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. Tuesday 6-15-04 Rough day. There's only so long I like to stare at a mountain of code which doesn't work and I don't understand. Paul was frustrated b/c we still couldn't figure out why the tests of the OMwiki were failing. We sent Micah an email and his reply was pretty much, 'Oh yeah, I've run into that problem before. I don't remember the solution but it's one tiny thing that causes the whole suite to fail.' Nice. Well, Micah's on vacation so that's fine, but it's maddening to know that one line of code may be preventing you from even getting started. Welcome to programming. We spent the morning banging our heads against this wall, then, having accomplished just about nothing, we went to lunch. Paul thinks John Kerry is crafty for being spineless. I think he

Tribune Article about the Craftsman Swap

The Chicago Tribune wrote up an article about the craftsman swap I participated in 2 months ago: http://www.chicagotribune.com/business/chi-mon-craftsman-swap-0615-jun15,0,1513297.story My thoughts on it are here: http://jakescruggs.blogspot.com/search/label/craftsman_swap Basically Obtiva and 8th Light exchanged developers for a week. If you want to know more (and why) click on the links above.

My Apprenticeship - Monday, June 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. Monday 6-14-04 Today I took the train to Waukegan, and then unfolded my bike and rode the last five miles to OM. Good news: An hour to do some work on the train. 10 miles per day should help me lose some weight. Bad news: My commute now takes about 2 hours. There's a lot of hills. Now that I'm using Python, I tend to indent everything. Speaking of Python, I spent some time this weekend translating my Tic Tac Toe program into python. Most of the stuff is pretty easy. But it still took a fair part of today to complete the translation. And when I say complete, I mean it compiles, not that it runs. I'm having trouble printing out the board (my toString method won't cooperate) and I haven't quite got the hang of making complicated calls in python. This morning I met Paul, the

My Apprenticeship - Friday, June 11, 2004

I just wanted to point out that I'm not editing my original posts except where explicitly noted so all of this is really what I typed up after a day of coding. In this installment, I talk about my first day at Object Mentor as an apprentice. It's interesting to note that the "David" I refer to is actually David Chelimsky -- lead developer of RSpec. Of course Micah Martin is Bob Martin's (Uncle Bob) son and the guy who took a chance on me for the summer. Friday, June 11, 2004 Today was my first day at Object Mentor. It took about 90 minutes to fight through traffic in the morning, so I think I'll be looking into some sort of mass transit. Micah is on vacation in Branson, MO (he's been really nice to me, so I probably shouldn't make fun of Branson... much) so I walked in not really knowing what I would be doing. I was introduced to Susan and Telisha (secretaries), Lowell (seems like someone who's been with the company for awhile) and David. Dav

My Apprenticeship - May 2004

It's the 5 year anniversary of my 3 month apprenticeship at Object Mentor so I thought I'd revisit my original blog posts about my time there. Why? Well mostly because I used to collect LaserDiscs and really enjoyed listening to a director's commentary on something they had done many years ago. These days commentary tends to be done either right after the movie is made or because there's a financial obligation and it kinda cheapens the whole thing -- I'm hoping I can at least do better than "Larry the Cable Guy." Anyway, this first post was written in May of 2004 before I actually started working at O.M. And since it was the first post I think I did a pretty good job setting up my background. I should point out that I was a high school physics teacher at the time and so I was giving up my summer in a desperate gamble to get a new job. Most people, when I told them I intended to become a programmer without going to college, thought I was nuts but were

Iteration Zero

I spent the week doing an iteration zero for new project. The idea behind iteration zero is to get the development environment as automated as possible so developers can spend their time coding when the real development begins. So here's what we did: 1. Set up new git repository We use GitHub so that only took a few minutes. 2. Make new Rails app Again, just a few minutes 3. Set up geminstaller and basic gems (HAML etc.) Geminstaller installs gems needed by the project and makes sure they are there before starting the app. This functionality has been pulled into modern versions of Rails now, but I've found it a little wonky and I'm working with a former Pivotal Labs guy who just loves the Pivotal stuff (don't even get him started on Tracker vs Mingle ). 4. Set up developer tests. We looked into Shoulda , but ultimately went with RSpec (although we may use the Shoulda macros to test ActiveRecord) because most of the criticisms of RSpec are th

Hey did you know that some versions of Ruby 1.8.6 don't return the right error codes?

I didn't. The box I was setting up CruiseControl.rb on today had some crazy early version of Ruby 1.8.6 and so test failures returned a code of '0'. Which meant the build would not fail until I upgraded to a more modern 1.8.6. Patch level 114 did the trick. Why are we using 1.8.6 on a new project? Well mostly so we can run along side an older Rails app using 1.8.6, but also because 1.8.7 doesn't really offer that much more to justify the headache of running two rubys on one box, and finnaly because I have no idea when 1.9x will be acceptable on all the gems I use. Good times.