general

A flare up on Women in Software

April 26, 2004 0:37:47.405

Julia Lerman has posted again on the whole Women in Technology thing - brought on by this post by Ted Neward (and a bunch of others she links to). It really is a curious thing to me. My wife is a software developer, and she likes to point out what a great career software development is for women (meaning what, exactly?). Well, the fact is that many (not all, but many) women end up taking a "time out" in their career when they have children. This time out can be a complete break from the field or reduced hours.

The truth of the matter is, software is a (relatively) easy field to keep up with - the state of the art simply hasn't advanced all that much over time. Picking up the changes, even after a few years out, just isn't going to be that hard (seriously - if you were a Java developer 4 years ago, just how hard would it be to get going with C# and .NET?). So it's kind of confusing that more women don't choose this field. The options for flexible work hours are better than a lot of other fields, part time hours are fairly easy to accommodate, and time out of the field isn't going to get you hopelessly outdated. This tells me that the problems are cultural - and strongly so, as they override a lot of things that ought to make the field inviting. I'll be looking for Julia's comments from the BOF she says she'll be running at TechEd 2004 - maybe some answers will come out of that...

 Share Tweet This

BottomFeeder

Minesweeper plugin for BottomFeeder

April 26, 2004 1:13:44.756

Michael Lucas-Smith packaged up a MineSweeper implementation as a plugin to BottomFeeder. If you are on the dev update stream, it's available as an update - download it and go. After all, Smalltalkers need to be able to waste time too!

 Share Tweet This

tv

Silly TV Movie of the year

April 26, 2004 1:40:06.857

NBC is going to run an earthquake disaster movie next week - "10.5". The premise is that a magnitude 10.5 (ouch) Earthquake hits the west coast of the US (apparently, more than 1). You have to love these quotes I got from the CNN story on the show:

Howard Braunstein, executive producer of the miniseries, acknowledged that the film is meant as "fun entertainment" and plays loose with the facts.

Asked whether he consulted scientists in developing the project, Braunstein said: "Not really. We went on the Internet for backup research."

 Share Tweet This

BottomFeeder

More new stuff for Bf

April 26, 2004 10:24:13.958

This feature is directly based on a request from a user - folder level item viewing. What does that mean? Well, it's pretty simple. If you select a folder, all the items for that folder will show up in the item view. I have to tune this some; the item view isn't showing the originating feed at this point. That's why it's a dev stream only feature :) I'll get that fixed today.

Update: I've added the feed information to the table view when you select a folder.

 Share Tweet This

StS

StS 2003 presentations online

April 26, 2004 12:17:20.232

Yes, we were slow about this :) Still, better late than never. The presentations from last year's StS are online:

Presentations from Smalltalk Solutions 2003 are now available at: http://www.whysmalltalk.com/Smalltalk_Solutions/ss2003/ss2003presentations.htm

Smalltalk Solutions 2004

For those of you local to the Seattle area, or if you just happen to be in town for a day, we have added a one-day pass for the conference. The one-day conference pass is $200 USD and gives you full access to that day's events (except for tutorials). One-day passes can only be purchased at the conference. I look forward to seeing everyone next week in Seattle for the 2004 show.

It's not too late to register - details here. See you in Seattle!

 Share Tweet This

development

Status Bar noticeability

April 26, 2004 14:09:27.712

Panopticon Central has some interesting points on what people notice in a UI. Specifically, the status bar:

But what this really makes me think of is a usability test they did on Access one day to see how effective text placed in the status bar was. The test went like this: the user was given some task to do in Access. Unbeknownst to them, we'd stuck a message in the status bar that read "If you notice this message and tell the usability lead, we will give you $15." Want to guess how many people got the $15? Zero. After that, we were careful not to put any important information down in the status bar, because it was 100% likely that no one would ever see it.

Combine that with the research showing that people often just hit return to any dialog box, and you have a real issue. I guess any user notification that's important just has to be part of the core UI.

 Share Tweet This

tv

DVR's and the tv economic model

April 26, 2004 15:40:09.899

And so it begins:

National advertisers plan to cut spending on TV commercials as ad-skipping devices take hold, according to a survey. Web advertising is expected to benefit from the shift.

Now that advertisers have noticed that the model is failing, what's next? I suspect that subscription services are going to really start to drive broadband....

 Share Tweet This

general

Upgrades are downgrades

April 26, 2004 16:34:39.263

I made the mistake of upgrading my mail client the other day. For reasons that defy my understanding, it's interaction with one of the mail services I use changed - Eudora 6.0 read the mail just fine, and 6.1 wouldn't. I sent some time looking at the failure messages, and realized that it had a wild idea as to what the server name was - I had included the www. in the host name, and Eudora suddenly was baffled by that. Removing the leading www. solved the problem. Now back to my 200 inbound messages....

 Share Tweet This

management

Chris Pratley on Word

April 27, 2004 9:15:16.422

Chris Pratley, the Program Management manager for Word (amongst other things) discusses Word and its movement from "worst to first" in market share. It's an interesting read, and explains one thing very clearly (at least to me) - Word was a far, far better product back when it had meaningful competition. At this point, Word's developers have utterly forgotten what end users want, and it shows. What do I mean? Well, here's my list of irritations with Word - none of them utterly crippling, but the collection would make me switch products in a heartbeat if a decent competitor existed. Word Perfect isn't it, because it mostly stinks in the same ways (my Wife uses it).

It didn't used to be this way - I recall liking Word for Windows 2.0. It stayed out of my way, and did what I wanted. The current product mostly gets in my way, and does things I dislike:

  • Bullets and Numbering - yes, I've mentioned this before. However, I shouldn't have to use copy/paste to ensure that a bullet goes where I want it. This part of Word is just broken
  • Those adjusting menus - they drive me nuts, because all my learned behavior from older versions of Word is shot. When I pull a menu, the items aren't where I expect them - and often aren't there at all until I pull the whole menu. It ought to be easy to turn this off - but the options don't look obvious to me
  • The HTML export - the HTML created is a mess. Does no one in Redmond actually know HTML? Based on Word, my guess would be "no".

Doesn't look like a long list, does it? It's not - but the mess with bullets ticks me off every time I use the product. It's a constant, low level irritation, just like the menu thing. The irritation is exacerbated by the knowledge that this stuff used to work - I know that I did not have to fight bullet lists every step of the way in WfW 2.0. It's been a downhill slide since 2.0, as far as I'm concerned - regardless of what the reviewers have said...

 Share Tweet This

BottomFeeder

Updated Twoflower and better auth support

April 27, 2004 10:40:22.622

Holger released a new rev of Twoflower this morning, so I was able to update BottomFeeder to use it. This fixes some of the font issues (especially with bolded text) that had been present in the previous cut. I also received notice that Bf doesn't support urls that look like this:

http://username:password@www.somesite.com

