Noumena Corporation

Whitmore Lake

Noumena has presented many papers over the years at conferences ranging from FOSDEM to the Tcl/Tk Conference to Rubicon.

These are some of the presented papers and whitepapers we've written.

Thread Speed Enhancement
The Tcl interpreter is constantly being modified and improved. Improvements include new features and performance boosts. Everyone wants to use the latest releases with the newest improvements, but corporate users with large code bases may not be able to do this. Reworking an extremely large code base can take longer than the interval between Tcl releases. These users may need a change to be back-ported to the version of Tcl that they are using. A Tcl release includes many changes and identifying the modification that caused a particular performance boost isn't always simple, particularly if the performance boost of interest was a side-effect of other improvements. This paper describes the discovery of a thread-performance issue in Tcl 8.4 which was fixed in 8.5, a semi-automated technique for tracking down the code modification that improved the performance, and a discussion back-porting the improvement.


An application that includes a database always requires a set of pages to edit the contents of the database. The bulk of the edit pages are simple and easy to write. Even with Tk's ease in constructing simple data-entry pagespages, writing a dozen procedures takes time that could be spent on the more interesting parts of a project. The goal of the EditTables package is to provide a set of good enough pages with no effort on the part of the programmer, better pages with a bit of effort, and a framework for building the fully featured pages an end user will demand. The implementation uses TclOO for a base class with mixins to provide customized behavior for particular database engines. The test engines are sqlite3 and TDBC.


Mail Filter
Handling email has become a greater and greater burden on the average computer user. The user must be able to read mail safely, including examining the non-obvious fake mail. There is a need to sort valid from invalid, urgent and non-critical, or just sorting into mail from mailing lists, friends, relatives, etc. This problem is worse for the systems administrator who also has to deal with the quantities of mail clogging the networks, filling the disks and filling the administrator mailbox with failure notices. There are many tools to mitigate these problems, ranging from using a webmail service like Gmail, letting Microsoft solve your problems by using Outlook, or using *ix tools like procmail, etc. All of these tools are written in compiled languages. The speed is good, but the ability to reconfigure and adapt is low. Tools written in Tcl are as fast as the average user, and are more easily adapted to the ever-changing email environment.


Hybrid Architecture Paradigms
Architectures for Cross Platform Application Development


Rapid Product Development
The LORACIS Remote Monitoring software was developed for the clinical trials industry to allow the rapid verification of reported data from human studies while markedly reducing unproductive time and travel expenses. The successful completion of this unique and complex software was achieved in just eleven months due to our selection of Tcl as the programming language. TM



Beowulf Task Distribution
Running faster has been the holy grail of computing since the days of the abacus. The first thing a programmer hears after "does it work" is "can you make it run faster?" In the early days of computing, the best way to make a program run faster was to find a better algorithm or optimize the commands. After some 50 years of study, most of the better algorithms have been discovered and put into well optimized libraries. The next way to make an application run faster is to split it into smaller applications and run them on multiple processors. Modern CPU chips do this to some extent and modern Graphics Processing Units do it to a greater extent. Problems that can be optimized for parallel computing range from finegrained applications in which the behavior of one thread is influenced by the computations of other threads to coarse-grained application sets that are totally separated from each other. Fine-grained applications in which one thread influences another require tools like PVM (Parallel Virtual Machines) or CPS (Concurrent Processing System), specialized hardware with high-speed interprocess communication (often shared memory) and generally involve instrumenting the code or writing a special application to perform the processing. In medium and coarse grained applications the behavior of one processing thread does not influence the behavior of other threads. These problems are much more approachable with simple hardware and relatively trivial care in the architecture of the processing applications. Examples of medium-grain parallel tasks might be performing image processing in a set of strips and then reassembling the strips into a complete image, or generating a mandelbrot set as a collection of areas that are then assembled into a mandelbrot image. These individual tasks may run at different speeds depending on the resource used and the complexity of the task. When all of the data is available, a final result can be created.


TclTutor is a Computer Aided Instruction application for learning the Tcl programming language. This paper discusses the application's development and some of the technical details, along with lesson's learned and potential future work.