general

Summer projects

August 3, 2004 1:50:20.482

For the last few years, we've spent a few weeks each summer paving something - a patio, walkways, or - last year - digging up the patio to lay pipe. We bought more brick this summer, in order to lay down even more walkways (soon I won't have any grass to cut - just weeds to burn between bricks). However, the bricking project was placed on hold the wife decided that we needed to paint the kitchen. Billions of little paint chips later, we had two colors picked out. No simple monochrome job for my wife - two tone with a wallpaper border.

The taping alone took a day (have you ever looked at your kitchen and considered the pre-paint taping job? Makes me wish I had forked over the money for a paint job by the builder). Now it's mostly done - the border still has to go up, but the painting itself is all done. Then there's the cleanup, and bringing back in all the stuff we moved out. Paving stones might actually be less work...

 Share Tweet This

smalltalk

Why an image is helpful

August 3, 2004 12:28:02.684

In support situations, one thing that tech support likes to get is a reproducible error - it's hard to diagnose a problem that can only be vaguely defined. It can get even harder if the problem only crops up under a set of circumstances that are fairly unique to a specific installation. Enter the Smaltalk image - here's a message I got from a customer:

Yesterday, we were having a subtle CORBA issue.

The problem occurred when processing CORBA events from a device in our lab ( an Alcatel 5620 Network Management device in case you are interested).

The developers were able to step through the code in our lab environment with all the devices we typically connect to in play, and at the point of failure, save the image.

They then sent the image to CINCOM for further analysis.

At CINCOM, they brought up the image, and continued the investigation (from precisely the point of failure), identified the problem, and between the two of us, a fix was determined.

The fix was then applied to our dev environment, and we were back in business.

Less than 24 hours start-to-finish.

I contrast this with Java, where we have previously spent many weeks trying to come up with a 'reproduction scenario' that the Java vendor could then use to debug the problem outside our labs!

When in doubt, send the image - that way, the support guys can see the actual problem in the actual running environment. That's one of the values of having an image.

 Share Tweet This

smalltalk

Why Smalltalk for Windows CE?

August 3, 2004 16:29:08.789

Sam Gentile points out one of the issues when dealing with Windows CE and the .NET compact framework:

There are a whole lot of things different about programming for mobile devices with the CF versus the desktop framework.

Of course, if you use Cincom Smalltalk for Windows CE, you merely need to worry about the form factor (i.e., the screen layout) and the transient nature of connectivity - There are no differences between Smalltalk for any other platform and Smalltalk for CE. Binary portability means binary portability....

 Share Tweet This

smalltalk

Update Tool split out

August 4, 2004 0:48:00.607

The other day, Ralph asked me about the upgrade tool in BottomFeeder. Well, until this evening it had mostly been a component piece of Bf, not easily reusable elsewhere. I think I've fixed that. I just spent some time refactoring the tool and splitting it out of the bf bundle (which makes it entirely possible that the upgrade tool will be used to upgrade itself sometime. Such is Smalltalk :) ). The code is in the public store as PatchFileDelivery.

One thing you'll notice is the existence of PatchManager and PatchManagerUI, which I don't really use. That's an artifact of the way I used to deliver bf updates. The more current classes of interest are UpgradeManager and UpgradeManagerUI. Here's how I use them:

First, I set up an XML Manifest file on the server. I use the XML Configuration Files package in the public store for that:


