Tenth Annual Tcl/Tk Conference

Organized by Clif Flynt see https://www.tcl-lang.org/community/tcl2003/ for details.

Occurred July 28 - Aug 2, 2003.

Tcl2003 Conference Papers

Jason Brazile, Peter Kohler and Simon Hefti : A Software Architecture for In-Flight Acquisition and Offline Scientific Post-Processing of Large Volume Hyperspectral Data
The European Space Agency is sponsoring APEX (Airborne Prism EXperiment), a dual prism dispersion pushbroom imaging spectrometer designed for earth observation applications. APEX acquires 1000 pixels across track with up to 300 spectral bands simultaneously between 400 and 2500 nm wavelengths. This paper discusses the design and implementation of software architectures for both in-flight data acquisition and offline level 1 scientific data processing, based largely on the extensible and embeddable features of Tcl scripting language. The architecture enables rapid prototyping, hardware simulation and control, automated testing, and modularization of proprietary software components, while meeting strict performance requirements for handling data flows exceeding 50MB/s.

Steve Cassidy : CANTCL: A Package Repository for Tcl
CANTCL defines a standard web-based interface to a coordinated Tcl package repository and provides a reference implementation. Building on TIP55, which defines package structure and metadata format, CANTCL implements a URI-based API for downloading packages, browsing and searching by metadata, and uploading new packages via HTTP. The system supports multiple archive formats through tclVFS and enables automatic package installation by leveraging the well-defined directory structure specified in TIP55. This paper describes implementation details and explores potential applications that could be built on CANTCL's capabilities.

Moses DeJong : Scripted Debugging: Using Tcl and GDB to debug C code
This paper describes a Tcl scripting interface to the gdb debugger that makes it possible to debug problems that would be difficult or impossible to address using command-line or graphical debuggers. The GDBMI package automates interaction with gdb using the Machine Interface, opening a pipe to a gdb process and sending commands while interpreting results. Examples demonstrate tracking resource allocation and deallocation, setting breakpoints with Tcl callbacks, querying program state, and visualizing complex debugging scenarios. The scripted approach enables automation, introspection, and visualization capabilities not available in traditional debugging tools.

William H. Duquette : Data Definition and Code Generation in Tcl
This paper discusses using Tcl-formatted data definition files processed at compile time instead of runtime-loaded text tables. The pattern has been applied throughout development of JPL's Deep Space Network Uplink Tracking and Command subsystem. Data defining hardware nature and capabilities is placed in definition files which are read by tools that produce HTML documentation and C code for inclusion in the subsystem library. By processing definition files at compile time, syntax errors are caught early, generated code and documentation are guaranteed consistent per the DRY principle, and hardware definitions become available to every application with minimal runtime overhead. The file format leverages Tcl's interpreter for parsing while remaining clear and easy to edit.

Clif Flynt : Validator: An Agent-based Firewall Validation Application
Validator is an agent-based application for testing and validating firewall configurations. The paper describes how Tcl is used to generalize firewall tests, implement the software architecture, and handle configuration data and files. The system demonstrates Tcl's strengths in network programming, event-driven architecture, and rapid development while avoiding code duplication through careful design. Implementation details cover data propagation, configuration management, and the use of Tcl for creating a flexible testing framework for network security validation.

Andreas Kupries : (doc)Tools for a New Generation of Tcl Package Documentation
As part of work on ActiveTcl and Tcl Dev Kit distributions, a new documentation system for Tcl packages was invented to generate nroff, HTML, and CHM documentation. The system defines three formats: doctools for manpages, doctoc for tables of contents, and docidx for keyword indices. Inspired by LaTeX's metaphor of text interspersed with markup commands, the formats are lightweight compared to XML-based alternatives like TMML, making them easier to process in pure Tcl and easier to edit without special tools. The paper describes the formats, the plugin interface for generating output, advanced features like automatic index creation, current limitations, and ideas for future evolution.

