smalltalk

Latest Aida Web from Janko

May 7, 2006 8:25:50.928

Janko Mivsek announced the latest version of Aida/Web on the vwnc mailing list, and I thought I'd give it a wider distribution:

I invite you to try the newest release of a web application server Aida/Web from:

AIDA/Web is a web application server based on Swazoo and a framework for building complex web applications of many sorts. In that respect it is similar to Seaside. It has everything you need for a real web app, together with Ajax.

It is also a mature one, running real web apps since 1996. It is used in many intranet business apps from Gas billing system for all gas in Slovenia to logistics management system called e-logis and recently a CMS like system for Quality and Business process management.

A new version has a lot of new stuff:

  • Integrated Ajax support, (among others: async update of any element, autocomplete fields, in-place editing)
  • integrated Ajax libraries Prototype and Scriptaculous (javascript in methods)
  • Javascript components like Calendar
  • WYSIWYG editor support (TinyMCE)
  • strong WebGrid support with Ajax sorting and filtering
  • Scheduler for scheduling one-time or periodic events
  • WebDAV support

Installation:

  • load parcel Swazoo.pcl
  • load parcel AIDAWeb.pcl
  • doit SwazooServer demoStart
  • in web browser open http://localhost:8888
  • login with admin/password

More on:

Enjoy!

You can usually find Janko on the Smalltalk IRC Channel as well

 Share Tweet This

development

Going Dynamic

May 7, 2006 9:47:29.573

Why dynamic is hard on static VMs:

Ruby actually requires more in the way of support than just continuations, but it's not necessarily impossible to implement on the CLR; it's just hard to implement on the CLR in a high-performing manner using today's CLR. That's part of what Jim is there to do, evolve the CLR to better support languages with Ruby's interesting featureset (like open classes and the "missing_method" method) in such a way that it doesn't tear down perf.

I've been following Less is Better, which covers implementing Ruby on the CLR. If you read there, you'll find that doing Ruby on the CLR pretty much means implementing a full VM on top of the CLR. Which tells me that the CLR is not that nice an environment for a dynamic language. The JVM is no better, and will likely remain worse. Yes, I know that there's a JSR on that. Wake me in 2015 when they get around to implementing it, and try not to asct surprised when the level of baroqueness they've added (can you say generics?) is absurd.

The bottom line is, the original designs for the CLR and the JVM did not encompass dynamic languages and the things they do. They aren't optimal for the kind of lookup a dynamic language uses for methods - in fact, they have been optimized in a different direction altogether. Then we get to continuation support - not critical for all dynamic languages, but useful if you want something like Seaside. Just look at this reasoning:

Continuations are not impossible to support, however they are currently more or less impossible to support given the current lack of access to the underlying stack frames in the managed environment--you'd need some support from the runtimes (either the JVM or the CLR) to make it work. Such runtime support would not be too difficult to add, however, as both environments already have rich and powerful stack-walking mechanisms (because both environments use the thread stack as bookkeeping tools, among other things, and need to be able to crawl through those stack markers for a variety of reasons, such as security checks), and it would not be hard to create a runtime-level mechanism that allowed code to "take a snapshot" of the stack--and its related object graph--from a certain point to a certain point, and save off that state to some arbitrary location. In many respects, it would be similar to serializing an object, I believe.

To summarize: "Continuations won't be hard on the CLR, so long as we can achieve 6 impossible things before breakfast". Sure. I'll return to what I said above - the static VMs weren't designed with this in mind, and adding it won't be easy.

Here's a simpler idea: You want the advantages of a dynamic language? Why not use a system that was designed that way? You know, right tool for the job and all that...

 Share Tweet This

gadgets

Origami: Fold it up

May 7, 2006 9:59:48.165

I've said for awhile that the Tablet PC is a solution in search of a problem; Microsoft's new Origami idea is helping prove me right. The Washington Post's Rob Pegoraro is highly unimpressed with Samsung's entry into the space. It ships with no CD/DVD player, which makes loading new software hard:

The tested Q1 arrived with almost no third-party software; a copy of Microsoft Office and last year's version of Norton AntiVirus were the only notable additions. The copy of Windows Media Player included an extra "skin" for that program, with large buttons meant to be selected with a thumb (should you want to employ something the size of two Walkmen duct-taped together as an MP3 player).

He also points out that the screen is small, and that using the Tablet interface for writing or typing is just painful. It only has 36 GB of disk, so you're better off with a video iPod if you want to store music and movies - it's smaller, and has more storage. With the screen size, using normal Windows apps is going to be painful (try using 800x600 resolution on your PC for an hour and see how you do). For $1100, this is an expensive door stopper that won't stop your door. I have no idea who the target market is; Since you can't slap a DVD into it, it's utility for watching movies while traveling is limited. It's too big to be an MP3 player. The screen is too small to be useful as a PC, and without a keyboard, it's not a desktop replacement.

 Share Tweet This

enterprisey

The McGovern Satire

May 7, 2006 10:26:23.545

A small preface - here's what I think is going on with McGovern:

His blog is an elaborate piece of satire

If you follow the link to his blog, you'll find that he links here, with the comment "One blogger that has a great perspective that the community should read is Charlie Savage". Well - that blog is all about mapping and GIS. Somewhere, the guy who actually writes the silliness on McGovern's site has been having a great laugh at my (and others) expense, as we took him seriously. I suppose the images he uses should have been a bigger hint :)

