blog

nofollow: the aftermath

June 6, 2005 8:09:55.526

I was initially enthusiastic about the nofollow idea from Google, but I quickly lost that and became extremely skeptical. Now there's a good summary post by IOError on what the outcome of all this has been - and it's not been the problem for spammers that some people initially thought it would be:

As we've seen, rel="nofollow" is Google's way of having bloggers effectively delist themselves from search engines under the guise of protecting them from comment spam. If you want your site to have more Google juice, and who doesn't, people have to link to you without rel="nofollow". It's that simple. Nofollow hurts the entire blogosphere, and if carried to its extreme, will result in most blogs being relegated to obscurity as they drop out of the top 100 search engine results.

Pretty much the size of it. The spammers don't care - so long as there's a link to follow, PagRank is just so much fluff to them. What this has done is de-emphasize blogs in Google's ranking scheme, which is something they've apparently wanted to do. Better yet (from their perspective), most of the bloggers cheerfully followed along.

 Share Tweet This

itNews

Drink that koolaid!

June 6, 2005 8:21:11.330

In a story about the rumored Apple move to intel, Wired manages to guzzle some koolaid:

What's new this time is a fast, transparent, universal emulator from Transitive, a Silicon Valley startup.
Transitive's QuickTransit allows any software to run on any hardware with no performance hit, or so the company claims. The technology automatically kicks in when necessary, and supports high-end 3D graphics. It was developed by Alasdair Rawsthorne.

Umm, yeah - I've got some software right here that manages my perpetual motion machine - it works great, and better yet, I can now get it to run on any hardware with no performance hit thanks to this.

If Apple has licensed QuickTransit for an Intel-powered Mac, all current applications should just work, no user or developer intervention required.

I love it when you hear the phrase "should just work, no intervention required". It's time to grip your wallet tightly when you hear that. Here's the thing - there is no painless platform move. If Apple is going to a new chipset, there are going to be porting costs, period. Now, the author might have a point as to why Apple is interested (intel's new DRM technology). But the whole "pain free" migration? If you wanted that, you should have been using Smalltalk - where the move between platforms truly is seamless - and BottomFeeder is an example of that.

 Share Tweet This

space

Bring the Sand Wedge

June 6, 2005 8:37:03.167

Wired reports some good news on the Mars Rover Opportunity - NASA has gotten it out of the sand trap it had gotten stuck in. It took them a month, but it's done.

 Share Tweet This

BottomFeeder

Fixed Enclosure Handler

June 6, 2005 10:25:02.727

There was a nasty settings bug in the Enclosure handling plugin for BottomFeeder - I've posted an update that solves the problem. Just check for updates and load the plugin.

 Share Tweet This

itNews

Sun's fuzzy math

June 6, 2005 12:25:08.695

Jonathan Schwartz explains how $1Bn in cash is actually better than $4Bn in cash:

Let's start with basics. Pat Martin and team have done a fantastic job turning StorageTek around. They're profitable, and cash flow positive. On a non-GAAP basis, combined with Sun, we believe the deal will be accretive (additive) to earnings within the first year. Making money is a good thing. (Sun employees will recognize that as Priority 1.)
On a cash basis, here's an even simpler calculus for non-accountants - although the deal takes $4.1 billion to complete, STK has $1 billion in cash - meaning it takes $3 billion net to acquire the company. On $3 billion in cash, Sun generates around $100M in interest income. Using the cash instead to own STK swaps our interest income for STK's net income and cash flow. Which both exceed, obviously, our $100M in interest income. The shareholders are better off.
On top of this, we get the benefit of a common corporate infrastructure, increased purchasing power with suppliers, increased coverage - opportunties that represent upside to the above figure. And that's before we get to new revenue opportunities.

I think he went to the Abraham Beame institute for Advanced Finance - Bill Lyons was the other well known graduate of that school. Remember this post I made over the weekend - now read the last paragraph above. I've seen the results of "common corporate infrastructure", and it's not pretty. Then he touts the acquisition of sales staff:

With this transaction, Sun and STK combine to create one of the largest dedicated storage sales and service forces in the world - and combining our product roadmaps makes us a supplier of the broadest product line in the industry. (And unlike other notable industry combinations, there is near zero product overlap or redundancy - so customers can be assured of a seamless transition and roadmap continuity.) With healthcare information privacy, Sarbanes-Oxley, new FDA regs, securities compliance - anyone want to bet against the growth of archival storage or information lifecycle management? We'll be 3,000 folks stronger in going after the opportunity (which, at last count, measures about $65 billion annually) - and not just with tape, but with the combined organization and roadmap.

All I can say to that is LOL. When PPS and Digitalk merged, the first people who bailed were the sales folks. Why? They knew that there was going to be a period of uncertainty during which commissions were going to be harder to come by. There are always other opportunities for good sales people - the best ones at StorageTek are either out the door already, or interviewing. What Sun is going to end up with the low performers.

This is an amazing post by Schwartz, actually. Sun has been hearing a crescendo of "WTF??" reactions from all over, so they have to explain what passes for strategic thinking there with an immediate post from the COO. There is an interesting side point here - the fact that they posted this to a blog rather than (or in addition to) a standard press release is interesting.

 Share Tweet This

humor

Pizza with a conscience

June 6, 2005 14:22:23.305

If you like Lileks, then you simply can't miss today's bleat. A small sample:

And don't miss the Vision Statement. The slogan, "Pizza with a conscience," suggests that ordinary pizza is sociopathic, or at least has no opinion on factory farms and doesn’t care that the cheese cultures were kept in small smelly pens all their lives, or that the green peppers were doused with pesticides to make them robust and tasty. If your corporate pizza had a conscience, man, you would hear the ingredients weeping as you opened the box. Which is such a buzz killer. Eat me! Chew hard! I cannot bear this burden any longer - would that I crisped up in the oven and ended my life as a black wisp of smoke, evaporating like the cry of a baby seal in the cold arctic air. Yes, that’s what I want. I want the pizza shop’s slogan to be something like "Sausage so fresh the screams of the pig still bounce off the slaughterhouse wall!" Really I do.

Heh - it's worth reading in full

 Share Tweet This

itNews

Apple to intel

June 6, 2005 14:46:37.755

Ted Leung points to the press release. To answer Ted's query about clones, turn to the News.com story:

After Jobs' presentation, Apple Senior Vice President Phil Schiller addressed the issue of running Windows on Macs, saying there are no plans to sell or support Windows on an Intel-based Mac. "That doesn't preclude someone from running it on a Mac. They probably will," he said. "We won't do anything to preclude that."
However, Schiller said the company does not plan to let people run Mac OS X on other computer makers' hardware. "We will not allow running Mac OS X on anything other than an Apple Mac."

Let the attempts to build an OS X capable wintel machine begin :)

 Share Tweet This

