general

What tools are hitting my site?

April 24, 2003 0:42:03.587

I read this post on the usage of browsers with interest - IE is not at the same level of dominance (at least with the technical user population) that one might think. So I decided to analyze my site logs a bit, and came up with some interesting numbers. I just sliced and diced on things I recognized in the logs. One interesting thing - no one hit the site with Safari today. Here's what I got:

AgentPercentage of Hits
Internet Explorer31.8%
Mozilla/Netscape20.7%
Opera0.5%

Now, you'll see that there's way less than 100% there. It turns out that a significant proportion of the daily hits on my site are with RSS Agents and Bots. I threw bots into 'other'; here are the RSS stats:

AgentPercentage of Hits
BottomFeeder23.1%%
SharpReader4.1%
Radio Userland2.7%
Other17%

Now, the BottomFeeder statistics are elevated for this site, but it's still interesting that about 30% of the site's hits are for the RSS feed. It's also fascinating that Mozilla, rather than being insignificant (as it's often reported), is a sizable chunk. Looks like IE may actually have competition.

 Share Tweet This

rss

More RSS talk

April 24, 2003 9:24:42.754

There's more ranting about RSS this morning. Ted Leung cites Bill Kearney's post on "bad" RSS readers. What's a bad reader, you ask? According to Bill:

How about we all start mining our server logs and start 'outing' the bad RSS readers? Ones that don't:

  • honor scheduling instructions
  • use gzip to save bandwidth
  • follow and learn from redirects
  • use eTags
  • understand HTTP headers

Now, BottomFeeder does the big ones there - etags and gzip. I'm not sure what he means by "understand HTTP headers" - too vague. As to schedule - well, that's harder than he seems to think. For non-blogs, there may well be a regular update schedule. For blogs though - they tend to be "as the blogger decides to post". Heck, I've noticed that many of the news sites I read have updates more frequently than their schedule claims - so I'm not sure how much value that tag has in the real world. Supporting it wouldn't be hard; I'm just not sure it buys a lot.

Earlier, I posted support for another Bill Kearney rant on RSS feed bloat. However, I don't fully agree with him. He wants RSS feeds to be headlines only, and have the end user follow the links to full content. That works for news - but I hate that posting mode for blogs. When I said I don't want full content, I meant that I don't want a whole HTML page buried in the description. Headlines only I find irritating.

There's another interesting trend starting to pop up in this conversation thread over on Sam Ruby's Blog. Reading all the way through, I get the distinct impression that these people haven't seen NNTP. Why do I get that impression? Because the whole direction of the comment API, embedding RSS in other contexts, etc. - the direction that's heading is threaded conversations. Well, we have that already, in a non-bloated format - it's called NNTP. I suggest that these guys set up a moderated news group on one of their servers, because it will save them a whole lot of time and effort....

 Share Tweet This

development

Power Programmers and development

April 24, 2003 12:38:52.507

John Parkinson has an interesting article on development:

Back in the late seventies and early eighties, when I managed large, complex software projects for a living, I kept track of which programmers were contributing the most to the code we delivered to our customers. A typical development team consisted of eight to ten programmers writing and testing code for three months or so. We usually had about a dozen teams contributing to a development release, so each year I accumulated 40 to 50 sets of productivity data on both teams and individual programmers, covering the efforts of about 100 people. Between 1978 and 1983, I built up a pretty decent performance database.

The results were hugely skewed. Although the productivity of the teams didn't vary much (and everyone worked about as hard as everyone else), almost 75 percent of the final code came from just 5 percent of the programmers. And just about 100 percent of the "best" code (few initial defects, excellent efficiency) came from this same small group.

I think everyone's seen this - large projects tend to get pulled forward by the efforts of a relatively small subset of the entire development population. On some of thos projects, I was completely convinced that (literally) hundreds of developers could be replaced by a team of 1-2 dozen good people. It would certainly be cheaper than outsourcing. John goes on:

Just this year, I've come across a couple of software products that suggest Power Programmers are coming back into the mainstream. The first is Squeak, a sort of grown-up version of Smalltalk, which a few people will remember as the first real object-oriented development environment. Squeak encompasses an operating system, interactive GUI, development environment and tools that can run on anything (including a chip without a built-in operating system) with minimal porting effort (think a couple of weeks by a couple of people). The Squeak kernel code is only a few hundred "objects," which is why it is so easy to port. Squeak was developed entirely by Power Programmers, led by Alan Kay. It's an amazing example of what Power Programming can achieve. Take a look at www.squeak.org.(Squeak is open source too, and it will be interesting to see how, or if, it survives broader exposure.)

I strongly suspect that most open source projects work this way - out of the large body of people allegedly working on them, it's likely the case that a relative handful do most of the heavy lifting. No reason Open Source would be that dramatically different than any other form of development. Another set of interesting points:

With developer productivity and development process effectiveness high on a lot of CIO agendas these days, I'm starting to think again about applying the practices of Power Programmers more widely. I started by going back to my original data from the Seventies and Eighties. If just a few people were writing most of the code, what did the others do? Maybe if I could just identify the right people, I could get by without the rest.

As you might imagine, things were not that simple. Very few of the people on my teams contributed nothing at all, but a lot of them didn't contribute very much. I would have gotten a few additional points of productivity by eliminating a few people who were, in effect, "defect generators" - just no good at writing code.

I also discovered that although experience mattered, several of the Power Programmers were actually quite junior. And there was some work Power Programmers just wouldn't do - testing, documentation, release management and so on - that needs to get done if projects are to be commercially successful. The less accomplished programmers often ended up with in these roles.

I wonder how XP plays into that testing assumption. I suspect that John's Power Programmers wouldn't do large scale (after development) testing - but based on the people I see involved at the top of XP, I suspect that it's the way it's done, not the actual act. Interesting points anyway - well worth reading in full

 Share Tweet This

smalltalk

Alan Kay getting some more press

April 24, 2003 18:22:25.324

Clarence Westberg points out that Alan Kay gave an interesting talk on software and Squeak via this page:

Alan Kay gave a keynote about how much better 1960s software is than today's software, and he gave an awesome demo of Squeak; it's come a long way and it just plain looks fun to use.

Not sure what conference though :)

 Share Tweet This

rss

so about rss and update frequency....

April 24, 2003 19:11:35.142

I spent awhile exchanging email with Bill Kearney today. This was all in reference to this earlier post of mine where I said that there's little point in supporting a feed's stated update interval - and that was the point Bill objected to. Well, there was a reason I said there wasn't much point - very, very few feeds actually tell you what their update frequency is. RSS 0.9x support skipHours and skipDays - hard to deal with, IMHO, and unused by any feed I looked at (including Bill's 0.91>http://www.ideaspace.net/users/wkearney/xml/index.xml] feed, I might add). Then there's RSS 1.0, the overly complex atrocity committed by a bunch of people with way too much time on their hands - no, nothing in the spec to indicate an update interval. I suppose individual feeds could extend their 1.0 feeds with infomration - not that anyone would agree on what that is.... That takes us to RSS 2.0, which has a simple tag - <ttl> (time to live) - that would be easy to support. In fact, BottomFeeder does support it - has since the very first version. But guess what?

