Who's Kevin Kenny?
I'm the guy who labels postings to this Wiki with KBK, and whose postings usually originate from 192.35.44.14, a tremendously overburdened firewall machine. (in the Tcler's wiki chat, known as kennykb)
I have been an avid Tcl user since 1991, when I first became interested in it as an integration platform.
I'm probably the Tcl community's worst offender with respect to creating abandoned software. Alas, my most lasting contribution to the Tcl community has been the horrible exec magic that launches Tcl scripts on the Un*x platform:
#!/bin/sh # the next line is a comment in Tcl, but /bin/sh interprets it \ exec /path/to/wish "$0" ${1+"$@"}
Some of my better abandoned projects include:
Right now, I divide my time between working on the Tcl/Tk applications that run the NBC broadcast network 24/7 [L3 ], [L4 ], and doing Tcl-based automation software for GE's next generation of medical X-ray machines. In other words, I'm mad enough to be using open-source code in mission-critical systems.
Using Tcl in soft-real-time systems has given me a keen interest in the precision of the Tcl clock, hence the changes described in TIP #7 [L5 ].
I'm also author or coauthor of several more TIP's [L6 ], [L7 ], [L8 ], [L9 ], [L10 ].
In fact, these TIPs made me enough of a Tcl Core Team gadfly that the TCT invited me to join its ranks in the summer of 2001. I continued writing and sponsoring TIPS - and my first official act as a TCT member was to call a vote on the TIP for bundling [incr Tcl] with the Tcl distribution. (Little did I imagine how difficult it would be to get that actually to happen.)
Anyway, I've continued in the TIP process, contributing to several [L11 ], [L12 ], [L13 ], [L14 ], [L15 ], [L16 ], [L17 ].
I've been on the program committee of the Tcl conferences in 1995, 1997, 1998 and 2001, and chair the program committee in 2002.
I'm one of the Tcl maintainers who understand Parsing, bytecodes and execution and The anatomy of a bytecoded command.
I'm fond of recreational mathematics, whence come pages like Solving cryptarithms and Fraction math. I know a bit about combinatorics, giving rise to Binomial coefficients, Cartesian product of a list of lists, Power set of a list, and similar pages. Diff in Tcl is sort of related, I suppose, too. Enough people got confused about what a cryptarithm is (thinking it was a cryptogram) that I was motivated to put up a page on Solving cryptograms.
I strongly encourage people to make proper use of the Tcl event loop, which is subtle but rewards those who understand it. Countdown program, Update considered harmful, Centering a window and Keep a GUI alive during a long calculation are all exhortations to do so.
I still find time, occasionally, to develop the odd clever hack in Tcl, for instance Shuffle a list. I also know a few tricks about dealing with Microsoft Windows and Tk, such as Printing a canvas under Windows and Register file types under Windows. I also have a few things up my sleeve about making Tk's look and feel more Windows-like, such as Scroll bars that appear only when needed and a Resize control.
People can send me email at [L18 ].
proc Quine {} { set n [lindex [info level 0] 0] append s [list proc $n [info args $n] [info body $n]] \n [list $n] puts $s } Quine
John Ousterhout himself best summarized Kevin's early career with Tcl with his acknowledgment that it was KBK who showed "that Tcl can be used to interface to almost any conceivable application." [ref to book]
In isolation, that sounds unintentionally funny.
KBK: That last line sounds like one of Cameron Laird's enigmatic utterances. For the benefit of the unenlightened:
The first few years of Tcl's existence, most Tcl users saw it as an embeddable shell -- a C library that you'd add to your application to give it a command-line and scripting interface. When I picked up Tcl in 1991 or so, I saw that Expect, the [exec] command, and TclX were adding substantial capability for interface to existing applications -- once that weren't designed originally to have a Tcl interface. Inspired by that realization, I started trying to push the idea as far as it would go (incidentally producing the first cross-platform implementation of [load]), and eventually had wired applications that communicated with X PropertyNotify events, SunRPC, various vendor-supplied C API's, sockets, DDE, .... The interesting thing was that the interface layers that talked these protocols were the only C modules I wrote. 'Wish' and 'tclsh' were the main applications -- the interfaces were embedded in Tcl, not the other way around. The fact that I and a few other brave souls were actually successful treating Tcl as an integration platform rather than a library came as something of an epiphany for John.