I just watched (well, listened to, mostly) a TDD webcast by Jim Newkirk of Microsoft and spotted something obnoxious.
The namespace for the unit testing framework in the forthcoming Visual Studio 2005 Team System is none other than
Microsoft.VisualStudio.QualityTools.UnitTesting.Framework
How crooked is that? They are going to change it, right? Right? I mean auto-complete helps, but still...
Here's a recent quote from Ilja Preuss, a fellow sheriff at the 'ranch:
How costly is space really, compared to what the developers cost? How much improvement in team performance would you need to justify the use of a team room?
See http://www.sciencedaily.com/releases/2000/12/001206144705.htm
Ok. Now this makes me a bit jealous. Really. Why can't we get that kind of a line-up come to Finland?
As a sad attempt at humour, wouldn't it have been ironic if they had sent Jim Shore to run a workshop for an offshore team? Sorry... I won't do that again...
Woohoo. There's a lot of goodies out there I haven't seen yet.
For example:
- Gunjan Doshi has (once again) submitted nice agile swag at testdriven.com
- Net Objectives has made their in-progress book on emergent design available online
- I'm definitely going to check out David "Geek Speak" Waddleton's MSDN webcasts over the weekend, and
- Reginald Braithwaite-Lee has put some of his agile-related presentations online (via Darrell)
This (via Andy Hunt) is a brilliant idea. A great example of thinking outside of the box, in my opinion.
Going through some of the blogs I've subscribed to but haven't had the time to read, I found plenty of those little gems that are the very reason I subscribe to the said blogs. For example, I made a note to myself to remember the reveal() technique mentioned by Owen Rogers. It's very relaxing, reading weblogs. I should do this more often. Or maybe I should go out more often...
Yes, I'm still alive... I've just been very busy with certain things I can't really talk about in public. Please forgive me.
(now onto my regularly scheduled link blogging)
First of all, I'm terribly sorry, Mary, but opensolaris.org is really not that big a deal -- at least not until there's actually something usable for the community to download and install.
It's good to see another Spring book getting released. I'm not sure whether I'll be buying Craig's book (although I'm very confident that it's a high quality piece of writing, in authentic Craig Walls style) since I'm anyway getting a complimentary copy of Apress' forthcoming Spring book any day now, but I'd still like to extend my congratulations to Craig for getting another book out. Then again, I wouldn't be surprised if I found myself skimming through Craig's book within a couple of months... "Hi, my name is Lasse and I'm a book addict"... Oh, and one more thing -- my condolences, Craig.
Aspect-oriented programming. Ever heard of that? Yes, I know it's the hottest thing right now -- right after the Paris Hilton video -- but it's also something I've pretty much ignored so far. I do read Adrian Colyer's blog on AspectJ to keep some kind of a touch on what's happening on that side of the geek universe. Unfortunately, reading entries like this only makes me feel small. I mean, how the heck am I going to learn all that new syntax...?
In the Googleplex, Cedric has come out of the closet as a SAX-fan. I'm not a SAX-fan. Not even a SOX-fan. Not even a Red Sox fan. I prefer DOM and XPath. Why? Ease of development and maintainability. I've written my share of SAX handlers that are basically building their custom DOM object model from the SAX events. If you don't know that you've got a bottleneck in front of you, don't optimize it. Just don't. And my condolences to Cedric as well.
Now back to me for once...
I've lately started listening to audio and video recordings by a variety of techno-celebrities while I do other stuff. For example, I'm quite certain that without JavaLobby making Vincent Massol's Maven presentation from JavaPolis available online, I would know much less about Maven (although I don't have any plans of migrating to use Maven instead of my beloved workhorse, the good old plain vanilla Ant). I've also got a couple of Ruby tutorials on my desktop as QuickTime movies, I've been listening to a number of IT Conversations (I have to listen to Ken Schwaber's talk again because those damn co-workers wouldn't let me do anything on the keyboard without at least one interruption per 5 minutes :), I've watched Mike Clark's two-minute introduction to CruiseControl, I checked out Steve Jobs' keynote at Macworld 2005, and so on and so on. Today, I noticed that I'm not the only one to notice a trend.
Last, I know I promised I've got things to say -- thoughts provoked while reading "Getting To Yes" -- but I've had to put those thoughts aside for now. I'll do my best to get rid of my "extra" activities so that I can start thinking again ;)
Here's what Ted Neward has to say about it:
Do remember whether you're stating the estimate in a terminal or on the tarmac.
Ok, I realize that it's a satire but I'd still like it if people would not post stuff like this, that is, satire that can only amplify wrongful perceptions of what TDD is about.
[Java] [CI] Another spam bites the dust (and spam is not the only thing that needs dusting...)
Mike Clark reminds me that I really should clean up my CruiseControl WeblogPublisher. It's still rather clunky inside and is definitely in need of a good vacuuming.
On other fronts, this makes me very happy. In addition to those on Google Blog's list, Simon Brown is adding Pebble to the list of good blogging software citizens.
Take a look at what Brian Button has been up to via Peter Provost. A rather interesting and thought provoking exercise, don't you think.
...and they thought we we're getting extreme back in December when I refactored away on a projector based on what the audience told me to. Heh. We only got down to 2-3 lines per method :)
Not that I would need encouragement, take a look at what Keith has to say.
I was just doing some desktop cleanup (of the Windows desktop, that is) and found a txt file with the following quote inside:
(going through the 500+ unread posts in my Yahoo! XP mailing list folder...)
Inspired by Ron Jeffries' Bowling For Smalltalk series of articles, Anthony Williams decided to do the same with C++ and convinced me not to ever look into C/C++ again (not too long ago, I almost bought a C++ tome second hand with the intent of refreshing my pointers).
I've never coded Smalltalk but the sheer terror of C++ templates, structs, and pointers is something I wouldn't mind never encountering again.
YES! It just occurred to me what I want for Christm... Umm... Damn. There's no special days for me until 7 months or so. Double damn.
The cryptic title there is evidence of this blog entry being just a quick enumeration of some things I wanted to record for the coming generations:
- Darrel points out an awesome Python IDE. I hadn't even realized that Python code could be illustrated in UML like that. Then again, I hadn't thought of doing such a thing in the first place...
- Mike Clark linked to a yet another real life automation story involving lights. You MUST check out the video embedded on that web page -- it's brilliant!
- Cedric is looking for a workaround for all the spam he gets. Apparently he's not using Gmail even though he's working for Google.
- And finally, please no!
Here is yet another excellent piece of Laurentesque writing:
Good programming consists of three components: method, insight, and form.
...which reminds me of Sun Tzu's work. I should probably find a copy somewhere (I don't think I have it but I know I've read quite a bit of it sometime during the last decade).
Via Mike Clark, Andy Hunt, Steve Eichert, I found this to be sad, pathetic, and what not, but most importantly, not surprising. It takes a decade or two for large organizations like FBI to adopt better ways of doing things simply because of all the politics, bureaucracy and face-saving involved.
[SW Eng] Two blog entries you shouldn't read if you're feeling dissatisfied with your work
Employment vs. Freedom by Laurent and Fired on the Tarmac by David Anderson. Ok, you won't start running around screaming after reading these blogs even though you are dissatisfied with your job but they do give you something to think about nevertheless.
And when you're done thinking about that something, you might as well continue your thinking by learning Python.
Heh. I just spotted Aslak Hellesoy's blog entry at his blog (the Codehaus server seems to be down again -- what a surprise...) and decided to take a look at what these awards where.
Here's a screenshot of the page as seen by me. Pretty impressive, don't you think?
In addition to being possibly the first XP training in 2005, the one I did last week was also quite possibly the first XP training in a while where the "coach" was drunk.
Ok. Next up, Joe Walnes posted a nice tip for testing timezone dependent code.
In the blogosphere, Mike Spille is still keeping a firm grip on his title as MVB (Most Verbose Blogger).
Finally, Bruce Schneier comes down on Windows in his blog entry on Linux security:
[The Honeynet Project] just released a report about the security of Linux:
Recent data from our honeynet sensor grid reveals that the average life expectancy to compromise for an unpatched Linux system has increased from 72 hours to 3 months. This means that a unpatched Linux system with commonly used configurations (such as server builds of RedHat 9.0 or Suse 6.2 ) have an online mean life expectancy of 3 months before being successfully compromised.
This is much greater than that of Windows systems, which have average life expectancies on the order of a few minutes.
That's it for now. I'll hopefully be back in writing about some more serious things later this week. For example, I've started reading Getting To Yes and it's raising some interesting thoughts.
|
|
My review of Dr. Neil Roodyn's eXtreme .NET has been published at the 'ranch. I gave the book a 7/10 rating -- read the review for details. |
(I'd be so happy if only people would stop writing "eXtreme"...)
What a great idea. Seriously. Using a medium like a colored pipe cleaner to give instant feedback to a speaker could do wonders in situations where the audience is culturally programmed not to say anything even though they're not getting anything out of the presentation -- just to be polite.
When I'm talking, I try to see hints about how I'm doing and how should I perhaps correct my direction. I want to see those hints.
The problem is that people tend to subconsciously tone down their visual cues and explicitly decide not to say something out of politeness. Using a silly tool like a pipe cleaner could indeed help -- handing out those pipe cleaners would be a clear sign that feedback is wanted and people wouldn't need to worry about formulating the feedback into a polite enough sentence.
Similar facilities are being used in some webcast products, for example, where the audience can switch themselves to red/yellow/green state to let the speaker know that he's going too slow/fast.
Heh. Just as I had given Ruby and other scripting languages a bit of a bash when talking about functional testing tools as part of this week's XP training, I noticed that they had released a 1.0 version of WTR. I should probably check it out and see if the tests have become less verbose than they used to be.
(PS. I didn't watch those Ruby/Rails .mov's last night)
DAY 1
So, the first day of my XP development practices training in Riga is over. I'm definitely happy about how the first day turned out.
Of course, there are a bunch of things that I would've hoped to have gone better and since I'm into reflecting in the open... Well, here we go.
Before lunch, we talked about object-oriented design and refactoring. These sessions went really well, I think, although I didn't quite manage to illustrate some of the ideas. Maybe I should try more code next time. Or maybe not. It was really interesting to see the guys in the Riga office more or less exhibiting the same views on things that my fellow Finns tend to back home.
We ran some 30 minutes over the three hours I had scheduled for the OO and refactoring stuff (we also started 15 minutes late but I already know to expect that when making schedules) so we only managed to cover the very basics of developer testing before lunch.
(LUNCH)
Now, the lunch was both a good thing and a bad thing. The good about it was the guys took me to this very nice restaurant and the food was fantastic -- and with half the price of a typical Finnish industrial kitchen where the food sucks more and more every day and the prices keep on going up, up, up. The bad thing about the lunch was that it took 15 minutes longer than scheduled.
After lunch, we continued with developer testing, going through the main mock objects frameworks, how to test J2EE components such as Java Servlets, JavaServer Pages and Enterprise JavaBeans.
Observations on what I should look into improving about the set:
- Spend more time on the different kinds of mock objects before diving into examples
- Spend more time on the different patterns present in unit testing
- Maybe I should've scheduled the topics in such a way that the use of different libraries would be more or less in order instead of jumping from library to library and back. Maybe. I don't know. Maybe I'll know after sleeping on it. Or when I get the feedback.
- Don't put two exercises one after another. Either combine them into a single exercise or spread them out a bit. You can come back to comparing the various approaches/cases/whatever later on.
- Maybe spend a bit more time on testing EJB's (using examples that are closer to Real World).
- The TDD stuff was a bit too aggressive. I really should back this stuff up with (two-way) discussion. Being late of the schedule obviously made things worse but it would probably have been too aggressive in any case.
- I should make a more clear separation of customer testing and writing automated functional tests. The two seemed to merge together a bit which isn't a good thing.
Ok, that's it for now. I'll have to run now to get something to eat before diving into tomorrow's lab (I got yet another idea for it so I'll try to make it happen before 9am...).
DAY 2
Alrighty. I managed to come up with a pet project that the team could practice their newly acquired knowledge with and that remotely reminded their actual real world project(s). Later on I heard that I got almost too close with my made-up application domain...
At the last minute, I decided to pull away all the source code I had managed to pound in before today. I felt that providing code would cause confusion and believed that the guys wouldn't have too big problems getting started. They didn't.
What the team did have problems with was to get into the "deliver little but often" zone. That's what I expected. We did the exact same thing when first trying out XP with Frank Westphal.
(LUNCH)
Ok. Back to work. We've still got three hours to do some iterations. So far, the idea of doing stuff in iterations hasn't really sinked in. In hindsight, I should've talked more about the process and agile project management in general, probably right before introducing the lab exercise. It would've balanced certain things during the exercise.
...
Ok. I'm back at the hotel after another long day. I have to try to get some more sleep before this kind of full-day trainings. I actually had trouble staying awake at times since I wasn't talking too much during the lab exercise.
Lots of things to write down about the lab. The core lessons I hope I'll remember were 1) stronger focus on keeping the lab exercise disciplined instead of talking to Bill (insider joke, sorry...), and 2) prepare the full environment instead of letting people download and install application servers on the spot (the idea was, of course, that I didn't want to impose too much technical decisions to the teams but I see now that--at least for this particular assignment -- it would've saved a lot of time for other, more important things that would've been more relevant to the topic).
Something that I feel I should've known by now was that people actually need more warmup for their brains to participate fully than the instructor who's doing the talking. One specific topic I perhaps should've "warmed up" with was the objectives of the course itself. In the end, it wasn't so clear which parts of XP I'm leaving out and which are covered so the big picture might've been a bit confusing without prior awareness of XP.
Also, looking at the feedback forms, I see that there's a lot of writing for the freeform questions -- that's great. That's simply great. There's nothing better than to "hear" someone explaining *why* he liked or didn't like something instead of "just giving it a rating". I love feedback. If it's bad, I don't like it at first, but it doesn't take long for me to value the "negative" feedback even more than the positive ones.
Trying to summarize the ticks on the feedback forms, I see that people liked the material and exercises very much, considered the course perhaps a bit too short (it definitely was because I didn't talk about the project management stuff explicitly, only when someone took it up in some other context), weren't being motivated enough by your's truly, and the topic people felt being most relevant to them was the testing techniques and refactoring.
...
Finally, guys, if you happen to be reading this, let me extend big thanks to all of you for a very entertaining two days. You were a fun bunch to work with. I'd be happy to come back so just say the magic words to Suba and others ;)
...
Ok. I'm out. I'm totally spacing here. Maybe I should get rid of those two Ruby/Rails .mov files on my desktop by actually watching them. Then again, I'll probably fall asleep if I stay here on the bed.