Update: In the comments, Chris is of the opinion that McGovern is for real. In which case, there's possibility two, which I edited out of my original draft: He's perhaps the dumbest individual capable of walking upright that I've encountered in some time

Having said that, there's some (small) value in pointing a couple of things out:

James Robertson seems to be stuck in a loop on Smalltalk. Whenever there is controversy of any sort within the blogosphere, folks will more often that not express their perspective from the outsider looking in point of view. I wonder what James would think if he worked for a large Fortune enterprise...

Hmm - Seeing as how I'm the Product Manager for Cincom Smalltalk, is my advocacy position so hard to fathom? If I didn't believe in Cincom Smalltalk, I'd be off working for a client company somewhere, instead of being the head cheerleader here.

Oh, and as to me working at a Fortune 500 company? Gads no. I worked in the US Department of Defense for a few years, and stifling bureaucracy is not my idea of a good time. Thanks, but no thanks.

 Share Tweet This

smalltalk

Smalltalk gets more media attention

May 7, 2006 22:58:31.364

Dr. Dobbs has a long write up on the state of Smalltalk - apparently taken in part from this year's Smalltalk Solutions. In particular, it's taken in large measure from Georg Heeg's talk. I didn't see his talk this year, but it sounds like it went well. Check it out - it's a nice write up

 Share Tweet This

development

Using Blocks

May 8, 2006 9:40:36.259

Don Box asks a couple of Ruby questions:

  • What's the performance penalty for passing/calling a block vs. executing the code "directly" on the current frame?  Does the cost go up/down if the block doesn't reference any symbols in the enclosing frame?  I know the answers for the CLR and C#, but I'm not sure my intuitions from that environment apply here.
  • Do people wind up using blocks to model simple CPS-like idioms and if so, how does the runtime's stack management hold up?

I can't answer specifically for Ruby, but I can give my impression from its close cousin, Smalltalk. I created a simple class that ran one of two tests:


testDirect: n
	| val |
	val := Time millisecondsToRun: [n timesRepeat: [1000 factorial]].
	Transcript show: 'Direct for ', n printString, ' repetitions: ', val printString; cr


testBlock: n
	| val |
	val := Time millisecondsToRun: [n timesRepeat: [myBlock value]].
	Transcript show: 'Direct for ', n printString, ' repetitions: ', val printString; cr

Then I ran each test 1000 times, to get something representative. Over 1000 runs, I got 3100 ms for the direct run, and 3300 for the block (with a variance of about 100 ms per run). Upping that to 10,000 repetitions each, the difference between the two dropped to an irrelevant 60 ms (i.e., noise). So in Smalltalk at least, there aren't performance reasons to avoid blocks.

Which leaves it to being a "does it make sense from a design standpoint". Blocks are used quite frequently in Smalltalk in places where other languages have built in operators (i.e., various iteration methods in the Collection hierarchy). It's never caused an issue with the runtime stack that I know of - and the fact that Seaside (which carries full blown context stacks around) holds up tells me that there shouldn't be a problem.

That may not help for Ruby, but it does point out that a system using Blocks can be implemented efficiently.

 Share Tweet This

smalltalk

Give Dave Buck some points

May 8, 2006 10:09:38.811

Dave Buck's excellent screencast demonstrating Smalltalk has hit reddit - go and give it some up points so more people see it.

 Share Tweet This

general

Why I should be taller

May 8, 2006 11:23:33.529

I should be 2 inches taller, given the location of the smoke detector in the bedroom. Here's the ladder set up to get there - believe me, I wasn't happy up near the top, changing the battery out:

Ladder in doorway

This one gives you some idea of where the ceiling is:

Up to the Top

So if I were 2 inches taller, I wouldn't need to be so close to the top of the ladder. My dad is over 6 feet tall; I could have used some of that :/

 Share Tweet This

enterprisey

Speaking of silliness

May 8, 2006 14:41:20.658

Demonstrating just how enterprisey he can be, Robert McIlree takes a shot at Chris Petrilli and me:

I got a 'visit' from self-proclaimed enterprise architect debunker Christopher Petrilli, and later, as it appears customary in posts by EA-types, from his sycophant James Robinson. Before I deconstruct their commentary, I'd like to thank both guys for the huge traffic they directed to my blog today. To those of you coming here from their links or a feed for the first time, welcome. Take the time to read my posts, judge for yourself where I'm coming from, and comments, whether you agree or disagree on anything I've written about, are welcomed.

So ask yourself - how reliable is a *cough* enterprise architect *cough* going to be when he can't get the spelling of one of his critics names right? It's not like my name is hard - it's right there at the top of my blog.

I can see it now: "ESB? Gosh, I'm sorry, I had it down as EJB..."

 Share Tweet This

xml

No Spec, No Interop

May 8, 2006 23:54:57.252

Gee - what a shocker. OPML, yet another underspecified format that Dave Winer created, isn't as interoperable as people would like. As is par for the course, everyone is gushing about how great an idea the OPML sharing thing is, while tip toeing around the suckage:

First, I exported the group of feeds (the channel) from FeedDemon. That created an OPML file. Yet when I tried to upload it to Share Your OPML, I got an error that the file contained no feeds. I looked and it did - all the feeds were there.

