mailto:kvetter@DELETETHIS.gmail.com I've been programming in tcl/tk since 1993. I have several tcl/tk projects in the public domain which I'm maintaining, some more actively than others. Tcl/tk is my language of choice for throwing together short, fun little graphical programs. I seem to have a ton of these lying around, and I'm slowly digging them out, converting them from whatever prehistoric version of TK they were originally written in, and posting them here. I hope you like them. Projects: * TkFibs : a GUI to FIBS--the First Internet Backgammon Server * [tcl-only datefield] : 2002-02-20 : a tcl only clone of iwidgets datefield widget. This is now part of [tklib]. * [sockspy] : version 2.0 of Tom Poindexter's ethernet sniffer program * klimb [http://purl.oclc.org/keithv/klimb/klimb.html] : a really cool bike route planner. It displays a topo map of the SF Bay Area with key roads and nodes marked, and by clicking on them you can create bike routes and get distance and climbing info. * [Dragon Curve] : 2002-05-09 : draws the Dragon Curve fractal * [Octabug] : 2002-06-07 : draws an Octabug which morphs from a octahedron into an open cuboctahedron and back. * [TkTopoMap] : 2002-08-22 : fetches and displays USGS topomaps or aerial images for any location in the US. * [Why manhole covers are round] : 2002-09-22 : fun animation which amplifies one answer to this question. * [3D Maze] : 2003-04-07 : based on [maze generator2], lets you create and interactively solve 3D mazes. * [SpiroGraph] : 2002-09-30 : a program that simulates the kid's drawing game of SpiroGraph. It draws epicycloids and hypocycloids and lets you tweak various parameters. WARNING: it can become addictive drawing the different shapes. * [TkChallenger] : 2002-10-09 : a tcl/tk game that lets you solve the Challenger puzzles that you find in the daily paper. * [TkPente] : 2002-10-15 : a two-player version of the popular Pente game. * [TkOverload] : 2002-10-18 : another two-player logic game. * [Dot to Dots] : 2002-10-21 : a dot-to-dot game that I wrote for my 3-year old. * [Pass by reference] : 2002-09-19 : syntactic sugar to get automatic pass by reference calling convention * [Semaphore Flag Signalling System] : 2002-11-05 : lets you play with semaphore flags * [Maritime Signal Flags] : 2002-11-05 : lets you play with both semaphore flags and with signal flags * [Fractal Mountains] : 2002-11-11 : draws mountain landscapes using fractals * [Møiré Patterns] : 2002-11-14 : another short graphical program, this one lets you play around generating various Moiré patterns * [Mandelbrot] : 2002-11-19 : more fractals, this time the Mandelbrot fractal * [Juggler] : 2002-11-25 : cute little program showing someone juggling up to 20 balls * [TkMapper] : 2003-01-15 : tired of Yahoo maps being only 400x400 in size? This program grabs neighboring Yahoo maps and tiles them on the screen letting you build up a fuller map of an area. * [Bitmap Editor] : 2002-01-16 : a simple program to edit tcl/tk bitmaps * [a triangle puzzle] : 2003-01-26 : graphic visualization of a classic triangle counting puzzle * [TkRose] : 2003-01-30 : draws rosette figures * [Morley's Miracle] : 2003-02-07 : a [whizzlet] visualizing the Morley's Miracle theorem * [Bulging Line Illusion] : 2003-02-07 : an optical illusion * [Hilbert Curve] : 2003-02-10 : a [whizzlet] drawing the Hilbert plane-filling curve * [Buffon's Needle] : 2003-02-18 : a [whizzlet] showing how you can estimate pi (?) by dropping needles * [3 Triangles] : 2003-02-18 : another [whizzlet] about three equilateral triangles * [tkAtaxx] : 2003-02-19 : an implementation of the popular Ataxx arcade game * [Polyhedron Nets] : 2003-03-06 : draws polyhedron nets, 2-D unfolding of a 3-D solid that you can print, cut out and fold to create polyhedron models. * [Cubic Splines] : 2003-03-07 : routine (w/ demo) to generate a cubic spline curve from a set of control points * [Arrow buttons] : 2003-03-12 : buttons with bitmaps of arrows in four directions * [Drawing rounded polygons] : 2003-03-19 : applied the ideas found in [Drawing rounded rectangles] to any polygon. * [Canvas Rotation] : 2003-03-19 : routines to rotates items on a canvas. Works well for polygons and lines but not ovals or text. * [Named Colors] : 2003-03-21 : displays all the colors Tk knows the name for (for those who don't have [xcolors]) * [tkGoldberg] : 2003-03-21 : a really fun Rube Goldberg [whizzlet] * [Regular Polygons 2] : 2003-03-24 : a generalization of [Regular Polygons] to support -start and -extent parameters * [3D Hilbert Curve] : 2003-04-07 : like [Hilbert Curve] but in 3 dimensions * [Playing Card Images] : 2003-04-25 : image data for playing cards * [Scat] : 2003-04-25 : play the card game '''scat''' against the computer * [Falling Marbles] : 2003-04-29 : animation of marbles falling down a peg board * [Rain Storm] : 2003-05-04 : simulates rain drops on a window * [Lissajous Figures] : 2003-05-09 : draws Lissajous figures * [Puzzle Blocks] : 2003-05-12 : move blocks to solve a puzzle * [Video Poker] : 2003-05-28 : lets you play Jack or Better video poker * [Eliminator] : 2003-05-31 : a moving ball puzzle game * [Gem Game] : 2003-06-04 : another puzzle game * [Triangle Madness] : 2003-07-09 : a visualization of some interesting properties of a triangle. * [Square Root] : 2003-07-14 : various ways to calculate a square root * [Hack-O-Matic] : 2003-09-03 : a visual binary editor written as a challenge * [Printing text files under Windows] : 2003-09-10 : * [Variable versus a Global Array] : 2003-09-14 : thoughts on global variables * [TkMines] : 2003-09-24 : updated version of Tk Minesweeper * [Widget Configure] : 2003-09-24 : a debugging tool to interactive configure a widget * [I love foreach] : 2003-09-29 : why the foreach command is beautiful * [Starfield] : 2003-10-06 : another starfield animation * [Collapse] : 2003-10-31 : yet another arcade type game * [Pastel Colors] : 2003-11-06 : picks random pastel colors * [Wiki History Diff] : 2003-11-07 : does diffs on back versions of wiki pages * [Word Jumble] : 2003-11-11 : an anagram game * [Pig Latin] : 2003-11-12 : translates text into pig latin * [SkipList] : 2003-05-15 : a tcllib module that implements skip lists * [SkipList Demo] : 2003-11-21 : a demo on how skip lists work * [Fern Fractal] : 2003-12-01 : draws the Barnsley's Fern fractal * [A Very Simple Weather App] : 2003-12-03 : simple app showing current temperature * [A Simple Fan Animation] : 2004-01-30 : an animation of a rotating fan * [Parsing XML] : 2004-03-01 : yet another xml/html parser, this one in pure tcl * [Parallel Geturl] : 2004-03-06 : how to efficiently download lots of web pages * [Azimuth Plotting] : 2004-03-10 : help in locating benchmarks * [Universal Transverse Mercator] : 2004-04-15 : conversions to and from UTM coordinates * [Print Area Selector] : 2004-03-31 : control to select an area of a canvas to print * [Convolutions] : 2004-05-20 : fun visual affects * [Following Redirects] : 2004-06-18 : a better way of handling http redirects * [Tic Tac Toe] : 2004-09-10 : can you guess what this is? * [Lights Out] : 2004-09-10 : a one-person puzzle * [Rush Hour] : 2004-09-13 : get the red car out of the traffic jam * [Word Search] : 2004-09-16 : find words hidden in a grid of letters * [A simple Font Viewer] : 2004-10-22 : displays all fonts on your system * [Dynix2RSS] : 2004-11-26 : produces an RSS feed for all your checked out library books * [TriPeaks Solitaire] : 2004-11-29 : the TriPeak solitaire game * [Can You Read This?] : 2004-12-18 : Deos letter oredr matter? * [WAV Dump] : 2005-02-28 : Dumps out info about wav audio files * [XML Tree Walking] : 2005-03-21 : Walks an XML dom tree built with [tdom] * [My House] : 2005-06-15 : Can you find your house? * [BMP Dump] : 2005-09-22 : Dups out info about bmp image files * [Hold'Em Solitaire] : 2005-10-26 : A one-person Texas Hold'em diversion * [Simple Tktable] : 2005-10-27 : A simpler replacement of tktable for simple tables * [3d Matrix Inversion] : 2005-11-02 : routine that inverts 3x3 matrices * [Labyrinth] : 2005-11-18 : a version of Junior Labyrinth board game * [Smallest Enclosing Disc] : 2005-11-21 : Another geometric algorithm * [The Classic 15 Puzzle] : 2005-12-07 : guess * [N-Puzzle] : 2005-12-10 : Generalization of the 15-puzzle to any size * [Animated Circles] : 2005-12-13 : fun little visual animation * [Wavy Text] : 2005-12-13 : Animates some arbitrary text * [Mind Reader] : 2005-12-15 : A little program proving the tcl can read minds * [Kandinsky Dance] : 2005-12-24 : An animation of figures based on a painting by Wassily Kandinsky * [Spotlight] : 2006-01-06 : Shines a spotlight on an image * [Magnifying Glass] : 2006-01-06 : Aims a magnifying glass at an image * [Colliding Blocks] : 2006-01-13 : A fun little arcade style game * [Lights On] : 2006-02-09 : A game where you have to connect wires to light every node * [Ring Master] : 2006-02-11 : puzzle with rotating numbers around three rings * [Capturing Multiple Screens] : 2006-02-13 : package to capture screens larger than the display * [Shadow Photo] : 2006-03-01 : displays an image with nice looking shadow border * [Photo Gallery] : 2006-03-16 : shows a gallery of images which you can dynamically resize * [Montana Solitaire] : 2006-04-28 : another solitaire card game * [Black Box] : 2006-05-09 : plays the game '''Black Box''' * [Another Font Chooser Dialog] : 2006-06-23 : my version of a font chooser dialog * [Dithering] : 2006-07-22 : some dithering techniques and examples * [Gradient Spheres] : 2006-08-16 : using gradients to create sphere shapes * [Geneva Drive] : 2006-08-24 : animation of a Geneva Drive mechanism * [Vanishing Child] : 2006-08-28 : A visual conundrum * [Gear Animation] : 2006-08-30 : Animates interlocking gears * [Nice Numbers] : 2006-09-01 : Two similar routines useful with graphs * [Reading BMP image dimensions] : 2006-09-06 : pure tcl routine to read BMP image dimensions * [Chinese Checkers] : 2006-09-06 : a version of the game chinese checkers * [Bulging Square Illusion] : 2006-09-08 : an optical illusion * [Ribbon Graphs] : 2006-09-27 : turning 2D line graphs into sexy 3D graphs * [Pulsing Squares] : 2006-10-04 : an optical illusion * [Benford's Law] : 2006-10-11 : a visualization of the counter-intuitive Benford's Law * [Word Chain] : 2006-10-12 : computes ''cat-cot-cog-dog'' word chains * [Dice] : 2006-10-21 : draws pretty playing dice * [Cubic Function Explorer] : 2006-12-18 : plots the graph of some cubic equations * [Unzip in tcl] : 2007-01-04 : a simple tcl-only version of unzip * [Crazy Eights] : 2005-01-11 : plays the card game '''Crazy Eight's''' * [NOAA Weather Forecast] : 2007-01-23 : displays the weather forecast from NOAA * [Crossword Puzzle Builder] : 2007-02-08 : lets you create grids for crossword puzzles * [Solving Logic Puzzles] : 2007-02-09 : solves one type of logic puzzles * [Cubic equation] : 2003-02-26 : created the page, but I can't claim credit for the code * [A Hypertext Help System] : 2007-06-27 : a nice, tcl only help system * [tclTiger] : 2007-07-08 : interface to the TIGER GIS dataset from the US Census Bureau * [Image Fading] : 2007-09-10 : hack to fade two images together * [Rotated Text Font] : 2007-09-17 : another way to get rotated text * [Arbitrary Rectangle Selection] : 2007-10-12 : grabs any (including any angle) rectangular area of a canvas * [Text2PDF] : 2007-10-16 : package for converting text into [PDF] * [Parsing PDF] : 2007-10-20 : code to parse and display [PDF] document and page information * [Celtic Braid] : 2007-11-17 : draws an inter-woven pattern reminiscent of a Celtic braid * [Project Euler] : 2008-01-25 : a web site [http://projecteuler.net/index.php?section=about] with a series of really fun programming challenges * [Scotch Yoke] : 2008-03-01 : animation of a Scotch Yoke, converting linear motion into rotary motion * [Tile Table] : 2008-03-21 : yet another table widget, this one using tile's treeview widget * [Grid Debugger] : 2008-04-09 : helps you solve [grid] layout problems * [Tk Robots] : 2008-04-25 : plays the old UNIX robots game * [High Score Package] : 2008-04-29 : package for showing, adding to and saving high scores for a game * [Tk Robots2] : 2008-04-29 : enhanced version of [Tk Robots] * [WhenIdle] : 2008-05-06 : a way to run background commands when user is really idle * [VS Project List Editor] : 2008-07-09 : lets you edit Visual Studio's project list * [Nonogram] : 2008-07-28 : lets you solve nonogram logic puzzles * [Time Picker] : 2008-10-08 : an interesting way to pick times * [GridLines] : 2008-12-30 : another way of solving [grid] layout problems * [Canvas Annotations] : 2009-04-15 : nice looking, moveable annotations for a canvas * [TkAsciiArt] : 2009-07-27 : converts images into ASCII text * [Tk Dali Clock] : 2009-08-31 : tk version of character morphing Dali clock * [CryptoAid] : 2009-10-10 : tool to help you solve cryptograms * [TreeView Tooltips] : 2009-11-07 : how to get tooltip events for a ttk::treeview widget * [Cribbage Crib Aid] : 2009-02-18 : tool to help determine best discard in cribbage * [CheckedListBox Widget] : 2010-03-24 : multi-column list of checkboxes * [ChooseDir] : 2010-04-11 : a better looking version of tk_chooseDirectory * [Extensions to Plotchart 2] : 2010-04-20 : Another extension to [Plotchart] for ribbon x-y graphs * [Pythagoras Tree] : 2010-06-02 : A fractal constructed from squares * [Slippy Map Demo] : 2010-07-05 : How to use [tcllib] slippy module to show street maps * [GPX] : 2010-07-08 : module to extract information from GPX (GPS eXchange) files * [Word Clock] : 2010-07-22 : displays time in English text * [Mormon Porn] : 2010-09-10 : lets your mind turns innocent, albeit racy pictures into a nudie picture * [Line Simplification] : 2010-12-17 : demo of the Douglas-Peucker line simplification algorithm * [Integer Partition] : 2011-04-01 : enumerates all integer partitions of a given number * [Bubble Letters] : 2011-08-08 : transcribes text into unicode circled letters * [CPU Monitor] : 2013-03-08 : visually shows activity for each cpu on your machine * [Nominatim Demo] : 2013-03-12 : how to use [tcllib]'s geocoding Nominatim module * [Celtic Knot] : 2013-05-15 : draws ornamental Celtic Knots * [Reading WEBP image dimensions] : 2013-06-01 : pure tcl routine to read WEBP image dimensions * [EpubCreator] : 2014-03-14 : command line tool for creating an epub from a single file * [EpubDump] : 2014-03-14 : displays the metadata associated with an epub * [Gmail Filters] : 2014-04-08 : parse Gmail filters into csv format * [Flow Colors] : 2014-04-23 : a simple yet addictive puzzle game * [PNG Dump] : 2015-02-16 : displays detailed information about the chunks comprising a png image * [PNG Decoder] : 2015-02-16 : tcl only png decoder * [Penrose Tiling] : 2015-12-01 : play with Penrose non-periodic tiling of the plane * [1010!] : 2016-03-25 : tcl version of the popular 1010! game * [Divisible by 7] : 2016-04-18 : simple, graphical toy to determine if a number is divisible by 7 * [Image Compare] : 2016-04-26 : way to visually compare two images with a sliding bar between them * [Rubik's Cube Timer] : 2016-05-22 : tool for timing Rubik's Cube solves * [Image Sizes] : 2016-05-25 : command line tool for displaying the size of images * [Photo Crop] : 2016-06-13 : tool to help crop images to 4x6 ratio * [Continued Fraction] : 2016-06-15 : displays the https://en.wikipedia.org/wiki/Continued_fraction%|%continued fraction%|% for any expression * [Image Viewer] : 2016-06-16 : a simple, cross-platform image viewing tool * [Photo Album] : 2016-07-22 : a way to lay out photos emulating a photo album * [Super SymDoodle] : 2016-11-22 : extending [A symmetric doodler] to have multiple axes * [string mapx] : 2017-08-10 : like [string map] but allowing the match to use regular expressions * [Clock of Clocks] : 2017-09-09 : a clock animation using smaller clocks as pixels * [Solomon's Knot] : 2017-04-07 : an updated version of my [Celtic Braid] allowing for more intertwining loops * [@decorators] : 2018-05-03 : a tcl implementation of Python's decorator syntax * [Centered Coordinate System] : 2018-06-04 : a snippet to move a canvas's origin to the middle of the widget * [Impossible Triangle] : 2018-06-04 : draws an https://en.wikipedia.org/wiki/Penrose_triangle%|%Impossible Triangle%|% figure * [Tip #288] : 2018-08-15 : my tcl implementation https://core.tcl.tk/tips/doc/trunk/tip/288.md%|%Tip 288 -- Allow "args" Anywhere in Procedure Formal Arguments%|% * [Tip #508] : 2018-08-15 : my tcl implementation https://core.tcl.tk/tips/doc/trunk/tip/508.md%|%Tip 508 -- New subcommand [[array default]]%|% * [ao3] : 2018-08-31 : a scripted interface to the fan-fiction site https://archiveofourown.org/%|%Archive of Our Own%|% * [ao3ToEpub] : 2018-08-31 : a script that uses [ao3] to download stories from fan-fiction site https://archiveofourown.org/%|%Archive of Our Own%|% and turn them into epubs * [Enhanced Expression Syntax] : 2018-09-26 : a tcl-only implementation of https://core.tcl.tk/tips/doc/trunk/tip/282.md%|%Tip 282. * [FamFamFam Demo] : 2019-01-03 : displays all the icons in the [FamFamFam] icon set * [Spider Go] : 2019-01-07 : a variant of [Spider Solitaire] with six columns and only King through 8 * [Magic Squares] : 2019-01-18 : enumerate all unique 4x4 magic squares * [Filter Image fun] : 2019-01-24 : tool for some simple filtering of an image * [Pretty Html] : 2019-03-01 : an HTML formatter ---- Hey Keith, thanks for sockspy. I used the [starkit] and for the very first time I could understand its use and see how cool it was in Windows. Thanks for all the hard work! ''--[Ro]'' ''Been submitting your [whizzlet]s to [sdarchive] and adding screen dumps, last one is the delightful "Juggler" - I hope that's ok with you... -[jcw]'' ---- [LV] Thank you so much for all your program contributions. It is developers like you which make Tcl such a fun community. [MG] Hey Keith, just wanted to add my thanks for all the code you've added to the Wiki. I've used several of them in the last few days and saved a lot of time (and have ended up with better looking widgets than I'd have likely made on my own), so thanks :) <> Person | Tcl'ers