I see no one using it

So sure, BottomFeeder supports update frequency - but none of the feeds bother with it....

 Share Tweet This

development

The disconnect with UML (etc) based development

April 25, 2003 8:21:12.660

Matt Croyden cites Ara Abrahamian on visual development in this post:

This Visually Explicit Programming thread is so interesting.

Imho the biggest problem of UML and MDA-based software development is that, well, the code isn't even close to what you've diagrammed! I mean take a look at buildings around you. It's easy to map what the architect drew on his board to the real tangible building. With UML the diagrams are something the designer guy draws and understands but the real program has very little resemblance to it! The designer prefers to speak a more engineering-oriented language, UML, while the masons (developers) don't like or understand it because they have to build the damn building and the architecture they are given by the modeling guy is so different from what they build. They speak two different languages. That said there is value in a engineering-oriented bureaucratic approach too, after all the civilization is built by architects rather than masons, right? So fix the gap otherwise just shut up and don't preach it :-)

That matches every encounter I've ever had with modeling tool driven development. Worse, some team members tend to become mesmerized by the design tools, and get overly focused on things like the placement of boxes in the diagrams....

 Share Tweet This

news

Publishers are noticing blogs

April 25, 2003 10:57:55.398

Publishers are taking notice of blogs, but necessarily in a positive light. Via Doc Searls and jd's blog comes this tidbit:

Horgan is a former columnist for the paper who was transferred to the travel writing position earlier this year.

After losing his column, Horgan decided to set up his own Web page, where he has commented on everything from baseball to the Iraqi information minister to same-sex unions. "It kept me happy and gave me a chance to keep doing things that I wanted to do," Horgan told E&P Online. "I do it on my own time, from my own house. I'm not competing with the Courant. I'm not looking for advertisers."

But Toolan sees it differently. "Denis Horgan's entire professional profile is a result of his attachment to The Hartford Courant, yet he has unilaterally created for himself a parallel journalistic universe where he'll do commentary on the institutions that the paper has to cover without any editing oversight by the Courant," Toolan said. "That makes the paper vulnerable."

The editor added that allowing an employee to set up his own opinion blog was a bad precedent. "There are 325 other people here who could create similar [Web sites] for themselves," Toolan said.

So what's next as an employee - soul checks at the door? Sheesh....

 Share Tweet This

development

David Buck on domino effects

April 25, 2003 11:36:50.669

Why Smalltalk has an article by David Buck on the effects of changing code. He has some damning things to say about cross dependencies, and how they are worse in C++ and Java, where the static typing is "helping" you:

I get a knee-jerk reaction, therefore, when I see language designs that require wide-sweeping propagation of changes just to make one simple design change in the system. Often, these changes have a domino effect where one change requires other changes and those in turn require others. The end result could be a tremendous amount of work.

I ran into one such case when developing C++ code. I had flagged one method (member function in C++) as const. This means that the method doesn't change any instance variables of the receiver. Over time, I had refactored the member function into several member functions that called each other several levels deep and all declared as const.

I then noticed that the lowest-level function was performing a calculation time after time. I decided that it would be more efficient to calculate it once and cache the answer in the object. By doing this, however, I changed the "const" nature of the function and I had to remove the const declaration. When I did this, the callers of this function failed to compile because const functions are not allowed to call non-const functions. I had to follow the whole tree of calls removing const declarations.

In theory, this propagation could have had a domino effect through the whole system. On large systems, this kind of propagation could make it impractical to change the code.

A similar problem exists in Java's exception handling. Java requires that the programmer specially declare methods that raise exceptions by using a "throws" clause. In addition, any callers of those methods must either handle the exception or declare that they throw it.

Now, consider what happens when you need to change low-level code to throw an exception. Typically, these exceptions are caught at a high level by the application. In order to add the throw at the low level, all methods called between the throw and the catch must be changed to state that they throw the exception. To make matters worse, it's not only that one chain from the throw to the catch that must be changed. The changes branch out into trees of callers and could span many classes throughout the system. If any of those classes happen to be general utility classes or belong to other development teams, it may be impractical to change all users and it would therefore make the addition of the exception infeasible.

and here's the money quote:

Why is Smalltalk with its dynamic typing less susceptible to these problems? Dynamic typing allows the programmer to do the right thing without trying to convince the compiler that it's the right thing. Static typing requires the programmer to provide additional information to the compiler so it can double check the code. This additional information gets in the way when the programmer needs to make changes to the system.

It's a thoughtful, well written article, well worth your time.

 Share Tweet This

smalltalk

Maybe persistence does pay off

April 25, 2003 20:58:15.730

Alan Kay's talk at ETCon (link via ted Leung seems to be getting a lot of notice. I think what's going on is that the Java wave has come and gone, and things just aren't that different. Development is still hard; the tools are still not as good as what Lisp and Smalltalk had to offer 20 years ago. Sure, Eclipse is cool - if you come at it from a C language guy's POV. For a Smalltalker, it's just a pale reflection.

So along those lines, I was heartened to see this:

Squeak has been jumping on and off my radar for a few years now. It has a number of desirable qualities: small, totally portable, open-source. From the demos that Cory describes, it seems like there's a lot of functionality. James Robertson from Cincom has been gently persistent at trying to get folks to pay attention to Smalltalk again. My big beef has been the lack of an open source Smalltalk -- but Squeak persistently slipped my mind. Perhaps it's time to go have a look at Squeak...

I'm sure that people who know me will be astonished to see gently used to describe me :) Having more people looking at Squeak can only help the entire Smalltalk community - some of those people will decide to do commercial development with it, and they'll likely have a look at VisualWorks, or Dolphin, or VisualAge when they do.

 Share Tweet This

development

Static typing: The problem

April 26, 2003 1:39:24.080

People are starting to grope towards the idea that static typing is the problem. Take a look here - Ajeru is moving toward a Smalltalk point of view, whether he realizes it or not. For instance:

In mainstream OO languages, objects are associated with classes (types, interfaces, etc) at the time they are created. In the real world, this is not how it works. For example in a customer relationship management application, there will be different types of customers depending on the probability that they spend lots of money. To simplify things, say we have A, B and C customers. Business people talk about A, B and C customers and they specify different rules that apply to A, B and C customers respectively. But we cannot easily have classes for these types of customers because the type of a customer is a dynamic property that changes at runtime. The result is, we cannot capture these business rules in the same way that domain experts do. What we do in our designs is to introduce methods like isAdult() or getCustomerType(). But neither can we use this kind of "typing" to specify constraints, nor can we organise method dispatching based on such types. No polymorphism, just switch statements.

public class A extends Customer {
   definedby {
      getRecentPurchases() > CUSTOMER_A_THRESHOLD;
   }
}

public class B extends Customer {
   definedby {
      getRecentPurchases() > CUSTOMER_B_THRESHOLD;
   }
}

public class C extends Customer {
   definedby {
      getRecentPurchases() > CUSTOMER_C_THRESHOLD;
   }
}

