New Projects for
        Birmingham University


"Triever"—A Pop-up Search Program

The aim of this project is to re-implement Triever, an innovative and popular program written by Martin Green in 1994. (Unfortunately Triever’s source code is not available to Blueberry.)

Triever was a program designed to replace "bloat-ware" databases for simple applications. It was a local search engine that worked on simple, comma-separated variable (CSV) text files, and allowed users to perform incremental, fuzzy searches and see the results in sub-second times. The program was memory-resident and popped up when a hot-key was pressed.

Although the Triever concept may seem very simple, the project raises some interesting questions:

  • What really makes a program usable? How long does a program’s load time need to be before users prefer to use a piece of paper? Triever was very fast and instantly available.
  • How fuzzy should searching be? Current SQL databases have very limited support for fuzzy searching, so the appropriateness of various possible fuzzy search strategies needs to be investigated from scratch.
  • How should data be stored in memory for fast, incremental, fuzzy searches? Triever used sophisticated algorithms to operate directly on compressed data.

Triever was very useful for searching dictionaries, catalogues, address books, on-line computer manuals, etc.


Edinburgh Fringe Scheduling Program (Two Projects)

The objective of this project is to produce an interactive web site or a stand-alone GUI program to help a user plan a trip to the Edinburgh Fringe.

The Fringe is a collection of hundreds of shows, performed at over a hundred venues throughout Edinburgh, sometimes at different times on different nights. How does a visitor devise a schedule to see as many of his favourite shows in a given number of nights whilst minimising walking between venues—using only a printed catalogue and a street map? This is quite a challenge without a computer system!

There are several approaches to this problem—here are two possible projects:

  • A web site could help a user search an online catalogue for shows he definitely wants to see, shows he’d quite like to see, etc. Then the site server could apply complex algorithms to compute several possible schedules, and present them to the user with the best ones first. (Such a web site would be a good example of the "second generation" web sites that Blueberry is interested in developing—it would be a front end to some useful and powerful software on the server.)
  • A GUI program could allow a user to experiment with possible schedules, perhaps by dragging coloured blocks representing shows around a grid representing a diary. The program could assist further by highlighting chosen shows whose times overlap, even taking into account the distance between their venues.

A computer system that solves this problem could also be applicable to many similar scheduling problems.


Windows "Path" Editor

This is a simple project to create a Windows utility that allows the user to review, change and make use of the current "path" settings. The program should:

  • Allow editing of "user" and "system" paths
  • Allow path order to be rearranged quickly
  • Allow paths to be converted between 8.3 and long filename format
  • Support searching for files in directories in the path
  • Remove duplicate directories from the path
  • Detect invalid directories in the path
  • Run under Windows 2000, NT, and 98 (a Windows 98 version will probably need to parse the autoexec.bat file)

A more sophisticated project would be to integrate this utility into Windows Explorer.


Network Clipboard

The Windows clipboard allows the user of a PC to copy information from one application to another by pressing a "copy" hot-key in one application and a "paste" hot-key in another. Imagine a network-wide clipboard that allowed users to copy information from one PC to another, by pressing the usual Windows "copy" hot-key on one PC and then pressing a special "paste from Network Clipboard" hot-key on another. This would be a very useful utility for a group of programmers working together in one room, or for a systems administrator with several PCs on one desk.

The project is to design and implement a network clipboard utility.

The simplest version might work as follows:

  • Two programmers, A and B, each install and run a copy of the network clipboard utility on their PCs.
  • Suppose that A finds an interesting web site: he copies its URL to his Windows clipboard in the usual way, and calls across the room to tell B.
  • If B wants to look at the web site, he opens his internet browser and presses the "paste from network clipboard" hot-key.
  • The two copies of the network clipboard utility communicate to copy the URL from the Windows clipboard on A’s PC into memory on B’s PC.
  • B’s copy of the network clipboard utility inserts the URL into B’s browser.

A more useful version would support more than two users, like this:

  • Three programmers, C, D, and E, each install and run a copy of the network clipboard utility on their PCs.
  • Suppose that C finds an interesting web site and copies its URL to his Windows clipboard, and then later D copies some lines of source code on his PC to his Windows clipboard.
  • If E wants to look at the web site, he opens his internet browser and presses the "paste from network clipboard" hot-key.
  • E’s copy of the network clipboard utility communicates with C’s and D’s to copy the URL from C’s Windows clipboard and the lines of source code from D’s Windows clipboard into memory on his PC.
  • A window pops up on E’s machine, showing the URL and the lines of source code, and taking the focus from E’s browser.
  • On this occasion, E selects the URL rather than the lines of source code, perhaps by pressing a key or clicking on it.
  • The window that popped up disappears, restoring the focus to E’s browser.
  • When E presses the "paste from network clipboard" hot-key again his copy of the network clipboard utility inserts the URL into his browser.

