Version 20 of Neil Madden

Updated 2002-11-24 08:41:18

I would just like to make clear, that all contributions/code that I place in this wiki are public domain. You can do with them as you will, but I do not provide any warranties or guarantees of any kind.

After a re-read of this page, it should really be subtitled An Ideas Graveyard due to the huge number of projects I seem to have started and then let die!

My personal site is at http://www.tallniel.co.uk/ . This site runs on a TclKit using tDOM to generate pages on the fly from XML/XSLT. It's lightning fast. Someday, I'll update it to generate the XML dynamically from a metakit database, so that I can keep my entire site in one file. This is a concept I'm thinking of calling StarSite, as it's a bit like a StarKit but contains a web site. The tallniel site can currently be viewed by web and WAP. If you have a WAP enabled phone, point it at [L1 ] to start off. Warning - some of the pages are quite large for wap access - working on this...

I am a student at the University of Nottingham, England, studying for a BSc in Computer Science. Before this, I did a year working at IBM Hursley Labs, where Paul Duffin introduced me to the world of Tcl. I now try and use Tcl as much as possible for my coursework, before converting to Java. 15Nov02 - Now I am in my final year, I can leave Java behind and use Tcl and C as I like. Hooray!

I have started a page on AI with Tcl at Artificial Intelligence with Tcl - State Space Searching in Tcl - Heuristic Searches. *Note* - this page contains some really bad code I wrote some time ago. I should get round to updating it at some point (and making sure it actually works). Richard Suchenwirth has updated this at some point to be a bit more efficient. He concentrated on A* search I believe. Searching A Star In Space is the fella. Much much better.

I was working on a Tcl-XML web content management system (using tDOM at the moment, but I might add support for TclXML/TclXSLT). The system uses TclKit/tDOM/XML/XSLT and hopefully, someday FOP and XSP. Needs a fair bit of work at the moment, but early CGI implementations are going good. Cameron Laird mentions the system in [L2 ]. Update (15/11/2002) - I am suspending effort on this until StarSite is finished. Makes more sense to do things this way round.

I contributed the first socket code to the TclJava project. I (or someone) still need to polish up bits of this and get async sockets supported, but it's mostly there (with the exception of fileevent as it's not done in Jacl yet). I'm also working on an OO extension for Jacl (called Hyde as in Jekyll and Hyde - Jacl and Hyde...). It's got some neat features like being able to implement Java interfaces in Tcl, or (with a bit of work) extend Java classes. Update (15/11/2002) - Haven't touched this stuff for ages, now that I rarely use Java. I have agreed to write a servlet which allows you to use Jacl, possibly for the Apache project. Might not be ready until next year though, as it is low priority for me.

Note - the name Hyde has been taken now by a Java/Jacl equivalent of CriTcl. This is fine by me, as my project is on indefinite hold, and the name seems to fit that extension better. It's nice to know someone has the same warped mind as me though :-)

I was also working on JFeather, an implementation of Feather for Jacl. This is a big project, for the long term. Update (15/11/2002) - not any more! Ran into way too many problems in Java and Jacl, so I gave up. Someone with more in-depth knowledge of Java (possibly working on the byte-code level) would be needed to do this.

New (15/11/2002) Some new things I'm working on:

  • TkBrowser [L3 ] - simple web browser functionality implemented on top of TkHTML. Fixing bugs in image support, and adding form support currently. I use this only rarely, and so I'm unlikely to keep it particularly up to date. If you use the package, please consider volunteering to maintain it.
  • A Tcl binding to SDL. Games - the real reason I like Tcl/Tk!
  • My dissertation this year is on creating a simple rule interpreter (ala CLIPS). This will be useful for embedding in games to create complex AI. Naturally, it will be implemented as a Tcl extension :-)

27/5/2001 - New Tcl related things I am working on:

  • Tcl CD Audio Package for UNIX. A simple extension to allow Tcl scripts to play audio CDs using the CD-ROM drive. Uses the libcdaudio library. Available from http://tallniel.port5.com/cgi-bin/index.cgi/TclCD.html . Currently at version 0.1 (usable, but you have to be careful about passing valid file descriptors (causes segfault otherwise :-( ). Note (8/12/2001) I haven't updated this at all, and am no longer working on it. The SDL library has functions for playing audio CDs.
  • A Haskell binding for Tcl. Still in preliminary stages. I am trying to use haskell's Foreign Function Interface to expose the Tcl C-API to haskell, thus allowing you to embed a Tcl interpreter in Haskell, and write Tcl extensions in Haskell. For more information on Haskell (a very modern functional language), see http://www.haskell.org/ . Note (8/12/2001) - I gave up on this! Maybe I'll try again someday. Update (24/11/2002) - some experiments on Interfacing Tcl with Haskell

Simple XML report writer - I'm quite pleased with this nifty little script which I use for creating reports for Uni. Convert to EPS, run through distill and you have a PDF (albeit with one very long page...:-).


About the Haskell interface: how far did you get? What was the stumbling block? Anything you could share? Perhaps someone else could take it further?

Not very far. I was looking at TclHaskell which is basically a binding to allow Haskell programs to use Tk and evaluate arbitrary Tcl scripts. I wanted to go the other way, however, and make it possible to write Tcl extensions in Haskell and compile them (with GHC), ala TclBlend, or, to embed the Hugs interpreter into Tcl, ala TclPerl/Python etc. The main stumbling block was my lack of motivation to really get into this. Haskell's FFI would allow you to expose Tcl APIs to Haskell, but there doesn't seem to be a way to do the opposite. Some kind of proxy layer would probably be needed, so that in Haskell you could call Tcl_CreateCommand or similar (tclCreateCommand) and somehow create a C-callable wrapper around the haskell function. It's beyond me though. Someone with a bit more time and motivation could probably do it though, but it's a fair amount of work. See the page Interfacing Tcl with Haskell for my latest crack at this particular nut.


[ Category Home Page | Category Person ]