No, it would not be easy, because among other things it contradicts static typing. A pity we must accept the fact that we have been betrayed.

Ok, that's interesting. I think he wants the decorator pattern, not the state pattern anyway - it seems that static typing has already clouded his mind. I found this reference on the fishbowl, where Charles attempts to deal with this. His explanation comes from the Java is all I, or anyone would ever have school of thought:

In Java at least, an object's type represents three different things:

  1. The messages that the object will respond to. This defines the object's interface.
  2. The code that the object will use to respond to these messages. This defines the object's implementation.
  3. An attribute of the object, of type Class.

Sometimes, people get stuck on the third one, and give it far more importance than is really necessary. There is nothing magical about the identity of an object's class. It's just another attribute of the object. Its primary value is as a way of determining which messages we can send to an object, something that is done often enough that Java gives us the short-hand operator instanceof instead of making us call Class.isAssignableFrom(). However, the existance of this operator shouldn't make us feel that the class attribute as an attribute is any more or less important than any other.

Yes, Java is the end all.... All this verbiage spilled because the crowd can't see that static typing is the problem - let go of it, and these artificial constraints disappear. As David Buck said brilliantly:

Dynamic typing allows the programmer to do the right thing without trying to convince the compiler that it's the right thing.

 Share Tweet This

BottomFeeder

BottomFeeder 2.9 news

April 26, 2003 1:59:19.241

The 2.9 release is getting closer. There are a few UI issues to resolve, but I think those will be easy. I re-did the downloads again - if you look at the dev builds page, you'll see that I've gone back to zip files. The entire directory structure is still being saved, so this change should be minor, and my hope is that it will make it easier to deal with the downloads.

 Share Tweet This

humor

I've been there

April 26, 2003 2:02:26.158

I have so been in this meeting

 Share Tweet This

BottomFeeder

arghhh - subcanvas heck

April 26, 2003 22:42:43.896

One more problem to overcome. Say I have a subcanvas, and widgetA is invisible in it. Now say I make the subcanvas invisible, then make it visible again. Is widgetA visible or invisible? The sad answer is that it is visible - the state is not maintained. I'm not sure whether this qualifies as a bug in VW, but it sure is irksome...

 Share Tweet This

smalltalk

Wow - Alan Kay's talk got noticed!

April 27, 2003 8:16:05.467

I've linked to these notes from Cory Docterow before - Alan's Kay's talk at ETCon is getting a lot of notice. This morning, Lambda linked to it. Something (good) is in the air :)

 Share Tweet This

development

I like this quote

April 27, 2003 8:20:16.135

Ted Leung points out that the Unix Hater's Handbook is now available online. I especially liked this bit of cynicism:

"In my more cynical/despairing moments, I like to tell people that computer scientists regularly reinvent the wheel, doing it a little bit worse each time around."

Heh. Some of us suspect the same thing happens with programming languages in our more cynical moments....

 Share Tweet This

humor

I think this is my ISP...

April 27, 2003 8:37:05.004

 Share Tweet This

development

Evan Williams doesn't like Wikis

April 27, 2003 9:50:36.432

I notice that Elizabeth Lane Lawley (posting on Evan William's blog doesn't think much of Wikis. Her basic complaints are in the presentation area:

You can spot a wiki page a mile a way. They all look exactly like the pages that my students used to turn out in basic HTML classes back in 1995. All they're missing are the rainbow-colored bars to replace the ubiquitous horizontal rules.

She doesn't get it. There is a problem with wikis, but this most assuredly isn't it. The problem with wikis is the lack of actual collaboration. In my experience, not that many people are willing to add content to a WIki. This is curious in a way, given that the markup is generally simple (regardless of implemementation)- but that's how it turns out. If you set up a Wiki for developers, a small percentage will go out and edit pages. A smaller percentage will create pages. You'll generally find 1 or 2 people willing to devote any time at all to maintenance of the Wiki page space. Now add non-technical people. Those numbers get even smaller. On a regular basis, I'll get email telling me that there's a problem on a Wiki page, along with the fix (for instance, a bad link). This is interesting. Someone went out of their way to send me an email about a problem page. It would have taken less time to fix the page.

Why is this? It's hard to say. It might be an ownership thing - people generally consider web pages to be content for consumption, not documents for editing - i.e., it's not their content, so they don't feel comfortable editing it. That's part of it, I think. There's also the scared by confusing markup crowd - what we (developers) think of as simple markup, non-developers see as confusing notation. Thus email reports - email clients are tools that people feel far more confortable with.

Which takes me back to Elizabeth's post. She seems to think that presentation is the problem, and I'm here to tell her that it's not. I think the population of willing posters to a hypothetical gorgeous Wiki would still be small. It's not the presentation that's the issue here. There's something simpler afoot here, and it's something that plagues web software in general. People like rich client software. People tend to not like basic editing tools - which is what Wikis use. Combine a Wiki with decent posting tools, and I bet you would see more collaboration. Combine it with more pleasant layouts, and I bet nothing much would change

 Share Tweet This

blog

New Comment Support on the blog

April 27, 2003 21:47:33.907

I've decided to support the Comment API that Joe Gregario proposed, and that a lot of the blogging community has picked up. So this blog is now accessible via any tool that supports the API from the client end - which will include BottomFeeder once 2.9 is released.

 Share Tweet This

development

Ted Neward has a few points on developers

April 28, 2003 0:32:25.798

I'm not sure I agree with his modelers/developers divide. He asserts that MS is a company of "techies" while Sun is a company of "modelers" (let's pause while this Smalltalker picks himself up off the floor. Sun and elegant design.... ROFL). However, in making his point he dissects Sun and Microsoft in interesting ways, and makes this point:

When you reflect on this for a bit, it starts to explain a lot about the differences in philosophy between the two platforms. Microsoft will never, ever produce an implementation of the CLI on a platform other than Windows, because they want to make sure that any implementation they produce is the fastest possible. Let's be blunt: anybody who's looked at the Rotor code and thought about the low-level hackery that would need to go on in order to make it a "real" implementation, and then thought about what it would take to port that to another platform has probably gone insane, raving incessantly and wildly to the cat. Microsoft wants to take full advantage of every last little nook and cranny of the underlying CPU where possible, and that's just not inherently portable. Sun, meanwhile, looks for ways to remove the underlying platform almost completely off your personal developer radar, stressing "platform portability" and "WORA", in order to push a "best-of-breed" solution that allows us as developers to choose, from a flat field of competitors, the best price-to-performance vendor solution we can find. Like good modelers, Sun's vision is to let the vendors play techie, you just focus on building good models that conform to the spec.

I think he's right about the feasibility of the MS .NET stuff on non-Windows platforms. Until or unless MS releases the Office suite on non-Windows platforms, they won't be gung ho about cross platform development.

 Share Tweet This

development

Dynamic Languages - ascendant?

April 28, 2003 8:27:18.363

Ted Leung has another thoughtful post on dynamic and static languages. Ted found Bob Martin's post here on the subject - from Bob:

I've been a statically typed bigot for quite a few years. I learned my lesson the hard way while using C. Too many systems crashed in the field due to silly typing errors. When C++ came out, I was an avid adopter, and rabid enforcer of strong typing. I scoffed at the smalltalkers who whined about the loss of flexibility. Safety, after all, was far more important than flexibility -- and besides, we can keep our software flexible AND statically typed, if we just follow good dependency management principles.

Four years ago I got involved with Extreme Programming. I liked the pragmatic emphasis it placed upon developing software. I also liked the emphasis it put on testing. Since then I have become test infected. I can no longer concieve of writing software without using test driven development. I can't imagine not having a comprehensive suite of unit tests to back up my development.

About two years ago I noticed something. I was depending less and less on the type system for safety. My unit tests were preventing me from making type errors. The more I depended upon the unit tests, the less I depended upon the type safety of Java or C++ (my languages of choice).

I thought an experiment was in order. So I tried writing some applications in Python, and then Ruby (well known dynamically typed languages). I was not entirely surprised when I found that type issues simply never arose. My unit tests kept my code on the straight and narrow. I simply didn't need the static type checking that I had depended upon for so many years.

I also realized that the flexibility of dynamically typed langauges makes writing code significantly easier. Modules are easier to write, and easier to change. There are no build time issues at all. Life in a dynamically typed world is fundamentally simpler.

Now I am back programming in Java because the projects I'm working on call for it. But I can't deny that I feel the tug of the dynamically typed languages. I wish I was programming in Ruby or Python, or even Smalltalk

Very cool - and this is a big change from "back in the day" when Uncle Bob was editing the C++ Report. I'm very pleased with the way that TDD and agile methods have been turning people's heads. Ted added some thoughts as well:

Very interesting... more and more smart, respected people are coming to the conclusion that we can do better than Java/C#, etc. The only thing I can fault in the article is the omission of Lisp in his list of dynamic languages.

I guess life for the Lisp advocates is even tougher than it has been for us Smalltalk guys - we tend to at least be remembered when this topic comes up :) Either way, the Smalltalk community needs to get its act together. If we want to play more fully in the coming rise of dynamic languages, we need to get straight with Open Source - because that's where all the grass roots stuff is going to happen. We can either be on the bus, or watching the bus....

 Share Tweet This

development

A Response to David Buck's article

April 28, 2003 9:27:15.415

It seems that David Buck's Domino Effects article (which I commented on here) has generated some interest. I saw this post from ceperez this morning:

(citing David's article)

Interestingly, the two examples he sites "const declarations" and "checked exception handling" are vivid examples of the problems of static checking. Both constucts seem to work well for small programs, however they don't seem to scale. Could it be that static typing works well for small programs and more of a nuisance with larger ones? I tend then to agree with the observations, static types tends to propagate throughout a system, and will have a domino change effect. That is, for "Programming in the Large", static type checking is problematic.

However, does that mean that we should get rid of static type checking altogether? I think that's too radical, any kind of static checking is extremely useful. However, we should always make an effort examine the extent of the static dependencies inside our system. Large systems tend to use a combination of both static and dynamic checking. For example, Eclipse is a large scale progam however its able to overcome the problems of static type checking. I don't believe that there's a Smalltalk program of comparable size to the Eclipse project. The evidence therefore exists that you can build large programs with static typing, however its interesting to know how to do this.

Large programs developed in a statically typed language is successfully acheived by exploiting a Component Model. That is, you structure the composability of your application in terms of a component model that uses dynamic typing. The advantage of using a statically typed language like Java over a dynamic typed one like Smalltalk is that with Java you can develop in both modes instead of exclusively in one. I think this alone statement sinks David Buck's arguments for Smalltalk

Using dynamic typing in a language like Java? First off, that mostly concedes the point to the Smalltalk POV - Using dynamic typing this way in Java (or C++, etc.) merely points up the inherent limitations in the static model. If you have to escape the model in order to achieve good results, what does that tell you about the model?

I also find this kind of thing interesting in another way - this post freely admits to a lack of experience with Smalltalk - but is more than willing to assert that Java better supports his "mixed mode" development than Smalltalk. It's clear that David Buck has a good level of expertise in both the static world and the dynamic world - and based on this post, I'm unclear as to how any of David's points have been sunken. Heck, most of the post accepts his points, and then veers off into what looks like rationalization at the very end. I suggest a reading of Uncle Bob's post on static typing and dynamic typing. Combine the points made there with David's article, and I think things will become much clearer.

Bottom line, I don't think the post sinks anything David had to say.

 Share Tweet This

blog

Comment API now actually works!

April 28, 2003 12:22:06.215

There were some issues with the Comment API code on the server until now. I had developed the code in VW 7.1, but this server is still running 7.1. The Web Toolkit was still evolving between 7 and 7.1, so the protocol that worked to grab the XML fragment for the CommentAPI worked in a 7.1 image, but not in 7. I set up the testbed 7 server locally, and sure enough, the protocol was slightly different. I adapted the code, and now all is well - I got a test comment up a few minutes ago.

 Share Tweet This

news

Blogging on the Lehrer Report

April 28, 2003 13:31:35.496

Awhile back, I was interviewed with some other folks by the Lehrer report for a story they are doing on blogs and blogging. Here's the email I just got:

After several months of work (and waiting!), the NewsHour story on blogs is airing tonight (4/28/03). Check your local listings for the time your PBS station airs the NewsHour. It should air at approximately 29 minutes past the hour. Whether you were interviewed for this story or provided some background information or assistance, thank you again for your participation. If you have any questions, please let me know! The transcript for this story should appear on the following page in the next couple of days:

http://www.pbs.org/newshour/media/index.html

Cool! My 2 seconds of fame has arrived :)

 Share Tweet This

rss

RSS and RSS Aggregators are getting noticed

April 28, 2003 14:16:40.549

Brian Livingston of Infoworld has noticed RSS:

I believe this is just the beginning of a tectonic shift that your organization must plan for. Soon after Microsoft made its move, other corporations such as Cisco Systems and Fawcett Publishing started their own RSS-compatible streams.

Dave Winer, the coinventor of RSS, says he was happy to find out that Microsoft's new feeds don't use proprietary tricks. As a result, the Microsoft feeds are compatible with any RSS aggregator.

When aggregators become widespread, many b-to-c newsletters will switch to RSS and drop now highly unreliable e-mail. I wrote three months ago that ISPs such as Hotmail and Yahoo, trying to stop spam, shunt to a junk folder or simply delete 25 percent of newsletters requested by subscribers (see More e-mail scandal, Jan. 6, page 22.)

I guess RSS and aggregation are about to hit the bigtime :)

 Share Tweet This

community

NC site back up

April 28, 2003 14:45:53.095

The NC Download site had a problem this morning, due to a protocol change I made to an underlying piece of code. Unfortunately, the server was still running with the old version of said code, so it never initialized when I restarted the server this morning as part of a test. In any case, the NC is available again - Sorry for the inconvenience

 Share Tweet This

blog

Larger Audience?

April 28, 2003 15:58:17.892

Looks like that blog bit on the Lehrer report will have a bigger audience - Instapundit has blogged it

 Share Tweet This

development

Not sure I agree, but...

