Jeff Epler's software projects

For my more recent work, github serves as a pretty complete portfolio.

Here are a few of the software projects I worked on in the early 2000s:

7 October 2007, 13:20 UTC

l2h: A new converter from LyX to HTML (updated)


The internet is littered with abandonded converters from Latex or LyX to HTML, so why not add one more?

read more…

16 July 2006, 16:05 UTC

Skencil output converter for emc2


I've written a g-code output filter for the Python vector drawing program Skencil, formerly known as "Sketch".

read more…

29 April 2006, 21:58 UTC

Onscreen Crosshairs in tcl/tk


I was staring too long at a screenshot of a graph on some web page, wishing I could tell if two things lined up. Well, inspiration struck, and this program was born. Two windows—one that is one pixel wide, and another that is one pixel tall—are created, and they follow the mouse around every 1/10 second or so. They're displaced by one pixel so that clicking will hit the underlying window, not the crosshair.

I apologize for the changing colors, since xor isn't available with this simple method of drawing the lines, it's the only way to be sure to get contrast. I considered making the color depend on e.g., whether SHIFT is pressed, but if Tk provides this information to a window that doesn't have focus, I overlooked it in the manpages.

read more…

13 January 2006, 5:02 UTC

Aether: getting rid of the extra URL component


Aether likes to have its own directory component, which I called "index.cgi" on all the sites I've set up. Finally, I have changed my webserver configuration to get rid of this need, while keeping the old site layout working (I think).

read more…

18 December 2005, 3:49 UTC

pam_ssh



A console login mediated by pam_ssh
This is neat. pam_ssh "provides single sign-on behavior for SSH. The user types an SSH passphrase when logging in (probably to GDM, KDM, or XDM) and is authenticated if the passphrase successfully decrypts the user's SSH private key. In the PAM session phase, an ssh-agent process is started and keys are added. For the entire session, the user can SSH to other hosts that accept key authentication without typing any passwords."

The only snag I ran into on FC2 was that the script in /etc/X11/xdm/Xsession unconditionally started a fresh ssh-agent, even if $SSH_AGENT_PID was already set. I changed the SSHAGENT= line to read [ -x /usr/bin/ssh-agent && -z "$SSH_AGENT_PID" ] && SSHAGENT="/usr/bin/ssh-agent" and then everything worked. I'm now using it for console and gdm logins on one of my machines.

On FC2 I built the rpm from the tarball. It looks like FC4 has one available via yum.

Update 2006/01/09: I was having trouble with pam_ssh not leaving an ssh-agent running the next time I logged in after a crash (dead battery). I discovered that the problem was that leftover ~/.ssh/agent-* files would trick pam_ssh into thinking that an appropriate ssh-agent was already running. I now remove these files in /etc/rc.local when booting.

[permalink]

10 December 2005, 0:06 UTC

Reverse Engineering the Samsung ML-2010 laser printer


Ingrid recently bought a Samsung ML-2010 laser printer. The price was attractive, and it seems to be a good printer. However, there is either the choice of a an open-source driver for a different printer model, one which doesn't support the 1200x600DPI mode, or a closed-source driver which comes on the included CDROM.

I'm going to try to reverse engineer the new format, which is called "SPL II" in the GUI and "QPDL" in the generated file (@PJL ENTER LANGUAGE = QPDL). My approach is to print a postscript file using the binary driver, saving the result to a local file. At no time do I plan to disassemble the binary software provided by Samsung.

read more…

9 December 2005, 1:30 UTC

Netflix to Aether converter


I use the code below to create the netflix sidebar on the front page of my blog. I offered it to Michael, so I suppose I'd better post it here.

It features elementtree-based parsing, timestamp-based caching of the rss file (not the parsing result), and output into aether markup.

Files currently attached to this page:

nfq.py1.3kB

[permalink]

1 December 2005, 2:10 UTC

Decyphering an assertion


A few weeks ago, I posted a humdinger of an assertion.

A little investigation shows that this is actually the very legible

assert (strncmp (repository, current_parsed_root->directory,
                 strlen (current_parsed_root->directory)) == 0);
Read on for the sordid details of glibc's internal "optimizations".

read more…

27 November 2005, 21:38 UTC

Stippler 1.0 source release


I finally got around to writing my own dithering algorithm, so now all parts of stippler are under a clear GPL license.

Stippler is software for turning greyscale images into "stippled" images. I have have discussed it before on my blog.

Stippler is based on the reasearch of Adrian Secord, but the implementation is my own.

Files currently attached to this page:

stippler-1.0.tar.bz27.9kB

read more…

21 November 2005, 23:03 UTC

The best assertion ever

21 November 2005, 17:54 UTC

Hershey Vector Fonts

9 September 2005, 14:56 UTC

Fuse-python 0.9 rereleased under LGPL

3 July 2005, 18:36 UTC

Aethertool 0.6 Released

17 June 2005, 15:26 UTC

Controlling EMC with a joystick

14 June 2005, 21:14 UTC

Inter-entry links for Æther

5 June 2005, 1:44 UTC

Comments for Æther

4 June 2005, 21:26 UTC

Swishing revisited

20 May 2005, 16:39 UTC

Aether commandline tools v2

16 May 2005, 13:36 UTC

Commandline tools for Æther

9 May 2005, 1:57 UTC

Vector patches for xmame 0.94

All older entries

bullet novelwriting: A program for generating texts based on a grammar (like the dada engine). I used it to implement my parody of freshmeat.net which is now defunct.
Website Copyright © 2004-2024 Jeff Epler