StS

Smalltalk Solutions - get your hotel room now!

March 22, 2004 15:58:09.616

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!

 Share Tweet This

blog

Dohh - category searches

March 22, 2004 14:42:55.784

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 :)

 Share Tweet This

travel

Back on the Road

March 22, 2004 9:07:47.007

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.

 Share Tweet This

StS

Avi Bryant on RDBMS mapping

March 22, 2004 9:02:55.439

Register for StS 2004 so you can hear Avi Bryant discuss Object/Relational mapping:

Making relational data first class
presentation
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:

  • 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.
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.

And don't miss Avi's keynote on Seaside!. See you in Seattle!

 Share Tweet This

general

Software and profits

March 21, 2004 21:41:49.827

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 :)

 Share Tweet This

blog

Blog Update

March 21, 2004 11:06:44.736

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.

 Share Tweet This

development

Skills gap?

March 21, 2004 8:58:22.387

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!

 Share Tweet This

StS

RDBMS to OODBMS at StS 2004

March 21, 2004 8:46:58.854

Come to StS 2004 and hear Joseph Bacanskas talk about a migration to Gemstone - from Oracle:

Replacing Oracle with GemStone/S: The Agony and the Ecstacy
presentation
Joseph Bacanskas:
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!

 Share Tweet This

StS

FastCGI, Apache and Smalltalk at StS

March 20, 2004 16:23:42.009

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
presentation
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!

 Share Tweet This

smalltalk

Deployment Tool

March 20, 2004 12:27:58.699

I mentioned yesterday that I was working on a simple deployment tool for VisualWorks. Well, I've just posted it to the Public Store - the package is called Deployment. Here's a short description:

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:

  1. 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.
  2. 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
  3. 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

 Share Tweet This

smalltalk

Comparing Sources

March 20, 2004 11:25:50.185

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:

  1. Connect to Store
  2. Load the version you want to compare
  3. 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).

  1. Open a ChangeList tool
  2. Read Sources from the chunk file exported from Squeak
  3. On the Remove menu, Same Code as System and Same Source as System
  4. 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...

 Share Tweet This

smalltalk

Making deployment easier

March 19, 2004 20:12:29.042

I saw a complaint about how hard it is to deploy a Smalltalk (VisualWorks) application earlier today (in email). Now, engineering is working on this problem - the goal is to produce a runtime environment for VW that makes deployment straightforward. In the meantime, however, it's still harder than it needs to be. For WebToolkit apps, Alan has made it pretty simple - there's a simple set of options under the "web" menu once you load Web Toolkit. What about GUI apps? Well, I've been working on a simple tool for that today. I'll push it to the public Store once I'm done testing it - it should be as close to "press a button and deploy" as you can get. There will be two steps:

  • Seal the image (saves a sealed image, with a starting class/method specified)
  • Create a Windows executable, ready to deploy

