FF is Federico Ferri (but also 255 in hexadecimal notation)

My primary email is:

string map {R ri O co Q de Z fe I it W ma L il} [email protected]

Random notes: Linux user since 1998. I'm into Computer Science Engineering. I like to play with electronics, and music, and I like mixing the two things together, that's why I own some music synthesizers and sporadically build some of them (or related accessories). I play piano. My works is concerned about Linux and scripting. I am slowly moving to Tcl to be the official scripting used in our systems.

My projects:

My snippets:

Since I keep re-coding and re-coding, and asking on #tcl things I (once) know how to do... I'll begin putting here my code snippets, in the hope they will be useful again to me (ah, and to others of course! ;P)

Random stuff:

  • XChat Plugins -- I use XChat and occasionally I write plugins -- (how to: simply put pluginname.tcl into $HOME/.xchat2/ and restart xchat or type /reload)

KeepNick.tcl: recovers your nick and re-identifies you after server disconnection. you can now have a list of linked nicknames and freely switch from one to another:

set ::nicks_to_keep {FEDE31C0 federico__}
set ::nickserv_pw  "xxxxxxxxxxxxxx"

timer -repeat 30 {
    if {[lsearch -exact $::nicks_to_keep [me]] == -1} {
        set nick_to_keep [lindex $::nicks_to_keep 0]
        /msg NickServ RECOVER $::nick_to_keep $::nickserv_pw
        /msg NickServ RELEASE $::nick_to_keep $::nickserv_pw
        /nick $::nick_to_keep
        /msg NickServ IDENTIFY $::nickserv_pw
        print "keepnick.tcl: recovered your nickname"

ChatMap.tcl: list all channels people are in, in addition to current channel

set chatmap_chanlist [list]
set chatmap_whoisf 0
set chatmap_timerid -1
on 319 channel_list {
    if {$::chatmap_whoisf} {
        if {[timerexists $::chatmap_timerid]} {
            killtimer $::chatmap_timerid
        set ::chatmap_timerid [timer 5 {
            set ::chatmap_whoisf 0; process_chans_end
        process_chans [lindex [split $_rest :] 1]
proc process_chans_begin {ul} {
    set ::chatmap_chanlist [list]
    set ::chatmap_whoisf 1
    foreach u $ul {/whois $u}

proc process_chans {l} {
    foreach chan $l {
        if {[lsearch -exact $::chatmap_chanlist $chan] == -1} {
            lappend ::chatmap_chanlist $chan

proc process_chans_end {} {
    print "channels found: $::chatmap_chanlist"
alias channelspy {
    set fields [lindex [users] 0]
    foreach record [users] {
        if {$record == $fields} {continue}
        lassign $record {*}$fields
        lappend r $nick
    process_chans_begin $r


There are never any bugs you haven't found yet.

anonymous poster - I thought, when I first saw the title of this page, it was going to be about Marvel's "Fantastic Four"... sigh. Wonder if Reed Richards embeds Tcl into his devices to beat Doom, etc.

escargo - Wouldn't an extension of a different existing language be more likely, namely Fantastic Forth?