continuations

Seaside over on the Java side

September 5, 2005 1:33:09.897

Seems the Java guys are starting to realize that there are simpler ways to solve problems - this weeks JavaCast talks about Seaside, amongst other things. Very cool.

 Share Tweet This

smalltalk

Refactoring misconceptions

September 5, 2005 9:58:58.687

Wilfred Springer clearly hasn't seen the refactoring tools in Smalltalk, or he wouldn't have let loose with this:

But I also remembered some conference sessions on dynamicly typed languages that I attended in the past. None of these sessions ever mentioned the fact that refactoring tools can be so much more powerful if the type is known before runtime. Renaming an operation in a large codebase would be practically impossible. Tracing the usage of a class would be equally hard.
 Share Tweet This

smalltalk

Another pleased Smalltalker

September 5, 2005 10:02:28.261

I love seeing stuff like this:

Seaside is incredible too, I picked it up very quickly reading 3 pages of overview, playing with demos, and then on to coding. There's plenty more to learn, I'm sure, but my web app is up and running with suprisingly little code. Learning/using Java frameworks was never this easy.
The environment in VisualWorks is awesome - integrated refactoring browser, code critic, sunit testing framework - it feels like home, one I never want to leave again. Unless something more like Smalltalk than Smalltalk comes along. :)
 Share Tweet This

BottomFeeder

More bugs tracked down with tabs

September 5, 2005 13:29:38.171

I've found a few more issues with the new tab support - changing Look and Feel caused startup problems, and you could get errors when clicking near (but not on) a tab. There were a few other things as well - an update is available in the dev level updates. bear in mind, if you don't have the latest dev updates (with tabbed browsing), this is all something you can ignore for now.

I also fixed a browser launch bug on Unix/Linux. In some shells, urls with ampersands were being taken badly - the ampersand being seen as a request to background the task rather than as part of the url. I fixed that, and the person I tested it with reported that it worked just fine.

 Share Tweet This

usability

How to go nuts in many extra steps

September 5, 2005 17:09:25.064

So my wife wanted to export her mail - the messages and account settings - from Outlook Express on machine 1 to Outlook on machine 2. You would think this would be easy - same network, all MS apps - but no, it's a two step dance of pain. Here's what we ended up doing:

  • Zipping up the Outlook Express directory structure (under My Documents)
  • Sending that to Machine 2
  • Trying to import the result into Outlook - nah, that didn't work. Outlook didn't claim to recognize it
  • Google for help, find MS support pages that are helpfully useless in anything but IE
  • Finally realize that the step to take is to import into Outlook Express on machine 2, at which point Outlook can import from Outlook Express.

Sheesh. It was fairly quick once we figured it out, but there was no good reason for us to have to take the side trip through OE on machine 2. Someone needs to find Ballmer and crew and point out the term "Usability". It's pretty damn clear to me that they haven't heard of it.

Heh - even better. We finally got it all done, and my wife actually looked at Outlook. Her reaction makes me look downright positive about that abortion of an application. The user interface is more cluttered than I remember it - like many MS apps, it seems to have gotten worse with age. So now it's off to find a mail client that isn't cluttered as all get out and can import from Outlook...

 Share Tweet This

weather

Something we didn't need

September 5, 2005 17:24:02.696

The National Hurricane Center is tracking Tropical Depression 15. It's east of Florida, and could track across the state into the gulf. Of course, it might just break up and go away too, there's no telling yet. Here's hoping it breaks up - the gulf coast doesn't need another event right now...

 Share Tweet This

news

Graham's latest

September 6, 2005 8:09:42.185

I like Graham's latest essay. My readers know that I don't often think highly of Graham's essays, but this one caught my eye. Agree or disagree, it's thought provoking.

 Share Tweet This

tools

Limits on the archives

September 6, 2005 9:27:52.087

Over the last few weeks, I've noticed that Eudora was getting very sluggish, and would often tie itself up for minutes at a time. Seems I was keeping too much mail around for it to handle in any kind of reasonable way. I subscribe to a bunch of mailing lists, and get the all too typical spam load - so I receive well north of 300 emails per day. I hadn't deleted any mail since 2003, and Eudora was having trouble with folders that had tens of thousands of messages. So... I whacked all the older ones (after saving copies), and Eudora was back to its formerly snappy self.

Anyone know if Thunderbird is able to hold large amounts of mail without this issue?

 Share Tweet This

weather

Oh happy day

September 6, 2005 12:02:22.365

We sure don't need this: that system of disturbed weather off the Florida coast has turned into Tropical Depression 16. Follow the link to see where it's headed. We need this like we need a hole in the head...

 Share Tweet This

development

Smalltalk Influences

September 6, 2005 14:51:36.134

There are more influences out of Smalltalk than most people realize - take the Eclipse Foundation, for instance - 1/3rd of the fulltime staff came out of Smalltalk.

Hat tip James Governor

Of course, those of you want the real deal instead of the pale reflection can download it :)

 Share Tweet This

development

The power of dynamic

September 6, 2005 15:43:54.605

I blogged about this Javacast the other day, and I finally got around to listening to it today. Tune into it at minute 1:22. The guys describe a small web app that they built using a "lite" Java stack - Spring and Hibernate instead of the full J2EE stack. Time to build - 4 months. Ok, they decided, on a whim, to try Ruby on Rails. Time to build?