Mark Roseman : Using Starkits for Easy Deployment of Server Applications
Advances in consumer technology are leading to demand for network server applications run by less technically inclined users, making ease of deployment critical. While the Starkit framework makes Tcl deployment easier in general, it can be enhanced specifically for server applications. Using CourseForum and ProjectForum as examples, this paper explores issues such as reducing dependencies, installation and configuration, starting and stopping, and various platform-specific concerns on Windows and Mac OS X. The techniques described show that in this important application niche, Tcl based on Starkits provides a strong deployment advantage over traditional server application architectures that require complex multi-step installations.

Ping Tong, Daniel Lyakovetsky and Sergey Polyakov : MQSeries Enabled Tcl Application
As enterprise integration becomes central to IT development, message-oriented middleware like MQSeries plays a critical role in connecting discrete components. This paper discusses MQTCL, a Tcl extension library that bridges Tcl applications with MQSeries middleware. MQTCL enables Tcl applications to communicate with applications written in various languages (C/C++, Java, COBOL) running on different platforms (Windows, Unix, Mainframe) using various network protocols. The architecture consists of two major modules: MQTCL Wrapper and QAdapter, which provide messaging and transaction management, session management, configuration management, tracing facility, and error handling. Combined with MQSeries' cross-platform capabilities, Tcl becomes even more powerful for multiple platform integration.

Chi-Wei Wang, Derek B. Gottlieb, Jeffrey J. Cook and Nicholas P. Carter : AmalGUI: A User Interface for a Clustered Programmable-Reconfigurable Processor Simulator
AmalGUI is a Tcl/Tk graphical front-end for AmalSim, the Amalgam architecture simulator. Amalgam is a clustered programmable-reconfigurable processor that integrates multiple memory, programmable, and reconfigurable units on a single chip. As processor architectures become increasingly complex, simulators must output more information efficiently and concisely. AmalGUI's multiple-window interface provides an effective method of presenting simulator output, showing how Tcl/Tk can create graphical interfaces for processor architecture simulators. The tool helps researchers track numerous processor states across distributed execution on multiple independent clusters, presenting complex state information as both text and graphical representations.

lv For those of us unable to be present, I hope someone takes on the recorder role and lets us know what is going on. - RS: Yes, please...

DKF I'll pop on some notes on as I make them...

CF I put an overview of the conference at Tcl'2003.

MR I've posted some photos at http://www.markroseman.com/tcl/conf2003.html

AK: My conference travelog now at AK at the Tenth Annual Tcl/Tk Conference.

AK: And my photos are at http://purl.org/net/akupries/conf/tcl2003/tcl2003.html


MC Tue 29 July: The hotel apparently had a T1 from January through sometime in June of this year, when it was removed. The hotel has DSL, but the ISP is AOL. Currently we're using Burrow (written in Tcl, naturally) running on the Windows desktop of one of the hotel employees to tunnel out over port 80 to an HTTP proxy and irc (for the Tcler's chat) and SSH (currently to a Linux box I have, and to a machine stevel has--more mappings available upon request, and with an SSH connection you should be able to route just about anything over it, under *nix at least). We also have port 25 going to an outbound SMTP server for those that need that.

At the conference, configure your browser to use 192.168.1.100 port 80 as a proxy.

Update: as of Tuesday evening there are now two aggregated idal-up modems providing bandwidth and the proxy isn't needed.


MC Wed 30 July: Each of the tutorials has been progressively more attended. I attended Ken Jones's Tk tutorial and his thread extension tutorial, along with Clif Flynt's C extension tutorial, and stevel's MetaKit and OOMK tutorial. All were excellent. This evening about 20 of us went to a local pizza place, "The Cottage Inn", for dinner. The food was great, and the conversation good. The Poll: Argument Expansion Syntax naturally came up in conversation...

AK: Six of us got lost and ended up at "The Brown Jug" instead. They there ok too. And yes, argument expansion was one of the topics too.


AP It would be nice if there were actual video recordings, of the conference, for sale.

lv I would find it surprising if there were, as that tends to be a pricey conference feature and this year the goal was to keep prices to a minimum.

