Danny Ayers is working on an RDF API for Smalltalk (Squeak in particular). I expect that'll port to VW pretty easily :)
Slashdot notices Slate, a Smalltalk-like system driven by ideas from Self, Smalltalk, and Scheme. As usual, many of the curly bracer commenters seem unwilling to even think about a system that doesn't use curly braces and semicolons :)
I need an FAQ.... Ryan Lowe confuses strong typing with declarative typing:
Paul Vicks makes a good point when he says that generics make strongly typed languages even stronger, and this seems to go straight against the new wave of weakly typed languages like Python and older ones like Smalltalk.
Sigh. Smalltalk is dynamically, and stongly typed. You cannot get a type error in Smalltalk; if you send a message that is inappropriate, you get a well defined exception (which can be handled). We don't lie to the compiler either (Casting, anyone?). He later asks what the advantages are, pointing to some nice refactoring capabilities of Eclipse. The advantage is that I can define objects in ways that make sense - and have them conform to a specific protocol API. The advantage is that I don't end up with overflow situations because someone decided that 65,535 of something was all I'd ever need. I don't wind up with essentially random types being assigned to objects, just because some type has to be assigned... which makes the whole system more flexible.
Howard Ferch takes on a development management issue at StS - how do you manage multiple version streams of the same project? Register today and find out!:
TAPDance: a system for maintaining multiple versions of software
Howard Ferch: LynxGL
Tuesday 2:00:00 pm to 2:45:00 pm
Abstract: In order to produce multiple versions of packaged and customized software systems we have developed a system which isolates the user look and feel and database representation from the processing logic. This system stores the definition of all of the user interface in a database, which is read and analysed at runtime. The entire system is written in Smalltalk, and the talk will describe the design goals, how Smalltalk met those goals, and how we use the Smalltalk language itself as a GUI representation language to minimize our efforts in building multiple versions of user interfaces.
We will demonstrate the flexibility of the system by showing how the same executable will provide two different customizations of a Fire/Paramedic dispatching system, as well as a personnel roster system, and a reporting and modelling system.
Bio: Howard J Ferch, PhD, Computer Science, 1978. Currently President of a small software company developing high availability systems for fire and paramedic departments.
See you in Seattle!
Update: Simon Phipps was not only misquoted here, but the journalist who filed the story apparently did not even attend the talk. So it looks like the mud belongs on Julian Bajkowski of ComputerWorld, not Simon Phipps...
Now Here's an interesting story - Sun's Simon Phipp's is ripping Open Source opponents. Maybe he should call Scott McNealy - iirc, McNealy rejected Open Sourcing Java after IBM suggested it...
Only two years after publicly hugging a Microsoft executive live on stage, Sun's chief technology evangelist Simon Phipps has branded opponents of open source "Luddites" and predicted that the current proprietary vendor dominance will crumble through sheer collective will of a new generation of IT managers.
"The Luddites fighting the move to open source are certain to be defeated. Different parts of the software market may move to open source, at different speeds, but the move is an inevitable societal trend," Phipps vowed.
So if we should abandon proprietary software, should Sun open Java, or should developers shun it? Does Phipps pay any attention to what his company does at all?
I haven't posted much in the last few days - I've been visiting customers, going to meetings, and generally been without good connectivity. That should change as I head back to the UK for ot2004, where I'll be speaking about RSS, XML, and Blogs. Assuming decent connectivity, I'll be blogging the talks I attend live - if not, I'll be batch posting.
Sci Fi Wire reports that Buffy (Sarah Michelle Gellar) will not be appearing in the finale of Angel. What will we do with no BuffVerse, and no Firefly?
I had a nice meeting with a customer this morning - they are using Smalltalk (VisualWorks) to schedule the trains for a large part of Germany. That was neat; the system has some very nice graphical pieces with very fast zoom in/zoom out capabilities. That was cool. Then I came back to the corporate (Cincom) office, where I find that the firewall has made life unbearable. All I have is port 80 - no SSH, no IRC, no non-corporate email access... it's like being cut off from the world. Is this what net access is like for most people who work in offices? How do people stand it?
Pollock : Into The Breach
Sames Shuster: Cincom
Tuesday 9:15:00 am to 10:00:00 am
Abstract: Now that Pollock, VisualWorks new GUI framework, is about to come out of Beta and into Production, it's time you learn what it does for you. In this presentation, we will demonstrate the capabilities of the Pollock framework, and how, even in it's first Production release, it surpasses the current framework capabilities. We'll present an overview the future migration and translation tools which will take most of your existing current framework code and move them to Pollock. We will be present the short term and long term roadmaps for the VisualWorks GUI. Finally, time at the end will be devoted to answering questions and addressing any concerns that Pollock somehow represents a disruptive technology change.
Bio: Samuel S. Shuster is the GUI Project Lead in the VisualWorks Engineering Team. After almost four years of thinking about, designing and working on Pollock, he is thrilled that the light at the end of the tunnel is so close at hand. So much so that he actually is making plans to take is first real vacation in almost 10 years... However, he hasn't as yet decided if he'll take his portable with him.
See you in Seattle!
OpenAugment: Preserving Engelbart's Augment Legacy
Tuesday 9:15:00 am to 10:00:00 am
Abstract: Created in the 1960's by Dr. Douglas Engelbart and his imaginative team at Stanford Research Labs (SRI), Augment is one of the most groundbreaking and important historical artifacts of the software industry. Many of today's desktop and network computing innovations can be traced back to the original Augment system. Today, the OpenAugment Consortium (http://www.openaugment.org/)is taking steps to ensure that future generations will have access to the Augment heritage through its open source initiative. This talk will describe the Augment architecture and the role that Smalltalk has played in its development. It will then trace the discoveries that drove the evolution of the current OpenAugment implementation. Bio: Jeff Eastman is best known in the Smalltalk community for his contributions to Smalltalk Object Request Brokers. A long time HP engineer and now entrepreneur, Jeff was involved in the formative period of the Object Management Group (OMG) and contributed to many of its early works. He later served on the staff of the Object Data Management Group (ODMG) and led their Object Model and Smalltalk groups through three major publications. Recently he has been working with the OpenAugment Consortium to preserve the works of the Augment team on a stable and open computing platform.
See you in Seattle!
Here's an announcement from STIC on StS 2004:
In just a few short weeks, from May 3-5, the Crowne Plaza Hotel in beautiful Seattle, Washington will play host to Smalltalk Solutions 2004.
Early Bird Discount!
Remember to sign up before April 3 to receive the early registration discounts. Current STIC members receive a $75 USD discount for the conference. You can easily join STIC or renew your membership while signing up. To register, visit: http://www.smalltalksolutions.com/registration/register.htm
Conference Exhibitors and Keynote Speakers
Some of the top companies in the world of Smalltalk will be exhibiting at this year's conference, including Cincom, Gemstone, Knowledge Systems Corporation, IBM, and many more.
Our three keynote speakers this year are Avi Bryant, Lars Bak, and Microsoft 19s George Bosworth. They will be offering insightful, dynamically charged presentations discussing such fascinating items as Smalltalk in web development to making embedded systems serviceable.
An Educational Experience!
The conference will also offer informative, in-depth, educational tutorials as well as discussions and information on future Smalltalk plans and directions.
When you register for the conference, don't forget to book your hotel. Smalltalk Solutions will take place entirely within the Crowne Plaza Seattle hotel. Make sure to mention you are attending SS 2004 in order to receive a significant hotel discount. Hotel rooms are booked on a first come first served basis, so make sure to make your reservation right away. More information can be found at: http://www.smalltalksolutions.com/hotel/hotel.htm.
26 Add a Little Entertainment and Socializing!
Keep your Tuesday night open while in Seattle because the STIC has planned a fun-filled night for conference attendees at the world-famous Seattle Space Needle. We have reserved a banquet room high above the Seattle skyline for you to enjoy. Hors d'oeuvres and drinks will be served starting at 6:30 p.m. followed by a delicious dinner and entertainment later in the evening.
May is right around the corner and the conference will be here before you know it. Don't forget that registering before April 3, 2004 can result in significant savings to you!
To register, please visit http://www.smalltalksolutions.com/registration/register.htm.
We look forward to seeing you at Smalltalk Solutions 2004!
The Smalltalk Industry Council
See you in Seattle!
PR Opinions talks about the big screwup Coke made with Dasani in the UK. This brought to mind this post from Ted Neward - a bad customer service story. Here's the kicker - it used to be that bad service, or even a bad marketing campaign, had limited fallout. Now, it's potentially global:
It's also and interesting example of how the geographical barriers for crises are falling, this story has been covered all over the globe: UK Story, US Story, Australian Story, New Zealand story, African Story.
Marketing and PR people have to be very careful now. Heck, everyone does. Just look at how far this John Gray suit threat story has spread. Things can get lost on the web - or they can blown up into super-sized stories. It's a new world out there
Scoble says he wants a feature I don't follow:
Anyway, here's a feature request for the Outlook team: I want a magic folder.
What would this magic folder to? It'd post to my blog everything I drag into it.
What does that mean? It would repost the content? Post a link saying "Look at this?" Typically, when I want to blog something, I want to comment on it...
Chris Double talks about stackless operations, showing a process that migrates back and forth across systems as an example. I've done this in Smalltalk, with a stack, using BOSS to serialize a process, send it across the wire, and have it run. I suppose I could make it come back the same way...
CeBIT is just a massive show - unless you've been here, you literally hav eno idea how big - 22 halls, each as big as the typical trade show venue - software, hardware, consumer goods - it's mind bending. I just spent an hour browsing, and only made it through 5 halls....
It's been a trip so far. Th eflight to London was ok - but here's a tip - don't fly into Heathrow and drive to Gatwick. I'm not familiar enough with the roads to have done that tired :). I finally arrived at my hotel, only to find that I'd been transported back in time - not only was there no internet connectivity, there were no phones in the room! I had to rent an alarm clock...
I had forgotten my itinerary, and making a calling card phone from a public phone boot was an odyssey of begging for operator access. That done, I finally went to bed. Got to Gatwick this morning, hoping to find some WiFi access.... not a chance, not even in Starbucks (there are 2 signals, neither of which gives me net access). So I'm slogging completely off the grid now... who knows when I'll be back on. On to Germany, and hopefully to network access...
Opentalk, Load Balancing, and Multi-Image SUnits
Leonard Lutomski: Cincom
Tuesday 8:30:00 am to 9:15:00 am
Abstract: This talk will demonstrate the new Cincom Opentalk Load Balancing Facility and its designed ability to support several different load balancing architectures. The multi-image SUnit framework used to develop and test the load balancing facility will also be addressed.
Bio: Leonard Lutomski has been developing in Smalltalk since 1985 and manages the Cincom VisualWorks Protocol Team.
See you in Seattle!
0xDECAFBAD points to a net based fundraising effort to save Angel (the TV show). This is an attempt to harness the web in the same way that many political campaigns have been doing this year. Will this spread?
BitWorking comments on how hard character encoding is to get right:
Character encoding is hard. Really. If I could point to one thing that causes feeds to be invalid more than anything else, it would be character encoding.
This is the primary reason that BottomFeeder does not reject bad feeds - it just ignores bad characters to the largest extent that it can and moves on. The reality is, feeds move in and out of well-formedness on a regular basis. There are so many people posting so much content from so large a set of tools, that it's simply unrealistic to expect ongoing perfection. I periodically get errors in some of the CST feeds - I'm not entirely certain how, because it's nearly always a comment that came from - somewhere. Easy enough to fix when I notice, but I don't always notice. I'm pretty sure other content producers have the same problem - most of them aren't hosting the server themselves, and most of them have minimal control over whatever it is that the server does. It's not that anyone wants to create malformed content - it just happens. In the meantime, content consumers still want to read the content, even if it has a few bad characters in it for a period of time. Stating that client side applications should just reject that content out of hand is simply anti-social, IMHO. Sure, notify the user that there's a problem with the content, and let them contact the provider if they feel like it. In the meantime, you shouldn't punish grandma because of an error she has no control over...
Patrick Logan reminds me of one of the reasons that Smalltalk is such a pleasure to develop in - the ability to read code. That sounds silly - after all, you can read code in any language. Smalltalk makes things easier in a few ways though
- It's "Open Source" in the access sense - you have access to all code all the time. This is true even when debugging - none of the system classes or libraries are closed off. Need to change/modify/work around something? Go ahead
- Smalltalk is very easy to read. Keyword messages in particular make it much easier to follow the intent of the code
Here's an example of the latter - the following code in BottomFeeder is used to parse an XML document from an http source into a Feed domain object:
Smalltalk code: Constructor parseAndProcess: anUrl into: aFeed. C style syntax code: Constructor.parseAndProcess (url, aFeed);
The Smalltalk code just seems clearer and easier to read - the keyword style of messaging explains each argument, making it more like a textual sentence than like code to be decoded. That just makes it easier to read code and figure it out. A common complaint I hear from manifest typing advocates is that the lack of type information hinders that reading process - to which I respond: How? Seriously - the fact that some object has a given type tells me far, far less than an intention revealing selector does - and keyword style messaging makes it easier to do that. I've been put into the middle of large bodies of C code, and in the middle of large bodies of Smalltalk code. The type information just doesn't help in the understanding process all that much. I find it far, far easier to figure out a large body of unfamiliar Smalltalk code than a similar body of C, C , Java (etc). The fact that there's typically a whole lot less Smalltalk code to look at also helps a lot.
You're going to end up reading a lot more code than you write - the easier it is to do that, the more productive you are likely to be.
We have a preferred conference rate with a reserved block of rooms at the Crowne Plaza, but the block is reserved only until April 2nd, after which time the preferred rate may not be available. Also, if we don't have the block filled by then the conference may have to pay a penalty. So it would probably be good to make room reservations before then if you haven't already done so
See you there!
I just made an update to the category search function. I implemented a cache that sped things up, but there was no proper date sorting. Why was that? Well, this is one of those times when my implementation "leaked". Here's what I did:
- Each posting has a category
- I created a cache dictionary, where the keys are the categories, and the values are a collection of files that have (one or more) postings of that category in them (there's one file per day in this implementation)
- The collection was a Set, to prevent the same file from showing up twice in a particular category list
Using a Set, and then not dealing with that was the problem. When posts are placed on the screen, I just iterate over all the posts asked for and render them. That's fine when they are already in reverse chronological order - but a Set is unordered. I hadn't considered that, which is why - until five minutes ago - category searches were bringing back posts in a random order. It's fixed now :)
I'm off to Europe tomorrow morning - I'll catch the tail end of CeBIT, then meet with a bunch of our customers in Germany. From there, I'll be heading to the UK to speak at Ot2004. I'll be blogging the conference - I'm hoping there will be WiFi access. This is a long trip - 10 days. It's likely that BottomFeeder updates will slow to a trickle while I'm on the road - especially if connectivity is an issue.
Making relational data first class
Avi Bryant: Beta4.com
Tuesday 8:30:00 am to 9:15:00 am
Abstract: ROE, the Relational Object Expression library, models relational queries as first class Smalltalk expressions. This has several advantages over using SQL strings directly:
ROE can either be used directly as a better interface to relational databases, or as a new foundation for object/relational mapping tools. Currently, it has only been tested using PostgreSQL and Squeak Smalltalk, but it could easily be ported to other platforms.
- queries can be built using familiar Smalltalk syntax and without worrying about binding and escaping data
- queries can be easily composed, so that a complex query can be built up over several methods, none of which know any details about the others
- queries look like ordered collections of tuples, but with most operations other than #do: defined lazily; for example, #copyFrom:to: won't pull in any data, but will simply produce a new query with an extra clause
- queries maintain a rich set of metadata, so that, for example, the columns of any query can be automatically grouped by table and its rows mapped properly into objects.
And don't miss Avi's keynote on Seaside!. See you in Seattle!
Scoble makes a point that I've made here many, many times - making software is expensive, and it has to be paid for somehow. There are a few people who don't seem to get this - apparently, the notion of having to pay bills never occurs to them. Now, this really doesn't have anything specifically to do with Closed Source vs. Open Source; you can make money off of either model. Here's what Scoble had to say:
Eben Moglen asks an interesting question: "If I can provide to everyone all goods of intellectual value or beauty, for the same price that I can provide the first copy of those works to anyone, why is it ever moral to exclude anyone from anything?"
Because humans are incented to do more when there's motivation, that's why.
Society learns this over and over and over and over. Communism vs. Capitalism. In every instance, humans do better when the people who do more for society are rewarded.
Which is exactly correct. People will only do so much (and in most cases, that's not a lot) out of altruism. Take BottomFeeder, for instance. Sure, it's freely available, and it'll stay that way. However, my ability to work on it is directly related to it's connection to my job (promoting Smalltalk in general, and Cincom Smalltalk in particular). Don't believe me? Go look at SourceForge - how many of those projects are active? Look at the big, successful open source projects - they all have funding (either direct or indirect). Non-trivial software projects are just too hard to be sustained by any model that doesn't involve some kind of funding.
So to get back to the question Scoble answered - if you provide a good freely, it's value will end up approaching zero. If there's no compensation, no one will feel any compulsion to support or create that good. Ultimately, we all have to eat :)
I've just updated the blog - category searches are now much, much faster. I'm working on a fix for title/keyword searches that will be as dramatic, but don't have that done yet. The category search was fairly simple - I just added a cache. The cache is dead simple - a dictionary lookup by category name, with the value being a collection of all files that have at least one post from that category in them. Now, when you do a category search, the system looks in that cache instead of across all blog posts every made.
Now Gartner says that there aren't enough skilled Java developers to go around:
Research firm Gartner says only 32% of the 2.5 million Java developers in the world have genuine knowledge, which means there is a serious lack of high-level development skills. "This has resulted in a tremendous backlog of projects," says Aad Van Schetsen, Compuware sales director for application development and integration solutions in the Europe, Middle East, Africa region. "Some European companies need to complete up to 500 projects in the next two years."
But go ahead and ask their analysts which languages to use, and they'll say Java and C# - they are mainstream, and thus "safe". Never mind the lack of skilled developers (meaning: you'll have to train them, just as you would with a non-mainstream solution). Never mind that you'll be competing with tons of other companies for these people. Never mind Gartner's own analysts pointing to high failure rates. Never mind any of that, because being popular is all that matters. Pay no attention to the man behind the curtain!
Replacing Oracle with GemStone/S: The Agony and the Ecstacy
Monday 4:45:00 pm to 5:30:00 pm
Abstract: Replacing Oracle with GemStone/S was a painfully process. Despite the pain, it is paying off handsomely. This presentation will cover the business, cultural and technical aspects of making such a transition.
Bio: I've spent the last several years(1996-1999) building and enhancing web systems for the travel industry in VisualWave and GemStone/S.
After a couple of years working as a Software Engineer at GemStone, I'm back in app development. My current project is replacing Oracle with GemStone/S as the Transaction DB for a banking application. There's nothing more satisfying that ripping out O-R mapping code. ;-)
See you in Seattle!
Peter Lount will discuss FastCGI, Smalltalk, and Apache in his talk at StS 2004. Come see how it all fits together:
FastCGI for Smalltalk: Integrating Smalltalk Into An Apache based Web Site
Peter Lount: Active Information Corp.
Monday 4:45:00 pm to 5:30:00 pm
FastCGI for Smalltalk: Integrating Smalltalk Into An Apache based Web Site
A presentation on the FastCGI system created by Tomas Vanak and Peter William Lount. FastCGI for Smalltalk enables a Smalltalk virtual machine to be able to integrate seamlessly into an Apache Web Server based web site along site with PHP, Perl, JSP or whatever else the site is running. FastCGI for Smalltalk is written entirely in Smalltalk and has versions for Smalltalk/X (the original version), Squeak and Dolphin Smalltalk. Porting is quite easy. FastCGI for Smalltalk takes advantage of and implements the FastCGI Protocol which is a protocol that can be added to Apache. It's implemented as a C based Apache Module. Before selecting FastCGI, Peter looked at a number of other methods of integrating Smalltalk and Apache and choose FastCGI as the quickest path to achieve this. The FastCGI for Smalltalk effectively enables Smalltalk based web applications that run on the same server or on application servers. FastCGI for Smalltalk was written in less than a month by Tomas Vanak at the request Peter William Lount. The request was published on http://mod.smalltalk.org/ and after six months Tomas picked up the torch. Peter and Tomas worked together designing, debugging and extending the main body of Tomas's code. A FastCGI "hub router" prototype was written in six hours that takes FastCGI requests and "routes" the requests to multiple Smalltalk images located on the same or other servers. Peter William Lount has written an extensive web engine known as the AIMS Web Engine that is being used in a number of web sites under development (including Smalltalk.org). Recently a HTTP server has been added to the FastCGI for Smalltalk capabilities. This was possible since the Smalltalk based FastCGI Server has a lot in common with an HTTP server. FastCGI for Smalltalk is open source.
What is FastCGI?
"FastCGI is a language independent, scalable, open extension to CGI that provides high performance and persistence without the limitations of server specific APIs. ... FastCGI applications use (TCP or Unix) sockets to communicate with the web server. This scalable architecture allows applications to run on the same platform as the web server or on many machines scattered across an enterprise network. ... FastCGI applications are fast because they're persistent. There is no per-request startup and initialization overhead. This makes possible the development of applications which would otherwise be impractical within the CGI paradigm (i.e. a huge Perl script, or an application which requires a connection to one or more databases)." http://mod.smalltalk.org/
This presentation will be presented by Peter William Lount.
Bio: Peter William Lount is the president of Active Information Corporation and has been using Smalltalk for over twenty years since the early 1980's. Active Info has worked with companies such as JPMorgan, Fannie Mae and Deluxe Check Printing applying his Smalltalk knowledge in the banking and financial services industry as well as the construction, real estate, medical, web services and other industries. Peter wrote and owns the Metameric Bridge software that was used to design and build the Vancouver Sky Train "via-duct" (bridge) and other bridges around the world. Through Active Info Peter offers consulting, mentoring and coaching services. In addition Peter is the senior editor of Smalltalk.org, a Smalltalk advocacy web site. For more info please see http://www.activeinfo.ca, http://www.peter.lount.com, and http://www.MetaMere.com.
See you in Seattle!
A Very simple deployment tool. It wraps the complexity of RTP (by avoiding most of its features) to allow for a fairly simple way of creating a sealed image and a Windows executable. There are 3 steps:
- Seal the image. This assumes that you have an image ready to be sealed. You startup Deployment.DeploymentToolUI, fill in the image name you want (NOT the same one you last saved the working one with :) ), the startup class, and the startup method. Specify the namespace using dotted notation. Then hit "Seal Image". That will save the image without doing any stripping.
- After that's done, bring up a working image with the deployment tool loaded. Start it up, and compress the image. This will create a smaller image that can be combined with the VM for a single Windows exe
- After that's done, the last button will create the executable.
That's it. If you know how to use the RTP, you can create a smaller, more efficient runtime with it - but this works fairly well, and is very simple. Enjoy, and report any issues to me
I received this question in email this morning:
With the help of David Pennell, I've gotten Seaside working. When I compare the behaviour of Seaside under VW, it differs from that under Squeak---aka, the VW port has some bugs. Now, the first thing I'd normally do in a file-based system is to do a compare of the sources. But in Smalltalk, how do I do this?
Well, comparing sources in a Smalltalk system isn't hard, assuming that all such sources are in the version control system - for VisualWorks, that would mean Store. So assuming the base Squeak code (which would not work in VW) were versioned off, one could run a comparison using the Store tools:
- Connect to Store
- Load the version you want to compare
- Select a package or bundle in that version and - on the right mouse menu - do a comparison with the original (presumably Squeak in this case) version
Now, there are going to be some issues with this kind of thing - Squeak and VW are not plug compatible - meaning, you might not be able to get the base Squeak version loaded into an image (and thus versioned into Store) in the first place.
Now, if you have the code in chunk format from Squeak (i.e., a file out) - you can run a comparison independent of Store. (this is how I compile diffs between versions of VW here).
- Open a ChangeList tool
- Read Sources from the chunk file exported from Squeak
- On the Remove menu, Same Code as System and Same Source as System
- On the Forget menu, select Forget All Marked
Now you have the differences, which you can get a reporrt on by running Compare with System (assuming you have Seaside loaded). Now, there's another issue you'll run into here - VW has namespaces, and Squeak doesn't. If the Seaside code in VW is in a differnt namespace than Smalltalk, then pretty much everything is going to come up as a difference. That's a harder issue to deal with...