Even more sophisticated versions of the utility could display the contents of all the Windows clipboards in time order: the most recently copied item could be the default choice to be pasted. Or the copies of the utility on each machine could each store several copied items, that could all be copied between the PCs on the network.

The utility will probably use TCP/IP to communicate between PCs, and C++ to interface to the Windows clipboard.


Python/VCL Interface

Python is a relatively new scripting language that is cross-platform and object oriented. It has support for GUI forms through TCL/Tk. However, on the Windows platform, Borland’s Visual Component Library (VCL) provides a much richer GUI model, with large numbers of additional plug-in components.

The object of this project is to interface Python to VCL, so that Python scripts can interact with VCL components, handle events, etc.

This is a highly-technical project that will require a person who either knows VCL or can learn it in detail. On the other hand, if completed successfully, it will be an impressive achievement. Borland have recently announced "Kylix"—VCL for Linux—so the Python/VCL combination could also be ported to Linux. Kylix could be the only serious RAD tool for Linux for some time to come.


Python/VCL "SuperGrid"

Python is an object-oriented scripting language with a very rich data model: it has built-in types for strings, tuples, lists, and dictionaries. VCL is Borland’s Visual Controls Library, an extensible system for building GUIs from plug-in components. The project is to develop a new VCL grid component that allows users to display and update arbitrary hierarchical Python data structures.

A normal grid component shows data records in a simple, table-like structure. The "SuperGrid" should support the full Python data model, nesting display and input controls to any required level. Since there are several ways that lists, dictionaries, etc. can be represented in a GUI the grid will require configuration data: a second hierarchical Python data structure.

Blueberry is interested in researching ways of developing applications more rapidly. This "SuperGrid" would be a step towards this goal.


Workgroup E-Mail Server and Client (Two Projects)

Blueberry believes that e-mail systems still offer relatively limited functionality to their users. As e-mail becomes ever more important there is a need for more sophisticated e-mail management tools.

Some examples:

  • Most e-mail clients assume that every e-mail address belongs to a different person, whereas this is frequently not the case. How can I see all the messages I’ve received from my friend "Fred", regardless of which of his e-mail accounts he sent them from?
  • Similarly, few e-mail clients can group together several e-mail addresses that belong to one company. How can I see all the messages I’ve sent to my customer "Bloggs PLC" regardless of which individuals I sent them to?

The problem with existing e-mail systems is inflexible design: clients are mainly single-user programs and messages are stored in over-simple, non-standard, private databases.

Blueberry would like an SMTP/POP3 e-mail server that stores all incoming and outgoing messages, and all users’ address books, in a well-designed, shared SQL database. It should be possible to implement such a server as an add-on to existing SMTP/POP3 servers.

Given such an e-mail server, it should also be possible to design and implement an e-mail client with many innovative and useful features for users in workgroups and companies. After all, the user’s e-mail clients can access all messages, past and present, incoming and outgoing, via SQL queries.

Here are some features we’d like to see in the e-mail client:

  • A distinction between public and private messages, so that public messages but not private messages can be read by other users
  • Address books that allow several e-mail addresses to be grouped as belonging to the same person, and several people grouped as belonging to the same company
  • Messages and their replies automatically connected together so that the history of a conversation can be shown
  • Conversation histories for one person or one company, even though these may involve messages to/from many different but connected e-mail addresses

The e-mail client is a larger project than the server, because it will also have to support all the features of ordinary e-mail clients in order to be useful. The e-mail server project does include some complex database design, but this design will also be affected by the desired features of the client. Although the server and client can be developed separately, their designers will probably have to collaborate on the database design.

"Triever"—A Pop-up Search Program
Edinburgh Fringe Scheduling Program (Two Projects)
Windows "Path" Editor
Network Clipboard
Python/VCL Interface
Python/VCL "SuperGrid"
Workgroup E-Mail Server and Client (Two Projects)
About Us Services Recent Projects Products Expertise News Links Home