4 Days

That's a pretty amazing productivity jump, and they were pretty shocked. They went on to state that dynamic languages just have it all over Java in this sphere, mentioning Ruby, Lisp, Python, and Smalltalk (stating that Ruby has momentum).

Then there's an interesting riff starting at minute 1:26, where they go into Continuation based web development, and they point out how much simpler things like Seaside are - they went so far as to say that they figure that in 3-5 years, we'll all be doing development like this. They mentioned Seaside and Squeak specifically (note - Seaside works in VW as well). They point out that you can't get there in Java, because you can't do Continuations. Instead, there are frameworks that build huge state machines (complexity alert!).

So, if you want the power and productivity now, you can grab VW or Squeak and start using Seaside. Or you can get the all too typical pale reflection in Java...

 Share Tweet This

open source

Expect GPL allergies to get worse

September 6, 2005 16:10:01.304

I understand what Stallman is after with his comments here. I dislike the way DRM and software patents are going as well - and have said so here numerous times. However, what's the likely result of changing the GPL to penalize patented software and DRM? Expect a lot more firms to develop strong allergies to the GPL

 Share Tweet This

tv

I'm salivating

September 6, 2005 16:11:47.103

I hope that Sci Fi does better with this series than they and Fox did with Sliders, which started with such promise. I love alternate history books (like the ones Turtledove writes). Here's the blurb:

SCI FI Channel announced that it is developing What If, a "speculative future" series that poses intriguing scenarios of alternate realities. The program, from NBC Universal Television Studio in association with New Line Television, asks, "What if a moment in time could change the world forever?"
 Share Tweet This

analysts

Are analysts and journalists allergic to research?

September 6, 2005 16:25:37.481

Here's an all too typical story in SD Times - writer Jennifer deJong lets a Forrester analyst say something utterly absurd:

“In the early days of agile, only heretics used tools,” said Liz Barnett, a Forrester analyst who follows agile development. But that is no longer true.

Umm - XP, which is where the entire agile movement comes from, was developed by Kent Beck and the C3 team. Hmm - what were they using on that project? Smalltalk (VisualWorks, specifically). Last time I looked, VisualWorks is a tool filled environment.

How frelling hard would it be for a journalist or analyst to do some minimal research? Is typing into the Google box too hard for these people?

 Share Tweet This

development

Where's the passion?

September 7, 2005 9:04:03.726

Spotted in a ruby on rails delicious tag set:

when you get to technologies that survive much more (or purely) due to its technical merits than promotion efforts, such as Python, Ruby or Smalltalk, you start to realize that the people that compose the communities around those platforms have something

There's actual passion behind these languages. As opposed to Java and C#, where there's bland conformity...

 Share Tweet This

sports

Headshaking time

September 7, 2005 9:04:39.001

Amazing - apparently, just about the only team that the Devil Rays can beat is the Yankees. This is what happens when your management thinks that a staff of pitchers my age is a good idea. Bah.

 Share Tweet This

smalltalk

Generating some XML

September 7, 2005 9:05:02.751

This post documents one way to generate an RSS feed - by iteratively building up an XML document, using the basic XML framework in VisualWorks. That's pretty much where I started 3 years ago, when I first started creating a feed for this blog. I pretty much left that code alone, since it works, and I felt no compelling reason to revisit it.

Later on, I wanted to create local (i.e., file urls) RSS feeds scraped from websites that don't support syndication. This time around, I looked into using a SAX driver. The basic class I created is RSSSaxWriter:


Smalltalk.RSSSax defineClass: #RSS_SAXWriter
	superclass: #{XML.SAXWriter}
	indexedType: #none
	private: false
	instanceVariableNames: ''
	classInstanceVariableNames: ''
	imports: ''
	category: 'StoreRSS'

I created specific subclasses for the various RSS versions I wanted to support (although in practice I really only use RSS 2.0). The easiest way to see how I use this is to look at a script I wrote to scrape a cartoon I read.


|   contentBlock out writer rest str content |

contentBlock := [:builder :chunk |
	| lnk |
	lnk := 'http://www.comics.com', chunk.
	builder link: lnk.
	builder title: 'Monty: ', Core.Date today printString.
	builder description: '<img src="', lnk, '">'.
	builder pubDate: Core.Timestamp now].

out := 'monty.xml' asFilename writeStream.
[writer := RSS20_SAXWriter new output: out.
writer prolog.
writer startRSS.
writer startChannel.
writer title: 'Monty'.
writer link: 'http://www.comics.com/comics/monty/index.html'.
writer description: 'Monty'.
writer pubDate: Core.Timestamp now.
writer startItem.
writer title: 'Monty: ', Core.Date today printString.
content := 'http://www.comics.com/comics/monty/index.html' asURI valueStream contents.
str := content readStream.
str throughAll: '<IMG SRC="/comics/monty'.
str upToAll: '<IMG SRC="/comics/monty'.
str throughAll: 'IMG SRC="'.
rest := str upToAll: '"'.
contentBlock value: writer value: rest.
writer endItem.
writer endChannel.
writer endRSS]
	ensure: [out close].


Fairly simple to follow - and a whole lot easier than building up an XML doc from scratch. Ignoring the scraping bits, you just tell the writer what the values are for various tags, making sure to start/end various sections (like 'channel'). To get an idea what's behind some parts of that, let's look at a couple of the SAX driver methods. Here's the #startRSS method:

.

startRSS

	self 
		startElement: 'rss'
		attributes: (Array with: (XML.Attribute name: 'version' value: self version)).
	self cr.

All that is, is a convenience method around the general #startElement:attributes method (there's a simpler #startElement: for cases where you don't have any attributes to worry about):


startElement: localName attributes: someAttributes

	self 
		startElement: '' 
		localName: ''
		qName: localName
		attributes: someAttributes.

The rest looks a lot like that - to see the implementation, load package RSSScriptRunner from the Public Store - it has all the code for this. The upshot is, you can use a SAX driver to easily create an XML document, and creating a new SAX driver isn't hard - you simply start with the framework class SAXWriter and customize.

 Share Tweet This

development

Limitations defined

September 7, 2005 12:25:35.994

This pretty much defines what I mean by "limited power" when I discuss Java and C# - I'm fairly surprised by this:

Unlike Java, C# contains the goto statement which can be used to jump directly from a point in the code to a label. Although much derided, gotos can be used in certain situations to reduce code duplication while enhancing readability. A secondary usage of the goto statement is the ability to mimic resumeable exceptions like those in Smalltalk, as long as the exception thrown does not cross method boundaries.

Back to the future, complete with goto statements. Amazing...

 Share Tweet This

development

Sour Systems, or Simple Systems?

September 7, 2005 12:33:10.842

James Governor links to a great post on the need for simplicity:

Adrian then hits on a great point:
Why does Sainsbury have an "elaborate system" where surely a simple system would suffice?
I love that. The argument (or recieved wisdom) that elaborate means better is nonsense.
In IT we hear it about things like PHP all the time. Oh no - what you really want is a more scalable system (in enterprise software that invariably means a more elaborate one). Sometimes however there is an argument for lesscode, less software.
Elaboration tend to mask and degare responsibility because you can blame the system if something goes wrong. [We'll see a lot of that in the next couple of months].

Exactly. This goes straight to the point I made yesterday as well - do you want the complex (and supposedly scalable) system a long time from now, or the simple one that works right away? Too many IT people always gravitate toward the former, regardless of what the use case is.

 Share Tweet This

gadgets

Now that's what I call marketing

September 7, 2005 17:56:45.885

Rob Fahrni spots a really cool combination:

HPANA: "Additionally, a special edition 'Harry Potter iPod' will be made available featuring the Hogwarts school crest, designed by the author." - I never thought I'd purchase an iPod because they're just too darned expensive for what they provide, now I may have to change my mind.
 Share Tweet This

general

Laptop issues

September 8, 2005 7:38:22.799

Dave has been having laptop troubles with standby/hibernation. It seems to be a prickly area. I always put mine into standby (and let it lapse down to hibernate, and it seems to work fine. The Thinkpad has been marvelous that way. The old Dell, on the other hand - I had to completely disable hibernation, because it never came out of it well. Likewise, some of my co-workers report the same problems with their Thinkpads. There's been progress by the vendors in this area, but it still seems way more fussy than it ought to be.

Meanwhile, I had a strange issue - I thought my battery wasn't charging. It ran down to 5%, and plugging in was doing nothing. Fortunately, the old "slide it out, slide it back in" trick worked - it wasn't connecting fully, I guess. Laptops are still fussy beasts...

 Share Tweet This

customers

Awash in commodities

September 8, 2005 23:46:31.930

I'm in Minneapolis, MN today and part of tomorrow, visiting Cargill - a large customer of the Cincom Smalltalk group. They've spent the last decade+ building a large suite of applications they call LYNX - to summarize a lot, it's a system that deals with the grain origination business, through the supply chain from the farmer to the end purchaser. I can't go into a lot of details - like Cincom, Cargill is privately held, and they have a lot of proprietary value locked up in this system. They've evaluated it against various COTS systems over the years, and have always made the determination that LYNX served their needs better.

We got a lot of background on the business and application architecture from them. The application work started around 1992, when they decided to get rid of the various legacy stovepipe systems they had. Later on, Y2K compliance came into play. Just from a Smalltalk perspective, they have an interesting architecture - they have a multi-tier system with VSE clients and VW servers. The VSE clients use CORBA to communicate with VW.

That actually gets into something that not a lot of people know about - there's a VSE CORBA client (not suitable for running servers - it's incomplete) that shipped way back in the day. Cargill has been cheerfully using that code for years. They also wrote their own VSE/VW code compatibility layer - the entirety of their domain model is portable between VSE and VW. The GUI stuff, obviously, is not portable - and they are very interested in Pollock development and our roadmap.

Like I said above, I can't go into many details on the applications themselves - but I can say that Cargill is very happy with Cincom Smalltalk, and is looking to hook the LYNX system up to other systems that are being developed and deployed throughout Cargill. They are getting ready to kick off a fairly large effort soon, and that's what this meeting was all about. The last time they scheduled a large effort (back in 2000/2001), we came in and had extensive conversations with them. Those conversations bore fruit in the work they deployed out in 2003, which saved them a ton of money and streamlined their operations.

It's always fun to talk to a customer doing cool things with the product!

 Share Tweet This

itNews

The waiting

September 9, 2005 19:54:43.604

Scoble is hyping the upcoming PDC, telling us that something really big is coming. Color me skeptical - the last really big thing I recall MS talking about was list extensions to RSS (yawn). I'll believe it when I see it.

 Share Tweet This

development

What a great title

September 9, 2005 19:54:51.603

Lesscode looks at Sam Ruby's FOSSSL keynote slides, and titles the post: "Reinventing Smalltalk, one decade at a time". Heh.

 Share Tweet This

travel

A quiet two days

September 9, 2005 19:55:04.211

It's been a quiet couple of days on the blog, as I've been at a customer site (Cargill). We had a good day and a half of meetings, and I wish I could say more about what they are doing with Smalltalk - it's very cool stuff. Suffice to say, a lot of the foodstuffs you get daily went through the supply chain with the help of Cincom Smalltalk .

Anyway, I'll be back in the saddle again tomorrow, and expect to be back at my normal blogging pace.

 Share Tweet This

BottomFeeder

BottomFeeder 4.0 delivery

September 9, 2005 19:58:51.566

I'm down to a few things for BottomFeeder 4.0. Rich has a number of good suggestions for the tabs, and I intend to follow those up. That will impact his ability to get the updated documentation done, so we'll have some lag there as well. Things are moving well though - I expect to have this all wrapped up within 2 weeks. Fingers crossed :)

