Real name Mark Janssen ([Tcl Chatroom] nick: mjanssen). I have been using Tcl since 2004 and I love it. ---- There are several reasons I love Tcl: * It supports Unicode in code and GUI * The community is great * It is truly interactive: Open a console in your application and see what is really going on * Tclkit or Starkit deployment is very, very convenient * It is very easy to install libraries without changing config files all over the place * The community is great * Very simple syntax and everything is a string: This allows for some funky stuff like redefining proc * The C-API is one of the easiest of any of the ones I have seen (Perl, Python, Ruby) this makes it very easy to wrap C libraries. See for an example [readline] * The community is great ---- '''Current projects''' * Embedding [tcc] in a Tcl extension. It can compile an example Tcl extension at the moment [tdom] and supports [VFS] '''Pages I contributed to''' * [Alternative Namespaces] * [Tailing widget] * [Tcl Interface to WinPCAP] * [less] * [readline] * [Angles on a compass] * [exec quotes problem] * [SNMP parser] * [WBXML] * [tedit] - Tcl only text editor with Emacs like functionality (sort of). Bindtags are so cool. * [newexec] * [Self Programming Language%|%Self] and my C-implementation at [SELF extension] * [scriptaculous] * [SOCKS proxy] * [XOTcl Objects as Tcl Commands with subcommands] * [Tuplespace] * [Event tutorial] * [Engineering Notation] * [Overridden commands] - restoring Tcl internal commands that have been overridden beyond your control * [Wizard] * [Retrieve file icon using the Win32 API] * [Scratchpad] * [NTLM] * [cal] * [chan mode] * [Extending chan] - Extending Tcl core commands implemented with [namespace ensemble]s * [Tcl in a hybrid of RealLife and More Equal Pigs] * [SCGI] * [Splitting an amount in parts] * [Retrieving movie information from IMDB] * [TkTreeCtrl] * [tcc] - and more specifically [tcltcc], a Tcl binding to [tcc] (hosted at [http://code.google.com/p/tcltcc/]) * [tunnel] * [freezeconfig] * [Entering Unicode characters in a widget] * [Finding duplicate files] * [Interfacing Windows Search] * [A Simple Wiki with Outlook backend] * [A DSL to generate XSD files] * [Tcl2Exe] Using sdx and a build file to quickly wrap tcl scripts and applications as executables. * [Example of a Tcl extension in Free Pascal] Using FreePascal to write stub enabled Tcl extensions. '''Random ideas I like to pursue''' * Everything will be compiled (so not only procs) * Image based Tcl ala [Smalltalk] * Fast OO ala [Self Extension] * Extensible parser allow {..}[...] to be extended from script level * Better [exec] * Faster [Tcl IO performance] * [Typed Tcl] '''TODO''' * Tcl frontend to fossil db's * Caching in the [Self extension] using epoch counters '''Autoexpansion of leading word''' I have created a Tcl git repo with changes needed to have auto-expansion of a leading word at [http://github.com/mpcjanssen/tcltk-autoexpand]. This allows data structures like [TOOT with {*}]. To demonstrate that example: ====== % set m {matrix {{1 2 3} {4 5 6} {7 8 9}} } % proc matrix {matrix {method {}} args} { if {$method eq {}} { # return the 'typeless' matrix return $matrix } switch $method { row { return [lindex $matrix [lindex $args 0]] } } } % $m ; #gives the undecorated matrix {1 2 3} {4 5 6} {7 8 9} % $m row 1 4 5 6 ====== Which is a thing of beauty IMO. The git repo linked to is dead, but the change to enable autoexpansion seems to be almost trivial. ====== --- generic/tclParse.c +++ generic/tclParse.c @@ -301,11 +301,11 @@ parsePtr->commandStart = src; type = CHAR_TYPE(*src); scanned = 1; /* Can't have missing whitepsace before first word. */ while (1) { - int expandWord = 0; + int expandWord = (parsePtr->numWords==0); /* Are we at command termination? */ if ((numBytes == 0) || (type & terminators) != 0) { parsePtr->term = src; ====== ---- Everything I post on the wiki is in the public domain unless explicitly marked otherwise. I would love to hear if some of it was useful to you though. <> Person