development
June 15, 2005 22:21:29.554
News flash - "browse senders" is hardly a new thing. And yet, people using MS tools seem amazed by it:
Here's an example. Let's say I want to add attended transfer (where you have a call, press transfer, dial a number, talk to the new call, then hangup to connect the two). I'm looking in the source I'm familar with (the IAX protocol area), and see iax2_hangup(). That's a packet-level call, so when someone physically hangs up, that, somehow, gets called. Where? Well... right click the function, Call Browser -> Show Calls To:
Only implemented in Smalltalk back in the late 70's sometime, and - probably in Lisp before then. I guess if it doesn't come with curly braces, it doesn't exist :)
Share
StS2005
June 15, 2005 22:00:41.501
I just received this announcement from Ann at Precision Systems, one of the corporate sponsors of this year's Smalltalk Solutions:
ENTER OUR RAFFLE FOR SMALLTALKERS: WIN AN APPLE IPOD OR AMAZON$!
Anyone can enter our free drawing. To enter, simply fill out this form
We will be giving away:
- an Apple iPod, and
- ten Amazon.com gift certificates
You don't need to be present at the drawing, which will be held at the conclusion of:
SMALLTALK SOLUTIONS 2005: JUNE 27 - 29 IN ORLANDO, FL!
Precision is proud to be an official convention exhibitor. There will be an impressive array of speakers, tutorials, workshops and exhibits of Smalltalk products and services. See the convention website for details
We hope to see you there! Good luck in the drawing!
Anne Miller
Precision Systems Design, Inc.
Smalltalk Staffing Group
SmalltalkGroup@PrecisionSystems.com
See you in Orlando!
Share
examples
June 15, 2005 13:38:43.098
I haven't posted an honest to goodness example in awhile -
here's how to accomplish the common UI need to "zoom" a widget. I
didn't come up with this code myself - in the finest Smalltalk
tradition, I stole the code from the file viewer, which supports
this as well.
In BottomFeeder, you can zoom the HTML pane to cover the entire item view/html view area. To do that, you need to figure out where your new widget bounds are, and then use them. Here's the "outer" method in Bf that either zooms or unzooms, as appropriate:
actuallyZoomHTMLView: htmlView topLayout: topLayout splitter: splitter2 top: top
| sub myDivider |
sub := self widgetAt: #feedID.
myDivider := (self getComponentFromSubcanvas: sub withID: #Divider2).
(self isZoomed: top)
ifTrue:
[self
unzoomHTMLView: htmlView
topLayout: topLayout
splitter: splitter2
top: top.
myDivider beVisible]
ifFalse:
[self
zoomHTMLView: htmlView
splitter: splitter2
top: top.
htmlView takeKeyboardFocus.
myDivider beInvisible].
self currentBuilder window refresh.
htmlView beVisible
Now, there are a couple of curious things in there, including
the #getComponentFromSubcanvas: message send. In Wrapper (as
opposed to Pollock), it can be a pain in the butt to grab a wrapped
UI if you haven't kept the builder around. in Bf, I wrote a
convenience method to deal with that.
The arguments coming into that method are the wrappers for the
html pane, the layout for the item grid (or list) pane, and the
wrapper for the splitter. All the wrappers are retrieved like
this:
wrapper := self builder componentAt: #widgetIDHere.
while the layout is retrieved:
wrapper := self builder componentAt: #splitterID.
layout := wrapper component layout.
Having all that, we now have enough information to actually
resize the pane. That code is a simple convenience method in
BottomFeeder:
zoomHTMLView: htmlView splitter: splitter2 top: top
"zooms the HTML view, covering the item pane"
top beInvisible.
splitter2 beInvisible.
(htmlView component layout)
leftFraction: 0;
leftOffset: 0;
topOffset: 0;
topFraction: 0
The unzoom method looks similar:
unzoomHTMLView: htmlView topLayout: topLayout splitter: splitter2 top: top
"unzooms the HTML view, exposing the item pane again"
(htmlView component layout)
leftFraction: 0;
leftOffset: 0;
topFraction: topLayout bottomFraction;
topOffset: topLayout bottomOffset.
top beVisible.
splitter2 beVisible
What you are doing here is handing the wrapper a new layout frame to live in (thus the four arguments, telling it what the edges are). This is easy enough to extend to any widget or set of widgets, and, in fact, the code in Bf should be more generalized. It works though, and I haven't had a strong desire to muck with code that works well :)
You should be able to adapt this idea to your own UIs easily - and if you need an in image example, have a look at class Tools.FileTools.FileBrowser - specifically, at the #toggleZoom method.
Share
StS2005
June 15, 2005 11:07:46.069
Share
humor
June 15, 2005 10:36:25.351
Share
itNews
June 15, 2005 8:35:48.783
If you cast your mind back 10 years, you'll recall the various stories about the disasterous baggage handling system at Denver International Airport. Well, ComputerWorld reports this morning that the system is being retired, and DIA is returning to - wait for it - manual handling:
After more than a decade of trying to make Denver International Airport's computerized baggage system work as designed, United Air Lines Inc. is giving up on the technology and returning to manual handling procedures.
"It's never worked up to its potential," United spokesman Jeff Green said last week. He added that the airline has spent "enormous amounts of money" on the system over the past 10 years, but it's still used only for luggage heading out of Denver on United and some baggage transfers between flights. The system has never been able to process luggage from arriving flights.
Here's where I explain the title. The system has never worked properly, and yet it stayed online for a decade, causing who knows how many problems over that time. There were stories that first year advocating the action that they just took now, but no one was willing to admit defeat then.
This happens in IT projects as well, and it tends to get worse as more money is spent. There's kind of a tipping point past which failure becomes too ugly to contemplate - someone would have to explain all the consulting fees, all the hours spent, etc. etc - it's just easier for all involved to try and muddle through. In the meantime, large amounts of business damage accrue, and for what? The pride of a small cadre of management who won't admit that mistakes were made.
Share
events
June 15, 2005 7:43:14.092
Whoops, I can't read a calendar - this was last week (see the comments) - here's what you missed:
A final reminder: the next meeting of the Toronto Smalltalk User
Group will be TODAY, Wednesday, June 8 at 6:30.
The meeting will be on the 42nd floor (not the 47th, as in the
past) of the Bay Wellington tower, 181 Bay Street (Bay &
Wellington, the north tower). When you step out of the elevator, go
left, then left again. We're at the end of the hall. Look for the
'Northwater' sign.
Our web site is still down. We're still correcting a
registration error... and the paperwork is a nightmare.
Jean-Luc Roche will talk about his experience in France...
The "Mutuelles du Mans", one of the two big Smalltalk users in
France, developed all their corporate software with VisualWorks
v2.5 in the early 90's. They never took the time to keep up to date
with new Smalltak releases and, by 2002, they were faced with the
rather daunting task to port all their applications to VisualWorks
v7.
The most challenging aspect of the project was arguably to
migrate the environment development to StORE, the SQL-based
repository that ships with VW v7 and replaces ENVY. I propose to
take a look at the porting strategy we used, to describe the
difficulties we met and, in that process, to explore the
differences between ENVY and StORE.
Bob Nemec
Toronto Smalltalk User Group
www.smalltalk.toronto.on.ca
Share
development
June 15, 2005 7:38:17.933
Via Steve Kelly, I came across this gem from Stefan Tilkov:
Definition: Worst-of-breed; composite noun: a strategy mixing a set of approaches, technologies or solutions so that the disadvantages add up to a disastrous combination no single item would have been able to create.
Example: Java + XML configuration files, which combines the verbosity and pain of having to create lots of meaningless code typical for statically typed programming languages with the runtime error probability of dynamic languages due to small typos, sometimes adding up to a solution that looks like an obfuscated programming contest application.
Heh. That's about the size of it. Productivity is over here.
Share
smalltalk
June 15, 2005 7:27:19.737
Brian Foote has some pictures from Smalltalk Solutions 2001 posted here. I'd link to one of me, but I think I was asleep when it was taken :)
Share
events
June 15, 2005 7:18:38.289
In Omaha this month? Check out the Omaha STUG meeting:
OK, this month's meeting is real special. We're teaming
up with the SPIN group to present a really cool presentation!
Here's the details: This month we have a real treat. Mike Cohn, a
Denver Scrum expert, will introduce us to Agile Estimating and
Planning.
We'll look at why traditional planning fails, how to overcome
those problems with a story-driven process, how to estimate and
plan with stories, and why agile planning works.
We'll round out the evening with an interactive estimating
exercise over pizza that will give you specific techniques to apply
in your own work.
About Mike Cohn. Mike founded Mountain Goat
Software{1} in 1993 to help organizations apply agile development
methods to difficult software problems. Mike is certified in
Scrum{2} and author of User Stories Applied and the forthcoming
Agile Estimating and Planning (Fall, 2005)
Venue:
7pm next Tuesday June 21 2005,
Northern Natural
Gas, 1111 S 103rd Street, Omaha,
Room 149
Join us! If you plan to attend, visit www.omahaspin.org and register.
Share
open source
June 14, 2005 21:21:35.684
Blogging Roller mentions the Open Source release of Solaris:
The said it couldn't be done. They were wrong. OpenSolaris has been released under a true open source license and the project will be run as a true open source project, with outside contributors and independent distros and everything. Congrats to everybody inside and outside of Sun who helped maket his happen. This is definitely a historic day for open source.
But that's not possible - according to that super-genius James Gosling, doing something like this would mean chaos!
"We've got several thousand man-years of engineering in [Java], and we hear very strongly that if this thing turned into an open source project - where just any old person could check in stuff - they'd all freak. They'd all go screaming into the hills."
Hmmm, I say, hmmm
Share
smalltalk
June 14, 2005 21:08:39.752
Here's the Cincom Smalltalk roadmap - and here's what the new home of VA Smalltalk is pitching, in an upcoming webcast:
This Webcast hosted by Instantiations, discusses the staged evolution of VisualAge Smalltalk systems. In coordination with IBM, Instantiations has developed VA Smalltalk, a 100% VisualAge Smalltalk-compatible product. Instantiations will give a live demonstration of VA Smalltalk and discuss the evolutionary transition of Smalltalk applications to modern IBM platforms such as Rational and WebSphere.
So you can move forward, or you can "transition". Sounds like they are offering a non-Smalltalk future to me, but you should ask them :)
Update: Oh, I missed their bullet points. You'll love this:
- VA Smalltalk extends the viable life of VisualAge Smalltalk applications
- Instantiations fits into the overall IBM Smalltalk Transition and Roadmap Strategy
- VA Smalltalk will evolve over the next several years
- Instantiations Java products for Rational and WebSphere help position Smalltalk users for longer-term movement to Java
Well. Interested in an actual future with Smalltalk? Contact us, and find out what a committed Smalltalk vendor can do for you.
Share
blog
June 14, 2005 13:32:57.640
Share
StS2005
June 14, 2005 12:21:27.402
Anyone else planning to arrive in Orlando ahead of StS 2005? A few of us are planning a trip to one of the theme parks (either Disney or Universal) on Sunday the 26th. If you are interested, comment here or drop me a line.
Share
books
June 14, 2005 9:18:15.298
With all the heavy reading I've been doing lately (have a look at my last few books posts), I needed a lighter diversion. I found it in John Ringo's "Into the Looking Glass", a fast paced, summertime beach book if ever there was one (assuming your tastes run to action/adventure sci-fi). If you've played Starcraft, this book is a Zerg invasion of earth - it's really, really clear that the author has played the game (more than a few times). Fun, light read.
Share
news
June 14, 2005 8:49:05.733
I was all set to whine about how hot it is in the greater DC area (high today - likely around 93 farenheight). Then I saw this story out of India:
Bhubaneswar, which had witnessed the second hottest day in the current century, recorded a maximum day temperature of 44.6 ° C today while the mercury level at Cuttack was 43.6 °C. Other than the unbearable heat, the high humidity has made life miserable for the residents of the twin cities. One person died of sunstroke in the capital today while 15 other sunstroke patients were admitted into a hospital here during the day. In western Orissa, the mercury hovered above 46°C. Sundargarh recorded a maximum day temperature of 47°C followed by Jharsuguda with 46.2°C.
I'll stop complaining now.
Share
humor
June 14, 2005 7:43:06.066
Why, to this academic conference on "Holy men in tights". Then again, maybe they wouldn't appreciate a 13 year old at their big shindig (from the past, no less) :)
Share
humor
June 14, 2005 7:22:50.740
Dork Tower has perhaps the best "Sith" commentary yet. If you aren't a gamer, you might not get it :)
Share
development
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
web
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
web
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
StS2005
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
marketing
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
development
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
humor
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
media
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
StS2005
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
BottomFeeder
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
travel
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
smalltalk
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
development
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
logs
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:

So what's up with that? Why the sudden increase in search engine accesses? Strange stuff, these logs.
Share
logs
June 11, 2005 13:20:59.259
Well, it's time to have a look at the logs again. First up - BottomFeeder weekly downloads.
| Platform | BottomFeeder Downloads |
| Windows | 520 |
| HPUX | 475 |
| Mac 8/9 | 343 |
| Sources | 268 |
| Linux x86 | 209 |
| Mac X | 172 |
| CE ARM | 86 |
| Update | 38 |
| Solaris | 15 |
| Windows98/ME | 11 |
| Linux Sparc | 8 |
| AIX | 4 |
| SGI | 3 |
| CE x86 | 2 |
| Linux PPC | 2 |
| ADUX | 1 |
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:
| Tool | Percentage of Accesses |
| Mozilla | 44.4% |
| Internet Explorer | 31.1% |
| Other | 11.6% |
| Java | 2.6% |
| Google Bot | 2.5% |
| BottomFeeder | 2.5% |
| Net News Wire | 2.3% |
| MSN Bot | 1% |
| BlogLines | 1% |
| Opera | 1% |
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:
| Tool | Percentage of Accesses |
| Mozilla | 23.4% |
| BottomFeeder | 17.9% |
| Net News Wire | 14.4% |
| Other | 15.4% |
| BlogSearch | 4.9% |
| NewsGator | 4.2% |
| SharpReader | 3.5% |
| Safari RSS | 3.3% |
| BlogLines | 3.2% |
| Lilina | 2.1% |
| Planet Smalltalk | 1.8% |
| Feed Tagger | 1.7% |
| MSN Bot | 1.7% |
| Internet Explorer | 1.6% |
| Feed Demon | 1.5% |
| Liferea | 1.4% |
| RSS Bandit | 1.2% |
| Feed Reader | 1% |
| Shrook | 1% |
| Jakarta | 1% |
| Python | 1% |
| Google Bot | 1% |
| JetBrains | 1% |
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
media
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:

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
marketing
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:

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
BottomFeeder
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
sports
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
humor
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:

Share
development
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
weather
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
blog
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
esug2005
June 10, 2005 9:35:50.966
Share
law
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
tv
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
StS2005
June 9, 2005 18:56:08.414
Share
customers
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
cst
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:

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

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
media
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
cst
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
development
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
cst
June 8, 2005 22:29:16.475
I have some more photos - these are higher quality, as they came from a real digital camera

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:

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
cst
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:
From the left, that's Georg Heeg, Suzanne Fortman, and Eliot Miranda
Share
marketing
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
travel
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
StS2005
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
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