<webmake>
<content name="index.txt" format=text/et>
Where To?
---------
- <a href=http://taint.org/>My Weblog</a>
This is my weblog, and is the most frequently updated part of
this site. Recommended.
- <a href=home/>My Homepage</a>
If you're wondering who I am, or how to get in contact, this is probably
worth a visit.
</content>
<content name="travelsmap.source" src="map/tst.html"></content>
<content name="map/index.txt" format=text/et>
My Travels
----------
This is a map of my travels over the past few years. Most
of the interesting bits are due to a round-the-world trip in 2001/2002...
<div align=center>
${travelsmap.source}
</div>
Thanks to <a href=http://joi.ito.com/>Joi Ito</a> for putting up <a
href=http://joi.ito.com/archives/2003/04/07/flash_map_of_my_travels_this_year.html>his own map</a>; without that, I'd never have known about <a
href=http://www.bryanboyer.com/indyjunior/>Bryan Boyer's nifty IndyJunior</a>
flash mapping tool.
</content>
<content name="home/index.txt" format=text/et>
About Me
---------
I currently work on <a href=http://spamassassin.org>SpamAssassin</a>.
In 2001/2002, I <a href=$(map/index)>did some wandering around Australia, NZ,
Southeast and South Asia for a year</a>, which was great fun and highly
recommended. (While I was over there, I found out that the
spam filter product I'd come up with had gone and become big news,
hitting Wired News and the New York Times without me! I wound
up giving quotes to Wired from an internet cafe in Bombay, which was
pretty crazy.)
Before that, I was working at <a href=http://www.netnoteinc.com/>Netnote</a>,
hacking on the <a href=http://www.netnoteinc.com/>Webnote</a>, which
originally was a low-cost internet access device (but has mutated in
various other directions since).
Previously, I was the IONA sysadmin for four years or so, right when they
started up -- I was one of the first employees, and wound up with employee
number 1, which got right up Annrai's nose. He shoulda done a Steve Jobs,
and renumbered from zero ;)
In June 1993 I put up IONA's web server, which was one of the first 100
servers on the net, and the first Irish non-academic website; check out this
[[list of WWW servers [1]] from November '93 to get an idea of the web's size
in those days. I think IONA's was about number 70.
I recently came across IONA's listing in [[Marc Andressen's What's New list
[2]] (it's listed right at the end, Sep 3 1993). As an illustration of link
rot, it can't be beaten; after 6 years, virtually all the links in the entire
page now get 404s. Just in case this link ever goes off, a mirror of the
what's new list is kept [[here [4]].
[1]: WWW-servers.txt
[2]: http://www.ncsa.uiuc.edu/SDG/Software/Mosaic/Docs/old-whats-new/whats-new-0993.html
[3]: slack/
[4]: whats-new-0993.html#IONA
<IMG align=right SRC="AnimatedOrbixWeb.gif" ALT="[Powered By OrbixWeb]"
BORDER=0 HEIGHT=31 WIDTH=88> After a few years of sysadmin, I moved to
coding for IONA. I worked on Java and CORBA as part of the [[OrbixWeb [6]]
team, which was good fun, although it made me quite Java-phobic by the
end of it.
[6]: http://www.iona.com/
<IMG align=right SRC="wonderwall.gif" ALT="[Wonderwall logo]" BORDER=2
HEIGHT=23 WIDTH=90> I also wrote IONA's IIOP firewall security product,
Wonderwall. I didn't come up with the ludicrously dated name BTW, but I
__did__ manage to slip in a Subgenius reference, in the form of the magic
number 2965179317. (If you can't see the significance of this, take
a good look at this page's background image.)
Talking of the Subgenii, way back in 1993, I hacked up the very first
[[Subgenius web pamphlet [13]] from Rev. Kareem du Gristle's USENET one.
It was one of the first web pages put up in Ireland.
auto: [Subgenius]: http://www.subgenius.com/
[13]: $(TOP/)slack/
<img
src=http://jmason.org/watchcam/2002_June_in_India/thumbnails/taj_mahal_far.gif
align=right height=122 width=122 /> If you're looking for pictures, there's a
whole load of them up <a href=$(TOP/)albums/>here</a>, and a slightly
smaller and fuzzier batch from my Casio watch camera <a href=$(TOP/)/watchcam/>
here</a>.
If you're really interested in finding out what I'm thinking about __right
now__ -- I have a <a href=http://taint.org/>weblog</a>.
As many other techies have experienced, I occasionally get drafted in as a
de-facto web designer for family and friends. Naturally, having written <a
href=http://webmake.taint.org/>WebMake</a>, that's what I use to build those
sites ;)
So here's a couple worth plugging:
- <a href=http://www.barrymasonphoto.com/>Barry Mason Photography, fine photography of the built environment</a>: my Dad's business -- he's a (very good) architectural photographer in Ireland.
- <a href=http://www.andaluciaphotogallery.com/>Andalucia Photo Gallery</a>: his side project, some beautiful photographs of Andalusia, in Spain.
<span style="display:none"><a href=$(TOP/)foojlist.php> </a></span>
<br clear=all />
</content>
<!-- <editcgi href="http://localhost/cgi-bin/webmake.cgi" />
<use plugin="editbuttons" path="/edit" /> -->
<contents src="raw" name="*.txt" format="text/et" />
<contents src="raw" name="*.css" format="text/html" />
<option name=EtTextOldLinkStyle value=0 />
<contents src=howto name="*.txt" format="text/et" />
<metatable delimiter="|">
.|title
index.txt|jmason.org: Where To?
contact.txt|jmason.org: Contact Details for Justin Mason
home/index.txt|jmason.org: About The Author
cv.txt|Resume/CV for Justin Mason
software_idx.txt|jmason.org: Software
uffizi.txt|jmason.org: Software: Uffizi
jfortune.txt|jmason.org: Software: JFortune
map/index.txt|jmason.org: My Wanderings
packf-unseen.txt|jmason.org: Software: packf-unseen
mhthread_idx.txt|jmason.org: Software: mhthread
</metatable>
<media src= name="*.gif" />
<media src= name="*.jpg" />
<media src=images/ name="*" />
<!-- -------------------------------------------------------------------- -->
<template name=header format="text/html">
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<title>$[this.title]</title>
<META NAME="keywords" CONTENT="Justin Mason, jmason, jm">
<META NAME="generator" CONTENT="${WebMake.GeneratorString}">
<LINK REL="icon" href="favicon.png" TYPE="image/png">
<link rel="meta" type="application/rdf+xml" TITLE="FOAF" href="$(TOP/)gems/my-foaf.xrdf" />
<link rel="alternate" type="text/html" title="Blog" href="http://taint.org/" />
<!-- ICBM coordinates file for ASF locator -->
<meta name="author" content="Justin Mason"/>
<meta name="ICBM" content="33.646059, -117.84237" />
<meta name="ASF.role" content="committer" />
<meta name="ASF.id" content="jm" />
<style>
${jmason.css}
</style>
<!--
Link to WPoison to thwart spambots:
<a href="/moreinfo.whtml">More Info</a>
It's illegal to put it here, but their
parsers won't know that.
-->
</head>
<body TEXT="#FFFFFF" BGCOLOR="#004000" LINK="#BBBB68" VLINK="#EEFFEE"
BACKGROUND="$(B0BD0BB5.gif)">
<font face="verdana,lucida,helvetica,sans-serif">${navbar}
<font size=-6><a href="/moreinfo.whtml"></a></font>
<hr>
</template>
<template name=footer format="text/html">
<hr>
<table width="98%"><tr><td valign=top>
<div align=left>
<a href="$(contact)"><img src="$(license_plate.jpg)"
ALT="jm /at/ jmason.org" border=0 height=40 width=136 /></a>
</div>
</td>
<td valign=top>
<div align=right>
<a href="http://webmake.taint.org/">
<img src="http://webmake.taint.org/BuiltWithWebMake.png"
width="88" height="31" border="0" alt="Built With WebMake" /></a>
</div>
</td>
</tr></table>
</font>
</body>
</html>
</template>
<!-- -------------------------------------------------------------------- -->
<template name=header_cv format="text/html">
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<title>$[this.title]</title>
<META NAME="keywords" CONTENT="Justin Mason, jmason, jm">
<META NAME="generator" CONTENT="${WebMake.GeneratorString}">
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<!--
Link to WPoison to thwart spambots:
<a href="/moreinfo.whtml">More Info</a>
-->
</head>
<body TEXT="#000000" BGCOLOR="#ffffff" LINK="#1B1B68" VLINK="#1E1F1E">
<table border="0" cellpadding="0" cellspacing="0" width="100%">
<tr>
<td bgcolor="#000000">
<table border="0" cellspacing="4" cellpadding="4" width="100%">
<tr>
<td bgcolor="#ffffff">
<table border="0" cellspacing="4" cellpadding="4" width="100%">
<tr>
<td>
<font face="verdana,lucida,helvetica,sans-serif">
</template>
<template name=footer_cv format="text/html">
</font>
</td>
</tr>
</table>
</td>
</tr>
</table>
</td>
</tr>
</table>
</body>
</html>
</template>
<!-- -------------------------------------------------------------------- -->
<template name=jmasonlogo>
<table width=100%>
<tr>
<td colspan=2>
<p align=center>
<img src=$(TOP/)jmason_org_bevel.png ${IMGSIZE}>
</p>
</td>
</tr>
</table>
</template>
<template name=navbar format="text/html"> <!-- navbar -->
<div align=center>
<table width=80%>
<tr>
<td>
Sites:
</td><td>
<font size="2">
<nobr>
[ <a href=$(TOP/)index.html>jmason.org</a> ]
</nobr>
<nobr>
[ <a href=http://taint.org/>taint.org</a> ]
</nobr>
</font>
</td>
</tr><tr>
<td>
<a href=$(TOP/)software/index.html>Downloads</a>:
</td><td>
<font size="2">
<nobr>[ <a href=http://spamassassin.org/>SpamAssassin</a> ]</nobr>
<nobr>[ <a href=http://sitescooper.org/>Sitescooper</a> ]</nobr>
<nobr>[ <a href=http://webmake.taint.org/>WebMake</a> ]</nobr>
<nobr>[ <a href=http://ettext.taint.org/>EtText</a> ]</nobr>
<nobr>[ <a href=$(uffizi)>Uffizi</a> ]</nobr>
<nobr>[ <a href=$(jfortune)>JFortune</a> ]</nobr>
<nobr>[ <a href=$(packfunseen)>packf-unseen</a> ]</nobr>
<nobr>[ <a href=$(mhthread)>mhthread</a> ]</nobr>
<nobr>[ <a href=$(scripts)>Misc scripts</a> ]</nobr>
<nobr>[ <a href=$(TOP/)software/index.html>Misc misc</a> ]</nobr>
</font>
</td>
</tr><tr>
<td>
About the author:
</td><td>
<font size="2">
<nobr>
[ <a href=$(contact)>Contact Me</a> ]
</nobr>
<nobr>
[ <a href=$(home/index)>About</a> ]
</nobr>
<nobr>
[ <a href=$(map/index)>Where</a> ]
</nobr>
<nobr>
[ <a href=$(cv)>CV / Resume</a> ]
</nobr>
<nobr>
[ <a href=http://taint.org/>Blog</a> ]
</nobr>
</font>
</td>
</tr></table></div>
<!-- /navbar -->
</template>
<template name=jmason_template>
${header}
<!-- body --> ${body} <!-- /body -->
${footer}
</template>
<template name=cv_template>
${header_cv}
<!-- body --> ${body} <!-- /body -->
${footer_cv}
</template>
<!-- -------------------------------------------------------------------- -->
<use plugin=thumbnail_tag />
<template name="thumbnail.thumbsize">240</template>
<template name="thumbnail.bordercolor">#000000</template>
<template name="thumbnail.borderwidth">1</template>
<template name="thumbnail.format">gif</template>
<template name="thumbnail.template">
<div align=center>
<a href="${thumbnail.href}"><img
src="${thumbnail.thumb_src}" alt="[${thumbnail.filename}]"
height="${thumbnail.height}" width="${thumbnail.width}"
border="0" ${thumbnail.tag_attrs} /></a>
<br />
<small><em>$[${thumbnail.name}.title]</em></small>
<br />
</div>
</template>
<!-- find all the directories, first off -->
<media src="watchcam" name=".../metadata.csv" namesubst="s/\/.*.csv//"
listname="all_image_dirs" />
<!-- --------------------------------------------------------------------- -->
<!-- and for each one... -->
<for name=dir values="${all_image_dirs}">
<!-- define a fake content item to attach the page title to -->
<content name="${dir}/index"></content>
<!-- and load the images and metadata up -->
<media src="watchcam/${dir}"
name="RE:.*\.gif"
metatable="metadata.csv" delimiter="|"
skip="*thumb*"
namesubst="s!^!${dir}\/!"
listname="all_images_${dir}"
/>
</for>
<!-- sort the image lists -->
<{perl
my @dirs = get_list ("all_image_dirs");
foreach my $dir (@dirs) {
my @list = get_list ("all_images_$dir");
set_list ("all_images_$dir", sort @list);
# warn "JMD: $dir: ".join(' ', @list)."\n";
}
'';
}>
<!-- and create the HTML indexes -->
<for name=dir values="${all_image_dirs}">
<content name="watchcam/${dir}.txt">
<h1>$[${dir}/index.title]</h1>
<div align=center><table>
<{perl make_thumbnail_table (3, get_list ("all_images_${dir}")); }>
</table></div>
</content>
<out name="watchcam/${dir}" file="watchcam/${dir}/index.html">
<{set body="${watchcam/${dir}.txt}"}>${jmason_template}
</out>
</for>
<template name=watchcam_index_item>
<li><a href=$(watchcam/${item})>$[${item}.title]</a></li>
</template>
<content name="watchcam/index.txt">
<wmmeta name="title" value="Photos from the Casio Watch Camera" />
<ul>
<{perl make_list ("watchcam_index_item", sort { $a cmp $b } get_list ("all_image_dirs")); }>
</ul>
</content>
<!-- -------------------------------------------------------------------- -->
<!-- files in top dir -->
<for name="out" values="index contact home/index watchcam/index">
<out file="${out}.html" name="${out}">
<{set body="${${out}.txt}"}>${jmason_template}
</out>
</for>
<out file="cv.html" name="cv">
<{set body="${cv.txt}"}>${cv_template}
</out>
<!-- cv template works nicely here -->
<out file="howto/subpixel.html" name="subpixel">
<{set body="${subpixel.txt}"}>${cv_template}
</out>
<out file="software/uffizi/index.html" name="uffizi">
<{set body="${uffizi.txt}"}>${cv_template}
</out>
<!-- files in software/ subdir -->
<for name="out" values="jfortune">
<out file="software/${out}.html" name="${out}">
<{set body="${${out}.txt}"}>${jmason_template}
</out>
</for>
<!-- --------------------------------------------------------------------- -->
<!-- scripts - make an index by reading the comments from the tops of
- the scripts, and using that for the text. Pretty simplistic this
- but the results are good.
-->
<contents src="software/scripts" name="*.txt" listname="all_scripts" />
<content name="scripts.txt">
<wmmeta name="title" value="Some Tidbits From ~/bin" />
<h1>$[this.title]</h1>
<p>Here's a few random scripts from my ~/bin. Please take 'em and
use 'em, but do note where they came from originally, it's simply
good manners.</p>
<hr />
<{perl
my @allscripts = get_list ("all_scripts");
foreach my $scr (sort @allscripts) {
print "making script index entry for $scr\n";
my $text = get_content ($scr);
my $scrname = $scr; $scrname =~ s/^.*\///g; $scrname =~ s/\.[^\.]+$//g;
my $desc = '';
my $inpod = 0;
foreach my $line (split (/^/m, $text)) {
if ($line =~ /^#!/) { next; }
if ($inpod) {
if ($line =~ /^=cut/) { last; }
if ($line =~ /^\s+/) { $line = "<code>$line</code><br />"; }
} else {
if ($line =~ /^\s*$/) { last; }
if ($line =~ /^=head1/) { $inpod = 1; }
}
$line =~ s/^#+\s+//g;
if ($line =~ /^$/) { $desc .= "</p><p>"; next; }
$line =~ s!^=head1 (.*)$!<strong>$1</strong>!g; # POD heading
$line =~ s/^\s*${scrname}\S* \-+ //; # comment heading
$desc .= $line;
}
$desc .= '';
$desc =~ s/^(?:<\/p><p>)+//; # trim empty paras at start
next if ($desc =~ /^(?:<\/p><p>)*$/); # just empty paras
$_ .= qq{
<p>
<a href=\$(TOP/)software/scripts/$scr>$scrname</a>:
$desc
</p>
<hr />
};
}
$_;
}>
</content>
<!-- -------------------------------------------------------------------- -->
<!-- exceptions due to legacy URLs ;) -->
<out file="map/index.html" name="map/index">
<{set body="${map/index.txt}"}>${jmason_template}
</out>
<out file="software/index.html" name="software/index">
<{set body="${software_idx.txt}"}>${jmason_template}
</out>
<out file="software/scripts/index.html" name="scripts">
<{set body="${scripts.txt}"}>${jmason_template}
</out>
<!-- old URLs -->
<out file="work.html">
<html><head> <meta http-equiv="Refresh" content="1; url=home/">
</head><body><A href=home/>Moved</A>, redirecting...</body></html></out>
<out file="home.html">
<html><head> <meta http-equiv="Refresh" content="1; url=home/">
</head><body><A href=home/>Moved</A>, redirecting...</body></html></out>
<out file="nonwork.html">
<html><head> <meta http-equiv="Refresh" content="1; url=home/">
</head><body><A href=home/>Moved</A>, redirecting...</body></html></out>
<{perl
system ("mkdir software/mhthread 2>/dev/null");
system ("cd software/scripts; tar cfz ../mhthread/mhthread.tar.gz mhthread.txt");
system ("cd software/scripts; pod2html mhthread.txt > ../mhthread/manpage.html");
system ("cd software/uffizi; pod2html uffizi.txt > pod.html");
'';
}>
<out file="software/packf-unseen/index.html" name="packfunseen">
<{set body="${packf-unseen.txt}"}>${jmason_template}
</out>
<out file="software/mhthread/index.html" name="mhthread">
<{set body="${mhthread_idx.txt}"}>${jmason_template}
</out>
<action event="site_changed">
<{perl
print "changed\n";
}>
</action>
</webmake>
|