April 28, 2003 21:01:21.335

Cringely has an interesting take on Open Source. Keep reading - he gets to open source in the second half of the article. Here's the gist of his point:

Here is the core argument: There are a thousand Open Source projects that get started out of need or fun, are maintained for awhile for fame, then get abandoned because there is no reason to go on. Eventually, the programmers come to understand that "users" are people who yell at you to fix stuff. So Open Source is inherently flawed. It only works because otherwise unknown programmers can get 15 minutes of fame using the Internet as low-barrier entry into introducing their skill to the world. Since they are introverted nobodies, getting a few emails from unknown users that say "good job!" feels great. But in time, most Open Source projects grind to a halt. The ones that survive are projects like Linux and Apache that have substantial involvement by PAID engineers. One could argue, in fact, that the idea of Open Source software being created by volunteers is a misnomer. Even Linus Torvalds is paid by Transmeta to be the God of Linux

This is an argument I've made more than once - that all the work done to make Linux usable was done once companies like RedHat started paying people to do it. One interesting aspect about an awful lot of open source is usability - it's the kind of drudge work that few people want to do (organizing menus, cleaning up the UI, etc) - but it's also the kind of work that is crucial for widespread acceptance of a product. Love them or hate them, this is something Microsoft has always understood.

Then Cringely goes on with some theories on how MS could crush open source efforts. I'm thinking this wanders a bit into tinfoil hat territory, but here it is:

It is possible to hijack an Open Source project since any Open Source team will automatically bend itself around the party doing the most work. What I find most interesting, however, is applying varying motives to the hijacking. What if Microsoft, for example, suddenly started devoting a lot of resources to Open Source development? They could throw a team at all the key projects. But why would they do that? Well, IBM is already doing it. IBM has hired most of the Apache team. IBM has some major pull on what work gets done and does not get done. In some cases, it is frustrating, and other cases not. However, everybody just accepts it because IBM is paying the bills and people can do what they love. Is there an official IBM party line at Apache? Absolutely not! It is just that none of the Apache developers will talk negatively about IBM, even those that do not work at IBM. So in this sense, it already appears that Apache has been hijacked.

Now consider an evil alternative. Say Microsoft assigns a team of programmers to help some Open Source project. Maybe this time that team isn't specifically identified as being from Microsoft, perhaps it is a Microsoft-funded startup. This team, because of its vitality and funding, quickly takes control of the project and goes running off in some particular technical direction, taking with it the rest of the suddenly re-energized team. But what if this new direction is not a good one? Even worse, what if the team gets far down that lonely road only to have Microsoft suddenly pull the plug, removing its team from the game? Would the project survive? It is hard to say, but if I was Microsoft that's how I would compete with Open Source, by subverting it. Microsoft can't compete on quality or price. And subversion -- since it is subverting a not-for-profit venture -- breaks no laws, nasty as it is.

I think he's wandered off the reservation with this stuff. The usability and paid work - I agree with that. The latter stuff? Tinfoil hat :)

 Share Tweet This

blog

My 15seconds of fame

April 28, 2003 22:34:57.645

My 15 seconds of fame came and went on the Lehrer Report tonight. Right there at the end of the segment they almost showed a shot of BottomFeeder :)

 Share Tweet This

smalltalk

Smalltalk in NYC

April 29, 2003 1:07:06.956

If you are going to be in NYC tomorrow, check out the NYC Smalltalk Users Group meeting:

The next meeting NYC Smalltalk meeting will be Wednesday, April 30th.

We will preview a live demonstration of a new sports-related web site, written entirely in VisualWorks Smalltalk with Javascript integration.

Our meetings are open to the general public. Anybody is welcomed to stop by and contribute to the discussion.

DateApril 30th, 2003
LocationSuite LLC offices
Address440 9th Avenue, 8th Floor
Time6:30pm to 7:00pm -- Open house
Time7:00to 8:30 pm -- Main Event

Directions:

Take E or C train to 34th (Penn Station) walk to corner of 34th and 8th. Walk up one block to 9th.

Sounds like a meeting I wish I could attend.

 Share Tweet This

cst

New CST Survey - 4/29/03

April 29, 2003 10:13:27.381

I have just posted a new Survey on the site. The topic this time: The VisualWorks GUI, native widgets, and GUI embedding. As always, your feedback is greatly appreciated!

 Share Tweet This

java

Frost in the Public Store

April 29, 2003 10:28:43.567

The Frost code was open sourced by Cincom a couple of years ago - it was an ObjectShare project to build a Java runtime into the Smalltalk system. It's languished for awhile, but someone is actively publishing it in the Public Store now. Have a look at the Frost package.

 Share Tweet This

examples

Using XML-RPC in VisualWorks

April 29, 2003 10:58:58.263

VisualWorks has supported SOAP for a couple of releases now, and the tool support for it has been improving. There's a simpler protocol that hasn't really been noticed by most Smalltalkers - XML-RPC. It's a very simple RPC scheme, using XML for the formatting of messages and responses, and HTTP for the transport. It hasn't hit the radar of most development shops, but it is in fairly widespread use in the blogosphere.

Blogs are very popular right now - according to last night's Lehrer story said that there are around 500,000 blogs in the US alone. It turns out that XML-RPC is an important mechanism in this world. How so? Well, the most widely used posting API is the Blogger API. It's a pretty simple (and not terribly sophisticated) api for dealing with and managing blogs. It uses XML-RPC as the messaging scheme. This is hardly the only usage - there are a variety of other uses as well:

  • Pingback, a specification for notifying other blogs that you have linked to them.
  • Trackback is another, older specification for link notification. It is similar to Pingback, but not typically automated
  • Blog Pings are a way of updating various blog aggregation sites that your blog has been updated.

The common theme here is that all of these mechanisms use XML-RPC. So how do you do that in VisualWorks? Fortunately, Roger Whitney, a professor at SDSU, implemented XML-RPC for VisualWorks. He did this in VW 3 using VisualWave. I've since added basic support for the Web Toolkit (servlet based) and posted my version in the public store - look for Bundle XML-RPC. It contains a client side implementation (for sending messages) and a server side (for receiving them). Let's have a quick look at them.

XML-RPC Client Code

The example I'm using comes from the code used to implement this blog. Whenever I make a new post, or whenever someone adds a comment, an update is sent to blo.gs, an aggregator that tracks blog changes. Here's how it looks:


sendBlogUpdatePingTo: server

	|  url name args response xmlRPC |
	url := self mainLink.
	name := self blogName.
	args := Array with: name with: url.
	xmlRPC := XmlRpcClient url: server.
	response := [xmlRPC 
		perform: self  blogPingMethod
		withArguments: args]
	on: self httpExceptions
	do: [:ex | Transcript show: 'Ping failed: <<', ex error String, '>>'; cr.
			nil].
	response isNil
		ifTrue: [^self].
	response isXmlRpcFault
		ifTrue: [Transcript show: 'XML RPC weblog.ping failed: <<', response description, '>>'; cr].

That's it - The XML-RPC client framework handles all the complexity of actually creating the XML document that is transmitted and sending it. All you really need to do is find out what the services are, and then create simple code like this. Now let's have a look at a server, as implemented in a Smalltalk Servlet.


