Version 33 of JStrack

Updated 2011-05-12 02:19:28 by RLE

17 October 2010 update (more like a total re-write) by me (Jim Graham).

JStrack is a freeware hurricane tracking program written entirely with Tcl/Tk. Since its early days in 1997, JStrack has grown a bit (grin). NOTE: JStrack's author (that's me...Jim, N5IAL) was diagnosed with cancer back in 2006, and has since kicked caner's backside into another universe. I am still dealing with the long-term side effects, but that's enough about that.

Thanks to The Kendrick Group, JStrack has a rather large home at It is also the home of my brewing pages, including a Tcl/Tk based brewer's recipe formulator called GTbrew2. I've also got a few other Tcl/Tk toys, like as 24-hour analog clock, a Sudoku puzzle script that uses two external C programs to generate Sudoku puzzles at various levels, solve either generated or manually input puzzles, etc.

JStrack is freeware or, if you prefer, donationware. Here's how it works: if you want to use JStrack, you are free to do so. If you really, really feel that you must send money, please send it to the Red Cross/Red Crescent (depending on where you are), the Salvation Army, or basically, some charity-based disaster relief agency.

JStrack now uses the Img library and a few external compiled programs from the netpbm (formerly pbmplus) package to display GOES EAST satellite imagery.

JStrack has two primary data inputs: pipe data directly to its filter script (pure Tcl), e.g., from incoming NHC products using the WX-ATLAN e-mail list (and procmail), and also has an HTTP-based input mode that grabs the data (select products, all files newer than that product's timestamp file's modification time) from the NHC's HTTP server. This replaces the old FTP-based version (the NHC's FTP server is an old, legacy system that is likely to be phased out before too much longer).

As of this year, 2010, JStrack also has a new map, courtesy of Ron Murphy, NWS Birmingham, who provided the other three current maps back in 1998. Windows users now have an EXE version using a tclkit. It basically just calls the real script, passing command-line args, standard input, etc.....

JStrack does some, shall we say, backwards use of the Tk canvas to do things like determine whether or not a storm's current position and/or forecast positions are within a user-specified distance from the user's home coordinates---I forget how I did this, but it was something I struggled to figure out for a LONG time, and then, one day, while looking for something completely unrelated in the canvas widget docs, saw my answer: apply this one capability in exactly the opposite way from which it was intended to be used, and it does the math for me! There are other examples of the canvas widget working some powerful magic, but that has to be the #1 example, at least, IMHO.

Did I mention GOES EAST imagery? Did I mention that, using the IMG package (and, again, a few bits from pbmplus, netpbm, or whatever it's called this week <grin>), the satellite imagery can either be viewed in a new toplevel, which allows for individual images or image loops, or overlaid on the tracking map (the canvas) as a still image only.

Yes, JStrack has grown. Check out the sample screenshots in which has samples showing JStrack's evolution since its "birth" (and that map was really, really awful) to an almost-current sample. A more current (but still not completely up-to-date---it's version 3.0.2, but the current version is 3.3.2a) screenshot is in the main index at (right up near the top).

Without Tcl/Tk, JStrack would never have happened. Check it out as an example of what someone without any kind of software development degree (my degree is in electronics/telecommunications ... I'm a network engineer, not a programmer). When I write code, it's more of a problem-solving tool. Tcl/Tk is fantastic for this, IMHO.

One final note: I have been working on JStrack since I was almost a beginner with Tcl/Tk, and some portions of the JStrack code clearly reflects this.... It works, though, and I'm not too thrilled with the idea of going back in and fixing what isn't really broken...just not as elegantly-coded as it could be.