Andrew Ho Resume ---------------- This is my resume. I've always kept at least three versions of my resume: one for print, one in HTML for the web, and one in text to e-mail to engineers and submit to text resume submission forms. Previously, I had three seperate source files to make this happen. One was in LaTeX, which I used with the hyperref package for generating hyperlinked PDF files with Adobe Acrobat; one in HTML, for on-line viewing and searching; and a final version in plain ASCII text, suitable for e-mailing. Keeping these three versions synchronized was a royal pain. I treated the LaTeX (and hence PDF) version as definitive, cut-and-pasted the text into the HTML document, and used a simple Perl script and Lynx to reformat the HTML into an attractive text document. It occurred to me that keeping the information in a structured format would be profitable both for my own convenience, and as a learning experience. Accordingly, the latest incarnation of my resume is a structured XML document which is parsed by a Perl script and output to each desired file format: text, HTML, and hyperlinked PDF. The bulk of this code was originally written in 2000, and was my first experience with parsing XML. If I were to write my resume from scratch today, I'd probably use XSLT stylesheets to solve this problem (probably still with a final custom HTML to text conversion step, as XSLT doesn't really solve the old-fashioned text justification problem). But the bulk of the work would be to reproduce the painstakingly crafted templates themselves, so this doesn't seem justified at the moment. See INSTALL for the summary of how to actually generate the resume. Resume.pm --------- Hindsight shows that Resume.pm might better be called XML::Dispatch, as it is a general-purpose subclass of XML::Parser which throws a dispatch table of subroutines at XML code. Each time an XML tag is encountered, the subroutine pointed at in the dispatch table by that tag is run, with the enclosed text as an argument. The behavior is hence similar to the XML::DT module, but stylistically less idiosyncratic. Following standard Perl procedure, documentation is embedded in Resume.pm in POD (Plain Old Documentation) format. If you have a standard Perl install, view this documentation by typing: % perldoc Resume.pm Or, search for the string "=head" in Resume.pm. Copyright and Contact Information --------------------------------- The resume XML source, any Perl code which processes it, and the processed output are all copyright (C) 2000-2003 Andrew Ho. The Perl code may be freely redistributed, copied, or edited, as long as credit is given for its original source. Andrew can be reached at andrew@zeuscat.com. $Id$