Here's what's coming up in the new release:

  • More search feed engines supported. I've added a few search engines - DayPop and IceRocket. Additionally, I've simplified the feed builder dialog to one UI, where you select the engine to build a feed for.
  • Search feed wizard - say you find a new search engine that supports RSS/Atom, but Bf doesn't support it yet. No problem - define the feed building query in the wizard and go
  • Tabs - you can keep items around in tabs instead of relying on memory or history. Tabs can be "torn off" into their own windows as well. Check the pop up menu on the tabs for what you can do
  • Font resizing fixed - thanks to Steve Kelly, the font sizing (up and down) works properly now
  • del.icio.us support fixed - there had been a bug in sending links to del.icio.us - that's fixed now
  • Enhancements to the XHTML display pane, thanks to the ongoing work by the Software with Style guys
  • Streamlined toolbar - some of the less frequently used items have been moved off to menus

That's the major stuff - a whole raft of bugs were fixed, and the blog posting tool saw some fixes as well. All in all, this should be a great release.

 Share Tweet This

events

Smalltalk in France

September 9, 2005 20:34:37.843

Bernard Notarianni points to a Smalltalk party in France, being organized by Serge Stinkwich. There's a lot of lead time - it's December 3rd of this year. Make your plans to attend now!

 Share Tweet This

smalltalk

Why not Smalltalk?

September 9, 2005 20:38:12.063

Why not Smalltalk? Follow the link and find out why this guy picked Smalltalk, and stay tuned for his experiences with it over the next little while.

 Share Tweet This

security

The pool's not big enough

September 9, 2005 20:47:35.978

This slashdot story does indicate an overly broad sense of security in the Mac community, but it's not time to panic.

"The IT security manager of the University of Otago, New Zealand, has been educating his OS X users in security best-practices. According to Mark Borrie, many Mac users believe they were immune to security problems -- a trap many Mac fans seem to have fallen into. He said around 40 percent of the computers at the uni are Macs. "On the security side of things I reckon the Mac community has yet to wake up to security. They think they are immune and typically have this idea that they can do whatever they want on their Macintosh and run what they like," said Borrie. "If I can get our Mac users up to speed and say 'you are not immune' -- so when [the malware] hits, hopefully we will be pretty safe," he said. "We want to be ready for the first big Macintosh virus -- because it will come. Some day, somebody will say 'I am going to create a headline and write a virus for Mac'," said Borrie."

Well, say someone wrote a Mac virus. It's going to try and spread like Windows viruses do. Now, when a Windows virus hits, and tries to infect another system, the odds of hitting a Windows system are pretty good (simply given the large market penetration). Look at Macs, by comparison. Say my Mac gets infected, and immediately tries to infect the other machines on my LAN.

Oops - three Windows boxes, two ReplayTVs, and a Linux box. It's going to find similarly slim pickings (probably slimmer) as it looks outside my LAN. It's not that any given Mac couldn't get infected by malware - it could. It's that the liklihood of an outbreak are very slim.

 Share Tweet This

marketing

I'm doing marketing now?

September 9, 2005 21:05:19.165

Well, this is interesting - according to Technorati, this blog is number 62 on the list for information about marketing. I hadn't really thought of this blog in those terms, but I guess I bring the topic up often enough.

Now, before I get all puffed up, I need to remind myself of something important about search engine results: very few people even scroll down on the first page, much less bother going to the second (or later) page of results.

 Share Tweet This

smalltalk

Irony

September 9, 2005 22:50:46.215

There's some unintentional irony in the slide deck that Sam Ruby posted from his FOSSSL talk. The slides are interesting - it's clear to me that dynamic languages are finally getting noticed by the mainstream. The irony? The fact that, just as one part of IBM (where Sam works) is noticing that dynamic languages are the wave of the future, the part that actually had one on hand is dropping it.

 Share Tweet This

logs

Weekly logs, 9/10/05

September 10, 2005 1:56:46.686

It's the end of another week, and time for another glance at the logs. It looks like the time is ripe for BottomFeeder 4.0 to be released - there were over 1500 downloads per day last week. That's kind of amazing. Here are the details:

PlatformBottomFeeder Downloads
Windows8490
Mac 8/9494
HPUX437
Linux x86410
Sources311
Mac X299
Update100
CE ARM96
Windows98/ME34
Solaris23
Linux Sparc17
AIX14
SGI10
ADUX5
Linux PPC5
Source Script3
CE x861

That's a big wow - I had no idea that so many downloads were happening. The daily access numbers for the blog have been up, but those download numbers are way up. I better get that next release out. Here are the numbers for the html blog accesses:

ToolPercentage of Accesses
Mozilla50.1%
Internet Explorer32%
MSN Bot7.3%
Other4.6%
Google Bot4%
Opera1%
BottomFeeder1%

Seems MS got their bot settled down - it's still high, but not absurdly so. Mozilla's gone back over 50% as well. Opera's appeared on the list too - something I haven't seen much of. last, the accesses to the RSS feeds:

ToolPercentage of Accesses
Mozilla22%
BottomFeeder16%
Net News Wire12.3%
Other11%
Safari RSS5.4%
BlogSearch4.1%
Planet Smalltalk3.9%
NewsGator3.2%
BlogLines3.1%
Internet Explorer3%
SharpReader2.6%
Feed Demon2.3%
Magpie2.2%
RSS Bandit1.5%
Feed Reader1.4%
Feed Tagger1%
JetBrains1%
Liferea1%
Google Bot1%
News Fire1%
RSSReader1%

That's still a pretty diverse range of readers - although - again - it's noteworthy how well represented the Mac is in that list.

 Share Tweet This

general

Surrounded by (small) girls

September 10, 2005 9:32:59.377

I'm heading off to chaperone a girl scout event - the Central Maryland cookie kickoff at the Howard County fairgrounds. What that means is that I'll be surrounded by a sea of girls aged 5-12 for the next few hours. If I survive that, I'll be back in the afternoon :)

 Share Tweet This

general

Whew!

September 10, 2005 17:04:12.411

I managed to survive being surrounded by a sea of girl scouts and moms this afternoon - maybe it was the lunch break :) Actually, it was a fun day, and Victoria had a great time - which is really all that matters.

 Share Tweet This

BottomFeeder

BottomFeeder with tabs

September 10, 2005 17:46:51.680

I thought it might be a good idea to show you what's coming in BottomFeeder 4.0 - here's a screenshot of the app with tabs open - you can click through for a bigger view:

BottomFeeder with Tabs

The smaller image is probably hard to see, but there are three tabs there, all with different content. I'm down to squashing UI layout issues and tab inconsistencies now - as soon as that's done, and doc's ready, it'll be a go. In the meantime, all this is available via the dev update stream for BottomFeeder.

 Share Tweet This

customers

Pics from our Cargill meeting

September 10, 2005 18:17:11.015

Suzanne took some pictures while we were visiting Cargill last week - they have a great team there, and they've been a valued Cincom customer for 20 years now - so here are some shots of them and their facility. I should mention that the complex we visited (corporate center) is absolutely gorgeous. Suzanne said her first thought on seeing it was "I could live here" - until she remembered that it was Minnesota, and that meant snow in truckloads :) Anyway - here's the cake we presented at the meeting:

Cincom and Cargill Anniversary Cake

Next, here's a shot of us and some of the LYNX team at Cargill:

Cincom and Cargill Picture

Next, a shot of geese wandering the grounds. These geese had no fear of people or cars - they seem to have it made :)

Cargill Geese

And finally, a picture of a building that would have been nice to meet in. This was a residence for someone back in the 20's, and it's gorgeous. It's now part of the complex - apparently, they have retreats and such there:

Cargill Residence Facility

I appreciate all the folks at Cargill taking the time to meet with us - they're a great bunch!

 Share Tweet This

events

Smalltalk in Omaha

September 10, 2005 22:38:17.784

Blaine has some cool news on the next user group meeting in his neck of the woods:

Hello everyone, This month we will be doing a two fisted meeting! First up, we will show the brilliant Avi Bryant Seaside demo from the Vancouver Lisp Meeting. Then, Sam Tesla has been kind enough to show us Ruby and Ruby On Rails. So, it's going to be a meeting not to be missed! Here's all of the details:

When: September 13, 2005, 7pm - 9pm

Where: Offices of Northern Natural Gas

1111 S 103rd Street

Omaha Nebraska 68154

Office is at 103rd & Pacific. Guests can park in the Northern visitors parking area back of building, or across the street at the mall. Enter in front door, we'll greet you at the door at 7:00pm. If you arrive a bit later, just tell the guard at the reception desk you're here for the Smalltalk user meeting in the 1st floor training room. -- Blaine Buxton, Mad Scientist In Training "You're as beautiful as your thoughts"-EW&F

Sounds like fun!

 Share Tweet This

management

On being a "Microsoft shop"

September 11, 2005 8:03:09.275

You'll sometimes go to an IT group and ask about support for Firefox, Safari (etc, etc) - and get the response that "we're a Microsoft shop". Typically infuriating, but you probably never thought of it as being dangerous - until now:

What is surprising, however, is the fact that the Federal Emergency Management Agency's (FEMA) online registration site for disaster help is Internet Explorer-only. While anyone can browse the site, users of non-IE browsers will find this message waiting for them when they attempt to register.
In order to use this site, you must have JavaScript Enabled and Internet Explorer version 6. Download it from Microsoft or call 1-800-621-FEMA (3362) to register.

With all of FEMA's other problems at the moment, I doubt that this one is high on the radar. On the other hand, would you want to be the IT manager who had to explain "we couldn't take donations from that large group there, because they insisted on using Macs" ?

Likewise, in a business situation, do you want to be the IT manager who has to explain the lost prospects - who were lost because your site turned them away with a message like the one above? I know I wouldn't.

Hat tip Jonathan Schwartz.

 Share Tweet This

events

Smalltalk in Los Angeles

September 11, 2005 9:53:02.181

The LA Smalltalk User's Group is meeting tomorrow evening:

Speaker Simon Michael: Beginner's perspective on Smalltalk, 9/12/2005, 7:00 pm Los Angeles

Smalltalk User Group Meeting Monday, September 12, 2005

 Share Tweet This

history

Rememberence

September 11, 2005 11:44:20.286

Four years ago today was one of the darkest days I can remember - and today brings it back visually, as the sky outside my window is the same gorgeous, clear blue that we had that day. I'll remember 9/11 as long as I live - and the bravery of firemen like these will always come to mind:

NYC WTC Firemen Raise the Flag

 Share Tweet This

usability

Lookout!

September 11, 2005 14:41:35.191

So my wife finally got all of her mail transferred from Outlook Express on the old machine, to Outlook on the new machine. Now, she's just trying to see if there's any way to make the UI not suck eggs. At the top of the Window (this is Outlook 2003), there's this large brown bar labelled "Inbox", and - for reasons that defy our understanding - a button kind of area that has something to do with drag/drop sorting of the columns (never mind that you can do this by clicking on a column header already, which is simpler).

There seems to be no way to get rid of that large area of wasted space at the top of the Outlook Window, and the toolbars (which you can dismiss) are just so much visual clutter. If I had any doubts about staying with Eudora, this vicarious experience with Outlook has removed them.

So why is this atrocity so widely used? Is an integrated calendar worth it? Whatever team in Redmond is responsible for the UI of this thing should hang their heads in shame. I'd relate my wife's comments on this, but I try to avoid that kind of language on this blog...

 Share Tweet This

tv

BSG - What is the plan?

September 11, 2005 15:02:52.029

Panopticon expresses what's been in the back of my mind about BattleStar Galactica lately:

Since we’re just biding our time ‘til Serenity comes out in theaters, Andrea and I have continued to watch Battlestar Galactica even though we still think it’s only so-so. (Something that I’m sure YAG is going to bug me about when I get to the PDC.) Some episodes are pretty decent, but I still find myself annoyed by many of the characters (never a good sign) and bored in long stretches of some of the episodes. The core problem, to my mind, is that the writers are not particularly good at parcelling out the ongoing mystery very effectively. The X-Files did a superb job of this, in my mind, until about the sixth season when it became clear that Chris Carter was making up the mythology as he went along and had no clear idea where it was all going. I’m beginning to suspect this about BG as well — do the writers really know what the Cylon’s plans are, or are they throwing elements in as they go along? (Contrast this also with Harry Potter, where J.K. Rowling seems to have a very strong idea of how the whole story is going to play out. Much better.)

Well - the basic outlines of the Cylon ethos are out there, and it's clear to me that the series is being inspired by the current world situation - just as the original was. In the old series, the Cylons were stand-ins for the Soviets. Now, we have a religious conflict, where the Cylons are completely intolerant of any beliefs other than their own (shades of Stargate SG-1 and the Ori, which has also picked up this meme).

The question is, where do they want to go from here? In the old series, the humans were smarter and more agile than the Cylons. That's clearly not the case here - the Cylons seem to be faster, smarter, and far better organized. They also have more resources and larger numbers. Given all that, how the heck do Adama and company manage to survive? It's not at all clear to me.

Back to the Cylons - I suspect, like Panopticon, that the "plan" is like Chris Carter's plan - it's "out there", but pretty ill defined. I could be wrong - this could be like "Babylon 5", with a well defined path and endgame. That might work especially well for a series like this, since - if they ever found Earth - you pretty much have an endgame on your hands (or, at the very least, a very different series).

 Share Tweet This

BottomFeeder

New Development build for BottomFeeder up

September 11, 2005 15:13:36.103

If you go to the BottomFeeder download page, and then scroll down to the dev links, you'll have access to the latest build - pushed up just minutes ago. There's already an update available - it ties history to the tabs (as in Firefox). To get that, add 'dev' to the end of the update path in settings and then restart.

The 4.0 release is pretty close now - Rich has been good about finding inconsistencies and issues, and I've been fixing them as they come up. The doc is also progressing - the release should be soon.

 Share Tweet This

usability

Spreading the abuse around

September 11, 2005 15:28:43.872

Just to be fair, minutes after my rant on the defects of Outlook, my Mac Mini locked up, hard. Victoria was playing SimCity 4, and then bam - screen blanked, the box disappeared from the list of attached devices at the router, and hitting the power button failed to get its attention. I had to pull the plug. Now, maybe it's a bad sign that in the registration list, OS X 10.4.2 wasn't listed (it stopped at 10.3.x). Still, a crash that hard is inexcusable - and something that I've seen pretty darn rarely on Windows XP (last time I got something that required the same level of restart was when I hand hacked the registry). Bah