executeMethod
	"entry point"

	| methodRequest xmlResult |
	methodRequest := self request webRequest httpRequest xmlRpcRequest.
	xmlResult := self performRequest: methodRequest.
	self fillResponseWith: xmlResult asRpcXml asString.


fillResponseWith: xmlResult
	response contentType: 'text/xml'.
	response status: 200.
	response contentLength: xmlResult size.
	response write: xmlResult.

That's pretty much it. You register the messages you can receive, and then simply have the server perform them. The framework handles creatinga valid response in an XML document from your objects. It's all pretty simple, as Roger took care of all the hard stuff. I've been using this on my blog for awhile now. You can take a look at my full implementation usage by loading the CST-Blog bundle from the public store. If you have any questions, feel free to email me.

 Share Tweet This

rss

Along the lines of bad RSS feeds...

April 29, 2003 12:53:39.857

Update It seems that this is not the expected behavior, but some kind of problem related to a server outage they had over the weekend. I've coded around it in the meantime - but hopefully it will be fixed soon.

There's been some talk about bad RSS readers - now I have a beef about bad feeds. Today I was reading Sam Ruby's comment feed and stumbled across something odd - the feed <link> element was set relative - to /blog. Well that's special. Relative to what? The guess BottomFeeder now makes is based on the feed URL - I strip off the elements after the domain, assume that's the base, and slap the relative URL onto that. It works in this case - but it's a hack, since there is no information in the feed which actually specifies the base URL. I can understand items having relative URLS - in that case, it's fair to assume that they are relative to the link element. However, if both are relative, you have to guess. Guessing is not robust.

 Share Tweet This

development

I've been where he is...

April 29, 2003 12:59:00.631

Scott Johnson discusses subtle bugs on his blog - and I identified with this piece:

Now I do ok intellectually but I honestly don't think I'm all that smart as a general rule of thumb. I've hired smart people before and they make me feel like a drooling idiot. Still I'm definitely both skilled and experienced and I read a lot which people sometimes attribute to smartness. And today those things reared up and smacked me in the head and then dribbled said head down the virtual basketball court and scored an extra point.

I don't actually do hiring, but as Product Manager I interact with a lot of very smart engineers in the Cincom Smalltalk development group, and I've helped interview people who have been hired. So I know exactly where Scott is coming from - I have experience, and I have a good grasp of the VW libraries - but I hardly count myself in the same league with a lot of the developers I interact with.

 Share Tweet This

general

Off to the TV!

April 29, 2003 20:04:58.024

Buffy and 24 tonight - off to the big screen TV!

 Share Tweet This

general

Wow

April 29, 2003 21:23:05.543

That was a pretty cool Buffy. Not whatI expected, and the show looks to be winding down in top form - which is a good thing, after last season. Now on to 24, where we see if the plot line continues to go beyond my ability to suspend disbelief....

 Share Tweet This

general

Well this is useless

April 30, 2003 0:47:41.835

Here I am with a notebook and a house LAN (wired and wireless) - and my battery is torched. It burned out this evening - I now have to shutdown the machine anytime I want to move it. Sigh.

 Share Tweet This

development

Alternate Title for Alan Kay's ETCon talk

April 30, 2003 8:36:19.167

Over on Sam Ruby's blog I stumbled across an amusing alternate title for Alan Kay's "Daddy are we there yet" talk at ETCon:

Now that my weblog is back on it's feet, it's time to capture a few thoughts on the last week's excellent ETCON Best of show clearly goes to Alan Kay's "Daddy are we there yet" presentation, though it equally well could have been titled "it must suck to be forty years ahead of your time".

Yeah, that about captures the way Smalltalkers feel when we survey the field of mainstream development....

 Share Tweet This

blog

Log Scanning

April 30, 2003 10:52:54.818

I've been scanning my logs again, and the results are always interesting. Over the last few days, IE and Netcape/Mozilla hits were nearly equal. I've also found that a full third of my traffic comes from bots - things like the Google Bot, Syndic8, etc. I suspect that I have a higher volume of Linux/Mac users hitting this site than many others - what I'd be truly curious about are stats from a more mainstream, non-technical site.

 Share Tweet This

news

Interesting take on the Lehrer Report

April 30, 2003 11:01:06.468

Scott Knowles has a very detailed take on the Lehrer blog story. Here's an interesting point - one which I agree with:

Is weblogging journalism?

Joan (MSNBC Editor): "One of the values we place on our own weblogs is that we edit our webloggers. Out their in the blogosphere often it goes from the mind of the blogger to the mind of the reader. And there's no back up. And I would submit that that editing factor really is the factor that makes it journalism. Are you making a mistake here? Do you really want to say that? Do you really want to use that word? Is that libelous? All those basic journalism questions that we always ask."

This is interesting to me because it's almost exactly what Henry Copeland and I briefly discussed after DC DOT COMM in January - He said much of the same.

However, this is where I disagree with Joan. Those are the "basic journalism questions that news media always ask?" (paraphrased). I think instead of saying the editor/writer structure makes MSNBC's blogs real journalism and others not is somewhat of a biased statement to the existing (or shall I say old) hierarchy in the news media.

There are different types of journalism. The journalism that blogging brings to the table is a singular person, gonzo style. In the flesh, without hierarchical control. And to the point of several in the story, blogging is participatory journalism. I would even call it conversational journalism. Conversations do not hold the same characteristics as broadcast communication. I would argue that there is a mutual understanding between reader and writer in much the same way that our real world debates and converses.

One of the things I like about blogs is that they more informal that news - conversational, as Scott put it. It's a good post, well worth reading

 Share Tweet This

development

Dynamic languages continue uptick

April 30, 2003 15:29:42.094

Ted Leung points out some reflection in Python. Seems to me that there is increased interest - especially in the TDD/Agile community - in dynamic languages. This is a very good opportunity for Smalltalk - if there's an XP users group in your area, you should start showing up at meetings and offer to demonstrate TDD in Smalltalk. No one's going to find out unless we tell them....

 Share Tweet This

blog

Well Well - ComputerWorld has a blog article

April 30, 2003 16:17:00.025

ComputerWorld has noticed blogging:

Early weblogger and developer Dave Winer (www.scripting.com) says weblogs have the following characteristics, which he sums up in the phrase "personal Web-based publishing communities":

  • Personal. Blogs are created by a single person, expressing a distinct personality.
  • Web-based. They're frequently updated, inexpensive to maintain and accessible via a Web browser.
  • Published. Automated publishing tools help the author present his words in an attractive format, and maybe even syndicate them.
  • Communities. Blogs link to other blogs and sites, acknowledging that they're part of a larger world.

Blogs have gotten a lot of notice recently - TV (Lehrer), trade rags - the works.

 Share Tweet This

development

Irony...

April 30, 2003 17:27:29.015

I noticed yesterday that my RSS feed wasn't validating. Running off with some assumptions, I tried all sorts of things that didn't work. So I asked a question in a conversation with one of our engineers, and he immediately noticed that there was a bad character in the feed.

