SpaceShipOne ready to go
Looks like SpaceShipOne is ready to rock and roll - take a look at the Wired story
Blogging and Syndication in Sydney
I'll be discussing blogs and syndication - with BottomFeeder as an example application - in Sydney next week:
James Robertson of Cincom Systems will be discussing the world of RSS, Atom and Blogging in general at:
Australian Computer Society NSW Branch
joint OOSIG - FOSS SIG meeting:
Date: 15th July, Thursday
Time: 6 for 6:15pm.
Place: ACS NSW offices.
Lvl 4, 122, Castlereagh St
Sydney 2000
Phone: 9261-4411
You can RSVP by leaving a message on the following number - 0413-821-454 or via the contacts for the OOSIG and FOSS SIGS
This session will discuss blogs, blogging, and some of the associated technology (RSS in particular). The focus of the talk will be whether blogs are something of relevance - for project managers, marketing staff, or developers. I expect an interactive session with many questions, as well as an interactive introduction to what a blog is. I'll be taking the tack that blogs are, in fact, useful and worth investigating. I have my own blog - and I also sponsor other blogs on our site
A quick check of the InfoWorld site, the O'Reilly site, Microsoft or Sun will demonstrate that many of the industry analysts and evangelists have started blogging - what this talk will explore is whether anyone in the audience should be.
The talk will reference BottomFeeder - an open source RSS/Atom news aggregator. Other technical issues covered will include:
- Development issues (dealing with RSS, character encoding issues)
- Deployment issues (building a deployable and installable application)
- Cross platform issues (Unicode, character sets, libraries, look and feel)
- On the fly updating of a deployed application
I'll be giving other talks in Melbourne and Canberra - should be a busy 11 days
How dynamic is dynamic?
Keith Mantell is checking on the level of dynamic support in various languages - he tried Smalltalk first:
How dynamic is your (programming) language? I'm doing some experiments on changing classes at runtime without affecting existing instances. With Smalltalk ( at least with Visualworks) this was a breeze: added the code for a variable, accepted it and, hey presto, any inspector open on an instance got a new variable field set to nil.
I can't imagine trying to manage a server without this capability. This blog hasn't been taken down in months, but I've made major changes to the underlying code base. How? By making use of the facility keith mentions, that's how. All the blogs listed here are running in one server, and all of them have a bunch of objects instantiated at any given time. If I make a shape change to a class, I need it to change all the existing instances as well. What I do is test my changes on a local server. If it all works out, I upload the new version of the code to the server (so that a new start would load it), and I upload the change set. I don't restart the server; I just load the change set. Presto, everything gets updated with no downtime. And none of the weird jumping through hoops that .NET requires for this sort of thing either. If you want zero downtime, you need a dynamic language. If you like restarting every time you need to make a change - sure, go grab one of those mainstream systems....
Comment spam
I have no idea how much time the comment spammers spent adding 2-3 spams to each message posted over the last 4 days, but it took me a couple of minutes to delete it all. Nice try bozos...
Running as non-Admin?
Ted Neward says we should run without admin rights on Windows. I agree with him... but it's unfortunately not generally feasible. Why? Go ahead, grab a random set of applications lying around. Now just try to run them as a non-admin user. This actually works on Unix or Linux; for all I know it works on OS X as well (I have no idea). It doesn't work on Windows. Should it? Sure. Until it does, chastising others for doing what they have to do to get by isn't terribly helpful, IMHO.
Recently, Nick Wienholt posted a blog entry over on his APress blog about why he doesn't particularly care about running as a lower-privileged account on his machine when developing software.
With all due respect, this is probably why Nick Wienholt doesn't come up in the list of names of recognized security experts.
How old code bases can be ugly
Panopticon has some fascinating "war stories" about the date handling code in parts of the Windows code base. And this part that I quoted is just priceless:
(I also heard tell that at one point back in the mists of Excel 5 days, the VB team experimented with allowing the language syntax to be localizable. So you could say, I don't know, 1CPor x = 1 a 5 : Escribe x : Siguiente x 1D, if you pardon my horrible Spanish. This turned out to be such a horrible idea that they quickly dropped it and never looked back. But supposedly the legacy lives on in OLE Automation and the fact that IDispatch takes a locale ID when converting names to DispIDs (i.e. so that you could have different method names for different languages). I can't vouch for the absolute truthfulness of this story, but it's one of those stories that's 1Ctoo good to check. 1D)
Without care and feeding, old code bases can get really, really crufty...
Now keep that thought
Jonathan Schwartz had a thought he needs to have someone apply to the JVM:
The industry keeps trying to solve both problems with the same systems. I'm not sure I believe that's a useful pursuit - it seems more true every day: there is no one hammer for all nails.
So about when will the JVM not suck for dynamic languages? Oh, right.... when hell freezes over. Moving right along then...
Internationalization bits
After letting BottomFeeder 3.6 go, I had someone in Germany send me a message about menu performance. One of the recent changes is that the application uses UserMessages instead of strings (I'm still looking for volunteers to translate the catalog, by the way). This makes it possible to have the application translated - but I hadn't actually set up catalogs in the runtime. Well, that can cause speed issues related to the lookup (which defaults to a string) for the messages. Well. Into the doc I went. After learning about half of what I needed, I decided to do the simplest thing in Smalltalk - I executed this and ran through the debugger to see how lookup worked:
(UserMessage defaultString: 'Add Comment to Selected Item' key: #bfAddCommentOnItem) asString
What I discovered was that VW expects a root level directory for catalog searches, and then proceeds to look for subdirectories and catalogs based on locale settings. Ok, I indexed the catalog I had (fixing a bunch of missing quote issues) this way:
IndexedFileMessageCatalog compileAllCatalogsFor: 'catalog'.
and then made sure that the catalog directory was in the search path for catalogs:
"add directory to message catalogs list for lookup purposes" mine := IndexedFileMessageCatalog directoriesModel value detect: [:each | 'catalog' = each asString] ifNone: [nil]. mine ifNil: [| file | file := PortableFilename named: 'catalog'. IndexedFileMessageCatalog directoriesModel value add: file].
Now, I don't know that this is the best way to do this - there's a whole system for registering catalog ids and such, but I'm not using any of that. I'm doing a new build of the BottomFeeder files, and I'll have them uploaded shortly. If you have Bf and have noticed an odd slowdown in menu or UI performance, then grab the appropriate base file:
And grab the new exe or image, as well as the 'catalog' directory. Restart, and that should solve the problem. As usual, inform me of any problems. Hat tip to Thomas Brodt for letting me know about this problem!
More on the intl stuff
Well, it seems I'm not done dealing with Internationalization issues in BottomFeeder. After posting the new builds, I still got reports that menu operation could be slow. I took a look at the process of UserMessage lookup, and found out what's going on down there. When a catalog is needed, the base directory specified ('catalog' in Bf) is expected to have sub-directories. What subdirectories? Well, that depends on the language setting and locale setting for your system. On my Windows XP box, with a US locale, it's looking for wither catalog\en or catalog\en_US. In Russia, that would translate to catalog\RU (and so on for other places). If there's no such directory, then the catalog is 'missing', and that's where the slowdown happens. Now, there may well be a better way to deal with this than what I just posted as an update (check the toolbar in Bf for downloadable updates), but it ought to work. At startup, Bf checks for the catalog that shipped with the install files, and for the directory structure that is expected on the system in question. If the expected directory structure doesn't exist, it will get created, and the English language catalog will get copied over. If there's a better way to deal with this, I'll make changes as appropriate. Eventually, if I get translated catalogs, I'll add settings to allow the user to specify the catalog to use.
Lileks on art
If you like Lileks, then you should definitely have a look at this collection from him. Learn everything you ever wanted to know about the intersection of celery and loose underwear :)
Off to play Trivia again
Last time we went off to play Trivia, we bet all of our points on the last question, got it wrong, and came in dead last. So almost anything we do tonight will be an improvement. I'll post up a few questions later, and see if anyone else can figure them out.
Some Trivia
Well, we were cruising until the last question - we had a shot at second place. We blew it though, and ended up fifth. Here are a few of the questions:
- What 80's band did the song "If you leave"
- What do you call the narrow strip of land that connects two larger land masses?
- What 90's TV show used the song "Reflections" (Diana Ross and the Supremes) as the theme song?
- Who was President of the US when the Klu Klux Klan was founded?
- Which Country in South America has recorded the highest and lowest temperature in South America?
- Within 2 years, when did Steely Dan release their first album?
- What is the most popular (as in, most consumed) brand of licqueur in the US?
- Within 2 years, when was Steve Irwin (The Crocodile Hunter) born?
- What territory did Israel seize from Syria in 1967 during the 6 day war?
I'll post the answers in a day or so
Arrogance in the field
Patrick Logan points to this screed by Warren Harrison. IMHO, Harrison is the "clueless dabbler". In his IEEE article, he decries end user programming, calling such stuff "dabbling". maybe he should talk to Alan Kay. Here's the part I really liked:
The next wave of end-user programmers were writers of spreadsheet macros. They were notorious for making mistakes, such as the Florida contractor who used the Lotus 1-2-3 spreadsheet program to prepare a bid in the 1980s. Mistakes in the macro resulted in a bid that was too low to recover costs. After winning the contract, the contractor tried to sue Lotus because of the programming error. While a trained professional developer would have tested the macro to make sure it worked correctly before staking a major bidding decision on the results, the end user omitted this important step.
What planet does this guy live on? Apparently, he never read about the Ariane V disaster. Or the huge percentage of professional projects that fail. Here's a cluestick Warren - the "professionals" absolutely suck at this work too - the track record indicates that the so called "dabblers" are not the problem. What's worse is that he can't sort out risks:
Can it be true that software manipulating my credit history could have been written by an accountant with no concept of software testing or development processes? How many e-businesses have failed because of lost orders or payments placed through a Web site written by a self-taught Perl or HTML "programmer" who is really a marketing assistant and has never heard of file locking?
Hmm - let's see - which do I fear more - software written by an accountant who understands accounting, but isn't a software professional, or software written by a software professional who doesn't understand accounting?. I've seen both in my career, and I'd much, much rather take the former. Warren can trust his money to the latter - be my guest. Either one of these can be a problem - but the domain is the far, far more complex of the two. It's sheer arrogance to think that learning about file locking is somehow harder than mastering GAAP rules.
If we want secure and safe software, we have to make it possible for the domain experts to create that software. Banishing them from the field sounds like 1960's glass house thinking to me. I only hope that this guy's mindset isn't very widespread...
Noticing Croquet
Ted Leung spots the Croquet talk from last year, and has a few thoughts on it. It's worth reading the whole thing - he mentions a number of good kay comments. I found this comment at the end of Ted's post interesting:
Much as I love Lisp, it seems to me that the Smalltalk community, led by folks like Kay, are continuing to demonstrate a convincing agenda for forward progress, while the Lisp community is perennially struggling with basic infrastructure issues like which dialect of Lisp/Scheme, which windowing environment, etc. Perhaps this is due to the conception of Smalltalk as a system, in addition to a language.
App updating - never easy
I feed better about the difficulties in auto-updating an application - it's apparently not that clear in .NET either. Julia Lerman posted about her difficulties with the built in support in .NET. Interestingly enough, it sounds like I had less difficulty building my own system in Smalltalk than that. Ahh, productivity....
Newspaper mode enhanced
This is a dev stream update only, but it adds a nice enhancement to the tool. Some people like using the new Newspaper mode in Bf, but they would also like to be able - assuming the feed supports it - make comments on items without having to switch back to individual items view. So, I've added a link to the end of each item that will bring up the comment tool for the item in question. As always, let me know if there are problems
Smalltalk in Canberra
I'll be in Canberra on the 22nd - here's what's up that day:
A general invitation to two seminars in Canberra on Thursday 22nd July
Venue for both seminars:
Australian National University (ANU)
Room N101 on level one of the Computer Science and Information Technology
Building which is nearest to the Barry Drive entrance to the university
(building number 108, sector G4 on the ANU campus map - see the links below:)
Department of Computer Science Seminar
4:00PM to 5:00PM
Blogging and Syndication - Trawling the Internet for Meaning (The feeding, reading and seeding of Blogs) - James Robertson (Cincom Systems )Canberra Linux Users Group (CLUG)
from 7:00PM
Blogging and Syndication - Trawling the Internet for Meaning (The feeding, reading and seeding of Blogs) - James Robertson (Cincom Systems )plus
Customisable XML presentation technology using WithStyle - Michael Lucas-Smith (Software WithStyle)Abstracts:
Michael Lucas-Smith's presentation:
Recent years have seen many software development projects moving away from desktop clients to Web Applications. Unfortunately, whilst today's Web Applications offer some benefits (particularly for implementors), they constitute a significant step backward for users. Usability and productivity suffer as user interfaces are 'dumbed-down' to fit a request-response model reminiscent of green-screen terminals. The IT industry has again manufactured new limitations that need not exist.WithStyle WebUI is a 100% Smalltalk user interface technology that frees user interfaces from the limitation of Web Browsers that were not designed to meet the UI requirements of business applications. The quality rendering capabilities of the With:Style technology prove the strength of Smalltalk as a first-class user interface platform that need not be fragmented and tied to Java or Windows-specific front-end technologies.
As a customisable XML presentation technology, WithStyle offers many deployment models and even more possibilities for rich, 'hybrid' user interfaces through integration with Pollock (a new GUI framework for VisualWorks). It fits in naturally with server-side Web applications and emerging Service Oriented Architectures. Demonstrations will include XML Editing and Scripting client-side behaviour with Smalltalk.
James Robertson's presentation:
This session will discuss blogs, blogging, and some of the associated technology (RSS in particular). The focus of the talk will be whether blogs are something of relevance - for project managers, marketing staff, or developers. I expect an interactive session with many questions, as well as an interactive introduction to what a blog is. I'll be taking the tack that blogs are, in fact, useful and worth investigating. I have my own blog - http://www.cincomsmalltalk.com/blog/blogView - and I also sponsor other blogs on our site - http://www.cincomsmalltalk.com/userblogs. A quick check of the InfoWorld site, the O'Reilly site, Microsoft or Sun will demonstrate that many of the industry analysts and evangelists have started blogging - what this talk will explore is whether anyone in the audience should be.The talk will reference BottomFeeder - an open source RSS/Atom news aggregator. Other technical issues covered will include:
- Development issues (dealing with RSS, character encoding issues)
- Deployment issues (building a deployable and installable application)
- Cross platform issues (Unicode, character sets, libraries, look and feel)
- On the fly updating of a deployed application
See you there!
Ack!
Ok, this is someone with way, way too much time on their hands. Or to quote one of the more cynical denizens of the Smalltalk IRC channel: that's like dog**** collecting itself.
Bloggers hit the bigtime
You can be taken seriously in your field as a blogger - the two major US political parties are taking bloggers seriously:
More than 30 independent Web journalists have been accredited to cover the Democratic convention, and the Republicans say they'll also credential so-called bloggers.
Would that be a war crime?
So, would going into battle with accordion music be considered a war crime?
The Air Force has been looking to replace the accordion player of its band's Strolling Strings music ensemble since the musician retired two years ago. So far, the search has been fruitless.
Off to the land down under
I'll be off the air for awhile - I'm about to head to the airport, and from there to Sydney, Australia. I'll be resurfacing in about a day, completely exhausted after 22 hours traveling (plus taxi rides to/from airports!). See you all on the flip side (of the world :) )
The trip starts inauspiciously
Well, the trip hasn't been off to a great start. I arrived at BWI over an hour ahead of time - but, I have no status on United, so I had to wait in the long line to check in. That was ok, because the flight was delayed. Not to worry, the ticket counter agent assured me - I had plenty of leeway for my connecting flight. Then came my first check - no electronic visa had been filed for. Apparently, when an American travels to Australia, they have to pay $20 (USD) and file an electronic document. This is something I was told my corporate travel agent would handle. $20 lighter (and a hassle to get a receipt - they don't normally have receipts for these) - I was past that.
On through security. I got to the gate, saw that nothing was happening and sat down. Second check - they called me (and three other people) by name to the counter. First, my frequent flyer card had been left at the front desk, and second, my connection to Sydney was blown - the airplane I wanted to fly was in Pittsburgh... weather had diverted it. Well, that was swell. The gate agent (I should have gotten her name so I could praise her properly!) started looking at alternatives for the four of us headed to Australia. A man and his son on their way back home, a woman on her way to a wedding, and me, on my way to various talks. She figured we could get on a flight to LAX at 6:50, and then catch a Qantas flight to Sydney, arriving roughly ontime. Great - but that required paperwork from the front desk, other side of security. She sends a guy to get that, and to retrieve my forgotten card. A few minutes later the guy comes back - with my card, but without paperwork, Groaning ensues - our faithful gate agent gets back on the radio, seeing of she can get paperwork, or alternatively, get us onto a United flight from LAX. No dice on either one:
- The United flight is oversold by 50 people!
- Qantas wants full (last minute) coach fare
There was the third check; now what? Well, the gate agent doesn't give up. Continuing to work with us, she starts looking at alternatives. Fly out the next morning, fly out the next evening (but all these flights are very full). Looks like a bad situation - if we don't leave today, the woman off to a wedding will miss the entire thing! Not to mention that her travel bag might be on the plane to LAX, because we almost got on that one... Possible salvation:
It turns out that United has a bunch of people needing to get to San Francisco, so they line up a new plane to make that flight (the priginal is still stuck in Pittsburgh). That plane finally arrives, and we look good - better than good, because our intrepid gate agent has bumped us all to first class so that we can get off the plane (2 hours late, with a 2:15 window originally) quickly and run to our departure gate in SFO. This woman is one of the nicest gate agents I have ever dealt with - whoever was working gate 15 today deserves a raise!
Well, as I write this I've just finished a nice meal in first class (although no power on this plane - United is just primitive compared to American that way). We are part way to SFO, and I don't know how this will turn out yet. Will I make my original flight? Or will they have to arrange new routing? That might not not be so bad - one routing had a 10 hour layover in Honolulu (beach!). Will the woman on the way to the wedding make it? I'll find out later...
Well, we had more excitement. We got to SFO, and the fun started up again. First off, we landed - and the gate we were supposed to go to was still in use. So we waited. United was holding the Sydney flight, so we were ok that way - but it was a pain. Finally, they take us elsewhere - another terminal entirely. No problem they say - someone will meet you at the gate.
The 4 of us trying to make this flight get off, and find no cart. Instead, we have to go down through the "airport personnel only" part of the airport to the tarmac, get on a bus, and get shuttled over to the other terminal. By this time, the guy with a health problem is hyperventilating, and that will be a problem.... later. We get up to the terminal level, and the United guy in the elevator with us just... takes off. Huh? Well, another agent shows up and tells us where to go. Off we dash, to the flight. We get there, and then another delay - United is trying to figure out whether or not they should allow the sick guy to fly. They call a doctor in Chicago (it's now 1 AM California time!), and he says ok. We push back...
And then they change their minds. Back to the gate we go, and they take the guy off the plane. At least we finally take off. I managed to get some sleep - it's not like I had anything else I could do - no power at the seats, no LCD screens for movies/tv, and to top it off, my seat light is burned out. So much for the books I packed :( I had a decent enough flight even with all that - good conversation, and my seat was an exit seat - over 4 feet of legroom in front of me. But it wasn't over yet.
Arrival in Sydney - and we have to wait on the tarmac again. Wonderful. Finally get to the hotel around 10 am (local time), and I'm completely zonked. I love travel...
It gets better
So I'm in the Saville hotel. It's a very nice suite I have - big living room, nice bedroom, kitchen, fridge - and there's shopping (a mall, food store, the works) nearby. It would be great - if only I had internet access!. No broadband, and I can't get the Tinkpad to dial the phone. Grrrrrrr. And I know the modem works - I ran over to the Sydney Cincom office and tested the modem out.
Bf intl difficulties
I'm getting mail from people telling me that they are seeing hosed up menu in BottomFeeder. I suspect that this is an index problem with the catalog; I'm hoping that the latest update fixes the problem. If it doesn't, let me know
No takers for the Trivia questions?
No one guessed any of the trivia questions; here are the answers:
- What 80's band did the song "If you leave"
- Orchestral Manoevers in the Dark
- What do you call the narrow strip of land that connects two larger land masses?
- Isthmus
- What 90's TV show used the song "Reflections" (Diana Ross and the Supremes) as the theme song?
- China Beach
- Who was President of the US when the Klu Klux Klan was founded?
- Johnson
- Which Country in South America has recorded the highest and lowest temperature in South America?
- Argentina
- Within 2 years, when did Steely Dan release their first album?
- Gads, I forgot this one!
- What is the most popular (as in, most consumed) brand of licqueur in the US?
- Kahlua
- Within 2 years, when was Steve Irwin (The Crocodile Hunter) born?
- 1962
- What territory did Israel seize from Syria in 1967 during the 6 day war?
- Golan Heights
Now back to ranting...
Fortune on Alan Kay
Glenn Erlich pointed me to this article in Fortune on Alan Kay. It's apparently a story over on slashdot as well, but - as per usual - the slashdot crowd doesn't get it If it doesn't come with curly braces, they never do :). Glenn also points out that the Croquet project has a new project page
They don't get it
This is just priceless. Take a look at Panopticon's comments on Boo, a new language for the .NET platform. Here's the short definition of Boo:
Boo is a new object oriented statically typed programming language for the Common Language Infrastructure with a python inspired syntax and a special focus on language and compiler extensibility.
Panopticon points to Don Box, who says "I wanted a language I could extend with my own constructs." Of course, Don could have had that years ago by looking at Smalltalk. or Lisp. But hey, progress is progress - at least he's moving in the right direction. Now look at what Panopticon thinks:
This is one of those ideas that's always seemed to me to be great on the face of it but questionable because of the law of unintended consequences. On the one hand, how can you argue with giving people the ability to extend the language as they see fit, especially given the fact that compiler releases can be a year or more? On the other hand, it's so easy to screw up language design even when you've been doing it a long time that I wonder if you won't quickly have a language that's no longer comprehensible by man or machine.
In a nutshell, that's the way a lot of people look at dynamic languages - it's the software version of what about the children? that you often see in politics. Don't give those darn developers sharp tools - by golly all they'll do is hurt themselves. Better to strangle productivity than risk that!
Do you have a Boot Disk?
Julia Lerman explains why you need one for Windows. If my laptop did this while I was traveling, I'd be dead:
I just went through a nerve-wracking few hours after doing the latest Windows Update. After rebooting, well, attempting to reboot, all I got was a message that said "NTLDR Missing, Press CTRL-ALT-DEL".
After some digging (and being thankful to have the calm Don Kiely here) it seems that because of a large pile of tmp files on my c: drive, it created a problem for the NTLDR file (NT Loader) that was exacerbated (look it up) by the update.
Lowjacked
Windley reports that Mexico's AG is now lowjacked:
Mexico's Attorney General now has a non-removable microchip implanted in his arm to give him access to the countries crime database and track his movements. The device will be deactivated after he leaves office. I guess if someone kidnaps him now they'll be forced to cut off his arm to keep from being tracked.
Now, combine that with Joi Ito's story from Japan:
Japan: Schoolkids to be tagged with RFID chips
Japanese authorities decide tracking is best way to protect kidsThe rights and wrongs of RFID-chipping human beings have been debated since the tracking tags reached the technological mainstream. Now, school authorities in the Japanese city of Osaka have decided the benefits outweigh the disadvantages and will now be chipping children in one primary school.
The future arrived while I wasn't looking...
New Coke?
We had a little luncheon here in the Cincom office - Cincom is celebrating the fact that we paid off all our external debt this week. That's not the funny thing I noticed though - I had a coke with lunch, and I thought it tasted a little off. Then I looked at the can - and there's the tell-tale yellow stripe - it's New Coke. Clearly, the Aussies are not discerning enough in their soda drinking :)
Asian fonts in bf
Bf has some problems with Asian fonts - in the html display pane. The good news is, assuming that the fonts are installed, the base application is getting the correct fonts (with the fonts installed, I titles are showing up properly). What isn't happening is proper display in the HTML component. I've sent an email off to Holger, the author of Twoflower - hopefully, I'll have a resolution shortly
More Alan kay notice
The techno.blog quotes a great quote from Alan Kay at his 2003 ETech presentation:
Most software is made by programmers creating text files that are fed to a compiler and loader which makes a runable program. One can tell how early- or late-bound a system is by looking at the things that can be changed while the program is running. For example, it is generally true of C based systems that most changes in the program have to be done by going back to the text files, changing them, and recompiling and loading them. This is even true of Java. Organizationally, this often leads to at most one or two system builds a day before most bugs can be found.
A late-bound system like LISP or Smalltalk can change pretty much everything while it is running -- in fact, both these systems are so good at this that their development systems are written in themselves and are active during runtime. For example, a program change in Smalltalk takes less than a second to take effect, thus many more bugs can be run down and fixed.
But late-bound has some deeper and more profound properties that include abilities to actually change the both the structure and metastructure of the language itself. Thus an important new idea can be assimilated into the constantly evolving process that is the system.
Another aspect of late-binding is the ability to change one's mind about already instantiated structures that are already doing work. These can be changed automatically on the fly without harming the work they are already doing.
Etc. Wheels within wheels.
These ideas are not new, but they are quite foreign and out of the scope of the way most programming is done today. -- Alan Kay.
To summarize - you want a system with no downtime? Use Smalltalk. You want a system that has to be taken down and up every time you make even a small change? Go ahead, use one of the "analyst approved" mainstream systems. I'll be over here, being productive...
Productivity? Where is it?
Gary Short points out how - even though it has libraries for lots and lots of stuff - .NET hinders productivity in critical ways. This isn't unique to .NET - Java has exactly the same problem - sealed classes. Here's a great example:
Here at Scotland On Line a colleague is working on an ASP.Net project. There's a requirement to add a number of working days to a DateTime object. A quick look at the DataTime object shows us that there's no such method. Now if we were using Smalltalk we'd be able to inherit from the DateTime object and add our AddWorkingDays method, but 'cos we're using C# and the library designers have sealed the class, we can't. Grrr!
So now we have to create a wrapper class, something like this.....
namespace SOL.UtilityClasses { public Class DateTime { private System.DateTime _dt; public DateTime(System.DateTime theDate) { _dt = theDate; } public SOL.UtilityClasses.DateTime AddDays(double NumberOfDays) { _dt.AddDays(NumberOfDays); return this; } // Implementation of all the other bahaviour we need. //Implementation of the new method we need public SOL.UtilityClasses.DateTime AddWorkingDays(int NumberOfDaysToAdd) { //... } } }...and recreate all the funtionality we need, then we have to add the extra functionality. What a waste of time!!! Why are these classes sealed, come on Microsoft you can trust us, we know what we're doing, you don't have to seal every class in the library!!
This is my answer to those who tell me "but in niche systems like Smalltalk, you have to write your own libraries for things the big vendors provide" - yeah, but Smalltalk doesn't stand in your way and block forward progress. In the case above, a Smalltalker would have added a method to class DateTime and moved on.
On Learning Smalltalk
I notice that Giulio Piancastelli was trying to learn Smalltalk, but gave up - he tried to do this in a workspace:
foo: n |s| s := n. ^[:i | s := s+i.]
He ran into trouble getting a "Nothing more expected" error from the system (Squeak, in this case). Now, for those of us who are Smalltalkers, this is clear - you don't write methods in a workspace, you write them in a browser, in a class. Here, he's trying to write a method in a workspace. Like I said, clear to us Smalltalkers - obviously not clear to a neophyte.
This is an expectations issue. People expect to write code and then compile it "en masse" - which just isn't what you do in Smalltalk. You can write the kind of code he wanted to write in a workspace, but not as a method - a method is typically attached to a class. You can script in a workspace, but you just omit the method entry point. That's what threw Giulio; he didn't realize that he was supposed to create a class, add a method, and then write some script to drive it in a workspace. Probably a better book would have helped - certainly for VisualWorks, a walk through the examples workspace would have helped (as well as a look at the tutorials).
However, that's obviously not enough - VW has tutorials and the examples workspace - what should we be doing that we aren't? I'd like to be able to help people like Giulio not get discouraged.
OOSig Meeting
Last night I spoke to the Australian Computer Society's OOSig and the Open Source Sig - the topic was Blogs, Syndication, and BottomFeeder. It went pretty well - there was a higher than average turnout, and we had a good discussion on the topics. One thing hit home to me again when I gave this talk - Syndication (RSS/Atom) and News Aggregators are still very much a niche usage. I started out by asking how many people knew about and read blogs - maybe 5 people raised their hands (out of 20+ people). It shrank to 2 people by the time I got to "how many of you know what a news aggregator is?". As cool a topic as many of think this is, there's a ton of end user education left to do. Oh, one last thing - I said I'd get the presentation posted - here are the slides
Java Continuations?
Chris Double points to a source claiming that the JVM ought to be able to support continuations. That's cool, but - based on Sun's concepts of OO, I would guess that they'll invent a completely silly new language construct to support it (assuming they do support it, that is). Why have a simple, extensible language when you can lard on complexity?
Now the UN is spamming???
I've just had to add a line to my rejects file (which is used to filter referers on the CST blogs) - apparently, some web monkey at the iaea thought that referer spamming was a good thing. Yeah, there's a way to make your organization look good. Bah.