CF I videotaped several sessions on Friday and Satdy, limited by breaking the video camera, and not getting things arranged promptly. Given too much time I have this vision for "Tcl/Tk: The Movie". We also did audio recordings of most sessions. I don't know the quality of any of these (yet).

Mac Cody: Any possibiliy that the audio recordings could be digitized, converted to MP3s, and posted for those who could not attend?

AK: The Linux.au folks used Speex instead of MP3's. This is a codec geared towards speech encoding and lives under the Ogg umbrella.

CF 8/4: I scanned one of the audio tapes yesterday, and it appears that the recordings are good enough to digitize. I think Gramofile is the best digitizer for this, but it seems best supported on debian, so I'm building a debian system to do the conversions. I'm trying to think of a painless way to merge the digitized audio and powerpoint/gif/html slides (a snack application, perhaps) to distribute.

Mac Cody: In the head-long rush to use the latest Linux audio-gadget, please try to ascribe to the KISS philosophy. I don't want to spend as much time setting up my Linux box to listen to the audio files as actually listening to the audio files! This is why I suggested MP3 format. It is probably the most usable format for the greatest number of platforms without too much fuss to access. I can also burn a CD-R with MP3 files and listen to them on my Rio Volt player while I commute to work. :) As I think about it, it would also be "a good thing" to have access to the presentation slides to view while listening to the audio files. Are they going to be made available?

sheila 8/6: KIS is good, but the app he chooses to encode the tapes with won't affect which app you must choose to listen to them with, right? If he encodes them in ogg format (and there are ogg players for many platforms), someone could convert them to mp3 as well for people who have trouble finding an ogg client (it would be cool if my rio could play oggs, but it can't).

Mac Cody: Well, I've never heard of Speex until CF mentioned it above. I try to keep up on what apps are out there for Linux, but there is so much happening now-a-days that it is becoming difficult. That, in itself, is actually an exciting thing to say about Linux!


MR Sat 2 Aug: A big theme at this conference was the sad state of Tk, having fallen behind most everything else in terms of a decent look&feel, lack of modern widgets, etc. Larry McVoy kicked that discussion off in his keynote and helped to reinforce it throughout the rest of the conference. Larry came away a bit happier, realizing that people have found ways to work around their problems (e.g. Brian Griffin's work), but he and everyone else recognized how important it is to take this whole thing a lot further, and have things work right by default. It's been a long time since the traditional one-line "Hello World" in Tk actually did the right thing (IMHO).

There was some general agreement about working out both a longer term roadmap for serious updating of Tk, which might well include many non-backwards compatible changes (so for Tcl/Tk 9 timeframe), as well as other shorter term steps along the way. Better defaults, bringing in more widgets into the core distribution, making it easier to contribute, etc. were all things that came out of the discussion. I hope we can keep some momentum behind this. Larry's offered to kick in some money and other resources, so I hope we can leverage that to help move things forward and bring some new energy into Tk.

DKF Mon 4 Aug: Just pointing out that there was a consensus among the TCT members who were there that Tk does need work and that answering the points Larry raised was a good way forward. And that we could easily create an experimental branch to do this sort of work (perhaps using BitKeeper for the revision control software, since that will interoperate with CVS) and then fold that stuff back into mainline Tk as-and-when the formal parts of the process are done. Getting a TIP through is much easier when there is concrete, in-style code already to play with.

What Larry asked for (and I think these are good ideas):

  • a tabbed notebook widget
  • a table widget
  • a tree widget
  • a properties dialog
  • a default L&F on Windows that was more like Windows (with Win2k being a perfectly acceptable target)

There was also discussion of matters relating to snazzing up Tk in general (to attract the K3WLD00DZ for long enough for them to realise that Tk really is good) and also rebranding of Tk.

Check out http://tcl.projectforum.com/tk/ for the work going on relating to this Tk emphasis. Apparently there is also http://noucorp.com/mailman/listinfo/tk-nextgen .


See also Tcl'2003.