Keith Vetter

Difference between version 273 and 275 - Previous - Next
mailto:[email protected]

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.
    
%| Project | Date | What |%
&| TkFibs | 1994-10-10 | 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  | 2001-07-25| a really cool bike route planner |&
&| [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 |&
&| [Razzle Dazzle] | 2019-04-24 | a tcl version of the Razzle Dazzle carnival game |&
&| [Multi-column Listbox with Button] | 2019-05-17 | a multi-column list box with the first column acting like a button |&
&| [Text Spinner] | 2019-10-01 | package that provides 50+ types of text spinners|&
&| [OpenSky API] | 2019-10-04 | scripting interface to OpenSky's live airspace information|&
&| [OpenSky App] | 2019-10-17 | an application displaying live airspace info using the [OpenSky API]|&
&| [Jeopardy] | 2019-11-06 | Play the tv game show Jeopardy|&
&| [Picture of the Day] | 2023-08-28 | Downloads Wikipedia or Wikimedia Commons Picture of the Day|&
&| [Picture of the Day Demo] | 2023-08-30 | Gui demo of the [Picture of the Day] module|&
&| [Emoji, Unicode and Variation Selectors] | 2024-01-15 | An obscure Unicode way of getting some emoji |&
&| [DVD Logo Screensaver] | 2024-02-05 | Emulates the bouncing DVD Video logo screensaver |&&| [Dijkstra's Prime Algorithm] | 2024-02-15 | An implementation of Dijkstra's algorithm to compute primes |&
----
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 :)

<<categories>> Person | Tcl'ers