defs := OrderedCollection new.
list := #('dev\Emote-Support.pcl' 'dev\ExtraEmphases.pcl' 'dev\VRCommonDialogs.pcl' 'dev\Http-Access.pcl' 'dev\PatchFileDelivery.pcl' 'dev\Browsing-Assist.pcl' 'dev\OSTimeZone.pcl' 'dev\XmlRpcClient.pcl' 'dev\XML-Configuration-Files.pcl' 'dev\BottomFeeder.pcl' 'dev\TwoflowerBundle.pcl' 'IRC-BottomFeeder-Plugin.pcl' 'Pongo.pcl' 'Blog-Tools.pcl'  'WinMineGame.pcl').
names := #('Base Component, Icon Support' 'Base Component, Font Support' 'Base Component, Dialog Support' 'Base Component, Http Support' 'Upgrade Tools Support'  'Base Component, Browser Support' 'Base Component, Local Time Support' 'Base Component, XML-RPC Support' 'Base Component, Upgrade System Support' 'Base Component, Main Application' 'Base Component, HTML Browsing Support' 'Plugin, IRC Client' 'Plugin, MSN IM Client' 'Plugin, Blog Posting Tool' 'Plugin, Minesweeper Game' ).
descripts := #('' '' '' 'encoding priority fix' 'Refactored Patch File Code' '' '' '' '' 'remote browsing includes top 5 items' 'encoding changes' 'Fix for settings reading problem' '' 'preview load could fail, fixed' '').
sizes := list collect: [:each | each asFilename fileSize]. 
allows := #(true true true true true true true true true true true true true true true ).
list do: [:each | | version nm timestamp properties index |
	properties := [CodeReader new readInfoFromFileNamed: each] 
				on: OsError, CodeReader fileFormatSignal
				do: [:ex | ex return: Dictionary new].
	version := properties at: #version.
	nm := properties at: #parcel.
	timestamp := properties at: #timestamp.
	index := list indexOf: each.
	comp := ComponentDefinition
		parcelName: nm
		parcelFilename: (each asFilename tail asString)
		version: version
		releaseDate: timestamp
		descriptiveName: (names at: index).
	comp description: (descripts at: index).
	comp fileSize: (sizes at: index).
	comp allowDynamicLoad: (allows at: index).
	defs add: comp].
(defs at: 12) isPlugin: true.
(defs at: 13) isPlugin: true.
(defs at: 14) isPlugin: true.
defs last isPlugin: true.


"now save it"
file := Tools.XMLConfigFileSupport.XMLConfigFile filename: 'upgradeBtf.xml'.
file saveObject: defs.
file saveConfiguration.

That saves a configuratioin file to disk - the plugins/main components thing is Bf specific, but it's not really essential to the package. To open the UI and check for upgrades, this is all you need to do:


	loader := Patch.UpgradeManagerUI new.
	loader viewer: self.
	Cursor wait showWhile: [loader doUpgradeCheck].
	loader open

Of course, to specify where the upgrade information lives, you need a settings file that looks like this:


[Settings]
patchSiteUrl='http://localhost/patches/'
patchSiteFilename='patches.xml'
patchDir='patches'
saveDir='app'
upgradeURL='http://localhost/upgrades/'
upgradeFilename='upgrades.xml'
version='1.0'
isOnline=true

By default, the code will look for a file called 'patches.ini'. You can also hand the manager object (the domain underneath the UI) settings in code; there's an API for that. That's pretty much it; Assuming that you have Http access to the remote server, you now have patch file delivery.

 Share Tweet This

cst

Japanized VW 7.2.1

August 4, 2004 11:33:59.011

Over the last few releases, we have shipped a separate, localized to Japan version of VW - no extra charge to customers, but fully localized. The 7.2.1 version will be ready in about 2 weeks or so. Things will change with 7.3 - we will have all the message catalogs for the product shipping - and we spent the 7.1 and 7.2 releases ensuring that strings were replaces with UserMessages. So starting with 7.3 (in the fall), there will be no separate version for Japan. Instead, it will be part of the core product.

 Share Tweet This

itNews

Microsoft enters the blog server space

August 4, 2004 11:38:57.058

Not only is MS entering the blog server space, they are starting in Japan - I guess that means that they'll get the i18n stuff down early. Spotted in Phil Ringnalda's blog

 Share Tweet This

itNews

The Whistling man moves markets

August 4, 2004 11:53:46.958

Apparently, Schwartz's last missive fueled a bunch of speculation that Sun might acquire Novell (talk about the walking dead buying the shambling dead is always interesting, I guess). In any event, it managed to move Novell's share price - see the Business Week article. Dare Obsanjo also noticed the post, and had this to say about Sun (amongst other things - read his whole post):

It is definitely amusing to see Sun scramble to stay relevant as they realize that their hard ware is overpriced and they can't figure out how to make money from Java's popularity. If not for the billions they have stashed this would definitely be a company in its death throes.