cincom

Cincom background from the top

June 6, 2005 15:41:29.864

Cincom CEO Tom Nies was interviewed by the Wall Street Transcript recently - note the highlighting of Cincom Smalltalk:

TWST: We'd like to begin, if you will, with a brief historical sketch of Cincom Systems, and a picture of things as they are now.

Mr. Nies: Cincom is one of the founders of the software industry. We were organized in 1968. Our foundations were laid in the areas of database management and applications development technologies. In 1980 or so, we began to provide applications systems with manufacturing and financial applications as well. Then, in the mid 1980s, we began to offer text and text-management and text-content systems. During the latter half of the 1980's decade, we also provided Network Management Systems, and today offer CRM, Call Center, and Configuration Management systems. In the applications development technology area, we provide Smalltalk offerings, which are major object-oriented technologies. We're now the world's leading Smalltalk provider as well. In the past three years, we've expanded our offerings beyond software. We now provide outsourcing services for application development, application hosting, call centers, and business process outsourcing.

Get Smalltalk from the source - download Cincom Smalltalk NC now.

 Share Tweet This

travel

The joys of summer travel

June 7, 2005 0:18:12.641

I got to experience one of the true joys of summer travel on the east coast today - thunderstorms. It was hot today - temps went past 90 with pretty high humidity. On the east coast, that means one thing - late day T-Storms.

So of course I arranged my flight to Cincinnati for 7:50 pm. I arrived at DCA to find flights backed up like crazy - the 5:40 departure to dayton hadn't left yet (it never did - they put some of those passengers on our flight). We boarded around 8, and then just sat until 9, as a rather nasty storm rolled by. Then they re-opened the door, and put on a few refugees from the earlier flight.

Maybe next time I'll have the sense to fly earlier in the day :)

 Share Tweet This

smalltalk

Explaining Smalltalk's richness

June 7, 2005 0:24:07.916

David Buck illustrates the richness of the Smalltalk libraries - and the comparitive paucity of the C# and Java ones. Throw the "final" wrench into the mix and you get productivity loss.

Suppose, though, that Smalltalk could know (maybe by type inference or by declarations) the types of the variables and it implemented a kind of Intellisense similar to that in Visual Studio. What you'd find is that the list of available methods is about 10 times larger than those in C#. This highlights the fact that the C# libraries are really quite sparse.

Read his whole post - the table he posted is quite revealing.

 Share Tweet This

general

In planning meetings

June 7, 2005 9:23:04.700

I'll be in a planning meeting with engineering all day today (and tomorrow), so I won't be posting much. We should have a productive meeting, and I'll push out any useful details that I can

 Share Tweet This

cst

Things we would like to know

June 7, 2005 9:38:56.992

Interestingly enough, with the way we package Cincom Smalltalk we don't get a really good idea of what people are using. What do I mean by that? I mean that we ship both ObjectStudio and VisualWorks, with all their various components. So at our end, we would really like to know:

  • Are you using ObjectStudio, VisualWorks, VSE? Which ones do you have in development/production
  • For the Cincom Smalltalk product(s) that you use, which components are you making use of? Which ones do you plan to make use of?
  • What platforms (OS/hardware) are you developing on? What about deployment?

This kind of information would help us a lot. Please send me feedback on this, either in comments or email.

 Share Tweet This

StS2005

Smalltalk Solutions Daily Update: 6/7/05

June 7, 2005 14:58:01.099

Register for Smalltalk Solutions now, and find out what Cincom and our partner Georg Heeg have been up to with ObjectStudio:

Integration of Smalltalk Systems – E.g. ObjectStudio inside VisualWorks

presentation

Heeg, Georg: Georg Heeg Objektorientierte Systems

Tuesday 4 pm to 4:45 pm

See you in Orlando!

 Share Tweet This

cst

First day of meetings done

June 7, 2005 17:55:08.105

Our first day of the planning meeting is done, and, as usual, we haggled and argued over priorities and the relative importance of various aspects of the product. No, I'm not about to spill any "dirty laundry" we discussed :) We have another day of this tomorrow, at which point we should be ok for another half year. In the meantime, let me know what you think we should be up to.

 Share Tweet This

smalltalk

Bitwise Magazine and Smalltalk

June 7, 2005 17:58:21.045

Have a look at BitWise, which got a plug over on the astares blog. They have a story on Squeak this month, and they will be covering Dolphin 6 and Cincom Smalltalk in upcoming editions. Bookmark that site!

 Share Tweet This

rss

The value of RSS

June 8, 2005 1:36:51.146

Via ION RSS:

"Just received an update that IBM's CIO's office is testing out RSS for internal communications. At this moment we have 3 feeds up and running on the IBM intranet. [...] The intranet is the first source IBM'ers turn to when they are looking for information and contains our profile, our contact details, personalised data according to profession etc... With these 3 RSS feeds we're certainly going in the right direction."