So I then opened that OPML file in Dave Winer’s OPML Editor, did a ’save as…’ and then looked at that file. It had one thing the original didn’t - the <opml version="1.1"> container as the very first line. Uploading that new file to Share Your OPML worked without error.

So yeah, as I've said before, OPML just sucks. If the idea behind "Share Your OPML" takes off, I fully expect the following to happen:

Gee, it's almost like I've seen the movie before.

 Share Tweet This

events

Looking to Present At a Conference?

May 9, 2006 7:34:09.382

Cincom's Helge Nowak sends along news of two upcoming events in Europe, both with a call for presentations/papers out:

There are two conferences coming up in Germany that would be very nice platforms to present Smalltalk with interesting talks as an up-to-date hot technology. While they are held in Germany both of them are interesting for international presenters and audience:

If it fits your plans, these are good shows - I've attended the first one before

 Share Tweet This

marketing

Dinosaurs, as seen by Apple

May 9, 2006 8:08:50.631

Bob Congdon isn't sure about the new Mac ads:

The Mac is a young guy in casual clothes with a boyish stubble. In contrast, the PC is a middle-aged, suited business man. Do these two look familiar? It's no coicidence that the Mac looks like Steve Jobs circa 1975 while the PC is an overstuffed caricature of Bill Gates.
The ads may be entertaining but are they effective at getting users to switch? I'm not so sure. By relying on tired stereotypes Apple runs the risk of alienating and insulting the audience it's trying to convert.

I just saw this for the first time last night, and I thought it worked. The "what apps come bundled" thing was truly funny (although, to be fair, most PCs you buy from a vendor will come with some variant of Office pre-loaded). I don't think these ads will alienate anyone, but we'll have to wait and see whether they are effective.

 Share Tweet This

humor

This could be me

May 9, 2006 8:11:35.505

 Share Tweet This

gadgets

PS3 Launch Details

May 9, 2006 8:31:27.120

Sony has gone public with details of their pricing for the PS3 - and it looks like the guesswork about how much money they are willing to lose per unit haasn't been far off. They are going $100 up from the XBox, at $499 and $599. That's pretty steep, IMHO - we'll see if my notions about game system price points hold water. The details:

The 20GB HDD version will retail for $499, and the 60GB HDD version will go for $599. They promise 4 million launch units by December 31st. Update: 05/09 03:57 GMT by Z : Apparently, not only does the $499 system have a smaller harddrive, but it has fewer features as well.

Now it's down to how many units actually sell, and who's right about what the market will bear.

Update: Meanwhile, Engadget has a rumor about pricing for the Nintendo Wii.

 Share Tweet This

web

Links, Attention, Nonsense

May 9, 2006 14:50:25.297

I'm with Mark Bernstein - links are neither currency nor attention destroyers, and asserting, as Seth Goldstein does, that "strong web bloggers no longer link" is just nonsense. There have been people who've raged against punctuation too, and they were every bit as silly. When I read a long missive that references someone else, a link to the source is proper web punctuation. Omitting it means that I have to waste time with Google instead, which is just stupid - and impolite.

Meanwhile, Gillmor is proving every day that listening too him actively destroys brain cells:

As for links being dead, Nick [ed: Carr] demurs with an "I don't really get what you're trying to say Steve." Amanda Congdon does. Dave Winer does. What's not to get? Links produce economic ripples that keep incumbents in charge; removing links puts users in charge. Clicking on a link does not pay the author; it pays the signaller (in this case the aggregator, publisher, or arbitrager of the link's "value.") The author of the content is paid in link credits, which tether him or her to the tyranny of the mediocrity of broadcast economics.

I can't get straight to Carr's comments, because Gillmor has some asinine notion that not linking to him empowers me (the reader). Here's a tip, Steve - if that's empowerment, I want a whole lot less of it. He's pushing the idea of what he calls a gesture bank, where we all share meta data in some kind of vast xml ocean. Sure, sure. While you go about building that, the rest of us will just follow the links. Those don't take any effort to create, while the whol gestire sea thing will require lots of buy in, as well as a new tool infrastructure. Given human nature, I won't hold my breath.

Gillmor continues with this:

That's the problem with links: We're all waitresses on this gig. We're waiting on the Big Day when we hit the Big Show, when Mike Arrington or Doc Searls or Dave Winer bestows the Big Link on us that gets us another 10,000 in ValleyWag bucks. Some of my best friends are linkers. Don't forget to tip your linkers. Don't want to link? What, and give up show business?

Umm, no. Links are mostly akin to footnotes in a book, except that they are a hell of lot easier to follow. Steve just doesn't get it. He's out there thinking that we all consider links a desperate bid for attention from the so called A-Listers. No Steve - we mostly think they're a way to get more information about a particular subject. Attention? Heck, I wish Gillmor would start paying attention...

 Share Tweet This

analysts

Answering the Enterprise Architect

May 9, 2006 15:25:21.342

James McGovern gives some advice to me:

Minimally consider becoming an advocate of all developer tools to become 100% free of charge. This has happened in several other communities where developer seats are now free but the charge remains for production server implementations. This positions Smalltalk and similar tools that still have legacy models behind them to now be learned by folks in countries such as India where they can gain critical mass in order to support large enterprises who may consider developing with the tools.

Well, it turns out that Cincom Smalltalk is free for non-commercial use already - it's only when you deploy it that you need to pay for a license. Simply download it from our site, and use the online tutorials. He mentioned open source first; I'll point out that Java is not open source, and has spread quite widely. When you grab Cincom Smalltalk, all the sources are available. For commercial users, that includes the VM.