I have another thought - Schwartz wasn't that widely criticized for this post (which some might interpret as a passably successful attempt at stock manipulation). What would the press and blogosphere reaction be if Ballmer or Gates made similar comments, I wonder?

 Share Tweet This

law

Patent trouble

August 4, 2004 12:18:59.974

Some of the people commenting on this post (in email as well as actual comments) were skeptical - "who are they going to sue", was the common refrain. What they forget is that perception is reality in these cases. Witness Munich's backing off of linux, for instance. Now, for all I know they've run into user pushback and are using this as an excuse. This is what they are saying though:

As previously mentioned, there is a rising concern that software patents could stifle development of open source worldwide. FFII has complete coverage of what is going on in Europe." (FFII stands for Foundation for a Free Information Infrastructure.) Reader jmt(tm) writes "The call for bids was supposed to be published in late July, but the Munich Green Party had pointed out about 50 possible patent conflicts which the city wants to evaluate before moving on."

The actual threat is far less relevant than the perceived threat in cases like this...

 Share Tweet This

law

More patent minefields

August 4, 2004 12:21:37.699

Apparently, it's not just Linux and software that have problems with patent law. medical research is hitting patent walls as well:

More and more diseases are being linked to genes, but making tests for the afflictions runs the risk of violating a gene patent. Researchers currently count on good will, but new laws may be needed.

Interesting

 Share Tweet This

law

Trying to catch dust

August 4, 2004 12:34:29.479

I understand what the feds are trying to do by insisting that net based phone calls be traceable - they are trying to keep up with shifting technology. The fact of the matter is that they are grasping at dust. It's not as if VOIP is my only option for net communication. I can use various IM systems, I can use IRC. I can create my own chat system easily enough as well; there was an Opentalk demo of a peer to peer chat system 4 years ago, slapped together in a few hours by one of our tech sales people. It's simply too easy to establish a communications channel on the net. The feds are going to have to accept reality, and realize this....

 Share Tweet This

cst

VW on OS X

August 4, 2004 12:38:05.493

Travis notes that VisualWorks on OS X has some problems. We recognize this, and are working on addressing the problems. The stability issues should be fixed in 7.3 - we have a solution in mind, and the VM team is working to implement it. We understand that this has been a great source of frustration for Mac users, and we apologize for the difficulties.

 Share Tweet This

itNews

Re: Switching to a platform of love

August 4, 2004 13:06:11.570

Loudthinking points out a possible problem for MS - Longhorn is looking like more of a problem than a solution to some people. The early adopters are already moving - for all the noise about tablets, take a look around at the next trade show you attend - it's likely that you'll see more mac notebooks than you might expect. I've said before that the issue Longhorn will face is not the actual cost of migration - it's the perceived cost of migration. if the meme gets around that "it's not worth the trouble", then MS is going to have a problem on its hands.

 Share Tweet This

itNews

Infoworld - handhelds are dead

August 4, 2004 13:11:55.979

Infoworld points out the obvious - handhelds are a niche market. The problem is simple - these devices are neither fish nor fowl, and people can already use their cell phones for all the things a handheld promises. Once you've covered address book and email, you've covered most of what people want to do with these devices. There's a similar issue with tablets, IMHO. Now, if the hardware cost of tablets equalizes down to the level of a standard notebook, tablets may become ubiquitous... but it won't be because people are actually looking for a Tablet. It'll be more along the lines of "oh, it does that too? Cool".

 Share Tweet This

product management

Where Graham gets it wrong

August 4, 2004 18:14:56.962

Everyone and his brother has commented on this essay by Paul Graham. Most of the commentary has been positive; Eric Sink is one of the few who's had a contrary opinion. I've been looking at the essay, and I have to say that I've got a few problems with his essay myself. Let's have a look at his notion of why you want hackers (as he descibes them, top notch developers):

It's pretty easy to say what kinds of problems are not interesting: those where instead of solving a few big, clear, problems, you have to solve a lot of nasty little ones. One of the worst kinds of projects is writing an interface to a piece of software that's full of bugs. Another is when you have to customize something for an individual client's complex and ill-defined needs. To hackers these kinds of projects are the death of a thousand cuts.