There's your business value right there - automated information flow instead of haphazard emails. Does it work for everything? Of course not. Is it well suited to a large amount of internal communication? You bet.

 Share Tweet This

StS2005

Smalltalk Solutions Daily Update 6/8/05

June 8, 2005 9:27:54.554

Register today for Smalltalk Solutions so you can find out about the wxSqueak project:

Introduction to wxSqueak

presentation

Gayvert, Rob: Independent Consultant

Tuesday 4:45 pm to 5:30 pm

Abstract: wxSqueak is an open-source project which blends Squeak with the wxWidgets cross-platform GUI library. This presentation will start with the project goals and the main features of wxWidgets that are used in wxSqueak. Some of the more interesting technical challenges will be discussed, with particular focus on callback mechanisms. The current capabilities of wxSqueak will be demonstrated, and a roadmap for future development will be presented.

Bio: Rob Gayvert is an independent consultant, and has been working with Smalltalk since 1989.

See you in Orlando!

 Share Tweet This

travel

Cognitive Dissonance Watch

June 8, 2005 9:30:33.122

Wired News reports that United is adding WiFi - I have hated flying United, but with WiFi in the mix? Hmmm. If I can just get past the intense dislike....

United Airlines gets FAA approval for wireless internet access during domestic flights, but the FCC still has to OK it. Some international carriers already provide the service -- for a fee of course.
 Share Tweet This

marketing

What am I missing here?

June 8, 2005 12:27:44.923

Dare Obasanjo points to an MS response to a Sun benchmarking test (XML parsing). However, I didn't see the common XML file that these tests should have been using - I saw a description of the XML, but no sample. So.... what am I missing? Without common test data, this is all meaningless. Is there a link to the XML test data that I'm missing here?

 Share Tweet This

cst

Meeting Follies

June 8, 2005 14:55:16.199

After a hard day of meetings, a little fun is required - here's a picture of a few of us out at PF Chang's last night:

Dinner at the meeting 2

From the left, that's Georg Heeg, Suzanne Fortman, and Eliot Miranda

 Share Tweet This

cst

More team pics

June 8, 2005 22:29:16.475

I have some more photos - these are higher quality, as they came from a real digital camera

dinner at PF Changs

Starting on the left, that's Eliot Miranda, then Ron Weeks (ATG engineering manager), Vassili Bykov, Sherry Michael, Sam Shuster, and Kuroda-San. On the right side, we have MaryAnn Nelson (sales), Alan Knight, me (mostly hidden behind Alan), Andreas Hiltner, Helge Nowak, Bruce Boyer, and Claude Poole (Smalltalk engineering manager). Here's another shot:

dinner at PF Chang's 2

You can't tell who that is in front of Eliot, but that's Georg Heeg. Sam's in the back there, making a loud point :)

 Share Tweet This

development

Value Models - not just for Smalltalkers anymore

June 9, 2005 6:50:02.369

Ted Leung points to some useful resources for learning about the ValueModel pattern - including a reference in a book you may already have on your shelf.

 Share Tweet This

cst

Planning meetings accomplished

June 9, 2005 18:33:15.141

We had a good set of meetings, and I now have a full plate of things that need to be done - I don't have anything specific to discuss, since we didn't change directions at all - have a look at our roadmap for where we are headed (and note that I plan to update that doc)

 Share Tweet This

media

Media Hackers?

June 9, 2005 18:41:20.178

Steve Rubel reports that some people are yearning for some kind of "more authentic" ecology of podcasting - this is inspired by the news that Rush Limbaugh is now podcasting (although, I should note that it's a for pay service - you have to pay to access to the podcasts):

Dave Winer and Steve Gillmor have coined a new phrase - media hackers. I like it. Dave envisions a future where the biggest podcaster is not Rush Limbaugh, but media-hacker stars that have yet to come to the forefront.

Well, I have serious doubts about that happening (at least in large numbers). There's a reason that I go out of my way to listen to James Lileks, for instance - he spends time on his podcasts. Go over here and give on them a listen - you'll find an eclectic mix of pop culture references, Sci Fi riffs, and a variety of interesting (and often quite odd) music. There's only a new one once every few weeks, and part of that is likely due to the effort he's putting in.

Add to that something else - Lileks has a "radio voice" - he comes across very well. I've tried to listen to Winer's casts - they ramble, he moves away from the microphone (making it hard to hear him), and he's "all over the map" in terms of topics. In other words, there's no focus. It takes time to listen to an audio broadcast, whether it comes over the air or over the wire. If the speaker isn't focused and interesting, what's the point? Ultimately, if you expect to gain listeners, it's going to take actual effort. Rambling about whatever comes to mind just isn't going to cut it - for the same reason that it won't cut it in an editorial page writer.

 Share Tweet This

cst

Yet more meeting pics

June 9, 2005 18:50:11.091

I have two more meeting pictures - Suzanne had a real digital camera (as opposed to my camera phone), and had me snap a shot of her, Eliot, and Georg:

Suzanne, Eliot, Georg

Here's a lower quality one of Sherry Michael and Sam Shuster:

Sherry and Sam

That's what I have from the meetings - there should be a bunch of pics coming from Smalltalk Solutions though - along with my blogging of the events.

 Share Tweet This

customers

Satellite Forces and Cincom

June 9, 2005 18:53:18.800

I blogged about Satellite Forces last winter, and now we have a press release on our progress together:

OTTAWA, ON - Cincom Systems, Inc., a global leader in business process application development, announced today that they intend to pursue a partnership with Satellite Forces International (SFI), a leading developer of business management applications.
 Share Tweet This

StS2005

Smalltalk Solutions Tutorials

June 9, 2005 18:56:08.414

 Share Tweet This

tv

When I think it can't get worse

June 10, 2005 9:13:27.042

I get news like this:

Kim Delaney, Beau Bridges and David Cubitt will reprise their roles from NBC's hit SF miniseries 10.5 in 10.5: Apocalypse, a sequel that began filming in Montreal last week.

The whole plot was an improbability drive :)

 Share Tweet This