The first step (borrowing heavily from Alan's approach) wraps the Runtime Packager, taking the simplest way through. If you actually understand RTP, you'll want to do it the hard way. The second step simply wraps the image compression and executable creation steps (Windows only) that are not as easy to find as they should be. I'll post on this again once I push the tool out

 Share Tweet This

law

How to lose friends an influence people

March 19, 2004 15:51:21.707

d2r has an interesting post up. Apparently, a post made last year by this blogger has attracted legal attention - the post in question disparaged the educational credentials of this well known personality. This is fascinating. What we have here is a transient post from months ago (which a google search doesn't immediately turn up) - but the serving of papers is likely to generate a small avalanche of "isn't this absurd" posts from all over. You would think that famous people would be somewhat clued in to the dangers of publicizing things that could backfire, but I guess not. Negative marketing lives on....

 Share Tweet This

general

How to tell your ear for music is off

March 19, 2004 10:18:55.932

I've had an older set of stereo equipment in my office for a few years now. I had been thinking that there was a problem with it; one channel was always playing much softer than the other. Then today I was looking at the controls - I was seeing if I could receive AM stations on it (turns out I need an antenna). That was when I noticed something interesting. There's a mono/stereo button on the front panel of the system, and it's been set to mono (who knows for how long). After pushing that to "stereo", suddenly I had the other channel. So much for any thought that I had a discerning ear for music :)

 Share Tweet This

marketing

Do you know what marketing is up to?

March 19, 2004 8:36:35.621

It looks like some marketing departments can't be left without adult supervision. While this is a rather extreme "marketing gone wrong" event, it just goes to show that marketing messages are too important to be left solely to marketing....

 Share Tweet This

spam

Spam and the filters - the agony and the agony...

March 18, 2004 17:24:19.762

I upgraded to Eudora 6 awhile back, and I've been mostly happy with it. The spam filtering seemed mostly good as well, until recently - when I started noticing that scads of good mail was being junked. I spent the last week or so fishing things out of the junk folder, until it finally dawned on me that maybe there were settings for this. Lo and behold, there is.

It turns out that Eudora assigns a "spam ranking" to each incoming mail - a number between 0 and 100. There's an option to set the minimum ranking before having something get junked, and that was unset. I'm hoping that setting that will result in fewer lost messages.

 Share Tweet This

development

Productivity and Cost

March 18, 2004 11:07:35.169

One of the interesting things to me is how many people will say things like "Yes, Smalltalk is more productive, but...". The next thing you'll get is some statement about how hard it is to find Smalltalkers, or about how the syntax is wrong (what, developers can't learn a new language?). You'll get the same complaints about any niche language - Lisp, Ruby, Python, Scheme - they all get tarred with the same brush.

Heck, the major analyst groups are particularly bad about this - Gartner will admit that Smalltalk is more productive (i.e., will deliver results faster at a lower cost) - and then tell you to use Java or C#. It's always high school in the hallowed halls of Gartner, and all that matters is being close to the "popular" crowd. When you look at the data from SPR (I'm getting the actual tables from SPR; they charge for them now) - you can see hard data backing this up. The tragedy is, this is old news.

Need a more recent example of the productivity? Have a look at all the excitement surrounding continuation based web applications - and then note that none of that is happening in C# or Java (there's some in JavaScript). Why is that? Well, Java and C# - i.e., the mainstream so valued by the analysts - simply doesn't support it. If you want to have a chance of finding the next big thing, you can't find it in the mainstream. If you want a chance to find something truly innovative, you have to be willing to look elsewhere....

 Share Tweet This

StS

StS 2004 - Outsource, or InSource?

March 18, 2004 10:09:38.311

Georg heeg will discuss outsourcing and whether or not software development is financially feasible in the developed world - in this session at StS 2004. Register today so you can participate in this timely discussion

Is Software Development in Developed Countries still affordable?
presentation
Georg Heeg: George Heeg eK
Monday 4:00:00 pm to 4:45:00 pm

Abstract: This is political/technical talk about alternatives to outsourcing.

Bio: 50 years old, founder of Georg Heeg eK, Germany oldest Smalltalk enterprise

See you in Seattle!

 Share Tweet This

general

Wiki Markup is good

March 18, 2004 9:59:27.573

Charles Miller defends Wiki style markup for wikis:

Sure, you end up with something that's significantly less powerful than HTML. This is a feature. A wiki page isn't a place for complicated markup, it's for writing stuff down. The more power you put in the markup language, the more people are going to be wanking around with the precise arrangement of angle-brackets that will make their paragraphs step from left-to-right in pixel-perfect harmony in lieu of saying something.

I support the same style of markup in the Comment poster in BottomFeeder, and in the client-side posting tool for this blog. I'm going to add it to the web comment form as well, for the reasons outlined by Charles. Most people - techies included - don't want to use html markup....

 Share Tweet This

continuations

Continuation discussions

March 18, 2004 8:29:59.083

If Seaside and continuations are of interest to you, then you'll want to read the following items:

It's great to see a lively technical discussion on this stuff - and the general interest that is being stirred up by it

 Share Tweet This

BottomFeeder

Fonts in Bf too big or too small?

March 17, 2004 19:25:14.565

You can adjust the font scales globally in BottomFeeder in settings - the pane under "user interface". If you want to adjust the scale of the HTML pane only, the third toolbar button from the right (Glasses with a bi-directional red arrow) allows you to adjust the font scale just for the browser pane.

 Share Tweet This

general

This is a funny error

March 17, 2004 16:33:50.048

Danny Ayers was apparently noodling around in Smalltalk and came across the "NonBoolean receiver - proceed for truth" error. I remember when I first hit that one, many years ago - it baffled me. Even now, I usually do a double take on it :)

 Share Tweet This

development

Sense of Relevance

March 17, 2004 10:58:45.659