Ok, let me be extremely clear here - he's full of crap on this. What he's saying is that problems that actual users care about are uninteresting. This doesn't really jive with his assertions that startups are a great place for hackers. Why not? The best startups (you know, the ones that succeed) - pay attention to their early clientele. In fact, they often build stuff more or less exactly to the specifications of their early clientele. The minute you stop fulfilling end user needs is the minute you stop making money.

Now, Graham's assertion is that you can "protect" your great hackers by having them build "tools". That sounds nice - until you ask: "Who are these tools for"? Well, they are going to be for some set of users (Internal or external). If your hackers aren't paying attention to the users, then they are going to end up building a bunch of over-architected crap that no one wants or needs. Trust me on that last point - I was at ParcPlace, and got exposed to plenty of "hackers". We had some really brilliant people back when I joined ParcPlace in 1993 - and the ones who Graham would call "hackers" were typically the least useful developers. They would wander off and build things they thought were highly interesting - and that no one else wanted.

I recall one of our hackers touting some great browser extensions he had in 1994. I publically ripped him a new backside - because he had done all the work on the legacy browser, not the new one that was coming out for VW 2.5 (in the then new GUI toolkit). This would be the equivalent of one of our (Cincom's) engineers proudly touting some additions to the GUI builder (current) after Pollock had shipped. Cool? Maybe. Also completely useless.

That's the trouble with Graham's idea of a hacker. He elevates the sort of developer that lives off in the clouds, building their own idea of perfection without regard to what anyone else might need. You know what? I don't need that kind of guy on my team - Graham can keep him. I want the kind of people we have on the Cincom Smalltalk team now - extremely bright, highly motivated developers - who listen and respond to customers. Are they perfect? Heck no, no more than I'm a perfect Product Manager. We know who pays the bills though. I'm not sure Graham gets that part.

Here's exactly where he gets it wrong:

The distinguishing feature of nasty little problems is that you don't learn anything from them. Writing a compiler is interesting because it teaches you what a compiler is. But writing an interface to a buggy piece of software doesn't teach you anything, because the bugs are random. So it's not just fastidiousness that makes good hackers avoid nasty little problems. It's more a question of self-preservation. Working on nasty little problems makes you stupid. Good hackers avoid it for the same reason models avoid cheeseburgers.

Bull. I'd actually say it's almost completely the other way - if you go in and fix the nasty, stupid UI bugs you learn something about what your users (you know, the people who pay your salary) want. You learn the difference between adequate work that people accept and great work that makes people happy. Look at the difference between the VW tools in VW 5i.2 and every release since then, for instance - the "polish" that's been added (mostly by Vassili) has been more important in many respects than the added functionality. Appearance matters - a nice UI differs from a bad one in the same way that a person with a shower differs from the one without - while a shower doesn't make you any smarter, it certainly makes you easier to be around. Save me from developers who don't want anything to do with the user community. I'll happily load down any of my competitors with them.

 Share Tweet This

cst

CST Summer 2004 Released

August 4, 2004 21:00:28.812

 Share Tweet This

smalltalk

Smalltalk with curly braces

August 4, 2004 22:20:44.960

Have a look at Span - it's Smalltalk with curly brace syntax.

 Share Tweet This

smalltalk

Looking for Smalltalk work?

August 5, 2004 12:29:23.889

If you are looking for Smalltalk work, call KSC. They are hiring for a number of positions.

 Share Tweet This

tv

Stargate Atlantis

August 5, 2004 15:13:27.548

I was really looking forward to this series - I like SG-1 a lot, and was hoping this show would pan out. At the same time, I know that most spinoffs suck eggs. I have been pleasantly surprised by the show so far. The cast seems to have gelled - I like the fact that they aren't just clones of the SG-1 cast in a different place. The personalities are different, and the dynamic is different. It's a good mix, and so far it's worked. This show looks like it will fill that SciFi gap I've been feeling. Certainly "Enterprise" isn't going to do that - not unless someone books Berman a one-way ticket to Elbonia....

 Share Tweet This

BottomFeeder

What's coming next for BottomFeeder?

August 5, 2004 15:21:53.296

The next release should see a lot better HTML rendering - I'm going to work with Michael to get part of WithStyle integrated. That will replace the Twoflower HTML widget, and give us the ability to render CSS properly - browsing inside bf will be a lot more pleasant. This move will also mean moving to a cleaner version of my Http package - Michael built a much cleaner implementation of my library last year, and using that will make the internal API of bf (and the blog poster) a whole lot simpler. This migration will take a bit of work - but it should mean a better tool on the far side.

 Share Tweet This

itNews

Hand Waving by the Whistling man

August 5, 2004 18:55:43.288

Whistle boy wants us to look at IBM's problems in the application server space. Hmm. Perhaps that 10,000 seat swap-over of Solaris to Linux at Lockheed should be engaging more of his thinking. When you work for a dead company walking, I guess all you can do is Whistle past the Graveyard. I guess this is just Schwart'z way of saying "pay no attention to what's behind the curtain". Specifically, he doesn't want anyone to remember that Sun is only in the black due to Bill Gates' charity....

 Share Tweet This

development

VM implementations

August 6, 2004 10:36:30.249

LtU points to a set of slides detailing the Parrot VM implementation.

 Share Tweet This

space

X-Prize motivating people

August 6, 2004 11:06:20.791

This is cool - A Canadian group is vying for the X-Prize. Maybe now that various private sector outfits are trying to get "out there", we'll see some actual progress on space exploration.

 Share Tweet This

development

Engineering in Software?

August 6, 2004 11:45:42.157

Keith Ray has some interesting thoughts on whether software is "engineering" in the commonly understood meaning of the word. Check it out.

 Share Tweet This

games

Convention gaming

August 7, 2004 15:33:42.912

So I spent the last two days (well, part of them) at a game convention north of Baltimore. Huge thing - more board games and board gamers than I've ever seen in one place (including Gencon). I was able to take a second place in Puerto Rico last night, and a first today - I would have been in the semi-finals (right now, actually)...) - but we have relatives coming into town, and I have to prepare. Took my daughter, who came in a respectable third (only 4 points back) in her PR game this morning. We'll both go to a similar Con in November if it works out with her school schedule. Fun stuff - there's a ton of variety in board games these days. If you still think of only Monopoly and Risk when you think of board games, you should have a look here

 Share Tweet This

BottomFeeder

Possibly odd behavior

August 7, 2004 16:13:02.609

If you grab the dev updates for BottomFeeder, you may have noticed a few odd things over the last few days. First off, you should be aware that the dev stream updates are not guaranteed to be stable; I put them out as much for feedback as for anything else. In any event, I've been mucking around with the code that determines which items are new/old over the last few days, so you may have seen a bunch of old items listed as new. The good news is, I've got the issues sorted out now, and the size of the cache (old item cache) for a feed is no longer related to the code that identifies new/old items. So you shouldn't have to keep large cache sizes simply because a feed has lots of items in it. On the other hand, it's still dev code; be aware that changes are still likely to happen.

 Share Tweet This

security

Just following the links

August 8, 2004 12:09:22.395

Scoble points to this fascinating little story on how malware and spyware gets onto unprotected systems. It's a fascinating story, and explains why you really want to be careful out there...

 Share Tweet This

smalltalk

A view of camp Smalltalk

August 8, 2004 14:22:23.425

Dan O'Brien has an outsider's take on Camp Smalltalk. Makes me wish I'd had time to go, but I was in Australia then...

 Share Tweet This

general

Bizarre Weather

August 8, 2004 14:28:40.049

The last three days have sported some pretty odd (for Maryland in August, that is) weather. Highs in the 70s, with low humidity. It's like late September weather - or the kind of weather I'd sometimes see in the summer in NY after a strong set of thunderstorms. It's a nice break from the typical August heat and humidity though - I'm enjoying it while I can. I'll be out grilling steaks in a couple of hours, and entertaining family, so blogging will be light. Back to the grind on Monday.

 Share Tweet This

smalltalk

How to baffle yourself in one easy line

August 8, 2004 14:45:31.168

I introduced a nasty bug in the dev stream of BottomFeeder the other day - it's been fixed. Here's a method I had for caching GUIDs from items that we've already seen:


oldItems: aCollection
	^self moduleDictionary at: 'oldItems' put: [aCollection]

The problem ought to be obvious, but it was a simple typo on my part - I was thinking of #at:ifAbsent: (which takes a block). Now, I suppose the static typing advocates will rush out at this point and tell me "if you had type checking..." maybe. On the other hand, testing is what solved the problem for me. Simple mistake, simple fix - it just wasn't clear what I had done to myself before I did some real testing. Note to self - more tests

 Share Tweet This

music

New Music

August 8, 2004 18:14:39.465

I just picked up the Evanescense album Fallen. It's quite good; not exactly what I had expected after hearing the song "My Immortal" on the radio. It has a harder edge to it, and a surprising take on the popular song. The 4th track is "My Immortal" - but it's an acoustic rendition. Much softer, much slower - no big uptempo at the mid point of the song, just the same basic sound on a piano. The funny thing is, the pop track is on the CD, the 12th track - but the liner notes don't mention a 12th track. Interesting. I'm still not sure which rendition I like better. One thing to note though - "My Immortal" is not a happy song. I guess I hadn't paid that much attention to the lyrics before, but I have now. It's a very haunting track, and the acoustic version makes that very obvious.

 Share Tweet This

smalltalk

Learning Smalltalk?

August 8, 2004 23:51:49.711

If you are interested in learning Smalltalk, this post may be of interest - it links to this article by Wilf Lalonde - which introduces Smalltalk based on a presumed knowledge of Java and/or C++. Looks pretty good.

 Share Tweet This

itNews

Schwartz discovers why Sun loses money

August 9, 2004 2:42:49.662

Well, he hasn't really discovered anything. However, Whistle Boy has accidentally stumbled on one of the primary reasons that IBM is profitable and Sun isn't:

If you think about it, industry participants are incented to enable substitution " if they impede it, they can't fly the "J2EE" flag. In this instance, the measurement of "open" is ultimately made by a customer swapping out one app server for another.

Where's proof? Imagine you come to your senses next quarter when IBM asks for a big license fee (did I mention Sun's app server is free on all platforms?); you run the AVK again to see if you're gotten hung up on any IBM "enhancements" that go beyond J2EE; and if the answer is no, you move back. Substitution is enabled.

