Steve Fink Hacking Resume
Open source projects I have released:
- Math::Calc::Units: Unit calculator
- Net::Chat::Daemon: Automatable Jabber daemon
- Parse::Vipar: Graphical LR-family Parser Debugger
- Parse::YALALR: LALR(1) parser generator (for use with Parse::Vipar)
- perl-bison: Simple port of Bison to generate perl-language
parsers.
- debug, a simple script to fire up
emacs running either GDB or perldb on whatever file you specify.
(usage: debug command args...)
Open source projects I have contributed to:
- Trueprint:
Wrote the perl code parser
- ltrace:
Contributed patch to add structures, arrays, bugfixes, new options.
- RPM-Tools:
Code cleanups, various minor feature additions.
- Perl: Removed all shift/reduce conflicts from the grammar.
- Perl6
- Wrote several RFCs
- Implemented the (Perl6-style) parameter passing for Sean O'Rourke's
perl6 compiler.
- Implemented (restricted) rules (aka "regular expressions", though
they are not regular nor simple expressions any longer) in the perl6
compiler.
- Many more things by now, but I'm not keeping this page up to date.
- Parrot (the VM
intended to run Perl6 code)
- Implemented proof-of-concept opcode dispatcher (as a modification
to a dispatcher Ken Fox wrote.) before the Parrot project every really
got underway.
- Bugfixes
- Early rewrite of *.ops file parser & code generator.
- Revived converter from Parrot bytecode files to straight C files that use
computed gotos.
- Wrote a regular expression compiler and optimizer.
- Wrote an alternative regular expression Parrot backend (obsolete).
- Implemented a memory buffer header subclassing mechanism.
- Wrote
running.pod to document how to use the parts of the
system. Er... and lots of other documentation, later.
- Initial implementation of hashtables.
- Debugging support for the memory management subsystem.
- Improved STABS information to allow gdb to debug JITted code.
- Release pumpking for versions 0.0.8-0.0.11
- And by now, a truckload more. Search the perl6-internals@perl.org
archive for my name if you want the
full details.
- Several improvements to Raphael Manfredi's CGI::Test module.
Revised to use LWP for processing requests. Added pluggable factory
methods for easier extension through subclassing. My
changes may have never made it in, because he passed the
maintainership over to me, and I never did anything with it (such as
release a new version with my changes). Now Steven Hilton has taken
over maintainership and appears to be doing a far better job than I
did.
- Mozilla: Contributed
several detailed bug reports (developers will understand
why I feel this is worth listing.)
- sfio
bugfixes
- RPM .spec file for PCPmon
- ...others I've forgotten...
Unreleased open source:
- memcat, a simple tool to read
out the memory image of a running program.
- Linux kernel patch to /proc filesystem, adding descriptions of the
files pointed to by file descriptors.
- Mutt patch to
allow send-hooks to change the subject line. Here's a description of what I use this for.
- Netscape browser shell plugin, allowing any shell script to
be used as a plugin. (I use it to run wvHtml on Word files.)
- Logging proxy server for
arbitrary TCP/IP connections. Everyone ought to write at least one of
these.
- Binary RPM autogenerator: Uses strace to monitor filesystem
writes, and generates a simple binary RPM for just about anything.
- rpmdate: Trivial utility for
printing out the date when an RPM was installed, or listing all RPMs
with their installation timestamp. Try rpmdate procps and
rpmdate to see both uses. Use the latter to figure out all
the RPMs you've installed since you originally installed Linux.
- MMX assembly code algorithm for efficiently "unzipping" a
stream of pixel byte values: RGBRGBRGBRGB -> RRRRGGGGBBBB. This is
a core operation for many image manipulation programs -- but I never
got around to sending it off to Intel or somebody who might make use
of it. Larry Rowe of UC
Berkeley might have, though, since I first described it to him
(after he posed the problem in class). Dunno. And for all I know,
Intel may have added other opcodes to MMX by now to make this trivial.
- emacs/gdb/process: A command-line script (I call it
debug) to run a program under gdb within an emacs
window. Useful for inserting into an automated script to make it pop
up a window as soon as it reaches the interesting part, since the
environment will be set up correctly and the input will be fed through
correctly. This has saved me much time and headache over the
last few years.
- Solution to the halting
problem.
- Chromium BSU (game): Added a new enemy type.
- httptunnel: Rewrote large chunks of this to support
multiple tunneled connections with a single process, and add
identifiers to the clients in order to perform access control.
Actually, I did send an early version of the access control stuff to
the maintainer, but I don't think it went anywhere. I have not yet
released the big changes because they're far too buggy at the moment,
and I've no time to fix them. (But I'm using it in production anyway,
so am required by the GPL and common decency to send them to you if
you ask, so go ahead if you're interested.)
Master's project:
- Astra: Resource optimization of C
code through automatic conversion to continuation-passing style, which
by the way almost implies automated thread safety, but not really; I
only mentioned it because it has a few extra buzzwords. Piece o' crap,
really.
Proprietary source:
- Added Perl as a scripting language to a real-time, full-body
interactive display system (at Reactrix).
- Blah blah blah. Need to add more junk here from Reactrix & TVHead
work.
- Very large scale clustered text indexing engine: hundreds
of gigabytes / day, clustered on commodity hardware to index terabytes
of data.
- Content-scanning email firewall
- RPC IDL code generator: Converts IDL spec to C and perl
code for reading and writing binary data structures, and generating
usage messages.
- Incremental demultiplexing binary message parser: A set of
C routines for incrementally parsing binary messages from multiple
input sources. (A callback-based event system.)
- Signed applet for uploading local files to our server.
[NOTE: I only worked on bugfixes and UI aspects of this using the AWT
API.]
- Visual memory snapshot generator and leak/violation
detector, for both malloc-based and region-based memory management.
- Perl/Tk event trace visualizer for clustered system.
- Cross-platform Javascript button for POSTing the current
selection to a form.
- Gazillions of special-purpose utilities and code libraries: test
data generators, graph generators, cross referencers, install and test
harnesses, etc.
Presentations and Publications
- Presentation of Parse::Vipar at the 4th Perl Conference in
Monterey, CA.
Note: I don't know how you got to this page, but if you did and you're
interested in any of the unreleased open source projects I mentioned
(or the patches, not all of which have made it into the official
release), let me know and I will be happy to scrape them together in
some usable form.
Steve Fink <steve@fink.com>