That's shorthand for Basic Http Authorization - it's a way of providing the information up front instead of waiting to get prompted. The Http code wasn't parsing that out, and was instead barfing on that as an invalid url. I've addressed that in the latest update to the Http-Access module - that sort of url is now fully supported in the dev stream.

 Share Tweet This

general

Contract by obscurity

April 27, 2004 12:31:13.166

Many people have heard about the 1980's Van Halen contract rider specifying "no brown M&M" be present backsatge; here's the back story on that. Fascinating bit of trivia.

 Share Tweet This

StS

What I'm talking about at StS

April 27, 2004 13:51:33.270

I'm giving a talk on the implementation of BottomFeeder at StS 2004 - there's still time to register, btw! Anyway, saying I'll talk about the implementation is a bit broad - what am I going to discuss?

I've now given a variation on this talk three times - to two STUG meetings, and at ot2004. The STUG talks were more technically oriented, but I got a lot of good feedback at ot2004 about it. So before I really get into implementation, I'll (briefly) do two things:

  • Explain what a blog is - it's easy to assume that "everyone" knows what a blog is. It's still something of an insular world though, so I'll provide a brief overview
  • What's an Aggregator? Again, as with blogs, not everyone knows what one is. I'll again give a brief overview of what an aggregator is.

Then I'll talk about how I stumbled into this field, followed by some of the implementation details of BottomFeeder. I've uploaded the slide deck here. I've made a few changes since I sent in the presentation for the StS CD, so it might be worth downloading. I'm speaking bright and early - 8:30 am on May 5th. See you there!

 Share Tweet This

StS

More StS help

April 27, 2004 13:58:43.627

If you are flying into Seattle for StS 2004 and need a convenient ride to the conference hotel, then check out the Seattle Airport Shuttle Express - the fares and schedules are posted on that page. A cab will likely run you about $35 USD. See you in Seattle!

 Share Tweet This

development

Re: I like C# but...

April 27, 2004 16:18:37.726

He may not know it, but Gary Short really wants dynamic typing. Just look at how C# makes him lie to the compiler....

 Share Tweet This

development

Not ready for prime time?

April 28, 2004 0:00:27.118

Alan Green has some wild theories:

In a recent Charles post points out that it takes a lot of (keyboard) typing to iterate over a list in Java, compared to the same piece of functionality Ruby, Perl, Python, Lisp, Smalltalk, OGNL and Haskell.

It would only be a fair comparison is these languages were suitable for large systems development.

At the time Java was created, Ruby, Perl, Python, Lisp, Smalltalk, OGNL and Haskell were either non-existent or suffered serious deficits as large-systems programming languages - Back then, the in-vogue large-systems programming language was C++

Apparently, Alan Green is still in High School - he equates "in vogue" with "serious". So prior to 1995, Smalltalk wasn't suitable for large systems development? Oh, really? I worked for ParcPlace Systems back then, and between 1990 and 1995, lots of very large, very successful projects were done in Smalltalk - both in VW and VSE, and in the (then new) IBM Smalltalk. Many of those projects - at Fortune 100 firms - are still in production. It could be simpler than this - I suppose one could translate Alan's statement this way: "It's not fair to compare Java facilities to Smalltalk, because when Java came out I hadn't heard of Smalltalk"

 Share Tweet This

general

Reviews in RSS feeds

April 28, 2004 9:31:52.211

Spotted in 0xDECAFBAD: You too can create your own reviews - and have them picked up by sources like Amazon (etc) - here's the RSS module definition for RVW. Interesting.

 Share Tweet This

smalltalk

Colin Putney Blogs

April 28, 2004 9:36:22.508

Colin Putney has joined the blogsphere with a SmallBlog - here's his RSS Feed. Colin's going to talk about Squeak Tools at StS 2004 - so there should be a lot of good info coming out on his blog. Subscribed!

 Share Tweet This

cst

New CST Survey up

April 28, 2004 11:08:52.209

The feed back for our last survey was great - thanks for all the great feedback. There's a new survey up, and this time we are interested in how you get information on Smalltalk and other products:

  • Tradeshows?
  • Blogs?
  • Vendor websites?
  • Community driven sites?

We would like to make things simpler with regards to getting Smalltalk information, but we need to know where you look now. Thanks in advance!

 Share Tweet This

java

Stuck in the past?

April 28, 2004 11:36:30.651

Interesting justification for log4J over on the manual site for log4J - an old quote from Kernighan and Pike related to C level debugging:

As personal choice, we tend not to use debuggers beyond getting a stack trace or the value of a variable or two. One reason is that it is easy to get lost in details of complicated data structures and control flow; we find stepping through a program less productive than thinking harder and adding output statements and self-checking code at critical places. Clicking over statements takes longer than scanning the output of judiciously-placed displays. It takes less time to decide where to put print statements than to single-step to the critical section of code, even assuming we know where that is. More important, debugging statements stay with the program; debugging sessions are transient.

Now, logging is useful - I still do that with remote Smalltalk servers that have no UI from time to time. However, this makes it sound like logging is still preferred to debugging. Admittedly, the home site for a logging tool is going to be biased, but still... to my mind, logging is a poor substitute for using a debugger. Of course, a Smalltalk debuggeris actually a code browser with the context stack riding along, so YMMV - if your tools are primitive, maybe logging looks better...

 Share Tweet This

BottomFeeder

More encoding fun

April 28, 2004 12:19:39.501