law

Bad ideas beget more bad ideas

June 10, 2005 9:18:39.976

Here's a story proving that bad copyright ideas aren't solely a US problem - look at what the Europeans are pondering:

European recording companies are pushing to extend terms of copyright to nearly 100 years to be more in line with U.S. law.

So the idea is to prove equivalent levels of idiocy?

 Share Tweet This

esug2005

Looking for ESUG info?

June 10, 2005 9:35:50.966

If you want up to the minute info on the ESUG conference, then you should subscribe to this feed.

 Share Tweet This

blog

Changing the structure

June 10, 2005 11:24:47.252

When I first created this blog server (back in 2002), the basic server structure differed a fair bit. I've been evolving the code (mostly without having to restart the server) over time, and I'm about to make another such change - to the storage mechanism. The running implementation now dumps every blog item into one directory (per blog). So, every post I've ever made sits in a file somewhere in the same directory (one file per day). At some point, that's going to be a problem in terms of the file system. So, I've made a small change - underneath the basic storage directory are per-year directories, and each post just drops into that directory. The cool thing is, that change required only three small method changes - I'd refactored the storage code awhile back, so it was simple.

Harder is the fact of the existing server, it's caches, etc. Once I made the simple code change, I had to get the server updated - files relocated and caches updated. Moving the files was easy, because they are named based on date: a file named vw_blog13-5-5.blg is from the 13th of May, 2005. Quick work to rearrange all of that. Then there's the caches - for quick lookup, there are a few caches that needed updating - for instance, the category cache:


blogs := (BlogSaver default keys) asOrderedCollection.
blogs do: [:each |
	| blog |
	blog := BlogSaver named: each.
	blog cache setupSearchCategoryCache].


Another short script of the same sort for the keyword cache, and it's done. I'll convert the server to this new structure sometime this weekend, and the cool part is, no one should notice the change.

 Share Tweet This

weather

Storm info for Florida, Gulf coast folks

June 10, 2005 12:39:25.808

If you live on the gulf coast or in Florida, here's a feed you should subscribe to - the National Hurricane Center. The stock website is here. At present, they have good info on Tropical Storm Arlene (scroll down); last year, I kept track of all the storms that crossed Florida via that feed. My parents live in Melbourne Beach, FL, so these things are of interest to me.

 Share Tweet This

development

Too many bad ideas to count

June 10, 2005 16:47:18.902

Richard Mansfield has been scarred by the "C" language family. In this article, he tries to explain why OOP is bad. What he mainly explains is something very simple - he's only been exposed to OOP done wrong, and drawn bad conclusions from this:

To the extent that OOP is involved in components such as text boxes (not much, really), it's very successful. GUI components are great time-savers, and they work well. But don't confuse them with OOP itself. Few people attempt to modify the methods of components. You may change a text box's font size, but you don't change how a text box changes its font size.

What he's doing here is arguing against a concept that predates OO - encapsualtion. I was confused by this trashing of basic programming concepts until I read the short bio at the end of the piece:

Richard Mansfield has written 32 computer books since 1982, including bestsellers 'Machine Language for Beginners' (COMPUTE! Books) and 'The Second Book of Machine Language' (COMPUTE! Books). From 1981 through 1987, he was editor of COMPUTE! Magazine and from 1987 to 1991 he was editorial director and partner at Signal Research.

It looks to me like Richard started out in assembly, and his exposure to OOP has been through the marvelous examples provided by C++, Java, and C#. In those languages, you get OO as the supposed main play, but it's surrounded with stupidity like primitive data types, "final" class definitions, etc, etc - it's no wonder he's come away with so many bad ideas:

For a while it was a success, but things took a turn. In those early days, computer memory was scarce and processors were slow. Processor-intensive programs such as games and CAD had to be written in low-level languages just to compete in the marketplace. To conserve memory and increase execution speed, such programs were written in assembly language and then C, which conformed to the computer's inner structure rather than to the programmer's natural language. For example, people think of addition as 2 + 2, but a computer stack might work faster if its programming looks like this: 2 2 +. Programmers describe it as little Ashley's first birthday party: the computer starts counting from zero, so to the machine it's her zeroth birthday party.
When fast execution and memory conservation were more essential than clarity, zero-based indices, reverse-polish notation, and all kinds of bizarre punctuation and diction rose up into programming languages from the deep structure of the computer hardware itself. Some people don't care about the man-centuries of unnecessary debugging these inefficiencies have caused. I do. Efficiency is the goal of OOP, but the result is too often the opposite.

He then goes on to argue that data and functionality need to be separate - that this somehow increases the odds that your code will be flexible:

I find that leaving the data in a database and the data processing in the application simplifies my programming. Leaving data separate from processing certainly makes program maintenance easier, particularly when the overall structure of the data changes, as is so often the case in businesses (the most successful of which continually adapt to changing conditions). OOP asks you to build a hierarchical structure and thereafter try to adapt protean reality to that structure.
Encapsulation, too, is a noble goal in theory: you've reached the Platonic ideal for a particular programming job, so you seal it off from any further modification. And to be honest, constructing a class often is fun. It's like building a factory that will endlessly turn out robots that efficiently do their jobs, if you get all the details right. You get to play mad scientist, which can be challenging and stimulating. The catch is that in the real world programming jobs rarely are perfect, nor class details flawless.