Insert head pounding here

The Irony? It was in this post about subtle bugs....

 Share Tweet This

xp

Of Strawmen and XP

April 30, 2003 22:09:25.825

I stumbled across an anti-XP paper on the ObjectView site. I decided to take a look, and see what the author's beef was. I'm a little surprised at the sheer intellectual dishonesty involved here. For instance, the authors state at the beginning:

To start with, the complete title (which is "XP Refactored - The Case Against Extreme Programming") will give you an idea of what Matt and I are doing. By way of background, I got engaged in the XP debate originally on OTUG (the Object Technology User Group), mostly with Bob Martin and Ron Jeffries a few years ago (this culminated in quite an intense discussion about the Chrysler C3 project, and whether its cancellation meant success (as they claimed) or failure (as it seemed to many of us). Subsequently I've made a few attempts at satirical humor that have been pretty well received, notably "Alice in Use Case Land", which was a keynote speech I gave at UML World and recently repeated at the Rational User Conference, "Fragile Methods" which was a talk I gave at SD West, "Emperor's New Code", and then my son Rob and I have a lot of fun rewriting old Beatles songs, which we've compiled into "Songs of the Extremos."

Well let's just start with that, shall we? Based on what I've read on the c2 Wiki, the project died for the same reason that many projects die - politics. In particular:

Near as I can tell the fundamental problem was that the GoldOwner and GoalDonor weren't the same. The customer feeding stories to the team didn't care about the same things as the managers evaluating the team's performance. This is bad, and we know it's bad, but it was masked early because we happened to have a customer who was precisely aligned with the IT managers. The new customers who came on wanted tweaks to the existing system more than they wanted to turn off the next mainframe payroll system. IT management wanted to turn off the next mainframe payroll system. Game over.

That's a clear political problem. And yet the leading premise of the authors of this paper is that - since C3 failed, XP failed - these guys are big fans of some Iconix modifications to the RUP process. So by their leading argument, if any RUP project has ever died due to politics, RUP is a failure? Is this the kind of argument they want to make?

Let's move on. Their next strategic argument is the setting up of a strawman. In reference to "The simplest thing that could possibly work":

Well, there are many variations on this theme. KISS (Keep It Simple, Stupid) is one of them. And keeping it simple is, of course, a good idea in most cases. But let's examine the phrase "the simplest thing that could possibly work". Think carefully about what this means. This phrase goes beyond normal "keep it simple" advice. We do not build generality into the system in expectation of future requirements. We build the simplest objects that can support the feature we're working on right now. This is a very very different idea from just "keeping it simple". This says "don't think ahead about other requirements, just slap some code together for what you're building RIGHT NOW". This advice, in the hands of most programmers that I've ever met (and I earned my living writing code for about 15 years), can prove to be incredibly dangerous. What the Extemos ask you to believe is that "constant refactoring after programming" (do your own acronym) makes that all OK. It's OK to hack stuff together with rubber bands, bubblegum, and scotch tape today because you're going to refactor it tomorrow anyway. Uh-uh. Not for me.

You see that? YAGNI means, don't build more than you need to, since your guesses are unlikely to match future needs. They morph this into "hack it any old way and refactor later". It doesn't mean that. In fact, they know it doesn't mean that - either that, or they simply made wild assumptions a long time ago, and have stuck to them in order to justify their arguments. XP isn't about hacking - in a true Test Driven Development set up, hacking is the last thing that will occur. So again, these guys have translated a part of XP into something it isn't, and argued against that fake problem. The interviewer should not have let them get away with that.

Later, they complain that early deliverables results in the project going into maintenance at a very early stage. so what? BottomFeeder was delivered in its 1.0 incarnation at a point where these folks would have said it was not ready. The advantage of that was early feedback from real users who could raise real issues with what we thought were good ideas. We learned a lot that way, and have iterated to a much better product over time. It hasn't stopped us from big changes either - which is one of the "problems" they say will occur - entire subsystems - including the feed persistence mechanism - have been changed over completely more than once. It sounds to me like these guys have had the luxury of working on projects that are very stable, and where requirements change slowly - if at all. That's not the world most of us developers live in.

But wait, here's another whopper:

"My big issue with XP's approach is that pair programming is used as an excuse for not doing upfront design. That's completely bogus, in my opinion"
What's completely bogus is this assertion. Pair programming works from the "two heads are better than one" mindset, not at all from this silly statement. He goes on to make a whole lot of claims about how pair programming wouldn't work, based on two examples. Argument by anecdote, always a great way to build a strawman. But wait, there's more!

Actually, a nice aspect of XP is that the individuals get to sign up for the tasks that interest them the most in each increment, so their natural role in the team really does emerge. I would recommend doing that in any project, XP or otherwise - letting people identify the things that interest them the most. People are much more highly motivated when they are good at what they are doing, hence more productive. Of course you have to draw the line somewhere though: there are always "chores" that somebody just needs to knuckle down with and get done. And an added danger is that in a roomful of programmers, no one ants to do design, or test what they've written, or write things down. They just want to get coding: everything's a prototype, nothing is customer-facing, unless they are told otherwise. Sometimes you need someone in a position of higher authority (a team leader, say) to make sure the not-so-fun stuff gets done too. Otherwise, it's like having a house full of kids who are allowed to watch TV and eat ice-cream all day, but the washing-up never gets done.

I love his casual assertion that in XP, "chores" like testing won't get done. He's either never read anything about XP, or he's back to making wild strawmen up to combat. Either way, it's laughable. Test First is perhaps the most important tenet of XP. But it's so much easier to invent strawmen than to actually have a cohesive argument...

Bah

 Share Tweet This

xp

Of Strawmen and XP

April 30, 2003 22:09:25.825

I stumbled across an anti-XP paper on the ObjectView site. I decided to take a look, and see what the author's beef was. I'm a little surprised at the sheer intellectual dishonesty involved here. For instance, the authors state at the beginning:

To start with, the complete title (which is "XP Refactored - The Case Against Extreme Programming") will give you an idea of what Matt and I are doing. By way of background, I got engaged in the XP debate originally on OTUG (the Object Technology User Group), mostly with Bob Martin and Ron Jeffries a few years ago (this culminated in quite an intense discussion about the Chrysler C3 project, and whether its cancellation meant success (as they claimed) or failure (as it seemed to many of us). Subsequently I've made a few attempts at satirical humor that have been pretty well received, notably "Alice in Use Case Land", which was a keynote speech I gave at UML World and recently repeated at the Rational User Conference, "Fragile Methods" which was a talk I gave at SD West, "Emperor's New Code", and then my son Rob and I have a lot of fun rewriting old Beatles songs, which we've compiled into "Songs of the Extremos."

Well let's just start with that, shall we? Based on what I've read on the c2 Wiki, the project died for the same reason that many projects die - politics. In particular:

Near as I can tell the fundamental problem was that the GoldOwner and GoalDonor weren't the same. The customer feeding stories to the team didn't care about the same things as the managers evaluating the team's performance. This is bad, and we know it's bad, but it was masked early because we happened to have a customer who was precisely aligned with the IT managers. The new customers who came on wanted tweaks to the existing system more than they wanted to turn off the next mainframe payroll system. IT management wanted to turn off the next mainframe payroll system. Game over.

That's a clear political problem. And yet the leading premise of the authors of this paper is that - since C3 failed, XP failed - these guys are big fans of some Iconix modifications to the RUP process. So by their leading argument, if any RUP project has ever died due to politics, RUP is a failure? Is this the kind of argument they want to make?

Let's move on. Their next strategic argument is the setting up of a strawman. In reference to "The simplest thing that could possibly work":

Well, there are many variations on this theme. KISS (Keep It Simple, Stupid) is one of them. And keeping it simple is, of course, a good idea in most cases. But let's examine the phrase "the simplest thing that could possibly work". Think carefully about what this means. This phrase goes beyond normal "keep it simple" advice. We do not build generality into the system in expectation of future requirements. We build the simplest objects that can support the feature we're working on right now. This is a very very different idea from just "keeping it simple". This says "don't think ahead about other requirements, just slap some code together for what you're building RIGHT NOW". This advice, in the hands of most programmers that I've ever met (and I earned my living writing code for about 15 years), can prove to be incredibly dangerous. What the Extemos ask you to believe is that "constant refactoring after programming" (do your own acronym) makes that all OK. It's OK to hack stuff together with rubber bands, bubblegum, and scotch tape today because you're going to refactor it tomorrow anyway. Uh-uh. Not for me.

You see that? YAGNI means, don't build more than you need to, since your guesses are unlikely to match future needs. They morph this into "hack it any old way and refactor later". It doesn't mean that. In fact, they know it doesn't mean that - either that, or they simply made wild assumptions a long time ago, and have stuck to them in order to justify their arguments. XP isn't about hacking - in a true Test Driven Development set up, hacking is the last thing that will occur. So again, these guys have translated a part of XP into something it isn't, and argued against that fake problem. The interviewer should not have let them get away with that.

Later, they complain that early deliverables results in the project going into maintenance at a very early stage. so what? BottomFeeder was delivered in its 1.0 incarnation at a point where these folks would have said it was not ready. The advantage of that was early feedback from real users who could raise real issues with what we thought were good ideas. We learned a lot that way, and have iterated to a much better product over time. It hasn't stopped us from big changes either - which is one of the "problems" they say will occur - entire subsystems - including the feed persistence mechanism - have been changed over completely more than once. It sounds to me like these guys have had the luxury of working on projects that are very stable, and where requirements change slowly - if at all. That's not the world most of us developers live in.

But wait, here's another whopper:

"My big issue with XP's approach is that pair programming is used as an excuse for not doing upfront design. That's completely bogus, in my opinion"
What's completely bogus is this assertion. Pair programming works from the "two heads are better than one" mindset, not at all from this silly statement. He goes on to make a whole lot of claims about how pair programming wouldn't work, based on two examples. Argument by anecdote, always a great way to build a strawman. But wait, there's more!

Actually, a nice aspect of XP is that the individuals get to sign up for the tasks that interest them the most in each increment, so their natural role in the team really does emerge. I would recommend doing that in any project, XP or otherwise - letting people identify the things that interest them the most. People are much more highly motivated when they are good at what they are doing, hence more productive. Of course you have to draw the line somewhere though: there are always "chores" that somebody just needs to knuckle down with and get done. And an added danger is that in a roomful of programmers, no one ants to do design, or test what they've written, or write things down. They just want to get coding: everything's a prototype, nothing is customer-facing, unless they are told otherwise. Sometimes you need someone in a position of higher authority (a team leader, say) to make sure the not-so-fun stuff gets done too. Otherwise, it's like having a house full of kids who are allowed to watch TV and eat ice-cream all day, but the washing-up never gets done.

I love his casual assertion that in XP, "chores" like testing won't get done. He's either never read anything about XP, or he's back to making wild strawmen up to combat. Either way, it's laughable. Test First is perhaps the most important tenet of XP. But it's so much easier to invent strawmen than to actually have a cohesive argument...

Bah

 Share Tweet This

itNews

Sun whistles past the graveyard

May 1, 2003 0:48:08.287

File under "pay no attention to what's happening in the market" department, as a Sun spokesman says the following:

Linux is a good thing, but it isn't all things to all people. And companies that are making more than a tactical investment should be very careful to invest with their eyes wide open. I'll start with five major points:

The Linux story is mostly a brat pack remake of the Unix story It is going to take years for this story to play out as Linux matures Most of today's Linux buyers are merely taking advantage of commodity hardware and what I perceive to be a commodity operating system The future of enterprise computing isn't about the OS, anyway At the end of the day, many Linux customers will end up back where they started

Yeah, back where they started, on a Unix variant. Unfortunately for Sun, that Unix variant won't be Solaris. Linux is way cheaper, performant enough, and stable enough.

 Share Tweet This

general

ack - mail merge!

May 1, 2003 13:11:04.769

Today was my day to volunteer at my daughter's school - cut and paste day, usually :) Today was a little different - there's a bigevent coming up for the kids, and they needed signs printed. I figured how hard could mail merge be?.

Sigh. My printers absolutely refuse to print in landscape mode while doing mail merge. The print preview lies. Bordering a page with an outline, forget it. Word hit the peak of productivity at Word 2.0 - and has been downhill ever since....

 Share Tweet This

development

Yet more fun with log scanning

May 1, 2003 13:31:48.150

I got a copy of some of the logs from the main Cincom site and got some interesting information. As I expected, IE hits on the main site are much more predominant than on this site. Here, Mozilla/Netscape makes up 40% or so of the browser traffic - on the main site, 81% is IE, 13% is Mozilla/Netscape. Interestingly, far fewer bots hit the main site as well. The other cool part - almost 24% of the traffic on the main site goes to the Smalltalk side of it. All very interesting, when combined with my previous looks at the logs...

 Share Tweet This

general

We have linkage!

May 1, 2003 14:29:12.834

I've thought that Angel was better than Buffy all season long - but I also knew that, based on the way both storlines were progressing, there was going to have to be a link between them eventually. That's whatwe got last night - the link between the 2 story arcs. The last 2 episodes of Buffy should be very interesting, with Angel in Sunnydale...

 Share Tweet This

BottomFeeder

BottomFeeder Bookmarklet

May 1, 2003 16:54:58.615

I have created a BottomFeeder bookmarklet. What's that? Well, you can drag the bookmarklet (see below) to the links area of your browser, and it will add an RSS auto-discovery tool to your browser. As you browse websites, you'll be able to select the bookmarklet - and it will scan the page you are browsing for RSS links, and subscribe youto them in a running copy of BottomFeeder. The bookmarklet can be found on the BottomFeeder home page

 Share Tweet This

rss

Innovative use of RSS

May 1, 2003 20:16:13.698

Here's a coll use of RSS:

There is an RSS feed of the calendar for the programming language course I'm teaching. You can subscribe to it in your news aggregator and get a daily reminder of that day's lecture and what homework is due.

RSS is out in the wild - no telling what people will do with it :)

 Share Tweet This
-->