anil madhavapeddy //


Review2Atom is a result of my experiments with Ocamlduce, which is an extension to allow statically-typed XML processing using OCaml. The first problem I wanted to solve was an easy way to publish my (and friends) academic paper reviews while writing up our PhD theses. The application just grabs a set of "paper review files" in XML format and outputs them as an Atom feed suitable for aggregation. It also supports a simple Wiki-style markup to quickly markup content in the paper review.


Create a configuration file in ~/.review2atom.conf in the following format:

  <title>Anil's Paper Feed</title>

  <!-- Any relative hrefs in your feed will use this as the base -->

  <!-- Feed URL should be the online location of the Atom feed -->

    <name>Anil Madhavapeddy</name>

Invoke the program with the list of review XML files to be converted into the Atom feed. The atom feed is output directly to stdout, so redirect it somewhere useful.

$ cp review2atom.conf.sample ~/.review2atom.conf
 (edit as appropriate)
$ review2atom ~/reviews/*.xml > ~/public_html/mypaperfeed.xml

Review XML format

Each review file should be in the following format:

    <!-- Title of the paper -->

    <!-- Online URL for the work -->

    <!-- What problem are they trying to solve? -->

    <!-- None or more categories to tag this paper under.
         Can be comma separated, or multiple tags specified
         depending on your preference -->
    <tag term="security,privacy" />
    <tag term="mobile" />

    <!-- Dump the bibtex in here.  If possible, try to get a good
         entry from or similar. -->

    <!-- All tags below this point are optional -->
    <!-- What is their approach? -->

    <!-- How do they evaluate their work? -->

    <!-- What is your opinion on this work? -->

    <!-- What future work does this lend itself to? -->

    <!-- Misc comments go in here -->

Text Markup

Inside the tags, you can use Wiki-style text markup to avoid having to code in XHTML directly. The system is broadly based on Textile but is much simpler. Any phrase to be marked up must have whitespace at the start and end (or be the start/end of the tag) to be transformed to avoid catching normal punctuation.

  • Block modifiers work from the start of a paragraph and create headers and lists.

    • Newline results in a <p> tag for the paragraph.
    • bq. turns paragraph into a <blockquote>.
    • # starts a numeric list <ol>.
    • * starts a bulleted list <ul>.
  • Inline modifiers can appear repeatedly inside a block of text.

    • _emphasis_  =  emphasis (<em>emphasis</em>)
    • __italics__  =  italics (<i>italics</i>)
    • *strong*  =  strong (<strong>strong</strong>)
    • **bold**  =  bold (<b>bold</b>)
    • ??citation??  =  citation (<cite>citation</cite>)
    • -deleted text-  =  deleted text (<del>deleted text</del>)
    • +inserted text+  =  inserted text (<ins>inserted text</ins>)
    • ^superscript^  =  superscript (<sup>superscript</sup>)
    • ~subscript~  =  subscript (<sub>subscript</sub>)
    • PhD(Piled Higher and Deeper)  =  PhD (mouse-over the acronym to see its definition)
    • "linktext":url to create hyperlinks


You will need OCamlduce and the calendar library to compile review2atom. Both of these are available in Darwinports (for MacOS X) or in the OpenBSD ports tree.

review2atom-0.1.tar.gz (md5: ee102be232d3ce9821c6fbd815ef5d1a)

Change Log

23 September 2005: Initial 0.1 test release.