This is where I think he runs off the rails. Inheritance is one aspect of OOP, but it's not the end-all, be-all. In fact, most of us recognize that deep inheritance trees lead to obfuscation more than they lead to elegance. But never mind that - what I want to know is this: If I have a set of functions over here, and the database over there - as opposed to a set of objects over here, and the database over there - how is the former easier to update than the latter? If the form of the data changes, guess what? The functions (or methods) need to adapt. Richard seems to think that a rigid separation somehow makes this easier - either he's smoking something, or he's never worked on a non-trivial system. I spent years working in C, and I also spent a fair bit of time in Basic (and other similar languages). Believe me, Smalltalk makes it far, far easier to deal with code migration issues than anything else I've ever worked with.

Mansfield has discovered that the Emperor has no clothes, and he thinks the Emperor is OOP. What he hasn't figured out - most likely through lack of exposure - is that C++, Java, and C# do not define OOP. In fact, they are all fairly ugly hacks pretending to be OO, while preserving the nasty familiarity of C style syntax. If he wants to blame someone, he can look at the supposed giants: Stroustrup, Gosling, and Hejlberg - who have managed to inflict a few megatons worth of damage to the software development field during their careers.

 Share Tweet This

humor

Humorous local media moment

June 10, 2005 18:20:17.397

My wife spotted this headline in a local newspaper - I don't think I need to add much commentary:

humorous headline
 Share Tweet This

sports

Holy contracts batman!

June 10, 2005 18:58:32.783

You have to see it to believe it:

The "cursed'' 1919 contract that shipped Babe Ruth from Boston to the Bronx sold at auction Friday for a staggering $996,000, delighting its new owner -- a die-hard Yankees fan -- and a hunger-relief group designated to receive a financial windfall from the sale.

All I can say is, whoa....

 Share Tweet This

BottomFeeder

Plugging the pieces together

June 10, 2005 20:42:54.257

Over the last few years of development work on BottomFeeder, the application has changed in one very important way - what started out as a monolithic, big ball of code has become a set of reusable components that have been plugged together. That's not true in all cases; the RSS parsing is still too tightly coupled to the application - a looser coupling could make for a fully reusable Smalltalk library for dealing with RSS and Atom. However, that's the exception here. The application now includes, between core components and plugins, 30 pieces that can be updated in a (mostly) independent fashion. Of course, updates to one sometimes require new APIs available in another, but you get the idea.

So what's there? Let me walk through the list:

  • SpellChecker - a pluggable spell checking module. It depends on the presence of the ASpell shared libraries, which are readily available for Linux and Windows, and can (in theory at least) be compiled for other platforms
  • GIF Support - a library for reading GIF format
  • WinGDIPlus - a Windows specific library that uses native libraries to convert various image formats into something that Smalltalk can use
  • EpiWin32Folder - a Windows specific library that enables use of the directory selection dialog (as opposed to the file selection one)
  • Emote-Support - used mostly by TypeLess, it provides a set of emoticons, enabling auto-replacement of ASCII-art
  • ExtraEmphasis - a library that simplifies various VW font usage scenarios
  • ExtraActivity - a library that makes it easier to animate Visual Components. Used mostly bu WithStyle
  • Weaklings - adds a simple "Weak" mechanism for instance variable slots in an object
  • VRCommonDialogs - a cross platform set of common dialogs
  • Http-Overrides - this is really part of the NetResources library. It separates out the overrides required by that library, so that changes needed after a new VW release are easier to track down
  • NetResources - a basic library for wrapping the VW net clients libraries with a highter level API
  • NetResourcesHTTP - a high level API for HTTP access that simplifies access, and adds support for things like caching, digest auth, and more
  • PatchFileDelivery - a general settings driven library for delivering application level updates (parcels) via HTTP. Supports download and save, and download and load immediately
  • Browsing-Assist - a library that supports spawning a web browser on an URL across platforms. On Windows and Mac, this "just works", and has APIs for spawning new or reusing. On other platforms, the browser must be specified
  • OSTimeZone - a cross platform library for setting the time in VW to match the PC clock
  • XmlRpcClient - a library for making XML RPC calls and handling the responses
  • XML Configuration Files - a library for storing configuration information (or serializing objects) in an XML format.
  • BottomFeeder - the basic BottomFeeder application itself
  • Twoflower - the Twoflower Http parser, used by WithStyle if LibTidy is not present or fails
  • WSBundle - The Software With Style code base
  • LibTidy - a library that wraps the C based LibTidy. This library takes arbitrary HTML and cleans it up, returning valid XHTML.
  • Win32TaskbarSupport - makes VW Windows and menus cognizant of bounds, including the taskbar - prevents menus from disappearing behind the taskbar
  • Windows TrayIcons - a Windows specific library with a simple API - allows you to drop an application into the tray
  • IRC-BottomFeeder-Typeless - the Typeless IRC plugin to BottomFeeder
  • Blog-Tools - the Blog posting plugin, which supports Blogger API, MetaWebLogAPI, and the MT API. Also available Standalone, as BottomLine
  • WinMineGame - Minesweeper
  • GoldenMonkey - a game
  • Steroids - Asteroids game
  • Xonix - the old Xonix arcade game
  • EnclosureHandler - manager for downloading/saving enclosures automatically

That list has grown over time - I started out with three components that could be updated at runtime! I should also point out that an awful lot of those components were written by other people - in particular, Software With Style is responsible for the excellent NetResources and WithStyle components - without which, BottomFeeder would be a lot less nice.

 Share Tweet This

marketing

Slamming a blog strategy

June 11, 2005 10:48:01.423

Scoble slams UPS in response to this article by Robert Manning of UPS. However, Manning does have a few good points. Rather than rush out and start blogging, you should have some idea what your plan is if you go at it from the "corporate blog" side. On the other hand, if you approach it as Sun and MS have - just let the employees go out there and provide a human voice rather than a corporate drone - then you can be more laissez-faire about it.

However, that doesn't mean that corporate marketers get to ignore the blogosphere; far from it. Witness the Kryptonite and Kensington issues, for instance - would you rather let those things sit and fester, or be able to respond immediately? That Kryptonite response was from weeks after the incident, when the damage was already done. As best as I can tell, Kensington has yet to respond.