One of the interesting things you can see in software (probably anywhere) is the overly developed sense of importance many developers attach to themselves and their projects. Certainly we Smalltalkers are not immune to this; we often talk about Smalltalk as if it's the second coming or something :) There's a larger thing at work here though - it's touched on in this rant from the Bile Blog - and while the commentary there is a little rough, there's a good point hidden in all that anger - we often choose the complex over the simple for reasons that have nothing to so with the actual problem. Here's an example, related to me by a friend.

This guy has recently taken a new job - same kind of work he's always done, but with a different consulting outfit. During the initial process of looking at available projects, he's talking to someone about a job that involves getting data from a database, allowing users to interact with it, and possibly updating the database - you know, the standard CRUD thing. He asks what approach they are going to take, and is told that it'll use and EJB server, a big database, and a Java client - a three tier system. This is when my friend made the mistake of asking the following:

Question: How many users will this system have?
Answer: 10 at first, maybe 20 eventually
Question: Why not just use an Access front end to the database?
Answer: Heretic!

He says that the lead developer on that project distrusts anything he says now. Stop and think about that, and about the general problem - most of the systems we build are not big. Most of them need to scale to small numbers of users, and most of them are simple CRUD systems. What do many, many developers immediately do? Over complicate them. Suddenly, it's not such a surprise that the failure rates for software development jobs are so high - we tend to over estimate the importance of projects and over complicate them

Take this blog, for instance - I've had a few people ask me what database I use, and they are often horrified when I tell them that I don't use a database. Why should I? I save the data in serialized object files, with the date of the postings encoded in the file name (one file per day). It's easy to find posts that way (the GUID is also an encoded date), and the file system serves things up pretty darn fast. I can back all the content (and infrastructure) files for all the CST blogs in less than 3 MB using a shell script. All my data is still in object form; I didn't have to worry about any impedance mismatch between Smalltalk and an RDBMS (or about db architecture issues, about which I know very little). Sometimes, simple problems only need a simple solution

I've seen the same sorts of things in many shops over the years. I recall one large development project in particular, on which I and a few other Smalltalkers consulted back in the late 90's. At its peak, there were 170 or so Smalltalkers, and nearly double that working in Cobol on a mainframe. Over lunch, a few of us determined that the entire thing could have been done with 2 dozen or fewer people, and likely in a matter of months - but that wouldn't have helped the management there build their empires. Well after I left that project, I learned that large parts of it had been outsourced. No surprise there - years of game playing and complexity adding had to be paid for at some point.

What's my point? Well, next time someone starts waxing rhapsodic over the need to use a whole set of complex technologies to solve some problem, sit back and ask yourself just how complex the problem really is, and shed any prejudices you might have about the issues of client/server development - it's really not the case that all problems require a 3 tier solution...

 Share Tweet This

blog

blogs w/o RSS?

March 17, 2004 10:28:06.942

I just found out that there's a new blog search site around - BlogRunner. It seems similar to Feedster, but with one important difference - Feedster offers support for ad-hoc (search) feeds (as does BlogDigger, and BlogRunner doesn't. Limits its usefullness, to my mind. Not as bad as the hokey email registration scheme that pubsub uses, but heck - you would think a service that indexes blogs would grok the importance of syndication...

 Share Tweet This

StS

Open Skills at StS

March 17, 2004 9:35:24.388

Register for StS 2004 and hear Bruce badger talk about his Open Skills project:

The OpenSkills Skillsbase Project
experience report
Bruce Badger: OpenSkills
Monday 4:00:00 pm to 4:45:00 pm

Abstract: The OpenSkills SkillsBase is implemented using the Swazoo HTTP server running in GemStone, all hiding behind a Squid reverse proxy. Bruce will discuss the goals of OpenSkills, and how you can help out

See you in Seattle!

 Share Tweet This

rss

Re: 11 ways to valid RSS

March 16, 2004 15:10:53.275

Bob Congdon points to this post, which explains that there are 11 different ways of shipping content along with an RSS 2.0 feed. Now you know why we aggregator developers swear, a lot :). The tragedy is, Atom won't be any simpler, regardless of what kind of fantasy thinking the designers engage in....

 Share Tweet This

movies

Harry Potter via RSS

March 16, 2004 12:14:07.186

The HPANA Harry Potter site has a news feed. Now even my daughter will want to run BottomFeeder :)

 Share Tweet This

development

Still unclear on the concept

March 16, 2004 12:06:22.262

Bjarne Stroustrup discusses static and dynamic typing in an Artima interview:

In a dynamically typed language, you do an operation and basically hope the object is of the type where the operation makes some sense, otherwise you have to deal with the problem at runtime. Now, that may be a very good way to find out if your program works if you are sitting at a terminal debugging your code. There are nice quick response times, and if you do an operation that doesn't work, you find yourself in the debugger. That's fine. If you can find all the bugs, that's fine when it's just the programmer working 14but for a lot of real programs, you can't find all the bugs that way. If bugs show up when no programmer is present, then you have a problem. I've done a lot of work with programs that should run in places like telephone switches. In such environments, it's very important that unexpected things don't happen. The same is true in most embedded systems. In these environments, there's nobody who can understand what to do if a bug sends them into a debugger.

Hmm. I suppose Bjarne is unaware of the widespread usage of Erlang in those kinds of apps? I suppose further that he's unaware of Erlang's dynamic nature? Bear in mind, when he's talking about safety and static typing, he's talking about C++ - so his definition of safety is slightly at variance with mine....

 Share Tweet This

StS

Testing with FIT - StS 2004

March 16, 2004 10:25:40.824

Register for StS 2004 so that you can learn all about FIT from Dave Astels. Dave is a winner of one of this this year's Jolt awards for his new book, Test-Driven Development: A Practical Guide

The FIT testing framework
tutorial (extra cost applies)
Dave Astels: AdaptionSoft
Monday 2:00:00 pm to 5:30:00 pm

Abstract: FIT is the latest gift from Ward Cunningham (who was involved in the beginnings of CRC cards, design patterns, test-driven development, Extreme Programming, wiki, and assorted other important things... and a Smalltalk master to boot). FIT was designed to write customer acceptance tests. The idea is that anyone (including testers and even end users) can use FIT to write tests for the requirements before any amount of design or programming had begun, moving testers from an afterthought to an integral part of the development process.

This is possible because FIT allows you to separate the data related to a test from the code required to load the data into the system being tested. In other words, test data can be written separately from (and in a different language than) the code. Subsequently, that data is used to exercise the system and verify its behavior.

In FIT, the test data is represented as a table. Test data can range in complexity from simple rows of input and expected results to a sequence of actions and checks for testing a user interface.

While SUnit provides a framework and tools to test at the unit level, Fit provides the same for testing at a higher level: functional, system, acceptance, etc. This tutorial is hands-on, so please bring a laptop with either VisualWorks (7.1 or 7.2) or Squeak (3.6 or later) installed. It may be helpful to contact the speaker and get a copy of the FIT software to pre-install as well.

Bio: Dave has over 20 years of experience in the software field. For over 14 years he has been using object-oriented technologies almost exclusively (including Smalltalk, C , and Java).

Dave has been studying, practicing, teaching, evangelizing, and coaching XP and Agile Processes since 1998.

Dave co-authored "A Practical Guide to eXtreme Programming" (ISBN 0-13-067482-6) and authored "A Practical Guide to Test-driven Development" (ISBN 0-13-101649-0), both with Prentice Hall. He's recently written an article of Fit for "Better Software" magazine, which appeared this spring.

Dave is a founding partner at Adaption Software, Inc.. Adaption's offers a variety of OOAD, eXtreme Programming, and Test-driven Development related services, including training, mentoring, and outsourcing.

Dave attends, and speaks at, a variety of conferences including the XP conference in Europe, JAOO, SDWest, SD Best Practices, XPAU, Smalltalk Solutions, and OOPSLA.

Dave was largely responsible for the Smalltalk port of Fit.

His favourite quote:
Question: "Why are languages like C , C#, and Java so prevalent?"
Dave Ungar: "Why do people smoke tobacco?"

See you in Seattle!

 Share Tweet This

itNews

Re: Weblogs: the magazine killer?

March 16, 2004 9:48:57.302

Scoble links to this blog post which questions the viability of technical publications. I subscribe to a lot of tech journals - and truth be told, I like the paper versions. Sure, ComputerWorld, InfoWorld (et. al.) have online versions, where all of the content resides (heck, ComputerWorld uses a quicklink scheme to make it easy to find content you are reading about). Why do I like the printed versions? It's a whole lot easier to read with my lunch, or on a plane. There are still many places where I either cannot (no connectivity) or won't (not carrying my laptop) go online. I still like to read in many of those places though. I seriously doubt that printed content will go away - but it's going to have to make accomodations - as ComputerWorld has done.

 Share Tweet This

continuations

Discontinuations in Continuations

March 16, 2004 9:09:46.003

