What's New?

Getting Started

APL On The Net

Articles & Programs
Other APL Sites


Articles and Programs

The following are articles and papers I've written over the years, both for printed publications and for comp.lang.apl. Many of these articles contain useful programs within them. You can use the APLASCII workspace to extract these programs.
APL-ASCII Transliteration   Describes how {keywords} came to be. Why I did certain things and not others.
APL-ASCII Workspace Transfer   How to move programs and data from one APL to another using {keywords}.
APL Compiler   APL is usually interpreted, meaning that the APL system parses and translates each statement every time it is executed, resulting in gross inefficiency for certain types of programs. This article describes a true APL compiler, which translates APL statements to IBM 370 machine code for faster execution.
APL Compiler Example   An example of how a compiler can radically alter the range of practical algorithms in APL. With benchmarks.
APL79 Back Cover   Reverse-engineering a message in a bottle that was adrift for 16 years.
Ball Clock Problem   The most amazing programming puzzle I've ever seen. Read it and learn what permutation vectors, cyclic representations of permutations, least common multiples, permutation powers and logs, and the Chinese Remainder Theorem have to do with a goofy clock.
Benchmarks of APL vs. Other Languages   The answer is never a scalar...
Beware Selective Assignment   What APL vendors don't want you to know about selective assignment! This article explains how to avoid slowdowns and excessive memory usage when using selective assignment.
Binomial Coefficient Puzzler   Another fine puzzle that lead into factoring, prime numbers, and the prime powers representation of numbers. Includes assembler-based utilities for factoring and finding primes. I'm still looking for Larry Breed's A!B algorithm...
Blob Finder   A classic image processing problem: find the connected 1s in a Boolean matrix.
Bridge Crossing Puzzler   It was a dark and stormy night, and four men had to get across a bridge. An interesting programming problem, though not as deep as some of the other puzzles here.
File Key Indexing   How to efficiently build a directory to the keys in a file.
Function Comparison Utility   An extremely useful program--an APL version of the Unix diff command.
Function Minimization   An APL version of the Nelder-Meade downhill simplex method, with an example.
Gaussian Random Numbers   A utility to generate random numbers having a Gaussian normal distribution, along with some references about APL's random number generator.
Global Variables   On the uses of global variables and precautions for the safe use thereof.
Good Code, Bad Code, and Looping   I rant and rave.
Hex Dump   A simple demonstration program, one step up from "Hello World".
Indexing Questions   FAIQ
Inverse F Distribution   A statistical utility.
Large vs. Small Functions   More ranting and raving.
Locking Native Files   A utility function for applying DOS or Windows locks to files (something that's needed when sharing files under Windows).
MATIOTA Function   A fundamental and indispensible utility function. Now with assembler source code!
MIME, uuencode, etc.   Basic information, links, and translators.
Multivariate Polynomials   Including the longest line of code I've written in years.
Non-Exponential Formatting   How to avoid seeing E in your numbers. A useful utility function; a rather hairy piece of advanced APL programming.
Permutations and Anagrams   Includes efficient subroutines for generating permutations.
Pushbutton Lock Puzzle   How the right data representation can make or break an algorithm.
Rubik's Cube   No, I don't solve the rude brick. This article is about efficiency, optimization, and hybrid (mixed-language) programming. It also has tutorial information about multidimensional arrays.
Set Game Puzzler   My original solution as posted to comp.lang.apl. Includes a subroutine for generating combinations, and benchmarks of APL vs. J.
Set Game Tutorial   A good demonstration of APL's facility at handling multidimensional arrays. Includes an explanation of the solution for APL novices.
Spelling Numbers   A simple utility that would be a good introductory tutorial if I added a step-by-step trace. For now, you'll have to practice reading APL code.
StepView Debugger   This is another indispensible utility that my colleagues and I rely on.
Sunrise/Sunset, Moonrise/Moonset   APL versions of two utility programs from Sky & Telescope magazine.
32-bit to 64-bit Real Conversion   A useful program along with some information on modelling execution time.
User Command Processor   Probably my most useful tool, one that I use many times an hour when programming.
Word Wrap Puzzle   Includes Bob Smith's incredible domino-based solution.

JimW's Home Page