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

rss

Car wrecks and RSS

May 2, 2003 0:37:13.790

I came across this post about the ongoing arguments over RSS between Bill Kearney and Dave Winer. I watch this sort ofthing with an amused air of detachment; I just work on an aggregator - I don't feel all religious about tag intricacies. Anyway, this is just precious:

Just a little preview of today's episode on the syndication list

Dave: Now I'm filtering his (ed: Bill) email in such a way that it's deleted on the server, I'll never see another message from him, so I won't be able to rebut it. Please assume that I would if I had read it.

Bill: Oh bull****, you've threatened that nonsense before. You're too addicted to all the attention to ever possibly ignore it.

And as with real day time television, you are almost too embarrassed to watch (and you certainly won't admit it), but you cannot get your eyes of it once it is on, just like that car wreck you passed on the highway

The funniest part is the comment thatcame in there:

The first car wreck you pass in a day, sure. The third, maybe. By the twentieth, you just wish the b******* would learn how to drive, so they could stay out of your way and let you get to work.

lol

 Share Tweet This

smalltalk

ESUG Keynote speakers

May 2, 2003 8:18:52.350

ESUG looks good again this year - the list of keynote speakers is out:

  • Lars Bak
  • John Brant
  • Vassili Bykov
  • Dan Ingalls
  • Joseph Pelrine
That's a powerful lineup. This year's event is being held in Bled, Slovenia, August 23 - August 29. The blurb on this year's meeting:

The entire ESUG Smalltalk Conference Committee is pleased to invite you to contribute to and actively participate in this 11th edition of the main European conference on Smalltalk. Continuing a strong tradition, the attendants will enjoy tutorials, workshops and demonstrations on various Smalltalk related subjects.

Since last years attendees enjoyed having a Camp Smalltalk during the conference, another Camp is planned for this conference edition too. New this year is that the talks are scheduled primarily in the morning and that the afternoon focuses on concrete collaborations between participants and workshops.

This year the conference will be held in Bled - Slovenia from Saturday, August 23 to Friday, August 29, 2003. This is the first time that the conference takes place in a country of Eastern Europe. We're very excited by meeting Smalltalkers in a very beautifull place in mountains.

Looks good, wish I could be there. That's still the week my daughter starts school....

 Share Tweet This

development

Object-Hierarchical Impedance Mismatch?

May 2, 2003 9:13:59.265

Ted Neward wonders when Object-Hierarchical Impedance Mismatch will start getting talked about:

But what happens when objects don't form nice, natural trees?

Hierarchical data models are not new; in fact, the relational data model was an attempt to find something easier to work with than the database systems of the day, which were similar in concept to the hierarchical model we see in XML today. The problem with the hierarchical model at the time was that attempting to find data within it was difficult, since users had to navigate the elements of the tree manually, leaving users to figure out "how", instead of focusing on "what"--that is, how to get to the data, rather than what data they were interested in.

With the emergence of XML (and the growing interest in "XML databases", despite the inherent ambiguity in that term), it would seem that hierarchical data models are becoming popular once again. While a full discussion of the implications of a hierarchical data model are beyond the scope of this book, its important to discuss two important things: when we're likely to use a hierarchical data model in J2EE, and what implications that's going to have for us a Java programmers.

While the industry currently doesn't recognize it, the mapping of objects to XML (the most common hierarchical storage model today) is not a simple thing, leading one to wonder if an object-hierarchical impedance mismatch is just around the corner.

Now there's an interesting question. We spent the 90's focused on the object-relational mismatch - looks like it's back to the future! Thinking about it,. XML storage isn't a lot different than the old hierarchical datamodels that prevailed before the RDBMS revolution. Somewhere, an old Cobol hacker at IBM is laughing his socks off....

 Share Tweet This

development

I'm no O/R expert, but....

May 2, 2003 9:56:53.688

Ted Neward has a post on O/R up. I raised this post on the Smalltalk IRC channel to general snickers - I'll probably have a more detailed critique from an O/R expert later. In any case, I'm reading along and come across this:

If none of these approaches seems particularly what you're looking for, particularly because they still seem like too much work and too awkward to work with from within Java, another approach is to make use of the recently-standardized SQLJ, or "embedded SQL for Java", specification recently approved as part of the SQL-99 specification. As with other embedded SQL technologies, SQLJ allows a programmer to write SQL statements directly within the Java code, which is then preprocessed by a SQLJ preprocessor, turned into regular Java code and fed to javac as a normal compilation step. The SQLJ preprocessor takes care of any of the call-level interface logic in your Java code--you just focus on writing the SQL when you want to talk to the database, and on Java when you want to do anything else.

The easiest way to use SQLJ is to use static SQL statements embedded in the code directly, what's known as SQLJ clauses:

Ummm.... you build a data access layer with embedded SQL all through it? One of the first Smalltalk applications I built (way back in the early 90's) did that, because at the time "it seemed simple". Then the schema changed, because the dba's decided it needed changing. Boom crash, broken app, with changes required all over the place. IMHO, embedding the SQL this way is as silly as scattering hardcoded constants all over the place - it doesn't scale.

Then there's this:

One major drawback to SQLJ, however, is its relative lack of support within the J2EE community. Although the J2EE and EJB specifications do mention it by name as a possible data-access technology layer, it receives almost no attention beyond that. Oracle is the only major database vendor to have a SQLJ implementation available as of this writing, and there seems to be little support from the community as a whole, which is a shame, because in many respects this is the epitome of a relational-first persistence approach.

So not only is it a terribly bad idea, it's unsupported for the most part. "Here use this approach that cripples your application maintenance, and obtw, better stick to one DB". Bah. It looks more and more to me like Gemstone is like Da Vinci - brilliantly ahead of it's time, simply outside the grasp of the current crop of developers....

 Share Tweet This

smalltalk

Smalltalk in Information Week

May 2, 2003 11:21:08.120

Now here's something cool. very nice article on Smalltalk, web services, and ease of development:

There's more talk about Smalltalk these days, as the object-oriented programming language gains something of a developer following for Web applications. The notion of Web services, where one discrete piece of software talks to another without knowing very much about the other system, was a concept that originated in Smalltalk, say implementers of these new apps.

Now there's a nice piece of news - something that will hopefully catch some eyes. There's more:

Some experts point out that Java, C++, and Microsoft's C# are evolving in a direction set over 30 years ago by Smalltalk, yet rarely do proponents of these languages acknowledge their debt. Such oversight only reinforces the undying loyalty that some developers feel toward the language. "I will quit coding in Smalltalk when they pry the keyboard from my cold, dead fingers," says Karen Hope, chief architect of an online Smalltalk insurance-quote application at the St. Paul Companies Inc.

And then this, from Allen Davis:

Smalltalk is "by far the best programming language available for Web and enterprise development," says Allen Davis, the new executive director of the Smalltalk Industry Council and CEO of Smalltalk vendor Knowledge Systems Corp. When it was first conceived by Alan Kay and his team at Xerox Palo Alto Research Center, Smalltalk was regarded as a resource hog. But as systems grew in processing power, Smalltalk began to come into its own. As part of its effort to revitalize the language, the council is organizing its first Smalltalk Solutions Conference, July 14 to 16, in Toronto.

Some other developments are in Smalltalk's favor. IBM includes Smalltalk in its VisualAge integrated development environment. And Cincom Systems Inc., which acquired a Smalltalk toolset from ParcPlace, has lowered prices for getting started from $3,500 to a free download for developer try-out and $500 a year for one developer's deployment of Smalltalk applications to one or two users.

So get the to the download site and have a look!

 Share Tweet This

movies

X-Men 2 Rocks

May 2, 2003 16:10:20.962

Yes, it was well worth going. I went in with low expectations after the firstmovie - but it was worth it. Recommended!

 Share Tweet This

news

Holy heck!

May 3, 2003 1:19:02.503

Now this story is amazing:

MOAB, Utah (AP) -- A Colorado climber amputated his own arm Thursday, five days after becoming pinned by a boulder, and he was hiking to safety when he was spotted by searchers, authorities said.

Now that took some intestinal fortitude. Wow

 Share Tweet This

development

Cringely - clearly not getting it

May 3, 2003 9:53:51.390

Last week I commented on a Cringely piece where I thought he wandered off into tinfoil hat territory. Well, this week he's back, making the other side of his argument about Open Source. This week he takes the tack that Open Source is here to stay. At first, he's making some relatively reasonable points about the sorts of extant OS projects:

But it could be so much better. At the risk of annoying my two remaining technical readers, I believe Open Source suffers from a kind of unspoken caste system, with a few projects getting lots of resources and most other projects getting very little. The result is what I think of as three classes of Open Source software -- professional, semi-pro, and amateur. I'm not saying this is bad, just that it is the case.

Truly professional software development really needs technical writers, user interface designers, and QA people, but most Open Source projects lack those types of helpers, and therefore, often fall short in the long run. Those projects that DO succeed (Apache, the Linux kernel, et cetera) are those that only need that type of diversity to a very small extent because they generally live on the command line. These applications generally target people who can get by without the product having the best documentation or interface -- namely, other developers. I think of these as semi-pro products in that they are robust, but tend to lack external trappings of commercial software

Ok, that's mostly reasonable. I feel very fortunate to have Rich Demers documenting BottomFeeder - he's uncovered numerous problems and inconsistencies in addition to creatinga great set of doc - so I can see Cringely's point about projects that lack that being less useful outside a small circle. However, we soon return to tinfoil hat territory:

Look how many Open Source projects have updated versions and the changes read "cleaned up some code." What that really means is the programmer loves his little project, and a few fans have made him love it more, and he just NEEDS to touch it. He can't keep his hands off the code even when he isn't adding new features.

"Cleaning up code" is a terrible thing. Redesigning WORKING code into different WORKING code (also known as refactoring) is terrible. The reason is that once you touch WORKING code, it becomes NON-WORKING code, and the changes you make (once you get it working again) will never be known. It is basically a programmer's ego trip and nothing else. Cleaning up code, which generally does not occur in nature, is a prime example of amateur Open Source software.

Hmmm. Refactoring is useless? I guess he has this notion that programmers always produce the best possible code the first time out, and that new features never require changes to previously working code? And his statement that this breaks things - here's a phrase he can add to his vocabulary:

Unit Testing

Bah

 Share Tweet This

development

Cool - more RSS feeds

May 3, 2003 14:08:21.239

Infoworld now has a bunch of RSS feeds - the links are right on the front page. Over time, most one-way communications that are now email-lists will likely be replaced with RSS. No possibility of spam, or of the clientaccidentally classifying it as spam...

 Share Tweet This

development

Objects and the Web?

May 3, 2003 23:19:11.284

Or is that Objects vs. the Web? Alan Knight of Cincom and Naci Dai of Eteration have a paper out on OO and web development. The paper discusses how to use the MVC paradigm with web development. This is the same material which has been used for a presentation they have given at various trade shows. Go have a look; it's well worth your time.

Update - thanks to Alan Knight, for pointing out my mistake on Naci's name, and providing an updated link to his website

 Share Tweet This

development

Almost like getting it

May 4, 2003 8:36:18.187

Over on the Manageability blog there's a few comments about static/dynamic typing:

What if you could remove type information from a static typed language?

What if you could annotate a dynamic language with type information?

For the first, developers doitout of necessity all the time - in C, it's the use of void. In Java or C++ (and C), it's casting. That's removing type information; you lying to the compiler because you know thecorrect answer and it doesn't. As to the latter, it happens every time we interface with external systems. Some dynamic languages already allow for his second point

Shouldn't languages have more than one mode?

If static type checking is just one kind of analysis, should we not be able to turn it off and on?

I understand that most modern Lisp systems have something akin to this (I'm no Lisp expert). Strongtalk can figure types out by itself, and allows for type annotations. Many of the functiona languages out there also figure types out, as well as allowing for annotations. In other words, this stuff exists.

If I knew the type of an object is my code, should I have the capability to tell the compiler what type it is?

If tests were so important, shouldn't I be able to ask the compiler to generate some of these tests ?

The right language should not be a choice between static and dynamic checking, it should give you that choice.

Point one - see above. Point two - you want the compiler to generate tests? What you want is AI above and beyond anything that exists now, that's for sure. Sounds almost like laziness to me - tests aren't that hard to write - there are too many XP and agile projects around to claim otherwise. Somehow I suspect that this is a cry to add these features to Java or C# - so that the author won't have to wander all the way over to Google and look about.

But wait, there's more! In another post, we see this old standby What I'm trying to get at is that static type checking is only one kind of checking. It's just one kind of static analysis that you can apply to code, in fact, it's a kind of testing. For static typed systems, it's part of the definition of the language and it's the minimum requirement that needs to be met. For dynamic typed systems, the definition of the language is more liberal, and the minimum requirement is much lower. Of course, it's every organization's responsibility to define what that minimum requirement, good organizations will require comprehensive test suites and bad ones will require passing a syntax check. In short, the more tests the better, by the same reasoning, the more prebuilt static checking, the better?

I'd say he ought to go read Bob Martin on this. "Uncle Bob" was a big, big static typing advocate until he became "test infected". In short:

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

The win for dynamic languages is flexibility - refactoring is easier, initial coding is easier, there's no lying to the compiler. The should be written either way. If you write the tests, the static type checking is just getting in your way.

Finally, we get to this post

The pros I perceive is not what most would argue. It's actually based on my experience using the Visualage and Eclipse environments. The pros are that it's easier to navigate and search the code base. See the absence of type information makes it difficult to find the dependencies between code. Ask any smalltalker their experience of trying to reduce the size of the smalltalk image, it's an extremely painful process. Just because you're liberated today from type information, doesn't mean that it's not going to strike you back tommorrow.

Pain in trying to reduce the size of an image. That's the best he can come up with? First off, if you deliver your application using the tools the vendors provide, stripping is a one time thing (or once per vendor release cycle, when you update to a new release). In the interim, you ship out new packages of Smalltalk code that load into the baseline image (much like DLL's). Second, this is an issue that will be going away - Cincom Smalltalk, at least, will be shipping with an SRE (Smalltalk Runtime Environment) to address this issue. Second, why is he worried about size? No Java app or C# app - dependent on their respective runtimes - is small by any stretch of the imagination. I deliver BottomFeeder as a 5 mb (compressed) download, and it can be updated dynamically over the net. The runtime image was made pretty easily - I wasn't trying for a small image - and won't be updated until VisualWorks 7.2 ships.

The question you've got to ask is, should I sacrifice the code completion, quick-fix, search, etc. for a little fewer keystrokes?

No, the question is, can he build up a strawman to fight against? I think the answer to that is clear....

 Share Tweet This

development

More stories on Dynamic language pining

May 4, 2003 8:48:21.737

Here's an interesting post

Bob Martin's post on statically typed languages reminds me of both Chris' and my own migration from the C++ view of typing to a less static view of the world.

I agree with Bob that having language support for dynamic typing is a real boon to productivity.

I'm not so sure that test driven development (TDD) is the only tool for making dynamic typing "industrial strength." I think we (the industry that is) can do more if/when enough people wake up from the Java-induced haze.

Maybe Bob should come up to Redmond and help us out!

I had to read that last part twice. Does this indicate some interest in dynamic languages within the language group at MS? It would be good news for all of us if it did.

 Share Tweet This

development

More on dynamic/static

May 4, 2003 8:52:16.204

I knew someone who knew more about Lisp would post on this - one of the three posts I commented on here. Sure enough, Ted Leung weighs in with information on the abilities of Lisp and Dylan.

 Share Tweet This

development

Clueless in Java-Land

May 4, 2003 9:00:43.776

Ted Neward defends his persistence story this morning. I commented on this here. Today, we get a defense based on another post:

In his weblog, Dave Johnson wrote offered some feedback about the four approaches to persistence:

When you get right down to it, they all involve building an encapsulation layer that stores and retrieves objects.

No, Dave, that's precisely my point--we're not persisting objects. That would be the case if we were talking about taking data and putting in into an object database (a true OODBMS, that is), but that's not the case going on here. In 99.5% of all enterprise projects, we're putting data into the database--the fact that you as a Java programmer choose to view the data in the form of an object model is entirely your choice.

Sigh. This is trivially true of course, but then - none of us ever do OO on this basis - after all, it's all just bits at the machine level. Has this guy ever looked up for a few seconds at products like TopLink? Heck, he wouldn't even have to leave the Java world to do that - Oracle ships TopLink/J these days.

 Share Tweet This

humor

Work Smarter, not Harder

May 4, 2003 9:07:56.978

 Share Tweet This

itNews

What I said!

May 4, 2003 10:56:25.875

I've been speculating on Sun's fate for quite awhile now - and now there are rumors of an acquisition. The names that came up are Dell, IBM, and HP. One things for sure - if this rumor has any weight, it will be fascinating to see what parts of Sun survive a transition. For examples of what could happen, see how many parts of DEC you can still see....

 Share Tweet This

rss

Syndic8 has a blog

May 4, 2003 13:17:23.235

Jeff Barr has a blog set up by Bill Kearney. There's a feed here. This will be useful for those of us tracking the goings on at syndic8!

 Share Tweet This

cst

Survey still running

May 4, 2003 13:58:02.315

The Cincom Smalltalk Survey isstill running - if you haven't given us feedback yet, please do!

 Share Tweet This

rss

RSS is getting more complicated

May 4, 2003 19:56:24.476

So I'm catching up on my feeds today, when I spot one that seemingly has no content. This is odd, so I go to look at the feed source. There's no <description> tag! Ok, looking at the RSS 2.0 spec, that's technically legal. InadvisableIMHO, but legal. So where's the description? In a <content:encoded> - the namespace is defined, right at the top of the document. Easy enough to deal with - a quick modification to the Constructor code, and BottomFeeder is back in business.

The only thing is, I don't get it. What's the point of moving the description to a namespaced element? The namespace in question is part of the RSS 1.0 (RDF) module system, but - What's the benefit?

 Share Tweet This

BottomFeeder

Modules for RSS Namespaces

May 5, 2003 0:07:03.600

It looks like I'm going to support modules in BottomFeeder. The 2.9 release will go out first - but it looks more and more essential to me.

 Share Tweet This

general

Am I still in Maryland?

May 5, 2003 9:51:19.313

It's hard to tell, based on the weather. The low last night went just below 40, which is awfully chilly for this state in May! I actually had to turn on the heat this morning - the house had dropped down to 60 degrees, which I just don't find comfortable. Brr.

 Share Tweet This

general

Windows Heck

May 5, 2003 10:23:44.602

Scott Johnson is not amused by Windows Driver Support:

Well on my Thinkpad I ran SP1 and ***poof***. My CD-RW drive was magically found. On the one hand I'm glad it worked but on the other I'm confused why for something as common as USB support (for a device released before the operating system itself) doesn't work out of the box. And then I was told when I went to install the Adaptec software that "it has a known incompatibility with this version of Windows".

Time to restart Windows, lose my Fireware drive, clear up disc space and then burn cds. I'd rather eat glass.

I know how he feels. I've got a simple LAN. The internet access is managed by a Linksys Router. No problems there - all the devices (3 computers, 2 ReplayTVs) can see the internet just fine. The local LAN is something of a mystery though. My notebook (XP Pro) and the Linux box have no problem seeing each other and sharing printers. My wife's machine, on the other hand (XP Home) is a mystery. It once saw the LAN - and then mysteriously stopped (why???). At this point, her machine cannot even see the other two computers via Windows networking - tcp/ip is fine (FTP, ping, telnet - no problem). My two machines cannot see her box via Windows networking either - although again, tcp/ip stuff is just fine. The Windows file/printer sharing service is installed on each system (the Linux box is using the smb/nmb stuff). It's an utter mystery to me. we didn't change anything, and the box just disappeared as far as Windows networking is concerned.

We are at an utter loss as to what's going on. Any and all suggestions welcome.

 Share Tweet This

BottomFeeder

BottomFeeder 2.9 is out

May 5, 2003 14:43:38.605

I've released BottomFeeder 2.9 today. There are lots of new features:

Changes from version 2.8
  • On Windows, print requests will now open the standard print dialog
  • When using the views that cover the tree, the table has an extra column, which shows the feed's title
  • Changed the uI layout - there is now a 'View' bar on the top of the interface with multiple buttons. Users can view all feeds and feedlists (standard view, as it has been), only subscribed Feeds, only Feedlists, or all New items - the items and html view expand over the tree in this view
  • All New Alerts - the items and html view expand over the tree in this view
  • Searching in BottomFeeder now shows all results in the same view used by 'New Items'
  • With Support for OPML, BottomFeeder can save its subscribed feeds out to disk as an OPML file. BottomFeeder can also import subscribed feeds from OPML, OCS, or RSS formatted files.
  • BottomFeeder can deal with OPML based feedlists as well as OCS based feedlists. Such feedlists need to be in the 1.0 format supported by http://www.syndic8.com
  • Added a set of keyboard shortcuts for common actions. See The Wiki Project Page for details
  • Settings are now displayed in a more pleasing format, using the standard settings tool that ships with VisualWorks
  • Users may change the displayed title of a feed - using the Feed Properties tool, simply change the 'Display Title' property
  • Save files now adapt file paths to the local OS on startup
The Users Guide has been updated by Rich Demers as well - make sure to check it out for all the details on the release. The next release will sport full support for RSS Modules (the namespace specific extensions to RSS 1.0 and RSS 2.0). In the meantime, please let me know about any problems!

 Share Tweet This

development

software dev at a dead end?

May 5, 2003 15:19:25.227

 Share Tweet This

humor

Amusing Message Names

May 5, 2003 15:57:43.658

We got to talking about amusing message names in the IRC channel today - many of the suggestions were very amusing, but unprintable. Here's a small sample:

  • #release - change to #diediedie
  • #release - change to #dieAndGoToH***
  • super new initialize - change to #yo

Of course, you can find this theologically improbable message in the image:

#sendTheInfidelToParadise

 Share Tweet This

BottomFeeder

BottomFeeder - next moves

May 5, 2003 18:51:56.288

The first thing for the next release will be module support - i.e., the various tags that live in different namespaces. That shouldn't take too long for the basics, although figuring out what (if anything) to do with the various tags will be a different matter. Anyone else have suggestions? I'm working off the Wishlist page, but I'm open to constructive suggestions.

 Share Tweet This

BottomFeeder

whoops - feed list bug

May 5, 2003 21:37:29.764

Rich Demers pointed out a feedlist bug to me (shows how much I use that feature) that crept into the release. I pushed a new version of the BottomFeeder parcel up to the server, and it's available for download.

 Share Tweet This
-->