Figure out a way to get the folks over at RedMonk and other analyst firms to change their perception that Smalltalk is dead or has been delegated to minor-league status within the enterprise. Start first by adding influential industry analysts to your blogroll. I would suggest starting with Brenda Michelson and James Governor.

Actually, I read (and link to) James Governor fairly often. I don't always agree with him, but I like his take on things. As to this:

While you are adding folks to your blogroll, consider also adding several enterprise architects from Fortune enterprises. Don't attack them and instead engage in a meaningful dialog with them. Never alienate potential customers.

Well, maybe it's a personality flaw. I call things the way I see them. When I see stuff I like, I say nice things about them. When I see stuff I don't like, I say not so nice things. A suggestion back, though: you'll note that I don't do politics here. There's a reason for that; it's because I figure that people with different worldviews still have money to spend. Those pictures McGovern uses on his blog? They create a perception problem.

 Share Tweet This

cst

How do you find the code?

May 10, 2006 7:33:35.984

Dave Buck shows you how to find the code you need to look at, even though you might be only minimally familiar with it. Once again, the capabilities of Cincom Smalltalk shine through.

 Share Tweet This

enterprisey

More Satire from the EA Zone

May 10, 2006 7:54:14.178

Either McGovern can't read, or he's an elaborate hoax:

Mr Petrilli starts to attack James Robertson by referring to him as a servile self-seeker. In the past he has also commented with passion on several of my postings. He is now going after Robert McIlree for his views on EA. Of course, within his posting he does some chest-pounding about how he designed interoperable PKI systems for governments before most folks even heard of PKI. I wonder if we were to look at his past work, would we think it was of high quality?

If you actually read Chris' blog - which McGovern didn't link to - maybe he's with Gillmor and Goldstein on this "links are bad for you" thing - you would find that it was McIlree who described me as a sycophant of Chris. If you were present for any of our knock down, drag out arguments over politics (usually in a private channel on the Smalltalk IRC), you would know just how amusing that is. I think it's safe to say that we both march to our own drummer.

So the question remains: Is McGovern's site an elaborate hoax, or is he really that clueless?

 Share Tweet This

spam

Spam Checking the Wiki

May 10, 2006 9:57:35.214

I've grown tired of having to promote 5-10 pages out of the spam jail on the CST Wiki every day, so I went ahead and added some simple spam checking to it. We'll see how it goes - I'm sure I'll have to monitor the system over time.

 Share Tweet This

gadgets

More pricing rumors for the Wii

May 10, 2006 12:52:35.695

Forbes cites Sega's VP of marketing to say that the Wii will retail for under $200. Digg has flagged the story as possibly inaccurate, so take this with a grain of salt.

 Share Tweet This

itNews

GMail for Work

May 10, 2006 14:20:00.794

Via Dare, I found Rakesh Agrawal talking about GMail as a work tool. I mostly use GMail that way myself, so I had a look. One quibble on the downsides:

No offline access: I guess this isn't true because you can always use Gmail's POP support to download messages into an offline client, but then I'd lose that notion of having one single email box for everything. And I guess I also haven't felt the pain as much on this as of late because I haven't been traveling quite as much as I have in the past.

Well, not exactly. I use the POP interface so that I have normal client interaction, but I still have everything archived by Google. So I get the benefits of both - if I've aged off my mailboxes here on the client, I can still go to GMail and search.

 Share Tweet This

analysts

Smalltalk in the News

May 10, 2006 14:24:15.421

James Governor on Smalltalk:

One thing to remember about Long Tail effects- is that something out in the tail can, in the right circumstances, reemerge as a fully fledged mainstream hit. The Touching the Void, Into Thin Air effect.
While I am certainly not about to make the argument that smalltalk is set to come back and displace .NET, Eclipse and whatever scripting framework du jours is oh so hot with the cool kids, there are some interesting green shoots around the platform worth noting.
Dabble DB has the blogosphere going brock wild (nice take here on Dabble and other situated online databases). Reviews for this database, targeted at the Read/Write , Programmable Web have been pretty much uniformly positive. Dabble DB is written in smalltalk running on the seaside web apps framework. Dabble, if it does break out into the mainstream, will surely drag some smalltalk developer adoption with it.

With the long tail, there's space for everything. The Enterprisey people and the agile folks can all do their own thing. I think Java was the last "big thing" to hit software development - from here on out, there are going to be bunches of small things, all appealing to different niches.

 Share Tweet This

media

Local Newspapers and Bloggers: Like Chocolate and Peanut Butter

May 10, 2006 14:50:02.562

Doc Searls:

The future of local newspapers is local bloggers. Simple as that. Call them "stringers" if you like. But if you're going to build a bridge from the past to the future of journalism, you'll need bloggers to help build it.

It's not because their bloggers, either - the people that local papers need are bloggers because that's the easiest way for anyone interested in local affairs to publicize them now. John Dvorak was onto something when he coupled the decline of newspapers to the decline in local reporting.

 Share Tweet This

tv

No more appointment viewing

May 11, 2006 8:08:27.696

Once you have a DVR, it becomes irresistible. In fact, getting a second (or more) suddenly seems reasonable. We now have 4 devices recording various things for us:

  • 2 ReplayTV devices
  • 1 Media Center PC
  • 1 HD capable DVR from the cable company