Charles Miller voices some concerns over Continuation based web frameworks. I don't know enough to have an answer, but I'm sure Avi will. Of course, this is exactly the kind of question that I'm sure Avi will address in his keynote - come to StS 2004 and hear it from the horse's mouth, so to speak :)

 Share Tweet This

rss

Finding Content

March 15, 2004 20:36:37.592

Roy Osherove lists some RSS impediments. His big ones:

  • Find out what RSS means
  • Find a news reader
  • Download and install it
  • Find sites that give out RSS feeds

He then goes on to say that the technology won't go anywhere until MS embraces it and integrates it with Outlook. I'm not that cynical. Clearly, you have to know what RSS is before you can be interested in it. There have been a number of recent articles in the trade press (and in the general press even) - so I think that one is getting easier. Download and install? Well, I can't speak for the other tools, although I'm led to believe that most are pretty easy. BottomFeeder installs easily for every supported platform except Mac OS 8/9 - I don't have a Mac, but would be able to fix that one with access to one. On other plats, Bf installation is a pretty simple deal.

The last one, finding content? Well, that can be an issue. That's why BottomFeeder ships with feed building Wizards for:

It also supports auto-discovery, faulting back to Syndic8.com when scanning a site doesn't turn anything up. Sure, finding authors you don't know about (yet) is hit or miss - but so is finding them via the browser. And regardless of what the rdf/semantic web folks seem to think, it'll stay that way, IMHO....

 Share Tweet This

StS

StS 2004 - Time to register!

March 15, 2004 16:13:46.547

It's Time to Register!

Early Registration for StS 2004 ends soon!

In just a few short weeks, beautiful Seattle, Washington will play host to Smalltalk Solutions 2004. From May 3-5, Seattle's Crowne Plaza Hotel will be known as "the place to be" for Smalltalk users, developers, and enthusiasts ... people just like you! Why not join us?

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. Keynote speakers will be offering insightful, dynamically charged presentations and you'll be treated to informative, in-depth, educational tutorials as well as discussions and information on future Smalltalk plans and directions.

O.K., you know about the conference, you've seen the posted agenda, and you've received information regarding our three exciting keynote speakers. All that's left to do is register!

Why not register right away? 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.

Hope to see you at Smalltalk Solutions 2004!

 Share Tweet This

rss

Re: Questions for Dave

March 15, 2004 10:51:33.624

Ben Hammersley asks Dave Winer a few questions about his RSS/Atom merger proposal:

"The format would differ from RSS 2.0 as little as possible" and "It would be backward compatible with RSS 2.0, so that any 2.0 feed could become an RSS/Atom feed by changing (fill in the blank, as little change as possible)."

What's the difference between this and saying that Atom should be abandoned? Currently, Atom documents are very different from RSS 2.0 documents, so adhering to these two points would basically mean leaving Atom completely, or do I have it wrong?

The question isn't wrong, but it does touch on something interesting at the technical level, which is this: there's little difference between Atom and RSS at the document level. The two formats convey exactly the same information, in exactly the same way. Atom simply changes the tag names, and adds in three (instead of one) date fields. Heck, in BottomFeeder I use the same exact domain objects for both kinds of feeds. That's the fun part of all of this - at the end of the day, Atom is effectively just another form of RSS

 Share Tweet This

smalltalk

There's nothing like source access

March 15, 2004 10:35:02.709

After my last post on adding Digest Authorization, I ran across this from the NewsGator guy, Greg Reinacker

We had a show-stopper bug in the .NET 1.1 framework, which would pretty much grind NewsGator to a halt on certain (fairly rare) configurations. This problem was costing us dearly, in a measurable way. Working with PSS, they issued a hotfix for the problem, which solved it nicely.

We then worked with Microsoft to get a limited redistribution license. The bottom line? We can distribute the fix to our customers who need it. It took a little paperwork, but it made sense for everyone.

Now, contrast that with a system where you get all the sources, and have the ability to modify them. VisualWorks isn't "Open Source" in the OSDL sense, but it's Open Source in the access sense - you have access to all the sources, and can modify them as you see fit. I've had similar show stopper bugs in VW (admittedly, as the Product Manager my access to the engineers is a little better :) ). I started building BottomFeeder in VisualWorks 7.0, and there were a number of issues back then - in some of the widgets and in the Http access libraries. I've been able to extend and enhance the libraries when I needed to, and shipped Bf with those fixes in. Sure, I updated the relevant engineers on what I was doing, and sent along my code as an example of how I was solving the problems. The nice thing is, none of this was dependent on my status as Product Manager. We have customers who create fixes and send us their code all the time. It's not always the case that their fix is what engineering considers to be the ultimate answer, but it gets the job done without their having to wait on our schedule.

