TCL hobbyist since 2000, computer scientist
* Extract Movie Clips (2021) Extract favorite clips of movies and television shows. User selects a movie file (like mp4 or mkv). Script exports subtitles found in the movie to an srt file, then reads the srt and show a list of dialog. User can select a dialog/caption to extract just that phrase, or a range of dialog, from the movie to output the selection to a movie clip or audio file (wav or mp3). Uses ffmpeg executable to handle the read and write of movie and audio. 403 lines of TCL code.
* Bose Soundtouch (2020, updated 2021) control of the Bose Soundtouch wireless network speaker using TCL. The Bose API uses HTTP GET and POST messages with XML data, which are fairly easy to replicate in TCL. Can control the speaker's volume and switch to a preset from within TCL. Uses the Http package. 197 lines of TCL code. Simple examples:
package require http # request current volume set [::http::geturl http://soundtouch-library:8090/volume](body) # request list of presets set [::http::geturl http://soundtouch-library:8090/presets](body) # change volume to 30% set data "<?xml version=\"1.0\" ?><volume>30</volume>" # send POST ::http::geturl http://soundtouch-library:8090/volume -query $data # change to preset 3 of 6 set data "<?xml version=\"1.0\" ?><key state=\"release\" sender=\"Gabbo\">PRESET_3</key>" # send POST ::http::geturl http://soundtouch-library:8090/key -query $data
* Photo Tool (2020, updated 2021) this project kept me busy during the pandemic. In active development. I wanted to share photos that have metadata (EXIF/XMP) in them. Endpoint viewers would not display the names of people in the photo. From this need grew a tool written in TCL that reads JPG pictures and outputs new JPG files with the names of identified people as text in the photo, similar to movie subtitles. Initially the Tool called the excellent exiftool to read metadata, but for better speed I am writing my own exif/xmp parser. Currently the tool can read an entire folder of picture files and generate tagged output jpgs at the rate of about three per second. Can output original resolution jpg or a reduced screen resolution, intended for online sharing with reduced file size. Photo tool can display each person's age in the photo, based on the date of the photo and their birth year. This calculates the possible years of the photo based on who appears in it. Uses the packages: Img, JPEG/tcllib/jpegtcl; optional: exiftool perl library. 2970 lines of TCL code. https://photos.app.goo.gl/XkNa1Pjp7KJfFKCL7
* DIS-Tool (2014, updated 2018) new modular rewrite of DIS Monitor. TCL code is read from module files, so bits of code can be modified in a file and read in (sourced) to update the tool while it runs. Listens to Distributed Interactive Simulation (DIS) traffic for simulation data, and decodes Protocol Data Unit (PDU) packets into readable format. Can save data to CSV files for later review. Displays individual entities with all pdu data decoded. Decodes common PDU types: Entity State, Fire, Detonation, Transmit, Signal, and others. Home-brew http server to allow remote view of reports using web browser. Uses the UDP extension . See AS TCL Recipes . Currently composed of 13,268 lines of TCL code.
* DIS Monitor (2008) listens to Distributed Interactive Simulation (DIS) traffic for simulation data, and decodes PDU data to text, and decodes DIS enumerations to text from the SISO DIS reference. Decodes the PDU types: Entity State, Fire, Detonation, Transmit, Signal. Uses the UDP extension .
* URN Monitor (2008) listens to DIS traffic for Entity State PDUs, and displays all Marking fields that contain a URN. Shows what simulation entities are live/damaged/dead/moving/stale.
* PDU Generator (2008) creates DIS PDUs with your input data and sends them onto the network via UDP. Creates the PDU types: Entity State, Fire, Detonation, Transmit, Signal. Reads lists of various simulation entities (JCATS, VBS2, VRSG) to provide quick entry of known enumerations. Excellent tool to test interaction between simulations.
* Wordle (2022) puzzle game to guess a five-letter word, based on online and mobile game Wordle.
* Word-Search (2003, updated 2012) input scrambled letters, and it returns all possible English words. Solves Jumble word games, finds words and scores for Scrabble games. Very fast solutions (< 1s).
* Crossword Solver (2003, updated 2011) type in the letters you know, and this tool tells you all English words that fit.
* Boggle (2009, updated 2012) classic game of finding words in a grid of 4x4 random letters. Shows all possible words in the grid.
* Same Game (2002, updated 2013) puzzle game of removing same-type blocks
* Sink the Ship (2012) Battleship game vs computer, with sounds and aiming hints
* Tribal Wars Tool (2008) a game utility to download Tribal Wars online multiplayer game world data and create a map of villages and statistics of players and tribes.