Decadent as that sounds, they come in handy. There are nights when multiple things we watch air at the same time, and we have them picked up by one of those devices. The Replay TVs are the nicest ones; we can stream between rooms, and skipping ads is much more pleasant with 30 second skip. The cable box DVR is truly annoying, but it allows recording of HD content, which neither the Media Center nor the Replays can do. And yes, I know that Media Center PC's can stream - but then I'd need one in the family room, and the fan is loud - the ReplayTV is quiet. Maybe when Apple has a full solution a new mini will be an answer.

At this point, I don't even know what day most of the shows I watch actually air. This kind of behavior explains the attempts by the industry to create what Doc Searls calls value subtracting solutions. The idea of disabling channel surfing during ads is just too brain dead for words - never mind us DVR using folks, the entire population of TV viewers would barf at that. The bottom line is, the advertising model for TV has never worked that well - DVRs simply bring the long simmering worries about it straight to the surface. Like the RIAA with DRM, the industry is fighting tooth and nail to hold onto the old model, but it's not going to work - for the simple reason that the advertisers are starting to understand the problem. I expect to see more and more subscription models (moving down from cable to individual shows).

 Share Tweet This

media

Speaking of Math...

May 11, 2006 10:54:36.571

Lee Gomes of the WSJ reports on the TopCoder contest, and comes to this conclusion:

The results have been carefully tabulated by a computer and, thus, are beyond dispute: Of the 48 best computer programmers in the world, only four of them are Americans. But what that bit of data says about the state of the U.S. education system is open to debate.

Hmm. So Lee, if I set up an online survey, can I take those results as representative? What you have here is a self selecting pool of respondents. You simply can't make the jump from a self selected pool to any kind of general conclusion.

 Share Tweet This

development

Crawling towards Past Achievements

May 11, 2006 13:18:33.367

Don Box points to the new support for lambda expressions in C#:


Expression<Func<int, int>> expr = a => a + 3; 
Console.WriteLine(expr); // prints "a => Add(a, 3)" 
Func<int, int> 
func = expr.Compile(); // LCG's an MSIL method from the expr Console.WriteLine(func(4)); // prints "7" 

Yes, it's nice that Microsoft has added this to C# - it gets them up to Lisp and Smalltalk levels of technology, only a few decades late :)

Personally, I find the following easier to look at:


expression := [:input | input + 3].
Transcript show: expression method getSource; cr.
Transcript show: (expression value: 4) printString; cr.

You don't have the separate compile step, because of the way Smalltalk works. What's also neat is this:

Block in the Inspector

That's the block expression being inspected, with the bytecode highlighted. In Smalltalk, it's turtles all the way down.

 Share Tweet This

deployment

Temporary Applications aren't

May 11, 2006 15:16:41.885

A few years ago, we had some issues with hosting the Cincom Smalltalk Non-Commercial downloads - the server they were on didn't have sufficient disk space to hold everything, so we got a new one. In order to keep things running, I hacked together a"temporary" application that would keep the downloads flowing.

Well, that temporary application is still running, nearly 4 years later. It was never written to be permanent, and the way data was being stored made duplicate entries pretty much inevitable. Well, today I finally got around to weeding those dupes out - on the live server. If you tried to login or register for the NC in the last little while, you might have gotten an "application maintenance" screen. That's done now, and things are cleaned up.

The lesson? No application is every temporary. Does that mean that you need to do the whole enterprisey design up front and set it to scale to the hilltops? No, but it does mean that you shouldn't have delusions of temporariness, either :)

 Share Tweet This

cst

Putting a stop to excessive scavenging

May 11, 2006 21:05:12.893

Over the last few days, there was a flood of spam to the CST Wiki. That was causing two problems:

  • I had to constantly promote the good pages over the spam pages
  • The wiki implementation keeps all versions of all pages in memory - so it was getting bigger

To solve the first problem, I added a simple blacklist. The spam that hits the Wiki seems to come in waves, against a bunch of pages, and all of the same kind. So adding a specific filter to the blacklist solves the problem. The second problem was something I suspected, but didn't verify until this evening. After loading all pages into memory, the system was running right into the (system imposed) limits on memory. So that meant that it was getting into thrashing - it always needed more memory, but the internal limits wouldn't allow it to.

As it happens, that's easy to fix in Cincom Smalltalk. First, you can raise the upper bounds on memory, at runtime, like this:

ObjectMemory currentMemoryPolicy memoryUpperBound: someDesirableNumberHere.

That solves part of the problem. The other part is ensuring that the system has big enough memory zones right at startup, so that it doesn't have to thrash to get there. That's accomplished by sending a message like this:

ObjectMemory sizesAtStartup: #("array of seven numbers goes here")

The documentation for that method is probably called for here:

"Sets the suggested initial sizes of various memory spaces for future snapshots. The spaces whose sizes can be set are as follows:

  1. Eden
  2. SurvivorSpace
  3. LargeSpace
  4. StackSpace
  5. CompiledCodeCache
  6. OldSpaceHeadroom
  7. FixedSpaceHeadroom