Update: - looks like Aspyr is aware of the problems - there are downloadable patches available.

 Share Tweet This

weather

Where in the world is Ophelia?

September 11, 2005 17:41:49.374

Every time I look at the storm track, it's different. Who the heck knows where this one is headed...

 Share Tweet This

development

Bad upgrade experiences

September 12, 2005 7:53:51.996

Believe it or not, Apple has them too. There is no silver bullet in the current platform choices out there.

 Share Tweet This

blog

Mucking with the style sheets

September 12, 2005 8:20:22.267

I think I like the "Fire" style best. I left the "Water" one up for a day, and just switched back to the "Fire" pattern now. Anyone have an opinion?

 Share Tweet This

examples

Customizing the tab widget

September 12, 2005 8:47:31.698

With the new tab support in BottomFeeder, I thought I should explain one of the customizations - the tab menus. As it happens, the tab widget in VisualWorks doesn't support menus out of the box. So how did I add them? Well, first off, I noticed that Typeless has tab menus (Typeless also ships as a BottomFeeder plugin, which is how I use it). So, I loaded TL from the Public Store and started having a look around. It turns out that Michael extended the widget in the most natural fashion, by creating a new controller subclass. Normally, the tab bar is managed by a class called TabControlBarController. So, first thing - he created this class:


Smalltalk.UI defineClass: #TabControlBarControllerWithMenu
	superclass: #{UI.TabControlBarController}
	indexedType: #none
	private: false
	instanceVariableNames: 'menuHolder performer owner mouseDownIndex '
	classInstanceVariableNames: ''
	imports: ''
	category: 'UIBasics-Controllers'

Then you have to modify the view class, so that it uses this controller (or, at the time you create the view, replace it. This code just replaces the default controller) - here's TabControlBarView>>defaultControllerClass:


defaultControllerClass
	^TabControlBarControllerWithMenu

That makes sure that we always get menu support when we create a tab widget - assuming that the new controller class is implemented properly. Here's what's going on there:

  • First, add some new instance variables to handle menus and the state required for them: menuHolder performer owner mouseDownIndex
  • implement #yellowButtonPressedEvent: so as to know when to pop the menu
  • implement all the other supporting methods

There's a small side story in the name of #yellowButtonPressedEvent: - back in the day, at Xerox PARC, the mouse actually had colored buttons - red, yellow, and blue. Those names still exist in the code for VW (and, I think, for Squeak). Anyway - the method:


yellowButtonPressedEvent: event 
	"we about to bring up a menu, unlock the event
	queue so that we can process expose events."
	| index |
	view numberOfElements = 0 ifTrue: [^self]. 
	index := self findElementFor: (self sensor cursorPointFor: event).
	(self owner respondsTo: #adjustTabbarMenuFor:) ifTrue:
		[self owner adjustTabbarMenuFor: index].

	self sensor windowSensor queueLocked: false.
	self processMenuAt: event globalPoint centered: true.
	^nil

The reference to #adjustTabbarMenuFor: is something I missed out of the gate. I had to implement that in my class, in order to ensure that the menus were set up correctly - it looks like this:

adjustTabbarMenuFor: anIndex 
	| tabModel sub tabbed menu |
	anIndex = 0 ifTrue: [^self].
	tabModel := self browserTabs at: anIndex.
	sub := self widgetAt: #feedID.
	tabbed := self getComponentFromSubcanvas: sub withID: #TwoflowerHTML1.
	menu := self class tabMenu.
	(tabbed widget tabBar component controller)
		menuHolder: (ValueHolder with: menu);
		performer: tabModel;
		owner: self.
	self checkTabMenuEnablement: menu

All of which does the following - make sure that a new tab has a menu, and that it's attached to that menu. As well, make sure that menu items are in the right enablement state. There's a few other setup methods, but you can see all of that by browsing the package RSSExtensions in the Public Store. The next important thing was setting the tabs up properly in my UI class. In my #postOpenWith: method (which fires after the UI opens, I added the following:


self presetTabs.
tab := self changedTab.
self setupTabMenu: tab

presetTabs
	| browserTab |
	browserTabs := OrderedCollection new.
	browserTab := RSSZoomItem new.
	browserTabs add: browserTab.
	self tabs list add: browserTab displayString.
	self tabs selectionIndex: 1.
	self setupEventHandlingForTab: browserTab

changedTab
	"changed to a new tab; adjust"

	| index  browserTab sub tabbed |
	index := self tabs selectionIndex max: 1.
	browserTab := self browserTabs at: index.
	sub := self widgetAt: #feedID.
	tabbed := self getComponentFromSubcanvas: sub withID: #TwoflowerHTML1.
	tabbed widget client: self htmlModel spec: #windowSpec builder: self builder.
	(browserTab feed isNil or: [browserTab feed isFake])
		ifFalse: [self focusOnItem: browserTab item].
	self tabs selectionIndex = 0
		ifTrue: [self tabs selectionIndex: 1].
	self setCurrentTabDetails.
	self setupHTMLPane.
	self setBrowserEvents.
	self restoreHistoryFrom: browserTab.
	^browserTab

setupTabMenu: aZoomItem
	| tabbed sub menu |
	sub := self widgetAt: #feedID.
	tabbed := self getComponentFromSubcanvas: sub withID: #TwoflowerHTML1.
	menu := self class tabMenu.
	(tabbed widget tabBar component controller)
		menuHolder: (ValueHolder with: menu);
		performer: aZoomItem;
		owner: self.
	self checkTabMenuEnablement: menu

Those three methods are the heart of the support. The first one sets the tabs up - with the proper domain model (in this case, an object that holds the selected feed, the selected item, and the history), and sets the current tab index. The second method, #changedTab, fires whenever a tab is selected. It ensures that the correct stuff gets displayed, and that state stays correct. The last one, #setupTabMenu: makes sure that menus are set up for selected tabs.

There's some infrastructure there - event handling, and some application specific stuff - but that's the gist of it. If you need help doing something like this, just send me an email.

 Share Tweet This

gadgets

Small amounts of bliss

September 12, 2005 9:01:28.714

Ok, this will seem silly, but I was very pleased just now when I stumbled across a setting in iTunes and the iPod - the one that equalizes the output for all songs. The fact that songs from my older CD's were quieter than the ones from newer CD's and purchased music was driving me nuts :)

 Share Tweet This