Never mind the fact that migrating between J2EE servers is not the piece of cake Schwartz makes it out to be - that's not the important thing here. It's where he points out that Sun's app server is free. As in, no revenue to Sun. WebSphere, on the other hand, costs big money. Big money that shovels into IBM's maw every day. What Schwartz and Co. have managed to do with J2EE is create a printing press for BEA and IBM, while conveniently taking none of the money themselves. And Schwartz thinks that this is a good thing!

One of the fascinating things about the early history of ParcPlace was pricing. Way back when, PPS priced ObjectWorks at well under $1000 USD. Sales were very slow. They moved prices up over $1000 - without really improving the product. Sales went up. With some classes of complex software, there's pretty much a "minimum price" - if you are below that, you are seen as either a toy or a marketing demo. That's where PPS was back in the early days. When they moved the prices up, they were seen as a "serious" tool. To some extent, this is where Sun is vis-a-vis IBM and BEA - they were late to the party, and their tools aren't priced the same way. If their app server were open source, they could probably get away with the free (support is sold) model - but on a proprietary product, free is mostly seen as "demo" or "not serious".

So the shovel keeps piling money from Sun to IBM, and Schwartz keeps smiling like a happy idiot. Sun's business model just baffles me...

 Share Tweet This

development

Glue based programming

