Hacker News new | ask | show | jobs
by antirez 2905 days ago
I started this project many years ago, and later abandoned it. Fortunately the project found another gentle and capable father that developed it for years and put it into a useful niche: embedded systems. However Jim Tcl is still, for me, a milestone of my programming life. It was the first time that, inspired by the Tcl internals, I started to realize how to write clean C code using better abstractions. It's awesome to see the project still alive, thank you Steve.
4 comments

For the Tcl internals, was this John Ousterhout's code or some other codebase? Have you read his new (ish) book on Software Design? [1]

[1] https://www.amazon.com/Philosophy-Software-Design-John-Ouste...

Yep it was the original JO code base, but I think that when I read it (it was already Tcl 8) a lot of other people had rewritten major parts, but the standard and quality were set I guess, and also the core team was composed of people that knew how to write code. About the new book: ordered it via Amazon, but Amazon Italy for some time now for small things use the local postal service, that always fails, so it returned back... to Amazon. I'll have to purchase it again.
> Jim is supported. If you need commercial software, contact the original author at 'antirez@gmail.com' or the current maintainer at 'steveb@workware.net.au'.

Do you get many support emails, still?

Not much but a few questions from time to time, I don't reply most of the times unfortunately... I receive a lot more emails about hping (!).
I always wondered why you used lua embedded into redis instead of tcl? Has that been written about before?
Because I thought it was not a good idea to script Redis using an opinionated language as Tcl. Lua is a lot more "algol like", more understandable to the casual script writer.

EDIT: However there is an even more important thing that resembles Tcl in Redis: the commands you send to the server to alter the data set are very similar to Tcl commands.

I find it somewhat amusing (but understandable) that you thought Tcl was too complicated for "script programmers", but fine as the standard interface to get anything done with (raw) redis ;)

It's a shame, Redis could've become the storage back-end for the next AOL server! ;)

Well, I suppose it probably is used with aolserver anyway.

For those confused by this comment, see:

http://philip.greenspun.com/panda/

And/or:

https://openacs.org/

NaviServer appears to be the "new" aolserver:

http://wiki.tcl.tk/2090

While aolserver still exists, I'm maintainence mode: http://aolserver.github.io/

Did sandboxing factor into the equation? My understanding is lua scripts in redis aren't sandboxed, other than the (possibly?) restricted api. But one could limit heap with a custom allocator for example, and cpu cycles with a hook, if desired.
I think that wouldn’t be an argument for Lua over Tcl, as Tcl has facilities built especially for this type of environment:

Safe Interpreters[0] and resource constraints[1] come to mind.

[0] https://wiki.tcl.tk/4204

[1] https://www.tcl.tk/man/tcl/TclCmd/interp.htm#M47

there is no such thing as casual redis script writer

if you are technical enough to write scripts for redis, you are not casual

I actually agree whole-heartedly with this comment.

But I wouldn't have written with such a dismissive tone to a living software god :-)

Anyway, Lua was a fine choice!

Yep but perhaps you want to glue two commands together. I wanted to avoid forcing this kind of users to learn a new language.
Why is it called "Jim"?
Maybe a play on words? Many people pronounce Tcl as tickle. Jim Tcl, George Dickel?

If so, they should have named it George Tcl. Jim is known for another whiskey.

Well then it should have been called Test Tcl.... yeah I'll just leave myself out now :p