What you product marketers and product managers need to be doing is paying attention to product mentions. How? Via search feeds. Using BottomFeeder as an example, I can set up search feeds using Feedster, Google, Yahoo, MSN, BlogPulse, BlogDigger, A9, and Three headline news services. I can also add searches that need to be manually set, like those from PubSub. Here's what it looks like:

Search Feed Results

You can click that for a bigger image. The point is that by subscribing to a search for "kensington lock" I can find all the references - positive and negative - that flow through the sphere. For my product - Cincom Smalltalk - I search on

  • Smalltalk
  • Cincom Smalltalk
  • ObjectStudio
  • VisualWorks
  • Cincom

Across a number of the search engines. When I find positive references, I can publicize them - maybe even approach the person or company in question for a success story. When I find a negative response, I can follow up and get more details. That latter part is where a corporate blog may come in.

If you find yourself responding to commentary that comes in this way in a repetitive fashion, it may well be worth your while to get an FAQ posted. From there, you may decide that you need a more open, interactive forum - like a blog. Either way, you need to be tracking the commentary - because the positive and negative points are being made whether you engage them or not.

 Share Tweet This

media

Rewriting History

June 11, 2005 11:46:59.504

Sometimes, an industry analyst gets a story so very, very wrong that they try to completely airbrush history. Members of the MSM like to accuse bloggers of this, but I just found a whopper example from Tom Yager of InfoWorld. On June 6th, before the Apple conference, he wrote about the (then rumored) Apple/intel thing. I can't link to the story because it's just gone - instead, I took a photo of it:

Yager blows the Apple story

Now, it's hard to make out in there, but you can click for a bigger image. Compare that with the posted commentary from Yager on June 6 (note the "updated 9 June" snippet on the left). Here's a piece from the dead tree version:

Might Apple sell an x86? I doubt it. Might Apple shrink-wrap OS X for PC Systems? Who cares?

...

I'll tell you my pet scenario: IBM leaked the details of the top secret PowerPC 970MP processor to needle Apple into committing to a volume purchase. Apple doesn't like to be jerked around, so it had a sit-down with Intel over cucumber sandwiches and chortled, "You must promise not to tell anybody about this"

Compare that to what's posted at that link - some crow eating, but not a lot, and the print column is straight down the memory hole. The point isn't that Yager got this wrong - heck, go Google intel and Apple and see how many other people got this stuff wrong. Heck, look here, on my blog, and see where I fantasized about Apple "thinking different" and using the iTanic. Yager wants to airbrush history though: "Me? Predict that Apple would never, ever go to intel just days before it happened? Never, I never said such a thing! Why, try finding it in Google!".

So much for all those editors and fact checkers that keep "professional" writers honest - as opposed to the bloggers, who can just re-edit history. Yeah, right...

 Share Tweet This

logs

Weekly Logs - 6/11/05

June 11, 2005 13:20:59.259

Well, it's time to have a look at the logs again. First up - BottomFeeder weekly downloads.

PlatformBottomFeeder Downloads
Windows520
HPUX475
Mac 8/9343
Sources268
Linux x86209
Mac X172
CE ARM86
Update38
Solaris15
Windows98/ME11
Linux Sparc8
AIX4
SGI3
CE x862
Linux PPC2
ADUX1

That's an average of 308 or so a day over the last week, which is where things have been at lately. Being cross platform has its benefits - A lot of my download rate is for platforms that have no other viable RSS/Atom answer right now. Let's take a look at the stock HTTP accesses to the blog site:

ToolPercentage of Accesses
Mozilla44.4%
Internet Explorer31.1%
Other11.6%
Java2.6%
Google Bot2.5%
BottomFeeder2.5%
Net News Wire2.3%
MSN Bot1%
BlogLines1%
Opera1%

A little more variety than last week, but not vastly different. What I'd really like to do is compare User Agent access to the main cincom site and the blog site - I suspect that IE accesses over there are a lot higher. Finally, let's look at the RSS report:

ToolPercentage of Accesses
Mozilla23.4%
BottomFeeder17.9%
Net News Wire14.4%
Other15.4%
BlogSearch4.9%
NewsGator4.2%
SharpReader3.5%
Safari RSS3.3%
BlogLines3.2%
Lilina2.1%
Planet Smalltalk1.8%
Feed Tagger1.7%
MSN Bot1.7%
Internet Explorer1.6%
Feed Demon1.5%
Liferea1.4%
RSS Bandit1.2%
Feed Reader1%
Shrook1%
Jakarta1%
Python1%
Google Bot1%
JetBrains1%

You can see that I trawled my way through the "Other" category (compared to last week) and added a few entries - the variety of tools in use to read RSS continues to grow, at least according to my logs.

 Share Tweet This

logs

What's up with search engine access this week?

June 11, 2005 23:30:13.327

Here's the search engine accesses to my blog over the last week - I'm not really sure I understand what happened here - there was a rather large spike from last week:

6/11/05 Search engine look

So what's up with that? Why the sudden increase in search engine accesses? Strange stuff, these logs.

 Share Tweet This

development

Unnecessary damage

June 12, 2005 11:56:03.453

Incipient Thoughts makes a point about inheritance and polymorphism that points out a problem common to OO development - without regard to implementation language:

In every OO class I teach, I introduce encapsulation and polymorphism as the primary OO tactics, with inheritance a distant third. It's hard to tease apart polymorphism and inheritance, because most OO languages are based on an intimate fusion of the two, unnecessarily.
Inheritance is a very strong relationship between objects. It makes it hard to tease anything apart. Some people experience maintenance problems as a result of pervasive inheritance in OO systems. Justifiably, these people then become skeptical about polymorphism as well, because it is so strongly linked to inheritance. They are then tempted to give up on OO altogether. This is throwing the baby out with the bathwater.