These sizes are suggestions only, the virtual machine may have to deviate from these settings in order to successfully load an image. In general, the sizes are specified as a multiple of the platform-dependent default value for each space. In other words, if the first element of arrayOfSizes is 1.5, then Eden's suggested size will be 1.5 times the default size of Eden on the platform that the system is being started up on. A value of 1.0, on the other hand, will result in the default value being used. A value of nil in a particular slot of the arrayOfSizes, will have no effect on the current setting for that particular space. Fails if the arrayOfSizes is not as large as the number of spaces whose initial sizes can be specified or if the values in the arrayOfSizes are not either nils or Floats that are greater than or equal to zero and less than or equal to 1000. Returns the receiver."

The important one in the case of the Wiki was number 6 - old space. Any runtime objects that survive initial GC end up in old space, so making it bigger solved the thrashing problem. Of course, you could argue that the Wiki shouldn't cache everything in memory, and you would probably be right. That's the way the current codebase works though, and mucking with memory settings lets me keep it running while I have a look at the base problem.

 Share Tweet This

development

Code and Data

May 12, 2006 9:41:51.494

Update: Stephen Pair gives a parse tree example in the comments.

Don Box has another post up showing how to create lambdas in C#. The syntax for all that looks pretty baroque to me. In any event, Don asked in the comments to my last post on this for the Smalltalk equivalent. I'm not going to generate a list and compile that, as he does with Scheme and C# - in Smalltalk, we'd have a string, and just evaluate that at runtime. Same idea, just not the same machinery. So the way I'd approach his problem in Smalltalk:


" Creates the function that adds one to the input value "
func1 := [:a | a + 1].

" String for the same function "
func2String := '[:a | a + 1]'.

" Print that to the Transcript window "
Transcript show: func2String.

"This will raise a MessageNotUnderstood: #value "
func2String value: 4

" Have the compiler evaluate the string, which gives us the function "
func2 := Compiler evaluate: func2String.

"Now execute that, which gives us the desired answer of 5 "
func2 value: 4

If you were really hung up on creating a List, you could do that with MessageSend objects, and then hack the compiler a bit to get it to deal with lists instead of strings. That's not how Smalltalk works though (it's kind of cool that you could make it work that way - I've had University students tell me about projects to implement that in Smalltalk). The Compiler is just another object that you can subclass and/or extend - the IDL compiler for CORBA and the DLLCC parser for our foreign language interface are both implemented that way. In general, you can tell any class which compiler to use (allowing you to easily create domain specific languages).

The bottom line is, creating code whose execution is deferred until later is easy in Smalltalk - and is still easy if you want to create that code on the fly by generating the code and then compiling it at runtime.

 Share Tweet This

itNews

What Microsoft doesn't need

May 12, 2006 10:21:39.271

Wired has a column that wistfully looks back at the days of powerful unions, and dreams of a unionized Microsoft. Towards the end of the column, there's this:

So, will we ever see a unionized Microsoft? With his own union working on the Redmond behemoth, Courtney certainly won't rule it out.
"WashTech has been actively trying to build the union at the company. (It's been) recently reported how wages at the company have been stagnant while profits are soaring, and that the review process has become an unfair management tool. These are core issues that a union can address."

Microsoft needs to become more agile, not less. Right now, they suffer from the same kind of rigidity that cost IBM so much money back in the mid to late 80's. What if the work force there joined a union? Well, they would see work rules and process - just like now - only from the employee side, rather than from the management side. I fail to see how that would help the company in the long run. It might help a few people in the short term, but I rather expect that it would drive the company toward an Eastern Airlines sort of ending.

What MS needs is more people like Scoble, who are willing to shake the rafters and try to create positive change. Unions, like management, are conservative forces that fight change. That's not what MS needs.

 Share Tweet This

smalltalk

Runtime Code Execution

May 12, 2006 11:09:56.027

In the same vein as the last post, I thought it might be valuable to go over the way Smalltalkers normally construct new execution at runtime. One way, as I covered in my last post, is to compile code from a string. All by itself, that gives you a fair bit of power - you can compile anything, including new classes. You can add new instance variables to existing classes, and have all the subclasses get recompiled for you - at runtime. When I do live updates of this server, I'm often doing just that.

So a few examples - say I wanted to add a new instance variable to an existing class. I could do that a couple of ways. I could recompile the class definition. Here's my class in the browser before that step:

Original Class Def

Now, I execute the code below:

 
 