smalltalk

All closed off?

September 12, 2005 12:07:35.687

Well, this is certainly curious. Over on the Instantiations site, it looks like they've done away with the non-commercial download of VA. Have a look at the license agreement terms:

EVALUATION. Instantiations grants you a nonexclusive, nontransferable license to use the Software. You may 1) use the Software only for internal evaluation, testing or demonstration purposes, on a trial or "try-and-buy" basis and 2) make and install a reasonable number of copies of the Software in support of such use. The terms of this license apply to each copy you make. You will reproduce the copyright notice and any other legends of ownership on each copy, or partial copy, of the Software. You will 1) maintain a record of all copies of the Software and 2) ensure that anyone who uses the Software does so only for your authorized use and in compliance with the terms of this Agreement. This license begins with your first use of the Software and ends 1) as of the duration or date specified in the documentation accompanying the Software or 2) when the Software automatically disables itself. Unless Instantiations specifies in the documentation accompanying the Software that you may retain the Software (in which case, an additional charge may apply), you will destroy the Software and all copies made of it within ten days of when this license ends.

Time bombed evals, how very 1990's of them. I could be wrong about this; it's not completely clear to me whether the evals are time bombed or not (anyone there care to clarify?), or what the term is if they are. Time bombed evals are a really bad idea, which is why we don't use them. It takes time to evaluate something as large as a set of development and deployment tools - we've had more than one customer who's evaluation term lasted from the time of download until the point of deployment - at which time they bought an appropriate license from us.

If we had used time bombed evals, we would have lost those sales - there's no doubt about it. So, if you want to do a full evaluation of a professional Smalltalk environment, there's now only one place to go - here.

 Share Tweet This

news

Too much transparency?

September 12, 2005 13:02:06.570

How to avoid tracks:

The Salt Lake Tribune publishes a tip for aspiring politicians from Utah Gov. Jon Huntsman (R): "I don't do e-mail because I think you can always be set up for an unfortunate incident if you spill your soul."
Instead of sending e-mail, Huntsman pens notecards. The article notes "the quaint practice of writing on notecards also apparently allows the governor to sidestep the state's open-records law. Requests to see some of his handwritten notes have been thwarted."

Now, translate that from the political to the business world via Sarbanes-Oxley - you think C level staff aren't looking for similar ways to thwart that? Sometimes, the desire to "see everything" actually results in seeing less. I'm not sure where the right balance point is, but I'm thinking that we may have drifted away from it.

 Share Tweet This

blog

User settable styles

September 12, 2005 13:38:49.567

The blogs have all been updated to support user settable styles - check the list of available ones on the link bar, and see which one you like!

 Share Tweet This

BottomFeeder

Lots of fixes

September 12, 2005 18:22:30.440

I've spent the day applying fixes and changes to a bunch of changes to various codebases. First, Rich continues to send me things that need fixing or enhancement - I've added a lot of stuff over the last few releases, and Rich has spotted various issues with the tools. That should make the release better.

I also added user settable styles to the blog pages today - you can click one of the available style links, and see which ones you like. Finally, there's apparently been a problem with the NC download app for a few days - I managed to not update a method at some point, and you couldn't progress from the login page to the downloads - very bad. That's fixed now - sorry about that.

But heck - I should look at the bright side - at least no one around here messed up the power connections, dropping 2 million people from the world of electricity (as happened in Los Angeles this afternoon).

 Share Tweet This

general

The horror

September 12, 2005 22:19:26.173

This is the sort of thinking that irritates me - in an article covering the increasing ability we have to customize what we watch and listen to, a researcher decries the personalization:

"I think that ends up creating a cultural divide among us, because we don't have as many common experiences. And when it comes to the news of the day, even the most important news, you can't assume that any of your friends or neighbors watched the newscast and know what it is," McCall said. "It means there's going to be less opportunity for generations to understand each other, and people to understand each other socioeconomically."

Translation: "It was a lot better when smarter people selected what you needed to see and hear". Yeah, that's what I want to go back to - a choice of three channels, whether I like them or not. Thanks, but no thanks.

 Share Tweet This
-->