The two don't have to be so tightly linked, and - in the place OO originated (Smalltalk) - they really aren't. I have plenty of polymorphic objects in BottomFeeder that have no inheritance relationship at all. However, the two are commonly linked in the teaching of OO, and it's not unusual to see large inheritance trees in Smalltalk projects. Which is too bad, because Smalltalk makes ad-hoc polymorphism far easier to achieve than Java, C# - you don't have to go out of your way to define a formal interface, for instance.

There's a good example in the post using an "edit" feature of a Wiki, which points out how inheritance is an unnecessary complexity in this case.

 Share Tweet This

smalltalk

Smalltalk - not just for playing

June 12, 2005 12:18:13.509

Interesting post on the power of Smalltalk, but with an odd entry point:

The first thing I noticed was that the Smalltalk community is still alive allthough a bit muted. The impact of Java has definately taken its' toll though. A quick search on jobserve for Smalltalk vacancies identified only 10 or so and they appeared to be for maintance work. It looks like the remaining Smalltalkers are using Smalltalk just out of interest or just for fun in their spare time. With the exception of one or two German Consultancies, most of the Smalltalk related websites were either academic, or open source related - very few businesses.

Here's a Google search for Smalltalk - The Cincom Smalltalk web page comes up 4th, and the Why Smalltalk page 3rd. Admittedly, the Squeak entry in second place might emphasize an academic orientation, but there's plenty of commercial information right there. The top entry, for Smalltalk.org, republishes content from the CST blogs, so that will lead you to plenty of good information as well.

The rest of the article is well worth reading - it's a good promo for the ease of use and power of Smalltalk:

I got to put this idea to the test the other day. Whilst playing with Squeak, my girlfriend decided to pop herself on my knee and took a look at what I was doing. I was playing with the Alice framework port (Alice.org). Alice is a3D graphical framework which allows you to create a 3D world populated by Actors. On the screen was a pink bunny rabbit wearing dark glasses and carrying a drum and a mallet. I entered a few Smalltalk expressions asking the system to 'do-it' each time, and watched my girlfriends expression as the bunny respond to my every command. She soon caught on, and started entering commands of her own: "bunny head turn." Getting bored I was about to issue "bunny destroy" when she stopped me. "No you can't do that to such a cute bunny, make it beat the drum instead". At this point she grabbed the keyboard an typed "bunny beatDrum", but the system responed with: " bunny didNotUnderStand".

That's why I include a workspace in BottomFeeder - I actually use it myself for scripting and experimenting. That kind of end application scripting has led to actual product features, and is something that is well nigh impossible in Java or C#. In applications shipped in those languages, you have a dead end - if the developer didn't consider it, you're just done. Does this mean that just anyone can start coding in the Bf workspace? No, you do need to know the APIs and class names - that's a limitation. But at least you get far enought to have the limitation :)

 Share Tweet This

travel

Visiting Brussels and Beyond

June 12, 2005 18:02:04.300

My family and I will have a few days in and around Brussels, Belgium this summer (in August, after ESUG). We've got no clear idea at this point as to what we want to see - we have a number of thoughts, but they are not organized. We have 4 days to spend - and we don't want to spend most of it in a car or train. Anyone have any good suggestions? Thanks!

 Share Tweet This

BottomFeeder

Speaking of scripting

June 12, 2005 19:27:54.298

BottomFeeder includes a workspace that allows scripting - but it's deeper than that. If you save your script to file called .btfrc and put it in the same directory as the image (or exe), it will get filed in at startup. For instance, I just had one of the IRC regulars ask me about a change to the localhost server that Bf runs. If you hit this url - http://localhost:8666/btf - while Bf is running, it will give you a list of your subscriptions, along with the top five items. Well, what if you wanted only the new items? Simple enough, if you have a small change to one method:


printHtmlOn: aStream

	(self link isNil or: [self link isEmpty])
		ifFalse: [
			aStream
				nextPutAll: '<a href="';
				nextPutAll: self link;
				nextPutAll: '">'.
		].
	aStream nextPutAll: self title.
	(self link isNil or: [self link isEmpty])
		ifFalse: [
			aStream nextPutAll: '</a>'.
		].
	(self items notNil and: [self items notEmpty])
		ifTrue: [| toPrint |
				toPrint := self allNewItems.
				aStream nextPutAll: '<ul>'.
				toPrint do: [:each | 
							aStream cr.
							aStream nextPutAll: '<li>'.
							each printHtmlOn: aStream].
				aStream nextPutAll: '</ul>'.
				aStream cr].
	aStream 
		nextPutAll: '<br/>'; 
		cr

The only change was in the line: toPrint := self allNewItems. That had explicitly grabbed the top five before. Now, you do need to know the Bf API to make this sort of change. However, the cool thing is that it doesn't need to be a one-off effort. I've used this feature myself, and I know a few other people who have as well. The nice thing is that I didn't have to go out of my way to add scripting support to the application - it just happened. In fact, I wasn't even the first person to notice :)

 Share Tweet This

StS2005

Smalltalk Solutions Daily Update: 6/12/05

June 12, 2005 20:09:23.468

Smalltalk Solutions 2005 is coming up quickly - it starts on the 27th! Register now, so you can find out what's going on in the Smalltalk world:

Unit Testing Seaside Components

presentation

Shaffer, C. David: Westminster College

Tuesday 2:45 pm to 3:30 pm

Abstract: I will present the freely available SeasideTesting framework and a small representative set of tests. SeasideTesting is a framework that extends SUnit to simplify developing and running tests of Seaside web components. This framework is unique in that it is designed specifically to allow both testing the rendered HTML result and direct access to the component instances. The advantages and some challenges that come with this capability will be discussed.