Compiler evaluate: 'Smalltalk defineClass: #Foo
	superclass: #{Core.Object}
	indexedType: #none
	private: false
	instanceVariableNames: ''var1 var2 ''
	classInstanceVariableNames: ''''
	imports: ''''
	category: ''test''' 


The double quotes are to tell the compiler that the things wrapped that way are strings, not the end of the string being defined. Executing that yields:

Final Class Def

You can also tell the class to add an instance variable, rather than recompiling the class:

 
 

Foo addInstVarName: 'var2'.


In Smalltalk, all your objects - including the classes - are live at runtime. They aren't dead text lying in the version control system, and they can all be manipulated. You can insert new methods into a class in much the same way:

 
 

Foo compile: 'initialize
var1 := 1.
var2 := 2'.


Which adds the #initialize method to class Foo. You can inject new code into a class at runtime this way - so if you have a code generator for some reason (database interfacing, whatever) - you could have the code dynamically generated and added all at once.

You can also dynamically create message sends that didn't exist at deployment time via #perform. Say you have a variety of API methods, all similarly named, but their use depends on a base selection (in the post tool I'm using, that's how code fires, based on whether the tool is set for my API, the MetaWebLog API, the MT API, or the Blogger API.

So how does that happen? Here's an example. I have the following message send:

 

^self performForAPI: 'GetAllItems'


And that code looks like:

 

performForAPI: messageString
	^self performForAPI: messageString with: #()


performForAPI: messageString with: arguments
	| prefix msg |
	prefix := self perform: self apiToUse.
	msg := (prefix, messageString) asSymbol.
	^msg isKeyword
	       ifTrue: [self perform: msg withArguments: arguments]
	       ifFalse: [self perform: msg]


The message is created by appending strings, turning that into a symbol, and then firing it. This is not a completely great idea in all circumstances (it makes it hard to trace senders, for instance) - and I wouldn't write the post tool that way were I to do it now. It's a nice capability, and very valuable when you need it - but you really need to be sure you need it.

In any case, that shows some of the more dynamic features of Smalltalk.IMHO, they are far less baroque than what C# is adding, because Smalltalk was created with this kind of thing in mind. C# wasn't, and it shows.

 Share Tweet This

management

Numbers and Money?

May 12, 2006 11:53:01.644

James Governor likes the usage numbers being reported for Sun's app server software:

Go buy some stock? The evidence is coming together in some interesting ways.... and if Sun's Java Enterprise System app server has momentum, anything can happen.

In the accompanying data, Sun's market share has jumped up to almost 20%, which does look good. However, that may not mean much revenue:

Download a complete enterprise-class solution -- Solaris 10, Java Enterprise System, development tools, desktop infrastructure and N1 management software -- at no cost, no kidding.

You only pay if you want support. There was an article on the uptake of support licenses for JBoss awhile back, and it wasn't encouraging:

Problem is, most people just take the free stuff and run. Only 3% to 5% of JBoss customers buy support contracts.

Which is one of the reasons that JBoss ended up selling out to RedHat - the ongoing development costs simply weren't being met by those paltry incomes. So let's look at the app server and OS for Sun, shall we? Schwartz has made Solaris free and open source, and championed it running on x86. So even if I decide to run Solaris instead of Linux, I still don't need to pay Sun a nickel. The same goes for the app server. This is the ideology of free masquearding as a business plan, and I doubt that it will end up happier for Sun than it did for JBoss.

If you give it all away for free, you can't make it up in volume.

 Share Tweet This

general

Reading the Comics

May 12, 2006 13:09:53.839

Brad Wilson on starting the day:

I don't know about you, but I sure don't read the newspaper any more. It's a stale version of information compared to what I can get 24 hours a day from the web. And, letting someone else pick my comics? Never!
I start my morning with a bowl of cereal and my comics. On the web, of course!

heh. I go the extra step here - I created scrapers for the various comics I like that don't show easily via RSS, and create local (i.e., on my HD) RSS feeds for them. I have a BottomFeeder plugin that periodically runs the scripts, and each day I have all the comics I want, right there in my aggregator.

 Share Tweet This

management

Worrying about the wrong things

May 12, 2006 17:00:36.639

It's often the case that management - and in particular, VC management - spend way too much time focused on irrelevant details. For instance, Thomas Gagne writes:

Too many potential investors spent too much time looking at the technology. The answer was always the same: lots of scalability, too little system documentation. The technical due diligence reports would often comment about the Smalltalk in the "risks" section something like, "Using Smalltalk may make it difficult to find programmers, but by using it they won't need many anyway."

Why is the worry about technology use irrelevant? Either the startup being funded has a good product or they don't. If they engage in a long effort to rewrite it in an "approved" language, they'll almost certainly miss whatever market window they are going after. The phrase Thomas used next is very telling:

Many of those VCs don't exist anymore.

I rather expect that a lot of them "managed" their startups into oblivion by asking them to do stupid things. To follow the story:

When we finally found some real investors I was surprised they didn't seem too interested in the technology. They wanted to know it worked. They wanted to know it balanced. They wanted to know the president had confidence in it and me. After they understood the business plan and what the company was preparing to do I really don't think it mattered much to them what the code was written in. They weren't buying into language marketing or hype, they were buying into a commercial finance revolution. The system could have been written in 16-bit Fortran-IV and they wouldn't have cared as long as it was supportable, scalable and correct.

Couldn't have said it better myself. This reminds me of something that came up many years ago, back before Java was around. I was teaching a Smalltalk class with Russ Pencin, who is one of the two best instructors I've ever met. We had a C programmer in the class who really, really wanted to know how strings were implemented at the VM level. Russ' answer was brilliant:

Why do you care?

Why indeed? If the system performs well, what difference does it make? The same goes for funding, really - training developers in a language they don't know already isn't that hard. If it was, C++, Java, and C# never would have succeeded. Sure, the syntax is similar - but they don't really work like C. If it was that hard to train developers, we would all still be using Cobol and Fortran, for that matter.

Thomas also quotes Paul Graham - and this is one of the smartest things I've ever read:

"In a big company, you can do what all the other big companies are doing. But a startup can't do what all the other startups do. I don't think a lot of people realize this, even in startups."

If all you strive for is mediocrity, then sure - hire cheap developers and use what everyone else is using. If you want the chance to do better, you have to be different.

 Share Tweet This

management

That flood is not representative

May 12, 2006 17:11:03.648

One of the things a lot of people get wrong is user spikes. Whether it's spike in downloads of a product, or a spike in traffic, a lot of people will tout the sudden increase as if it matters. In reality, as this post makes clear, it usually doesn't:

Josh Kopelman has a perfect post up today called 53,651. This is the number of RSS subscribers to Michael Arrington’s great TechCruch blog, and is exactly at the core of the “first 25,000 user” issue. Since there are 53,651 RSS subscribers of TechCrunch (at least as of 5/12/06) , if something gets reviewed there, it’s likely to get 5,000 to 10,000 users in the next 24 hours “just to try it out.” As so many traffic graphs of these “TechCrunched” products show, there is a huge spike in use for a day or two, and then it goes right back down to where things were before they were TechCrunched.

There's a nice chart that goes with that; follow the first link to see it. As most of you know, a post I made last week hit Digg, Reddit, and Slashdot - and gave me a sudden flood of traffic. That flood didn't last - it's not as if every reader of those sites suddenly became fascinated by Smalltalk :) I know plenty of marketing people who would make sure to include that spike in a report on traffic averages thoug, in order to make themselves look better. It's no more real than the initial spike in users described above.

If you're trying to build a new business, those mentions help, but they won't put you into "lie on the couch and wait for the orders" mode...

 Share Tweet This

games

Resurgence

May 12, 2006 17:25:09.085

It's starting to look like a board game renaissance. Can Smalltalk be far behind :)

 Share Tweet This

logs

Weekly Log Analysis: 5/13/06

May 13, 2006 8:15:05.605

Well, the level of BottomFeeder downloads hasn't dropped after the slashdotting - they hung steady at a rate of 170 per day. The details:

PlatformBottomFeeder Downloads
Windows455
Update153
Linux x86145
Mac X121
CE ARM82
Mac 8/958
HPUX48
Solaris34
AIX34
Linux Sparc20
Sources16
Windows98/ME11
Linux PPC6
SGI4
ADUX2
CE x861

The real story will be in the HTML pages accesses - that will have dropped off since last week. The details on that:

ToolPercentage of Accesses
Mozilla66.4%
Internet Explorer24.7%
Other4.2%
MSN Bot2.7%
Opera1%
Megite1%

The number of unique readers is still up for the week, so I guess some of them stuck around. On to the RSS:

ToolPercentage of Accesses
Mozilla26.5%
BottomFeeder14.9%
Net News Wire9.1%
Other8%
BlogLines8.5%
Internet Explorer6.1%
Safari RSS4.6%
Google Feed Fetcher3.5%
BlogSearch2.4%
NewsGator2.4%
RSS Bandit1.7%
SharpReader1.6%
Planet Smalltalk1.5%
JetBrains1.2%
Liferea1%
News Fire1%
MSN Bot1%
Java1%
Attensa1%
Everest/Vulcan1%
Lilina1%
Feed Reader1%

The subscriber count jumped up as well, so it definitely looks like I got some new readers. Welcome!

 Share Tweet This

games

Almost only counts in Horseshoes and Hand Grenades

May 13, 2006 15:14:31.434

Almost seems to count for a lot with "Duke Nukem Forever" as well. Here's piece of a Game Daily interview:

Miller: We've put about $7.5 million into that and we've been working on it since late 1998. So it really hasn't been that much of an investment. And once it comes out, if it's as successful as we think it'll be, we'll make that money back in the first day or two of sales.

THR: 1998? You've been working on it for eight years?

Miller: I know, I know. It's embarrassing.

THR: Maybe you can explain to readers who don't know the games industry why it should take that long to make a game.

Miller: It shouldn't. And I'm dumbfounded myself. A huge part of the problem is that it's really hard hiring good developers to come to Dallas. This place used to be a hotbed of game development. But, nowadays, people seem to want to go to Austin instead.

Hmm. Sounds odd to me. Aren't most game developers young and more easily relocatable? In any event, that game is the industry version of Waiting for Godot.

 Share Tweet This

books

Uncovering the Past, Finding the Present

May 14, 2006 11:32:26.174

"A Peace to End All Peace", by David Fromkin, is a book about a forgotten theater of WWI - the Middle East. It's primarily focused on the efforts of the British government, and that was a huge muddle. The Egyptian Office, the Home Office, and the India Office all worked at cross purposes, with the "Arabists" of Lord Kitchener mostly coming out on top. If we weren't still living with the legacy of what they did, this book would be comical - the misinformation they basd their policy decisions on is just sad. I'd recommend this book to anyone who wants some background on how the modern middle east came to be.

 Share Tweet This

news

Yes, We have no bananas

May 14, 2006 11:38:00.119

That old song may end up having more poignancy than anyone would have guessed. New Scientist reports that we may have out-clevered ourselves:

Virtually all bananas traded internationally are of a single variety, the Cavendish, the genetic roots of which lie in India. Three years ago, New Scientist revealed that the world Cavendish crop was threatened by pandemics of diseases such as that caused by the black sigatoka fungus. The main hope for survival of the Cavendish lies in developing new hybrids resistant to the fungus, but this is a difficult and time-consuming task because the seedless modern fruit does not reproduce sexually and has to be bred from cuttings.

For all the talk about monocultures in software (i.e., Windows), this looks like it might be the real deal.

 Share Tweet This

books

LOTR Linguists Rejoice

May 14, 2006 22:06:25.257

Now here's the definitive site for LOTR language geeks - a complete compendium of the languages of Arda.

 Share Tweet This
-->