This is why I call it the dev stream. I added a check for the content-type into my http library the other day - the idea being that if the content type was application/*, then it should default to utf-8. They key there is default - it should assume utf-8 only if nothing else was specified. However, that's not how I wrote the code... I was checking the content-type first, instead of at the end if the encoding had not been found. That was a dumb error, and made for a lot of bad text coming through. Fortunately, that only impacted the dev stream, and I've just fixed it - if you follow the dev stream, just grab the latest Http-Access and BottomFeeder components via the upgrade tool.

 Share Tweet This

outsourcing

It's the assumptions....

April 28, 2004 20:56:36.701

The New York Times has an article on outsourcing in today's edition. It's interesting because it takes a mostly negative view of the issue from a technology standpoint. However, most of the problems with outsourcing flow from a fairly old problem in software development - ironically enough, it's well stated in this defense of outsourcing:

In the future international division of labor, Mr. Pradhan said, the production of the technology will be done in places like India, which can deliver it reliably at a low cost. What cannot be sent to India, he said, is the invention of new business processes and technologies.

Conceiving inventory-management software that helps a retailer make the best use of electronic product tags, for example, might be something best done by system designers in the United States working closely with the retailer. Once such a system and its tasks have been mapped out, though, the software code could be written by programmers in India.

And boom, we've fallen into a management rahole and we can't get up. The rathole? Thinking that we can specify the software, throw the requirements over the wall, and then get something useful back later. This doesn't work well at all, and it doesn't matter whether the requirements are tossed over the wall to the local IT group or over the wall to Bangalore - the problem is the assumption that such a process can work. We have decades of experience with this kind of thinking, and anyone who's been paying the least bit of attention has noticed that it doesn't work well. I think I'll be wary of any project I hear of that comes from these guys - where Mr. Pradhan is a Senior VP. if they are promoting rocket scientists like that to senior VP slots, the very last thing they should be allowed near is important software systems...

That's hardly the only problem. Back in tech bubble of the late 90's, a lot of big companies brought in armies of consultants to help them build systems. The thinking seemed to be that the entire problem was that the consultants from (insert large consulting firm here) were too expensive. Guess what - that wasn't what the problem was. The problem was actually a lot simpler - these firms were farming out work to a horde of people they didn't know, but who were sold to them as experts. Did they understand the business domain? Typically not. Did they know the actual user base? Typically not. So now what are these same firms doing? Farming work out to a horde of people they don't know, but who are sold to them as (inexpensive) experts.

There's a saying that Insanity is doing the same thing over again, but expecting different results. Well, here are a bunch of large firms, doing exactly the same thing they did in the 90's - sure, it will cost less - but the results are looking to be about the same. It shouldn't be a surprise - the issues are all the same, only now there are additional issues of language and cultural barriers (not to mention time zone!) to boot. Expecting different results is just... stupid. Outsourcing software jobs is going to go about as well as hiring the expensive folks from (insert large consulting firm here) did. The only question is how the failures will get spun this time

 Share Tweet This

smalltalk

Smalltalk advantage

April 29, 2004 8:38:16.325

There's an interesting Smalltalk debate referenced here - if you read Swedish. The summary is what I found interesting:

My column on the Smalltalk heritage on IDG has spawned a small debate about "industry languages" such as Java and C# compared to more dynamic, "cutting edge" languages like Smalltalk and Python. My take on the debate is that if you want to get stuff done togheter with other developers that may not be on the same level as you, C# and Java will get you there with the lowest amount of risk. For single-developer projects, or for small projects that everyone involved are really bright, Python and similarly dynamic languages (including Smalltalk, Lisp/Scheme, and even Perl) can get you there faster, while allowing you to have more fun along the way.

I know what he means about risk - but keep in mind that training developers in Smalltalk is fairly easy - it's not a complex language. I'd love to read this stuff, but Babelfish doesn't offer a "from Swedish" option....

 Share Tweet This

smalltalk

New Mac Smalltalk out

April 29, 2004 9:15:01.918

remember this post from StS 2003? Well, the Ambrai guys just announced a public beta release:

Ambrai Smalltalk Beta Release
Ottawa, Canada - April 28, 2004

Ambrai Inc. is pleased to announce the beta release of Ambrai Smalltalk, a new Smalltalk development environment for Mac OS X.

Ambrai Smalltalk features a complete suite of native development tools that tightly integrate with the Mac OS Desktop. Currently these tools include package, class, category browsers, debugger, inspectors, and workspaces. Ambrai Smalltalk can be used to deploy Mac OS standard or console applications.

"We aim to deliver a rapid application development platform suitable to create new or script existing Mac OS applications. Whether you are a seasoned programmer or have never written a single line of Smalltalk code, we hope you will consider Ambrai Smalltalk for your next project." - Ambrai Smalltalk Development Team.

Founded in 2003, Ambrai Inc. is a privately held company based in Ottawa, Canada. Please visit http://www.ambrai.com to find more details and to download Ambrai Smalltalk.

One more reason to come to Smalltalk Solutions - you'll see the future before it arrives!

 Share Tweet This

StS

StS approaching

April 29, 2004 11:25:18.760

Smalltalk Solutions is rapidly approaching, and there's still time to register for the show! What will you miss if you don't come?

There's a lot of great stuff packed into three short days. See you there!

 Share Tweet This

itNews

The "Sun is doomed" meme spreads

April 30, 2004 8:36:35.534

ABC News to Sun: Drop Dead. This summarizes their take pretty well:

It is no longer enough to blame the high-tech recession for all of Sun's blues; other companies - including some even worse hit, like Yahoo! and Cisco - are making strong comebacks.

Sun is not coming back. It is a giant company without a business.

That's pretty much been my take - they spent too much time fighting the wrong war (Microsoft), and too much money on a software business (Java) with minimal revenues. The deal with MS was a desperation move, not a masterstroke. Here's an email I just got from someone (this story was pointed out to me in email):

BTW, we have more than 1000 Linux blades in the business. Nobody here talks about upgrading expensive Sun boxes anymore.

That's not the only company I know of making that kind of call. Heck, our engineering group is looking at a new file server. The old one was a Sun box, and it's not looking likely that we'll replace it with a Sun box. It's a huge problem for Sun, and I don't see an answer for them...

 Share Tweet This

blog

Word and permanence

April 30, 2004 9:26:44.079

Chris Pratley talks about blogging - and in the process of talking about Word, hits on something relevant to any blogger:

A couple of people have asked about the permanence of electronic information and access to it in the future if it is in Word format. Microsoft takes this very seriously. That's one of the reasons we make the format documentation available to governments and other institutions, so that there is no concern that they will not have the ability to access the information at a later date. Personally, I find this whole discussion a little bit overwrought though. If it is access to the content of a Word doc that is a concern, just about any word processor available today can import Word documents sufficiently that you can access their content. You don 19t need a Microsoft product for that.

I've talked about this before - anything you write on a blog should be considered permanent. There have been somewhat embarrassing disclosures of old draft information found in word documents - but that's nothing compared to the permanence of what goes on a blog. Ultimately, you just can't delete your content. Why not? Well, your content got cached all over the place:

  • Feedster
  • BlogDigger
  • Google
  • Gosh knows how many client aggregators

I fully expect to see political campaigns using this as oppo research in a few years - imagine the 45 year old candidate for some office being called on stuff he wrote on a blog 20 years back - still available through some kind of search service. It's not going to affect only politics, either - employers are already doing google searches for references when a person is being considered for a job - a blog is the ultimate paper trail. Compared to that, Word documents are ephemeral....

 Share Tweet This

rss

Return of the killer RSS

April 30, 2004 10:09:42.779

This story seems to recycle every few months in a "the sky is falling, the sky is falling!" sort of fashion:

Already, aggregators have swamped some sites, slowing Web servers and eating up expensive bandwidth, according to bloggers and other Web publishers. The end may be near, unless something changes soon, said Gary Lawrence Murphy, whose Linux blog, TeledyN, has been overloaded.

There's an answer to this, and it's called conditional-get. Browsers implement it, and it's not hard to implement in an aggregator - I added it to BottomFeeder over a year ago. I'd be curious to know which aggregators don't implement this, and why. This does lead me into another area along the same bandwidth related lines though:

The Atom guys have been (and still are) seriously considering the addition of binary data blocks to Atom feeds (music, images, video, etc). That's a nice sounding idea until you combine it with the way HTTP works. Say I add a 3 MB video file to my feed. Smart aggregators that use conditional-get will only get that data once - until the feed is updated again, that is. The problem is, there's no way to get a partial document using HTTP. That means that large attachments to a feed will be fetched every time a feed is changed. If you have a rarely updated feed, that may not be a problem. If it's a blog that's updated regularly, it's a problem.

The funny thing is, this exact problem is addressed by RSS Enclosures - by providing a reference to that sort of data, and allowing the client aggregator to grab the data in any way it chooses - some kind of background process, a simple link for the user to follow, whatever. That's the right way to do this, IMHO - the proposed Atom support is just a bad, bad idea in the context of HTTP.

 Share Tweet This

StS

StS 2004 - almost here

April 30, 2004 11:43:07.083

StS 2004 starts Monday - there's still time to sign up and get there. I'll be arriving late on Sunday - so I likely won't see anyone until then (unless there are some nightowls in the hotel bar on Sunday). It's going to be a great show - I look forward to seeing everyone there.

 Share Tweet This

rss

Another RSS Hack

April 30, 2004 11:58:05.556

Internally, some of the non-Smalltalk groups at Cincom are using SharePoint (we use Wikis in the ST group). SharePoint seems like a natural for exporting RSS, and there's a free part for doing just that. There's a problem though - it generates odd RSS. It defines a namespace like this:

xmlns:rss="http://purl.org/rss/1.0/"

That namespace is the default namespace for the document, and none of the elements are in that namespace - which makes them invisible to BottomFeeder, which sees feeds from that tool as RSS 2.0. Never fear though - I added a handler specifically for SharePoint that expects this slight deviation and handles it. So if you use SharePoint, you can export RSS and have BottomFeeder pick up the results. There are a few commercial (i.e., paid) solutions for this as well; I have no idea what kind of RSS they pump out.

 Share Tweet This

humor

Be afraid...

April 30, 2004 17:25:15.120

Somewhere out there, Michael Lucas-Smith is on the highway - trying to remember to stay on the right side :)

 Share Tweet This

itNews

I only thought I'd heard everything

May 1, 2004 12:18:06.768

I was wrong. Tim Bray points to a - wait for it - HTTP over SOAP implementation. I'm thinking idle hands....

 Share Tweet This

rss

Back to the future

May 1, 2004 12:26:01.963

Via Ben Hammersley I found this specification for yet another syndication format. While I understand what's being done here (and it certainly looks simple enough) - it looks a lot like a more highly specified RSS with slightly different tag names. I think I'll wait this out and see if anyone pays attention....

 Share Tweet This

marketing

Software and advertising

May 1, 2004 12:30:16.662

Scoble is showing that the ad budget at Microsoft is being wasted on the marketing department. I agree with him about that MS Office campaign - the people who came up with that should all be fired as a lesson to the rest of the field :)

 Share Tweet This

cst

News: VW and OST Goodie submitters

May 1, 2004 13:04:25.894

Attention goodie submitters:

If you've got code that we are distributing as a goodie, we really need any updates you have ASAP! We are getting close to the VW 7.2.1 and OST 6.9.1 releases, and need to get this closed out. Please see:

http://www.parcplace.net/goodies.html

 Share Tweet This

general

Patents

May 1, 2004 22:38:34.782

Chris Pratley makes some good points about the patent system. Well worth reading

 Share Tweet This

StS

StS 2004 beckons

May 2, 2004 11:27:04.166

I'll be off for Smalltalk Solutions in a few hours - I won't be getting to the hotel until after midnight (any night owls up for a drink?) My slides are actually done - you can have a look at them here. Should be a great show.

 Share Tweet This

humor

Product ROI explained

May 2, 2004 12:42:07.862

 Share Tweet This

xml

Falling for the hype

May 2, 2004 22:04:59.626

This week, InfoWorld has a cover story on XML and how well the 4 major databases (DB/2, Sybase, Oracle, and SQL Server) handle it. The part I'm commenting on is in the introductory paragraph:

If you could do one thing to improve integration and automate processes with customers and business partners, it would be to implement XML, which has become the standard for exchanging information between disparate systems because it is easily transformed into any format.

Sure it is. Assuming you know what kind of schema the document is using. Simple example - say you picked up an old version of BottomFeeder and were confronted with an Atom document. heck, suppose you had version 3.1 (version 3.4 is the most recent) and wanted to deal with an Atom 0.3 document? That rev of Bf had not dealt with 0.3 yet, and the 0.2 handlers did not display information from 0.3 documents correctly. Sure, you could translate an 0.3 doc back into an o.2 doc - but would you have any idea that you should?

XML is a data format. It's no better or worse than any other format, and it's certainly not magic pixie dust - and yet publications like InfoWorld continue to present it as some kind of magic interoperability balm, ready to smooth away all problems. It's not - if you don't know what kind of doc you are getting, you aren't likely to be able to deal with it intelligently - whether it's human readable or not. XSLT assumes that you have the semantic knowledge handy to a do a transform - the simple presence of angle brackets does not grant that semantic knowledge. Here's a nice example of the magic pixie dust thinking that pervades the XML world:

For example, querying on a patient ID number in a relational database may allow you to quickly find the dates a certain patient visited the hospital, the conditions he was diagnsed with, and the treatments he was given. But it likely won't help you determine which treatments were provided for which conditions, or what times the treatments took place, nor will it give other useful information that XML versions of these records could provide

Say what? has this guy never heard of foreign keys and joins? Sure, they can get messy for complex data retrievals - but they are hardly impossible. Reporting systems are being built to handle these sorts of issues all the time. And XML records would magically solve the problem? I'd really like to know how. Apprently, applying XML will make it easy for me to solve every software integration problem I have.

The most amusing part of this is the complete lack of historical awareness. Hierarchical databases were the storage solution until the 80's. At that point, the RDBMS started to become supreme - primarily due to the large amounts of flexibility in changing the organization of data - and the greater ease in creating ad-hoc queries. What's an XML database? It's a "back to the future" kind of move, that's what. There's nothing new here except the realization that hierarchical storage of data has merits in some domains. It's no end-all be-all - if it were, the old hierarchical databases never would have gone by the boards.

 Share Tweet This

itNews

Media mis-reporting - again

May 2, 2004 22:09:19.719

In an SDTimes article, Andrew Binstock shows that minimal research is just beyond him. He's correct about the uptake of XP in IT shops - it's not a commonly used methodology. A lot of this is cultural - management likes paper trails, and the popular RUP guarantees lots of it. That's not the rathole Binstock runs down though - in talking about XP, he says this

Second, XP was embarrassed by the cancellation of the C3 project at Chrysler. This project was the poster child for XP. It was begun in 1996 with the mission of getting Chrysler's payroll off its mainframes in time for Y2K. Kent Beck, the father of XP, was brought in , and he implemented XP and made the project a showcase of the new methodology. Alas, Chrysler cancelled C3 in February 2000. The deadline had been missed, and the mainframes were still cranking at full tilt to handle Chrysler's payroll. With Beck running the show, there is no wiggle room for asserting that XP wasn't done correctly.

I guess Binstock's a busy guy - because he clearly didn't contact any of the people associated with that project. I've spoken to many of them, at different times and in different places. The C3 project went down for the same reasons that most IT projects go down - politics. I'm sure that SDTimes provides internet access for the staff - Binstock could have googled the email addresses (or even hunted around the C2 Wiki a little) and found this explanation of the issues. I guess it was easier to throw rocks at something he doesn't like though - facts would just get in the way...

 Share Tweet This

management

Blogs for execs

May 3, 2004 3:57:05.918

Scoble gets this wrong, I think. he points to this article which states that blogs are too permanent for executives. Scoble says that's hogwash, but I think he's wrong - at least for execs in publically held companies. Look at all of the Sarbanes-Oxley (and related) rules that have come down the pike - it's gotten to the point where a C level exec in a public company has to be very, very careful with his public statements. I can definitely see a lawyer advising an exec against making off the cuff statements in public...

 Share Tweet This

cst

Debugging running processes

May 3, 2004 3:57:25.463

The PDP has been part of VisualWorks since the 7.0 release, but there are still things about it that not everyone understands. In VW, prior to the PDP, it took a halt in code to jump into the debugger - now, of course, you use breakpoints or watchpoints. That's pretty well known now - but being able to debug any arbitrary process in the system isn't so well known. Here's what you do:

  • From the launcher, pull down the Debug menu (or hit ctrl-y)
  • Select Process Monitor
  • Select a process
  • Pull the Process menu, and you can debug (or inspect, or terminate, etc) the process.

It's a simple thing - but very helpful in an application that's running multiple processes (like, say, a server). I've made use of this facility in the development of BottomFeeder and the blog server.

 Share Tweet This

StS2004

At the show

May 3, 2004 9:36:51.394

Well, I'm up for the first day - a little groggy, but up. I have to get to a meeting of all the Cincom folks at 7:30 AM (grrr - that's coffee time!) - but then it's off to the talks. It looks like we won't have net access during the show - the hotel wanted absurd amounts of money for that. I'll be taking notes and pushing stuff up when I can though.

 Share Tweet This

StS2004

SRP at StS 2004

May 3, 2004 13:32:22.092

SRP talk by Paul Baumann. Why SRP instead of XML? Simple - do we want text editors or object inspectors? Text is easier for people, but harder for computers.

Binary Encoding issues:

  • Limited portability of basic data types
  • Fixed Width, hard to migrate

XML Encoding

  • High portability of basic data types
  • No fixed width issues
  • reformatted data can still be parsed

SRP

  • High portability of basic data types
  • Simple parsing rules applied to a stream of unsigned integers in a range from 0 to infinity
  • Object State can be loaded regardless of schema/behavior changes

Traditional binary encodings offer good performance but are brittle. XML addresses this, but at the cost of performance. SRP tries to offer both. Has been ported to all major dialects, and works on them from a single code base. Managed from a single Smalltalk image in one dialect, exported out. The modules:

  • PlbStateReplicationProtocol
    • The core
  • SrpPortableObjects
    • Dialect specificity
  • SUnit tests

So on to the demo - from Dolphin Smalltalk. The code is being loaded into a clean Dolphin image - nothing up his sleeve :) There are various configurations possible (and creating new ones requires only that you specify the encoding) - so you can do Base64, etc. So what has he done - from Dolphin, loaded a complex object (a class) from disk - the class did not exist in the Dolphin image. Then he dropped it back out, quit Dolphin, and fired up VA. Now we are looking at the portability layer - he's made sure that all class extension methods are named (with an srp prefix) such that collisions are unlikely. Interesting - he came up with his own placeholder concept instead of using #become:, as it's slow in some dialects (VA, for example). Placeholders are really just domain specific become-like behavior. Now, loaded the complex object saved from Dolphin, and there it is.

Questions
What are the applications of this technology?
Being used by a few people, have not been many releases of it

Why use this instead of BOSS?
With BOSS, you write directly to a stream - if the behavior of your objects changes, might break. Also uses #perform:, which makes it potentially fragile. SRP doesn't execute anything based on what you've loaded. Each dialect does have it's own tool for this - some are faster than SRP, some are slower. SRP is more space efficient than most. The main objectives are space efficiency and portability.

Blocks?
There's VA support not ported. Should be easy enough

What about shape changes?
First thought - loader for handling that. Current rev supports version info stored along with it (BOSS does that, and supports schema migration...)

SRP is open source under the Mozilla license.

This could be useful for people contemlating a migration from one Smalltalk to another - especially if they are using a dialect specific way to save objects to disk - by using SRP, those legacy objects on disk could be pushed across the divide. For that matter, it might well be useful in upgrades (for instance, from VW 3 or earlier to VW 7.x) - where changes in the dialect between versions causes problems with the legacy objects on disk.

 Share Tweet This

StS2004

Cryptography in VW

May 3, 2004 13:32:53.164

Martin Kobetic on cryptography in VW. Why use cryptography? All the basics - confidentiality, integrity, authentication, etc. Basic definition - Combine plain with some algorithm to produce the cipher, which can then be reversed to get the plain back. What all encryption algorithms are attempting to approach is the security of one time pads.

Symmetric Key ciphers
Bulk data encryption - built to be fast. There are two basic types - stream and block ciphers. What's a stream cipher? A time varying transformation on individual digits. Examples are Pike, A5, RC4, SEAL. RC4 is one of the most popular. In this kind of system key re-use is catastrophic - it allows any attacker to break your cipher easily. What you need is a (close to) random key stream generator. Nifty - as a demo, he selected a portion of the slide and encrypted it using RC4 (the presenter is a VW app). Wow - encrypted two parts of the slide with the same key, then overlaid them and XOR'd them - you get two plaintexts over each other.

RC4
heavily used in web interactions (fast). It's the leaked trade secret of RSA. Much, much faster than Blowfish.

Block Ciphers
Fixed transform on blocks (64, 128 bits, for example). DES, IDEA are examples. DES is the best known of these - now 20 years old (even though initial life span estimate was 5 years). Triple DES is still approved, single is legacy - too easy to break. One of the things to keep in mind - you have to encrypt a multiple of the block size as input (you use padding). Don't use the simplest method (splitting text into proper size blocks). His demo onscreen ended up with a readable block that had a color overlay. There are various block modes that should be used instead. His demo here ended up with a nicely opaque block of the screen. There are block modes implemented as polymorphic wrappers in the VW library. Again, key reuse is catastrophic!

Other supported - AES (DES replacement), Blowfish)

Public Key Ciphers
Public and private keys. Hard to compute private from the public. Tend to be slower than Symmetric ciphers. Used in Digital signatures - RSA, DSA are examples.

Hash Functions
Unlimited input size -- goes to gixed output size. Often used for "data fingerprinting" and validation. We implement MD5 and SHA. MD5 is very common

  • One way
  • Collision resistant

Message Authentication
Usually use a Message Authentication Code (MAC) - a hash function with a secret key. Hash a key, hash the data, concatenate the results, hash again (HTTP Digest Authentication is a variation on this).

Digital Signatures
Reverse application of a public key cipher. RSA, DSA used for this.

  • Signing
    • Hash the plaintext
    • encrypt the digest with private key
  • Verifying
    • hash plaintext
    • decrypt with public key
    • validate

Diffie-Hellman
Allows you to safely pass data across an unprotected channel. The two sides negotiate in public, and then establish a secure channel.

Question: do we have what's required to support Open PGP?
Answer - not yet, although there is some code in the Public Store. Basically, the expected file formats would need to be supported
Question: Obsolete - are there found weaknesses, or faster hardware?
Answer - Both
Question: When do you expect to write your interactive book on this subject? It's better than any other explanation I've seen
Answer - This is the first presentation of this since martin started working on this. It's a lot of work - no answer :)

Question: Why did we do this natively in VW?
Answer - wanted a native SSL implementation (X-Plat)

Lots more stuff - Martin had more material than time.

 Share Tweet This

StS2004

Avi Bryant - Winning the App Server Arms Race

May 3, 2004 15:02:27.436

The first keynote - Avi Bryant on Seaside and redefining web development - using the strengths of Smalltalk.

First thing to address - why bother? Web apps are really clumsy things - they aren't easy to write, and they aren't easy for people to use (limited widget sets, HTTP for interaction, etc). Oh god - I've been quoted:

I'm more of the mind that HTML based app suck
James Robertson

Applets haven't worked out - users had already figured out the "mental model" of the web - website feel, hrefs, back buttons. So while Java applets have mostly failed, Java has succeeded wildly on the server side. Meaning - server apps are a "second chance". Paul Graham and his web store (sold to Yahoo) is a great example of that. Why did he use Lisp? "Because he could" - on the server, no one knows if you're a Lisp app. The image based nature of this made it possible to do things that simply cannot be done in (Java, .NET, etc).

So why should we, as the Smalltalk community - care about web development? Because there's an "unfair" advantage on the client side. On the web, none of the issues (native widgets, platform integration, etc) matter. Instead, you can leverage Smalltalk's strengths directly. Writing web apps is hard - Smalltalk makes it easier.

To start - short history of web apps:

A collection of functions that take HTTP requests as input and produce HTTP responses as output

This is a lot like shell commands and pipes, actually. The basic problem is that HTTP (and thus web apps) are stateless. This works fine for simple applications. Any moderately complex application does, in fact , have state. Simple E-Commerce example - shopping cart, get billing/payment info, verify with the user, process, ship. Lots of state here. How dooes that state stick around? It gets shuttled back and forth from client to server (hidden fields, cookies, url arguments, whatever). A lot of code gets written to deal with this state passing issue. It's hard to generalize this too - it varies too much by application and domain.

So now we get into session management - when you first start an application in the browser, you start a session. When you quit (or timeout), you leave the session. You need to pass the session id back and forth so that the server knows which session you are coming from. So why is this a problem? You pass new data back to the server, and the id - and the server manages the rest.

Why global session id is evil
You start with (Expedia, say) - and spawn a new window to look at options, use the back button, etc. You stay in the same session. You have to be very careful to go back to the right place or you get the wrong result. I can vouch for that - many, many server apps don't deal with the back button at all well. WebObjects did this a little differently - it gave out instance based id's (not global) - this ends the confusion as to "where am I?" What's the problem here? Coupling. This still gives you rigidity in the ordering. It's just a repeat of the mainframe green screen issue - you get forms in the order you get them, and changing the order requires a massive change to the entire system.

Seaside is to most other Smalltalk web toolkits as Smalltalk is to most other OO languages; it's as simple as that.
Cees de Groot

The thing that gets hairy here is conditional flow. How do we move from one part of the application to another outside the standard procedural flow of a web app? One possibility is a set of blocks, one for each possible step. We just ask each block to evaluate itself as appropriate.

checkoutProcess
	^ShippingAddress new next:
		[:ship |
		BillingAddress new next:
			[:bill |
			paymentInfo nnew next:
				: [:bill |
				ConfirmationPage new
					shippingAddress: ship;
					billingAddress: bill;
					paymentInfo: pay;
					yourself]]]

This is sort of continuation style - you pass blocks in, and changing the order can be done in one place, and one place only. Still too rigid.

checkoutProcess 
	|pay ship bill |
	pay := self call: PaymentInfo new.
	ship := self call: ShippingAddress new.
	bill := self call: BillingAddress new.
	self call:
		(ConfirmationPage new
			shippingAddress: ship;
			billingAddress: nill;
			paymentinfo: pay).

The idea? What if execution were "frozen" at each step? This is much easier to write, and makes the execution order much easier to see (and change). In a sense, what we've done is return to a "line oriented" screen application that "waits for input" - which is how end users expect to interact with web browsers. The user can use the back button and rewind the application (as you can in a Smalltalk debugger). This really extends the power of Smalltalk from the developer to the end user in a way that allows for natural interaction by the end user. The context stack is being copied and preserved on each submission. Based on some questions, Avi demonstrated following both possible paths down a web app by cloning a browser page and executing both paths. Now, you can protect against that in cases where it's necessary - there's a way to isolate calls - you'll get redirected to the right place.

self isolate: [self call: PaymentInfo new]

Question: What about the cost? The contexts that are being kept around are expoired (configurable) - generally, only the last N are kept around. The bottom line is, Seaside is memory intensive and trades memory for performance and ease of use - not to mention time to deliver.
Question: What about session identity in a multi-server environment? that's already an issue, and is typically handled by pinning a user to a given server (this is how most load balancers deal with this). Question: Temporary vars get saved on the stack - what about other stuff? There's a general mechanism for objects that need to be backtracked (a shallow registry of objects that need to be rolled back). You can customize this to handle whatever needs to be held for rolling back. So you want to roll back UI state, generally not domain state Question: Any issues with multiple sessions trampling on state? That's an application issue. You still need to be aware that you are writing a server application...

So Avi shows us the implementation of a Continuation. In Smalltalk, a Continuation is 10 or so lines of code. It's pretty simple code - you serialize the stack and save it off. Invoking a continuation is a matter of terminating the current context and then restoring the one in question - and then swap the sender out. Question - the context termination will not call the #ensure blocks. This is a thing you need to deal with - make sure that an #ensure does not go across multiple continuations. The interaction of #ensure: and Continuations is not a solved problem. Lisp has exactly the same issues.

Question: could you use a "prevlayer" type approach to serializing stuff out for failover? Yes, but you need to be careful - continuations contain compiled methods, etc. Could be done, but could be complex.

General laugh - with 15 minutes remaining, Avi is moving on to the second half of the presentation. Many good questions in this session. So now on to rendering HTML.

Web heresies - the ID (opaque) in the URL. Another one here - generating the HTML with code (however - the Naked Objects movement wants the same thing). I suspect that the problem is simpler on the web. There's an answer that works better - you have the framework generate simple HTML, and then have CSS render it in a nicer way - this still achieves a separation of presentation and domain. So you do have templates - CSS

Where has this been ported?

  • Squeak - main development
  • VW (public Store)
  • Dolphin - not recent, but possible
  • VAST and Smalltalk/X - not possible, as you cannot copy the stack.

Doc - attend the tutorial :) There is an active mailing list. There's also Avi's blog

 Share Tweet This

StS2004

CSS and XML in Smalltalk

May 3, 2004 17:46:39.465

The web devolution:

  • The culture of the status quo
  • Web Tech immature in many areas
  • Yet to see mature, convincing XML solutions
  • Lack of rich interaction with XML at the client
    • Poor non-technical XML editors

Where are we? Enterprise apps are becoming browser based. XML is everywhere, web svcs are here to stay (ed. - adoption is still slow though). SOA is emerging - IBM is focusing WebSphere on this. Few client side solutions - most are on the server.

We are "stuck" with browsers. Inferior scripting languages, black box development. Mozilla is huge - bloated. Browsers are designed for read-only viewing, and only deliver a low quality experience to the end user. Usability and productivity are low - everything requires the page/submit mode. Great Forrester slide showing evolution fo applications from mainframe to client/server - and back down the scale for web apps.

What rich UI options are there?

  • Flash based UI
  • Java Applets
  • ActiveX
  • Mozilla (XUL)
  • IE behaviors

Or WithStyle. All Smalltalk objects, XML direct to the UI, completely open and flexible. The inspiration for this? Twoflower browser from Holger. It has a small code base and is open. Is solving a simpler problem (HTML4, no CSS).

Analysts:
"The Web cripples usability. Executable internet technologies will help companies return responsiveness and productivity to Net based apps"
And more like this - the basic message - we need network applications that aren't brain dead. We need the best of both worlds. Nifty - the presentation is XML/CSS presented in WithStyle.

Rich internet apps

  • Desktop app capabilities
  • Client side power
  • Rich UI possibilities

Advantages - more responsive and productive than browser based apps, but with the reach of an internet application. Workflow is simpler, as the state is on the client. No bulk submit for refresh, makes for faster response times. Allows for offline work, P2P, etc. Smalltalk is the perfect choice for all this. WithStyle has been a little more than 12 months with 2 and change people. What's the opportunity? A fresh slate for reinventing the browser paradigm, designed for applications. Makes it possible to make Smalltalk more mainstream. All of the session/state issues go away.

And now a demo from Michael. He's introducing the WebUI from WithStyle. Rich internet app, completely open to extension. Styling with CSS is only a start - integrating with Pollock, XForms, advanced widgets. One goal - complete GUI UI's that are skinnable with CSS. Why CSS? It's a powerful layout language influenced by traditional publishing. Separates presentation/content. For an example of this - see CSS ZenGarden. What examples? An example web browser, development tools, an XML editor, and an XML powerpoint replacement (being used in this talk). For all this:

  • Developer program starting soon - sign up at the show (NDA)
  • Nightly releases began 20 February 2004

What does the example browser support? Charsets, scripting, XML Events, better layout and CSS support, XML Schema, DXML (DHTML), XSLT, Basic Tables, Basic Embedded Widgets, Editing, moving to Pollock, thin client. Over 600 tests, 5200 methods with around 35k code. Now the demo - he's showing off WithStyle showing http://www.w3.org. Next, CSS ZenGarden. Well, we got the typical demo MNU there :) Now on to editing. The XML editor is a WYSIWYG editor - very impressive. Next demo - creating a slide presentation directly - add a class, add some xml and html in methods - and we can launch it. This part you really had to be here for - it's all demo code being written on the fly. Very cool demos.

 Share Tweet This

StS2004

Smalltalk and XML on the Web

May 3, 2004 18:27:37.149

XML On the web - where it's going. He's talking about his company, Wizard Information Services. Located in Canberra, Australia, started with VisualAge Smalltalk - has been doing so for 7 years. They were sold on Smalltalk originally by IBM, but all the IBM people now push Java. What did they start with?

WizDom

  • Core Framework
  • Object Oriented
  • Pattern Oriented
  • "Naked" Business Objects

Mavis

  • Merged Audio/Visual Information System. Major customers:
    • Library of Congress
    • AMPAS (Oscars)
    • Bundesarchiv
    • National Library of Norway
    • Screensound Australia

MetaWizDom

  • Content mgmt and bsuiness transaction system
  • Running over 35 websites for Australian govt entities

MetaGrants

  • Govt grants mgmt system
  • 2 customers - Brisbane City council, ACT government

All Communities Online

  • online communities - like Ezboard, but govt/community oriented
    • Make simple pages online
    • publish events
    • Categorized
  • Used by ACT government - over 1000 community groups

Goals

  • Web Enable all applications
  • X-enable every application
  • Interfaces to and from external systems
  • Expose "naked" business objects using trusted APIs

General Goals

  • CRUD apps (plus search)
  • Achieve "browser based" UIs as well as traditional GUIs
  • Reuse "web" technology
  • Open

Architecure

Here we have a picture - client tier - WithStyle. Middle Tier - VW and VA apps. Why HTTP and XML? Well understood, everyone has it, XML can be dealt with regardless of implementation language used by others. Easy to read and debug by a developer. XSLT? Lots of knowledge in house (Wizard). Well supported by Cocoon and WithStyle. SOAP? industry buzzword. Works better than XML-RPC, well supported by VW and VA. Most developers at Wizard prefer HTTP and a "REST" interface. Apache Cocoon? It's the web publishing framework they use. Based around XML. Supports HTTP, XSLT, and SOAP. Something well done in Java. WithStyle - written in Smalltalk (VW). Can talk XML to the server rather than HTTP. Richly supports HTTP, XSLT, SOAP, REST, and Smalltalk. Great UI experience.

Database to Objects? Using Toplink (VA). Moving to GLORP. Almost enough information in their descriptors (business level) to generate an XML Schema. Downside - XML Schema does not map well to Smalltalk OO designs. Very large and cumbersome. Is barely machine usable - don't want any actual people looking at it :) SOAP doesn't equire it - industry wants it. They generate it, since it's such a PITA. They use the descriptors from their db layer to do so. Basically, use the "meta" information for one transform (object to db) for another (object to xml). Good thing - VW and VA both have SOAP frameworks. They have business objects already - they translate SOAP into Smalltalk using XSLT. Quote:

It's not as disgusting as it sounds

ST Server - take request, translate into a SOAP request. Turn SOAP into Smalltalk. Execute the Smalltalk. Cocoon deals with the ST server for back end services. Validates user id and passwd via the ST server. All requests to the ST server ae done with the session ID and the user ID. HTML Forms? Template XSLT for making forms, ST Server transforms the HTML form value pairs into a SOAP request, which then goes through the normal execution path.

Ahh, a demo. He's got Cocoon running in the background, a VW server, and a VA server. Going to the Smalltalk server directly yields an XML doc. Going via Cocoon round trips to the ST server, uses Cocoon to apply XSLT to it and display a web form. Some nifty stuff in the demos, again.

 Share Tweet This

StS2004

Can software development go on in the developed world?

May 3, 2004 19:50:18.304

Georg Heeg discusses the idea - can we keep doing high value development in the West? Why are people looking at offshoring?

  • Cheaper

What are the disadvantages? Typically, need to be very specific with your specs. Run the risk of having high skilled people (who can afford high value goods) be unemployed. Georg relates the experience of the textile industry in Germany in the 60's - the work moved further offshore, with production in Germany moving "upscale" - higher quality, luxury goods stayed, while lower quality commodity goods went. How does this translate to software?

  • Need to develop and adapt software very efficiently
  • Need to remain customer oriented

Software industry in Germany lost 80k positions (10 percent) in the last year. Those jobs will not be back - they are commodity jobs that left permanently. We need to create new jobs to replace the lost ones. What does that mean - don't work at the low level - think like an end user. The amusing thing? These next slides are actually old - Georg used them to introduce OO to developers as far back as 15-20 years ago. In other words - the values we have been preaching in the Smalltalk community are the ones that developers need to stay in business.

History - Smalltalk-72 at Xerox PARC. The goal? To create the DynaBook (finally starting to get close with PDA's and Tablets). Then Smalltalk-80. First published in Byte Magazine in 1981. This is the technical base of VisualWorks (and Squeak) - in fact, everything that continuations make possible was invented in this system - and the supposed "modern" systems (Java, C#) - still can't do it. Commercialized at PP in the late 80's, Large projects started in the early 90's, IBM got in the game, many Smalltalk books appeared. Then Java appeared and PPS made many bad choices. In 1996-1999 - many of these large projects went into production - and most end users liked what they got. Cincom took over VW and stabilized VW and OST. Starting in 2003, things started to turn around. New Smalltalk users, a change in the business (.NET), new Smalltalk books are being published. Alan Kay received a few awards, C'T magazine (Germany) started a Smalltalk series, sold 380,000 copies.

"Smalltalk is a modeling language" (Adele Goldberg). There's a lot of FUD pushed out about Smalltalk - "The farmer will not eat what he does not know about". Now, Smalltalk is different. However, you won't stand above the competition merely by "keeping up with the Joneses". To "get" Smalltalk you have to unlearn a lot of the baggage from other languages - it's "too simple". Smalltalk enables things like Seaside - the productivity is just higher. So is software development still feasible in the developed world? Yes, but only if you move up the productivity food chain. Finishes with an invitation - to ESUG in Germany.

 Share Tweet This

movies

LoTR DVD news

May 3, 2004 20:26:41.001

I just got an email with this information on "The Return of the King" DVD. Theatrical DVD - May 25. Extended Edition - Christmas...

 Share Tweet This

StS2004

Oracle to Gemstone/S

May 3, 2004 20:43:41.821

Joe Bacanskas talks about WAMU's experience moving an application from an Oracle back end to a Gemstone/S back end. WAMU got their first ST app (Loan origination) deployed in 1996. very successful, gave them a big advantage. That got Smalltalk approved to build a huge new framework - VisualBanker. The bank has 25,000 deployed Smalltalk clients. The bank grew by absorbing other banks, and got a large number of departmental apps - they needed to replace these with standard apps - and these have been Smalltalk front ends to Oracle. The application Joe is going to talk about is a Fraud prevention and loss management system - with about 200 users, built around 1999. VAST front end, Oracle back end. The application had several problems - the users generated the requests to improve this application, and a decision was made to move from Oracle to Gemstone:

  • Cost of changes was high
  • Cost of consultants needed to change the application was high
  • The application was slow

Technical drivers?

  • Application was brittle
  • Application was buggy
  • Application was hard to change

The recommendations came from a team of three developers who looked at the problem. The first recommended Gemstone instead of a persistence framework. The second developer used TDD, and had a high reputation within the bank. The third developer was in charge of overall design - "Domain objects should not have behavior" that was his mantra. This led to multiple layers of Mega objects that actually defined the behaviors that the domain objects should have held (led to complexity). This same developer did not like named instance variables - so most of the core domain objects were implemented using Dictionaries. The application was designed to be an N-tier application using SST (IBM's server layer in VA). This was to happen on a WAN using 4mb token ring..... It became clear that a distributed application was not going to perform. A 2 month death march landed all the server code into a really fat client.

The users eventually demanded a performant, better working application. Joe was eventually asked, and he recommended a port to Gemstone/S. He eventually got hired in to do just that. What did they have to do?

  • Client
    • Application server interface management
    • Domain object change management - made somewhat more complex by the tie (at the far back) to an Oracle based Data Warehouse as the repository "of record". Used Gemstone code to push that stuff
    • Reporting
  • Oracle
    • Behavior removal
    • Client connection reduction

What was hard?

  • Team did not share a common understanding of
    • How the application worked before
    • How to build proper interactions with Gemstone
    • How Gemstone actually works

Scary statement by one of the developers just getting into Gemstone? "It doesn't work that way? But it should work that way!"

How much data? There were 60 million rows of data in Oracle - needed to move that to Gemstone and make real objects. The fastes load time was 4 1/2 days, but the maximal window size was 3 days. That was using a gigabit connection with nothing else happening on the machines in question... It took a lot longer than anticipated. Lots of battles over technical design. The long and short of it was - it didn't work. They ended up taking a subset of the data from Oracle into Gemstone. They built failover to go fetch (un-archive) data from Oracle to Gemstone on demand. Of course, the old version was being changed as the new version was being developed. There were the typical bugs in the new application, those were (eventually) found and fixed. The team had to work around a major GS bug in indexing - required late redesign, which resulted in a business function slipping the first release.

Now the good stuff :)

  • Development/Deployment is much faster
    • Changes take weeks instead of months
    • Emergency fixes can be applied to the server in real time
  • Application performance is much better
    • Every aspect of the application is faster
    • Processes now run on the server in 1/10th the time
  • Server side behavior
    • Business rules are being concentrated
    • Change is extremely simple and straightforward
  • Simplicity
    • O/R mapping mostly gone
    • New functionality simplified
  • Where is the application going?
    • Lots more automation
    • Hundreds of new users (projected)
    • Web interface (projected)
    • Additional domains to be added (projected)

The main thing - The end users are happier

Question: Why can't you use an off the shelf system for this? - it's a unique system, nothing like it to be bought
Question: What are you still using Oracle for? - Don't want all the old (legacy) data to make the move from Oracle to GS. Reporting is solved by having Oracle.
Question: What will you do when you cross the 1 billion OOP mark in GS? - Actively archiving. 64 bit db would solve this for them... There are other solutions (multiple db's, etc).

 Share Tweet This
-->