Bio: I am an assistant professor of Computer Science at Westminster College in Western Pennsylvania USA. In that capacity I teach all levels of undergraduate Computer Science. I am also sole proprietor of Shaffer Consulting and have been developing software in Smalltalk, Java, Python, C, C++ for more than 15 years. Recently I developed payroll and retirement management software and business to business web applications. I have several years experience with Java/JSP and also develop web applications using Python.

See you in Orlando!

 Share Tweet This

media

Navel Gazing 101

June 13, 2005 0:00:48.396

When you read something like this, it really, really makes you wonder:

Although many reporters look forward to the trial's end, some admit they will be sad to see their colleagues go.
"It feels a little bit like the end of summer camp," Massie said. "It's a long time to be away from home, but you also get to meet people from different walks of life and get their opinion on things."

Summer camp? Time to step away from the camera and microphone, I think.

 Share Tweet This

humor

Beer Based Logic

June 13, 2005 0:12:14.339

Via Bob Congdon comes a link to this game of truck vs. overpass. The title was my wife's thought on how the decision to just keep going after the initial impact came about :)

 Share Tweet This

development

Why dynamic typing makes life simpler

June 13, 2005 7:34:57.656

Read Tim Bray's adventures with generics in Java - and you'll know why a system that forces you to make the compiler happy does so at the cost of your productivity. The justification for all that complexity?

At the end of the day, my interfaces are all nicely parameterized and their customers won’t be getting any warnings. And I do think that making Comparable a little less of a blunt instrument was probably a good idea; after all, even if Fish is a Comparable, the following is probably unsound:
if ((new Fish(freshwater)).compareTo(new Bicycle(racing)) < 0)

The actual liklihood of that line of code being written? Approximately zero, and even then, only for your larger values of zero. But Java is good that way, protecting you from events you'll never see, and making sure you'll rationalize them away.

Meanwhile, we're busy being productive over here.

 Share Tweet This

marketing

When WiFi drives less business

June 13, 2005 7:50:05.395

Via Dave Winer comes a link to an interesting NY Times piece on the intersection of cafe culture and free WiFi - here's an explanation of the problem that one coffee shop offering free WiFi ran into:

Victrola started providing free wireless access two years ago after customers asked for it. As in hundreds of other cafes, the owners hoped it would encourage regulars and infrequent patrons to buy more food and drinks. But there was also a disadvantage, staff members said: the cafe filled with laptop users each weekend, often one to a table meant for four. Some would sit for six to eight hours purchasing a single drink, or nothing at all.

I can see that happening, and I understand why this shop (explained later in the piece) decided to pull WiFi access on weekends. There's an examination of the different types of patronage such shops get, and how it drives the "culture" of the shop. Interesting stuff, and proof that not every business answer lies on the net :)

 Share Tweet This

StS2005

Smalltalk Solutions Daily Update: 6/13/05

June 13, 2005 8:32:33.792

Register for StS 2005 today, so you can find out what's new in the Smalltalk world:

VA Smalltalk Going Forward

presentation

O'Keefe, John and Clayberg, Eric: IBM, Instantiations

Tuesday 10:30 am to 12 pm

Bio: John O'Keefe is the lead developer of the IBM VisualAge Smalltalk team. After spending the first 2/3 of his career at IBM working on process control software and mainframe systems, he was introduced to Smalltalk by Bob Hinkle in 1988 and found his niche. He has been working on the IBM VisualAge Smalltalk product since before Version 1 and has been the technical lead of the team since Version 4.

Eric Clayberg, Sr. Vice President of Product Development for Instantiations, Inc., was Executive Vice President of Objectshare Systems, Inc. and Vice President of Development for ParcPlace-Digitalk, Inc. He is the primary author and architect of over a dozen commercial Smalltalk add-on products including the popular VA Assist Enterprise and WindowBuilder Pro product lines. He has a BS from MIT and an MBA from Harvard.

See you in Orlando!

 Share Tweet This

web

The evolution of knowledge

June 13, 2005 9:32:43.281

Jon Udell highlights an issue that Dave Winer ran across in a WikiPedia page - from Dave's blog:

How is Wikipedia going to prevent from this from happening again? That's a serious issue. It's not the first time it's happened. This is why I've never been a strong advocate of Wikipedia.

When I spotted that in his blog, I followed the link, and couldn't see the problem - the page had been updated between the time Dave posted on it and my aggregator updated. Jon Udell has a lot more on the evolutionary nature of WikiPedia posts, and his screencast on the subject is perhaps the best way to understand how that works.

On a Wiki, information doesn't so much want to be free as it wants to be updated...

 Share Tweet This

web

The joys of the net

June 13, 2005 10:31:32.690

Julie Lerman reports that some jerk is trying to trash her blog, and is busy deleting files. You know, I understand industrial espionage. I don't condone it (hardly!) - but the motivation for it is clear. With this? What is it, just simple nastiness? What's the point? Do the people doing this think that deleting a bunch of files off a server is something to brag about? Good luck Julie, and I hope the loser or losers doing this never work again.

 Share Tweet This

development

Rent-a-wreck

June 13, 2005 19:23:46.442

Philip Greenspun asks a question about Rent-a-coder:

A business-minded friend of mine wanted a Web site with a lot of database-backed features, such as user registration, classified postings, auction bids, a user reputation system, etc. A simplified eBay. She also needed all the graphic design done. She posted her specs on www.rentacoder.com and the numbers to implement this system came back at around $450 for the entire job, including the graphic design. The five bids all came back fairly close to $450 from programmers in Bangalore, Romania, and Canada(!). She put the project on hold for reasons unrelated to implementation so we don't know how it would have worked out.

Here's the basic problem with that approach - it assumes that initial development is all you'll ever need. Using a system like this, where do you get:

  • Maintenance (i.e., bug fixes, etc)
  • New features as requirements change

There's a Heinlein phrase that comes to mind: TANSTAAFL.

 Share Tweet This
-->