This document has a standard, validated CSS2 stylesheet, which your browser does not seem to display properly. In a browser supporting web standards, this table of contents would be fixed at the side of the page for easy reference.
Welcome to the anastigmatix.net home page. At present it contains collected links to work I have done in a variety of software systems and programming languages. More will be added.
Java |
As a member of the
Secure Software Systems group
at Purdue University, I developed a “pragma” mechanism for
the Java language that facilitated Java-in-Java virtual machine
development where important non-Java properties needed to be associated
with Java methods. I used dummy exceptions, but the technique would be
even more natural using Java 1.5 annotations. I lucked into the
distinction of having the first non-IBM contribution
incorporated into IBM Watson's
Jikes Research Virtual Machine.
The same mechanism,
incorporated in the
Ovm Project, developed into Ovm's rather
flexible
object model
and
stitcher (a staged version of the
AbstractFactory design pattern), described in a
technical report
and an
IVME paper.
Much of the work was motivated by interest in increasing the portability
of the memory-management research toolkit
MMTk.
|
As a member of Purdue's Center for Education and Research in Information Assurance and Security, I studied the problem of processing audit logs without loss of information, described in these publications, and developed a Java toolkit for Sun BSM log parsing. | |
Some utilities of general use to Java programmers are on the Giant Java Tree. One package is devoted to Unicode. The ByteString class is intended to help programmers shake the damaging habit of treating bytes and characters as kind of sort of more or less the same, and the documentation introduced the notions of provincial and provincial-safe code for thinking clearly about what kind of problem that is in a given situation. | |
Most of my work in Java has been internals, libraries, system code, nothing with a visible pretty face. An exception is a Java applet that uses a bit of experiment design (and a good Java numerics library) to get at a design-recovery problem in musical instrument repair. | |
PostScript | Java was hardly the first language to support platform-independent programming through compatible implementations on many platforms in mass distribution. For twenty years it has been likely that a printer, display, or other output device near you is programmed in the PostScript language from Adobe Systems—and it is a language with a lot to recommend it for any job involving text or graphical creation, from one-off jobs with fussy details to database publishing, archival, and print-on-demand applications. I have a set of pages presenting work I have done in PostScript, including modules to simplify character encoding and Unicode issues, an extension for staged metaprogramming in PostScript, lightweight modules for simple text setting and the TeX algorithm for hyphenation, and a survey of sophisticated typesetting resources by others that can be combined with these to good effect. |
ANTLR | ANother Tool for Language Recognition is Terence Parr's parser/scanner/translator generator with back-ends for many languages including Java, C#, C++, and Python. I used ANTLR heavily in the development of the BSM audit log parser mentioned above, and in the process managed to influence the development of ANTLR's token-stream facilities and its support of Unicode. (The BSM work did not require Unicode, but I saw that neither ANTLR nor JavaCC had credible support for it and that ANTLR had a chance to take a leading role.) |
Forth | From my interest in the on-board programming possibilities of PalmOS PDAs came a number of enhancements to Neal Bridges's Quartus Forth programming environment. The theme was better integration of the language with the underlying system: unifying the exception handling of Forth, PalmOS, and the 68k processor; providing Forth access to the IEEE single- and double-precision floating point operations available in the OS, and to a shared numerics library; adding mechanisms to precompile library modules to multiple PalmOS resources of position-independent code outside of Forth's 16-bit code space, and managing the multiple data and code space, resource and feature naming, and initialization/finalization issues that result. |