August 9, 2004 9:55:54.152

Gary Short points to this MSDN page which touts what MS is calling "Software Factories":

Software Factories provide a faster, less expensive and more reliable approach to application development by significantly increasing the level of automation in application development, applying the time tested pattern of using visual languages to enable rapid assembly and configuration of framework based components. Software Factories go beyond models as documentation, using highly tuned Domain Specific Languages (DSLs) and the Extensible Markup Language (XML) as source artifacts, to capture life cycle metadata, and to support high fidelity model transformation, code generation and other forms of automation.

Hmm - color me not sold. Sounds too much like PARTS and the Visual Editor in VAST - both of which end up enabling "green haze" (we actually used that phrase in sales back at ParcPlace in the early 90's). The issue is a simple one - wiring components together sounds great, and it works really well on small problems. Once the problem gets to be medium sized, it completely breaks down. Too many wires, too many connections - Green Haze. Sure, tools can allow for making some connections visible and others invisible - and that helps, some. Not enough, in my experience. People have been trying to bring this style of development forward for a long time now. I don't think it works, because it doesn't scale visually.

<sarcasm>Of course, it's probably better now - using XML makes it modern, right?<sarcasm>

 Share Tweet This

analysts

Those brilliant Gartner guys

August 9, 2004 23:41:04.728

Count on Gartner to spot a trend long, long after it's been noticed by everyone else. Seriously, who pays these clowns money for spotting trends three years later?

 Share Tweet This

general

A day on the Mall

August 10, 2004 7:35:53.032

I spent yesterday doing the "tourist thing" in Washington DC (never mind that it's only 30 miles south of me). Some of my wife's relatives were in town, so we accompanied them on their siteseeing. It was a nice enough day - temps in the mid 80s and low humidity (not at all like a typical August day in this area!).

We started off at Union Station, walking over to the Capitol. Around that (which was a pain - the visitor center construction has made navigation of the capitol problematic) we went to the Mall. It's a pretty long way from the capitol down to the Washington Monument. We had my wife's uncle, his daughter, and her daughter (who is my daughter's age; they hit it off well), and my brother in law along. The kids complained about how far off the Washington Monument was, and truthfully, it's a long walk. We probably should have taken a break at the Smithsonian, but we went by the monument and on to the memorials.

The new WWII memorial is very nice - well done, and reminiscent of a lot of the Civil War era monuments I've seen over the years. The designers are to be applauded, IMHO - it fits in very well on the mall. If you stand just in the center (in front of the water) you get a great view of the Washington Monument (and the capitol dome behind it) on one end, and the Lincoln memorial on the other.

From there we walked down past the reflecting pool to the Licoln memorial. Now, I've been to this one many, many times - but it still awes me every time I see it. It's a serene place, no matter how crowded it gets. People really do quiet down once they get inside - it's got the air of a temple. Two things really strike me every time I go - the texts of the Gettysburg Address and Lincoln's Second Inaugural Address. They are short, elegant, and to the point. Contrast them with any speech you hear today - either political or business - and ask yourself why no one manages to pack so much meaning into so small a space.

From there we hoofed it over to the nearest (5 blocks) metro station. That took us past the State Department building - and boy does it look dreary compared to the Mall architecture. It's got all the charm of a 1960's high school. We went back to Union Station, where we caught a twilight tour of the monuments. I can't recommend this tour enough - it takes you to the Jefferson Memorial, the FDR Memorial, the Lincoln Memorial, Korean War/Vietnam War/WWII Memorials, and past a lot of other interesting things in the city. It set out at 7, and went to about 10:30. Well worth it - I especially liked the view from the Jefferson Memorial to the White House. Apparently, FDR had all the trees cut down between the two spots so that he could always see it. Like the Lincoln Memorial, it's a very contemplative place.

Even though we had already seen the WWII memorial, it was beautiful at night - worth seeing again. The Korean War memorial was a little haunting at night - the statues of soldiers on patrol really rise up at you. We skipped the Vietnam Wall, since we were running short on time (and they are doing maintenance on it anyway). That took us back to Union Station

Now, we had purchased round trip rail seats on commuter rail in the morning - and the last train was leaving at 10:35. We got to Union Station at 10:31. We had to convince other people on the tour bus to let us off first (they were pretty nice about that), and then run to track 15. We got on the train with less than a minute to spare, which was good - our other option was a cab back to the train station.

All in all a good day, even if it was a little tiring.

 Share Tweet This

smalltalk

Static/Dynamic

August 10, 2004 8:16:01.882

Here's a great line I spotted in comp.lang.smalltalk:

Just curious, but how many people out there using static languages actually try to pass invalid types to methods? How many Java users commonly get ClassCastExceptions at runtime?

My answers are:

  • I never pass invalid types to methods.
  • I have no memory of ever getting a ClassCastException in Java.

After using dynamic languages for a while I have come to the conclusion that static typing solves a problem that doesn't exist.

That's pretty much been my thinking for a long time now. Back when I was a C programmer, what static typing usually pointed out to me was things like "#$%^& this function expected a short, but I'm passing in an int". In other words, mostly irrelevant errors.

 Share Tweet This

blog

A smaller master feed

August 10, 2004 8:36:19.786

I've received periodic complaints about the size of the master feed. It had been the latest 8 items from each of the Cincom blogs. Now, that worked fine for some of the very active feeds (like mine) - but less well for the less frequently updated ones. The master feed is now operating differently. If a blog has posts from the current date, it will contain all the posts from that date. Otherwise, it will contain the one most recent post. This makes for a much smaller master feed - instead of the 650k it was sitting at yesterday, it's now down to about 80k.

 Share Tweet This

smalltalk

Comments on static/dynamic

August 10, 2004 11:13:20.322

Ryan Lowe comments on my earlier post:

What's the real reason I get ClassCastExceptions? Because I refactor a lot. After a refactoring the wrapper class to use B instead of A you might be putting a type B into the collection and incorrectly casting it to the old A in a wrapper class method

.

This problem will go away when generics are introduced and I can specify the type I want a collection to contain. The compiler will tell me I'm trying to put a B into collection<A> and I'll be forced to refactor it to collection<B>. Then the compiler will tell me I'm casting an item from collection<B> to an A (the place where the ClassCastException formerly occurred for me). Actually Eclipse will tell me these things as I type, instead of at compile time.

As I understand it, and I could be way wrong as usual, languages like Smalltalk don't have this problem because they don't enforce type, so you never cast an object coming out of a collection (I assume there is a complementary group of classes to Java Collections in Smalltalk). If I were refactoring the same problem in Smalltalk, without the ClassCastException I may never know that I'm returning an object of the wrong type after the refactor (A instead of B). To catch this problem, you'll need good unit tests and you'll need to change them all from using A to B. You could always just nuke the A class, and the compiler will tell you it's invalid. With static typing in Java and generics, you don't have to nuke A.

You don't have this problem in Smalltalk because it's not the sort of problem you tend to get yourself into, period. Say I had a collection holding Foos. If I refactor, and I end up having a collection holding Bars (completely incompatible), then I have bigger problems. Even so, I would have had to refactor all the surrounding code that accesses the collection elements - and if I didn't have tests under those circumstances, I'm in trouble whether I have static typing or dynamic typing. To be brutal, if you trust the compiler to solve this for you, then you shouldn't be writing code.

Far more common is the case where I have a collection of objects that conform to a specific API (without regard to their class membership) - and I need to add a new sort of object that also conforms to the API. or I need to extend the API. This is simple, and I do this sort of thing all the time. Still - you have to test this. If you trust the compiler to solve this, you aren't going to end up being happy either way...

 Share Tweet This

blog

Another CST blogger

August 10, 2004 14:35:20.815

Time to welcome another Cincom Smalltalk Blogger - Charles Monteiro has joined the crowd here. For those of you who don't know Charles, he's the guy who runs the NYC Smalltalk User's Group. Welcome!

 Share Tweet This

media

Oh, this is rich

August 10, 2004 17:16:10.829

Howell Raines (scroll down a bit) has the unmitigated gall to imply that bloggers aren't as credible as journalists?

For better or for worse, blogging has carved out its spot in the mainstream media. In doing so, it gained the attention of journalists around the world and has certainly incurred the wrath of many. Likened to the "lunchtime chatter in a high-school cafeteria," blogs are taking a beating in the ongoing commentary on their worth. While their overall journalistic contribution can be debated endlessly, some of the medium's drawbacks cannot be ignored. Studies show that their voluntary nature is a huge detriment, with 25 percent of blogs being abandoned within a year of their inception. And Fark.com's recent declaration that its contributors don't hold themselves "to the same standards as (The New York Times)" probably didn't do the genre any favors.

The same standards as The Times? Remind me - isn't Raines the bozo who hired (and defended) Jayson Blair? Exactly what would he know about journalistic standards? Pot, Kettle. Kettle, Pot...

 Share Tweet This
-->