This page gives an arbitrary, partial selection of the projects I care
about: that seem like interesting research ideas, or good features for
programs I distribute, or programs I'd use if they existed. It's probably
biased towards smaller things I'd otherwise forget. Please email me at kohler@icir.org
to discuss.
- Make Click's driver loop more adaptive. The driver loop can be
summarized like this: ``Run 128 tasks. Every run (= 128 tasks), check to
see if the driver should be stopped. Every 32 runs (= 4096 tasks), check to
see if any timers have expired. Every 256 runs (= 32768 tasks), run the
Linux scheduler.'' This works pretty well as long as tasks are cheap;
unfortunately, sometimes they're not. A single task can take several
seconds to complete (for example, some dump-reading elements when given a
low SAMPLE rate). One answer is to make tasks uniformly cheap, but that's
too restrictive. Better would be to make Click's driver loop adaptive: if
it takes too long, it reduces the number of tasks per run, or runs per
timer-check. Some profiling would be useful, too: maybe, at user level,
it'd be equally cheap to check timers every single run.
- Improve FreeBSD kernel Click. BSD Click's file system support is
rudimentary, and it the module as a whole isn't well tested.
- Add write-read handlers to Click. This would add an RPC-like
semantic to Click's current read-only/write-only handlers. You could open a
handler with O_RDWR permission. (Maybe if O_TRUNC isn't supplied, the
handler is read first.) After writing, the flush() system call would call
the write-read handler with the accumulated data; that handler would return
a string which the user could read from the file. Hard to seek() in this
model, so we'd probably disallow seek() on all handlers. From discussions
with Luigi Rizzo.
- Click for network simulation.
- Click regression test suite.
- Click element repository.
- Click configuration checking tools. ``Packets following path XYZ
will be missing the IP header annotation, which Z requires,'' and similar
checks. Does any generic checker/optimizer exist for this kind of
compiler-like graph property?
- The übertool. A language/system for writing more general
Click tools; basically a generic optimizer. Specifies dataflow properties
of elements and what to do when a particular element exhibits a particular
property.
- Operating system ideacule: progress bars on the command
line.
- Compound element keyword arguments.
- Package up and distribute the ipaggcreate/ipcounter
program.
- T1utils should handle fonts in Type 2 format but not CFF format
(that's a separate project).
- A program that translates OpenType/CFF fonts to Type 1 fonts,
including AFM metrics. You should be able to tell the converter which
features to turn on, and have it generate the appropriate character set and
ligature and kern specifications.
- Xwrits should be optionally compilable with GNOME/KDE support
(probably GNOME). I want a dialog window that lets people graphically set
its options.
- Release intrigue: Make a timeline showing when releases of the
various packages I distribute came out, to get a handle on how much time I
waste.
Graphic note: I recently (February 2002) read Alan
Bartram's Five hundred years of book design, a fun illustrated
polemic on Famous Books of the Semimillenium by a British designer. Boy is
he British: he talks about ``national characteristics''; he savages most
every American typographer, overlooking similar faults in
fellow-countrymen. He especially despises needless punctuation, like
periods, at the end of headings, which was common until the late 1800s.
``Why,'' he seems to ask people three hundred years dead, ``didn't you
realize that period was unnecessary?!'' Pleasantly aggravating. I
thought I'd include a period in this heading. I couldn't: it looked
ridiculous.
Return to Eddie Kohler
|