That's the crucial piece - it's not always the case that you can afford to wait for the vendor to issue a fix - but if you pick the mainstream solutions, that's the hole you dig yourself into.

 Share Tweet This

BottomFeeder

Digest Authorization support

March 15, 2004 10:14:11.301

I've just added digest authorization support to BottomFeeder - this allows users to deal with protected feeds on LiveJournal. Grab the Http-Access update from the server, and you should be all set.

Adding this was made easier by Smalltalk. The basic Http libraries in VisualWorks do not handle digest authorization. All the support for Basic auth was in, but not for digest. Fortunately, I can extend those libraries in Smalltalk. Sure, it would have been simpler yet had the support been in the libraries, but face it - no matter what vendor and language you pick, you aren't going to find support for everything. VW supports most of what I needed in Http, and it was a fairly simple matter to extend the support to digest

The hardest part for me was reading the spec and following it - I'm not normally dealing with IETF specs, and I'm more of an application level developer than I am a framework/library developer. Fortunately, all of the code necessary to produce an md5 hash are already in VisualWorks - the basic code for creating what the spec wants looks like this:

stream := WriteStream on: String new.
stringToHash asByteArray md5Value printOn: stream base: 16.
hashString := stream contents.

Now, that's a mouthful to write everywhere I needed it (digest auth has you hash a bunch of stuff). So, I added a method to class String, so that I could just call it naturally:

md5Hash
	"answer a hexadecimal encoded hash"

	| stream |
	stream := WriteStream on: String new.
	self asByteArray md5Value printOn: stream base: 16.
	^stream contents asLowercase

Which allowed me to get the hash string easily, That's one of the niftiest things about Smalltalk, actually - the ability to toss extension code exactly where it belongs, which ends up empowering the developer later on - it's just that much less code to write downstream

In any event, Digest Authorization is now in Bf; enjoy! I'd like to thank Mark for providing a test site for me to hit (and a nice sample request!), and Michael Lucas-Smith for some useful tips when I was a little stuck

 Share Tweet This

StS

Seaside HowTo at StS 2004

March 15, 2004 8:40:22.195

There's been a lot of interest in Continuation based web frameworks lately - come to StS 2004 and hear how to use Seaside, the most mature of them. Seaside has been implemented for both Squeak and VisualWorks - this Tutorial will show you how to make it sing:

Seaside
tutorial (extra cost applies)
Julian Fitzell and Andrew Catton: UBC
Monday 2:00:00 pm to 5:30:00 pm

Abstract: Dijkstra may have taught us a half-century ago that GOTO was a bad idea, but web development has yet to catch up. Even modern frameworks, such as Struts and WebObjects, offer no alternative to the web's inherent GOTO: moving from one page to the next is still a plain one-way jump. This hands-on, half-day tutorial will show participants how to harness the Seaside framework to bring the power of subroutines to the web.

Seaside avoids the tangled and brittle mess of interdependent pages common to web applications by hiding the mechanics of the HTTP request/response loop. Each page or form acts much like a subroutine, returning a value to its caller based on user input. Complex workflows can be described by using existing conditional and looping constructs and "calling" other pages -- just as you would write any other application logic. The improvements this brings to web applications, in terms of reusability and maintainability, closely mimic the advances made by structured programming long ago.

Seaside sports callback-based form widgets (no manual request processing), transparent embedding of pages or even whole applications, and a library of prebuilt components. It also provides a complete web-based development environment, with code browsers, inspectors, debuggers, and profilers, all implemented using Seaside itself.

Along with coverage of framework basics, special attention will be given to three topics:

  • writing cleanly reusable pages and components;
  • separating page logic (how an individual interaction works) from application logic (how interactions are strung together to form workflows); and
  • proper management and support of the all-important browser back button.

Participants should bring a laptop or be prepared to pair up.

Bio: Julian Fitzell is one of the lead developers of Seaside and an active contributor to the Squeak Smalltalk community.

Andrew Catton is a longtime Seaside user and contributor.

Both are located in Vancouver and use Seaside in their development roles in the Agile Projects Group at The University of British Columbia.

See you in Seattle!

 Share Tweet This
-->