James Dow Allen

Computer Programmer

I interrupt this home page with a special message from its webmaster. Credible opinions and lawsuits make damaging claims about voting irregularities in an important U.S. election. Why aren't such matters better reported on the news?

Both my vocation and avocation are computer programming.

I also dabble in recreational mathematics.

- Here is a fallacious proof of the Four-Color Map Theorem.
- Here is a boring write-up on the Golden Ratio Scheduling Policy.

Once I was involved in the IBM add-on memory industry. Here's an invention I'm proud of; and here's a detailed discussion of an interesting bug from those days. Here's an even more boring bug, with possible interest since it is arguably a weird IBM Principles violation.

I am now preparing a Digital Search Tree (Trie) which uses an especially memory-efficient technique to store pointer information. E-mail me if you're interested.

When I was first learning to create html pages, for some
reason I chose to build a list of great mathematicians
as a practice page, even though I wasn't
qualified to make such a list without a lot of advice.
Since then I've invested a lot of time reading mathematical
histories and biographies and revising the page.
I'm proud of it now: please read it!
(With 178 mini-biographies, the single page
has now grown to over 380 kbytes.
With today's fast speeds, I suppose this is *not* a problem,
but *please* tell me if I'm wrong!)

I like composing and solving a variety of puzzles: - Figure out this Family Tree.
- Guess what's special about three poems I wrote.
- Here are some very hard Nurikabe puzzles.
- A discussion of Four Kings Solitaire.
- Historical linguistics is fascinating I show
why the English words
*chef, chief, captain, head*are not only synonyms, but are cognates.
I've become fascinated with the idea of
deducing human prehistory from genetic and
linguistic evidence.
I'm also interested in Games and Gambling. Here are some comments on Connect-Four. Lately, in middle age, I'm finally trying to tune up some miscellaneous computer skills. See the animated gifs in the next section. And of course, how could an American not follow politics? Here's my Wake up call for "liberals". |

I love Go, but never found the time to pursue it so I'm just a kyu player. I've prepared animated-gifs of some famous games played by Wu Qingyuan (Go Seigen), one of the very greatest players ever.

Select which Game to view: |

One of my research interests is the hexagon grid to facilitate machine vision and other 2-D signal processing tasks. The advantages of that grid over the standard square grid have been known for a long time, but it is seldom used. (I guess the prevalance of the square grid shouldn't be surprising, considering that the advantages of Unix are even more clearcut, but MicroSoft Windows has overwhelmed the planet.)

Here is one of my research papers on the topic of ``Filter Banks for the Hexagon Grid''.

I've decided to try my hand at offering software tips. Wish me luck !!

Only a few chapters are currently on-line. I'll post more if there's interest.

- Preface: Programming as Poetry.

- Lesson 1: Choices for Coding
- Lesson 2: Simplicity.
- Lesson 3: Simplicity (cont'd).
- Lesson 4: Simplicity (cont'd).
- Lesson 5: Simplicity (cont'd).
- Lesson 6: Working from Specifics.
- Lesson 7: Processes and Computation
- Lesson 8: Data Structures.
- Lesson 9: Control Mechanisms.
- Lesson 10: Programming tactics.
- Lesson 11: Focus on Information.
- Lesson 12: Advanced Exercises.
- Appendix B: Discussion of Betting Odds.
- Appendix M: Memory Requirements.
- Discussion of Oblivious Sorts.
- Description of "Truffman" Code.

The textbook is free. If that makes you feel guilty, contact me for Pay-Pal number. If that makes you feel hilarious, sorry.

Eventually I'll create a webpage summarizing comments. For now:
**
> I don't like K&R-style function prototypes.
**

In Lesson 1 I explain why strong typing is a mixed blessing.

> My non-gnu compiler does not accept `long long'

Sorry. If you can't think of a work-around, try an easier exercise.

> Those who can't, teach.

Even pejorative comments are welcome, but please attach your own exercise solutions to verify we're playing in the same league.

> I didn't think it was so bad, and parts were almost well-written.

Flattery? Yes, that works.

Recently (November 2008) I posted some hash table code here, that I hope others will find useful. Since then I've improved this software and believe it to be of "commercial quality." It's no longer available here for download; e-mail me if you have interest.

A few other snippets of my code are also posted here. Please tell me if you find any useful:

- gensrc.zip -- various routines of general utility, e.g. for solving games.
- roulette.c -- show optimal results in roulette-like games.
- cf.c -- show real number as continued fraction.
- gencombo.c -- subroutines to generate combinations.
- sofa.c -- fast operations on compressed sparse bitfields.
- bship.c -- generate battleship solitaire puzzles.
- prime.c -- print a list of prime numbers.
- j_rand.tar.gz -- random number help includes j_random.h, j_random.c, j_rdemo.c
- holdodds.c -- show poker odds.
- timelimit.c -- run Unix command with time limit.
- sumfact.c -- sum a number's factors, iterate.
- earthdist.c -- show distance between two points on Earth.
- egcoder.zip -- Simple compression coding example (Elias Gamma code).

I've just placed a few chapters on-line so far, but some of the other programming examples are available. These are mostly simple short programs with interesting or instructive features.

In (rough) order of increasing complexity.

- (from Lesson 5) Print a simple statistic about an acyclic digraph.
- (from Lesson 5) Computer plays Waldo's Nim (against teletype).
- (from Lesson 3) A system of hash tables to find the Shortest path between two game positions.
- (from Lesson 9) A program to solve
Double Dummy Bridge Problems,
and some comments on the use of ``
*goto*.'' - A comparison of the Double Dummy Bridge Program with a ``structured'' alternative.
- (from Lesson 7) Finding the optimal solution to Ginnow's Sieve.
- (from Lesson 11) Text compression and decompression with the Burrows-Wheeler Transform.

I also discuss my symbolic math software. Sorry, to get this source code you will have to request to be a beta tester.

Here's some other Html pages I've had fun preparing:

- Three classic (math-oriented) puzzles,
- Some comments on dating the Y-chromosome tree,
- A ranking of U.S. Presidents, and other political opinions.
- A tribute to My Programming Heros
- A tribute to Winston Churchill
- Click for Charles Dodgson's writeup on an elementary school math problem.
- Click for my musings on ancient man and his languages.
- Click for a A-L mnemonic to remember the Twelve Language Phyla and astound your friends!
- Click for equal-area world map with antipodes superimposed.
- Click to visit my family tree.

This site has become very popular! You are the 'th visitor to this page.

In my free time, sometimes I "surf" the Web.
Seb Przd has
some interesting photographs.
Here's Seb himself, trying to straighten a picture on his wall:

Please send me some e-mail.