Friday, July 01, 2005
Berg's Chamber Symphony
What makes this music so interesting that you can talk about it for 3 times as long as the piece itself? Well, it would take me over an hour to explain! Here are some examples, though. This piece was written in homage to Berg's teacher, Arnold Schonberg, who developed the 12-tone method of composition. The first theme of Berg's work represents Schonberg, Berg, and Anton Webern (another student) with the motif Arnold Schonberg Anton Webern Alban Berg (using the German alphabet). So, the main theme of the work uses the names of the teacher and students. Another example: the second movement is a palindrome: it plays up to the middle (signified by the piano's only involvement in the 2nd movement) the plays in reverse to the end, using different combinations of instruments so that it's not immediately obvious. There are lots of mathematical features in this music: the first two movements have 240 bars each, and the third has 480 bars.
Needless to say, this is a fascinating piece of music, made all the richer if you understand the context of the time in which it was written and all the ideas that went into it. Many people who don't like modern serious music don't have the correct expectations or context. Just as the movie Memento is different than Casablanca, they are both great achievements. The same is true for serious music.
Thursday, June 30, 2005
Improving Your AIM
David has since blogged about AIM (nice acronym, very managerial) here. He's soliciting for people to help him develop a more or less objective measurement of just how agile a team really is. To quote: "the point is I WANT A WAY to compare the capabilities of teams implementing these [agile] processes." If this topic interests you, wander over to his blog and put your own $0.02 for what categories should be measured.
Wednesday, June 29, 2005
Riffin' at No Fluff, Just Stuff
The same thing happened last weekend at No Fluff, Just Stuff in Orlando. One of the speakers became ill at the last minute, and the organizer had to scramble to find speakers to fill his spots. I filled one of the talks, about fallicies in enterprise architecture, after never having seen the talk and having a whole 10 minutes to look at the slides for the first time. However, the talk came off really well -- I managed to talk for the entire ninety minutes, and got good scores. Because the problem domain was familiar, I was able to extemporize the talk, bringing my own experience to bear. This talk wasn't about tools or APIs, but about common fallacies developers face in enterprise situations. Well, I've seen a lot of that. Of course, I'm sure my rendering of the talk is no where nearly as good as the original and that the stories and experiences I bring are completely different from the original speaker. However, it reminded me of a jazz trumpet player showing up to a gig and saying "'Girl from Ipanema', extra solo after the chorus, and watch me for the finish. A-one, and-a Two, and...".
Tuesday, June 28, 2005
The Next Revolution: Language-oriented Programming and Language Workbenches
Thursday, June 23, 2005
Centralized Help in Eclipse
Friday, June 17, 2005
Windows eats itself?
So even Windows doesn't trust Windows Explorer anymore. Hmmmmm...
Tuesday, June 07, 2005
What You Know You Know, What You Don't Know, and What You Don't Know That You Don't Know
This illustrates, to me, one of the best reasons to have a public forum like a blog. You inadvertently learn all sorts of stuff if you are brave enough to try to teach others what you already know -- including stuff that you didn't know that you didn't know.
Monday, June 06, 2005
Reason # 431 Why You Should Use Cygwin/Bash Instead of the Windows Command Prompt
if ant; then ant runatest -Dtesttorun=com.thoughtworks.logging.AllTests; fi
This runs the default ant task (which builds everything). If the return code is 0, it then runs the "runatest" target. The test runs only if the build was successful. This little trick takes advantage of the fact that ant is smart enough to tell the underlying OS (regardless of the shell) if it passed or failed. The "fi" at the end is the "end if" indicator for bash.
Yes, you can create the same kind of little batchy kind of thing in Windows, but I never think to. It seems somehow more natural to me to think in terms of automation, shell scripts, and command chaining in bash than it does Windows. Maybe it's because bash is far, far more powerful than the command line tools in Windows. I never run anything in a Windows command shell now that I unless I'm forced.
Thursday, June 02, 2005
Notes from Singapore, Part 1
Monday, May 23, 2005
Singapore Slung
Thursday, May 19, 2005
XML Hell
One of the saving graces when Java first arrived was the freedom once and for all from DLL Hell. Of course, DLL Hell was really just the creeping scourge of versioning, and it came to Java with a vengeance in the form of XML Hell. I've been fighting with this little problem for the last few days. XML parsers and XSLT engines are supposed to be backwards compatible...the operational words there are "supposed to be". I'm working on a project where everything works great under JDK 1.4.x but causes blue smoke whenever you try to build it under Java 5. Turns out the problem is the version of the XSLT processor that comes with Java 5. One of the vendors of a 3rd party library in the application relies on specific behavior in an older XSLT processor that accidentally takes advantage of a bug in the older processor. The bug is fixed in Java 5, and causes everything to blow up at build time. Sigh....
The only platform that has gotten this right is .NET when using Strong Names (which can be a little cumbersome, but the fundamental solution is a good one). That's one area that .NET has definitely leap-frogged Java: versioning libraries. I hope that Java someday addresses this problem.
Wednesday, May 11, 2005
Management Mind Tricks, Volume 1
Here's how it works. If you disagree with someone on a technical point, and you know you are right and they are wrong (either from misunderstanding the problem, politics, underwear too tight, whatever), let them make whatever claims they want about their solution. The executor of the pattern calmly reminds them that his way is better for these calmly stated reasons. Let the arguer point to a phantom requirement, or phantom performance problem, or any other specious claim, and the executor remains calm and points out why his way is better. Repeat this pattern until everyone is saying that the executor's way is better. It takes quiet confidence, zen-like calm, and unshakable conviction, but it works. The recent application of this pattern by my friend (in conjunction with another pattern not of my devising) took 8 man-days but, in the end, they are doing it the right way.
This pattern only works if you are technically unassailable, and you have to concede if the arguer ever does make a salient point. However, the zen-like calm in which it is delivered still keeps lingering resentment over disagreements to a minimum. To be used sparingly in situations where nothing else seems to work and you are being asked to do something stupid for no good reason.
Monday, May 09, 2005
Hedonic Adaptation
For more information about this, check out this fascinating article Technology and Happiness in Technology Review. And, as much as it seems like it, that new Powerbook with Tiger on it won't make you blissfully happy...Well, maybe just a little. I'm willing to try.
Tuesday, May 03, 2005
Test-first Mine Sweeper
Back? OK, here's the thing. When I do test-first development, I write the test and go ahead and run it, knowing full well that it will fail. It's sort of a Zen thing, I guess. I know that it takes a little more time, but it's part of the satisfaction of seeing it fail then succeed shortly afterwards. Even this isn't so unusual.
I've found that I do the same thing when I play (what is to me) the New and Improved Minesweeper -- I do test-first clicking. Even if I know that there is only one possible uncovered cell nearby that this number can reach, I still double-button click on it to satisfy myself that it is the only one. It's test-first Mine Sweeper.
I really should get out more.
Friday, April 29, 2005
Google Desktop Search + Java
It indexes on the fly (it's amazing how fast it picks up new files), waiting on CPU idle time to kick in. The indexes on my machine currently take up about 1.5% of the disk. It changes the way you search for things, though...I'll give up 2% of my hard drive to get instant access to needles in a 30+ GB haystack.
Monday, April 25, 2005
Helpful/Annoying Software
I can't stand chatty software that's trying to be helpful. I understand the motivation (Grandma needs help when she runs (or, more likely, walks) the computer) but I can't stand it. The first thing I do when encountering a fresh Windows install is to turn off all the cute animations, tips, offers for tours, etc. Bob or his illegitimate son, Clippy, anyone? My latest rant-inducing episode: I just installed Visual Studio .NET 2005. It very helpfully rewired my operating system to open all .java files in Visual Studio when I double click on them (because they must be Visual J# files, right?) Arrrgh! It's not like I can't change it back, it's just annoying.
As a public service, here is how to turn off those nattering ballon tips that appear over the task tray and never seem to go away. Thanks but no thanks:
Registry Key: HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\Advanced
Data Type: REG_DWORD [Dword Value] // Value Name: EnableBalloonTips
Setting for Value Data: [0 = Balloon Tips Disabled / 1 = Balloon Tips Enabled]
Exit Registry and Reboot
Also as a public service, if you don't know about it, there is an entire web site dedicated (no, devoted) to fixing annoying software behavior: www.annoyances.org. Talk about a cottage industry with guaranteed growth...
Thursday, April 21, 2005
Andy and Joel
Both books are great reads, but the interesting juxtaposition between them is the cultural whiplash you get if you read them side-by-side. The Mac book is all about figuring out The Coolest Way to Do This Thing That Hasn't Been Done Before, mostly in Motorola 68x assembly language. It's frightening to think that the first Macs (you know, the ones with a graphical user interface) had only 128K of memory! The overriding concern was uncompromising excellence. Joel's book is much more pragmatic. It has lots of good advice for anyone engaged in software development. In fact, lots of the advice that I foist on people in my Clean Up Your Code talk overlaps with some of Joel's advice. In one of the chapters he talks about the battle within Microsoft between the pragmatists and the visionaries.
Which brings up the interesting question: when should you be pragmatic and when should you be visionary? If the Mac guys had been pragmatic, we would have had a slightly sexier Applet ][e, not the Mac. But, being visionary doesn't mean that you win or even survive (see BeOS, Amiga, NextStep, the list goes on and on). That's the razor's edge we talk as technologists -- figuring out when to be pragmatic (and get paid, keep a job, and other mundane concerns) and when to say "What the f%#k -- I designing a dialog box with rounded corners because it's never been done before!". For more information about this dilemma, see Rails, Ruby on.
Tuesday, April 12, 2005
Aspects in the Business Layer
While I was at No Fluff, Just Stuff Boston this last weekend, I got into a conversation with a couple of interesting guys (sorry, fellows, I didn't get your names) at lunch who had attended my Enterprise Debugging session. This always happens at No Fluff, Just Stuff events -- the conversations with other speakers and attendees at lunch and in the halls is at least as interesting as the talks. Anyway, we started talking about aspects and how mainstream they are slowly becoming. I stated my position (which I blogged about earlier) that I believe that they will gradually make their way from the boundary layer into the business layer much like OOP did (see my previous blog entry about this theory). Neither of them bought it -- they were both convinced that aspects are forever going to reside in the boundary layer.
Then, I challenged them: name some cross-cutting business concerns. We thought about it for about 30 seconds and came up with several: legal, regulatory, sales & marketing. These are business concepts that cross-cut the traditional business layer, needing just a little attention in lots of places. And that's why aspects exist. This re-affirms my thinking that we will see this type of code more and more as aspects become more mainstream. It took 1 believer and 2 skeptics about a minute to find where aspects fit outside the business layer. Imagine what we would find if we actually put some effort into it!
Saturday, April 09, 2005
Asperger's
This person has an intense and obsessive level of focus on things of interest and is often characterized by special (and possibly peculiar) gifts; one person might be obsessed with 1950s professional wrestling, another with national anthems of African dictatorships, another with building models out of matchsticks. Particularly common interests are means of transport (for example trains), computers, and dinosaurs. These interests are often coupled with an unusually high capacity to retain and recall encyclopedic amounts of information about the favored subject. In general, orderly things have appeal to these individuals, and they often manifests extremely sophisticated reason, an almost obsessive focus, and eidetic memory.
Sound like most of the developers you've ever met? Well, it's the Wikipedia definition of Asperger's Syndrome, a really mild form of Autism. Instead of seeing something like autism vs "normal" mental development, it's really more of a sliding scale. You've often heard that developers have special in-born characteristics -- I think these folks are a little more towards Aspergers than most. This explains a lot about the social skills and concentration abilities of really brilliant developers who don't interact well with the other humanoids. And why we can't get dates.
Update: Coincidentally, the very night that I posted this blog, I went to dinner with someone (very well respected writer and speaker) who has a child with Aspergers. He was telling me that this is a real problem in Silicon Valley -- geeks marrying geeks and having borderline autistic children. Talking to him made me realize that this entry might be construed to trivialize Asperger's Syndrome. That is not my intent at all -- it is a serious condition. However, talking to my friend drove home the point I made above even more strongly.
Friday, April 01, 2005
Leaving DSW
Consequently, my email addresses at DSW will no longer be active. If you need to reach me, you can do so at nford <at> thoughtworks.com or at neal.ford <at> gmail.com. Of course, you can keep up with my travels, career, and hobbies still at www.nealford.com and here at my blog.
Thanks again to everyone at DSW for making my employment stay there extremely rewarding on a personal and professional level and I wish them all the best as I move to another chapter in my career.