<?xml version="1.0" encoding="utf-8"?>
<?xml-stylesheet type="text/xsl" href="/style/atom.xsl"?><feed xmlns="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/"
      xmlns:dcterms="http://purl.org/dc/terms/"
      xml:lang="EN-us">
   <title>Norman.Walsh.name</title>
   <subtitle>
Norm's musings. Make of them what you will.
</subtitle>
   <link rel="alternate" type="text/html" href="http://norman.walsh.name/"/>
   <link rel="self" href="http://norman.walsh.name/atom/whatsnew-fulltext.xml"/>
   <id>http://norman.walsh.name/atom/whatsnew.xml</id>
   <updated>2010-09-01T12:07:55Z</updated>
   <author>
      <name>Norman Walsh</name>
   </author>
   <entry>
      <title>Mexico</title>
      <link rel="alternate" type="text/html"
            href="http://norman.walsh.name/2010/08/31/mexico"/>
      <id>http://norman.walsh.name/2010/08/31/mexico</id>
      <published>2010-08-31T22:32:53Z</published>
      <updated>2010-09-01T12:07:55Z</updated>
      <category term="mexico" scheme="http://technorati.com/tag/"/>
      <dc:subject>Mexico</dc:subject>
      <category term="photographs" scheme="http://technorati.com/tag/"/>
      <dc:subject>Photography</dc:subject>
      <category term="pubsigns" scheme="http://technorati.com/tag/"/>
      <dc:subject>PubSigns</dc:subject>
      <category term="travel" scheme="http://technorati.com/tag/"/>
      <dc:subject>Travel</dc:subject>
      <summary type="xhtml">
         <div xmlns="http://www.w3.org/1999/xhtml">
            <p xmlns:v="urn:schemas-microsoft-com:vml">Cancun and a day trip to the Riviera Maya brings me to country number 16.</p>
         </div>
      </summary>
      <content type="xhtml" xml:base="http://norman.walsh.name/2010/08/31/mexico">
         <div xmlns="http://www.w3.org/1999/xhtml">
            <div xmlns:v="urn:schemas-microsoft-com:vml" class="abstract">
               <p>Cancun and a day trip to the Riviera Maya brings me to country number 16.</p>
            </div>
            <p xmlns:v="urn:schemas-microsoft-com:vml" id="p1">Mexico is <a href="http://norman.walsh.name/2009/10/05/dominicanrepublic"
                  title="Dominican Republic"
                  shape="rect">country number sixteen</a> for me. While Deb was working in the <a href="http://norman.walsh.name/2009/10/05/dominicanrepublic"
                  title="Dominican Republic"
                  shape="rect">Dominican Republic</a>, she won a few free nights at another resort. (She won it by pulling me in front of the crowd so we could learn some sort of latin dance; by all rights, it's probably the luckless audience forced to watch me dance that
deserved the free nights.)</p>
            <p xmlns:v="urn:schemas-microsoft-com:vml" id="p2">We chose to spend those days, plus a couple more, in <a href="http://en.wikipedia.org/wiki/Canc%C3%BAn" title="Wikipedia: Cancún"
                  shape="rect">Cancún</a> a week or so ago.</p>
            <div xmlns:v="urn:schemas-microsoft-com:vml" class="artwork">
               <div class="flickr-photo">
                  <div class="photo" style="width: 500px">
                     <a href="http://www.flickr.com/photos/ndw/4941755232/" shape="rect">
                        <img border="0" alt="[Photo]"
                             src="http://farm5.static.flickr.com/4098/4941755232_fba97c7d09.jpg"/>
                     </a>
                  </div>
                  <div class="link" style="left: 225px;">
                     <a href="http://www.flickr.com/" shape="rect">
                        <img border="0" alt="[Flickr]" src="/graphics/flickrt.png"/>
                     </a>
                  </div>
                  <h3>Sun Palace beach</h3>
               </div>
            </div>
            <p xmlns:v="urn:schemas-microsoft-com:vml" id="p3">We relaxed a little, but also did our best to explore as much as we could of the beautiful country.</p>
            <div xmlns:v="urn:schemas-microsoft-com:vml" class="artwork" id="map"
                 style="width: 540px; height: 540px;"/>
            <script xmlns:v="urn:schemas-microsoft-com:vml" type="text/javascript"
                    src="/script/gmapfunc.js"
                    xml:space="preserve">
</script>
            <script xmlns:v="urn:schemas-microsoft-com:vml" type="text/javascript"
                    xml:space="preserve">
//
if (GBrowserIsCompatible()) {
   var map = new GMap2(document.getElementById("map"));
   configureMap(map, 20.7378215, -87.6500985, 8);

   var points;
        points = [trkPt(21.044065, -86.782025, 47.240000, "2010-08-20T18:51:36Z", 0.000000, "unk", '/1'),
                  trkPt(21.043678, -86.782140, 25.130000, "2010-08-20T18:52:46Z", 0.027698, 1.424484, '/3'),
                  trkPt(21.043768, -86.782091, 19.840000, "2010-08-20T18:53:20Z", 0.034661, 0.737176, '/5'),
                  trkPt(21.043828, -86.782106, 19.360000, "2010-08-20T18:54:04Z", 0.038910, 0.347680, '/7'),
                  trkPt(21.044099, -86.782113, 18.400000, "2010-08-20T18:54:24Z", 0.057606, 3.365256, '/8'),
                  trkPt(21.044673, -86.782172, 18.400000, "2010-08-20T18:55:04Z", 0.097376, 3.579274, '/10'),
                  trkPt(21.044895, -86.782184, 19.840000, "2010-08-20T18:55:22Z", 0.112706, 3.066108, '/11'),
                  trkPt(21.045152, -86.782245, 24.170000, "2010-08-20T18:55:42Z", 0.130861, 3.267839, '/12'),
                  trkPt(21.045217, -86.782169, 21.770000, "2010-08-20T18:56:04Z", 0.137496, 1.085779, '/14'),
                  trkPt(21.045415, -86.782104, 20.810000, "2010-08-20T18:56:20Z", 0.151778, 3.213536, '/15'),
                  trkPt(21.045605, -86.782076, 21.770000, "2010-08-20T18:56:34Z", 0.165006, 3.401344, '/16'),
                  trkPt(21.045802, -86.782095, 16.960000, "2010-08-20T18:56:53Z", 0.178648, 2.584739, '/17'),
                  trkPt(21.045806, -86.782085, 16.960000, "2010-08-20T18:57:10Z", 0.179347, 0.148067, '/18'),
                  trkPt(21.045997, -86.782115, 19.840000, "2010-08-20T18:57:27Z", 0.192661, 2.819421, '/19'),
                  trkPt(21.046013, -86.782108, 17.440000, "2010-08-20T18:57:43Z", 0.193853, 0.268268, '/20'),
                  trkPt(21.046040, -86.782123, 16.960000, "2010-08-20T18:57:54Z", 0.195951, 0.686490, '/21'),
                  trkPt(21.046180, -86.782103, 17.920000, "2010-08-20T18:58:10Z", 0.205691, 2.191705, '/22'),
                  trkPt(21.046307, -86.782117, 16.480000, "2010-08-20T18:58:23Z", 0.214497, 2.438310, '/23'),
                  trkPt(21.046546, -86.782107, 18.400000, "2010-08-20T18:58:42Z", 0.230993, 3.125560, '/24'),
                  trkPt(21.046600, -86.782111, 19.360000, "2010-08-20T18:59:03Z", 0.234726, 0.640015, '/25'),
                  trkPt(21.046628, -86.782097, 21.290000, "2010-08-20T18:59:55Z", 0.236856, 0.147490, '/26'),
                  trkPt(21.046907, -86.782071, 16.480000, "2010-08-20T19:00:19Z", 0.256171, 2.897218, '/27'),
                  trkPt(21.047242, -86.782001, 13.600000, "2010-08-20T19:00:43Z", 0.279711, 3.530958, '/28'),
                  trkPt(21.047530, -86.781988, 14.560000, "2010-08-20T19:01:04Z", 0.299591, 3.408086, '/29'),
                  trkPt(21.047616, -86.781963, 13.120000, "2010-08-20T19:01:16Z", 0.305737, 1.843694, '/30'),
                  trkPt(21.047874, -86.781968, 10.710000, "2010-08-20T19:01:33Z", 0.323534, 3.768747, '/31'),
                  trkPt(21.048226, -86.781960, 9.750000, "2010-08-20T19:01:57Z", 0.347816, 3.642356, '/32'),
                  trkPt(21.048858, -86.781839, 14.560000, "2010-08-20T19:02:56Z", 0.392095, 2.701737, '/35'),
                  trkPt(21.049253, -86.781822, 16.480000, "2010-08-20T19:03:23Z", 0.419359, 3.635264, '/36'),
                  trkPt(21.049544, -86.781781, 15.520000, "2010-08-20T19:03:42Z", 0.439602, 3.835453, '/37'),
                  trkPt(21.049916, -86.781809, 16.960000, "2010-08-20T19:04:08Z", 0.465321, 3.561162, '/39'),
                  trkPt(21.050632, -86.781658, 16.960000, "2010-08-20T19:05:02Z", 0.515650, 3.355258, '/42'),
                  trkPt(21.050979, -86.781622, 22.250000, "2010-08-20T19:05:26Z", 0.539694, 3.606605, '/43'),
                  trkPt(21.051498, -86.781510, 22.730000, "2010-08-20T19:06:04Z", 0.576208, 3.459164, '/45'),
                  trkPt(21.051602, -86.781423, 21.770000, "2010-08-20T19:06:24Z", 0.585307, 1.637954, '/46'),
                  trkPt(21.051715, -86.781418, 20.810000, "2010-08-20T19:06:38Z", 0.593108, 2.005775, '/47'),
                  trkPt(21.051952, -86.781390, 22.250000, "2010-08-20T19:06:57Z", 0.609552, 3.115828, '/48'),
                  trkPt(21.052212, -86.781341, 24.170000, "2010-08-20T19:07:18Z", 0.627759, 3.121203, '/49'),
                  trkPt(21.052279, -86.781295, 26.090000, "2010-08-20T19:07:30Z", 0.633247, 1.646361, '/50'),
                  trkPt(21.052372, -86.781292, 23.210000, "2010-08-20T19:07:49Z", 0.639664, 1.215844, '/51'),
                  trkPt(21.052442, -86.781243, 22.730000, "2010-08-20T19:08:05Z", 0.645431, 1.297436, '/52'),
                  trkPt(21.052830, -86.781162, 23.690000, "2010-08-20T19:08:43Z", 0.672693, 2.582800, '/54'),
                  trkPt(21.053099, -86.781084, 24.650000, "2010-08-20T19:09:02Z", 0.691913, 3.641642, '/55'),
                  trkPt(21.053360, -86.781052, 24.170000, "2010-08-20T19:09:22Z", 0.710032, 3.261302, '/56'),
                  trkPt(21.053941, -86.780892, 25.610000, "2010-08-20T19:10:06Z", 0.751404, 3.385058, '/58'),
                  trkPt(21.054334, -86.780824, 27.530000, "2010-08-20T19:10:37Z", 0.778860, 3.188413, '/60'),
                  trkPt(21.055265, -86.780484, 21.770000, "2010-08-20T19:12:58Z", 0.846697, 1.731996, '/66'),
                  trkPt(21.055229, -86.780401, 20.320000, "2010-08-20T19:13:06Z", 0.852588, 2.650952, '/67'),
                  trkPt(21.054616, -86.780541, 13.120000, "2010-08-20T19:13:51Z", 0.895815, 3.458188, '/69'),
                  trkPt(21.053999, -86.780619, 14.080000, "2010-08-20T19:14:55Z", 0.938664, 2.410242, '/72'),
                  trkPt(21.053401, -86.780780, 16.000000, "2010-08-20T19:15:34Z", 0.981189, 3.925394, '/75'),
                  trkPt(21.052279, -86.781060, 12.630000, "2010-08-20T19:16:51Z", 1.060643, 3.714719, '/79'),
                  trkPt(21.051858, -86.781231, 9.750000, "2010-08-20T19:17:27Z", 1.091695, 3.105190, '/81'),
                  trkPt(21.051058, -86.781438, 11.190000, "2010-08-20T19:18:24Z", 1.148455, 3.584887, '/85'),
                  trkPt(21.050084, -86.781610, 12.150000, "2010-08-20T19:19:28Z", 1.216537, 3.829587, '/88'),
                  trkPt(21.049348, -86.781782, 10.710000, "2010-08-20T19:20:16Z", 1.268491, 3.896558, '/90'),
                  trkPt(21.049084, -86.781793, 11.190000, "2010-08-20T19:20:36Z", 1.286712, 3.279850, '/91'),
                  trkPt(21.048803, -86.781794, 11.670000, "2010-08-20T19:20:56Z", 1.306093, 3.488452, '/92'),
                  trkPt(21.048433, -86.781882, 9.750000, "2010-08-20T19:21:21Z", 1.332232, 3.764091, '/93'),
                  trkPt(21.048136, -86.781933, 11.190000, "2010-08-20T19:21:41Z", 1.352977, 3.734112, '/94'),
                  trkPt(21.047812, -86.781947, 11.190000, "2010-08-20T19:22:03Z", 1.375341, 3.659571, '/95'),
                  trkPt(21.047378, -86.781949, 12.630000, "2010-08-20T19:22:32Z", 1.405274, 3.715770, '/96'),
                  trkPt(21.047021, -86.782018, 12.150000, "2010-08-20T19:22:55Z", 1.430293, 3.916038, '/97'),
                  trkPt(21.046354, -86.782085, 12.150000, "2010-08-20T19:23:41Z", 1.476497, 3.615947, '/99'),
                  trkPt(21.045978, -86.782061, 13.120000, "2010-08-20T19:24:06Z", 1.502475, 3.740849, '/100'),
                  trkPt(21.045327, -86.782100, 12.150000, "2010-08-20T19:24:49Z", 1.547444, 3.764819, '/102'),
                  trkPt(21.045086, -86.782110, 12.630000, "2010-08-20T19:25:05Z", 1.564077, 3.742615, '/103'),
                  trkPt(21.044785, -86.782102, 13.120000, "2010-08-20T19:25:25Z", 1.584843, 3.737870, '/104'),
                  trkPt(21.044459, -86.782106, 14.560000, "2010-08-20T19:25:47Z", 1.607329, 3.679406, '/105'),
                  trkPt(21.044151, -86.782059, 16.480000, "2010-08-20T19:26:08Z", 1.628785, 3.678282, '/106'),
                  trkPt(21.043870, -86.782081, 16.960000, "2010-08-20T19:26:29Z", 1.648217, 3.331156, '/107'),
                  trkPt(21.043736, -86.782149, 16.480000, "2010-08-20T19:26:43Z", 1.658443, 2.629565, '/108'),
                  trkPt(21.043866, -86.782402, 15.040000, "2010-08-20T19:27:46Z", 1.677033, 1.062304, '/113'),
                  trkPt(21.044208, -86.782717, 20.320000, "2010-08-20T19:28:31Z", 1.708138, 2.488346, '/116'),
                  trkPt(21.044154, -86.782846, 21.290000, "2010-08-20T19:28:35Z", 1.717238, 8.190456, '/117')];

        for (var i = 0; i &lt; points.length; i++) {
           createPoint(points[i]);
        }

        map.addOverlay(new GPolyline(points, "#ff0000", 2));

        points = [trkPt(21.060292, -86.780389, 38.590000, "2010-08-21T15:07:35Z", 0.000000, "unk", '/1'),
                  trkPt(21.060921, -86.779907, 31.380000, "2010-08-21T15:07:44Z", 0.053332, 21.332827, '/3'),
                  trkPt(21.062149, -86.779504, 33.300000, "2010-08-21T15:07:54Z", 0.141908, 31.887410, '/4'),
                  trkPt(21.063422, -86.779344, 29.940000, "2010-08-21T15:08:02Z", 0.230307, 39.779493, '/5'),
                  trkPt(21.065066, -86.779705, 28.500000, "2010-08-21T15:08:11Z", 0.346047, 46.296147, '/6'),
                  trkPt(21.067235, -86.780220, 24.650000, "2010-08-21T15:08:21Z", 0.499268, 55.159504, '/7'),
                  trkPt(21.068935, -86.780592, 27.050000, "2010-08-21T15:08:30Z", 0.618934, 47.866419, '/8'),
                  trkPt(21.069560, -86.780492, 28.980000, "2010-08-21T15:08:34Z", 0.662518, 39.224848, '/9'),
                  trkPt(21.071552, -86.779716, 25.130000, "2010-08-21T15:08:46Z", 0.808699, 43.854314, '/10'),
                  trkPt(21.072936, -86.778886, 22.730000, "2010-08-21T15:08:54Z", 0.918081, 49.221976, '/11'),
                  trkPt(21.074830, -86.777631, 19.360000, "2010-08-21T15:09:12Z", 1.071660, 30.715820, '/13'),
                  trkPt(21.077002, -86.776995, 17.440000, "2010-08-21T15:09:30Z", 1.226951, 31.058170, '/15'),
                  trkPt(21.078791, -86.776441, 19.360000, "2010-08-21T15:09:41Z", 1.355383, 42.032456, '/16'),
                  trkPt(21.080706, -86.775808, 20.320000, "2010-08-21T15:09:52Z", 1.493597, 45.233758, '/17'),
                  trkPt(21.081645, -86.775563, 18.400000, "2010-08-21T15:09:58Z", 1.560251, 39.991879, '/18'),
                  trkPt(21.083517, -86.774720, 15.520000, "2010-08-21T15:10:10Z", 1.700294, 42.013018, '/19'),
                  trkPt(21.085715, -86.773877, 16.000000, "2010-08-21T15:10:22Z", 1.861301, 48.302165, '/20'),
                  trkPt(21.088353, -86.772798, 19.840000, "2010-08-21T15:10:38Z", 2.056039, 43.816103, '/22'),
                  trkPt(21.089673, -86.772126, 18.400000, "2010-08-21T15:10:49Z", 2.156826, 32.984760, '/23'),
                  trkPt(21.089955, -86.771946, 19.840000, "2010-08-21T15:10:55Z", 2.179463, 13.582192, '/24'),
                  trkPt(21.089672, -86.771185, 23.210000, "2010-08-21T15:11:22Z", 2.232179, 7.028802, '/27'),
                  trkPt(21.089355, -86.770676, 53.490000, "2010-08-21T15:16:13Z", 2.271559, 0.487177, '/30'),
                  trkPt(21.089258, -86.770645, 55.410000, "2010-08-21T15:16:47Z", 2.278540, 0.739152, '/31'),
                  trkPt(21.089342, -86.770681, 65.030000, "2010-08-21T15:17:53Z", 2.284780, 0.340333, '/32'),
                  trkPt(21.089261, -86.770585, 69.830000, "2010-08-21T15:18:36Z", 2.293108, 0.697283, '/33'),
                  trkPt(21.089331, -86.770729, 54.930000, "2010-08-21T15:19:09Z", 2.303557, 1.139853, '/35'),
                  trkPt(21.089554, -86.770580, 45.800000, "2010-08-21T15:19:21Z", 2.321681, 5.437205, '/36'),
                  trkPt(21.089694, -86.770775, 30.900000, "2010-08-21T15:19:28Z", 2.337514, 8.142752, '/38'),
                  trkPt(21.089710, -86.771047, 29.940000, "2010-08-21T15:19:33Z", 2.355052, 12.627100, '/39'),
                  trkPt(21.089942, -86.771572, 23.690000, "2010-08-21T15:20:09Z", 2.392433, 3.738086, '/41'),
                  trkPt(21.090008, -86.771856, 28.020000, "2010-08-21T15:20:48Z", 2.411266, 1.738466, '/44'),
                  trkPt(21.090061, -86.771859, 29.460000, "2010-08-21T15:20:51Z", 2.414926, 4.392325, '/45'),
                  trkPt(21.090475, -86.771718, 32.820000, "2010-08-21T15:21:03Z", 2.444886, 8.987973, '/46'),
                  trkPt(21.093579, -86.770202, 29.940000, "2010-08-21T15:21:35Z", 2.680144, 26.466455, '/49'),
                  trkPt(21.097948, -86.768233, 28.500000, "2010-08-21T15:22:07Z", 3.007021, 36.773679, '/51'),
                  trkPt(21.101508, -86.766386, 27.050000, "2010-08-21T15:22:34Z", 3.279800, 36.370520, '/53'),
                  trkPt(21.103873, -86.765107, 34.260000, "2010-08-21T15:23:32Z", 3.462495, 11.339730, '/58'),
                  trkPt(21.105035, -86.764366, 39.550000, "2010-08-21T15:23:54Z", 3.555747, 15.259359, '/60'),
                  trkPt(21.106688, -86.763596, 39.550000, "2010-08-21T15:24:10Z", 3.680052, 27.968646, '/62'),
                  trkPt(21.107725, -86.763404, 40.030000, "2010-08-21T15:24:20Z", 3.752632, 26.128671, '/63'),
                  trkPt(21.108827, -86.763230, 37.150000, "2010-08-21T15:24:29Z", 3.829455, 30.729455, '/64'),
                  trkPt(21.110054, -86.762906, 35.230000, "2010-08-21T15:24:40Z", 3.916610, 28.523275, '/65'),
                  trkPt(21.111241, -86.762359, 35.230000, "2010-08-21T15:24:50Z", 4.005720, 32.079692, '/66'),
                  trkPt(21.112320, -86.761588, 28.980000, "2010-08-21T15:25:00Z", 4.095155, 32.196689, '/67'),
                  trkPt(21.112674, -86.761240, 25.610000, "2010-08-21T15:25:04Z", 4.128282, 29.814425, '/68'),
                  trkPt(21.113180, -86.760550, 25.130000, "2010-08-21T15:25:13Z", 4.184751, 22.587452, '/69'),
                  trkPt(21.113881, -86.760087, 28.500000, "2010-08-21T15:25:22Z", 4.241538, 22.714968, '/70'),
                  trkPt(21.114318, -86.759505, 47.720000, "2010-08-21T15:25:52Z", 4.289606, 5.768129, '/74'),
                  trkPt(21.113891, -86.759312, 51.570000, "2010-08-21T15:26:21Z", 4.321567, 3.967511, '/78'),
                  trkPt(21.113900, -86.759222, 52.530000, "2010-08-21T15:26:47Z", 4.327390, 0.806336, '/81'),
                  trkPt(21.113936, -86.759331, 54.930000, "2010-08-21T15:27:23Z", 4.334830, 0.743965, '/85'),
                  trkPt(21.113827, -86.759132, 53.010000, "2010-08-21T15:28:02Z", 4.349677, 1.370512, '/89'),
                  trkPt(21.113942, -86.759072, 52.530000, "2010-08-21T15:28:28Z", 4.358498, 1.221364, '/91'),
                  trkPt(21.113804, -86.759181, 61.180000, "2010-08-21T15:29:28Z", 4.370320, 0.709337, '/94'),
                  trkPt(21.113837, -86.759120, 54.450000, "2010-08-21T15:31:38Z", 4.374857, 0.125643, '/95'),
                  trkPt(21.113961, -86.759169, 48.200000, "2010-08-21T15:32:21Z", 4.383972, 0.763084, '/96'),
                  trkPt(21.113988, -86.759009, 40.510000, "2010-08-21T15:33:30Z", 4.394433, 0.545805, '/98'),
                  trkPt(21.113921, -86.758941, 42.920000, "2010-08-21T15:34:03Z", 4.400797, 0.694203, '/99'),
                  trkPt(21.113674, -86.759188, 43.880000, "2010-08-21T15:35:13Z", 4.424094, 1.198130, '/101'),
                  trkPt(21.113842, -86.759906, 41.470000, "2010-08-21T15:35:35Z", 4.471720, 7.793361, '/103'),
                  trkPt(21.113979, -86.759867, 38.590000, "2010-08-21T15:35:42Z", 4.481496, 5.027715, '/104'),
                  trkPt(21.115325, -86.758552, 40.990000, "2010-08-21T15:36:11Z", 4.607098, 15.591913, '/108'),
                  trkPt(21.117306, -86.757420, 34.740000, "2010-08-21T15:36:35Z", 4.761924, 23.223947, '/110'),
                  trkPt(21.117500, -86.757349, 36.190000, "2010-08-21T15:36:37Z", 4.776062, 25.448576, '/111'),
                  trkPt(21.117713, -86.757319, 37.630000, "2010-08-21T15:36:40Z", 4.790879, 17.779914, '/112'),
                  trkPt(21.117885, -86.757260, 36.670000, "2010-08-21T15:36:49Z", 4.803334, 4.982104, '/113'),
                  trkPt(21.118116, -86.757264, 38.590000, "2010-08-21T15:37:10Z", 4.819268, 2.731524, '/114'),
                  trkPt(21.118667, -86.757327, 42.440000, "2010-08-21T15:37:19Z", 4.857485, 15.286953, '/115'),
                  trkPt(21.118919, -86.757261, 41.950000, "2010-08-21T15:37:22Z", 4.875376, 21.469615, '/116'),
                  trkPt(21.119595, -86.756673, 32.820000, "2010-08-21T15:37:33Z", 4.935416, 19.649403, '/117'),
                  trkPt(21.121646, -86.755596, 28.020000, "2010-08-21T15:37:53Z", 5.092930, 28.352447, '/119'),
                  trkPt(21.122133, -86.755241, 28.980000, "2010-08-21T15:37:58Z", 5.133547, 29.244394, '/120'),
                  trkPt(21.122589, -86.755099, 28.500000, "2010-08-21T15:38:02Z", 5.166297, 29.474796, '/121'),
                  trkPt(21.123116, -86.755077, 27.530000, "2010-08-21T15:38:06Z", 5.202671, 32.736711, '/122'),
                  trkPt(21.123359, -86.755057, 26.090000, "2010-08-21T15:38:08Z", 5.219480, 30.255839, '/123'),
                  trkPt(21.124933, -86.754455, 19.360000, "2010-08-21T15:38:21Z", 5.334738, 31.917757, '/124'),
                  trkPt(21.126234, -86.753633, 11.670000, "2010-08-21T15:38:31Z", 5.438891, 37.494839, '/125'),
                  trkPt(21.127418, -86.752514, 11.190000, "2010-08-21T15:38:41Z", 5.547751, 39.189708, '/126'),
                  trkPt(21.128949, -86.750825, 5.910000, "2010-08-21T15:38:56Z", 5.699263, 36.362934, '/128'),
                  trkPt(21.132093, -86.748216, 30.420000, "2010-08-21T15:39:30Z", 5.973470, 29.033620, '/131'),
                  trkPt(21.132433, -86.747995, 27.050000, "2010-08-21T15:39:44Z", 6.000892, 7.051517, '/132'),
                  trkPt(21.133615, -86.746684, 37.150000, "2010-08-21T15:40:05Z", 6.118189, 20.107949, '/134'),
                  trkPt(21.134203, -86.746238, 41.950000, "2010-08-21T15:40:12Z", 6.167865, 25.548069, '/135'),
                  trkPt(21.134771, -86.746051, 39.550000, "2010-08-21T15:40:18Z", 6.208845, 24.587819, '/136'),
                  trkPt(21.135517, -86.746529, 39.070000, "2010-08-21T15:40:26Z", 6.268784, 26.972637, '/137'),
                  trkPt(21.136361, -86.747928, 38.590000, "2010-08-21T15:40:38Z", 6.375965, 32.154236, '/138'),
                  trkPt(21.137650, -86.749385, 41.470000, "2010-08-21T15:41:17Z", 6.505147, 11.924519, '/142'),
                  trkPt(21.138030, -86.749911, 41.470000, "2010-08-21T15:41:28Z", 6.547947, 14.007080, '/143'),
                  trkPt(21.138142, -86.750504, 38.590000, "2010-08-21T15:41:35Z", 6.586868, 20.016422, '/145'),
                  trkPt(21.138122, -86.750841, 35.230000, "2010-08-21T15:41:38Z", 6.608590, 26.066925, '/146'),
                  trkPt(21.137925, -86.751375, 31.380000, "2010-08-21T15:41:43Z", 6.645531, 26.597250, '/147'),
                  trkPt(21.137386, -86.751884, 24.650000, "2010-08-21T15:41:49Z", 6.695069, 29.722904, '/148'),
                  trkPt(21.136186, -86.752327, 16.480000, "2010-08-21T15:41:58Z", 6.782600, 35.012575, '/149'),
                  trkPt(21.135822, -86.752560, 15.040000, "2010-08-21T15:42:01Z", 6.811839, 35.086475, '/150'),
                  trkPt(21.135135, -86.753621, 12.630000, "2010-08-21T15:42:10Z", 6.894926, 33.235003, '/151'),
                  trkPt(21.134789, -86.755035, 14.560000, "2010-08-21T15:42:20Z", 6.988966, 33.854410, '/152'),
                  trkPt(21.134812, -86.759268, 22.730000, "2010-08-21T15:42:46Z", 7.261278, 37.704708, '/154'),
                  trkPt(21.135292, -86.762186, 4.460000, "2010-08-21T15:43:43Z", 7.451889, 12.038543, '/159'),
                  trkPt(21.135587, -86.763356, 2.540000, "2010-08-21T15:43:53Z", 7.529855, 28.068044, '/160'),
                  trkPt(21.135982, -86.764504, 6.870000, "2010-08-21T15:44:02Z", 7.608570, 31.485784, '/161'),
                  trkPt(21.136582, -86.765848, 7.830000, "2010-08-21T15:44:11Z", 7.704421, 38.340399, '/162'),
                  trkPt(21.138582, -86.769594, 1.100000, "2010-08-21T15:44:38Z", 7.982081, 37.021392, '/164'),
                  trkPt(21.140248, -86.772184, -4.670000, "2010-08-21T15:45:00Z", 8.184469, 33.118020, '/166'),
                  trkPt(21.143361, -86.776516, -12.360000, "2010-08-21T15:45:33Z", 8.536249, 38.375965, '/169'),
                  trkPt(21.144013, -86.777811, -14.280000, "2010-08-21T15:45:42Z", 8.630913, 37.865634, '/170'),
                  trkPt(21.144253, -86.779015, -9.000000, "2010-08-21T15:45:51Z", 8.710110, 31.678834, '/171'),
                  trkPt(21.144262, -86.780486, -10.440000, "2010-08-21T15:46:01Z", 8.804735, 34.064953, '/172'),
                  trkPt(21.143963, -86.781710, 3.020000, "2010-08-21T15:46:10Z", 8.886125, 32.556108, '/173'),
                  trkPt(21.143065, -86.783779, 19.840000, "2010-08-21T15:46:43Z", 9.032920, 16.014014, '/176'),
                  trkPt(21.142821, -86.784998, 23.690000, "2010-08-21T15:46:54Z", 9.113119, 26.246928, '/177'),
                  trkPt(21.142865, -86.786382, 27.530000, "2010-08-21T15:47:06Z", 9.202198, 26.723719, '/178'),
                  trkPt(21.143222, -86.787620, 31.380000, "2010-08-21T15:47:19Z", 9.285553, 23.082943, '/179'),
                  trkPt(21.143742, -86.788703, 33.780000, "2010-08-21T15:47:32Z", 9.363908, 21.698141, '/180'),
                  trkPt(21.144552, -86.789713, 33.300000, "2010-08-21T15:47:42Z", 9.449592, 30.846396, '/181'),
                  trkPt(21.149791, -86.794009, 23.210000, "2010-08-21T15:48:39Z", 9.904477, 28.729539, '/186'),
                  trkPt(21.150055, -86.793625, 12.630000, "2010-08-21T15:49:11Z", 9.935162, 3.452145, '/188'),
                  trkPt(21.150489, -86.793363, 9.750000, "2010-08-21T15:52:21Z", 9.969513, 0.650852, '/192'),
                  trkPt(21.150564, -86.793371, 9.270000, "2010-08-21T15:52:36Z", 9.974711, 1.247634, '/193'),
                  trkPt(21.150497, -86.793231, 2.540000, "2010-08-21T15:54:50Z", 9.984833, 0.271926, '/196'),
                  trkPt(21.150629, -86.793306, 7.350000, "2010-08-21T15:55:45Z", 9.995136, 0.674388, '/199'),
                  trkPt(21.150666, -86.793272, 14.080000, "2010-08-21T16:03:58Z", 9.998497, 0.024543, '/201'),
                  trkPt(21.150593, -86.793282, 13.120000, "2010-08-21T16:04:09Z", 10.003573, 1.661116, '/202'),
                  trkPt(21.150616, -86.793305, 16.000000, "2010-08-21T16:16:46Z", 10.005741, 0.010312, '/205'),
                  trkPt(21.151361, -86.792851, 14.560000, "2010-08-21T16:21:32Z", 10.064842, 0.743922, '/215'),
                  trkPt(21.151239, -86.792528, 13.600000, "2010-08-21T16:25:35Z", 10.087257, 0.332079, '/221'),
                  trkPt(21.151456, -86.792197, 15.040000, "2010-08-21T16:26:00Z", 10.113281, 3.747537, '/222'),
                  trkPt(21.151835, -86.790428, 14.080000, "2010-08-21T16:27:28Z", 10.230031, 4.776134, '/225'),
                  trkPt(21.153223, -86.787378, 22.730000, "2010-08-21T16:29:53Z", 10.448323, 5.419660, '/236'),
                  trkPt(21.153646, -86.785849, 12.630000, "2010-08-21T16:30:37Z", 10.550907, 8.393195, '/239'),
                  trkPt(21.154074, -86.784689, 13.600000, "2010-08-21T16:31:09Z", 10.631146, 9.026971, '/240'),
                  trkPt(21.154441, -86.784032, 16.000000, "2010-08-21T16:31:27Z", 10.680406, 9.851903, '/241'),
                  trkPt(21.154992, -86.783270, 18.880000, "2010-08-21T16:31:47Z", 10.742425, 11.163445, '/242'),
                  trkPt(21.156054, -86.781498, 16.480000, "2010-08-21T16:32:32Z", 10.877907, 10.838565, '/244'),
                  trkPt(21.156724, -86.780875, 16.480000, "2010-08-21T16:32:51Z", 10.939071, 11.588929, '/245'),
                  trkPt(21.158098, -86.779992, 16.960000, "2010-08-21T16:33:24Z", 11.049550, 12.052286, '/248'),
                  trkPt(21.162054, -86.777959, 17.440000, "2010-08-21T16:34:47Z", 11.352106, 13.122919, '/254'),
                  trkPt(21.163062, -86.777550, 20.810000, "2010-08-21T16:35:07Z", 11.426438, 13.379605, '/256'),
                  trkPt(21.164144, -86.776911, 18.880000, "2010-08-21T16:35:31Z", 11.511631, 12.778987, '/259'),
                  trkPt(21.165949, -86.776054, 13.600000, "2010-08-21T16:36:09Z", 11.647776, 12.897996, '/261'),
                  trkPt(21.166952, -86.775642, 11.190000, "2010-08-21T16:36:30Z", 11.721854, 12.698964, '/262'),
                  trkPt(21.168028, -86.774993, 11.670000, "2010-08-21T16:36:53Z", 11.806998, 13.326874, '/263'),
                  trkPt(21.170346, -86.774167, 13.600000, "2010-08-21T16:37:38Z", 11.975463, 13.477219, '/265'),
                  trkPt(21.171220, -86.773659, 15.520000, "2010-08-21T16:37:56Z", 12.044026, 13.712716, '/266'),
                  trkPt(21.174983, -86.772163, 17.440000, "2010-08-21T16:39:09Z", 12.320816, 13.649909, '/273'),
                  trkPt(21.176184, -86.771721, 17.440000, "2010-08-21T16:39:32Z", 12.408390, 13.707151, '/275'),
                  trkPt(21.179318, -86.770180, 17.440000, "2010-08-21T16:40:34Z", 12.646175, 13.806865, '/279'),
                  trkPt(21.183058, -86.768738, 15.520000, "2010-08-21T16:41:45Z", 12.920282, 13.898383, '/283'),
                  trkPt(21.183990, -86.768309, 15.520000, "2010-08-21T16:42:03Z", 12.990231, 13.989867, '/284'),
                  trkPt(21.187973, -86.766335, 16.480000, "2010-08-21T16:43:21Z", 13.292847, 13.966888, '/289'),
                  trkPt(21.190452, -86.765474, 18.400000, "2010-08-21T16:44:08Z", 13.472562, 13.765446, '/292'),
                  trkPt(21.191216, -86.765093, 16.000000, "2010-08-21T16:44:23Z", 13.530672, 13.946335, '/295'),
                  trkPt(21.192221, -86.764526, 16.960000, "2010-08-21T16:44:44Z", 13.608991, 13.426043, '/297'),
                  trkPt(21.194360, -86.763184, 14.080000, "2010-08-21T16:45:28Z", 13.779902, 13.983628, '/301'),
                  trkPt(21.195094, -86.762831, 11.670000, "2010-08-21T16:45:42Z", 13.835381, 14.266130, '/302'),
                  trkPt(21.196072, -86.762438, 11.190000, "2010-08-21T16:46:00Z", 13.907411, 14.406049, '/303'),
                  trkPt(21.197083, -86.762146, 11.670000, "2010-08-21T16:46:18Z", 13.979623, 14.442295, '/304'),
                  trkPt(21.200108, -86.761171, 11.670000, "2010-08-21T16:47:07Z", 14.197470, 16.005124, '/307'),
                  trkPt(21.201304, -86.760846, 11.190000, "2010-08-21T16:47:26Z", 14.282563, 16.122871, '/308'),
                  trkPt(21.202561, -86.760546, 11.190000, "2010-08-21T16:47:46Z", 14.371377, 15.986558, '/309'),
                  trkPt(21.204702, -86.759688, 11.670000, "2010-08-21T16:48:21Z", 14.529010, 16.213590, '/311'),
                  trkPt(21.206517, -86.758914, 6.390000, "2010-08-21T16:48:51Z", 14.663719, 16.165077, '/313'),
                  trkPt(21.209329, -86.757455, 9.270000, "2010-08-21T16:49:39Z", 14.879156, 16.157843, '/316'),
                  trkPt(21.213705, -86.754893, 13.600000, "2010-08-21T16:50:55Z", 15.222993, 16.286983, '/320'),
                  trkPt(21.215064, -86.754311, 13.120000, "2010-08-21T16:51:17Z", 15.323915, 16.514584, '/321'),
                  trkPt(21.216372, -86.753684, 12.630000, "2010-08-21T16:51:39Z", 15.422724, 16.168749, '/322'),
                  trkPt(21.217451, -86.753258, 12.150000, "2010-08-21T16:51:57Z", 15.502022, 15.859566, '/323'),
                  trkPt(21.218717, -86.752696, 12.150000, "2010-08-21T16:52:18Z", 15.596518, 16.199283, '/324'),
                  trkPt(21.219540, -86.752286, 12.150000, "2010-08-21T16:52:32Z", 15.659102, 16.092960, '/325'),
                  trkPt(21.220749, -86.751552, 12.150000, "2010-08-21T16:52:54Z", 15.754913, 15.678200, '/326'),
                  trkPt(21.223789, -86.750134, 11.190000, "2010-08-21T16:53:43Z", 15.983541, 16.797191, '/328'),
                  trkPt(21.225031, -86.749367, 11.670000, "2010-08-21T16:54:02Z", 16.082380, 18.727383, '/329'),
                  trkPt(21.226160, -86.748560, 10.230000, "2010-08-21T16:54:21Z", 16.175948, 17.728597, '/330'),
                  trkPt(21.227373, -86.748117, 9.750000, "2010-08-21T16:54:42Z", 16.264322, 15.149897, '/331'),
                  trkPt(21.228682, -86.747579, 10.710000, "2010-08-21T16:55:04Z", 16.361001, 15.820237, '/332'),
                  trkPt(21.230466, -86.746548, 10.710000, "2010-08-21T16:55:34Z", 16.500759, 16.770952, '/333'),
                  trkPt(21.231574, -86.745857, 9.270000, "2010-08-21T16:55:55Z", 16.589151, 15.152838, '/334'),
                  trkPt(21.232546, -86.745407, 9.750000, "2010-08-21T16:56:18Z", 16.662165, 11.428223, '/335'),
                  trkPt(21.233453, -86.744732, 10.230000, "2010-08-21T16:56:39Z", 16.738297, 13.051267, '/336'),
                  trkPt(21.234223, -86.744009, 11.670000, "2010-08-21T16:57:00Z", 16.808870, 12.098287, '/337'),
                  trkPt(21.234916, -86.742932, 11.670000, "2010-08-21T16:58:05Z", 16.893002, 4.659590, '/341'),
                  trkPt(21.234959, -86.742716, 14.080000, "2010-08-21T16:58:25Z", 16.907201, 2.555794, '/342'),
                  trkPt(21.234749, -86.742112, 17.440000, "2010-08-21T17:04:23Z", 16.948643, 0.416738, '/351'),
                  trkPt(21.234984, -86.741628, 16.960000, "2010-08-21T17:05:44Z", 16.983726, 1.559240, '/356'),
                  trkPt(21.234941, -86.741489, 20.320000, "2010-08-21T17:12:20Z", 16.993141, 0.085591, '/362'),
                  trkPt(21.235015, -86.741677, 18.880000, "2010-08-21T17:12:37Z", 17.006260, 2.778220, '/364'),
                  trkPt(21.234779, -86.742204, 14.080000, "2010-08-21T17:13:27Z", 17.043846, 2.706196, '/367'),
                  trkPt(21.234821, -86.742345, 15.040000, "2010-08-21T17:13:58Z", 17.053362, 1.105074, '/369'),
                  trkPt(21.234868, -86.742473, 11.190000, "2010-08-21T17:23:41Z", 17.062206, 0.054611, '/376'),
                  trkPt(21.234616, -86.742797, 11.670000, "2010-08-21T17:24:07Z", 17.089334, 3.756124, '/377'),
                  trkPt(21.234169, -86.742979, 13.120000, "2010-08-21T17:24:28Z", 17.122308, 5.652798, '/378'),
                  trkPt(21.233569, -86.742692, 14.560000, "2010-08-21T17:24:48Z", 17.167617, 8.155487, '/379'),
                  trkPt(21.232677, -86.742060, 15.040000, "2010-08-21T17:25:12Z", 17.241343, 11.058889, '/380'),
                  trkPt(21.231137, -86.741230, 15.040000, "2010-08-21T17:25:40Z", 17.360205, 15.282281, '/381'),
                  trkPt(21.229430, -86.740222, 14.080000, "2010-08-21T17:26:07Z", 17.494591, 17.918222, '/382'),
                  trkPt(21.227968, -86.739232, 12.150000, "2010-08-21T17:26:31Z", 17.613831, 17.885933, '/383'),
                  trkPt(21.226203, -86.738164, 13.120000, "2010-08-21T17:26:59Z", 17.753590, 17.969057, '/384'),
                  trkPt(21.224485, -86.736729, 13.600000, "2010-08-21T17:27:29Z", 17.903760, 18.020354, '/385'),
                  trkPt(21.223350, -86.736039, 12.150000, "2010-08-21T17:27:47Z", 17.993736, 17.995135, '/386'),
                  trkPt(21.221531, -86.734839, 13.600000, "2010-08-21T17:28:17Z", 18.141014, 17.673441, '/387'),
                  trkPt(21.216675, -86.730902, 13.120000, "2010-08-21T17:30:04Z", 18.560821, 14.124349, '/391'),
                  trkPt(21.216074, -86.730367, 13.120000, "2010-08-21T17:30:19Z", 18.614685, 12.927343, '/392'),
                  trkPt(21.213280, -86.728205, 11.190000, "2010-08-21T17:31:13Z", 18.852289, 15.840275, '/394'),
                  trkPt(21.211817, -86.726785, 14.560000, "2010-08-21T17:31:43Z", 18.988366, 16.329216, '/395'),
                  trkPt(21.210189, -86.725022, 14.560000, "2010-08-21T17:32:18Z", 19.147917, 16.410954, '/398'),
                  trkPt(21.207110, -86.722088, 16.480000, "2010-08-21T17:34:00Z", 19.431965, 10.025236, '/404'),
                  trkPt(21.205415, -86.720198, 11.670000, "2010-08-21T17:35:11Z", 19.600590, 8.550001, '/409'),
                  trkPt(21.204568, -86.718760, 8.790000, "2010-08-21T17:36:12Z", 19.709960, 6.454622, '/413'),
                  trkPt(21.203695, -86.718106, 11.670000, "2010-08-21T17:37:01Z", 19.783402, 5.395676, '/416'),
                  trkPt(21.203242, -86.718013, 12.630000, "2010-08-21T17:37:23Z", 19.815212, 5.205283, '/417'),
                  trkPt(21.202913, -86.717914, 12.150000, "2010-08-21T17:37:40Z", 19.838778, 4.990618, '/418'),
                  trkPt(21.202542, -86.717635, 11.190000, "2010-08-21T17:38:02Z", 19.870028, 5.113617, '/419'),
                  trkPt(21.202367, -86.717144, 9.270000, "2010-08-21T17:38:17Z", 19.903828, 8.111981, '/420'),
                  trkPt(21.202080, -86.715132, 8.310000, "2010-08-21T17:39:08Z", 20.034706, 9.238448, '/423'),
                  trkPt(21.201996, -86.714179, 7.830000, "2010-08-21T17:39:38Z", 20.096258, 7.386197, '/425'),
                  trkPt(21.201304, -86.712643, 10.230000, "2010-08-21T17:40:58Z", 20.205951, 4.936178, '/430'),
                  trkPt(21.200657, -86.711958, 11.670000, "2010-08-21T17:42:36Z", 20.268651, 2.303261, '/437'),
                  trkPt(21.200513, -86.711728, 13.600000, "2010-08-21T17:43:23Z", 20.286465, 1.364514, '/441'),
                  trkPt(21.200405, -86.711696, 13.120000, "2010-08-21T17:43:31Z", 20.294193, 3.477369, '/442'),
                  trkPt(21.200350, -86.711699, 12.630000, "2010-08-21T17:43:34Z", 20.297990, 4.557476, '/443'),
                  trkPt(21.200083, -86.711909, 14.080000, "2010-08-21T17:43:49Z", 20.320826, 5.480408, '/444'),
                  trkPt(21.200024, -86.712217, 12.150000, "2010-08-21T17:43:59Z", 20.341044, 7.278704, '/445'),
                  trkPt(21.200451, -86.713496, 9.270000, "2010-08-21T17:44:35Z", 20.428399, 8.735522, '/447'),
                  trkPt(21.201182, -86.714760, 10.710000, "2010-08-21T17:45:10Z", 20.524043, 9.837618, '/449'),
                  trkPt(21.201914, -86.716761, 10.710000, "2010-08-21T17:46:01Z", 20.662259, 9.756420, '/453'),
                  trkPt(21.202570, -86.718060, 8.790000, "2010-08-21T17:46:24Z", 20.757252, 14.868434, '/455'),
                  trkPt(21.202894, -86.718244, 8.790000, "2010-08-21T17:46:36Z", 20.782536, 7.585437, '/456'),
                  trkPt(21.203267, -86.718378, 10.230000, "2010-08-21T17:46:49Z", 20.809666, 7.512910, '/457'),
                  trkPt(21.203975, -86.718572, 10.230000, "2010-08-21T17:47:11Z", 20.860065, 8.246976, '/458'),
                  trkPt(21.204297, -86.718744, 8.310000, "2010-08-21T17:47:26Z", 20.884874, 5.954260, '/459'),
                  trkPt(21.204998, -86.719370, 10.230000, "2010-08-21T17:47:59Z", 20.947784, 6.862882, '/461'),
                  trkPt(21.205773, -86.720358, 10.710000, "2010-08-21T17:48:35Z", 21.030806, 8.302259, '/463'),
                  trkPt(21.206304, -86.720928, 9.270000, "2010-08-21T17:48:54Z", 21.082618, 9.816963, '/464'),
                  trkPt(21.207084, -86.722150, 10.710000, "2010-08-21T17:49:31Z", 21.177842, 9.265071, '/466'),
                  trkPt(21.207797, -86.722807, 11.190000, "2010-08-21T17:49:54Z", 21.242671, 10.147050, '/467'),
                  trkPt(21.208540, -86.723615, 11.670000, "2010-08-21T17:50:19Z", 21.315644, 10.508080, '/468'),
                  trkPt(21.211005, -86.725750, 15.520000, "2010-08-21T17:51:28Z", 21.534155, 11.400591, '/471'),
                  trkPt(21.213181, -86.728137, 13.120000, "2010-08-21T17:52:10Z", 21.748812, 18.399154, '/473'),
                  trkPt(21.215354, -86.729639, 11.190000, "2010-08-21T17:52:43Z", 21.927101, 19.449708, '/475'),
                  trkPt(21.215958, -86.729891, 10.710000, "2010-08-21T17:52:57Z", 21.971798, 11.493577, '/476'),
                  trkPt(21.216610, -86.729907, 12.150000, "2010-08-21T17:53:17Z", 22.016777, 8.096324, '/477'),
                  trkPt(21.217154, -86.729898, 13.600000, "2010-08-21T17:53:38Z", 22.054301, 6.432621, '/478'),
                  trkPt(21.217772, -86.729733, 14.080000, "2010-08-21T17:55:36Z", 22.098224, 1.340030, '/482'),
                  trkPt(21.217501, -86.729990, 12.630000, "2010-08-21T17:55:57Z", 22.123172, 4.276686, '/483'),
                  trkPt(21.217986, -86.731211, 10.230000, "2010-08-21T17:56:51Z", 22.208504, 5.688807, '/486'),
                  trkPt(21.219268, -86.733139, 11.190000, "2010-08-21T17:57:32Z", 22.360764, 13.369218, '/488'),
                  trkPt(21.220623, -86.734564, 11.190000, "2010-08-21T17:57:56Z", 22.491635, 19.630627, '/489'),
                  trkPt(21.221995, -86.735857, 10.230000, "2010-08-21T17:58:19Z", 22.617590, 19.714628, '/490'),
                  trkPt(21.223503, -86.736855, 9.270000, "2010-08-21T17:58:42Z", 22.739794, 19.127694, '/491'),
                  trkPt(21.226984, -86.739721, 11.670000, "2010-08-21T17:59:37Z", 23.042432, 19.809000, '/494'),
                  trkPt(21.229018, -86.741086, 10.230000, "2010-08-21T18:00:07Z", 23.207902, 19.856375, '/495'),
                  trkPt(21.230888, -86.742111, 10.230000, "2010-08-21T18:00:34Z", 23.352733, 19.310814, '/496'),
                  trkPt(21.232758, -86.743241, 9.750000, "2010-08-21T18:01:01Z", 23.500757, 19.736538, '/497'),
                  trkPt(21.234463, -86.743847, 12.150000, "2010-08-21T18:01:25Z", 23.624634, 18.581635, '/498'),
                  trkPt(21.235841, -86.743997, 10.230000, "2010-08-21T18:01:46Z", 23.720162, 16.376112, '/499'),
                  trkPt(21.236704, -86.743950, 11.190000, "2010-08-21T18:02:05Z", 23.779759, 11.292054, '/500'),
                  trkPt(21.237405, -86.743744, 12.150000, "2010-08-21T18:02:26Z", 23.829887, 8.593403, '/501'),
                  trkPt(21.237957, -86.743304, 12.150000, "2010-08-21T18:02:49Z", 23.877315, 7.423593, '/502'),
                  trkPt(21.238533, -86.742990, 13.120000, "2010-08-21T18:03:09Z", 23.921876, 8.020863, '/503'),
                  trkPt(21.239350, -86.742733, 12.630000, "2010-08-21T18:03:33Z", 23.980595, 8.807969, '/504'),
                  trkPt(21.239624, -86.742231, 11.670000, "2010-08-21T18:03:49Z", 24.017992, 8.414280, '/505'),
                  trkPt(21.239839, -86.741203, 11.190000, "2010-08-21T18:04:12Z", 24.085720, 10.600804, '/506'),
                  trkPt(21.239835, -86.740500, 10.710000, "2010-08-21T18:04:36Z", 24.130912, 6.778896, '/507'),
                  trkPt(21.239653, -86.740149, 10.230000, "2010-08-21T18:05:05Z", 24.156732, 3.205267, '/508'),
                  trkPt(21.239252, -86.739847, 8.790000, "2010-08-21T18:05:26Z", 24.190523, 5.792636, '/509'),
                  trkPt(21.238428, -86.739431, 8.310000, "2010-08-21T18:06:01Z", 24.253331, 6.460267, '/510'),
                  trkPt(21.237632, -86.739102, 7.830000, "2010-08-21T18:06:38Z", 24.312163, 5.724240, '/511'),
                  trkPt(21.236791, -86.738688, 7.830000, "2010-08-21T18:07:17Z", 24.375981, 5.890838, '/512'),
                  trkPt(21.235249, -86.738082, 6.870000, "2010-08-21T18:08:20Z", 24.489242, 6.472057, '/514'),
                  trkPt(21.235022, -86.737959, 10.710000, "2010-08-21T18:08:44Z", 24.506781, 2.630928, '/515'),
                  trkPt(21.235461, -86.738214, 9.270000, "2010-08-21T18:09:38Z", 24.541212, 2.295361, '/517'),
                  trkPt(21.236397, -86.738544, 8.790000, "2010-08-21T18:10:17Z", 24.609163, 6.272443, '/518'),
                  trkPt(21.238652, -86.739534, 9.270000, "2010-08-21T18:11:51Z", 24.777206, 6.435690, '/521'),
                  trkPt(21.239423, -86.739922, 9.270000, "2010-08-21T18:12:22Z", 24.835941, 6.820763, '/522'),
                  trkPt(21.240206, -86.740510, 11.190000, "2010-08-21T18:12:48Z", 24.901858, 9.126992, '/523'),
                  trkPt(21.241548, -86.741133, 12.150000, "2010-08-21T18:13:30Z", 25.002707, 8.644238, '/525'),
                  trkPt(21.243002, -86.741866, 12.630000, "2010-08-21T18:14:12Z", 25.113507, 9.497103, '/526'),
                  trkPt(21.244071, -86.742231, 13.120000, "2010-08-21T18:14:38Z", 25.190878, 10.712956, '/527'),
                  trkPt(21.245574, -86.743024, 10.230000, "2010-08-21T18:15:14Z", 25.306394, 11.551634, '/528'),
                  trkPt(21.246968, -86.743672, 9.750000, "2010-08-21T18:15:47Z", 25.411173, 11.430388, '/529'),
                  trkPt(21.248176, -86.744423, 8.310000, "2010-08-21T18:16:16Z", 25.507463, 11.953264, '/530'),
                  trkPt(21.249563, -86.745160, 10.230000, "2010-08-21T18:16:48Z", 25.614212, 12.009188, '/531'),
                  trkPt(21.251000, -86.746139, 11.190000, "2010-08-21T18:17:23Z", 25.731611, 12.075389, '/532'),
                  trkPt(21.252186, -86.746869, 11.670000, "2010-08-21T18:17:55Z", 25.825912, 10.608843, '/533'),
                  trkPt(21.253124, -86.747652, 16.000000, "2010-08-21T18:18:27Z", 25.907877, 9.221094, '/534'),
                  trkPt(21.255436, -86.750304, 17.920000, "2010-08-21T18:20:17Z", 26.141297, 7.639187, '/538'),
                  trkPt(21.255750, -86.750932, 13.120000, "2010-08-21T18:20:42Z", 26.187105, 6.596437, '/539'),
                  trkPt(21.256062, -86.751901, 13.120000, "2010-08-21T18:21:08Z", 26.253002, 9.124198, '/540'),
                  trkPt(21.256463, -86.752821, 11.670000, "2010-08-21T18:21:32Z", 26.318285, 9.792394, '/541'),
                  trkPt(21.257334, -86.753667, 8.790000, "2010-08-21T18:22:14Z", 26.399314, 6.945313, '/543'),
                  trkPt(21.258050, -86.754160, 4.460000, "2010-08-21T18:22:44Z", 26.457988, 7.040964, '/544'),
                  trkPt(21.258960, -86.754581, 5.420000, "2010-08-21T18:23:05Z", 26.526335, 11.716626, '/545'),
                  trkPt(21.259899, -86.754828, 5.910000, "2010-08-21T18:23:25Z", 26.593015, 12.002329, '/546'),
                  trkPt(21.260686, -86.754666, 7.830000, "2010-08-21T18:23:40Z", 26.648283, 13.264415, '/547'),
                  trkPt(21.261282, -86.754292, 9.270000, "2010-08-21T18:24:00Z", 26.695902, 8.571358, '/548'),
                  trkPt(21.261484, -86.753851, 10.710000, "2010-08-21T18:24:16Z", 26.727486, 7.106369, '/549'),
                  trkPt(21.261474, -86.753059, 10.230000, "2010-08-21T18:24:58Z", 26.778396, 4.363738, '/551'),
                  trkPt(21.261393, -86.752820, 11.190000, "2010-08-21T18:25:19Z", 26.794742, 2.802175, '/552'),
                  trkPt(21.261177, -86.752807, 12.630000, "2010-08-21T18:25:47Z", 26.809663, 1.918374, '/553'),
                  trkPt(21.261268, -86.752693, 13.120000, "2010-08-21T18:26:40Z", 26.819311, 0.655324, '/555'),
                  trkPt(21.261241, -86.752625, 11.670000, "2010-08-21T19:03:13Z", 26.824062, 0.007799, '/575'),
                  trkPt(21.261500, -86.753793, 9.270000, "2010-08-21T19:04:17Z", 26.901231, 4.340751, '/578'),
                  trkPt(21.261355, -86.754445, 11.190000, "2010-08-21T19:04:39Z", 26.944315, 7.050090, '/579'),
                  trkPt(21.261063, -86.754760, 12.630000, "2010-08-21T19:04:54Z", 26.972872, 6.853694, '/580'),
                  trkPt(21.260401, -86.754983, 7.830000, "2010-08-21T19:05:12Z", 27.020726, 9.570915, '/581'),
                  trkPt(21.259575, -86.755173, 9.750000, "2010-08-21T19:05:27Z", 27.078989, 13.983064, '/582'),
                  trkPt(21.258258, -86.755147, 13.600000, "2010-08-21T19:05:50Z", 27.169837, 14.219643, '/583'),
                  trkPt(21.256437, -86.755037, 16.480000, "2010-08-21T19:06:22Z", 27.295628, 14.151562, '/584'),
                  trkPt(21.255182, -86.754911, 16.000000, "2010-08-21T19:06:44Z", 27.382563, 14.225616, '/585'),
                  trkPt(21.253852, -86.754574, 13.120000, "2010-08-21T19:07:05Z", 27.476815, 16.157470, '/586'),
                  trkPt(21.252549, -86.754166, 12.630000, "2010-08-21T19:07:25Z", 27.570430, 16.850749, '/587'),
                  trkPt(21.251815, -86.753833, 15.040000, "2010-08-21T19:07:57Z", 27.625392, 6.183297, '/589'),
                  trkPt(21.250563, -86.753318, 9.750000, "2010-08-21T19:08:36Z", 27.717870, 8.536373, '/591'),
                  trkPt(21.250069, -86.752992, 12.150000, "2010-08-21T19:08:51Z", 27.757869, 9.599786, '/592'),
                  trkPt(21.249434, -86.752663, 13.120000, "2010-08-21T19:09:13Z", 27.806503, 7.958306, '/593'),
                  trkPt(21.247860, -86.751664, 6.870000, "2010-08-21T19:10:14Z", 27.932632, 7.443652, '/595'),
                  trkPt(21.244453, -86.749255, 11.670000, "2010-08-21T19:12:46Z", 28.214046, 6.665087, '/603'),
                  trkPt(21.243225, -86.748719, 8.310000, "2010-08-21T19:13:39Z", 28.305481, 6.210640, '/606'),
                  trkPt(21.241867, -86.747982, 13.600000, "2010-08-21T19:14:36Z", 28.410441, 6.629093, '/609'),
                  trkPt(21.240456, -86.747066, 10.230000, "2010-08-21T19:15:12Z", 28.524185, 11.374351, '/611'),
                  trkPt(21.239184, -86.746435, 11.670000, "2010-08-21T19:15:32Z", 28.620837, 17.397443, '/612'),
                  trkPt(21.237861, -86.745718, 12.150000, "2010-08-21T19:15:53Z", 28.723064, 17.524609, '/613'),
                  trkPt(21.237031, -86.744722, 11.670000, "2010-08-21T19:16:11Z", 28.808951, 17.177320, '/614'),
                  trkPt(21.236481, -86.743946, 12.630000, "2010-08-21T19:16:29Z", 28.871621, 12.533919, '/615'),
                  trkPt(21.235226, -86.742469, 11.670000, "2010-08-21T19:17:46Z", 29.000102, 6.006933, '/618'),
                  trkPt(21.234840, -86.742243, 10.230000, "2010-08-21T19:21:11Z", 29.030431, 0.532599, '/627'),
                  trkPt(21.234795, -86.742265, 10.230000, "2010-08-21T19:21:30Z", 29.033841, 0.646238, '/628'),
                  trkPt(21.234723, -86.742131, 13.120000, "2010-08-21T19:21:56Z", 29.043785, 1.376751, '/631'),
                  trkPt(21.234985, -86.741705, 6.870000, "2010-08-21T19:22:42Z", 29.076595, 2.567752, '/634'),
                  trkPt(21.235024, -86.741438, 12.630000, "2010-08-21T19:23:05Z", 29.093969, 2.719388, '/637'),
                  trkPt(21.234889, -86.741357, 15.040000, "2010-08-21T19:23:54Z", 29.104637, 0.783765, '/639'),
                  trkPt(21.234933, -86.741336, 15.520000, "2010-08-21T19:24:14Z", 29.107958, 0.597888, '/640'),
                  trkPt(21.234859, -86.741332, 16.960000, "2010-08-21T19:24:40Z", 29.113068, 0.707543, '/641'),
                  trkPt(21.234925, -86.741368, 21.290000, "2010-08-21T19:27:01Z", 29.118175, 0.130382, '/646'),
                  trkPt(21.234841, -86.741395, 22.250000, "2010-08-21T19:27:12Z", 29.124223, 1.979304, '/647')];

        for (var i = 0; i &lt; points.length; i++) {
           createPoint(points[i]);
        }

        map.addOverlay(new GPolyline(points, "#ff0000", 2));

        points = [trkPt(21.234861, -86.741469, 30.900000, "2010-08-21T20:24:58Z", 0.000000, "unk", '/1'),
                  trkPt(21.234806, -86.741333, 17.440000, "2010-08-21T20:31:23Z", 0.009530, 0.089114, '/4'),
                  trkPt(21.234926, -86.741354, 16.480000, "2010-08-21T20:32:07Z", 0.017916, 0.686107, '/6'),
                  trkPt(21.234918, -86.741375, 21.290000, "2010-08-21T20:40:18Z", 0.019374, 0.010689, '/16')];

        for (var i = 0; i &lt; points.length; i++) {
           createPoint(points[i]);
        }

        map.addOverlay(new GPolyline(points, "#ff0000", 2));

        points = [trkPt(21.235021, -86.741268, 8.310000, "2010-08-21T20:42:03Z", 0.000000, "unk", '/1'),
                  trkPt(21.234951, -86.741449, 19.840000, "2010-08-21T20:42:13Z", 0.012598, 4.535133, '/2'),
                  trkPt(21.235001, -86.741625, 18.400000, "2010-08-21T20:42:28Z", 0.024426, 2.838769, '/3'),
                  trkPt(21.234719, -86.742195, 18.400000, "2010-08-21T20:43:23Z", 0.065911, 2.715377, '/7'),
                  trkPt(21.234842, -86.742277, 17.440000, "2010-08-21T20:43:53Z", 0.075898, 1.198487, '/9'),
                  trkPt(21.234846, -86.742255, 17.440000, "2010-08-21T20:44:06Z", 0.077340, 0.399422, '/10'),
                  trkPt(21.234918, -86.742248, 15.040000, "2010-08-21T20:51:32Z", 0.082327, 0.040246, '/11'),
                  trkPt(21.235044, -86.742402, 15.520000, "2010-08-21T20:52:03Z", 0.095499, 1.529758, '/13'),
                  trkPt(21.234897, -86.742644, 15.040000, "2010-08-21T20:52:19Z", 0.114069, 4.178068, '/14'),
                  trkPt(21.235060, -86.743112, 14.560000, "2010-08-21T20:52:33Z", 0.146186, 8.258861, '/15'),
                  trkPt(21.236706, -86.744597, 16.480000, "2010-08-21T20:53:15Z", 0.294514, 12.713762, '/17'),
                  trkPt(21.240589, -86.748450, 19.360000, "2010-08-21T20:54:48Z", 0.659302, 14.120827, '/20'),
                  trkPt(21.241801, -86.749454, 18.880000, "2010-08-21T20:55:13Z", 0.764909, 15.207436, '/21'),
                  trkPt(21.243206, -86.750433, 18.400000, "2010-08-21T20:55:40Z", 0.880453, 15.405904, '/23'),
                  trkPt(21.244218, -86.750916, 16.960000, "2010-08-21T20:55:57Z", 0.956844, 16.176916, '/25'),
                  trkPt(21.245474, -86.751787, 17.440000, "2010-08-21T20:56:21Z", 1.059988, 15.471653, '/28'),
                  trkPt(21.246557, -86.752301, 17.440000, "2010-08-21T20:56:41Z", 1.141664, 14.701510, '/30'),
                  trkPt(21.247867, -86.752760, 18.400000, "2010-08-21T20:57:04Z", 1.236709, 14.876628, '/32'),
                  trkPt(21.248044, -86.752773, 18.400000, "2010-08-21T20:57:07Z", 1.248945, 14.683512, '/33'),
                  trkPt(21.248658, -86.752802, 16.480000, "2010-08-21T20:57:17Z", 1.291333, 15.259686, '/34'),
                  trkPt(21.249211, -86.752695, 14.080000, "2010-08-21T20:57:28Z", 1.330088, 12.683507, '/35'),
                  trkPt(21.249678, -86.752468, 12.630000, "2010-08-21T20:57:38Z", 1.365448, 12.729470, '/36'),
                  trkPt(21.250257, -86.751937, 9.750000, "2010-08-21T20:57:52Z", 1.417980, 13.508414, '/38'),
                  trkPt(21.250604, -86.751501, 7.350000, "2010-08-21T20:58:06Z", 1.454834, 9.476708, '/39'),
                  trkPt(21.250987, -86.750316, 2.540000, "2010-08-21T20:58:38Z", 1.535456, 9.069897, '/42'),
                  trkPt(21.251237, -86.750015, 2.060000, "2010-08-21T20:58:48Z", 1.561372, 9.329780, '/43'),
                  trkPt(21.251386, -86.749626, 6.390000, "2010-08-21T20:59:02Z", 1.588406, 6.951562, '/44'),
                  trkPt(21.251858, -86.749112, 14.560000, "2010-08-21T20:59:33Z", 1.634788, 5.386343, '/45'),
                  trkPt(21.253075, -86.748113, 15.520000, "2010-08-21T21:00:27Z", 1.740470, 7.045454, '/47'),
                  trkPt(21.253836, -86.747819, 16.960000, "2010-08-21T21:01:04Z", 1.796254, 5.427631, '/48'),
                  trkPt(21.254434, -86.747767, 17.440000, "2010-08-21T21:01:38Z", 1.837632, 4.381279, '/49'),
                  trkPt(21.254801, -86.747689, 16.480000, "2010-08-21T21:02:17Z", 1.863436, 2.381855, '/50'),
                  trkPt(21.254960, -86.747563, 16.480000, "2010-08-21T21:03:22Z", 1.877069, 0.755045, '/52'),
                  trkPt(21.255092, -86.747512, 9.750000, "2010-08-21T21:07:52Z", 1.886745, 0.129016, '/59'),
                  trkPt(21.255490, -86.747247, 9.270000, "2010-08-21T21:09:01Z", 1.919050, 1.685493, '/65'),
                  trkPt(21.255565, -86.747249, 14.560000, "2010-08-21T21:09:17Z", 1.924224, 1.164096, '/66'),
                  trkPt(21.255651, -86.747045, 15.040000, "2010-08-21T21:10:50Z", 1.938615, 0.557093, '/70'),
                  trkPt(21.255584, -86.746799, 18.880000, "2010-08-21T21:11:44Z", 1.955089, 1.098236, '/74'),
                  trkPt(21.255831, -86.746606, 19.360000, "2010-08-21T21:13:00Z", 1.976163, 0.998230, '/77'),
                  trkPt(21.255812, -86.746549, 23.690000, "2010-08-21T21:18:18Z", 1.980054, 0.044047, '/79')];

        for (var i = 0; i &lt; points.length; i++) {
           createPoint(points[i]);
        }

        map.addOverlay(new GPolyline(points, "#ff0000", 2));

        points = [trkPt(21.255872, -86.746683, 12.150000, "2010-08-21T21:41:55Z", 0.000000, "unk", '/1'),
                  trkPt(21.255802, -86.746524, 8.310000, "2010-08-21T21:45:17Z", 0.011303, 0.201439, '/7'),
                  trkPt(21.255863, -86.746638, 6.870000, "2010-08-21T21:49:53Z", 0.019753, 0.110212, '/11'),
                  trkPt(21.255632, -86.746794, 9.270000, "2010-08-21T21:52:21Z", 0.038577, 0.457899, '/14'),
                  trkPt(21.255583, -86.747181, 8.310000, "2010-08-21T21:53:24Z", 0.063681, 1.434503, '/18'),
                  trkPt(21.255531, -86.747143, 8.310000, "2010-08-21T21:54:02Z", 0.068021, 0.411108, '/19'),
                  trkPt(21.255498, -86.747249, 11.190000, "2010-08-21T22:16:15Z", 0.075204, 0.019400, '/21'),
                  trkPt(21.255108, -86.747461, 7.350000, "2010-08-21T22:23:45Z", 0.105357, 0.241223, '/29'),
                  trkPt(21.254908, -86.747523, 7.830000, "2010-08-21T22:24:11Z", 0.119715, 1.988020, '/30'),
                  trkPt(21.254845, -86.747425, 2.060000, "2010-08-21T22:24:42Z", 0.127367, 0.888669, '/32'),
                  trkPt(21.254462, -86.747505, 1.100000, "2010-08-21T22:24:59Z", 0.154278, 5.698806, '/33'),
                  trkPt(21.253735, -86.747872, 3.980000, "2010-08-21T22:25:19Z", 0.209691, 9.974282, '/34'),
                  trkPt(21.252872, -86.748395, 4.940000, "2010-08-21T22:25:38Z", 0.278049, 12.952038, '/35'),
                  trkPt(21.251780, -86.749350, 4.940000, "2010-08-21T22:26:07Z", 0.375211, 12.061523, '/36'),
                  trkPt(21.250919, -86.750307, 5.420000, "2010-08-21T22:26:36Z", 0.460712, 10.613893, '/37'),
                  trkPt(21.249841, -86.751954, 7.350000, "2010-08-21T22:27:23Z", 0.590079, 9.908976, '/39'),
                  trkPt(21.249049, -86.752535, 6.390000, "2010-08-21T22:27:47Z", 0.656249, 9.925545, '/40'),
                  trkPt(21.246679, -86.753589, 4.460000, "2010-08-21T22:28:36Z", 0.833191, 12.999812, '/42'),
                  trkPt(21.245077, -86.754340, 3.020000, "2010-08-21T22:29:05Z", 0.953766, 14.967877, '/43'),
                  trkPt(21.243688, -86.754926, 3.500000, "2010-08-21T22:29:30Z", 1.056704, 14.823082, '/44'),
                  trkPt(21.242663, -86.755271, 3.500000, "2010-08-21T22:29:48Z", 1.130794, 14.818082, '/45'),
                  trkPt(21.241581, -86.755600, 4.460000, "2010-08-21T22:30:07Z", 1.208358, 14.696262, '/46'),
                  trkPt(21.240205, -86.755951, 4.940000, "2010-08-21T22:30:32Z", 1.305905, 14.046759, '/47'),
                  trkPt(21.238752, -86.756289, 4.940000, "2010-08-21T22:31:00Z", 1.408445, 13.183788, '/48'),
                  trkPt(21.237608, -86.756709, 4.460000, "2010-08-21T22:31:22Z", 1.491838, 13.646022, '/49'),
                  trkPt(21.235643, -86.757627, 8.790000, "2010-08-21T22:32:02Z", 1.639654, 13.303414, '/51'),
                  trkPt(21.232782, -86.758803, 11.670000, "2010-08-21T22:33:00Z", 1.850961, 13.115644, '/55'),
                  trkPt(21.229272, -86.760187, 10.230000, "2010-08-21T22:34:09Z", 2.108876, 13.456408, '/58'),
                  trkPt(21.228010, -86.760624, 10.230000, "2010-08-21T22:34:34Z", 2.200336, 13.170347, '/59'),
                  trkPt(21.225074, -86.761694, 2.540000, "2010-08-21T22:35:32Z", 2.414195, 13.273991, '/63'),
                  trkPt(21.223595, -86.762273, 4.940000, "2010-08-21T22:36:01Z", 2.522780, 13.479528, '/64'),
                  trkPt(21.222589, -86.762732, 5.420000, "2010-08-21T22:36:21Z", 2.598178, 13.571580, '/65'),
                  trkPt(21.221657, -86.763277, 7.350000, "2010-08-21T22:36:39Z", 2.671387, 14.641784, '/66'),
                  trkPt(21.220651, -86.763787, 9.750000, "2010-08-21T22:36:59Z", 2.748127, 13.813287, '/67'),
                  trkPt(21.219504, -86.764258, 7.350000, "2010-08-21T22:37:21Z", 2.832833, 13.860864, '/68'),
                  trkPt(21.218663, -86.764557, 5.910000, "2010-08-21T22:37:37Z", 2.893938, 13.748756, '/69'),
                  trkPt(21.215619, -86.765459, 8.310000, "2010-08-21T22:38:35Z", 3.111742, 13.518890, '/74'),
                  trkPt(21.213464, -86.766318, 3.500000, "2010-08-21T22:39:14Z", 3.270300, 14.636126, '/77'),
                  trkPt(21.211516, -86.767290, 3.500000, "2010-08-21T22:39:50Z", 3.418476, 14.817583, '/79'),
                  trkPt(21.210307, -86.767828, 2.540000, "2010-08-21T22:40:12Z", 3.508750, 14.772106, '/81'),
                  trkPt(21.208256, -86.768603, 2.540000, "2010-08-21T22:40:51Z", 3.658726, 13.843911, '/83'),
                  trkPt(21.205719, -86.769925, 1.100000, "2010-08-21T22:41:40Z", 3.853255, 14.291910, '/86'),
                  trkPt(21.202322, -86.771426, 4.460000, "2010-08-21T22:42:42Z", 4.106643, 14.712868, '/90'),
                  trkPt(21.199876, -86.772400, 3.020000, "2010-08-21T22:43:26Z", 4.286592, 14.723060, '/92'),
                  trkPt(21.198726, -86.772751, 3.500000, "2010-08-21T22:43:46Z", 4.369055, 14.843354, '/94'),
                  trkPt(21.195964, -86.773748, 3.980000, "2010-08-21T22:44:35Z", 4.570046, 14.766682, '/99'),
                  trkPt(21.193088, -86.774736, 6.870000, "2010-08-21T22:45:29Z", 4.778327, 13.885393, '/104'),
                  trkPt(21.191535, -86.775309, 3.980000, "2010-08-21T22:45:57Z", 4.891596, 14.563213, '/106'),
                  trkPt(21.190410, -86.775667, 2.540000, "2010-08-21T22:46:16Z", 4.972529, 15.334736, '/108'),
                  trkPt(21.188814, -86.776263, 4.460000, "2010-08-21T22:46:45Z", 5.089085, 14.469014, '/110'),
                  trkPt(21.188581, -86.776328, 3.980000, "2010-08-21T22:46:49Z", 5.105690, 14.943974, '/111'),
                  trkPt(21.188006, -86.776569, 3.500000, "2010-08-21T22:46:59Z", 5.148267, 15.328022, '/112'),
                  trkPt(21.187082, -86.777067, 3.980000, "2010-08-21T22:47:16Z", 5.219589, 15.103369, '/113'),
                  trkPt(21.184260, -86.778084, 7.350000, "2010-08-21T22:48:06Z", 5.424914, 14.783380, '/118'),
                  trkPt(21.183008, -86.778413, 7.830000, "2010-08-21T22:48:28Z", 5.513817, 14.547821, '/119'),
                  trkPt(21.181912, -86.778791, 7.350000, "2010-08-21T22:48:47Z", 5.593220, 15.044691, '/120'),
                  trkPt(21.179980, -86.779513, 5.910000, "2010-08-21T22:49:23Z", 5.734326, 14.110603, '/123'),
                  trkPt(21.179076, -86.779808, 7.830000, "2010-08-21T22:49:40Z", 5.799496, 13.800779, '/124'),
                  trkPt(21.178558, -86.779915, 8.310000, "2010-08-21T22:49:49Z", 5.835879, 14.553037, '/125'),
                  trkPt(21.177346, -86.780332, 6.870000, "2010-08-21T22:50:11Z", 5.923665, 14.365123, '/128'),
                  trkPt(21.176342, -86.780608, 7.830000, "2010-08-21T22:50:29Z", 5.995149, 14.296710, '/129'),
                  trkPt(21.175116, -86.780901, 9.750000, "2010-08-21T22:50:50Z", 6.081779, 14.850870, '/130'),
                  trkPt(21.172908, -86.781590, 6.870000, "2010-08-21T22:51:29Z", 6.240378, 14.639931, '/133'),
                  trkPt(21.171842, -86.781825, 7.830000, "2010-08-21T22:51:48Z", 6.315436, 14.221558, '/134'),
                  trkPt(21.170503, -86.782095, 8.790000, "2010-08-21T22:52:11Z", 6.409404, 14.707994, '/135'),
                  trkPt(21.167194, -86.782887, 7.350000, "2010-08-21T22:53:09Z", 6.643238, 14.513803, '/138'),
                  trkPt(21.166033, -86.783324, 6.390000, "2010-08-21T22:53:31Z", 6.728100, 13.886559, '/139'),
                  trkPt(21.162721, -86.785000, 8.310000, "2010-08-21T22:54:36Z", 6.980682, 13.989162, '/142'),
                  trkPt(21.161667, -86.785385, 8.310000, "2010-08-21T22:54:57Z", 7.057477, 13.164858, '/143'),
                  trkPt(21.160438, -86.785781, 7.830000, "2010-08-21T22:55:20Z", 7.145984, 13.853229, '/144'),
                  trkPt(21.159254, -86.786202, 6.390000, "2010-08-21T22:55:44Z", 7.232016, 12.904748, '/145'),
                  trkPt(21.158210, -86.786421, 5.910000, "2010-08-21T22:56:07Z", 7.305384, 11.483743, '/146'),
                  trkPt(21.157409, -86.786668, 6.870000, "2010-08-21T22:56:29Z", 7.362867, 9.406316, '/147'),
                  trkPt(21.156744, -86.786613, 6.390000, "2010-08-21T22:56:46Z", 7.408867, 9.741281, '/148'),
                  trkPt(21.156130, -86.786745, 7.350000, "2010-08-21T22:57:04Z", 7.452057, 8.637921, '/149'),
                  trkPt(21.155581, -86.787007, 6.870000, "2010-08-21T22:57:25Z", 7.493502, 7.104798, '/150'),
                  trkPt(21.154944, -86.787132, 5.910000, "2010-08-21T22:57:52Z", 7.538165, 5.955045, '/151'),
                  trkPt(21.154565, -86.787181, 5.910000, "2010-08-21T22:58:06Z", 7.564493, 6.770201, '/152'),
                  trkPt(21.153494, -86.787499, 0.620000, "2010-08-21T22:59:09Z", 7.641138, 4.379732, '/156'),
                  trkPt(21.152943, -86.787854, 4.460000, "2010-08-21T23:00:16Z", 7.685473, 2.382149, '/159'),
                  trkPt(21.152473, -86.788737, 3.980000, "2010-08-21T23:01:18Z", 7.750868, 3.797156, '/162'),
                  trkPt(21.152201, -86.789647, 1.580000, "2010-08-21T23:03:21Z", 7.812334, 1.798998, '/171'),
                  trkPt(21.152339, -86.789471, 3.500000, "2010-08-21T23:03:42Z", 7.827124, 2.535434, '/172'),
                  trkPt(21.151935, -86.790470, 2.060000, "2010-08-21T23:06:55Z", 7.897163, 1.306423, '/179'),
                  trkPt(21.151807, -86.790600, 3.020000, "2010-08-21T23:07:29Z", 7.909322, 1.287473, '/180'),
                  trkPt(21.151578, -86.791584, 5.420000, "2010-08-21T23:08:28Z", 7.974556, 3.980375, '/182'),
                  trkPt(21.151248, -86.792550, 7.350000, "2010-08-21T23:13:50Z", 8.040729, 0.739818, '/187'),
                  trkPt(21.151298, -86.792855, 14.080000, "2010-08-21T23:14:25Z", 8.060648, 2.048829, '/190'),
                  trkPt(21.150624, -86.793356, 11.670000, "2010-08-21T23:16:14Z", 8.117211, 1.868128, '/198'),
                  trkPt(21.150541, -86.793368, 10.710000, "2010-08-21T23:16:43Z", 8.122987, 0.717023, '/199'),
                  trkPt(21.150347, -86.793547, 20.320000, "2010-08-21T23:17:20Z", 8.140639, 1.717471, '/202'),
                  trkPt(21.150208, -86.793538, 18.880000, "2010-08-21T23:17:39Z", 8.150243, 1.819776, '/203'),
                  trkPt(21.150081, -86.794203, 28.980000, "2010-08-21T23:19:41Z", 8.193905, 1.288397, '/209'),
                  trkPt(21.149988, -86.794217, 21.770000, "2010-08-21T23:28:01Z", 8.200383, 0.046636, '/210'),
                  trkPt(21.152520, -86.797274, 12.150000, "2010-08-21T23:28:45Z", 8.463366, 21.516812, '/214'),
                  trkPt(21.153520, -86.798261, 11.190000, "2010-08-21T23:28:55Z", 8.557105, 33.746261, '/215'),
                  trkPt(21.154686, -86.799211, 11.670000, "2010-08-21T23:29:12Z", 8.658105, 21.388077, '/217'),
                  trkPt(21.154587, -86.799293, 13.600000, "2010-08-21T23:29:32Z", 8.666733, 1.553046, '/220'),
                  trkPt(21.153011, -86.797996, 26.570000, "2010-08-21T23:30:00Z", 8.803752, 17.616766, '/223'),
                  trkPt(21.152110, -86.797002, 24.650000, "2010-08-21T23:30:10Z", 8.892911, 32.097195, '/224'),
                  trkPt(21.150940, -86.795421, 23.210000, "2010-08-21T23:30:23Z", 9.022730, 35.949962, '/225'),
                  trkPt(21.150029, -86.794398, 26.570000, "2010-08-21T23:30:31Z", 9.113712, 40.941657, '/226'),
                  trkPt(21.148153, -86.792903, 28.020000, "2010-08-21T23:30:48Z", 9.274920, 34.138179, '/228'),
                  trkPt(21.144970, -86.790159, 16.480000, "2010-08-21T23:31:18Z", 9.556606, 33.802316, '/231'),
                  trkPt(21.143911, -86.789074, 16.480000, "2010-08-21T23:31:28Z", 9.657629, 36.368239, '/232'),
                  trkPt(21.143040, -86.787496, 22.250000, "2010-08-21T23:31:39Z", 9.775578, 38.601725, '/233'),
                  trkPt(21.142678, -86.785916, 23.690000, "2010-08-21T23:31:48Z", 9.880235, 41.862747, '/234'),
                  trkPt(21.142697, -86.784598, 22.730000, "2010-08-21T23:31:55Z", 9.965027, 43.607335, '/235'),
                  trkPt(21.143442, -86.781910, 18.880000, "2010-08-21T23:32:26Z", 10.145408, 20.947495, '/239'),
                  trkPt(21.143559, -86.780563, 16.480000, "2010-08-21T23:32:37Z", 10.232430, 28.479866, '/240'),
                  trkPt(21.143471, -86.778986, 12.630000, "2010-08-21T23:32:47Z", 10.334053, 36.584360, '/241'),
                  trkPt(21.143043, -86.777065, 11.670000, "2010-08-21T23:32:58Z", 10.461100, 41.579007, '/242'),
                  trkPt(21.142231, -86.775210, 9.750000, "2010-08-21T23:33:10Z", 10.592914, 39.544035, '/244'),
                  trkPt(21.137994, -86.768703, 27.050000, "2010-08-21T23:34:02Z", 11.103404, 35.341639, '/250'),
                  trkPt(21.136300, -86.765440, 21.770000, "2010-08-21T23:34:24Z", 11.343633, 39.310122, '/252'),
                  trkPt(21.135703, -86.763988, 21.770000, "2010-08-21T23:34:34Z", 11.445711, 36.748180, '/253'),
                  trkPt(21.134787, -86.760923, 16.480000, "2010-08-21T23:35:15Z", 11.652754, 18.179425, '/258'),
                  trkPt(21.134792, -86.754575, 16.960000, "2010-08-21T23:35:59Z", 12.061119, 33.411634, '/262'),
                  trkPt(21.135248, -86.753219, 18.880000, "2010-08-21T23:36:07Z", 12.153846, 41.727163, '/263'),
                  trkPt(21.136718, -86.750949, 18.880000, "2010-08-21T23:36:23Z", 12.331617, 39.998539, '/265'),
                  trkPt(21.136897, -86.750201, 18.880000, "2010-08-21T23:36:29Z", 12.381294, 29.805812, '/267'),
                  trkPt(21.136776, -86.749525, 20.810000, "2010-08-21T23:36:35Z", 12.425573, 26.567829, '/268'),
                  trkPt(21.136549, -86.749115, 22.250000, "2010-08-21T23:36:39Z", 12.456245, 27.604281, '/269'),
                  trkPt(21.136151, -86.748648, 23.210000, "2010-08-21T23:36:44Z", 12.496938, 29.299491, '/270'),
                  trkPt(21.135686, -86.748329, 24.170000, "2010-08-21T23:36:49Z", 12.535012, 27.413263, '/271'),
                  trkPt(21.134636, -86.748041, 23.690000, "2010-08-21T23:36:59Z", 12.609762, 26.909852, '/272'),
                  trkPt(21.134225, -86.748084, 22.730000, "2010-08-21T23:37:03Z", 12.638243, 25.632725, '/273'),
                  trkPt(21.133069, -86.748419, 21.290000, "2010-08-21T23:37:14Z", 12.720832, 27.029174, '/274'),
                  trkPt(21.131803, -86.748972, 19.360000, "2010-08-21T23:37:24Z", 12.815115, 33.942077, '/275'),
                  trkPt(21.130389, -86.749825, 19.840000, "2010-08-21T23:37:34Z", 12.927016, 40.284188, '/276'),
                  trkPt(21.129059, -86.750919, 20.320000, "2010-08-21T23:37:44Z", 13.042633, 41.622153, '/277'),
                  trkPt(21.126623, -86.753447, 14.560000, "2010-08-21T23:38:05Z", 13.276462, 40.085007, '/279'),
                  trkPt(21.124963, -86.754536, 7.830000, "2010-08-21T23:38:17Z", 13.410685, 40.266912, '/280'),
                  trkPt(21.123556, -86.755072, 2.540000, "2010-08-21T23:38:27Z", 13.513669, 37.074175, '/281'),
                  trkPt(21.123279, -86.755152, 1.580000, "2010-08-21T23:38:29Z", 13.533455, 35.613975, '/282'),
                  trkPt(21.122437, -86.755287, 0.140000, "2010-08-21T23:38:35Z", 13.592172, 35.230527, '/283'),
                  trkPt(21.120278, -86.756432, -6.110000, "2010-08-21T23:38:53Z", 13.758301, 33.225687, '/285'),
                  trkPt(21.119150, -86.757166, 0.140000, "2010-08-21T23:39:03Z", 13.849308, 32.762614, '/286'),
                  trkPt(21.118861, -86.757283, 1.100000, "2010-08-21T23:39:06Z", 13.870614, 25.567269, '/287'),
                  trkPt(21.118618, -86.757313, 2.060000, "2010-08-21T23:39:09Z", 13.887484, 20.244433, '/288'),
                  trkPt(21.118325, -86.757286, 3.020000, "2010-08-21T23:39:17Z", 13.907767, 9.127052, '/289'),
                  trkPt(21.118138, -86.757283, 1.580000, "2010-08-21T23:39:30Z", 13.920665, 3.571889, '/290'),
                  trkPt(21.117742, -86.757303, 1.580000, "2010-08-21T23:39:39Z", 13.948007, 10.936782, '/291'),
                  trkPt(21.117529, -86.757333, 2.060000, "2010-08-21T23:39:42Z", 13.962824, 17.779774, '/292'),
                  trkPt(21.116618, -86.757740, 8.310000, "2010-08-21T23:39:53Z", 14.030892, 22.277010, '/293'),
                  trkPt(21.116252, -86.758013, 7.830000, "2010-08-21T23:39:57Z", 14.061644, 27.676807, '/294'),
                  trkPt(21.115590, -86.758359, 9.270000, "2010-08-21T23:40:03Z", 14.112439, 30.477019, '/295'),
                  trkPt(21.113237, -86.760676, 24.170000, "2010-08-21T23:40:55Z", 14.332799, 15.255671, '/301'),
                  trkPt(21.113319, -86.760491, 23.210000, "2010-08-21T23:41:02Z", 14.345977, 6.777247, '/302'),
                  trkPt(21.114222, -86.759733, 22.250000, "2010-08-21T23:41:20Z", 14.425078, 15.820280, '/305'),
                  trkPt(21.114325, -86.759482, 11.190000, "2010-08-21T23:41:34Z", 14.442721, 4.536598, '/307'),
                  trkPt(21.114176, -86.759252, 11.670000, "2010-08-21T23:41:50Z", 14.460737, 4.053623, '/310'),
                  trkPt(21.114066, -86.759284, 11.190000, "2010-08-21T23:41:54Z", 14.468598, 7.075025, '/311'),
                  trkPt(21.113839, -86.759260, 5.420000, "2010-08-21T23:42:05Z", 14.484330, 5.148575, '/312'),
                  trkPt(21.113767, -86.759198, 1.580000, "2010-08-21T23:42:20Z", 14.490699, 1.528684, '/313')];

        for (var i = 0; i &lt; points.length; i++) {
           createPoint(points[i]);
        }

        map.addOverlay(new GPolyline(points, "#ff0000", 2));

        points = [trkPt(21.113509, -86.758981, 53.010000, "2010-08-21T23:43:00Z", 0.000000, "unk", '/1'),
                  trkPt(21.113387, -86.758940, 28.020000, "2010-08-21T23:43:07Z", 0.008818, 4.534980, '/3'),
                  trkPt(21.113548, -86.759645, 60.220000, "2010-08-21T23:43:21Z", 0.055516, 12.008104, '/5'),
                  trkPt(21.113787, -86.759729, 65.990000, "2010-08-21T23:43:31Z", 0.072863, 6.244855, '/6'),
                  trkPt(21.114002, -86.759773, 48.200000, "2010-08-21T23:43:42Z", 0.087959, 4.940529, '/7'),
                  trkPt(21.114217, -86.759683, 47.240000, "2010-08-21T23:43:48Z", 0.103878, 9.551189, '/8'),
                  trkPt(21.114464, -86.759479, 43.400000, "2010-08-21T23:43:54Z", 0.125383, 12.903028, '/9'),
                  trkPt(21.115287, -86.758437, 35.230000, "2010-08-21T23:44:09Z", 0.213225, 21.082132, '/12'),
                  trkPt(21.117301, -86.757339, 30.420000, "2010-08-21T23:44:27Z", 0.369060, 31.166930, '/15'),
                  trkPt(21.117848, -86.757270, 31.380000, "2010-08-21T23:44:31Z", 0.407046, 34.187534, '/16'),
                  trkPt(21.118353, -86.757318, 30.900000, "2010-08-21T23:44:35Z", 0.442012, 31.469322, '/17'),
                  trkPt(21.119139, -86.757138, 30.420000, "2010-08-21T23:44:42Z", 0.497444, 28.508204, '/18'),
                  trkPt(21.119523, -86.756771, 33.780000, "2010-08-21T23:45:18Z", 0.532925, 3.548099, '/21'),
                  trkPt(21.119618, -86.756910, 34.260000, "2010-08-21T23:45:27Z", 0.544011, 4.434440, '/22'),
                  trkPt(21.119172, -86.757229, 35.230000, "2010-08-21T23:45:36Z", 0.580990, 14.791268, '/24'),
                  trkPt(21.118877, -86.757361, 32.340000, "2010-08-21T23:45:40Z", 0.603037, 19.842348, '/25'),
                  trkPt(21.118693, -86.757395, 32.340000, "2010-08-21T23:45:42Z", 0.615914, 23.179022, '/26'),
                  trkPt(21.117667, -86.757331, 28.500000, "2010-08-21T23:45:51Z", 0.686796, 28.352659, '/27'),
                  trkPt(21.117098, -86.757534, 28.020000, "2010-08-21T23:45:56Z", 0.728155, 29.778812, '/28'),
                  trkPt(21.115480, -86.758529, 28.020000, "2010-08-21T23:46:09Z", 0.856804, 35.626000, '/29'),
                  trkPt(21.113156, -86.760934, 17.920000, "2010-08-21T23:46:31Z", 1.079590, 36.455795, '/32')];

        for (var i = 0; i &lt; points.length; i++) {
           createPoint(points[i]);
        }

        map.addOverlay(new GPolyline(points, "#ff0000", 2));

        points = [trkPt(20.217577, -87.437004, 11.190000, "2010-08-22T15:31:05Z", 0.000000, "unk", '/1'),
                  trkPt(20.217849, -87.436970, 7.830000, "2010-08-22T15:35:00Z", 0.018888, 0.289341, '/5'),
                  trkPt(20.217901, -87.436928, 9.750000, "2010-08-22T15:35:07Z", 0.023388, 2.314345, '/6'),
                  trkPt(20.217417, -87.436338, 13.120000, "2010-08-22T15:36:50Z", 0.074104, 1.772614, '/11'),
                  trkPt(20.217368, -87.436365, 16.000000, "2010-08-22T15:37:41Z", 0.077909, 0.268560, '/13'),
                  trkPt(20.217405, -87.435888, 16.480000, "2010-08-22T15:39:06Z", 0.108884, 1.311899, '/19'),
                  trkPt(20.217499, -87.435837, 14.080000, "2010-08-22T15:39:23Z", 0.116159, 1.540521, '/20'),
                  trkPt(20.217358, -87.435745, 12.150000, "2010-08-22T15:40:20Z", 0.127561, 0.720141, '/22'),
                  trkPt(20.217482, -87.435621, 8.790000, "2010-08-22T15:44:00Z", 0.139288, 0.191905, '/27'),
                  trkPt(20.217529, -87.435376, 5.420000, "2010-08-22T15:44:15Z", 0.155472, 3.884056, '/28'),
                  trkPt(20.217338, -87.435171, 4.940000, "2010-08-22T15:44:30Z", 0.174168, 4.486999, '/29'),
                  trkPt(20.217132, -87.435067, 2.540000, "2010-08-22T15:44:45Z", 0.189889, 3.772978, '/30'),
                  trkPt(20.216629, -87.434525, -4.670000, "2010-08-22T15:45:18Z", 0.239222, 5.381826, '/32'),
                  trkPt(20.216212, -87.433951, -11.880000, "2010-08-22T15:45:36Z", 0.286201, 9.395844, '/33'),
                  trkPt(20.215808, -87.433237, -12.840000, "2010-08-22T15:45:54Z", 0.340160, 10.791733, '/34'),
                  trkPt(20.215024, -87.430974, -14.280000, "2010-08-22T15:46:53Z", 0.496279, 9.525906, '/38'),
                  trkPt(20.214718, -87.430921, 5.420000, "2010-08-22T15:47:03Z", 0.517660, 7.697048, '/39'),
                  trkPt(20.214447, -87.431021, 7.350000, "2010-08-22T15:47:12Z", 0.537438, 7.911485, '/40'),
                  trkPt(20.214266, -87.430851, 0.140000, "2010-08-22T15:47:21Z", 0.554078, 6.655700, '/41'),
                  trkPt(20.214513, -87.430610, -1.300000, "2010-08-22T15:47:35Z", 0.577174, 5.939131, '/43'),
                  trkPt(20.215396, -87.430305, 19.840000, "2010-08-22T15:50:17Z", 0.641191, 1.422589, '/49'),
                  trkPt(20.215462, -87.430305, 23.690000, "2010-08-22T15:50:25Z", 0.645743, 2.048320, '/51'),
                  trkPt(20.216604, -87.429786, 28.980000, "2010-08-22T15:52:43Z", 0.731365, 2.233638, '/59'),
                  trkPt(20.216710, -87.429767, 30.420000, "2010-08-22T15:53:02Z", 0.738778, 1.404570, '/60'),
                  trkPt(20.216754, -87.429774, 28.980000, "2010-08-22T15:53:12Z", 0.741846, 1.104504, '/61'),
                  trkPt(20.216900, -87.429689, 26.090000, "2010-08-22T15:53:30Z", 0.753320, 2.294753, '/62'),
                  trkPt(20.216864, -87.429027, 24.170000, "2010-08-22T15:55:18Z", 0.796235, 1.430494, '/68'),
                  trkPt(20.216796, -87.428933, 24.650000, "2010-08-22T15:55:38Z", 0.803916, 1.382632, '/69'),
                  trkPt(20.216685, -87.428929, 25.610000, "2010-08-22T15:56:04Z", 0.811576, 1.060528, '/70'),
                  trkPt(20.216643, -87.428909, 23.690000, "2010-08-22T15:56:34Z", 0.814748, 0.380702, '/71'),
                  trkPt(20.216516, -87.429037, 24.170000, "2010-08-22T15:57:12Z", 0.826804, 1.142128, '/73'),
                  trkPt(20.216346, -87.428965, 14.560000, "2010-08-22T15:58:45Z", 0.839420, 0.488380, '/77'),
                  trkPt(20.216295, -87.429025, 11.190000, "2010-08-22T15:59:21Z", 0.844660, 0.523914, '/79'),
                  trkPt(20.215962, -87.429164, 11.670000, "2010-08-22T15:59:54Z", 0.869324, 2.690698, '/82'),
                  trkPt(20.215907, -87.429218, 12.630000, "2010-08-22T16:00:01Z", 0.874482, 2.652398, '/83'),
                  trkPt(20.215751, -87.429256, 14.560000, "2010-08-22T16:00:19Z", 0.885518, 2.207237, '/85'),
                  trkPt(20.215723, -87.429227, 15.520000, "2010-08-22T16:00:45Z", 0.888210, 0.372809, '/89'),
                  trkPt(20.215289, -87.429505, 16.000000, "2010-08-22T16:01:43Z", 0.923133, 2.167608, '/93'),
                  trkPt(20.214995, -87.429658, 17.440000, "2010-08-22T16:03:13Z", 0.945698, 0.902593, '/96'),
                  trkPt(20.214926, -87.429666, 17.440000, "2010-08-22T16:03:26Z", 0.950484, 1.325483, '/97'),
                  trkPt(20.214603, -87.429828, 17.920000, "2010-08-22T16:05:11Z", 0.975104, 0.844114, '/104'),
                  trkPt(20.214398, -87.429871, 17.920000, "2010-08-22T16:05:44Z", 0.989514, 1.571923, '/106'),
                  trkPt(20.214385, -87.429895, 17.920000, "2010-08-22T16:06:02Z", 0.991306, 0.358550, '/107'),
                  trkPt(20.214172, -87.429804, 19.840000, "2010-08-22T16:06:30Z", 1.007133, 2.034817, '/109'),
                  trkPt(20.214143, -87.429702, 24.170000, "2010-08-22T16:07:18Z", 1.014030, 0.517328, '/111'),
                  trkPt(20.214390, -87.429471, 33.300000, "2010-08-22T16:08:59Z", 1.036695, 0.807845, '/113'),
                  trkPt(20.214255, -87.429267, 30.900000, "2010-08-22T16:09:46Z", 1.052850, 1.237424, '/115'),
                  trkPt(20.214403, -87.428762, 27.050000, "2010-08-22T16:12:18Z", 1.087090, 0.810937, '/124'),
                  trkPt(20.214518, -87.428750, 24.650000, "2010-08-22T16:12:56Z", 1.095059, 0.754964, '/126'),
                  trkPt(20.214731, -87.428692, 23.690000, "2010-08-22T16:13:37Z", 1.110221, 1.331287, '/129'),
                  trkPt(20.214804, -87.428648, 24.650000, "2010-08-22T16:14:16Z", 1.116005, 0.533954, '/131'),
                  trkPt(20.214895, -87.428739, 28.020000, "2010-08-22T16:16:36Z", 1.124612, 0.221307, '/142'),
                  trkPt(20.214920, -87.428700, 26.570000, "2010-08-22T16:16:52Z", 1.127668, 0.687768, '/143'),
                  trkPt(20.214858, -87.428728, 26.570000, "2010-08-22T16:17:04Z", 1.132313, 1.393257, '/144'),
                  trkPt(20.214787, -87.428689, 24.650000, "2010-08-22T16:17:24Z", 1.137821, 0.991587, '/145'),
                  trkPt(20.214629, -87.428784, 27.050000, "2010-08-22T16:17:51Z", 1.150333, 1.668216, '/147'),
                  trkPt(20.214439, -87.428800, 28.980000, "2010-08-22T16:18:12Z", 1.163477, 2.253336, '/149'),
                  trkPt(20.214294, -87.429049, 26.090000, "2010-08-22T16:18:40Z", 1.182443, 2.438429, '/151'),
                  trkPt(20.214455, -87.429390, 17.920000, "2010-08-22T16:19:45Z", 1.207148, 1.368268, '/155'),
                  trkPt(20.214518, -87.429411, 20.810000, "2010-08-22T16:19:52Z", 1.211700, 2.341329, '/156'),
                  trkPt(20.214577, -87.429411, 21.290000, "2010-08-22T16:19:59Z", 1.215769, 2.092527, '/157'),
                  trkPt(20.214641, -87.429369, 23.690000, "2010-08-22T16:20:08Z", 1.220953, 2.073437, '/158'),
                  trkPt(20.214685, -87.429373, 24.170000, "2010-08-22T16:20:21Z", 1.223998, 0.843337, '/159'),
                  trkPt(20.215147, -87.429166, 27.530000, "2010-08-22T16:21:49Z", 1.258562, 1.413989, '/165'),
                  trkPt(20.215357, -87.429037, 22.730000, "2010-08-22T16:22:29Z", 1.275279, 1.504520, '/170'),
                  trkPt(20.215351, -87.428577, 22.730000, "2010-08-22T16:23:43Z", 1.305052, 1.448424, '/175'),
                  trkPt(20.215535, -87.428450, 25.610000, "2010-08-22T16:24:17Z", 1.320172, 1.600854, '/177'),
                  trkPt(20.215533, -87.428322, 27.050000, "2010-08-22T16:25:03Z", 1.328457, 0.648405, '/180'),
                  trkPt(20.215655, -87.428282, 23.690000, "2010-08-22T16:25:37Z", 1.337260, 0.932078, '/183'),
                  trkPt(20.215555, -87.428404, 22.730000, "2010-08-22T16:26:10Z", 1.347743, 1.143663, '/185'),
                  trkPt(20.215598, -87.428600, 16.960000, "2010-08-22T16:27:11Z", 1.360770, 0.768796, '/188'),
                  trkPt(20.215734, -87.428495, 18.400000, "2010-08-22T16:27:31Z", 1.372352, 2.084821, '/190'),
                  trkPt(20.215818, -87.428516, 18.400000, "2010-08-22T16:27:41Z", 1.378303, 2.142091, '/191'),
                  trkPt(20.215924, -87.428492, 16.480000, "2010-08-22T16:27:57Z", 1.385776, 1.681552, '/193'),
                  trkPt(20.215995, -87.428496, 16.480000, "2010-08-22T16:28:06Z", 1.390680, 1.961528, '/194'),
                  trkPt(20.216063, -87.428463, 19.360000, "2010-08-22T16:28:24Z", 1.395833, 1.030614, '/196'),
                  trkPt(20.216091, -87.428576, 19.840000, "2010-08-22T16:28:39Z", 1.403397, 1.815236, '/199'),
                  trkPt(20.216304, -87.428634, 16.000000, "2010-08-22T16:29:04Z", 1.418559, 2.183328, '/201'),
                  trkPt(20.216424, -87.428909, 20.810000, "2010-08-22T16:29:42Z", 1.438186, 1.859453, '/204'),
                  trkPt(20.216485, -87.428869, 19.360000, "2010-08-22T16:30:00Z", 1.443126, 0.987879, '/205'),
                  trkPt(20.216672, -87.428905, 16.960000, "2010-08-22T16:30:23Z", 1.456231, 2.051296, '/206'),
                  trkPt(20.216846, -87.428992, 18.880000, "2010-08-22T16:30:48Z", 1.469487, 1.908783, '/207'),
                  trkPt(20.216921, -87.429700, 17.440000, "2010-08-22T16:32:02Z", 1.515598, 2.243235, '/213'),
                  trkPt(20.216745, -87.429763, 20.320000, "2010-08-22T16:32:26Z", 1.528402, 1.920684, '/215'),
                  trkPt(20.216624, -87.429853, 24.650000, "2010-08-22T16:32:46Z", 1.538579, 1.831766, '/216'),
                  trkPt(20.215967, -87.430078, 28.020000, "2010-08-22T16:34:06Z", 1.586172, 2.141694, '/220'),
                  trkPt(20.215270, -87.430446, 32.340000, "2010-08-22T16:35:41Z", 1.639818, 2.032901, '/226'),
                  trkPt(20.214735, -87.430617, 22.730000, "2010-08-22T16:36:30Z", 1.678339, 2.830109, '/229'),
                  trkPt(20.214661, -87.430609, 23.210000, "2010-08-22T16:36:45Z", 1.683469, 1.231153, '/230'),
                  trkPt(20.214655, -87.430686, 22.730000, "2010-08-22T16:37:51Z", 1.688469, 0.272751, '/233'),
                  trkPt(20.214837, -87.430677, 17.440000, "2010-08-22T16:38:00Z", 1.701034, 5.026162, '/234'),
                  trkPt(20.215744, -87.433164, -3.230000, "2010-08-22T16:38:45Z", 1.873716, 13.814533, '/238'),
                  trkPt(20.216218, -87.434004, 2.540000, "2010-08-22T16:38:58Z", 1.937151, 17.566547, '/240'),
                  trkPt(20.217093, -87.435060, 15.040000, "2010-08-22T16:39:40Z", 2.028322, 7.814666, '/245'),
                  trkPt(20.217301, -87.435098, 15.040000, "2010-08-22T16:39:51Z", 2.042876, 4.763171, '/246'),
                  trkPt(20.217706, -87.435358, 3.020000, "2010-08-22T16:40:12Z", 2.075484, 5.589970, '/249'),
                  trkPt(20.217889, -87.435635, -0.340000, "2010-08-22T16:40:30Z", 2.097408, 4.384766, '/252'),
                  trkPt(20.217709, -87.435781, 5.910000, "2010-08-22T16:41:09Z", 2.113009, 1.440069, '/255'),
                  trkPt(20.217659, -87.435739, 6.870000, "2010-08-22T16:41:58Z", 2.117399, 0.322570, '/257'),
                  trkPt(20.217575, -87.435806, 17.920000, "2010-08-22T16:44:54Z", 2.124635, 0.148009, '/260'),
                  trkPt(20.217474, -87.435820, 15.040000, "2010-08-22T16:45:12Z", 2.131659, 1.404843, '/261'),
                  trkPt(20.217327, -87.435747, 15.040000, "2010-08-22T16:45:43Z", 2.142844, 1.298889, '/263'),
                  trkPt(20.217259, -87.435757, 16.960000, "2010-08-22T16:45:58Z", 2.147579, 1.136254, '/264'),
                  trkPt(20.217182, -87.435847, 16.960000, "2010-08-22T16:46:18Z", 2.155461, 1.418761, '/265'),
                  trkPt(20.217276, -87.435812, 12.150000, "2010-08-22T16:46:36Z", 2.162328, 1.373445, '/266'),
                  trkPt(20.217222, -87.435773, 9.750000, "2010-08-22T16:48:01Z", 2.166827, 0.190560, '/267'),
                  trkPt(20.217273, -87.435912, 8.310000, "2010-08-22T16:48:45Z", 2.176486, 0.790261, '/268'),
                  trkPt(20.217197, -87.435885, 8.790000, "2010-08-22T16:49:29Z", 2.182011, 0.452058, '/269'),
                  trkPt(20.217206, -87.436280, 10.710000, "2010-08-22T16:50:47Z", 2.207582, 1.180193, '/274'),
                  trkPt(20.217608, -87.436865, 19.360000, "2010-08-22T16:52:01Z", 2.254507, 2.282857, '/279'),
                  trkPt(20.217771, -87.436986, 19.840000, "2010-08-22T16:52:43Z", 2.268207, 1.174282, '/281'),
                  trkPt(20.217744, -87.437276, 11.190000, "2010-08-22T16:55:00Z", 2.287068, 0.495595, '/283'),
                  trkPt(20.217835, -87.437589, 12.630000, "2010-08-22T16:55:10Z", 2.308274, 7.634300, '/284'),
                  trkPt(20.217798, -87.437735, 12.150000, "2010-08-22T16:55:13Z", 2.318061, 11.744752, '/285'),
                  trkPt(20.217877, -87.437937, 9.750000, "2010-08-22T16:55:19Z", 2.332224, 8.497633, '/286'),
                  trkPt(20.218020, -87.437692, 11.190000, "2010-08-22T16:55:22Z", 2.350897, 22.407162, '/287'),
                  trkPt(20.218241, -87.436847, 7.830000, "2010-08-22T16:55:38Z", 2.407667, 12.773259, '/288'),
                  trkPt(20.218507, -87.436527, 8.310000, "2010-08-22T16:55:47Z", 2.435333, 11.066469, '/289'),
                  trkPt(20.218681, -87.436432, 9.270000, "2010-08-22T16:55:57Z", 2.448816, 4.853972, '/290'),
                  trkPt(20.218950, -87.435674, 10.710000, "2010-08-22T16:56:15Z", 2.501262, 10.489208, '/294'),
                  trkPt(20.219460, -87.435903, 15.040000, "2010-08-22T16:56:24Z", 2.539430, 15.267014, '/295'),
                  trkPt(20.219649, -87.435957, 15.040000, "2010-08-22T16:56:29Z", 2.552925, 9.716365, '/296'),
                  trkPt(20.219778, -87.435791, 15.040000, "2010-08-22T16:56:33Z", 2.566873, 12.553643, '/297'),
                  trkPt(20.221508, -87.430825, 15.040000, "2010-08-22T16:57:03Z", 2.909685, 41.137385, '/300'),
                  trkPt(20.222607, -87.429209, 12.150000, "2010-08-22T16:57:12Z", 3.038842, 51.663044, '/301'),
                  trkPt(20.224225, -87.427880, 12.150000, "2010-08-22T16:57:21Z", 3.179728, 56.354301, '/302'),
                  trkPt(20.226914, -87.426227, 13.120000, "2010-08-22T16:57:34Z", 3.393819, 59.286711, '/303'),
                  trkPt(20.231028, -87.423794, 13.120000, "2010-08-22T16:57:53Z", 3.718304, 61.481340, '/304'),
                  trkPt(20.244317, -87.415657, 14.560000, "2010-08-22T16:58:54Z", 4.775281, 62.379002, '/307'),
                  trkPt(20.248268, -87.413296, 19.360000, "2010-08-22T16:59:12Z", 5.087671, 62.477900, '/308'),
                  trkPt(20.250513, -87.411529, 17.920000, "2010-08-22T16:59:23Z", 5.280139, 62.989585, '/309'),
                  trkPt(20.253475, -87.408972, 13.120000, "2010-08-22T16:59:38Z", 5.543011, 63.089369, '/310'),
                  trkPt(20.255981, -87.407003, 14.560000, "2010-08-22T16:59:51Z", 5.757721, 59.458143, '/311'),
                  trkPt(20.274004, -87.396020, 16.000000, "2010-08-22T17:01:16Z", 7.189475, 60.638976, '/316'),
                  trkPt(20.277018, -87.393918, 15.520000, "2010-08-22T17:01:30Z", 7.437869, 63.872852, '/317'),
                  trkPt(20.304107, -87.374096, 13.120000, "2010-08-22T17:03:49Z", 9.703789, 58.685697, '/325'),
                  trkPt(20.307054, -87.372212, 15.040000, "2010-08-22T17:04:03Z", 9.940766, 60.936779, '/326'),
                  trkPt(20.309889, -87.370691, 18.400000, "2010-08-22T17:04:16Z", 10.159641, 60.611562, '/327'),
                  trkPt(20.322762, -87.363016, 10.710000, "2010-08-22T17:05:23Z", 11.176796, 54.653096, '/333'),
                  trkPt(20.322963, -87.362599, 11.190000, "2010-08-22T17:05:29Z", 11.207119, 18.193818, '/334'),
                  trkPt(20.322286, -87.361418, 11.190000, "2010-08-22T17:05:59Z", 11.296639, 10.742395, '/338'),
                  trkPt(20.321864, -87.360156, 26.570000, "2010-08-22T17:06:18Z", 11.383291, 16.418300, '/342'),
                  trkPt(20.321605, -87.358961, 55.890000, "2010-08-22T17:06:29Z", 11.462613, 25.960160, '/343'),
                  trkPt(20.321300, -87.358290, 64.070000, "2010-08-22T17:06:38Z", 11.510839, 19.290210, '/344'),
                  trkPt(20.321108, -87.358071, 63.580000, "2010-08-22T17:06:43Z", 11.530228, 13.960306, '/346'),
                  trkPt(20.320985, -87.358033, 51.090000, "2010-08-22T17:06:49Z", 11.539060, 5.299016, '/347'),
                  trkPt(20.320359, -87.357576, 30.900000, "2010-08-22T17:07:01Z", 11.591381, 15.696306, '/350'),
                  trkPt(20.319858, -87.356823, 6.390000, "2010-08-22T17:07:23Z", 11.651093, 9.771089, '/352'),
                  trkPt(20.319849, -87.356717, 5.910000, "2010-08-22T17:07:26Z", 11.657977, 8.260068, '/353'),
                  trkPt(20.320003, -87.356560, 7.830000, "2010-08-22T17:07:33Z", 11.672670, 7.556707, '/354'),
                  trkPt(20.320214, -87.356513, 6.870000, "2010-08-22T17:07:39Z", 11.687536, 8.919678, '/355'),
                  trkPt(20.320269, -87.356262, 8.310000, "2010-08-22T17:07:50Z", 11.704207, 5.455814, '/357'),
                  trkPt(20.320108, -87.356227, 10.710000, "2010-08-22T17:07:56Z", 11.715539, 6.799275, '/358'),
                  trkPt(20.319932, -87.356407, 15.040000, "2010-08-22T17:08:06Z", 11.732357, 6.054654, '/359'),
                  trkPt(20.319951, -87.356464, 16.480000, "2010-08-22T17:08:08Z", 11.736270, 7.043179, '/360'),
                  trkPt(20.320129, -87.356537, 16.480000, "2010-08-22T17:08:14Z", 11.749423, 7.891614, '/361'),
                  trkPt(20.320214, -87.356507, 16.000000, "2010-08-22T17:08:16Z", 11.755598, 11.115041, '/362'),
                  trkPt(20.320438, -87.356473, 14.080000, "2010-08-22T17:08:23Z", 11.771202, 8.025045, '/363'),
                  trkPt(20.320481, -87.356672, 10.710000, "2010-08-22T17:08:29Z", 11.784410, 7.924443, '/364'),
                  trkPt(20.320369, -87.356732, 11.190000, "2010-08-22T17:08:36Z", 11.793054, 4.445492, '/365'),
                  trkPt(20.320379, -87.356718, 13.600000, "2010-08-22T17:10:34Z", 11.794192, 0.034741, '/369'),
                  trkPt(20.320267, -87.356722, 15.040000, "2010-08-22T17:10:46Z", 11.801921, 2.318638, '/370'),
                  trkPt(20.320088, -87.356662, 11.190000, "2010-08-22T17:11:43Z", 11.814862, 0.817303, '/373'),
                  trkPt(20.319857, -87.356817, 16.000000, "2010-08-22T17:12:28Z", 11.833685, 1.505822, '/376'),
                  trkPt(20.320001, -87.356765, 9.750000, "2010-08-22T17:12:58Z", 11.844170, 1.258233, '/377'),
                  trkPt(20.319833, -87.356852, 15.520000, "2010-08-22T17:15:27Z", 11.857050, 0.311203, '/380'),
                  trkPt(20.319835, -87.356706, 17.920000, "2010-08-22T17:15:55Z", 11.866494, 1.214144, '/381'),
                  trkPt(20.320030, -87.356498, 17.920000, "2010-08-22T17:16:21Z", 11.885515, 2.633783, '/383'),
                  trkPt(20.319961, -87.356525, 19.360000, "2010-08-22T17:16:25Z", 11.890584, 4.561769, '/384'),
                  trkPt(20.319635, -87.356515, 19.360000, "2010-08-22T17:16:30Z", 11.913076, 16.194540, '/385'),
                  trkPt(20.319526, -87.356554, 11.670000, "2010-08-22T17:16:48Z", 11.921006, 1.585881, '/386'),
                  trkPt(20.319536, -87.356463, 15.040000, "2010-08-22T17:18:22Z", 11.926931, 0.226933, '/388'),
                  trkPt(20.319634, -87.356451, 18.880000, "2010-08-22T17:18:46Z", 11.933735, 1.020501, '/389'),
                  trkPt(20.319697, -87.356421, 18.400000, "2010-08-22T17:19:00Z", 11.938493, 1.223618, '/390'),
                  trkPt(20.319570, -87.356283, 16.000000, "2010-08-22T17:22:45Z", 11.950998, 0.200078, '/394'),
                  trkPt(20.319578, -87.356183, 13.600000, "2010-08-22T17:23:02Z", 11.957489, 1.374546, '/395'),
                  trkPt(20.319457, -87.356043, 20.320000, "2010-08-22T17:23:34Z", 11.969803, 1.385284, '/398'),
                  trkPt(20.318498, -87.356606, 16.480000, "2010-08-22T17:25:48Z", 12.045302, 2.028350, '/408'),
                  trkPt(20.318274, -87.356565, 15.040000, "2010-08-22T17:26:12Z", 12.060977, 2.351146, '/410'),
                  trkPt(20.318151, -87.356627, 15.520000, "2010-08-22T17:26:43Z", 12.070359, 1.089610, '/413'),
                  trkPt(20.318038, -87.356610, 15.040000, "2010-08-22T17:26:59Z", 12.078230, 1.770834, '/414'),
                  trkPt(20.317973, -87.356578, 15.520000, "2010-08-22T17:27:15Z", 12.083167, 1.110973, '/415'),
                  trkPt(20.317714, -87.356705, 13.600000, "2010-08-22T17:27:57Z", 12.102828, 1.685175, '/420'),
                  trkPt(20.317505, -87.356918, 23.210000, "2010-08-22T17:28:35Z", 12.122766, 1.888898, '/422'),
                  trkPt(20.317755, -87.356564, 30.900000, "2010-08-22T17:30:35Z", 12.151427, 0.859834, '/429'),
                  trkPt(20.317892, -87.356635, 28.020000, "2010-08-22T17:30:54Z", 12.161932, 1.990470, '/430'),
                  trkPt(20.317921, -87.356787, 12.150000, "2010-08-22T17:32:18Z", 12.171965, 0.429946, '/432'),
                  trkPt(20.317993, -87.356805, 4.940000, "2010-08-22T17:33:04Z", 12.177064, 0.399104, '/433'),
                  trkPt(20.317905, -87.356660, 10.230000, "2010-08-22T17:36:25Z", 12.188235, 0.200069, '/436'),
                  trkPt(20.317797, -87.356708, 10.710000, "2010-08-22T17:58:31Z", 12.196304, 0.021908, '/437'),
                  trkPt(20.317791, -87.356605, 13.600000, "2010-08-22T17:59:30Z", 12.202979, 0.407240, '/440'),
                  trkPt(20.317818, -87.356659, 11.670000, "2010-08-22T18:00:41Z", 12.206936, 0.200678, '/443'),
                  trkPt(20.317699, -87.356693, 12.630000, "2010-08-22T18:01:24Z", 12.215433, 0.711340, '/446'),
                  trkPt(20.317541, -87.356788, 17.440000, "2010-08-22T18:01:57Z", 12.227942, 1.364683, '/450'),
                  trkPt(20.317679, -87.356678, 8.310000, "2010-08-22T18:07:45Z", 12.239825, 0.122924, '/458'),
                  trkPt(20.317565, -87.356826, 15.040000, "2010-08-22T18:08:31Z", 12.252212, 0.969421, '/461'),
                  trkPt(20.317556, -87.356732, 16.960000, "2010-08-22T18:09:08Z", 12.258323, 0.594608, '/463'),
                  trkPt(20.317706, -87.356927, 15.520000, "2010-08-22T18:09:57Z", 12.274635, 1.198416, '/466'),
                  trkPt(20.317664, -87.356843, 33.300000, "2010-08-22T18:10:19Z", 12.280792, 1.007422, '/470'),
                  trkPt(20.317571, -87.357052, 43.400000, "2010-08-22T18:10:33Z", 12.295753, 3.847288, '/472'),
                  trkPt(20.317289, -87.357145, 50.130000, "2010-08-22T18:10:43Z", 12.316111, 7.328688, '/474')];

        for (var i = 0; i &lt; points.length; i++) {
           createPoint(points[i]);
        }

        map.addOverlay(new GPolyline(points, "#ff0000", 2));

        points = [trkPt(20.317655, -87.356656, 17.920000, "2010-08-22T20:33:50Z", 0.000000, "unk", '/1'),
                  trkPt(20.317732, -87.356729, 25.610000, "2010-08-22T20:34:22Z", 0.007106, 0.799419, '/2'),
                  trkPt(20.317695, -87.356766, 24.650000, "2010-08-22T20:34:46Z", 0.010604, 0.524759, '/3'),
                  trkPt(20.317601, -87.356739, 20.810000, "2010-08-22T20:35:42Z", 0.017318, 0.431603, '/4'),
                  trkPt(20.317641, -87.356850, 19.360000, "2010-08-22T20:35:59Z", 0.025009, 1.628639, '/5'),
                  trkPt(20.317528, -87.356991, 15.520000, "2010-08-22T20:36:14Z", 0.037005, 2.878940, '/6'),
                  trkPt(20.317503, -87.356944, 9.750000, "2010-08-22T20:36:32Z", 0.040499, 0.698985, '/7'),
                  trkPt(20.317819, -87.356696, 3.020000, "2010-08-22T20:38:57Z", 0.067559, 0.671825, '/11'),
                  trkPt(20.317900, -87.356720, 5.420000, "2010-08-22T20:39:13Z", 0.073357, 1.304549, '/12'),
                  trkPt(20.318008, -87.356713, 7.830000, "2010-08-22T20:40:49Z", 0.080820, 0.279842, '/13'),
                  trkPt(20.317950, -87.356695, 10.230000, "2010-08-22T20:41:28Z", 0.084985, 0.384522, '/14'),
                  trkPt(20.318011, -87.356696, 11.190000, "2010-08-22T20:41:39Z", 0.089193, 1.376993, '/15'),
                  trkPt(20.318314, -87.356789, 12.150000, "2010-08-22T20:42:13Z", 0.110938, 2.302433, '/17'),
                  trkPt(20.318553, -87.356546, 11.190000, "2010-08-22T20:42:49Z", 0.133713, 2.277466, '/20'),
                  trkPt(20.318564, -87.356496, 10.710000, "2010-08-22T20:45:08Z", 0.137034, 0.086024, '/23'),
                  trkPt(20.318722, -87.356505, 11.190000, "2010-08-22T20:45:31Z", 0.147946, 1.708001, '/24'),
                  trkPt(20.318806, -87.356428, 11.190000, "2010-08-22T20:45:52Z", 0.155585, 1.309582, '/25'),
                  trkPt(20.319030, -87.356370, 10.710000, "2010-08-22T20:46:17Z", 0.171483, 2.289233, '/26'),
                  trkPt(20.319395, -87.356109, 11.670000, "2010-08-22T20:47:10Z", 0.201792, 2.058698, '/29'),
                  trkPt(20.319491, -87.356110, 12.630000, "2010-08-22T20:47:23Z", 0.208413, 1.833509, '/30'),
                  trkPt(20.319787, -87.356398, 13.120000, "2010-08-22T20:49:46Z", 0.236047, 0.695698, '/37'),
                  trkPt(20.319767, -87.356338, 13.600000, "2010-08-22T20:50:33Z", 0.240166, 0.315449, '/39'),
                  trkPt(20.319745, -87.356427, 13.120000, "2010-08-22T20:50:59Z", 0.246118, 0.824247, '/40'),
                  trkPt(20.319817, -87.356325, 13.120000, "2010-08-22T20:51:49Z", 0.254375, 0.594498, '/42'),
                  trkPt(20.319742, -87.356325, 13.600000, "2010-08-22T20:52:05Z", 0.259548, 1.163827, '/43'),
                  trkPt(20.319695, -87.356476, 8.790000, "2010-08-22T20:54:47Z", 0.269838, 0.228660, '/49'),
                  trkPt(20.319646, -87.356135, 10.230000, "2010-08-22T20:56:24Z", 0.292149, 0.828055, '/55'),
                  trkPt(20.319554, -87.356210, 11.190000, "2010-08-22T20:56:31Z", 0.300136, 4.107442, '/56'),
                  trkPt(20.319697, -87.356295, 9.750000, "2010-08-22T20:56:43Z", 0.311427, 3.387316, '/58'),
                  trkPt(20.319643, -87.356343, 7.350000, "2010-08-22T20:57:08Z", 0.316275, 0.698167, '/61'),
                  trkPt(20.319525, -87.355745, 14.080000, "2010-08-22T20:57:49Z", 0.355798, 3.470269, '/65'),
                  trkPt(20.319647, -87.355744, 26.570000, "2010-08-22T20:58:00Z", 0.364212, 2.753717, '/66'),
                  trkPt(20.319454, -87.355655, 37.150000, "2010-08-22T20:58:09Z", 0.378714, 5.800771, '/68'),
                  trkPt(20.319676, -87.355880, 53.970000, "2010-08-22T20:58:45Z", 0.399837, 2.112268, '/71'),
                  trkPt(20.319569, -87.356126, 49.650000, "2010-08-22T20:59:03Z", 0.417375, 3.507621, '/73'),
                  trkPt(20.319560, -87.356189, 49.160000, "2010-08-22T20:59:31Z", 0.421496, 0.529937, '/76'),
                  trkPt(20.319775, -87.356369, 33.300000, "2010-08-22T20:59:58Z", 0.440348, 2.513569, '/80'),
                  trkPt(20.319761, -87.356323, 32.820000, "2010-08-22T21:00:01Z", 0.443476, 3.753543, '/81'),
                  trkPt(20.319626, -87.356412, 29.940000, "2010-08-22T21:00:25Z", 0.454422, 1.641950, '/84'),
                  trkPt(20.319542, -87.356399, 28.020000, "2010-08-22T21:00:29Z", 0.460276, 5.268543, '/85'),
                  trkPt(20.319691, -87.356309, 21.770000, "2010-08-22T21:01:00Z", 0.472086, 1.371471, '/87'),
                  trkPt(20.319412, -87.356213, 17.920000, "2010-08-22T21:01:37Z", 0.492305, 1.967209, '/89'),
                  trkPt(20.319409, -87.356180, 21.770000, "2010-08-22T21:01:48Z", 0.494449, 0.701719, '/90'),
                  trkPt(20.319539, -87.356241, 25.610000, "2010-08-22T21:02:04Z", 0.504244, 2.203942, '/91'),
                  trkPt(20.319294, -87.356257, 27.050000, "2010-08-22T21:02:17Z", 0.521173, 4.687925, '/92'),
                  trkPt(20.319250, -87.356211, 28.980000, "2010-08-22T21:02:30Z", 0.525423, 1.176955, '/93'),
                  trkPt(20.319349, -87.356184, 29.460000, "2010-08-22T21:02:41Z", 0.532471, 2.306503, '/94'),
                  trkPt(20.319357, -87.356245, 29.460000, "2010-08-22T21:02:48Z", 0.536454, 2.048692, '/95'),
                  trkPt(20.319687, -87.356309, 30.900000, "2010-08-22T21:03:01Z", 0.559586, 6.405857, '/96'),
                  trkPt(20.319733, -87.356282, 33.780000, "2010-08-22T21:03:12Z", 0.563208, 1.185093, '/97'),
                  trkPt(20.319800, -87.356417, 37.150000, "2010-08-22T21:03:26Z", 0.573086, 2.540135, '/100'),
                  trkPt(20.319675, -87.356344, 40.510000, "2010-08-22T21:03:38Z", 0.582915, 2.948660, '/103'),
                  trkPt(20.319742, -87.356282, 43.880000, "2010-08-22T21:03:56Z", 0.589032, 1.223554, '/106'),
                  trkPt(20.319761, -87.356233, 50.610000, "2010-08-22T21:04:43Z", 0.592461, 0.262634, '/111'),
                  trkPt(20.319709, -87.356240, 53.970000, "2010-08-22T21:04:57Z", 0.596076, 0.929542, '/112'),
                  trkPt(20.319561, -87.356119, 81.370000, "2010-08-22T21:05:34Z", 0.608938, 1.251413, '/117'),
                  trkPt(20.319537, -87.356161, 82.810000, "2010-08-22T21:05:39Z", 0.612119, 2.290113, '/118'),
                  trkPt(20.319593, -87.356165, 87.140000, "2010-08-22T21:05:53Z", 0.615990, 0.995402, '/119'),
                  trkPt(20.319776, -87.356383, 56.370000, "2010-08-22T21:06:31Z", 0.634912, 1.792678, '/123'),
                  trkPt(20.319764, -87.356472, 56.860000, "2010-08-22T21:06:41Z", 0.640728, 2.093513, '/124'),
                  trkPt(20.319471, -87.355954, 60.700000, "2010-08-22T21:07:03Z", 0.679852, 6.402100, '/127'),
                  trkPt(20.319654, -87.356080, 64.070000, "2010-08-22T21:07:17Z", 0.694875, 3.863076, '/129'),
                  trkPt(20.319737, -87.356543, 43.400000, "2010-08-22T21:08:57Z", 0.725361, 1.097518, '/134'),
                  trkPt(20.319682, -87.356607, 42.920000, "2010-08-22T21:09:07Z", 0.730976, 2.021221, '/135'),
                  trkPt(20.319681, -87.356281, 41.950000, "2010-08-22T21:09:40Z", 0.752060, 2.300090, '/137'),
                  trkPt(20.319822, -87.356269, 38.110000, "2010-08-22T21:10:00Z", 0.761815, 1.755940, '/138'),
                  trkPt(20.319772, -87.356382, 19.840000, "2010-08-22T21:10:43Z", 0.769896, 0.676548, '/141'),
                  trkPt(20.319816, -87.356404, 8.310000, "2010-08-22T21:13:36Z", 0.773248, 0.069745, '/146'),
                  trkPt(20.319754, -87.356380, 9.270000, "2010-08-22T21:14:57Z", 0.777797, 0.202169, '/147'),
                  trkPt(20.319730, -87.356658, 15.520000, "2010-08-22T21:15:21Z", 0.795852, 2.708344, '/150'),
                  trkPt(20.319803, -87.356748, 24.170000, "2010-08-22T21:15:36Z", 0.803548, 1.847034, '/151'),
                  trkPt(20.320040, -87.356862, 21.290000, "2010-08-22T21:16:01Z", 0.821479, 2.582072, '/152'),
                  trkPt(20.320145, -87.356863, 23.690000, "2010-08-22T21:16:15Z", 0.828721, 1.862165, '/153'),
                  trkPt(20.320248, -87.356844, 11.190000, "2010-08-22T21:16:25Z", 0.835930, 2.595198, '/154'),
                  trkPt(20.320333, -87.356753, 11.190000, "2010-08-22T21:16:57Z", 0.844237, 0.934507, '/157')];

        for (var i = 0; i &lt; points.length; i++) {
           createPoint(points[i]);
        }

        map.addOverlay(new GPolyline(points, "#ff0000", 2));

        points = [trkPt(20.743083, -88.145612, 48.200000, "2010-08-23T14:27:32Z", 0.000000, "unk", '/1'),
                  trkPt(20.742407, -88.149374, 45.320000, "2010-08-23T14:27:48Z", 0.247077, 55.592378, '/3'),
                  trkPt(20.738952, -88.171271, 38.590000, "2010-08-23T14:29:08Z", 1.679353, 64.452422, '/8'),
                  trkPt(20.738770, -88.173924, 40.510000, "2010-08-23T14:29:17Z", 1.850929, 68.630142, '/9'),
                  trkPt(20.741267, -88.200383, 26.570000, "2010-08-23T14:30:45Z", 3.566159, 70.168522, '/15'),
                  trkPt(20.743780, -88.226280, 31.860000, "2010-08-23T14:32:12Z", 5.245415, 69.486443, '/21'),
                  trkPt(20.744149, -88.228293, 30.900000, "2010-08-23T14:32:20Z", 5.377718, 59.536190, '/22'),
                  trkPt(20.744532, -88.232668, 26.570000, "2010-08-23T14:32:38Z", 5.661124, 56.681240, '/24'),
                  trkPt(20.744611, -88.234690, 30.420000, "2010-08-23T14:32:46Z", 5.791649, 58.736539, '/25'),
                  trkPt(20.745005, -88.238830, 32.820000, "2010-08-23T14:33:01Z", 6.060043, 64.414591, '/26'),
                  trkPt(20.745274, -88.242702, 28.500000, "2010-08-23T14:33:14Z", 6.310461, 69.346417, '/27'),
                  trkPt(20.745594, -88.264254, 30.420000, "2010-08-23T14:34:24Z", 7.700657, 71.495768, '/31'),
                  trkPt(20.745343, -88.268310, 35.230000, "2010-08-23T14:34:37Z", 7.962825, 72.600465, '/32'),
                  trkPt(20.739132, -88.299776, 36.670000, "2010-08-23T14:36:19Z", 10.037017, 73.206763, '/37'),
                  trkPt(20.735435, -88.316214, 35.710000, "2010-08-23T14:37:12Z", 11.127488, 74.069790, '/40'),
                  trkPt(20.734070, -88.321690, 34.740000, "2010-08-23T14:37:30Z", 11.493025, 73.107227, '/41'),
                  trkPt(20.718257, -88.393428, 29.940000, "2010-08-23T14:41:23Z", 16.247212, 73.455256, '/55'),
                  trkPt(20.717370, -88.398283, 25.130000, "2010-08-23T14:41:39Z", 16.566316, 71.798425, '/56'),
                  trkPt(20.716473, -88.409713, 13.600000, "2010-08-23T14:42:15Z", 17.306236, 73.991941, '/58'),
                  trkPt(20.715920, -88.415756, 15.520000, "2010-08-23T14:42:34Z", 17.697922, 74.214216, '/59'),
                  trkPt(20.715274, -88.418537, 14.560000, "2010-08-23T14:42:43Z", 17.882770, 73.939358, '/60'),
                  trkPt(20.712332, -88.428897, 31.380000, "2010-08-23T14:43:17Z", 18.581211, 73.952540, '/62'),
                  trkPt(20.711600, -88.432619, 35.710000, "2010-08-23T14:43:29Z", 18.826568, 73.607179, '/63'),
                  trkPt(20.708308, -88.455857, 16.960000, "2010-08-23T14:44:42Z", 20.342773, 74.771773, '/68'),
                  trkPt(20.708242, -88.458965, 16.960000, "2010-08-23T14:44:52Z", 20.543328, 72.199621, '/69'),
                  trkPt(20.713262, -88.492415, 39.550000, "2010-08-23T14:46:39Z", 22.728812, 73.530298, '/76'),
                  trkPt(20.717569, -88.523107, 36.670000, "2010-08-23T14:48:18Z", 24.730875, 72.802311, '/81'),
                  trkPt(20.723064, -88.555943, 40.030000, "2010-08-23T14:50:06Z", 26.882655, 71.725994, '/87'),
                  trkPt(20.723865, -88.560069, 39.070000, "2010-08-23T14:50:20Z", 27.154477, 69.897129, '/88'),
                  trkPt(20.729144, -88.583514, 28.980000, "2010-08-23T14:52:50Z", 28.709985, 37.332182, '/99'),
                  trkPt(20.729505, -88.583751, 29.460000, "2010-08-23T14:52:58Z", 28.739201, 13.147183, '/100'),
                  trkPt(20.729669, -88.583294, 32.820000, "2010-08-23T14:53:03Z", 28.770774, 22.732753, '/101'),
                  trkPt(20.729503, -88.582120, 36.670000, "2010-08-23T14:53:12Z", 28.847361, 30.634738, '/102'),
                  trkPt(20.729177, -88.581430, 38.590000, "2010-08-23T14:53:18Z", 28.897225, 29.918174, '/103'),
                  trkPt(20.728853, -88.581180, 37.150000, "2010-08-23T14:53:25Z", 28.924781, 14.171927, '/104'),
                  trkPt(20.728722, -88.581190, 38.590000, "2010-08-23T14:53:28Z", 28.933839, 10.869607, '/105'),
                  trkPt(20.727778, -88.581385, 41.950000, "2010-08-23T14:53:37Z", 29.000148, 26.523766, '/106'),
                  trkPt(20.726326, -88.581777, 39.070000, "2010-08-23T14:53:46Z", 29.103433, 41.313633, '/107'),
                  trkPt(20.716314, -88.584205, 30.420000, "2010-08-23T14:54:37Z", 29.811477, 49.979604, '/111'),
                  trkPt(20.713414, -88.584870, 31.380000, "2010-08-23T14:54:51Z", 30.016032, 52.599878, '/112'),
                  trkPt(20.707870, -88.586191, 23.690000, "2010-08-23T14:55:21Z", 30.407770, 47.008599, '/114'),
                  trkPt(20.707014, -88.586373, 31.380000, "2010-08-23T14:55:28Z", 30.467963, 30.956156, '/115'),
                  trkPt(20.706636, -88.586489, 31.860000, "2010-08-23T14:55:32Z", 30.495085, 24.410273, '/116'),
                  trkPt(20.706339, -88.586520, 31.860000, "2010-08-23T14:55:36Z", 30.515666, 18.522614, '/118'),
                  trkPt(20.704305, -88.587063, 28.020000, "2010-08-23T14:56:09Z", 30.660254, 15.773233, '/121'),
                  trkPt(20.703681, -88.587251, 30.900000, "2010-08-23T14:56:17Z", 30.704966, 20.120514, '/122'),
                  trkPt(20.700606, -88.588437, 38.590000, "2010-08-23T14:57:02Z", 30.930422, 18.036483, '/127'),
                  trkPt(20.700359, -88.588494, 35.710000, "2010-08-23T14:57:11Z", 30.947850, 6.970961, '/129'),
                  trkPt(20.699655, -88.588501, 33.300000, "2010-08-23T14:57:23Z", 30.996405, 14.566593, '/130'),
                  trkPt(20.699061, -88.588440, 34.740000, "2010-08-23T14:57:33Z", 31.037560, 14.815934, '/131'),
                  trkPt(20.698677, -88.588414, 31.860000, "2010-08-23T14:57:43Z", 31.064097, 9.553196, '/132'),
                  trkPt(20.698567, -88.588416, 30.900000, "2010-08-23T14:57:51Z", 31.071685, 3.414341, '/133'),
                  trkPt(20.686456, -88.574469, 40.030000, "2010-08-23T15:01:11Z", 32.299440, 22.099594, '/153'),
                  trkPt(20.686038, -88.574281, 40.030000, "2010-08-23T15:01:16Z", 32.330716, 22.519023, '/154'),
                  trkPt(20.685263, -88.574241, 39.070000, "2010-08-23T15:01:23Z", 32.384228, 27.520529, '/155'),
                  trkPt(20.684744, -88.573969, 34.740000, "2010-08-23T15:01:29Z", 32.424093, 23.919044, '/156'),
                  trkPt(20.683048, -88.572445, 36.190000, "2010-08-23T15:02:42Z", 32.576903, 7.535836, '/162'),
                  trkPt(20.683262, -88.572289, 40.030000, "2010-08-23T15:02:53Z", 32.594768, 5.846587, '/163'),
                  trkPt(20.683340, -88.572250, 41.470000, "2010-08-23T15:05:05Z", 32.600707, 0.161980, '/166'),
                  trkPt(20.683173, -88.572301, 41.950000, "2010-08-23T15:06:15Z", 32.612685, 0.616024, '/169'),
                  trkPt(20.682760, -88.572215, 49.160000, "2010-08-23T15:06:53Z", 32.641704, 2.749170, '/171'),
                  trkPt(20.682773, -88.572255, 62.140000, "2010-08-23T15:08:16Z", 32.644437, 0.118504, '/173'),
                  trkPt(20.682661, -88.572275, 64.550000, "2010-08-23T15:08:37Z", 32.652268, 1.342564, '/174'),
                  trkPt(20.682670, -88.572315, 65.990000, "2010-08-23T15:08:53Z", 32.654923, 0.597217, '/175'),
                  trkPt(20.682611, -88.572318, 63.580000, "2010-08-23T15:09:10Z", 32.658996, 0.862636, '/176'),
                  trkPt(20.682511, -88.572112, 65.990000, "2010-08-23T15:09:32Z", 32.673971, 2.450374, '/177'),
                  trkPt(20.682581, -88.571624, 58.300000, "2010-08-23T15:11:39Z", 32.705826, 0.902978, '/182')];

        for (var i = 0; i &lt; points.length; i++) {
           createPoint(points[i]);
        }

        map.addOverlay(new GPolyline(points, "#ff0000", 2));

        points = [trkPt(20.682688, -88.571919, 55.890000, "2010-08-23T15:13:25Z", 0.000000, "unk", '/1'),
                  trkPt(20.682727, -88.572340, -17.170000, "2010-08-23T15:14:02Z", 0.027297, 2.655913, '/9'),
                  trkPt(20.682314, -88.573592, -9.000000, "2010-08-23T15:14:31Z", 0.112954, 10.633287, '/11'),
                  trkPt(20.682362, -88.573661, -8.030000, "2010-08-23T15:14:41Z", 0.118501, 1.997096, '/12'),
                  trkPt(20.682273, -88.572040, 3.020000, "2010-08-23T15:15:09Z", 0.223273, 13.470618, '/15'),
                  trkPt(20.682066, -88.571786, 3.980000, "2010-08-23T15:15:24Z", 0.245008, 5.216375, '/16'),
                  trkPt(20.681929, -88.571847, 4.460000, "2010-08-23T15:15:27Z", 0.255243, 12.282723, '/17'),
                  trkPt(20.683019, -88.571897, 22.250000, "2010-08-23T15:16:11Z", 0.330487, 6.156316, '/18'),
                  trkPt(20.682778, -88.572125, 21.770000, "2010-08-23T15:16:29Z", 0.352684, 4.439303, '/20'),
                  trkPt(20.682639, -88.571639, 31.380000, "2010-08-23T15:17:26Z", 0.385474, 2.070987, '/25'),
                  trkPt(20.682422, -88.571711, 32.820000, "2010-08-23T15:18:55Z", 0.401145, 0.633865, '/28'),
                  trkPt(20.682541, -88.571931, 33.300000, "2010-08-23T15:19:46Z", 0.417542, 1.157421, '/29'),
                  trkPt(20.682715, -88.570443, 17.920000, "2010-08-23T15:22:26Z", 0.514299, 2.177029, '/39'),
                  trkPt(20.683033, -88.569531, 19.840000, "2010-08-23T15:25:00Z", 0.577097, 1.468023, '/45'),
                  trkPt(20.683137, -88.569494, 23.210000, "2010-08-23T15:26:26Z", 0.584657, 0.316444, '/46'),
                  trkPt(20.683262, -88.569707, 29.940000, "2010-08-23T15:27:01Z", 0.600880, 1.668697, '/49'),
                  trkPt(20.683447, -88.569824, 31.380000, "2010-08-23T15:27:19Z", 0.615705, 2.965023, '/50'),
                  trkPt(20.683721, -88.569895, 33.780000, "2010-08-23T15:27:49Z", 0.635150, 2.333339, '/52'),
                  trkPt(20.683812, -88.569895, 33.780000, "2010-08-23T15:28:08Z", 0.641426, 1.189120, '/53'),
                  trkPt(20.684102, -88.569680, 32.340000, "2010-08-23T15:29:33Z", 0.665766, 1.030895, '/59'),
                  trkPt(20.684184, -88.569715, 31.860000, "2010-08-23T15:30:35Z", 0.671856, 0.353598, '/62'),
                  trkPt(20.683943, -88.570094, 44.360000, "2010-08-23T15:31:44Z", 0.701424, 1.542668, '/68'),
                  trkPt(20.683930, -88.570282, 35.710000, "2010-08-23T15:32:48Z", 0.713587, 0.684190, '/72'),
                  trkPt(20.684000, -88.570245, 54.930000, "2010-08-23T15:33:22Z", 0.718973, 0.570257, '/74'),
                  trkPt(20.684188, -88.570230, 73.680000, "2010-08-23T15:33:41Z", 0.731975, 2.463540, '/75'),
                  trkPt(20.684337, -88.570240, 63.580000, "2010-08-23T15:34:22Z", 0.742271, 0.904074, '/77'),
                  trkPt(20.684667, -88.570022, 77.040000, "2010-08-23T15:35:01Z", 0.769026, 2.469697, '/80'),
                  trkPt(20.684833, -88.569976, 75.600000, "2010-08-23T15:35:18Z", 0.780854, 2.504556, '/81'),
                  trkPt(20.684983, -88.569881, 61.180000, "2010-08-23T15:36:10Z", 0.792878, 0.832464, '/85'),
                  trkPt(20.684886, -88.570059, 46.760000, "2010-08-23T15:37:34Z", 0.806169, 0.569617, '/91'),
                  trkPt(20.684663, -88.570136, 43.400000, "2010-08-23T15:37:52Z", 0.822331, 3.232441, '/92'),
                  trkPt(20.684561, -88.570133, 45.320000, "2010-08-23T15:38:10Z", 0.829369, 1.407481, '/93'),
                  trkPt(20.684486, -88.570112, 51.090000, "2010-08-23T15:38:29Z", 0.834716, 1.013175, '/94'),
                  trkPt(20.684270, -88.570212, 83.290000, "2010-08-23T15:39:12Z", 0.850950, 1.359145, '/98'),
                  trkPt(20.684058, -88.570254, 82.330000, "2010-08-23T15:39:31Z", 0.865820, 2.817509, '/99'),
                  trkPt(20.683958, -88.570110, 66.470000, "2010-08-23T15:40:06Z", 0.877392, 1.190177, '/101'),
                  trkPt(20.684092, -88.569814, 65.510000, "2010-08-23T15:41:12Z", 0.898609, 1.157294, '/103'),
                  trkPt(20.683918, -88.569237, 47.720000, "2010-08-23T15:43:17Z", 0.937724, 1.126529, '/114'),
                  trkPt(20.683983, -88.569155, 42.440000, "2010-08-23T15:43:32Z", 0.944659, 1.664262, '/115'),
                  trkPt(20.684091, -88.569131, 41.470000, "2010-08-23T15:43:48Z", 0.952266, 1.711687, '/116'),
                  trkPt(20.684214, -88.569174, 47.720000, "2010-08-23T15:45:10Z", 0.961191, 0.391836, '/119'),
                  trkPt(20.683838, -88.568487, 52.050000, "2010-08-23T15:47:58Z", 1.012546, 1.100459, '/128'),
                  trkPt(20.683559, -88.567838, 42.440000, "2010-08-23T15:50:56Z", 1.058630, 0.932042, '/140'),
                  trkPt(20.683354, -88.567546, 45.320000, "2010-08-23T15:51:42Z", 1.082186, 1.843469, '/143'),
                  trkPt(20.683215, -88.567538, 47.240000, "2010-08-23T15:52:00Z", 1.091786, 1.920046, '/144'),
                  trkPt(20.682843, -88.567717, 49.650000, "2010-08-23T15:52:40Z", 1.119922, 2.532214, '/146'),
                  trkPt(20.682707, -88.567734, 45.800000, "2010-08-23T15:52:59Z", 1.129365, 1.789289, '/147'),
                  trkPt(20.682650, -88.567658, 43.400000, "2010-08-23T15:53:29Z", 1.135651, 0.754236, '/148'),
                  trkPt(20.682627, -88.567769, 41.470000, "2010-08-23T15:53:46Z", 1.142986, 1.553464, '/149'),
                  trkPt(20.682544, -88.567748, 40.990000, "2010-08-23T15:54:03Z", 1.148869, 1.245743, '/150'),
                  trkPt(20.682521, -88.567719, 37.630000, "2010-08-23T15:54:36Z", 1.151322, 0.267640, '/152'),
                  trkPt(20.682617, -88.568318, 43.880000, "2010-08-23T15:56:04Z", 1.190534, 1.604132, '/158'),
                  trkPt(20.682249, -88.568685, 44.840000, "2010-08-23T15:58:23Z", 1.225246, 0.899000, '/164'),
                  trkPt(20.682236, -88.568804, 48.200000, "2010-08-23T15:58:38Z", 1.232976, 1.855313, '/165'),
                  trkPt(20.682118, -88.568923, 42.440000, "2010-08-23T15:59:26Z", 1.244165, 0.839148, '/166'),
                  trkPt(20.682147, -88.569351, 51.090000, "2010-08-23T16:00:20Z", 1.271853, 1.845881, '/170'),
                  trkPt(20.682026, -88.569475, 50.610000, "2010-08-23T16:00:38Z", 1.283414, 2.312224, '/171'),
                  trkPt(20.681671, -88.570140, 53.970000, "2010-08-23T16:02:05Z", 1.332816, 2.044206, '/176'),
                  trkPt(20.681483, -88.570212, 46.760000, "2010-08-23T16:02:41Z", 1.346589, 1.377314, '/178'),
                  trkPt(20.681286, -88.570509, 46.280000, "2010-08-23T16:03:35Z", 1.370080, 1.566073, '/182'),
                  trkPt(20.681207, -88.570525, 45.800000, "2010-08-23T16:03:54Z", 1.375626, 1.050748, '/183'),
                  trkPt(20.681060, -88.570806, 50.130000, "2010-08-23T16:04:28Z", 1.396399, 2.199502, '/185'),
                  trkPt(20.680911, -88.570913, 48.200000, "2010-08-23T16:04:50Z", 1.408779, 2.025808, '/186'),
                  trkPt(20.680671, -88.571018, 50.130000, "2010-08-23T16:05:27Z", 1.426664, 1.740175, '/188'),
                  trkPt(20.680549, -88.570977, 47.720000, "2010-08-23T16:05:53Z", 1.435484, 1.221235, '/189'),
                  trkPt(20.680533, -88.570924, 47.720000, "2010-08-23T16:06:14Z", 1.439077, 0.615993, '/190'),
                  trkPt(20.680627, -88.570899, 52.050000, "2010-08-23T16:06:31Z", 1.445758, 1.414700, '/191'),
                  trkPt(20.680745, -88.570982, 48.200000, "2010-08-23T16:13:31Z", 1.455500, 0.083505, '/197'),
                  trkPt(20.680947, -88.570885, 52.050000, "2010-08-23T16:13:50Z", 1.470773, 2.893788, '/198'),
                  trkPt(20.681073, -88.570592, 57.340000, "2010-08-23T16:14:30Z", 1.491580, 1.872616, '/201'),
                  trkPt(20.682080, -88.569351, 66.470000, "2010-08-23T16:17:12Z", 1.597575, 2.355458, '/213'),
                  trkPt(20.682307, -88.569231, 54.930000, "2010-08-23T16:17:30Z", 1.615041, 3.493129, '/215'),
                  trkPt(20.682459, -88.569247, 51.090000, "2010-08-23T16:17:48Z", 1.625574, 2.106717, '/216'),
                  trkPt(20.682643, -88.569214, 44.840000, "2010-08-23T16:18:04Z", 1.638442, 2.895177, '/217'),
                  trkPt(20.682768, -88.569427, 41.470000, "2010-08-23T16:19:01Z", 1.654665, 1.024645, '/219'),
                  trkPt(20.682875, -88.569460, 48.200000, "2010-08-23T16:19:18Z", 1.662346, 1.626560, '/220'),
                  trkPt(20.682838, -88.569428, 49.650000, "2010-08-23T16:19:29Z", 1.665629, 1.074331, '/222'),
                  trkPt(20.682469, -88.568711, 57.820000, "2010-08-23T16:21:02Z", 1.718430, 2.043892, '/233'),
                  trkPt(20.682524, -88.568477, 69.830000, "2010-08-23T16:21:19Z", 1.733997, 3.296680, '/234'),
                  trkPt(20.682944, -88.568002, 55.410000, "2010-08-23T16:22:07Z", 1.776168, 3.162803, '/237'),
                  trkPt(20.683019, -88.567995, 53.490000, "2010-08-23T16:22:12Z", 1.781360, 3.738508, '/238'),
                  trkPt(20.683147, -88.568020, 50.610000, "2010-08-23T16:22:24Z", 1.790334, 2.692189, '/239'),
                  trkPt(20.683509, -88.568836, 44.360000, "2010-08-23T16:24:51Z", 1.848604, 1.427015, '/248'),
                  trkPt(20.683450, -88.569195, 40.990000, "2010-08-23T16:25:14Z", 1.872122, 3.681105, '/250'),
                  trkPt(20.683162, -88.569624, 37.150000, "2010-08-23T16:25:51Z", 1.906192, 3.314844, '/253'),
                  trkPt(20.682838, -88.571558, 56.860000, "2010-08-23T16:28:37Z", 2.032963, 2.749262, '/267'),
                  trkPt(20.682709, -88.571596, 49.650000, "2010-08-23T16:29:12Z", 2.042192, 0.949211, '/268'),
                  trkPt(20.682545, -88.571807, 49.160000, "2010-08-23T16:30:05Z", 2.059891, 1.202245, '/271'),
                  trkPt(20.682329, -88.571665, 22.250000, "2010-08-23T16:32:02Z", 2.077380, 0.538122, '/274'),
                  trkPt(20.682425, -88.571769, 32.340000, "2010-08-23T16:32:55Z", 2.086807, 0.640308, '/275'),
                  trkPt(20.682242, -88.571296, 43.880000, "2010-08-23T16:43:55Z", 2.119833, 0.180142, '/286'),
                  trkPt(20.682436, -88.571846, 40.510000, "2010-08-23T16:48:38Z", 2.157759, 0.482451, '/289'),
                  trkPt(20.682499, -88.571759, 30.900000, "2010-08-23T16:50:04Z", 2.164857, 0.297146, '/290'),
                  trkPt(20.682502, -88.571835, 33.300000, "2010-08-23T16:50:49Z", 2.169766, 0.392652, '/291'),
                  trkPt(20.682411, -88.571823, 43.400000, "2010-08-23T16:51:29Z", 2.176089, 0.569141, '/292'),
                  trkPt(20.682405, -88.571786, 44.840000, "2010-08-23T16:58:01Z", 2.178512, 0.022250, '/298'),
                  trkPt(20.682381, -88.571841, 46.760000, "2010-08-23T17:00:44Z", 2.182428, 0.086479, '/299'),
                  trkPt(20.682472, -88.571914, 53.970000, "2010-08-23T17:01:20Z", 2.190275, 0.784710, '/300'),
                  trkPt(20.682370, -88.571722, 44.360000, "2010-08-23T17:02:34Z", 2.204521, 0.693065, '/302'),
                  trkPt(20.682391, -88.571891, 45.800000, "2010-08-23T17:03:16Z", 2.215521, 0.942874, '/303'),
                  trkPt(20.682321, -88.571662, 54.450000, "2010-08-23T17:03:52Z", 2.231066, 1.554436, '/304'),
                  trkPt(20.682419, -88.571747, 61.660000, "2010-08-23T17:04:27Z", 2.239770, 0.895298, '/305'),
                  trkPt(20.682374, -88.571691, 65.030000, "2010-08-23T17:05:14Z", 2.244533, 0.364822, '/306'),
                  trkPt(20.682232, -88.571670, 63.100000, "2010-08-23T17:05:53Z", 2.254420, 0.912633, '/307'),
                  trkPt(20.682422, -88.571838, 41.470000, "2010-08-23T17:06:23Z", 2.271426, 2.040744, '/308'),
                  trkPt(20.682552, -88.571904, 22.250000, "2010-08-23T17:07:31Z", 2.281352, 0.525488, '/310'),
                  trkPt(20.682440, -88.571812, 32.340000, "2010-08-23T17:08:14Z", 2.291094, 0.815596, '/311'),
                  trkPt(20.682408, -88.571719, 30.900000, "2010-08-23T17:11:09Z", 2.297487, 0.131525, '/313'),
                  trkPt(20.682448, -88.571836, 35.710000, "2010-08-23T17:12:53Z", 2.305525, 0.278211, '/315'),
                  trkPt(20.682505, -88.571723, 43.880000, "2010-08-23T17:15:05Z", 2.313808, 0.225906, '/322'),
                  trkPt(20.682541, -88.571947, 44.840000, "2010-08-23T17:15:19Z", 2.328472, 3.770905, '/324'),
                  trkPt(20.682571, -88.571823, 43.880000, "2010-08-23T17:15:25Z", 2.336736, 4.958371, '/325')];

        for (var i = 0; i &lt; points.length; i++) {
           createPoint(points[i]);
        }

        map.addOverlay(new GPolyline(points, "#ff0000", 2));

        points = [trkPt(20.682485, -88.570832, 333.710000, "2010-08-23T17:18:21Z", 0.000000, "unk", '/1'),
                  trkPt(20.682489, -88.570864, 338.040000, "2010-08-23T17:18:34Z", 0.002084, 0.577195, '/3'),
                  trkPt(20.682529, -88.570834, 337.560000, "2010-08-23T17:18:45Z", 0.005455, 1.102985, '/4'),
                  trkPt(20.682248, -88.570752, 336.120000, "2010-08-23T17:18:51Z", 0.025544, 12.053409, '/5'),
                  trkPt(20.682016, -88.570631, 335.640000, "2010-08-23T17:18:56Z", 0.043347, 12.818607, '/6'),
                  trkPt(20.681977, -88.570506, 330.830000, "2010-08-23T17:19:00Z", 0.051849, 7.651963, '/7'),
                  trkPt(20.681835, -88.570594, 329.870000, "2010-08-23T17:19:08Z", 0.063170, 5.094223, '/8'),
                  trkPt(20.681875, -88.570543, 323.620000, "2010-08-23T17:19:26Z", 0.067464, 0.858880, '/10'),
                  trkPt(20.681920, -88.570573, 321.700000, "2010-08-23T17:19:30Z", 0.071123, 3.292486, '/12'),
                  trkPt(20.682132, -88.570586, 322.180000, "2010-08-23T17:19:34Z", 0.085768, 13.180600, '/13'),
                  trkPt(20.682340, -88.570582, 320.260000, "2010-08-23T17:19:48Z", 0.100115, 3.689408, '/14'),
                  trkPt(20.682593, -88.570470, 315.930000, "2010-08-23T17:20:06Z", 0.119002, 3.777223, '/15'),
                  trkPt(20.682707, -88.570503, 308.720000, "2010-08-23T17:20:23Z", 0.127147, 1.724957, '/16'),
                  trkPt(20.682919, -88.570794, 287.090000, "2010-08-23T17:21:00Z", 0.150945, 2.315433, '/18'),
                  trkPt(20.683317, -88.571170, 246.230000, "2010-08-23T17:21:19Z", 0.187578, 6.941105, '/19'),
                  trkPt(20.683505, -88.571715, 177.500000, "2010-08-23T17:21:45Z", 0.225057, 5.189389, '/20'),
                  trkPt(20.683359, -88.572229, 27.050000, "2010-08-23T17:34:28Z", 0.259717, 0.163530, '/22'),
                  trkPt(20.683570, -88.572093, 31.860000, "2010-08-23T17:34:40Z", 0.276710, 5.097974, '/24'),
                  trkPt(20.683683, -88.572207, 34.740000, "2010-08-23T17:34:47Z", 0.287426, 5.511255, '/25'),
                  trkPt(20.683693, -88.572521, 38.590000, "2010-08-23T17:35:13Z", 0.307698, 2.806844, '/29'),
                  trkPt(20.683483, -88.572687, 36.190000, "2010-08-23T17:35:20Z", 0.325711, 9.263981, '/30'),
                  trkPt(20.683480, -88.572785, 34.740000, "2010-08-23T17:35:37Z", 0.332037, 1.339621, '/32'),
                  trkPt(20.684921, -88.574037, 35.710000, "2010-08-23T17:36:02Z", 0.460109, 18.442404, '/35'),
                  trkPt(20.685282, -88.574188, 36.190000, "2010-08-23T17:36:06Z", 0.486845, 24.062159, '/36'),
                  trkPt(20.686155, -88.574272, 40.510000, "2010-08-23T17:36:15Z", 0.547297, 24.180862, '/37'),
                  trkPt(20.686345, -88.574339, 40.990000, "2010-08-23T17:36:17Z", 0.561096, 24.837381, '/38'),
                  trkPt(20.687987, -88.576198, 38.110000, "2010-08-23T17:36:43Z", 0.726053, 22.840269, '/41'),
                  trkPt(20.688331, -88.576248, 37.150000, "2010-08-23T17:36:50Z", 0.749996, 12.313679, '/42'),
                  trkPt(20.688380, -88.576105, 37.630000, "2010-08-23T17:36:53Z", 0.759822, 11.790996, '/43'),
                  trkPt(20.688137, -88.575164, 36.670000, "2010-08-23T17:37:01Z", 0.822807, 28.342901, '/44'),
                  trkPt(20.688036, -88.574363, 37.630000, "2010-08-23T17:37:06Z", 0.874955, 37.546668, '/45'),
                  trkPt(20.688256, -88.572540, 36.190000, "2010-08-23T17:37:16Z", 0.993550, 42.694287, '/46'),
                  trkPt(20.689133, -88.568639, 35.710000, "2010-08-23T17:37:36Z", 1.252409, 46.594547, '/48'),
                  trkPt(20.689013, -88.567532, 34.740000, "2010-08-23T17:37:42Z", 1.324310, 43.140908, '/49'),
                  trkPt(20.688635, -88.566758, 32.340000, "2010-08-23T17:37:47Z", 1.380644, 40.560275, '/50'),
                  trkPt(20.687543, -88.565870, 33.300000, "2010-08-23T17:37:55Z", 1.475273, 42.582941, '/51'),
                  trkPt(20.685938, -88.565326, 32.340000, "2010-08-23T17:38:04Z", 1.591397, 46.449808, '/52'),
                  trkPt(20.678103, -88.562872, 19.360000, "2010-08-23T17:38:45Z", 2.154479, 49.441354, '/55'),
                  trkPt(20.673189, -88.561225, 23.210000, "2010-08-23T17:39:11Z", 2.509658, 49.178572, '/57'),
                  trkPt(20.671581, -88.560522, 29.940000, "2010-08-23T17:39:21Z", 2.629476, 43.134744, '/58'),
                  trkPt(20.670767, -88.559596, 25.130000, "2010-08-23T17:39:28Z", 2.711464, 42.165199, '/59'),
                  trkPt(20.652510, -88.532367, 28.020000, "2010-08-23T17:42:12Z", 4.873163, 47.451932, '/71'),
                  trkPt(20.651436, -88.530358, 34.740000, "2010-08-23T17:42:24Z", 5.022483, 44.795735, '/72'),
                  trkPt(20.651842, -88.521139, 34.260000, "2010-08-23T17:44:30Z", 5.618096, 17.017542, '/86'),
                  trkPt(20.651831, -88.520003, 34.740000, "2010-08-23T17:44:40Z", 5.691413, 26.393937, '/87'),
                  trkPt(20.651616, -88.518550, 34.260000, "2010-08-23T17:44:51Z", 5.786349, 31.069835, '/88'),
                  trkPt(20.623384, -88.429722, 19.840000, "2010-08-23T17:52:05Z", 11.841082, 50.223598, '/119'),
                  trkPt(20.622868, -88.427159, 28.020000, "2010-08-23T17:52:17Z", 12.010303, 50.766110, '/120'),
                  trkPt(20.621822, -88.412687, 31.860000, "2010-08-23T17:54:10Z", 12.947225, 29.848847, '/131'),
                  trkPt(20.621940, -88.411096, 32.820000, "2010-08-23T17:54:21Z", 13.050243, 33.715099, '/132'),
                  trkPt(20.642337, -88.299192, 37.150000, "2010-08-23T18:03:01Z", 20.408689, 50.943084, '/174'),
                  trkPt(20.642992, -88.297622, 42.920000, "2010-08-23T18:03:18Z", 20.519629, 23.493331, '/176'),
                  trkPt(20.676808, -88.243148, 18.400000, "2010-08-23T18:09:24Z", 24.738246, 41.494585, '/208'),
                  trkPt(20.676885, -88.242796, 18.400000, "2010-08-23T18:09:30Z", 24.761571, 13.995255, '/209'),
                  trkPt(20.676592, -88.242690, 20.320000, "2010-08-23T18:09:36Z", 24.782905, 12.800149, '/211'),
                  trkPt(20.676302, -88.242660, 21.770000, "2010-08-23T18:09:40Z", 24.802999, 18.084613, '/212'),
                  trkPt(20.675278, -88.243109, 23.690000, "2010-08-23T18:09:53Z", 24.879333, 21.138777, '/215'),
                  trkPt(20.674903, -88.243167, 22.730000, "2010-08-23T18:09:57Z", 24.905465, 23.519075, '/216'),
                  trkPt(20.673335, -88.242828, 21.770000, "2010-08-23T18:10:13Z", 25.015797, 24.824544, '/218'),
                  trkPt(20.672690, -88.242886, 18.880000, "2010-08-23T18:10:22Z", 25.060438, 17.856491, '/219'),
                  trkPt(20.672242, -88.242968, 19.360000, "2010-08-23T18:10:28Z", 25.091785, 18.808297, '/220'),
                  trkPt(20.672064, -88.243022, 18.400000, "2010-08-23T18:10:33Z", 25.104546, 9.188002, '/221'),
                  trkPt(20.671405, -88.242989, 16.000000, "2010-08-23T18:10:43Z", 25.150046, 16.379824, '/222'),
                  trkPt(20.670804, -88.242916, 15.040000, "2010-08-23T18:10:51Z", 25.191762, 18.772349, '/223'),
                  trkPt(20.670449, -88.242933, 16.480000, "2010-08-23T18:10:55Z", 25.216270, 22.057200, '/224'),
                  trkPt(20.668627, -88.243548, 19.360000, "2010-08-23T18:11:19Z", 25.348047, 19.766472, '/226'),
                  trkPt(20.667751, -88.243446, 21.290000, "2010-08-23T18:11:31Z", 25.408820, 18.231915, '/227'),
                  trkPt(20.666307, -88.243151, 33.780000, "2010-08-23T18:11:58Z", 25.510212, 13.518955, '/230'),
                  trkPt(20.665656, -88.243099, 36.670000, "2010-08-23T18:12:10Z", 25.555235, 13.506931, '/232'),
                  trkPt(20.665496, -88.243111, 36.670000, "2010-08-23T18:12:13Z", 25.566297, 13.274342, '/233'),
                  trkPt(20.664479, -88.243103, 37.630000, "2010-08-23T18:12:27Z", 25.636439, 18.036478, '/234'),
                  trkPt(20.664158, -88.243082, 38.110000, "2010-08-23T18:12:34Z", 25.658619, 11.406864, '/235'),
                  trkPt(20.663061, -88.243199, 31.380000, "2010-08-23T18:12:58Z", 25.734652, 11.404974, '/237'),
                  trkPt(20.661467, -88.243471, 21.290000, "2010-08-23T18:13:36Z", 25.845979, 10.546738, '/240'),
                  trkPt(20.661316, -88.243458, 21.290000, "2010-08-23T18:13:55Z", 25.856426, 1.979554, '/241'),
                  trkPt(20.660983, -88.243473, 20.810000, "2010-08-23T18:14:06Z", 25.879413, 7.522902, '/242'),
                  trkPt(20.660818, -88.243192, 23.210000, "2010-08-23T18:14:25Z", 25.900821, 4.056336, '/246'),
                  trkPt(20.660874, -88.242980, 23.690000, "2010-08-23T18:15:06Z", 25.915037, 1.248201, '/248'),
                  trkPt(20.660794, -88.242896, 24.650000, "2010-08-23T18:17:23Z", 25.922772, 0.203248, '/251'),
                  trkPt(20.660803, -88.243044, 30.420000, "2010-08-23T18:19:28Z", 25.932343, 0.275643, '/254'),
                  trkPt(20.660783, -88.242975, 51.090000, "2010-08-23T18:26:47Z", 25.937004, 0.038223, '/256'),
                  trkPt(20.660857, -88.242921, 23.210000, "2010-08-23T18:49:26Z", 25.943183, 0.016370, '/257'),
                  trkPt(20.660949, -88.243377, 28.980000, "2010-08-23T18:55:23Z", 25.973286, 0.303559, '/260'),
                  trkPt(20.661145, -88.243449, 32.340000, "2010-08-23T18:55:30Z", 25.987580, 7.351231, '/261'),
                  trkPt(20.661363, -88.243450, 31.860000, "2010-08-23T18:55:36Z", 26.002615, 9.021022, '/262'),
                  trkPt(20.661670, -88.243419, 28.980000, "2010-08-23T18:55:46Z", 26.023882, 7.656235, '/264'),
                  trkPt(20.661852, -88.243422, 28.980000, "2010-08-23T18:55:49Z", 26.036436, 15.064333, '/265'),
                  trkPt(20.662517, -88.243308, 29.460000, "2010-08-23T18:56:06Z", 26.082886, 9.836396, '/267'),
                  trkPt(20.662805, -88.243196, 28.020000, "2010-08-23T18:56:39Z", 26.104022, 2.305826, '/269'),
                  trkPt(20.663417, -88.243125, 36.670000, "2010-08-23T18:56:55Z", 26.146479, 9.552625, '/271'),
                  trkPt(20.663555, -88.243094, 38.590000, "2010-08-23T18:56:58Z", 26.156204, 11.670537, '/272'),
                  trkPt(20.663939, -88.243051, 48.200000, "2010-08-23T18:57:06Z", 26.182833, 11.982828, '/273'),
                  trkPt(20.664146, -88.243063, 46.760000, "2010-08-23T18:57:10Z", 26.197130, 12.867493, '/274'),
                  trkPt(20.664947, -88.243081, 37.630000, "2010-08-23T18:57:24Z", 26.252385, 14.208477, '/275'),
                  trkPt(20.666134, -88.243094, 26.570000, "2010-08-23T18:57:39Z", 26.334254, 19.648502, '/276'),
                  trkPt(20.666589, -88.243167, 30.420000, "2010-08-23T18:57:45Z", 26.365986, 19.039114, '/277'),
                  trkPt(20.668409, -88.243536, 30.900000, "2010-08-23T18:58:10Z", 26.493745, 18.397362, '/280'),
                  trkPt(20.668816, -88.243511, 32.820000, "2010-08-23T18:58:16Z", 26.521861, 16.869654, '/281'),
                  trkPt(20.670367, -88.242901, 50.130000, "2010-08-23T18:58:37Z", 26.635842, 19.539609, '/283'),
                  trkPt(20.671030, -88.242865, 44.840000, "2010-08-23T18:58:45Z", 26.681627, 20.603003, '/284'),
                  trkPt(20.671841, -88.242971, 36.670000, "2010-08-23T18:58:55Z", 26.737976, 20.285761, '/285'),
                  trkPt(20.673652, -88.242821, 26.090000, "2010-08-23T18:59:18Z", 26.863251, 19.608213, '/287'),
                  trkPt(20.674705, -88.243098, 26.570000, "2010-08-23T18:59:35Z", 26.938041, 15.837887, '/289'),
                  trkPt(20.674915, -88.243124, 27.050000, "2010-08-23T18:59:38Z", 26.952621, 17.495971, '/290'),
                  trkPt(20.675049, -88.243128, 27.530000, "2010-08-23T18:59:40Z", 26.961866, 16.641260, '/291'),
                  trkPt(20.675439, -88.243025, 28.980000, "2010-08-23T18:59:46Z", 26.989572, 16.623774, '/292'),
                  trkPt(20.675998, -88.242754, 31.380000, "2010-08-23T18:59:54Z", 27.031905, 19.049945, '/293'),
                  trkPt(20.676389, -88.242662, 29.460000, "2010-08-23T18:59:59Z", 27.059517, 19.880613, '/294'),
                  trkPt(20.676687, -88.242696, 28.980000, "2010-08-23T19:00:04Z", 27.080186, 14.881739, '/295'),
                  trkPt(20.676904, -88.242796, 31.380000, "2010-08-23T19:00:09Z", 27.096484, 11.734453, '/296'),
                  trkPt(20.677093, -88.242689, 31.860000, "2010-08-23T19:00:19Z", 27.111235, 5.310200, '/299'),
                  trkPt(20.690177, -88.221611, 28.980000, "2010-08-23T19:02:41Z", 28.743373, 41.378151, '/312'),
                  trkPt(20.690776, -88.220249, 26.090000, "2010-08-23T19:02:50Z", 28.840475, 38.840663, '/313'),
                  trkPt(20.690867, -88.219222, 28.020000, "2010-08-23T19:02:58Z", 28.907032, 29.951019, '/314'),
                  trkPt(20.690331, -88.217134, 35.710000, "2010-08-23T19:03:25Z", 29.046729, 18.626160, '/317'),
                  trkPt(20.689670, -88.204128, 37.630000, "2010-08-23T19:06:10Z", 29.887108, 18.335544, '/333'),
                  trkPt(20.689371, -88.189877, 9.270000, "2010-08-23T19:10:56Z", 30.806810, 11.576677, '/361'),
                  trkPt(20.689760, -88.187701, 25.130000, "2010-08-23T19:11:24Z", 30.949746, 18.377408, '/365'),
                  trkPt(20.692939, -88.173127, 28.980000, "2010-08-23T19:17:25Z", 31.915268, 9.628480, '/386'),
                  trkPt(20.693032, -88.173298, 28.980000, "2010-08-23T19:17:29Z", 31.928030, 11.485501, '/387'),
                  trkPt(20.691043, -88.182511, 28.500000, "2010-08-23T19:18:37Z", 32.538064, 32.295934, '/394'),
                  trkPt(20.691217, -88.182953, 33.300000, "2010-08-23T19:18:44Z", 32.569004, 15.911740, '/395'),
                  trkPt(20.691950, -88.183176, 37.150000, "2010-08-23T19:18:53Z", 32.621565, 21.024322, '/397'),
                  trkPt(20.692028, -88.183451, 38.110000, "2010-08-23T19:18:58Z", 32.640105, 13.348948, '/398'),
                  trkPt(20.691332, -88.185821, 37.150000, "2010-08-23T19:19:29Z", 32.800372, 18.611656, '/402'),
                  trkPt(20.690825, -88.188104, 28.980000, "2010-08-23T19:19:53Z", 32.951763, 22.708593, '/404'),
                  trkPt(20.690795, -88.201352, 22.250000, "2010-08-23T19:23:38Z", 33.806516, 13.676055, '/430'),
                  trkPt(20.690865, -88.201782, 3.020000, "2010-08-23T19:23:56Z", 33.834676, 5.632045, '/433'),
                  trkPt(20.690993, -88.201888, -9.960000, "2010-08-23T19:24:28Z", 33.845843, 1.256315, '/435'),
                  trkPt(20.690960, -88.202007, -9.480000, "2010-08-23T19:24:33Z", 33.853851, 5.765796, '/436'),
                  trkPt(20.690881, -88.202038, -5.630000, "2010-08-23T19:25:07Z", 33.859655, 0.614484, '/438'),
                  trkPt(20.690758, -88.207651, 20.810000, "2010-08-23T19:28:12Z", 34.221901, 7.049108, '/456'),
                  trkPt(20.691900, -88.217339, 37.630000, "2010-08-23T19:30:15Z", 34.851904, 18.439109, '/469'),
                  trkPt(20.691790, -88.217550, 36.670000, "2010-08-23T19:30:21Z", 34.867488, 9.350814, '/470'),
                  trkPt(20.690991, -88.217951, 36.670000, "2010-08-23T19:30:37Z", 34.928365, 13.697195, '/473'),
                  trkPt(20.690578, -88.218223, 41.470000, "2010-08-23T19:30:59Z", 34.961821, 5.474594, '/476'),
                  trkPt(20.690463, -88.218159, 40.030000, "2010-08-23T19:32:31Z", 34.970762, 0.349898, '/478'),
                  trkPt(20.690504, -88.218212, 38.110000, "2010-08-23T19:32:37Z", 34.975200, 2.662645, '/479'),
                  trkPt(20.690591, -88.218187, 35.710000, "2010-08-23T19:32:59Z", 34.981413, 1.016655, '/481'),
                  trkPt(20.690710, -88.218266, 36.190000, "2010-08-23T19:33:03Z", 34.991074, 8.694966, '/482'),
                  trkPt(20.690745, -88.218388, 35.710000, "2010-08-23T19:33:06Z", 34.999307, 9.879924, '/483'),
                  trkPt(20.690690, -88.218400, 34.740000, "2010-08-23T19:33:11Z", 35.003179, 2.787488, '/484'),
                  trkPt(20.690646, -88.218207, 39.070000, "2010-08-23T19:34:25Z", 35.015996, 0.623515, '/488'),
                  trkPt(20.690793, -88.218356, 40.030000, "2010-08-23T19:34:32Z", 35.029967, 7.185263, '/490'),
                  trkPt(20.691053, -88.219080, 37.630000, "2010-08-23T19:34:43Z", 35.080002, 16.375216, '/493'),
                  trkPt(20.691092, -88.219419, 36.190000, "2010-08-23T19:34:49Z", 35.102039, 13.222018, '/494'),
                  trkPt(20.690964, -88.219533, 35.230000, "2010-08-23T19:34:52Z", 35.113529, 13.788518, '/495'),
                  trkPt(20.690622, -88.220866, 36.670000, "2010-08-23T19:35:05Z", 35.202709, 24.695977, '/497'),
                  trkPt(20.679077, -88.239663, 34.740000, "2010-08-23T19:37:13Z", 36.653539, 40.804577, '/510'),
                  trkPt(20.679285, -88.240150, 31.860000, "2010-08-23T19:37:19Z", 36.688082, 20.725661, '/511'),
                  trkPt(20.685230, -88.244247, 25.130000, "2010-08-23T19:37:59Z", 37.175925, 43.905889, '/515'),
                  trkPt(20.686696, -88.244748, 25.130000, "2010-08-23T19:38:07Z", 37.282073, 47.766682, '/516'),
                  trkPt(20.688524, -88.244764, 26.090000, "2010-08-23T19:38:16Z", 37.408150, 50.430790, '/517'),
                  trkPt(20.691318, -88.244701, 24.170000, "2010-08-23T19:38:31Z", 37.600888, 46.257198, '/518'),
                  trkPt(20.692123, -88.244675, 20.320000, "2010-08-23T19:38:43Z", 37.656432, 16.663270, '/520'),
                  trkPt(20.692649, -88.244638, 22.730000, "2010-08-23T19:38:50Z", 37.692788, 18.697062, '/521'),
                  trkPt(20.693802, -88.244605, 24.650000, "2010-08-23T19:38:58Z", 37.772336, 35.796655, '/522'),
                  trkPt(20.695655, -88.244559, 23.690000, "2010-08-23T19:39:08Z", 37.900167, 46.019311, '/523'),
                  trkPt(20.698040, -88.244259, 26.090000, "2010-08-23T19:39:20Z", 38.065790, 49.686777, '/524'),
                  trkPt(20.699542, -88.243436, 26.090000, "2010-08-23T19:39:28Z", 38.182194, 52.382012, '/525'),
                  trkPt(20.702144, -88.241406, 35.230000, "2010-08-23T19:39:48Z", 38.404356, 39.989015, '/527'),
                  trkPt(20.702576, -88.241001, 36.190000, "2010-08-23T19:40:02Z", 38.443984, 10.190035, '/529'),
                  trkPt(20.711517, -88.234051, 38.110000, "2010-08-23T19:40:57Z", 39.206396, 49.903325, '/534'),
                  trkPt(20.713909, -88.232022, 39.070000, "2010-08-23T19:41:11Z", 39.416984, 54.151438, '/535'),
                  trkPt(20.715235, -88.230385, 35.230000, "2010-08-23T19:41:20Z", 39.556681, 55.878426, '/536'),
                  trkPt(20.721623, -88.220294, 28.980000, "2010-08-23T19:42:10Z", 40.342701, 56.593474, '/540'),
                  trkPt(20.724469, -88.216375, 31.860000, "2010-08-23T19:42:30Z", 40.662753, 57.609331, '/542'),
                  trkPt(20.725057, -88.214810, 28.020000, "2010-08-23T19:42:37Z", 40.771544, 55.949633, '/543'),
                  trkPt(20.725203, -88.213094, 28.980000, "2010-08-23T19:42:44Z", 40.882691, 57.161397, '/544'),
                  trkPt(20.725139, -88.196532, 27.050000, "2010-08-23T19:44:35Z", 41.951027, 34.648735, '/555'),
                  trkPt(20.725203, -88.196583, 28.980000, "2010-08-23T19:44:39Z", 41.956532, 4.954350, '/556'),
                  trkPt(20.725320, -88.202495, 29.940000, "2010-08-23T19:45:28Z", 42.337969, 28.023938, '/562'),
                  trkPt(20.725639, -88.202834, 29.940000, "2010-08-23T19:45:35Z", 42.368988, 15.952772, '/563'),
                  trkPt(20.725890, -88.202818, 28.020000, "2010-08-23T19:45:37Z", 42.386330, 31.214807, '/564'),
                  trkPt(20.727179, -88.202842, 21.770000, "2010-08-23T19:45:46Z", 42.475242, 35.565142, '/565'),
                  trkPt(20.729172, -88.202862, 24.170000, "2010-08-23T19:45:56Z", 42.612701, 49.485128, '/566'),
                  trkPt(20.731715, -88.202838, 23.690000, "2010-08-23T19:46:08Z", 42.788093, 52.617515, '/567'),
                  trkPt(20.734160, -88.202834, 25.610000, "2010-08-23T19:46:20Z", 42.956719, 50.587874, '/568'),
                  trkPt(20.736032, -88.202759, 27.530000, "2010-08-23T19:46:30Z", 43.085917, 46.511340, '/569'),
                  trkPt(20.738077, -88.202810, 29.460000, "2010-08-23T19:46:42Z", 43.226995, 42.323205, '/570'),
                  trkPt(20.738815, -88.202888, 30.900000, "2010-08-23T19:46:47Z", 43.278141, 36.825266, '/571'),
                  trkPt(20.739576, -88.202648, 32.340000, "2010-08-23T19:46:53Z", 43.332860, 32.831785, '/572'),
                  trkPt(20.740692, -88.201668, 32.340000, "2010-08-23T19:47:03Z", 43.432456, 35.854588, '/574'),
                  trkPt(20.741037, -88.200859, 30.420000, "2010-08-23T19:47:09Z", 43.489804, 34.408771, '/575'),
                  trkPt(20.738595, -88.174512, 36.670000, "2010-08-23T19:48:43Z", 45.197472, 65.400032, '/584'),
                  trkPt(20.738685, -88.171500, 43.400000, "2010-08-23T19:48:53Z", 45.391842, 69.973239, '/585'),
                  trkPt(20.742704, -88.146119, 30.420000, "2010-08-23T19:50:19Z", 47.052169, 69.502066, '/593')];

        for (var i = 0; i &lt; points.length; i++) {
           createPoint(points[i]);
        }

        map.addOverlay(new GPolyline(points, "#ff0000", 2));

   }
//
</script>
            <div xmlns:v="urn:schemas-microsoft-com:vml" id="mapmarks"/>
            <p xmlns:v="urn:schemas-microsoft-com:vml" id="p4">We started with a tour to <a href="http://en.wikipedia.org/wiki/Isla%20Mujeres"
                  title="Wikipedia: Isla Mujeres"
                  shape="rect">Isla Mujeres</a>
            </p>
            <div xmlns:v="urn:schemas-microsoft-com:vml" class="artwork">
               <div class="flickr-photo">
                  <div class="photo" style="width: 500px">
                     <a href="http://www.flickr.com/photos/ndw/4941757496/" shape="rect">
                        <img border="0" alt="[Photo]"
                             src="http://farm5.static.flickr.com/4080/4941757496_f756087acc.jpg"/>
                     </a>
                  </div>
                  <div class="link" style="left: 210px;">
                     <a href="http://www.flickr.com/" shape="rect">
                        <img border="0" alt="[Flickr]" src="/graphics/flickrt.png"/>
                     </a> 
                     <a href="http://maps.google.com/maps?ll=21.2017472222222,-86.7136472222222&amp;z=16&amp;t=k"
                        shape="rect">
                        <img border="0" alt="[Google maps]" src="/graphics/map.png"/>
                     </a>
                  </div>
                  <h3>Ruins</h3>
               </div>
            </div>
            <div xmlns:v="urn:schemas-microsoft-com:vml" class="artwork">
               <div class="flickr-photo">
                  <div class="photo" style="width: 500px">
                     <a href="http://www.flickr.com/photos/ndw/4941758844/" shape="rect">
                        <img border="0" alt="[Photo]"
                             src="http://farm5.static.flickr.com/4139/4941758844_beba808252.jpg"/>
                     </a>
                  </div>
                  <div class="link" style="left: 210px;">
                     <a href="http://www.flickr.com/" shape="rect">
                        <img border="0" alt="[Flickr]" src="/graphics/flickrt.png"/>
                     </a> 
                     <a href="http://maps.google.com/maps?ll=21.2612361111111,-86.7527611111111&amp;z=16&amp;t=k"
                        shape="rect">
                        <img border="0" alt="[Google maps]" src="/graphics/map.png"/>
                     </a>
                  </div>
                  <h3>Corona Beach</h3>
               </div>
            </div>
            <p xmlns:v="urn:schemas-microsoft-com:vml" id="p5">This is, according to our guide, where several <a href="http://en.wikipedia.org/wiki/Corona_%28beer%29"
                  title="Wikipedia: Corona (beer)"
                  shape="rect">Corona</a> commercials have been filmed, if that's the sort of thing you care about.</p>
            <div xmlns:v="urn:schemas-microsoft-com:vml" class="artwork">
               <div class="flickr-photo">
                  <div class="photo" style="width: 335px">
                     <a href="http://www.flickr.com/photos/ndw/4941760726/" shape="rect">
                        <img border="0" alt="[Photo]"
                             src="http://farm5.static.flickr.com/4118/4941760726_dd2b0cf0b0.jpg"/>
                     </a>
                  </div>
                  <div class="link" style="left: 128px;">
                     <a href="http://www.flickr.com/" shape="rect">
                        <img border="0" alt="[Flickr]" src="/graphics/flickrt.png"/>
                     </a> 
                     <a href="http://maps.google.com/maps?ll=21.2556111111111,-86.7471333333333&amp;z=16&amp;t=k"
                        shape="rect">
                        <img border="0" alt="[Google maps]" src="/graphics/map.png"/>
                     </a>
                  </div>
                  <h3>Miramar Restaurant Bar</h3>
               </div>
            </div>
            <p xmlns:v="urn:schemas-microsoft-com:vml" id="p6">Pub signs are something I do care about.</p>
            <div xmlns:v="urn:schemas-microsoft-com:vml" class="artwork">
               <div class="flickr-photo">
                  <div class="photo" style="width: 500px">
                     <a href="http://www.flickr.com/photos/ndw/4941174847/" shape="rect">
                        <img border="0" alt="[Photo]"
                             src="http://farm5.static.flickr.com/4079/4941174847_c2c1990cb7.jpg"/>
                     </a>
                  </div>
                  <div class="link" style="left: 210px;">
                     <a href="http://www.flickr.com/" shape="rect">
                        <img border="0" alt="[Flickr]" src="/graphics/flickrt.png"/>
                     </a> 
                     <a href="http://maps.google.com/maps?ll=21.1577722222222,-86.7865555555556&amp;z=16&amp;t=k"
                        shape="rect">
                        <img border="0" alt="[Google maps]" src="/graphics/map.png"/>
                     </a>
                  </div>
                  <h3>Enormous flag</h3>
               </div>
            </div>
            <p xmlns:v="urn:schemas-microsoft-com:vml" id="p7">Check out the size of that flag.</p>
            <p xmlns:v="urn:schemas-microsoft-com:vml" id="p8">The next day, we rented a car and drove down to <a href="http://en.wikipedia.org/wiki/Tulum" title="Wikipedia: Tulum" shape="rect">Tulum</a> and stopped at <a href="http://en.wikipedia.org/wiki/Xel-Ha%20Park"
                  title="Wikipedia: Xel-Ha Park"
                  shape="rect">Xel-Ha Park</a> to escape from the heat.</p>
            <div xmlns:v="urn:schemas-microsoft-com:vml" class="artwork">
               <div class="flickr-photo">
                  <div class="photo" style="width: 500px">
                     <a href="http://www.flickr.com/photos/ndw/4941769540/" shape="rect">
                        <img border="0" alt="[Photo]"
                             src="http://farm5.static.flickr.com/4140/4941769540_696ff783aa.jpg"/>
                     </a>
                  </div>
                  <div class="link" style="left: 210px;">
                     <a href="http://www.flickr.com/" shape="rect">
                        <img border="0" alt="[Flickr]" src="/graphics/flickrt.png"/>
                     </a> 
                     <a href="http://maps.google.com/maps?ll=20.2144055555556,-87.4287611111111&amp;z=16&amp;t=k"
                        shape="rect">
                        <img border="0" alt="[Google maps]" src="/graphics/map.png"/>
                     </a>
                  </div>
                  <h3>Tulum</h3>
               </div>
            </div>
            <div xmlns:v="urn:schemas-microsoft-com:vml" class="artwork">
               <div class="flickr-photo">
                  <div class="photo" style="width: 500px">
                     <a href="http://www.flickr.com/photos/ndw/4941770400/" shape="rect">
                        <img border="0" alt="[Photo]"
                             src="http://farm5.static.flickr.com/4081/4941770400_afab9afba6.jpg"/>
                     </a>
                  </div>
                  <div class="link" style="left: 210px;">
                     <a href="http://www.flickr.com/" shape="rect">
                        <img border="0" alt="[Flickr]" src="/graphics/flickrt.png"/>
                     </a> 
                     <a href="http://maps.google.com/maps?ll=20.2148722222222,-87.4287&amp;z=16&amp;t=k"
                        shape="rect">
                        <img border="0" alt="[Google maps]" src="/graphics/map.png"/>
                     </a>
                  </div>
                  <h3>Tulum</h3>
               </div>
            </div>
            <div xmlns:v="urn:schemas-microsoft-com:vml" class="artwork">
               <div class="flickr-photo">
                  <div class="photo" style="width: 500px">
                     <a href="http://www.flickr.com/photos/ndw/4941175631/" shape="rect">
                        <img border="0" alt="[Photo]"
                             src="http://farm5.static.flickr.com/4115/4941175631_114c6eea82.jpg"/>
                     </a>
                  </div>
                  <div class="link" style="left: 225px;">
                     <a href="http://www.flickr.com/" shape="rect">
                        <img border="0" alt="[Flickr]" src="/graphics/flickrt.png"/>
                     </a>
                  </div>
                  <h3>Xel Ha</h3>
               </div>
            </div>
            <div xmlns:v="urn:schemas-microsoft-com:vml" class="artwork">
               <div class="flickr-photo">
                  <div class="photo" style="width: 500px">
                     <a href="http://www.flickr.com/photos/ndw/4941766552/" shape="rect">
                        <img border="0" alt="[Photo]"
                             src="http://farm5.static.flickr.com/4138/4941766552_4c82992bc1.jpg"/>
                     </a>
                  </div>
                  <div class="link" style="left: 210px;">
                     <a href="http://www.flickr.com/" shape="rect">
                        <img border="0" alt="[Flickr]" src="/graphics/flickrt.png"/>
                     </a> 
                     <a href="http://maps.google.com/maps?ll=20.2173888888889,-87.435225&amp;z=16&amp;t=k"
                        shape="rect">
                        <img border="0" alt="[Google maps]" src="/graphics/map.png"/>
                     </a>
                  </div>
                  <h3>Xel Ha</h3>
               </div>
            </div>
            <p xmlns:v="urn:schemas-microsoft-com:vml" id="p9">On the following day, we drove to <a href="http://en.wikipedia.org/wiki/Chichen%20Itza"
                  title="Wikipedia: Chichen Itza"
                  shape="rect">Chichen Itza</a>.</p>
            <div xmlns:v="urn:schemas-microsoft-com:vml" class="artwork">
               <div class="flickr-photo">
                  <div class="photo" style="width: 500px">
                     <a href="http://www.flickr.com/photos/ndw/4941198799/" shape="rect">
                        <img border="0" alt="[Photo]"
                             src="http://farm5.static.flickr.com/4114/4941198799_807f0ff07d.jpg"/>
                     </a>
                  </div>
                  <div class="link" style="left: 210px;">
                     <a href="http://www.flickr.com/" shape="rect">
                        <img border="0" alt="[Flickr]" src="/graphics/flickrt.png"/>
                     </a> 
                     <a href="http://maps.google.com/maps?ll=20.6834027777778,-88.5676555555555&amp;z=16&amp;t=k"
                        shape="rect">
                        <img border="0" alt="[Google maps]" src="/graphics/map.png"/>
                     </a>
                  </div>
                  <h3>Chichen Itza</h3>
               </div>
            </div>
            <div xmlns:v="urn:schemas-microsoft-com:vml" class="artwork">
               <div class="flickr-photo">
                  <div class="photo" style="width: 334px">
                     <a href="http://www.flickr.com/photos/ndw/4941201937/" shape="rect">
                        <img border="0" alt="[Photo]"
                             src="http://farm5.static.flickr.com/4140/4941201937_e809b149d1.jpg"/>
                     </a>
                  </div>
                  <div class="link" style="left: 127px;">
                     <a href="http://www.flickr.com/" shape="rect">
                        <img border="0" alt="[Flickr]" src="/graphics/flickrt.png"/>
                     </a> 
                     <a href="http://maps.google.com/maps?ll=20.6833027777778,-88.5683388888889&amp;z=16&amp;t=k"
                        shape="rect">
                        <img border="0" alt="[Google maps]" src="/graphics/map.png"/>
                     </a>
                  </div>
                  <h3>Chichen Itza</h3>
               </div>
            </div>
            <div xmlns:v="urn:schemas-microsoft-com:vml" class="artwork">
               <div class="flickr-photo">
                  <div class="photo" style="width: 500px">
                     <a href="http://www.flickr.com/photos/ndw/4941197133/" shape="rect">
                        <img border="0" alt="[Photo]"
                             src="http://farm5.static.flickr.com/4100/4941197133_3908cc6067.jpg"/>
                     </a>
                  </div>
                  <div class="link" style="left: 210px;">
                     <a href="http://www.flickr.com/" shape="rect">
                        <img border="0" alt="[Flickr]" src="/graphics/flickrt.png"/>
                     </a> 
                     <a href="http://maps.google.com/maps?ll=20.6842138888889,-88.569175&amp;z=16&amp;t=k"
                        shape="rect">
                        <img border="0" alt="[Google maps]" src="/graphics/map.png"/>
                     </a>
                  </div>
                  <h3>Chichen Itza</h3>
               </div>
            </div>
            <div xmlns:v="urn:schemas-microsoft-com:vml" class="artwork">
               <div class="flickr-photo">
                  <div class="photo" style="width: 500px">
                     <a href="http://www.flickr.com/photos/ndw/4941194907/" shape="rect">
                        <img border="0" alt="[Photo]"
                             src="http://farm5.static.flickr.com/4082/4941194907_ee9035cf27.jpg"/>
                     </a>
                  </div>
                  <div class="link" style="left: 210px;">
                     <a href="http://www.flickr.com/" shape="rect">
                        <img border="0" alt="[Flickr]" src="/graphics/flickrt.png"/>
                     </a> 
                     <a href="http://maps.google.com/maps?ll=20.6849916666667,-88.5699&amp;z=16&amp;t=k"
                        shape="rect">
                        <img border="0" alt="[Google maps]" src="/graphics/map.png"/>
                     </a>
                  </div>
                  <h3>Chichen Itza</h3>
               </div>
            </div>
            <div xmlns:v="urn:schemas-microsoft-com:vml" class="artwork">
               <div class="flickr-photo">
                  <div class="photo" style="width: 500px">
                     <a href="http://www.flickr.com/photos/ndw/4941781544/" shape="rect">
                        <img border="0" alt="[Photo]"
                             src="http://farm5.static.flickr.com/4141/4941781544_ca3bf204f8.jpg"/>
                     </a>
                  </div>
                  <div class="link" style="left: 210px;">
                     <a href="http://www.flickr.com/" shape="rect">
                        <img border="0" alt="[Flickr]" src="/graphics/flickrt.png"/>
                     </a> 
                     <a href="http://maps.google.com/maps?ll=20.6850111111111,-88.57&amp;z=16&amp;t=k"
                        shape="rect">
                        <img border="0" alt="[Google maps]" src="/graphics/map.png"/>
                     </a>
                  </div>
                  <h3>Chichen Itza</h3>
               </div>
            </div>
            <p xmlns:v="urn:schemas-microsoft-com:vml" id="p10">After another <em>hot</em> walk, we found an underground <a href="http://en.wikipedia.org/wiki/Cenote" title="Wikipedia: Cenote"
                  shape="rect">Cenote</a>.</p>
            <div xmlns:v="urn:schemas-microsoft-com:vml" class="artwork">
               <div class="flickr-photo">
                  <div class="photo" style="width: 500px">
                     <a href="http://www.flickr.com/photos/ndw/4941189597/" shape="rect">
                        <img border="0" alt="[Photo]"
                             src="http://farm5.static.flickr.com/4078/4941189597_e63f3eff80.jpg"/>
                     </a>
                  </div>
                  <div class="link" style="left: 210px;">
                     <a href="http://www.flickr.com/" shape="rect">
                        <img border="0" alt="[Flickr]" src="/graphics/flickrt.png"/>
                     </a> 
                     <a href="http://maps.google.com/maps?ll=20.66085,-88.2429277777778&amp;z=16&amp;t=k"
                        shape="rect">
                        <img border="0" alt="[Google maps]" src="/graphics/map.png"/>
                     </a>
                  </div>
                  <h3>Cenote</h3>
               </div>
            </div>
            <div xmlns:v="urn:schemas-microsoft-com:vml" class="artwork">
               <div class="flickr-photo">
                  <div class="photo" style="width: 375px">
                     <a href="http://www.flickr.com/photos/ndw/4941774686/" shape="rect">
                        <img border="0" alt="[Photo]"
                             src="http://farm5.static.flickr.com/4141/4941774686_3c97372559.jpg"/>
                     </a>
                  </div>
                  <div class="link" style="left: 148px;">
                     <a href="http://www.flickr.com/" shape="rect">
                        <img border="0" alt="[Flickr]" src="/graphics/flickrt.png"/>
                     </a> 
                     <a href="http://maps.google.com/maps?ll=20.6608472222222,-88.2429277777778&amp;z=16&amp;t=k"
                        shape="rect">
                        <img border="0" alt="[Google maps]" src="/graphics/map.png"/>
                     </a>
                  </div>
                  <h3>Cenote</h3>
               </div>
            </div>
            <p xmlns:v="urn:schemas-microsoft-com:vml" id="p11">Cool? Yes. Crystal clear, blue water? Not really. Creepy? A little. Would I try it again? Yes, probably.</p>
            <p xmlns:v="urn:schemas-microsoft-com:vml" id="p12">All-in-all, a lovely time. Next time: more archeological sites in a cooler month. For the rest of the pictures, see <a href="http://www.flickr.com/photos/ndw/sets/72157624840111518/" shape="rect">Mexico, 2010</a> on <a href="http://www.flickr.com/" shape="rect">Flickr</a>.</p>
            <div xmlns:v="urn:schemas-microsoft-com:vml" id="newcomment"/>
            <div xmlns:v="urn:schemas-microsoft-com:vml" class="footer"/>
         </div>
      </content>
   </entry>
   <entry>
      <title>Reconsidering specialization, part the first</title>
      <link rel="alternate" type="text/html"
            href="http://norman.walsh.name/2010/08/30/specialization"/>
      <id>http://norman.walsh.name/2010/08/30/specialization</id>
      <published>2010-08-30T17:19:19Z</published>
      <updated>2010-08-30T19:22:03Z</updated>
      <category term="balisageConference10" scheme="http://technorati.com/tag/"/>
      <dc:subject>Balisage2010</dc:subject>
      <category term="dita" scheme="http://technorati.com/tag/"/>
      <dc:subject>DITA</dc:subject>
      <category term="docbook" scheme="http://technorati.com/tag/"/>
      <dc:subject>DocBook</dc:subject>
      <summary type="xhtml">
         <div xmlns="http://www.w3.org/1999/xhtml">
            <p>It's been a few years since I first considered DITA specialization. I wonder if I missed the point? I think that might depend on the assumptions that I brought to the table.</p>
         </div>
      </summary>
      <content type="xhtml" xml:base="http://norman.walsh.name/2010/08/30/specialization">
         <div xmlns="http://www.w3.org/1999/xhtml">
            <div class="abstract">
               <p>It's been a few years since I first considered DITA specialization. I wonder if I missed the point? I think that might depend on the assumptions that I brought to the table.</p>
            </div>
            <p id="p1">One of the most interesting hallway conversations that I had at <a href="http://balisage.net/" shape="rect">Balisage</a> was with <span class="personname">
                  <span class="firstname">Eliot</span> 
                  <span class="surname">Kimber</span>
               </span>. He and I spent about two hours exploring the differences and similarities between DocBook and DITA.</p>
            <p id="p2">Here's my synthesis of Eliot's position:</p>
            <blockquote>
               <p id="p3">The only difference between DITA and DocBook is specialization, and specialization is why DITA is better.</p>
            </blockquote>
            <p id="p4">I'll accept the first part of that observation without argument. To ordinary mortals, DITA and DocBook might look very different, but Eliot is as skilled a markup wrangler as you're likely to encounter. Assuming you worked out a mapping for whatever semantic ambiguity there might be in your corpus, given time and inclination, I'll grant that Eliot could convert anything into anything else. So in that broad sense, they're the same.</p>
            <p id="p5">That just leaves specialization. I've historically <a href="http://norman.walsh.name/2006/01/27/specialization"
                  title="Specialization and Extensibility"
                  shape="rect">not been impressed</a> by specialization. But I've been wrong before.</p>
            <p id="p6">In talking to Eliot and thinking about it afterwards, I've come to realize that I'm burdened by a particular set of assumptions, formed long ago, that may no longer usefully guide me through the real world.</p>
            <p id="p7">One of the critical, motivating goals for adopting an XML (or SGML) publishing system in techpubs was the ability, when all was said and done, to demonstrate a <em>lights-out</em>, <em>high quality</em>, <em>print</em> publication system. You poured valid documents in at the top and aesthetically pleasing, professionally typeset pages that adhered strictly to the organization's design and style guidelines came out the other end.</p>
            <p id="p8">The way, the only way, that this was achieved was to start with quality tools (editors, formatters, typesetters) and customize each of them, perhaps significantly, until all the stake holders signed off that the results were up to the required standards of information content, layout, design, and typography.</p>
            <div class="sidebar">
               <div class="title">Sidebar: Document Interchange. Or: Why are my element names so long?</div>
               <div class="sidebar-content">
                  <p id="p9">One consequence of this approach was that every techpubs organization had their own markup vocabulary. Even if they had all started from some common standard (which, mostly, they hadn't), the varying constraints of design, tool chain, and customizer skill invariably lead to diversity.</p>
                  <p id="p10">One of the intellectual progenitors of DocBook was a desire to address this problem, specifically in the area of Unix reference page (“man page”) documentation. Back in the early 90's, there were several commercial Unix vendors<sup class="footnote">[<a name="p10.1" href="#ftn.p10.1" id="p10.1" shape="rect">1</a>]</sup> and they, among others, got together to work on DocBook as an <em>exchange</em> DTD. The idea was that if Vendor A wanted to share the <strong class="command">cat</strong> reference page with
Vendor B, Vendor A would translate their custom markup into DocBook and send that to Vendor B where Vendor B would translate DocBook into <em>their</em> custom markup.</p>
                  <p id="p12">That's why DocBook element names are so long, sometimes almost absurdly so. They were named for maximum clarity of meaning, not authoring convenience.</p>
               </div>
            </div>
            <p id="p13">That was then. This is now?</p>
            <div class="orderedlist">
               <ol style="list-style: decimal;">
                  <li>
                     <p id="p14">Lights-out publishing is still a requirement for some organizations, especially in core techpubs, but I think there's also evidence that tools like <a href="http://en.wikipedia.org/wiki/Adobe%20InDesign"
                           title="Wikipedia: Adobe InDesign"
                           shape="rect">Adobe InDesign</a> have relaxed this requirement for many more organizations. If you're going to pour the markup I send you through a visual tool and make even a light manual pass over the document, you can afford to be a lot more forgiving about the markup I
send you. And a system that is “a little bit forgiving” is vastly, <em>spectacularly</em> easier to implement than one that is “not forgiving at all”.</p>
                  </li>
                  <li>
                     <p id="p15">If the web has taught us anything, it's that quality hardly matters at all. <a href="http://en.wikipedia.org/wiki/Sturgeon%27s_Law"
                           title="Wikipedia: Sturgeon's Law"
                           shape="rect">Sturgeon's Law</a> applies. We now <a href="http://www.fastcompany.com/1616121/what-the-ipad-is-missing-no-it-s-not-a-camera"
                           shape="rect">routinely accept</a> layouts that no self-respecting publisher would have had the temerity to propose years ago.</p>
                  </li>
                  <li>
                     <p id="p16">And finally, this printing ink on dead trees at a thousand-plus DPI, who does that? It's a rare piece of software or hardware that comes with more than a pamphlet these days. Environmentally, that's probably a good thing, but it has done nothing to improve the quality (see previous point) of what's produced.</p>
                  </li>
               </ol>
            </div>
            <p id="p17">How is this related to specialization? It's related to specialization because specialization is about interchange. DocBook has always been about interchange: precise, <a href="http://docbook.org/tdg5/en/html/appf.html" shape="rect">carefully managed</a> interchange.</p>
            <p id="p18">Specialization is about <em>blind</em> interchange: I send you my documents, documents that contain markup you've never seen before, you run them through your normal toolchain, and the results are “good enough”.</p>
            <p id="p19">If you're carrying around the assumptions I outline above, blind interchange is a manifestly absurd notion. But if you relax your assumptions to perhaps more accuratly reflect the twenty-first century, then maybe blind interchange becomes not just possible, but practical.</p>
            <p id="p20">And maybe, just maybe, that makes specialization intersting.</p>
            <p id="p21">Don't pay any attention to those creaking, scraping noises that you hear. That's just me rearranging my mental furniture. More to follow.</p>
            <div class="footnotes">
               <hr width="100" align="left" class="footnotes-divider"/>
               <div class="footnote">
                  <p id="p11">
                     <sup>[<a href="#p10.1" name="ftn.p10.1" id="ftn.p10.1" shape="rect">1</a>]</sup>No, really!</p>
               </div>
            </div>
            <div id="newcomment"/>
            <div class="footer"/>
         </div>
      </content>
   </entry>
   <entry>
      <title>Balisage 2010</title>
      <link rel="alternate" type="text/html"
            href="http://norman.walsh.name/2010/07/27/balisage2010"/>
      <id>http://norman.walsh.name/2010/07/27/balisage2010</id>
      <published>2010-07-27T20:43:52Z</published>
      <updated>2010-08-30T19:52:29Z</updated>
      <category term="balisageConference" scheme="http://technorati.com/tag/"/>
      <dc:subject>Balisage</dc:subject>
      <category term="balisageConference10" scheme="http://technorati.com/tag/"/>
      <dc:subject>Balisage2010</dc:subject>
      <summary type="xhtml">
         <div xmlns="http://www.w3.org/1999/xhtml">
            <p>Balisage 2010 is only days away. (How did that happen?)</p>
         </div>
      </summary>
      <content type="xhtml" xml:base="http://norman.walsh.name/2010/07/27/balisage2010">
         <div xmlns="http://www.w3.org/1999/xhtml">
            <div class="abstract">
               <p>Balisage 2010 is only days away. (How did that happen?)</p>
            </div>
            <p id="p1">I guess my writing hiatus was longer than I realized or expected. It occurs to me that I've done no where near enough to pimp my favorite conference: <a href="http://www.balisage.net/" shape="rect">Balisage: The Markup Conference</a> which is happening in Montréal next week.</p>
            <p id="p2">If you care about structured markup in general (or XML in particular), and you're not planning to go, and it's not too late to change your mind, I encourage you to do so. Change your mind that is, and go.</p>
            <p id="p3">For my part, for the first time ever, I'm only attending. No slides to prepare, no paper to finish. It feels really weird (and not entirely good, I regret not being able to pull together even a proposal this year.) For my sins, I hope to pull together <a href="http://balisage.net/posters.html" shape="rect">a poster</a>. The conference has a history of informative and entertaining posters. If you're coming, make one!</p>
            <p id="p4">I will be <a href="http://balisage.net/2010/DemoJam.html" shape="rect">hosting Demo Jam</a> again this year, so I'm not getting off scott free. But the beer is free, so that's ok :-)</p>
            <p id="p5">See you there!</p>
            <div id="newcomment"/>
            <div class="footer"/>
         </div>
      </content>
   </entry>
   <entry>
      <title>XML Calabash V0.9.23</title>
      <link rel="alternate" type="text/html"
            href="http://norman.walsh.name/2010/07/27/xmlcalabash0923"/>
      <id>http://norman.walsh.name/2010/07/27/xmlcalabash0923</id>
      <published>2010-07-27T20:02:49Z</published>
      <updated>2010-08-30T19:52:29Z</updated>
      <category term="calabash" scheme="http://technorati.com/tag/"/>
      <dc:subject>Calabash</dc:subject>
      <category term="java" scheme="http://technorati.com/tag/"/>
      <dc:subject>Java</dc:subject>
      <category term="programming" scheme="http://technorati.com/tag/"/>
      <dc:subject>Programming</dc:subject>
      <category term="xml" scheme="http://technorati.com/tag/"/>
      <dc:subject>XML</dc:subject>
      <category term="xproc" scheme="http://technorati.com/tag/"/>
      <dc:subject>XProc</dc:subject>
      <summary type="xhtml">
         <div xmlns="http://www.w3.org/1999/xhtml">
            <p>Announcing XML Calabash V0.9.23.</p>
         </div>
      </summary>
      <content type="xhtml" xml:base="http://norman.walsh.name/2010/07/27/xmlcalabash0923">
         <div xmlns="http://www.w3.org/1999/xhtml">
            <div class="abstract">
               <p>Announcing XML Calabash V0.9.23.</p>
            </div>
            <p id="p1">I don't routinely announce new <span class="application">XML Calabash</span> releases with a weblog posting. Instead, I just update <a href="http://norman.walsh.name/2008/projects/calabash"
                  title="XML Calabash: an XProc implementation"
                  shape="rect">the project page</a>. I assume if you're interested, you can follow along there, or on <a href="http://lists.w3.org/Archives/Public/xproc-dev/" shape="rect">the mailing list</a>, or even <a href="http://twitter.com/xmlcalabash/" shape="rect">on Twitter</a> (<a href="http://identi.ca/xmlcalabash/" shape="rect">or Identi.ca</a>).</p>
            <p id="p3">But it's been a while since I did a release and this one has both a new feature and a lot of bug fixes.</p>
            <p id="p6">The new feature is a proper installer. At least one of my friends observed that it was impossible for his colleagues to get it installed because they weren't familiar enough with Java eccentricities to get everything working. Starting with V0.9.23 (actually with V0.9.22, which I released without fanfare) it comes bundled with an <a href="http://izpack.org/" shape="rect">IzPack</a> installer. It <em>should</em> now be a simple matter of running a jar file to install it.</p>
            <p id="p7">I've also bundled a few libraries in the distribution. I have mixed feelings about this, but it does make it easier for novices to install. Suggestions about whether I should (or should not) do this, or what libraries I should (or should not) include, are welcome.</p>
            <p id="p8">In other news, I'm making slow progress on the XProc book. (The web site is down right now, so I'm not including the link.) I've also started <em>another</em> major refactoring of the XML Calabash codebase. Goals: a clean, programmable API for constructing pipelines; clean separation of compile-time and run-time phases; a clean runtime API, and a runtime that utilizes Saxon's underlying pipelines for processing. I'm optimistic that using Saxon's pipes will enable streaming and perhaps even some
parallel processing. No ETA.</p>
            <p id="p5">Share and enjoy.</p>
            <p id="p9">(See <a href="http://norman.walsh.name/2008/projects/calabash"
                  title="XML Calabash: an XProc implementation"
                  shape="rect">the project page</a> for a rundown of the recent changes.)</p>
            <div id="newcomment"/>
            <div class="footer"/>
         </div>
      </content>
   </entry>
   <entry>
      <title>DocBook V5.1 Beta 2</title>
      <link rel="alternate" type="text/html"
            href="http://norman.walsh.name/2010/07/27/docbook51b2"/>
      <id>http://norman.walsh.name/2010/07/27/docbook51b2</id>
      <published>2010-07-27T19:30:11Z</published>
      <updated>2010-08-30T19:52:29Z</updated>
      <category term="docbook" scheme="http://technorati.com/tag/"/>
      <dc:subject>DocBook</dc:subject>
      <summary type="xhtml">
         <div xmlns="http://www.w3.org/1999/xhtml">
            <p>Announcing DocBook V5.1b2, the second beta release of (what will become) DocBook V5.1. Version 5.1 includes significant new features for topic-based authoring as well as a number of bug fixes.</p>
         </div>
      </summary>
      <content type="xhtml" xml:base="http://norman.walsh.name/2010/07/27/docbook51b2">
         <div xmlns="http://www.w3.org/1999/xhtml">
            <div class="abstract">
               <p>Announcing DocBook V5.1b2, the second beta release of (what will become) DocBook V5.1. Version 5.1 includes significant new features for topic-based authoring as well as a number of bug fixes.</p>
            </div>
            <p id="p1">Earlier this month, I very quietly released <a href="http://docbook.org/xml/5.1b1/" shape="rect">DocBook V5.1b1</a>. No one's suggested that I got it totally wrong (and there's evidence that at least a few people noticed!), so today, I released <a href="http://docbook.org/xml/5.1b2/" shape="rect">DocBook V5.1<em>b2</em>
               </a> with <a href="http://docbook.org/tdg51/en/html/docbook.html" shape="rect">its corresponding documentation</a>.</p>
            <p id="p2">The star feature of DocBook V5.1 is support for <a href="http://en.wikipedia.org/wiki/Topic-based_authoring"
                  title="Wikipedia: Topic-based authoring"
                  shape="rect">“topic-based” documentation</a>. At a minimum, that means we'll be adding a new component-level element with the semantically neutral name “topic” and providing some mechanism for composing topics.</p>
            <p id="p3">Deciding to use <tt class="tag-starttag">&lt;topic&gt;</tt> makes a statement about the kind of documentation that you're building. Although you can make a <tt class="tag-starttag">&lt;book&gt;</tt> of topics, you can't mix topics willy-nilly amongst the more traditional narrative elements.</p>
            <p id="p4">Topics by themselves aren't especially useful, to reap the real benefits of the topic-based authoring paradigm, you must be able to reuse them, to compose them together into new modules or structures (be they books, help systems, web sites, or what-have-you).</p>
            <p id="p5">For this purpose, DocBook V5.1 introduces the <tt class="tag-starttag">&lt;assembly&gt;</tt>. Assemblies are the mechanism by which authors can compose topics (or, in fact, other narrative elements) together. My <a href="http://xmlprague.cz/" shape="rect">XML Prague</a> presentation, <a href="http://www.xmlprague.cz/2010/sessions.html#Automating-Document-Assembly-in-DocBook"
                  shape="rect">Automating Document Assembly in DocBook</a> explored one toolchain for processing assemblies. I've only just now realized that I never
published that anywhere else.</p>
            <p id="p6">Tools support for topic-based authoring in DocBook is under active development, as is the schema itself. I'll be presenting DocBook V5.1 at <a href="http://www.idealliance.org/conferences_and_events/xml_2010_emedia_revolution/foundations_track"
                  shape="rect">XML 2010</a> in Philadelphia this October.</p>
            <p id="p7">Questions, comments, etc., most welcome on the DocBook mailing list.</p>
            <div class="section">
               <h2 class="runin">Changes in DocBook V5.1b2 </h2>
               <p class="runin" id="p8">
                  <a id="changes" name="changes" shape="rect"/>Here's a quick summary of the changes in DocBook V5.1b2 as compared to the official DocBook V5.0 schema, in case you're interested in the gory details.</p>
               <p/>
               <div class="itemizedlist">
                  <ul>
                     <li>
                        <p id="p9">Fixed RFE <a href="https://sourceforge.net/tracker/index.php?func=detail&amp;group_id=21935&amp;atid=384107&amp;aid=1679665"
                              shape="rect">1679665</a> Add better support for modular documentation</p>
                     </li>
                     <li>
                        <p id="p10">Fixed RFE <a href="https://sourceforge.net/tracker/index.php?func=detail&amp;group_id=21935&amp;atid=384107&amp;aid=1722935"
                              shape="rect">1722935</a> Add a <tt class="tag-attvalue">proofreader</tt> value to the <tt class="tag-attribute">class</tt> attribute for <tt class="tag-starttag">&lt;othercredit&gt;</tt>
                        </p>
                     </li>
                     <li>
                        <p id="p11">Fixed RFE <a href="https://sourceforge.net/tracker/index.php?func=detail&amp;group_id=21935&amp;atid=384107&amp;aid=1770787"
                              shape="rect">1770787</a> Add <tt class="tag-starttag">&lt;givenname&gt;</tt> as an alternative for <tt class="tag-starttag">&lt;firstname&gt;</tt>
                        </p>
                     </li>
                     <li>
                        <p id="p12">Fixed RFE <a href="https://sourceforge.net/tracker/index.php?func=detail&amp;group_id=21935&amp;atid=384107&amp;aid=1899655"
                              shape="rect">1899655</a> Allow more elements to be the root of a DocBook document</p>
                     </li>
                     <li>
                        <p id="p13">Fixed RFE <a href="https://sourceforge.net/tracker/index.php?func=detail&amp;group_id=21935&amp;atid=384107&amp;aid=2100736"
                              shape="rect">2100736</a> Allow <tt class="tag-starttag">&lt;constant&gt;</tt> in <tt class="tag-starttag">&lt;initializer&gt;</tt>
                        </p>
                     </li>
                     <li>
                        <p id="p14">Fixed RFE <a href="https://sourceforge.net/tracker/index.php?func=detail&amp;group_id=21935&amp;atid=384107&amp;aid=2791288"
                              shape="rect">2791288</a> Added several additional elements, including <tt class="tag-starttag">&lt;quote&gt;</tt>, to the ubiquitous inlines</p>
                     </li>
                     <li>
                        <p id="p15">Fixed RFE <a href="https://sourceforge.net/tracker/index.php?func=detail&amp;group_id=21935&amp;atid=384107&amp;aid=2820190"
                              shape="rect">2820190</a> Add a <tt class="tag-starttag">&lt;topic&gt;</tt> element</p>
                     </li>
                     <li>
                        <p id="p16">Fixed RFE <a href="https://sourceforge.net/tracker/index.php?func=detail&amp;group_id=21935&amp;atid=384107&amp;aid=2821653"
                              shape="rect">2821653</a> Remove the constraint that <tt class="tag-starttag">&lt;indexterm&gt;</tt> elements must not appear in <tt class="tag-starttag">&lt;footnote&gt;</tt>s</p>
                     </li>
                     <li>
                        <p id="p17">Fixed RFE <a href="https://sourceforge.net/tracker/index.php?func=detail&amp;group_id=21935&amp;atid=384107&amp;aid=2907124"
                              shape="rect">2907124</a> Allow personal name components directly in <tt class="tag-starttag">&lt;bibliomset&gt;</tt>.</p>
                     </li>
                     <li>
                        <p id="p18">Fixed RFE <a href="https://sourceforge.net/tracker/index.php?func=detail&amp;group_id=21935&amp;atid=384107&amp;aid=2907125"
                              shape="rect">2907125</a> Allow all inlines in <tt class="tag-starttag">&lt;remark&gt;</tt>
                        </p>
                     </li>
                     <li>
                        <p id="p19">Fixed RFE <a href="https://sourceforge.net/tracker/index.php?func=detail&amp;group_id=21935&amp;atid=384107&amp;aid=2907131"
                              shape="rect">2907131</a> Allow <tt class="tag-starttag">&lt;simplesect&gt;</tt> in <tt class="tag-starttag">&lt;colophon&gt;</tt>
                        </p>
                     </li>
                     <li>
                        <p id="p20">Fixed RFE <a href="https://sourceforge.net/tracker/index.php?func=detail&amp;group_id=21935&amp;atid=384107&amp;aid=2964576"
                              shape="rect">2964576</a> Fix the bug that allowed <tt class="tag-starttag">&lt;table&gt;</tt> to appear inside <tt class="tag-starttag">&lt;entry&gt;</tt>
                        </p>
                     </li>
                  </ul>
               </div>
            </div>
            <div id="newcomment"/>
            <div class="footer"/>
         </div>
      </content>
   </entry>
   <entry>
      <title>ePUB, second attempt</title>
      <link rel="alternate" type="text/html"
            href="http://norman.walsh.name/2010/06/10/epubredux"/>
      <id>http://norman.walsh.name/2010/06/10/epubredux</id>
      <published>2010-06-10T22:02:54Z</published>
      <updated>2010-08-30T19:52:29Z</updated>
      <category term="oasis" scheme="http://technorati.com/tag/"/>
      <dc:subject>OASIS</dc:subject>
      <category term="w3c" scheme="http://technorati.com/tag/"/>
      <dc:subject>W3C</dc:subject>
      <category term="xml" scheme="http://technorati.com/tag/"/>
      <dc:subject>XML</dc:subject>
      <summary type="xhtml">
         <div xmlns="http://www.w3.org/1999/xhtml">
            <p>Playing with ePUB. Validated ePUB this time.</p>
         </div>
      </summary>
      <content type="xhtml" xml:base="http://norman.walsh.name/2010/06/10/epubredux">
         <div xmlns="http://www.w3.org/1999/xhtml">
            <div class="abstract">
               <p>Playing with ePUB. Validated ePUB this time.</p>
            </div>
            <p id="p1">My <a href="http://norman.walsh.name/2010/06/07/epub" title="ePUB specifications"
                  shape="rect">initial forays</a> into ePUB-land were pretty lame, at least in the sense that what I produced bore only a passing resemblance to valid <a href="http://en.wikipedia.org/wiki/Epub" title="Wikipedia: Epub" shape="rect">ePUB</a>ePUB. (Ironic considering my general affinity for validation.)</p>
            <p id="p2">I've <a href="http://norman.walsh.name/2010/06/07/epub" title="ePUB specifications"
                  shape="rect">updated</a> the originals, so now they're valid according to <a href="http://code.google.com/p/epubcheck/" shape="rect">epubcheck</a>.</p>
            <p id="p3">In addition to getting a bunch of mechanics right, doing some more agressive parsing, and making sure I had (and only referred to) local copies of things like CSS files, it meant throwing out a fair bit of markup.</p>
            <p id="p4">The subset of XHTML that ePUB mandates is fairly narrow: “id” attributes, not “name” attributes, no color, alignment, or width indicators in tables, no “clear” attribute on <tt class="tag-starttag">&lt;br&gt;</tt>s, no type attributes on lists, no fonts, etc.</p>
            <p id="p5">I don't actually object to any of those constraints, though some of them seem a little strange given that I'd expect most ePUB readers are built on top of existing HTML toolkits. (But maybe that's not the case, or wasn't historically the case.) In fairness, the <a href="http://en.wikipedia.org/wiki/Kindle" title="Wikipedia: Kindle"
                  shape="rect">Kindle</a> can't even render a simple bulleted list correctly so perhaps I'm overestimating the situation.</p>
            <p id="p6">Limited markup choices are ok if you're starting from a vocabulary like DocBook, you can simply plan your transformation accordingly. But for the W3C/OASIS specifications, I started with HTML; it seems a bit risky to throw away markup that might be relevant.</p>
            <p id="p7">On top of that, <em>my</em> ePUB reader <em>is</em> a web browser, it can handle full HTML just fine. So I also converted the specifications without doing all that markup cleanup. If they work for you, you might prefer them. Here they are:</p>
            <div class="itemizedlist">
               <ul>
                  <li>
                     <a name="p8" id="p8" shape="rect"/>
                     <a href="examples/relax-ng-compact.epub" shape="rect">RELAX NG Compact Syntax</a>
                  </li>
                  <li>
                     <a name="p9" id="p9" shape="rect"/>
                     <a href="examples/relax-ng-compatibility.epub" shape="rect">RELAX NG DTD Compatibility</a>
                  </li>
                  <li>
                     <a name="p10" id="p10" shape="rect"/>
                     <a href="examples/relax-ng-xsd-guidelines.epub" shape="rect">Guidelines for using W3C XML Schema Datatypes in with RELAX NG</a>
                  </li>
                  <li>
                     <a name="p11" id="p11" shape="rect"/>
                     <a href="examples/relax-ng.epub" shape="rect">RELAX NG</a>
                  </li>
                  <li>
                     <a name="p12" id="p12" shape="rect"/>
                     <a href="examples/xforms.epub" shape="rect">XForms 1.1</a>
                  </li>
                  <li>
                     <a name="p13" id="p13" shape="rect"/>
                     <a href="examples/xinclude.epub" shape="rect">XInclude</a>
                  </li>
                  <li>
                     <a name="p14" id="p14" shape="rect"/>
                     <a href="examples/xlink11.epub" shape="rect">XLink 1.1</a>
                  </li>
                  <li>
                     <a name="p15" id="p15" shape="rect"/>
                     <a href="examples/xml-catalogs.epub" shape="rect">XML Catalogs</a>
                  </li>
                  <li>
                     <a name="p16" id="p16" shape="rect"/>
                     <a href="examples/xml-names.epub" shape="rect">XML Namespaces</a>
                  </li>
                  <li>
                     <a name="p17" id="p17" shape="rect"/>
                     <a href="examples/xml-names11.epub" shape="rect">XML Namespaces 1.1</a>
                  </li>
                  <li>
                     <a name="p18" id="p18" shape="rect"/>
                     <a href="examples/xml.epub" shape="rect">XML</a>
                  </li>
                  <li>
                     <a name="p19" id="p19" shape="rect"/>
                     <a href="examples/xml11.epub" shape="rect">XML 1.1</a>
                  </li>
                  <li>
                     <a name="p20" id="p20" shape="rect"/>
                     <a href="examples/xmlbase.epub" shape="rect">XML Base</a>
                  </li>
                  <li>
                     <a name="p21" id="p21" shape="rect"/>
                     <a href="examples/xmlschema-0.epub" shape="rect">XML Schema Part 0</a>
                  </li>
                  <li>
                     <a name="p22" id="p22" shape="rect"/>
                     <a href="examples/xmlschema-1.epub" shape="rect">XML Schema Part 1</a>
                  </li>
                  <li>
                     <a name="p23" id="p23" shape="rect"/>
                     <a href="examples/xmlschema-2.epub" shape="rect">XML Schema Part 2</a>
                  </li>
                  <li>
                     <a name="p24" id="p24" shape="rect"/>
                     <a href="examples/xmlschema-1-3.epub" shape="rect">XML Schema Part 1</a>, chunked on third level sections</li>
                  <li>
                     <a name="p25" id="p25" shape="rect"/>
                     <a href="examples/xmlschema-2-3.epub" shape="rect">XML Schema Part 2</a>, chunked on third level sections</li>
                  <li>
                     <a name="p26" id="p26" shape="rect"/>
                     <a href="examples/xpath-datamodel.epub" shape="rect">XPath/XQuery Data Model</a>
                  </li>
                  <li>
                     <a name="p27" id="p27" shape="rect"/>
                     <a href="examples/xpath-full-text-10.epub" shape="rect">XPath/XQuery Full Text</a>
                  </li>
                  <li>
                     <a name="p28" id="p28" shape="rect"/>
                     <a href="examples/xpath-functions.epub" shape="rect">XPath/XQuery Functions</a>
                  </li>
                  <li>
                     <a name="p29" id="p29" shape="rect"/>
                     <a href="examples/xpath20.epub" shape="rect">XPath 2.0</a>
                  </li>
                  <li>
                     <a name="p30" id="p30" shape="rect"/>
                     <a href="examples/xproc.epub" shape="rect">XProc</a>
                  </li>
                  <li>
                     <a name="p31" id="p31" shape="rect"/>
                     <a href="examples/xproc-3.epub" shape="rect">XProc</a>, chunked on third level sections</li>
                  <li>
                     <a name="p32" id="p32" shape="rect"/>
                     <a href="examples/xquery-semantics.epub" shape="rect">XPath/XQuery Formal Semantics</a>
                  </li>
                  <li>
                     <a name="p33" id="p33" shape="rect"/>
                     <a href="examples/xquery.epub" shape="rect">XQuery</a>
                  </li>
                  <li>
                     <a name="p34" id="p34" shape="rect"/>
                     <a href="examples/xqueryx.epub" shape="rect">XQueryX</a>
                  </li>
                  <li>
                     <a name="p35" id="p35" shape="rect"/>
                     <a href="examples/xsl11.epub" shape="rect">XSL FO 1.1</a>
                  </li>
                  <li>
                     <a name="p36" id="p36" shape="rect"/>
                     <a href="examples/xslt-xquery-serialization.epub" shape="rect">XSLT/XQuery Serialization</a>
                  </li>
                  <li>
                     <a name="p37" id="p37" shape="rect"/>
                     <a href="examples/xslt20.epub" shape="rect">XSLT 2.0</a>
                  </li>
                  <li>
                     <a name="p38" id="p38" shape="rect"/>
                     <a href="examples/xslt-21.epub" shape="rect">XSLT 2.1</a>
                  </li>
               </ul>
            </div>
            <p id="p39">These look great in my reader, which I <em>can't wait</em> to show you!</p>
            <div id="newcomment"/>
            <div class="footer"/>
         </div>
      </content>
   </entry>
   <entry>
      <title>ePUB tools</title>
      <link rel="alternate" type="text/html"
            href="http://norman.walsh.name/2010/06/09/epubxpl"/>
      <id>http://norman.walsh.name/2010/06/09/epubxpl</id>
      <published>2010-06-09T10:24:09Z</published>
      <updated>2010-08-30T19:52:29Z</updated>
      <category term="w3c" scheme="http://technorati.com/tag/"/>
      <dc:subject>W3C</dc:subject>
      <category term="xml" scheme="http://technorati.com/tag/"/>
      <dc:subject>XML</dc:subject>
      <category term="xproc" scheme="http://technorati.com/tag/"/>
      <dc:subject>XProc</dc:subject>
      <summary type="xhtml">
         <div xmlns="http://www.w3.org/1999/xhtml">
            <p>Want to convert your favorite specification to ePUB? Here are the tools that I've been using. [Update: 10 June 2010] Much revised.</p>
         </div>
      </summary>
      <content type="xhtml" xml:base="http://norman.walsh.name/2010/06/09/epubxpl">
         <div xmlns="http://www.w3.org/1999/xhtml">
            <div class="abstract">
               <p>Want to convert your favorite specification to ePUB? Here are the tools that I've been using. [Update: 10 June 2010] Much revised.</p>
            </div>
            <p id="p1">Publishing W3C specifications <a href="http://norman.walsh.name/2010/06/07/epub" title="ePUB specifications"
                  shape="rect">as ePUB files</a> looks to be a popular essay. Before I'm inundated with requests, I figure I better publish my tools so you can do the conversions yourself. They work for me, YMMV, of course.</p>
            <p id="p2">As things stand right now, if the input spec is W3C <a href="http://www.w3.org/2005/07/pubrules" shape="rect">pubrules compliant</a>, stored in a single file, and uses the classes “div1”, “div2”, “div3”, etc. for the various section levels in the spec, I think you'll get a nice, neat ePUB file. The more your input diverges from that structure, the harder it will be to make things work.</p>
            <p id="p3">There are four parts:</p>
            <div class="variablelist">
               <dl>
                  <dt id="R.1.5.1.1">
                     <a href="examples/spec2epub.xpl" shape="rect">spec2epub.xpl</a>
                  </dt>
                  <dd>
                     <p id="p4">This is the main <a href="http://en.wikipedia.org/wiki/XML_pipeline"
                           title="Wikipedia: XML pipeline"
                           shape="rect">XProc</a>
                        <a href="/knows/what/xproc" shape="rect">
                           <img border="0" alt="[L]" src="/graphics/linkgroup.gif"/>
                        </a> pipeline. Its job is to download the spec and shepherd everything along. It fiddles a bit with class attributes to massage XProc and a few other specs into the right general structure.</p>
                  </dd>
                  <dt id="R.1.5.2.1">
                     <a href="examples/getfiles.pl" shape="rect">getfiles.pl</a>
                  </dt>
                  <dd>
                     <p id="p5">One of the things that we need to do is download all the ancillary documents (images, CSS stylesheets, etc.). The pipeline can extract the URIs, but since some of them aren't XML, it can't download them. This script does that part.</p>
                     <p id="p6">(Well, actually, it can download them just fine, what it can't do is write them to disk in their original, binary form. I have an extension to <tt class="tag-starttag">&lt;p:store&gt;</tt> which does this, but I didn't want to use any extensions in this pipeline.)</p>
                     <p id="p16">[Update: 10 June 2010] This script now parses CSS and massages the CSS files to look for embedded <tt class="literal">url()</tt>’s.</p>
                  </dd>
                  <dt id="R.1.5.3.1">
                     <a href="examples/spec2epub.xsl" shape="rect">spec2epub.xsl</a>
                  </dt>
                  <dd>
                     <p id="p7">Chunking the spec and creating the ePUB metadata files is handled by an XSLT stylesheet.</p>
                     <p id="p8">For W3C specifications, we can exactly and accurately collect all the metadata (Thank you, <span class="personname">
                           <span class="firstname">Ian</span>
                        </span> and pubrules!). For the OASIS specs, I had to hand edit some of the metadata.</p>
                     <p id="p17">[Update: 10 June 2010] I rewrote this stylesheet substantially. It works a lot harder to preserve the relative structure of the spec so that it can construct relative links to stylesheets, images, and the like. It also does a whole bunch of (ad hoc!) markup cleanup.</p>
                  </dd>
                  <dt id="R.1.5.4.1">
                     <a href="http://www.paranoidfish.org/projects/webkit2png" shape="rect">webkit2png</a>
                  </dt>
                  <dd>
                     <p id="p9">The last thing I do is generate a cover image. I do this with a platform-dependent, Mac-only script that converts an HTML page into a PNG. You're on your own for this part, I can't help you. (If someone knows of a portable way to do this, I'd love to hear about it.)</p>
                  </dd>
               </dl>
            </div>
            <p id="p10">Download the files and run the pipeline with your favorite XProc processor. The pipeline has no inputs and no outputs, only options:</p>
            <div class="variablelist">
               <dl>
                  <dt id="R.1.7.1.1">
                     <tt class="option">href</tt>
                  </dt>
                  <dd>
                     <p id="p11">The URI of the spec you want to convert. For W3C specs where the URI is often just a pathname, make sure you include the trailing slash or internal URIs won't get resolved correctly.</p>
                  </dd>
                  <dt id="R.1.7.2.1">
                     <tt class="option">base</tt>
                  </dt>
                  <dd>
                     <p id="p12">The directory where you want the ePUB structure written.</p>
                  </dd>
                  <dt id="R.1.7.3.1">
                     <tt class="option">chunkdepth</tt>
                  </dt>
                  <dd>
                     <p id="p13">By default, specs are physically chunked at second-level sections. For some specs, this doesn't seem quite deep enough. You can explicitly set the depth to 1, 2, or 3. If you want to go deeper than 3, you'll have to edit <tt class="function">f:chunk</tt> in <tt class="filename">spec2epub.xsl</tt>.</p>
                  </dd>
               </dl>
            </div>
            <p id="p15">For example:</p>
            <div class="screen">
               <pre xml:space="preserve">
<tt class="prompt">$ </tt><strong class="userinput"><tt class="userinput">calabash spec2epub.xpl base=/tmp/xproc/ href=http://www.w3.org/TR/xproc/ chunkdepth=3</tt></strong>
</pre>
            </div>
            <p id="p14">Good luck! If you make improvements, please share them!</p>
            <div id="newcomment"/>
            <div class="footer"/>
         </div>
      </content>
   </entry>
   <entry>
      <title>ePUB specifications</title>
      <link rel="alternate" type="text/html"
            href="http://norman.walsh.name/2010/06/07/epub"/>
      <id>http://norman.walsh.name/2010/06/07/epub</id>
      <published>2010-06-07T23:19:41Z</published>
      <updated>2010-08-30T19:52:29Z</updated>
      <category term="oasis" scheme="http://technorati.com/tag/"/>
      <dc:subject>OASIS</dc:subject>
      <category term="w3c" scheme="http://technorati.com/tag/"/>
      <dc:subject>W3C</dc:subject>
      <category term="xml" scheme="http://technorati.com/tag/"/>
      <dc:subject>XML</dc:subject>
      <summary type="xhtml">
         <div xmlns="http://www.w3.org/1999/xhtml">
            <p>Playing with ePUB. In this episode, ePUB versions of W3C specifications. [Update 10 June 2010] Regenerated with stricter compliance to the ePUB rules; added a few more. Plus pretty covers!</p>
         </div>
      </summary>
      <content type="xhtml" xml:base="http://norman.walsh.name/2010/06/07/epub">
         <div xmlns="http://www.w3.org/1999/xhtml">
            <div class="abstract">
               <p>Playing with ePUB. In this episode, ePUB versions of W3C specifications. [Update 10 June 2010] Regenerated with stricter compliance to the ePUB rules; added a few more. Plus pretty covers!</p>
            </div>
            <p id="p35">[Update 10 June 2010] My initial attempts were pretty bad. The <a href="http://code.google.com/p/epubcheck/" shape="rect">epubcheck</a> tool had a field day. I believe I've fixed those problems (except for a couple that are markup problems in the originals). I've also incorporated some <a href="http://twitter.com/projeturbain/status/15828343051" shape="rect">cool new covers</a> contributed by <span class="personname">
                  <span class="firstname">Stephane</span> 
                  <span class="surname">Curzi</span>
               </span>. Thanks, Stephane!</p>
            <p id="p1">Last Thursday or Friday, I got to thinking about <a href="http://en.wikipedia.org/wiki/Epub" title="Wikipedia: Epub" shape="rect">ePUB</a>. I have a few ePUB books that I got from O'Reilly and I wanted a way to view them on my desktop. I didn't like any of the clients I found, so over a couple of evenings and a weekend afternoon, I cooked up my own library management/reader application on top of <a href="http://www.marklogic.com/product/marklogic-server.html" shape="rect">MarkLogic Server</a>. (I published <a href="http://www.flickr.com/photos/ndw/sets/72157624233385674/" shape="rect">a few screenshots</a> if you want a sneak peek; more about that project later.)</p>
            <p id="p2">As soon as I had a few books in there, I knew I wanted more content. Specifically, I wanted the W3C specifications that I refer to frequently. Not only is the ePUB navigation quite nice, but when I get the search features built, having the specs in there will rock!</p>
            <p id="p3">I think the W3C's decision to have a single, normative HTML format for each specification, with machine checkable rules for the structure of that specification, is exceptionally valuable.</p>
            <p id="p4">I know that all of the <a href="http://en.wikipedia.org/wiki/XQuery" title="Wikipedia: XQuery"
                  shape="rect">XML Query</a> and <a href="http://en.wikipedia.org/wiki/XSLT" title="Wikipedia: XSLT" shape="rect">XSLT</a> specifications are generated from more or less the same schemas and stylesheets, so they have a very consistent style. With a little reverse engineering from my existing ePUB files and a bit of <a href="http://en.wikipedia.org/wiki/XML_pipeline"
                  title="Wikipedia: XML pipeline"
                  shape="rect">XProc</a>
               <a href="/knows/what/xproc" shape="rect">
                  <img border="0" alt="[L]" src="/graphics/linkgroup.gif"/>
               </a> and XSLT magic, I was able to generate ePUB versions of the XSLT/XQuery specifications. (That pipeline is the subject of <a href="http://norman.walsh.name/2010/06/09/epubxpl" title="ePUB tools"
                  shape="rect">another essay</a>.)</p>
            <p id="p5">Having all the XSLT/XQuery specs is nice, but not having XProc seemed kind of lame, so I tweaked things a bit to make the XProc spec work. Then I tried a few others. I remarkably large number of the specs I care about converted just fine:</p>
            <div class="itemizedlist">
               <ul>
                  <li>
                     <a name="p6" id="p6" shape="rect"/>
                     <a href="examples/xinclude.epub" shape="rect">XInclude</a>
                  </li>
                  <li>
                     <a name="p7" id="p7" shape="rect"/>
                     <a href="examples/xlink11.epub" shape="rect">XLink 1.1</a>
                  </li>
                  <li>
                     <a name="p8" id="p8" shape="rect"/>
                     <a href="examples/xml-names.epub" shape="rect">XML Namespaces</a>
                  </li>
                  <li>
                     <a name="p9" id="p9" shape="rect"/>
                     <a href="examples/xml-names11.epub" shape="rect">XML Namespaces 1.1</a>
                  </li>
                  <li>
                     <a name="p10" id="p10" shape="rect"/>
                     <a href="examples/xml.epub" shape="rect">XML</a>
                  </li>
                  <li>
                     <a name="p11" id="p11" shape="rect"/>
                     <a href="examples/xml11.epub" shape="rect">XML 1.1</a>
                  </li>
                  <li>
                     <a name="p12" id="p12" shape="rect"/>
                     <a href="examples/xmlbase.epub" shape="rect">XML Base</a>
                  </li>
                  <li>
                     <a name="p13" id="p13" shape="rect"/>
                     <a href="examples/xpath-datamodel.epub" shape="rect">XPath/XQuery Data Model</a>
                  </li>
                  <li>
                     <a name="p14" id="p14" shape="rect"/>
                     <a href="examples/xpath-full-text-10.epub" shape="rect">XPath/XQuery Full Text</a>
                  </li>
                  <li>
                     <a name="p15" id="p15" shape="rect"/>
                     <a href="examples/xpath-functions.epub" shape="rect">XPath/XQuery Functions</a>
                  </li>
                  <li>
                     <a name="p16" id="p16" shape="rect"/>
                     <a href="examples/xpath20.epub" shape="rect">XPath 2.0</a>
                  </li>
                  <li>
                     <a name="p17" id="p17" shape="rect"/>
                     <a href="examples/xproc.epub" shape="rect">XProc</a>, or <a href="examples/xproc-3.epub" shape="rect">alternatively</a>, chunked on third-level sections.</li>
                  <li>
                     <a name="p18" id="p18" shape="rect"/>
                     <a href="examples/xquery-semantics.epub" shape="rect">XPath/XQuery Formal Semantics</a>
                  </li>
                  <li>
                     <a name="p19" id="p19" shape="rect"/>
                     <a href="examples/xquery.epub" shape="rect">XQuery</a>
                  </li>
                  <li>
                     <a name="p20" id="p20" shape="rect"/>
                     <a href="examples/xqueryx.epub" shape="rect">XQueryX</a>
                  </li>
                  <li>
                     <a name="p21" id="p21" shape="rect"/>
                     <a href="examples/xsl11.epub" shape="rect">XSL FO 1.1</a>
                  </li>
                  <li>
                     <a name="p22" id="p22" shape="rect"/>
                     <a href="examples/xslt-xquery-serialization.epub" shape="rect">XSLT/XQuery Serialization</a>
                  </li>
                  <li>
                     <a name="p23" id="p23" shape="rect"/>
                     <a href="examples/xslt20.epub" shape="rect">XSLT 2.0</a>
                  </li>
                  <li>
                     <a name="p24" id="p24" shape="rect"/>
                     <a href="examples/xslt-21.epub" shape="rect">XSLT 2.1</a>
                  </li>
               </ul>
            </div>
            <p id="p25">I even managed a couple of OASIS specs as well with some hand editing of the metadata.</p>
            <div class="itemizedlist">
               <ul>
                  <li>
                     <a name="p26" id="p26" shape="rect"/>
                     <a href="examples/relax-ng.epub" shape="rect">RELAX NG</a>
                  </li>
                  <li>
                     <a name="p27" id="p27" shape="rect"/>
                     <a href="examples/xml-catalogs.epub" shape="rect">XML Catalogs</a>
                  </li>
               </ul>
            </div>
            <p id="p28">There are some that are obviously missing, like the W3C XML Schema specs. I might try to improve my script to handle a few more cases, but there's a sense of diminishing returns. Specs written in hand-authored HTML, for example, are likely to be a good deal less uniform.</p>
            <p id="p29">Anyway, if you're interested in ePUB and in the above web specifications, please give them a try and let me know what you think.</p>
            <p id="p30">[Update 9 June 2010] Turns out the XML Schema specs converted just fine after I fixed a simple bug. And here's the XForms 1.1 spec too, since it went through effortlessly as well.</p>
            <div class="itemizedlist">
               <ul>
                  <li>
                     <a name="p31" id="p31" shape="rect"/>
                     <a href="examples/xforms.epub" shape="rect">XForms 1.1</a>
                  </li>
                  <li>
                     <a name="p32" id="p32" shape="rect"/>
                     <a href="examples/xmlschema-0.epub" shape="rect">XML Schema Part 0</a>
                  </li>
                  <li>
                     <a name="p33" id="p33" shape="rect"/>
                     <a href="examples/xmlschema-1.epub" shape="rect">XML Schema Part 1</a>
                  </li>
                  <li>
                     <a name="p34" id="p34" shape="rect"/>
                     <a href="examples/xmlschema-2.epub" shape="rect">XML Schema Part 2</a>
                  </li>
               </ul>
            </div>
            <p id="p30">[Update 10 June 2010] A few more.</p>
            <div class="itemizedlist">
               <ul>
                  <li>
                     <a name="p36" id="p36" shape="rect"/>
                     <a href="examples/relax-ng-compact.epub" shape="rect">RELAX NG Compact Syntax</a>
                  </li>
                  <li>
                     <a name="p37" id="p37" shape="rect"/>
                     <a href="examples/relax-ng-compatibility.epub" shape="rect">RELAX NG DTD Compatibility</a>
                  </li>
                  <li>
                     <a name="p38" id="p38" shape="rect"/>
                     <a href="examples/relax-ng-xsd-guidelines.epub" shape="rect">Guidelines for using W3C XML Schema Datatypes in with RELAX NG</a>
                  </li>
                  <li>
                     <a name="p39" id="p39" shape="rect"/>
                     <a href="examples/xmlschema-1-3.epub" shape="rect">XML Schema Part 1</a>, chunked on third level sections</li>
                  <li>
                     <a name="p40" id="p40" shape="rect"/>
                     <a href="examples/xmlschema-2-3.epub" shape="rect">XML Schema Part 2</a>, chunked on third level sections</li>
               </ul>
            </div>
            <div id="newcomment"/>
            <div class="footer"/>
         </div>
      </content>
   </entry>
   <entry>
      <title>Balisage 2010 Contest</title>
      <link rel="alternate" type="text/html"
            href="http://norman.walsh.name/2010/05/19/BalisageContest"/>
      <id>http://norman.walsh.name/2010/05/19/BalisageContest</id>
      <published>2010-05-19T18:23:06Z</published>
      <updated>2010-08-30T19:52:29Z</updated>
      <category term="balisageConference" scheme="http://technorati.com/tag/"/>
      <dc:subject>Balisage</dc:subject>
      <category term="balisageConference10" scheme="http://technorati.com/tag/"/>
      <dc:subject>Balisage2010</dc:subject>
      <category term="marklogic" scheme="http://technorati.com/tag/"/>
      <dc:subject>MarkLogic</dc:subject>
      <summary type="xhtml">
         <div xmlns="http://www.w3.org/1999/xhtml">
            <p>Fame and fortune await you. And the opportunity to attack an interesting and significant problem.</p>
         </div>
      </summary>
      <content type="xhtml" xml:base="http://norman.walsh.name/2010/05/19/BalisageContest">
         <div xmlns="http://www.w3.org/1999/xhtml">
            <div class="abstract">
               <p>Fame and fortune await you. And the opportunity to attack an interesting and significant problem.</p>
            </div>
            <p id="p1">Following on the success of “DemoJam” at Balisage, this year we're running <a href="http://developer.marklogic.com/news/marklogic-sponsors-balisage-2010-contest"
                  shape="rect">proper contest</a> with prizes and everything!</p>
            <blockquote>
               <p id="p2">The goal of the contest is to encourage markup experts to review and to research the current state of wiki markup languages and to generate a proposal that serves to de-babelize the current state of affairs for the long haul.</p>
            </blockquote>
            <p id="p3">Put on your thinking caps and walk away with a new laptop or cold, hard cash.</p>
            <p id="p4">(Note that this is in addition to, not instead of, DemoJam. We're still planning to give you 300 seconds to show off your favorite thing.)</p>
            <div id="newcomment"/>
            <div class="footer"/>
         </div>
      </content>
   </entry>
   <entry>
      <title>30 Years Ago: Mount St. Helens</title>
      <link rel="alternate" type="text/html"
            href="http://norman.walsh.name/2010/05/18/mountsthelens"/>
      <id>http://norman.walsh.name/2010/05/18/mountsthelens</id>
      <published>2010-05-19T00:40:26Z</published>
      <updated>2010-08-30T19:52:29Z</updated>
      <dc:subject>SelfReference</dc:subject>
      <summary type="xhtml">
         <div xmlns="http://www.w3.org/1999/xhtml">
            <p>Remembering another ash cloud.</p>
         </div>
      </summary>
      <content type="xhtml" xml:base="http://norman.walsh.name/2010/05/18/mountsthelens">
         <div xmlns="http://www.w3.org/1999/xhtml">
            <div class="abstract">
               <p>Remembering another ash cloud.</p>
            </div>
            <p id="p1">File this under small world.</p>
            <p id="p2">Earlier today <span class="personname">
                  <span class="firstname">Randal</span> 
                  <span class="surname">Schwartz</span>
               </span> 
               <a href="http://twitter.com/merlyn/status/14225860519" shape="rect">reminded me</a> that Mt. St. Helens erupted thirty years ago today. He was in Portland, OR. <a href="http://twitter.com/ndw/status/14239668987" shape="rect">I replied</a> because I thought it was pretty cool that we should both have <a href="http://maps.google.com/maps/ms?ie=UTF8&amp;hl=en&amp;msa=0&amp;msid=101827091656550958977.000486f047c2edc768dbf&amp;ll=47.271775,-120.585937&amp;spn=5.762307,6.437988&amp;z=7"
                  shape="rect">been nearby</a>. I was in Coulee Dam, WA. <span class="personname">
                  <span class="firstname">Shelley</span> 
                  <span class="surname">Powers</span>
               </span> 
               <a href="http://twitter.com/shelleypowers/status/14243698948" shape="rect">trumped us both</a>. She was in Yakima, WA. Ringside seats. (Portland is closer, but Yakima was much more directly in the
path of <a href="http://en.wikipedia.org/wiki/File:1980_Mount_st_helens_ash_distribution.svg"
                  shape="rect">the ash cloud</a>.) She posted <a href="http://burningbird.net/node/96" shape="rect">her story</a>. This is mine.</p>
            <p id="p3">We heard it, or believe we did. Blasting for various construction projects wasn't uncommon in the area around Coulee Dam, but there was an explosion that morning that stood out as different. Different, but not loud enough to make us think it was the eruption, not that we'd expected to hear the eruption anyway.</p>
            <p id="p4">We remembered that particular explosion because my father made an off-color remark about dinosaur flatulance. That seems in horribly bad taste now, but at the time of course, we didn't know what it was.</p>
            <p id="p5">It was an ordinary Sunday. We went about our lives without ever turning on a television or radio. At some point, I went to the grocery store in Grand Coulee with my mom. You'd think we'd have overheard conversation about it; maybe we did, but I don't recall that. Here's what I do recall, my most vivid memory of the event.</p>
            <p id="p6">From the supermarket parking lot, you could see the dam which adds a slightly surreal flavor to the landscape. <a href="http://en.wikipedia.org/wiki/Grand_Coulee_Dam"
                  title="Wikipedia: Grand Coulee Dam"
                  shape="rect">That thing</a> is big even at a distance. Above us and to the east was a brilliant blue sky dotted with puffy white clouds. Above and to the west, the sky was…inky black…with puffy white clouds. (This was before I had taken up photography, alas.)</p>
            <p id="p7">In the short few minutes it took to drive back to Coulee Dam, night fell and fine dusty ash filled the air. I don't recall how long it fell or exactly how much accumulated. An inch or so is my best guess. Deep enough to make sweeping it off the patio tedious.</p>
            <p id="p8">School was closed for three days because ash got in the ventilation system. Ash got everywhere.</p>
            <div id="newcomment"/>
            <div class="footer"/>
         </div>
      </content>
   </entry>
   <entry>
      <title>A Namespace for CALS Tables?</title>
      <link rel="alternate" type="text/html"
            href="http://norman.walsh.name/2010/05/12/calsns"/>
      <id>http://norman.walsh.name/2010/05/12/calsns</id>
      <published>2010-05-12T12:41:30Z</published>
      <updated>2010-08-30T19:52:29Z</updated>
      <category term="xml" scheme="http://technorati.com/tag/"/>
      <dc:subject>XML</dc:subject>
      <summary type="xhtml">
         <div xmlns="http://www.w3.org/1999/xhtml">
            <p>CALS table markup is shared across many XML schemas. Does it make sense to create a namespace for this common vocabulary?</p>
         </div>
      </summary>
      <content type="xhtml" xml:base="http://norman.walsh.name/2010/05/12/calsns">
         <div xmlns="http://www.w3.org/1999/xhtml">
            <div class="abstract">
               <p>CALS table markup is shared across many XML schemas. Does it make sense to create a namespace for this common vocabulary?</p>
            </div>
            <p id="p1">In the past few months, I've been approached independently (I believe) by two different groups exploring the possibility of creating a namespace for CALS table markup.</p>
            <p id="p2">Namespace deniers and folks who believe that only one, centrally-managed vocabulary are required for the entire corpus of human discourse will recoil in horror (or ridicule), I'm sure.</p>
            <p id="p3">I think it's an interesting idea. It would not be technically difficult to describe the vocabulary in a modern schema language. The historical difficulty with a common schema for CALS table markup is that the leaves (the contents of the cells themselves) need to be able to contain the “host vocabulary” markup. For example, a DocBook chapter (<tt class="tag-starttag">&lt;db:chapter&gt;</tt>) might contain a CALS table that ultimately contains a CALS table cell (<tt class="tag-starttag">&lt;cals:entry&gt;</tt>), but that cell must be able to contain a DocBook link (<tt class="tag-starttag">&lt;db:link&gt;</tt>).</p>
            <p id="p4">What would be gained from a CALS table namespace?</p>
            <div class="orderedlist">
               <ol style="list-style: decimal;">
                  <li>
                     <p id="p5">XML editors would be able to recognize tables in any vocabulary and switch to an appropriate table editor widget.</p>
                  </li>
                  <li>
                     <p id="p6">XML viewers would be able to recognize tables in any vocabulary and display them as such. A web browser, assuming (perhaps foolishly) that future web browsers do something rational with namespaces, could have a built-in set of CSS rules for CALS table elements, for example.</p>
                  </li>
                  <li>
                     <p id="p7">Reusable modules (for example, XSLT stylesheets) could be written for CALS tables and simply imported by vocabularies that support them.</p>
                  </li>
                  <li>
                     <p id="p8">Putting CALS tables in a separate namespace would remove the semantic collision that occurs when CALS tables and other table models (for example, HTML) are both added to the same vocabulary.</p>
                  </li>
                  <li>
                     <p id="p9">Authors, when encountering table-like elements in a vocabulary with which they are not familiar would be able to know for sure that the semantics of the markup really are the CALS semantics.</p>
                  </li>
               </ol>
            </div>
            <p id="p10">That's a pretty nice list. What would we lose?</p>
            <div class="orderedlist">
               <ol style="list-style: decimal;">
                  <li>
                     <p id="p11">Well, first of all, there's <em>a lot</em> of legacy. That would either require a large backwards incompatible change in a short, sharp shock, or a long grace period when both the old and new markup are supported.</p>
                  </li>
                  <li>
                     <p id="p12">There are plenty of folks out there who will argue that the right number of namespaces in a document is zero, that for authoring purposes, namespaces are too much trouble. If you can't have zero namespaces, having exactly one is the next best thing. In any event, more than one is <em>too many</em>.</p>
                     <p id="p13">I don't subscribe to this point of view (<em class="foreignphrase">Quelle surprise!</em>). Almost all of my documents contain at least three namespaces (DocBook, XLink, and XInclude). But I am not unsympathetic to the view that authors have trouble with namespaces. On the other hand, if we think MathML and SVG are going to be widely used, then authors will get used to islands of “other namespace” markup in their documents; perhaps because authoring tools completely hide the fact, which they
could also do with CALS table markup.</p>
                  </li>
                  <li>
                     <p id="p14">To the extent that authors rely on non-namespace-aware tools to process their documents (yes, Viginia, it still happens), putting table markup in a namespace may be problematic.</p>
                  </li>
               </ol>
            </div>
            <p id="p15">Where does that leave us? If no table markup existed and we were inventing it from scratch, I'd be firmly in the “put it in a namespace” camp. As it is, I think it would be a hard sell in the community. I've been <a href="http://www.w3.org/TR/xlink11/" shape="rect">burned once</a>, I'd be reluctant to take up such an effort without some indication that the community really wanted to go there.</p>
            <div id="newcomment"/>
            <div class="footer"/>
         </div>
      </content>
   </entry>
   <entry>
      <title>XProc is a W3C Recommendation!</title>
      <link rel="alternate" type="text/html"
            href="http://norman.walsh.name/2010/05/11/xproc"/>
      <id>http://norman.walsh.name/2010/05/11/xproc</id>
      <published>2010-05-11T13:16:09Z</published>
      <updated>2010-08-30T19:52:29Z</updated>
      <category term="w3c" scheme="http://technorati.com/tag/"/>
      <dc:subject>W3C</dc:subject>
      <category term="xml" scheme="http://technorati.com/tag/"/>
      <dc:subject>XML</dc:subject>
      <category term="xproc" scheme="http://technorati.com/tag/"/>
      <dc:subject>XProc</dc:subject>
      <summary type="xhtml">
         <div xmlns="http://www.w3.org/1999/xhtml">
            <p>I'm delighted to say that we're finally finished. We've been finished for a while, really, but today's announcement of the Director's decision to advance XProc: An XML Pipeline Language to Recommendation status dots the final “i” and crosses the final “t”.</p>
         </div>
      </summary>
      <content type="xhtml" xml:base="http://norman.walsh.name/2010/05/11/xproc">
         <div xmlns="http://www.w3.org/1999/xhtml">
            <div class="abstract">
               <p>I'm delighted to say that we're finally finished. We've been finished for a while, really, but today's announcement of the Director's decision to advance XProc: An XML Pipeline Language to Recommendation status dots the final “i” and crosses the final “t”.</p>
            </div>
            <p id="p2">Today, <a href="http://www.w3.org/TR/2010/REC-xproc-20100511/" shape="rect">XProc: An XML Pipeline Language</a> is a W3C Recommendation!</p>
            <p id="p1">I had thought that this essay would be a long and thoughtful series of recollections on the path from <a href="http://www.w3.org/XML/2001/07/XMLPM.html" shape="rect">workshop</a> to <a href="http://www.w3.org/2005/10/Process-20051014/tr.html#rec-publication"
                  shape="rect">Recommendation</a>. Perhaps I shall write such an essay, but this isn't it. I've been too busy for reflection and yet it would seem bizarre to let this day pass without a posting.</p>
            <p id="p3">Instead, I'll simply reiterate my heartfelt thanks to the members of the working group and the community for their support. It wouldn't have been possible without you. Thank you, and congratulations!</p>
            <p id="p4">With two complete <a href="http://www.w3.org/XML/XProc/2010/02/ir.html" shape="rect">implementations</a> and a number of other implementations in the works, I can't wait to see what we build with it!</p>
            <div id="newcomment"/>
            <div class="footer"/>
         </div>
      </content>
   </entry>
   <entry>
      <title>Abecedary</title>
      <link rel="alternate" type="text/html"
            href="http://norman.walsh.name/2010/04/16/abecedary"/>
      <id>http://norman.walsh.name/2010/04/16/abecedary</id>
      <published>2010-04-16T12:27:21Z</published>
      <updated>2010-08-30T19:52:29Z</updated>
      <category term="photographs" scheme="http://technorati.com/tag/"/>
      <dc:subject>Photography</dc:subject>
      <dc:subject>SelfReference</dc:subject>
      <summary type="xhtml">
         <div xmlns="http://www.w3.org/1999/xhtml">
            <p>In which items from my childhood are recovered and replicated in the digital age.</p>
         </div>
      </summary>
      <content type="xhtml" xml:base="http://norman.walsh.name/2010/04/16/abecedary">
         <div xmlns="http://www.w3.org/1999/xhtml">
            <div class="abstract">
               <p>In which items from my childhood are recovered and replicated in the digital age.</p>
            </div>
            <p id="p1">As my aunts and uncles and parents grow older and begin inexorably to <a href="http://norman.walsh.name/2009/12/26/dad" title="David Alfred Walsh"
                  shape="rect">shuffle off this mortal coil</a>, a slow but steady stream of ephemera returns to me. Photographs from times I no longer remember or never knew, report cards from grade school, certificates for achievements long forgotten, newspaper clippings, post cards, notes, etc.</p>
            <p id="p4">I am slowly digitizing them, freeing them of their physical bonds. They're not the same then, of course, something is lost. But it pleases me to think of them as more accessible this way, always within digital reach.</p>
            <p id="p2">Among my recent finds, <a href="http://www.flickr.com/photos/ndw/sets/72157623868535866/" shape="rect">this Abecedary</a>.</p>
            <div class="artwork">
               <div class="flickr-photo">
                  <div class="photo" style="width: 500px">
                     <a href="http://www.flickr.com/photos/ndw/4525132029/" shape="rect">
                        <img border="0" alt="[Photo]"
                             src="http://farm5.static.flickr.com/4012/4525132029_249645d335.jpg"/>
                     </a>
                  </div>
                  <div class="link" style="left: 225px;">
                     <a href="http://www.flickr.com/" shape="rect">
                        <img border="0" alt="[Flickr]" src="/graphics/flickrt.png"/>
                     </a>
                  </div>
                  <h3>Abecedary Cover</h3>
               </div>
            </div>
            <p id="p3">What a delightful treasure to have found again.</p>
            <div id="newcomment"/>
            <div class="footer"/>
         </div>
      </content>
   </entry>
   <entry>
      <title>Accessing Flickr with XProc</title>
      <link rel="alternate" type="text/html"
            href="http://norman.walsh.name/2010/04/13/flickrWithXProc"/>
      <id>http://norman.walsh.name/2010/04/13/flickrWithXProc</id>
      <published>2010-04-13T11:58:21Z</published>
      <updated>2010-08-30T19:52:29Z</updated>
      <category term="xproc" scheme="http://technorati.com/tag/"/>
      <dc:subject>XProc</dc:subject>
      <summary type="xhtml">
         <div xmlns="http://www.w3.org/1999/xhtml">
            <p>I have a hammer.</p>
         </div>
      </summary>
      <content type="xhtml" xml:base="http://norman.walsh.name/2010/04/13/flickrWithXProc">
         <div xmlns="http://www.w3.org/1999/xhtml">
            <div class="abstract">
               <p>I have a hammer.</p>
            </div>
            <p id="p1">The <em class="citetitle">Flickr Uploader</em> has never been a model of stability in my experience. Recently, it's become entirely unusable, it simply doesn't work for the current set of pictures that I want to upload.</p>
            <p id="p2">There are lots of alternative uploaders, but I'm also interested in exploring the capabilities of XProc. Specifications and test suites aside, you don't really know what you can do with a language until you try.</p>
            <p id="p3">Perhaps uploading photographs to <a href="http://www.flickr.com/" shape="rect">Flickr</a> isn't the sort of application best achieved by XProc, but I'm certain that interacting with real world web service APIs is something that XProc pipelines will need to do.</p>
            <p id="p4">Uploading photographs requires <a href="http://www.flickr.com/services/api/misc.userauth.html" shape="rect">authenticated access</a>. As a prerequisite for that, you need to go through a little authentication dance with Flickr. I'm not going to try to automate that part; I'll assume you're in possession of an API key, authentication token, and shared secret. Authenticated access is achieved by “signing” the API call; in brief, concatentate the shared secret with the parameters (sorted into alphabetical
order) and their values, compute the MD5 hash of that string, and add that value as a new parameter. Can we do this in XProc?</p>
            <p id="p5">Sorting the parameters <a href="examples/sort-parameters.xpl" shape="rect">is easy</a>. The only interesting part of that pipeline is the <tt class="tag-starttag">&lt;p:parameters&gt;</tt> step. It's there to turn what might possibly be a sequence of documents on the <tt class="literal">parameters</tt> port into a single document for XSLT<sup class="footnote">[<a name="p5.4" href="#ftn.p5.4" id="p5.4" shape="rect">1</a>]</sup>.</p>
            <p id="p7">Before we dive into the signing step, there's one more complication. To simplify processing for the caller, I'm going to allow the “secret” to be <em>either</em> a parameter or an option. The Flickr APIs of course don't allow the secret to be a parameter because that would expose the secret which would defeat its purpose. But from an XProc perspective, it's convenient to have a <tt class="tag-starttag">&lt;c:param-set&gt;</tt> that contains the key, token, and secret which we can just pass
around together.</p>
            <p id="p8">That means the signing step will have to be prepared for the secret to come from either place and will have to explicitly exclude the secret from the signed parameters.</p>
            <p id="p9">Let's begin! Our pipeline, <tt class="function">flickr:sign-api</tt> takes a set of parameters and an optional <tt class="option">secret</tt>. It returns the signed parameters as a <tt class="tag-starttag">&lt;c:param-set&gt;</tt> on the <tt class="literal">result</tt> port.</p>
            <div class="programlisting">
               <pre xml:space="preserve">
&lt;p:declare-step xmlns:p="http://www.w3.org/ns/xproc"
                xmlns:c="http://www.w3.org/ns/xproc-step"
                xmlns:flickr="http://xmlcalabash.com/ns/extensions/flickr"
                xmlns:cx="http://xmlcalabash.com/ns/extensions"
                xmlns:err="http://www.w3.org/ns/xproc-error"
                type="flickr:sign-api" name="main"
                exclude-inline-prefixes="err" version="1.0"&gt;
  &lt;p:input port="parameters" kind="parameter"/&gt;
  &lt;p:output port="result"/&gt;
  &lt;p:option name="secret"/&gt;
</pre>
            </div>
            <p id="p10">The first step is to run the parameters through a <tt class="tag-starttag">&lt;p:parameters&gt;</tt> step, as discussed above, then we go looking for the secret. This is XProc, so everything has to be XML. The result of the choose is an XML document that contains the secret selected from (preferentially) the <tt class="option">secret</tt> option or from the <em class="parameter">
                  <tt class="parameter">secret</tt>
               </em> parameter. It's an error to call this pipeline without passing a secret.</p>
            <div class="programlisting">
               <pre xml:space="preserve">
  &lt;p:parameters name="params"&gt;
    &lt;p:input port="parameters"&gt;
      &lt;p:pipe step="main" port="parameters"/&gt;
    &lt;/p:input&gt;
  &lt;/p:parameters&gt;

  &lt;p:choose name="secret"&gt;
    &lt;p:when test="p:value-available('secret')"&gt;
      &lt;p:output port="result"/&gt;

      &lt;p:string-replace match="/secret/text()"&gt;
        &lt;p:input port="source"&gt;
          &lt;p:inline&gt;&lt;secret&gt;@@&lt;/secret&gt;&lt;/p:inline&gt;
        &lt;/p:input&gt;
        &lt;p:with-option name="replace" select="concat('&amp;quot;',$secret,'&amp;quot;')"/&gt;
      &lt;/p:string-replace&gt;
    &lt;/p:when&gt;

    &lt;p:when test="/c:param-set/c:param[@name='secret']"&gt;
      &lt;p:xpath-context&gt;
        &lt;p:pipe step="params" port="result"/&gt;
      &lt;/p:xpath-context&gt;
      &lt;p:output port="result"/&gt;

      &lt;p:variable name="value"
                  select="string(/c:param-set/c:param[@name='secret']/@value)"&gt;
        &lt;p:pipe step="params" port="result"/&gt;
      &lt;/p:variable&gt;

      &lt;p:string-replace match="/secret/text()"&gt;
        &lt;p:input port="source"&gt;
          &lt;p:inline&gt;&lt;secret&gt;@@&lt;/secret&gt;&lt;/p:inline&gt;
        &lt;/p:input&gt;
        &lt;p:with-option name="replace" select="concat('&amp;quot;',$value,'&amp;quot;')"/&gt;
      &lt;/p:string-replace&gt;
    &lt;/p:when&gt;

    &lt;p:otherwise&gt;
      &lt;p:output port="result"/&gt;

      &lt;p:error code="err:XX01"&gt;
        &lt;p:input port="source"&gt;
          &lt;p:inline&gt;
            &lt;message&gt;flickr:sign-api called without secret&lt;/message&gt;
          &lt;/p:inline&gt;
        &lt;/p:input&gt;
      &lt;/p:error&gt;
    &lt;/p:otherwise&gt;
  &lt;/p:choose&gt;
</pre>
            </div>
            <p id="p11">Next we sort them.</p>
            <div class="programlisting">
               <pre xml:space="preserve">
  &lt;cx:sort-parameters name="sorted"&gt;
    &lt;p:input port="parameters"&gt;
      &lt;p:pipe step="main" port="parameters"/&gt;
    &lt;/p:input&gt;
  &lt;/cx:sort-parameters&gt;
</pre>
            </div>
            <p id="p12">Now we have a <tt class="tag-starttag">&lt;c:param-set&gt;</tt> containing all of the parameters in alphabetical order. From this we must construct a string that we can sign. There's no two ways about it, string manipulation in XProc is not as easy as XML manipulation. Here's what we're going to do: for each parameter (except the <em class="parameter">
                  <tt class="parameter">secret</tt>
               </em>, if it's there) we're going to construct a dummy document that contains the name and value concatenated
together. If we pass in <tt class="literal">&lt;c:param name="foo" value="bar"/&gt;</tt>, we'll pass back <tt class="literal">&lt;doc&gt;foobar&lt;/doc&gt;</tt>.</p>
            <p id="p13">There's one interesting complication here. We're going to use <tt class="tag-starttag">&lt;p:string-replace&gt;</tt> to do the heavy lifting, but that will make the context node the node that we're <em>replacing</em>. From that context node, we'll have no way to get back to the <tt class="tag-starttag">&lt;c:param&gt;</tt> that's on the <tt class="literal">current</tt> port. We work around this by storing the values we need in variables.</p>
            <div class="programlisting">
               <pre xml:space="preserve">
  &lt;p:for-each name="loop"&gt;
    &lt;p:iteration-source select="//c:param[@name != 'secret']"/&gt;

    &lt;!-- Flickr params should always be NCNames, but just in case... --&gt;
    &lt;p:variable name="name"
                select="if (contains(/*/@name, ':'))
                        then substring-after(/*/@name, ':')
                        else string(/*/@name)"/&gt;

    &lt;p:variable name="value" select="string(/*/@value)"/&gt;

    &lt;p:string-replace match="/doc/text()"&gt;
      &lt;p:input port="source"&gt;&lt;p:inline&gt;&lt;doc&gt;@@&lt;/doc&gt;&lt;/p:inline&gt;&lt;/p:input&gt;
      &lt;p:with-option name="replace"
                     select="'concat(&amp;quot;',$name,'&amp;quot;,&amp;quot;',$value,'&amp;quot;)'"&gt;
        &lt;p:pipe step="loop" port="current"/&gt;
      &lt;/p:with-option&gt;
    &lt;/p:string-replace&gt;
  &lt;/p:for-each&gt;
</pre>
            </div>
            <p id="p14">The output of the <tt class="literal">loop</tt> step is a sequence of <tt class="tag-starttag">&lt;doc&gt;</tt> documents. We'll turn that back into a single document by adding a wrapper and we'll prepend the secret value to the beginning of the document.</p>
            <div class="programlisting">
               <pre xml:space="preserve">
  &lt;p:wrap-sequence wrapper="inner-wrapper"/&gt;

  &lt;p:insert match="/inner-wrapper" position="first-child"&gt;
    &lt;p:input port="insertion"&gt;
      &lt;p:pipe step="secret" port="result"/&gt;
    &lt;/p:input&gt;
  &lt;/p:insert&gt;
</pre>
            </div>
            <p id="p15">We're getting there! Now we've got something that looks like this:</p>
            <div class="programlisting">
               <pre xml:space="preserve">
&lt;inner-wrapper&gt;
&lt;secret&gt;somehexvalue&lt;/secret&gt;
&lt;doc&gt;api_keysomelonghexvalue;&lt;/doc&gt;
&lt;doc&gt;api_tokenanotherlonghexvalue;&lt;/doc&gt;
&lt;doc&gt;methodsomemethodname;&lt;/doc&gt;
&lt;/inner-wrapper&gt;
</pre>
            </div>
            <p id="p16">Recall your XPath semantics, if we ask for the string-value of that document, we'll get the string we want hash. We have a <tt class="tag-starttag">&lt;p:hash&gt;</tt> step, so we can do that part. But if we replace the wrapper with the hash of it's string value, the result won't be well-formed because it won't have a document element anymore. We get around that by adding another level of wrapper first.</p>
            <div class="programlisting">
               <pre xml:space="preserve">
  &lt;p:wrap-sequence wrapper="wrapper"/&gt;

  &lt;p:hash match="/wrapper/inner-wrapper" algorithm="md" version="5" name="hash"&gt;
    &lt;p:with-option name="value" select="string(.)"/&gt;
  &lt;/p:hash&gt;
</pre>
            </div>
            <p id="p17">The output of <tt class="tag-starttag">&lt;p:hash&gt;</tt> is a document that looks like this:</p>
            <div class="programlisting">
               <pre xml:space="preserve">
&lt;wrapper&gt;somehexstring&lt;/wrapper&gt;
</pre>
            </div>
            <p id="p18">Now if we can stick that back in a <tt class="tag-starttag">&lt;c:param&gt;</tt> element and stick that parameter back into the <tt class="tag-starttag">&lt;c:param-set&gt;</tt>, we're done. We'll use <tt class="tag-starttag">&lt;p:string-replace&gt;</tt> to put the string back into an element, but here we encounter the first really odd wrinkle in the XProc design.</p>
            <p id="p19">Like before, we need to put the hash in a variable so that we can get at it when the context is changed by <tt class="tag-starttag">&lt;p:string-replace&gt;</tt>. But variables can only appear at the beginning of a compound step. Therefore, we have to introduce a <tt class="tag-starttag">&lt;p:group&gt;</tt>.</p>
            <div class="note admonition">
               <table border="0" cellspacing="0" cellpadding="4" summary="Presentation of a note">
                  <tbody>
                     <tr>
                        <td valign="top" rowspan="1" colspan="1">
                           <span class="admon-graphic">
                              <img alt="Note" src="/graphics/note.png"/>
                           </span>
                        </td>
                        <td rowspan="1" colspan="1">
                           <div class="admon-text">
                              <p id="p20">WTF!? I hear you cry. Yes, well, look at it this way: the order of steps in the pipeline is determined by the connections between them, not strictly by the order in which they appear in the pipeline document. If you put a variable declaration between to steps and those steps get moved, where does the variable go? In order to answer that question, you have to know how it fits into the flow graph. To answer that question, you'd have to parse and analyze the XPath expression that defines its value
because that variable's value might depend on the values of other variables.</p>
                              <p id="p21">That was more than we were willing to demand of implementations. Instead, we simply limited variables to the beginning of compound steps. That assures that ordinary step analysis produces a consistent result for variables. Most of the time, it's what you want to do anyway. But every now and then, you run into this weird situation where you have to insert a <tt class="tag-starttag">&lt;p:group&gt;</tt>. Imperfect, I agree.</p>
                           </div>
                        </td>
                     </tr>
                  </tbody>
               </table>
            </div>
            <p id="p22">C'est la vie. Here's the <tt class="tag-starttag">&lt;p:group&gt;</tt>, the variable, and the <tt class="tag-starttag">&lt;p:string-replace&gt;</tt> call.</p>
            <div class="programlisting">
               <pre xml:space="preserve">
  &lt;p:group&gt;
    &lt;p:variable name="hash" select="string(/)"&gt;
      &lt;p:pipe step="hash" port="result"/&gt;
    &lt;/p:variable&gt;

    &lt;p:string-replace match="/c:param/@value" name="api_sig"&gt;
      &lt;p:input port="source"&gt;
        &lt;p:inline&gt;&lt;c:param name="api_sig" value="@@"/&gt;&lt;/p:inline&gt;
      &lt;/p:input&gt;
      &lt;p:with-option name="replace" select="concat('&amp;quot;',$hash,'&amp;quot;')"/&gt;
    &lt;/p:string-replace&gt;
</pre>
            </div>
            <p id="p23">The last step is to combine this new signature parameter with the original input parameters. Remember that the user may have passed the secret in as a parameter, so we start by deleting that one.</p>
            <div class="programlisting">
               <pre xml:space="preserve">
    &lt;p:delete match="c:param[@name='secret']"&gt;
      &lt;p:input port="source"&gt;
        &lt;p:pipe step="params" port="result"/&gt;
      &lt;/p:input&gt;
    &lt;/p:delete&gt;
</pre>
            </div>
            <p id="p24">Then we insert the signature into the resulting <tt class="tag-starttag">&lt;c:param-set&gt;</tt> and that's what we send out the <tt class="literal">result</tt> port.</p>
            <div class="programlisting">
               <pre xml:space="preserve">
    &lt;p:insert match="/c:param-set" position="last-child"&gt;
      &lt;p:input port="insertion"&gt;
        &lt;p:pipe step="api_sig" port="result"/&gt;
      &lt;/p:input&gt;
    &lt;/p:insert&gt;
  &lt;/p:group&gt;
&lt;/p:declare-step&gt;
</pre>
            </div>
            <p id="p25">The input parameters have been augmented with a signature that will satisfy the Flickr authentication requirements. Now we're read to move on to actually using the API with our <a href="examples/flickr-sign-api.xpl" shape="rect">signing pipeline</a>.</p>
            <p id="p26">In a future essay we'll look at making a “Flickr service” pipeline and an upload pipeline.</p>
            <div class="footnotes">
               <hr width="100" align="left" class="footnotes-divider"/>
               <div class="footnote">
                  <p id="p6">
                     <sup>[<a href="#p5.4" name="ftn.p5.4" id="ftn.p5.4" shape="rect">1</a>]</sup>If you think using XSLT for the sorting part is “cheating” of some sort, I don't agree. And if you think that I should just punt and do the whole exercise in XSLT, I don't agree with you about that, either.</p>
               </div>
            </div>
            <div id="newcomment"/>
            <div class="footer"/>
         </div>
      </content>
   </entry>
   <entry>
      <title>XML Pipelines: A Guide to XProc</title>
      <link rel="alternate" type="text/html"
            href="http://norman.walsh.name/2010/04/12/xprocbook"/>
      <id>http://norman.walsh.name/2010/04/12/xprocbook</id>
      <published>2010-04-12T16:51:34Z</published>
      <updated>2010-08-30T19:52:29Z</updated>
      <category term="xproc" scheme="http://technorati.com/tag/"/>
      <dc:subject>XProc</dc:subject>
      <category term="xprocbook" scheme="http://technorati.com/tag/"/>
      <dc:subject>XProcBook</dc:subject>
      <summary type="xhtml">
         <div xmlns="http://www.w3.org/1999/xhtml">
            <p>I guess it's official, I'm writing another book.</p>
         </div>
      </summary>
      <content type="xhtml" xml:base="http://norman.walsh.name/2010/04/12/xprocbook">
         <div xmlns="http://www.w3.org/1999/xhtml">
            <div class="abstract">
               <p>I guess it's official, I'm writing another book.</p>
            </div>
            <p id="p1">After I wrote <em class="citetitle">Making TeX Work</em>, I wondered if I'd ever write another book. The effort required to get from a seventy page draft to a finished book was much larger, and harder, than I imagined.</p>
            <p id="p2">Then I wrote <em class="citetitle">DocBook: The Definitive Guide</em>, and could honestly claim not to be a one-hit wonder in publishing. O'Reilly's even publishing <a href="http://oreilly.com/catalog/9780596805012/" shape="rect">the second edition</a>, covering DocBook V5.0!</p>
            <p id="p3">I really wasn't sure I'd ever write a third book. But XProc looks to be ramping up in the world, and <span class="personname">
                  <span class="firstname">Richard</span> 
                  <span class="surname">Hamilton</span>
               </span>’s been giving me little nudges to write one for his <a href="http://xmlpress.net/" shape="rect">XML Press</a>. Sometime over the last couple of months, the possible thought of maybe doing that turned into a few pages of outline then a few dozen reference pages then a nice (XProc-based!) toolchain for
building it.</p>
            <p id="p4">I guess I'm writing another book.</p>
            <p id="p5">You can follow along, if you're so inclined, at <a href="http://xprocbook.com/" shape="rect">http://xprocbook.com/</a>. That's pretty rough and it's early days. There's no actual text up there yet, but that's got more to do with laziness on my part than anything else.</p>
            <p id="p6">For my first two books, O'Reilly's art department provided the cover design and all the details. For this one, more of it's on my plate. So here's my first idea: crowd-source the cover. If you've got an image (of your own, naturally) or other design that you think would make a good cover, please let me know. You'll get a cover credit and my gratitude if we pick your design for the final cover!</p>
            <div id="newcomment"/>
            <div class="footer"/>
         </div>
      </content>
   </entry>
   <entry>
      <title>“Default” XML Processing</title>
      <link rel="alternate" type="text/html"
            href="http://norman.walsh.name/2010/04/09/xmldefault"/>
      <id>http://norman.walsh.name/2010/04/09/xmldefault</id>
      <published>2010-04-09T15:27:38Z</published>
      <updated>2010-08-30T19:52:29Z</updated>
      <category term="xml" scheme="http://technorati.com/tag/"/>
      <dc:subject>XML</dc:subject>
      <category term="xproc" scheme="http://technorati.com/tag/"/>
      <dc:subject>XProc</dc:subject>
      <summary type="xhtml">
         <div xmlns="http://www.w3.org/1999/xhtml">
            <p>A look at the intersection of the XML model PI, the XML stylesheet PI, and XProc.</p>
         </div>
      </summary>
      <content type="xhtml" xml:base="http://norman.walsh.name/2010/04/09/xmldefault">
         <div xmlns="http://www.w3.org/1999/xhtml">
            <div class="abstract">
               <p>A look at the intersection of the XML model PI, the XML stylesheet PI, and XProc.</p>
            </div>
            <p id="p1">What is the “default XML processing model?” That question has been open for a long time, since the very beginning of XML really. There are a lot of different opinions, some of them captured in the <a href="http://www.w3.org/" shape="rect">W3C</a>’s <a href="http://www.w3.org/2001/tag/" shape="rect">Technical Architecture Group</a> discussion of the issue “<a href="http://www.w3.org/2001/tag/group/track/issues/34" shape="rect">xmlFunctions-34</a>”. (Disclaimer: I contributed to that issue while I was a member of the TAG.)</p>
            <p id="p2">It's in the charter of the <em class="citetitle">
                  <a href="http://www.w3.org/XML/Processing/" shape="rect">XML Processing Model Working Group</a>
               </em>, which I chair, to provide an answer to this question. I don't think it has <em>an</em> answer. I don't subscribe to the notion that XML documents have one and only one intrinsic meaning. I think the best we can do is describe one (or a few) possible models and give them labels. That will allow the authors of other specifications, and applications, to say “we
do <em class="replaceable">
                  <tt class="replaceable">TYPEX</tt>
               </em> processing on XML documents”, where “<em class="replaceable">
                  <tt class="replaceable">TYPEX</tt>
               </em>” is one of the labels. That'll give us a shorthand for talking about some common processing models.</p>
            <p id="p3">That may not seem very satisfying. Maybe it isn't. The point of this essay isn't to make or defend that position. When the WG produces it's first public working draft of a document that attempts to answer the “default XML processing model” question, I'll let you know. The right answer isn't what I think it is, it's what community consensus drives us to.</p>
            <p id="p4">No, the point of this essay is something else, something a little more complicated than I think we would reasonably expect to put in that document (though I could be wrong).</p>
            <p id="p5">The XML community has had an <em class="citetitle">
                  <a href="http://www.w3.org/TR/xml-stylesheet/" shape="rect">Associating Style Sheets with XML documents</a>
               </em> specification for a long time. It will soon have an <em class="citetitle">
                  <a href="http://www.w3.org/XML/2010/01/xml-model/" shape="rect">Associating Schemas with XML documents</a>
               </em> specification. (That link is to an early editor's draft, there's nothing official yet, but it's coming soon.)</p>
            <p id="p6">What are the two most common things that many (not all!) users want to do with XML documents? Validate them and transform them.</p>
            <p id="p7">Well, if the document tells you how to validate it and how to style it, then isn't one possible answer to the default processing question simple: validate like I say and style like I say? If it is, shouldn't we be able to express that processing using an <a href="http://en.wikipedia.org/wiki/XML_pipeline"
                  title="Wikipedia: XML pipeline"
                  shape="rect">XProc</a>
               <a href="/knows/what/xproc" shape="rect">
                  <img border="0" alt="[L]" src="/graphics/linkgroup.gif"/>
               </a> pipeline?</p>
            <p id="p8">Of course we should. And we can: <a href="examples/default.xpl" shape="rect">default.xpl</a>.</p>
            <p id="p9">I'm happy and relieved to find that we <em>can</em> express that processing in XProc. I'm a little, but only a little, surprised to see how complex that pipeline is. Weighing in at 320+ lines it works for a few narrow cases. I still need to integrate support for RELAX NG compact syntax schemas and NVDL processing, at least. I may also want to support a few more stylesheet options, I'm not sure.</p>
            <div id="newcomment"/>
            <div class="footer"/>
         </div>
      </content>
   </entry>
   <entry>
      <title>Demo Jam at MLUC10!</title>
      <link rel="alternate" type="text/html"
            href="http://norman.walsh.name/2010/04/08/mluc10-demojam"/>
      <id>http://norman.walsh.name/2010/04/08/mluc10-demojam</id>
      <published>2010-04-08T13:55:10Z</published>
      <updated>2010-08-30T19:52:29Z</updated>
      <dc:subject>MLUC10</dc:subject>
      <category term="marklogic" scheme="http://technorati.com/tag/"/>
      <dc:subject>MarkLogic</dc:subject>
      <summary type="xhtml">
         <div xmlns="http://www.w3.org/1999/xhtml">
            <p>Bring out yer demos! We're going to jam! This is your chance to show off in front of the largest annual gathering of XML and XQuery experts in the world at the Mark Logic User Conference.</p>
         </div>
      </summary>
      <content type="xhtml" xml:base="http://norman.walsh.name/2010/04/08/mluc10-demojam">
         <div xmlns="http://www.w3.org/1999/xhtml">
            <div class="abstract">
               <p>Bring out yer demos! We're going to jam! This is your chance to show off in front of the largest annual gathering of XML and XQuery experts in the world at the Mark Logic User Conference.</p>
            </div>
            <p id="p1">With two successful demo jam's under my belt (<a href="http://norman.walsh.name/2010/02/23/demojam"
                  title="Demo Jam at XML Prague!"
                  shape="rect">XML Prague</a> this year and <a href="http://norman.walsh.name/2009/06/03/balisage" title="Balisage 2009"
                  shape="rect">Balisage</a> last year), marketing has decided to put me on stage with Matt Turner at the big show: we're going to run “Demo Jam” at our <a href="http://www.marklogic.com/UserConference2010/" shape="rect">annual user conference</a>.</p>
            <p id="p2">We've never had a shortage of entries (despite my sometimes fear that we will), and our user conference is <em>big</em>, so we're going to introduce a little process this time with a “call for demos”. We'll pick ten entrants to compete at the event. Top prize for your trouble: a shiny new iPad.</p>
            <p id="p3">Anyone attending the conference can compete, so <a href="http://www.regonline.com/Checkin.asp?EventId=791346" shape="rect">register today</a> and propose your demo!</p>
            <div class="section">
               <h2 class="runin">What's a demo jam? </h2>
               <p class="runin" id="p4">
                  <a id="whatis" name="whatis" shape="rect"/>It works like this: you get a microphone, a projector, and 5 minutes to show off your stuff. After all the demos have run, the audience cheers for their favorite. Loudest ovation walks away with the ’pad.</p>
               <p id="p5">The only hard-and-fast rule of demo jam is you get five minutes, 300 seconds, not a second more.</p>
               <p id="p6">Now, in my best high-speed, voiceover-lawyer voice, here are the official contest rules:</p>
               <div class="sidebar" id="rules">
                  <div class="title">DEMO JAM!</div>
                  <div class="sidebar-content">
                     <p id="p7">Attend our DemoJam at the opening reception! Submit your best 5 minute demo now, present it on May 3rd, get the cheers of the attendees and win an iPad!</p>
                     <p id="p8">Mark Logic will hold a demo contest, on May 3rd, 2010 at the Mark Logic User Conference opening reception. Everyone is welcome! The demo must be of technical nature and cannot take more than 5 minutes. The crowd will vote on the winner.</p>
                     <p id="p9">DemoJam started as an internal Mark Logic contest that we have expanded to include our developer community. Because of the great enthusiasm this event receives, we have to put a ceiling on the number of demos to be presented. Submit your demo now and we will invite the top 10 to compete at the User Conference event.</p>
                     <p id="p10">Submit your demos by April 21st at demojam at marklogic dot com. Submissions should include a brief textual description of the demo. You're welcome, but not required, to provide screen shots or screen casts as well.</p>
                     <p id="p11">Mark Logic will provide an Internet connection but presenters are encouraged to bring their own laptops.</p>
                  </div>
               </div>
               <p id="p12">It's great fun. Hope to see you there, on stage or in the audience!</p>
            </div>
            <div id="newcomment"/>
            <div class="footer"/>
         </div>
      </content>
   </entry>
   <entry>
      <title>Mark Logic Engineering</title>
      <link rel="alternate" type="text/html"
            href="http://norman.walsh.name/2010/04/06/engineering"/>
      <id>http://norman.walsh.name/2010/04/06/engineering</id>
      <published>2010-04-06T20:21:42Z</published>
      <updated>2010-08-30T19:52:29Z</updated>
      <category term="marklogic" scheme="http://technorati.com/tag/"/>
      <dc:subject>MarkLogic</dc:subject>
      <dc:subject>SelfReference</dc:subject>
      <summary type="xhtml">
         <div xmlns="http://www.w3.org/1999/xhtml">
            <p>I had a lot of fun last week hanging out with my new colleagues in engineering. Not that you should care. The part you should care about is: we're hiring.</p>
         </div>
      </summary>
      <content type="xhtml" xml:base="http://norman.walsh.name/2010/04/06/engineering">
         <div xmlns="http://www.w3.org/1999/xhtml">
            <div class="abstract">
               <p>I had a lot of fun last week hanging out with my new colleagues in engineering. Not that you should care. The part you should care about is: we're hiring.</p>
            </div>
            <p id="p1">As I <a href="http://twitter.com/ndw/status/10171804942" shape="rect">mentioned</a> a month or so ago, I've changed jobs inside <a href="http://www.marklogic.com/" shape="rect">Mark Logic</a>. I've moved from a pre-sales/consulting field position in the media team to the application services team in engineering. The short version of the story about how this happened is that <span class="personname">
                  <span class="firstname">Micah</span> 
                  <span class="surname">Dubinko</span>
               </span>, whom most of my regular readers will
certainly know, made a compelling offer: a chance to work with a great team, a chance to build cool stuff, and a better opportunity, really, to make a lasting difference for the company and our customers. I think. (But I still love our media peeps and I'll always be a “publishing guy”.)</p>
            <p id="p2">It's been more than a decade since I spent a week just hanging out with engineers in the office. That is <em>a lot</em> of fun. Not “I'm ready to relocate” fun, I'm going to continue to be a full-time work-from-homer, but still fun and stimulating.</p>
            <p id="p3">So I had fun (yay me!), but that's not really the point. The point is that you can have fun too! If you're smart and motivated and want to work on an amazing product with the largest collection of uniformly great people I've ever met, we should talk.</p>
            <p id="p4">I can tell you that my group is looking for at least two people. And, lest you think working on <a href="http://www.marklogic.com/product/marklogic-server.html" shape="rect">MarkLogic Server</a> is all behind-the-scenes heavy coding, we'd <em>particularly</em> like to talk to someone with the sort of UI/JavaScript/HTML experience that can really make an application shine. Oh, and if you really love to be behind-the-scenes doing heavy coding on a honking big, screaming fast, hugely scalable powerhouse, we can
hook you up there too! And in the field, if that's your thing. I don't know all the details, but I can put you in touch with the folks who do.</p>
            <p id="p5">Anyway, the short story is, I'm having the best time and I like to share. There's plenty of room to join in the fun! If you're interested, get in touch.</p>
            <div id="newcomment"/>
            <div class="footer"/>
         </div>
      </content>
   </entry>
   <entry>
      <title>Creating a DocBook V5.0 DTD</title>
      <link rel="alternate" type="text/html"
            href="http://norman.walsh.name/2010/03/18/rng2dtd"/>
      <id>http://norman.walsh.name/2010/03/18/rng2dtd</id>
      <published>2010-03-18T19:38:13Z</published>
      <updated>2010-08-30T19:52:29Z</updated>
      <category term="docbook" scheme="http://technorati.com/tag/"/>
      <dc:subject>DocBook</dc:subject>
      <category term="xmlschema-xsd" scheme="http://technorati.com/tag/"/>
      <dc:subject>W3CXMLSchema</dc:subject>
      <category term="xml" scheme="http://technorati.com/tag/"/>
      <dc:subject>XML</dc:subject>
      <category term="xproc" scheme="http://technorati.com/tag/"/>
      <dc:subject>XProc</dc:subject>
      <summary type="xhtml">
         <div xmlns="http://www.w3.org/1999/xhtml">
            <p>Taking another stab at the long-standing problem of producing DTD (and XSD) versions of the DocBook V5.0 family of schemas.</p>
         </div>
      </summary>
      <content type="xhtml" xml:base="http://norman.walsh.name/2010/03/18/rng2dtd">
         <div xmlns="http://www.w3.org/1999/xhtml">
            <div class="abstract">
               <p>Taking another stab at the long-standing problem of producing DTD (and XSD) versions of the DocBook V5.0 family of schemas.</p>
            </div>
            <p id="p1">In the course of preparing the DocBook V5.0 schemas, I devised a process that would convert the DocBook V5.0 RELAX NG grammar into an XML DTD (we get the XSD by running <a href="http://code.google.com/p/jing-trang/" shape="rect">Trang</a> over the DTD). Closer inspection quickly reveals two flaws in this process:</p>
            <div class="orderedlist">
               <ol style="list-style: decimal;">
                  <li>
                     <p id="p2">It's incredibly brittle; while it successfully converts the base DocBook schema, it's utterly useless on even a simple customization layer.</p>
                  </li>
                  <li>
                     <p id="p3">It produces utterly crap DTDs.</p>
                  </li>
               </ol>
            </div>
            <p id="p4">The former problem is the one that's really causing me pain, though I admit I'm a little embarrassed by the second.</p>
            <p id="p5">The <a href="http://www.oasis-open.org/committees/tc_home.php?wg_abbrev=docbook-publishers"
                  shape="rect">Publishers Subcommittee</a> identified an XML DTD as a requirement (Come <em>on</em> tool vendors! Get your act together. It's the twenty-first fscking century, already!). My hopes that someone else would fix the problem before I got to it went unfulfilled, so over the last few days I've turned my attention seriously to the problem. A few observations:</p>
            <div class="itemizedlist">
               <ul>
                  <li>
                     <p id="p6">The general problem may be insoluble. It may simply be that there's no algorithmic path from the simple and expressive constraints of RELAX NG to the much less expressive constraints of DTDs. Or maybe there are several paths, but the results will never look rational to a human observer. Or maybe the solution is out there, just waiting for some enterprising grad student to find it (nudge, nudge). I'm not sure. I decided that I didn't have time to look for <em>that</em> solution.</p>
                  </li>
                  <li>
                     <p id="p7">If the computer can't solve the whole problem, then we'll have to rely on human intervention to solve the hardest parts. In the DocBook family of schemas, the apparent hard parts are attribute co-constraints and multiple patterns for the same element name.</p>
                  </li>
                  <li>
                     <p id="p8">The solution in both cases is to replace the problematic patterns with a single pattern that is the union of the various options. This creates content models that are too broad: they accept all valid documents, but they also accept some invalid documents. The union of the CALS and HTML table models, for example, is a model in which a <tt class="tag-starttag">&lt;tbody&gt;</tt> element can contain a mixture of CALS <tt class="tag-starttag">&lt;row&gt;</tt> elements and HTML <tt class="tag-starttag">&lt;tr&gt;</tt> elements, among other atrocities. Such was it always with XML DTDs.</p>
                  </li>
                  <li>
                     <p id="p9">The constraints on mixed content in XML DTDs are a pain in the *ss. In a DTD, mixed content <em>must</em> be expressed as <tt class="code">(#PCDATA | a | b | c | …)*</tt>. The <tt class="code">#PCDATA</tt> token must come first, the alternatives must be at the top level (no nested parenthesis), and there must be no duplicates among the alternatives.</p>
                  </li>
                  <li>
                     <p id="p10">There are a few places where we allow extensions in “other namespaces.” The <tt class="tag-starttag">&lt;info&gt;</tt> elements can contain arbitrary additional metadata elements, for example, and equations can contain any MathML markup. DTDs and namespaces do not play well together. It might be possible to create a DTD that allowed MathML in the appropriate places, but that's more than the minimum needed to declare victory.</p>
                  </li>
                  <li>
                     <p id="p11">Patterns are a little bit like parameter entities. (Ok, a really, really little bit.) It would be nice, where possible, to represent the patterns as parameter entities in the resulting schema. At worst, it does no harm, at best it makes the DTD easier to read and may allow some small amount of customization of the DTD, not that I'd recommend that! And in any event, will solve at least a tiny part of the second problem mentioned above.</p>
                  </li>
               </ul>
            </div>
            <p id="p12">With these things in mind, I decided to adopt the following approach:</p>
            <div class="orderedlist">
               <ol style="list-style: decimal;">
                  <li>
                     <p id="p13">Create a “DTD” customization layer in RELAX NG that removes the most difficult problems: create unions for the attribute co-constraints, create unions for the elements that are defined by several patterns, remove the elements in “other namespaces” extension points, etc.</p>
                  </li>
                  <li>
                     <p id="p14">Create an “override” document for describing a few more operations. For example, removing the <tt class="code">db._phrase</tt> pattern and changing all the patterns that use it so that they use <tt class="code">db.phrase</tt> instead. (If there's an easy way to accomplish that in the RELAX NG customization layer, but it eluded me.)</p>
                  </li>
                  <li>
                     <p id="p15">Massage the modified schema until it's possible to create a DTD from it.</p>
                  </li>
               </ol>
            </div>
            <p id="p16">I'd like to say that there was some deep, theoretical insight in the last step, but there wasn't. I just built a pipeline of transformations that got me from A to B. I looked at the document, found something that wouldn't work in a DTD, wrote a transformation to remove it, and added that transformation to the pipeline. Repeat until done. When the result was accepted by an XML parser and accepted a small, valid DocBook document, I called it done.</p>
            <p id="p17">Here's a 10,000 foot summary of the process.</p>
            <div class="orderedlist">
               <ol style="list-style: decimal;">
                  <li>
                     <p id="p18">Starting with the “DTD” customization layer, perform some simplifications. Discard documentation, schematron rules, the start pattern, divisions, etc. Turn interleaves into choices; this is a little risky, but seems to be ok in the DocBook family of schemas. Extract the content of pattern definitions, producing a set of elements and a set of “parameter entities”. Drop schema facet constraints and not allowed content on the floor. Etc.</p>
                  </li>
                  <li>
                     <p id="p19">Apply the overrides, as described above.</p>
                  </li>
                  <li>
                     <p id="p20">Remove “choice” wrappers from around attributes. Fiddle with how “optional” is expressed. In RELAX NG, it's a wrapper, for the some steps in this process, it's more convenient to make it an attribute.</p>
                  </li>
                  <li>
                     <p id="p21">Remove parameter entities that are no longer referenced.</p>
                  </li>
                  <li>
                     <p id="p22">Fiddle with “optional” again, moving the optionality down to the references. (An optional reference to something is the same as a reference to an optional something.)</p>
                  </li>
                  <li>
                     <p id="p23">In subsequent steps, it's going to be convenient to be able to distinguish references to attributes from other references, so turn all <tt class="tag-starttag">&lt;ref&gt;</tt> elements that point exclusively to attributes into <tt class="tag-starttag">&lt;attref&gt;</tt> elements.</p>
                  </li>
                  <li>
                     <p id="p24">Flatten chains of references to attributes. (If A points to B points to C points to D which is an attribute, then just make A point to D.)</p>
                  </li>
                  <li>
                     <p id="p25">Fiddle with “optional” again. This time move the optionality up to the attribute declaration. This may require splitting a declaration.</p>
                  </li>
                  <li>
                     <p id="p26">Check for element names defined by more than one pattern. There better not be any.</p>
                  </li>
                  <li>
                     <p id="p27">Remove “empty” parameter entities and references to them.</p>
                  </li>
                  <li>
                     <p id="p28">Pull “text” up. Replace any reference to a parameter entity that contains <tt class="code">#PCDATA</tt> with a copy of what the parameter entity contains.</p>
                  </li>
                  <li>
                     <p id="p29">Unwrap nested “zero-or-more” elements.</p>
                  </li>
                  <li>
                     <p id="p30">Sort the parameter entities so that we never attempt to use one before it's been declared.</p>
                  </li>
                  <li>
                     <p id="p31">Convert the resulting document into a DTD. Turn parameter entities into <tt class="code">!ENTITY</tt> declarations, turn elements into <tt class="code">!ATTLIST</tt> and <tt class="code">!ELEMENT</tt> declarations, substitute DTD attribute types for the specified types, expand mixed content models, etc.</p>
                  </li>
               </ol>
            </div>
            <p id="p32">The most disappointing part of that last step is fully expanding the content model of every element that contains mixed content. I'd been working pretty hard all along to preserve as many pattern names as possible as parameter entities.</p>
            <p id="p33">The problem is that even though all the relevant parameter entities are simple lists of elements (so they could appear in a mixed content element declaration), sometimes the same element name appears in more than one pattern. So I punted, expanded them all, and removed duplicates. I still think it might be possible to do better.</p>
            <p id="p34">In retrospect, this isn't too surprising. If you go back to the DocBook V4.x DTDs and study the parameter entity structure [“masochist” -ed], you'll find a few places where we twisted the parameter entity structure pretty hard to avoid exactly this problem.</p>
            <p id="p35">In any event, the DTD that results from this process is an XML DTD that appears to validate DocBook documents. With different customization and overrides, the DTD version of the publishers schema also seems to work.</p>
            <p id="p36">I'll get it out in the next day or so for wider testing. It's very likely that there are places where it's not quite right. But it's definitely an improvement over the old process.</p>
            <div class="section">
               <h2 class="runin">Pipeline Notes </h2>
               <p class="runin" id="p37">
                  <a id="pipenotes" name="pipenotes" shape="rect"/>The process described above is not wholly unlike what I did before. One significant factor that made this attempt more successful was <a href="http://en.wikipedia.org/wiki/XML_pipeline"
                     title="Wikipedia: XML pipeline"
                     shape="rect">XProc</a>
                  <a href="/knows/what/xproc" shape="rect">
                     <img border="0" alt="[L]" src="/graphics/linkgroup.gif"/>
                  </a>. It's not impossible to chain together 14 transformations with a big XSLT 2.0 stylesheet and a bunch of modes, but it's <em>a
whole lot harder</em> to manage.</p>
               <p id="p38">Speaking of XProc, I cheated. The pipeline I'm using today will only work in XML Calabash because it relies on a compound extension step: <tt class="code">cx:until-unchanged</tt>. That step is a little bit like <tt class="code">p:for-each</tt> except that after each iteration it compares the input document to the result of applying the pipeline and repeats the process (using the output of one iteration as the input of the next) until the result is the same as the input.</p>
               <p id="p39">It's not impossible to do this without extending XProc, but it requires writing a different recursive pipeline for each looping step. It was more interesting (for me) to see how hard it would be to write a compound extension step. (So shoot me.)</p>
               <p id="p40">By the way, if you're curious, converting the base DocBook schema to a DTD is a 40 step pipeline (more or less):</p>
               <div class="screen">
                  <pre xml:space="preserve">
INFO: Running pipeline main
INFO: Running xslt rng2dtx
INFO: Running xslt override
INFO: Running cx:until-unchanged remove-choice
INFO: Running xslt attr-remove-choice
INFO: Running xslt attr-remove-choice
INFO: Running xslt attr-remove-choice
INFO: Running xslt attr-remove-choice
INFO: Running cx:until-unchanged remove-unused
INFO: Running xslt attr-remove-unused
INFO: Running xslt attr-remove-unused
INFO: Running xslt attr-remove-unused
INFO: Running xslt attr-optional-to-ref
INFO: Running cx:until-unchanged to-attref
INFO: Running xslt ref-to-attref
INFO: Running xslt ref-to-attref
INFO: Running cx:until-unchanged flatten
INFO: Running xslt flatten-attref
INFO: Running xslt flatten-attref
INFO: Running xslt flatten-attref
INFO: Running xslt attr-optional-to-decl
INFO: Running xslt multiple-gis
INFO: Running xslt remove-empty-pes
INFO: Running cx:until-unchanged pull-up
INFO: Running xslt pull-up-text
INFO: Running xslt pull-up-text
INFO: Running xslt pull-up-text
INFO: Running xslt pull-up-text
INFO: Running cx:until-unchanged unwrap
INFO: Running xslt unwrap-zeroormore
INFO: Running xslt unwrap-zeroormore
INFO: Running cx:until-unchanged sort
INFO: Running xslt sort-pe
INFO: Running xslt sort-pe
INFO: Running xslt sort-pe
INFO: Running xslt sort-pe
INFO: Running xslt sort-pe
INFO: Running xslt sort-pe
INFO: Running xslt sort-pe
INFO: Running xslt dtx2dtd
</pre>
               </div>
            </div>
            <div class="section">
               <h2 class="runin">What about a better W3C XML Schema? </h2>
               <p class="runin" id="p41">
                  <a id="xsd11" name="xsd11" shape="rect"/>The DTD that results from this conversion process is a little bit unsatisfying. It just not what a human being would do if they started from scratch. On the other hand, it doesn't matter much; there's no widespread use for DTDs beyond validation and perhaps guided authoring. (And you ought to be using RELAX NG for that, see previous comment about the twenty-first century.)</p>
               <p id="p42">The same is not true of W3C XML Schemas. There <em>would</em> (just possibly, maybe) be value in having a better XSD for DocBook. There are data binding tools and other applications that would fare much, much better with DocBook if they were given something that took proper advantage of XSD's native facilities.</p>
               <p id="p43">I've never had much interest in writing an XSD for DocBook. I'm not likely to ever be persuaded that “type inheritance” is a satisfying abstraction for how content models are related. I never felt that XSD 1.0 was a good foundation for the kind of “human prose” schemas of which DocBook is a typical example. But I'm almost convinced that XSD 1.1 has fixed some of the most inconvenient deficiencies.</p>
               <p id="p44">My bailing wire and duct tape solution for generating DTDs doesn't seem like it's ever going to be up to the task of doing the conversion properly. I'd be delighted if the aforementioned enterprising grad student built a tool to do the conversion automatically, but if not, I just might (someday) take a crack at hand authoring a proper XSD 1.1 schema for DocBook.</p>
            </div>
            <div id="newcomment"/>
            <div class="footer"/>
         </div>
      </content>
   </entry>
   <entry>
      <title>XProc Proposed Recommendation!</title>
      <link rel="alternate" type="text/html"
            href="http://norman.walsh.name/2010/03/10/XProcProposedRecommendation"/>
      <id>http://norman.walsh.name/2010/03/10/XProcProposedRecommendation</id>
      <published>2010-03-10T11:01:16Z</published>
      <updated>2010-08-30T19:52:29Z</updated>
      <category term="w3c" scheme="http://technorati.com/tag/"/>
      <dc:subject>W3C</dc:subject>
      <category term="xml" scheme="http://technorati.com/tag/"/>
      <dc:subject>XML</dc:subject>
      <category term="xproc" scheme="http://technorati.com/tag/"/>
      <dc:subject>XProc</dc:subject>
      <summary type="xhtml">
         <div xmlns="http://www.w3.org/1999/xhtml">
            <p>I'm pleased to report that <em class="citetitle">XProc: An XML Pipeline Language</em> is now a W3C Proposed Recommendation.</p>
         </div>
      </summary>
      <content type="xhtml"
               xml:base="http://norman.walsh.name/2010/03/10/XProcProposedRecommendation">
         <div xmlns="http://www.w3.org/1999/xhtml">
            <div class="abstract">
               <p>I'm pleased to report that <em class="citetitle">XProc: An XML Pipeline Language</em> is now a W3C Proposed Recommendation.</p>
            </div>
            <p id="p1">The <a href="http://www.w3.org/2005/10/Process-20051014/tr.html#cfr" shape="rect">Proposed Recommendation</a> draft of <em class="citetitle">
                  <a href="http://www.w3.org/TR/2010/PR-xproc-20100309/" shape="rect">XProc: An XML Pipeline Language</a>
               </em> was published yesterday!</p>
            <p id="p2">I'll save a more reflective post about the process and the result for after we've crossed the last hurdle. In the meantime, here are a few useless statistics. Between start and PR:</p>
            <div class="itemizedlist">
               <ul>
                  <li>
                     <p id="p3">We had 169 meetings over 4 years and 73 days, give or take a day or two.</p>
                  </li>
                  <li>
                     <p id="p4">We produced 12 drafts: seven working drafts, two last call working drafts, two candidate recommendations, and one proposed recommendation.</p>
                  </li>
                  <li>
                     <p id="p5">I stood on the podium in front of a conference audience and asserted that we'd be finished “within a year” on at least three separate occasions. Maybe four.</p>
                  </li>
                  <li>
                     <p id="p6">We had four face-to-face meetings. <span class="personname">
                           <span class="firstname">Murray</span>
                        </span> kicked us of <a href="http://norman.walsh.name/2006/08/17/xprocwg" title="XProc WG Meeting"
                           shape="rect">in style</a> at his place and we met at three W3C Technical Plenary meetings.</p>
                  </li>
                  <li>
                     <p id="p7">The community generated two complete, interoperable implementations and a number of additional, partial implementations.</p>
                  </li>
               </ul>
            </div>
            <p id="p8">And, most important, we developed an active (and growing, I think) <a href="http://en.wikipedia.org/wiki/XML_pipeline"
                  title="Wikipedia: XML pipeline"
                  shape="rect">XProc</a>
               <a href="/knows/what/xproc" shape="rect">
                  <img border="0" alt="[L]" src="/graphics/linkgroup.gif"/>
               </a> user community. On the whole, a success by any metric, I think.</p>
            <p id="p9">Once again, I'd like to extend my congratulations and heartfelt thanks to the <a href="http://www.w3.org/2004/01/pp-impl/38398/status" shape="rect">members of the Working Group</a>, reviewers, and implementors that have helped us come this far. We couldn't have done it without you.</p>
            <div id="newcomment"/>
            <div class="footer"/>
         </div>
      </content>
   </entry>
   <entry>
      <title>Wiki editing with XProc</title>
      <link rel="alternate" type="text/html"
            href="http://norman.walsh.name/2010/03/07/wikiEdit"/>
      <id>http://norman.walsh.name/2010/03/07/wikiEdit</id>
      <published>2010-03-07T21:25:44Z</published>
      <updated>2010-08-30T19:52:29Z</updated>
      <category term="calabash" scheme="http://technorati.com/tag/"/>
      <dc:subject>Calabash</dc:subject>
      <category term="www" scheme="http://technorati.com/tag/"/>
      <dc:subject>TheWeb</dc:subject>
      <category term="xproc" scheme="http://technorati.com/tag/"/>
      <dc:subject>XProc</dc:subject>
      <summary type="xhtml">
         <div xmlns="http://www.w3.org/1999/xhtml">
            <p>An example, for better or worse, of automating website interaction with XProc.</p>
         </div>
      </summary>
      <content type="xhtml" xml:base="http://norman.walsh.name/2010/03/07/wikiEdit">
         <div xmlns="http://www.w3.org/1999/xhtml">
            <div class="abstract">
               <p>An example, for better or worse, of automating website interaction with XProc.</p>
            </div>
            <p id="p1">What happened was, the DocBook wiki broke. I don't know how or why, but it fell over. The problem, whatever it is, left the wiki immutable and the underlying database in a state of questionable consistency.</p>
            <p id="p2">Clearly a problem that had to be fixed. I setup a new wiki, running <a href="http://moinmo.in/" shape="rect">MoinMoin</a> 1.9.2 instead of <em>1.3.4</em> [Upgrade much? -ed].</p>
            <p id="p3">In theory, there's an upgrade path from 1.3.4 to 1.9.2 but I'm sufficiently unsure about the state of the current database that I'm loathe to use it. The last thing I want to do is put the <em>new</em> wiki into some indeterminate state. Instead, I grabbed all the most recent pages from the old wiki, trimmed out a bunch of cruft, and cleaned up the markup a bit (the wiki markup seems to have changed over time).</p>
            <p id="p4">What I really wanted to do was add all these pages to the new wiki. Easy enough to do with a browser for one or two pages, but several hundred pages was way more than my patience would tolerate.</p>
            <p id="p5">A quick experiment with <a href="http://www.tuffcode.com/" shape="rect">HTTP Scoop</a> made it it look pretty easy:</p>
            <div class="itemizedlist">
               <ul>
                  <li>
                     <p id="p6">Logging in sets a cookie.</p>
                  </li>
                  <li>
                     <p id="p7">Loading a page that doesn't exist provides a link that you can follow to create the page.</p>
                  </li>
                  <li>
                     <p id="p8">Following that link returns an HTML page containing a form with a place to type the wiki markup and a bunch of hidden fields.</p>
                  </li>
                  <li>
                     <p id="p9">Posting that form back to the server updates the page.</p>
                  </li>
               </ul>
            </div>
            <p id="p10">If only I had a tool that could make HTTP requests and process the results…wait, wait, I <em>have</em> one of those!</p>
            <p id="p11">XProc ought to be up to this job, yes? Yes! In fact, it was reasonably straightfoward. Wanna see how it works? Of course you do. The following pipeline works in <a href="http://xmlcalabash.com/" shape="rect">XML Calabash</a> version 0.9.20 or later.</p>
            <p id="p12">I decided to pass the wiki markup as an input and the page name as an option. From the option, I construct the value of the URI for the page.</p>
            <div class="programlisting">
               <pre xml:space="preserve">
&lt;p:declare-step version='1.0' xmlns:p="http://www.w3.org/ns/xproc" name="main"
                xmlns:cx="http://xmlcalabash.com/ns/extensions"
                xmlns:c="http://www.w3.org/ns/xproc-step"
                xmlns:html="http://www.w3.org/1999/xhtml"&gt;
  &lt;p:input port="source"/&gt;
  &lt;p:output port="result"/&gt;
  &lt;p:option name="page" required="true"/&gt;

  &lt;p:variable name="pageuri" select="concat('http://wiki.example.com/',$page)"/&gt;
</pre>
            </div>
            <p id="p13">Next I have to login:</p>
            <div class="programlisting">
               <pre xml:space="preserve">
  &lt;p:www-form-urlencode match="/c:request/c:body/text()"&gt;
    &lt;p:input port="source"&gt;
      &lt;p:inline&gt;
        &lt;c:request method="POST"
                   href="http://wiki.example.com/DocBookWikiWelcome"&gt;
          &lt;c:body content-type="application/x-www-form-urlencoded"&gt;@@HERE@@&lt;/c:body&gt;
        &lt;/c:request&gt;
      &lt;/p:inline&gt;
    &lt;/p:input&gt;
    &lt;p:input port="parameters"&gt;
      &lt;p:inline&gt;
        &lt;c:param-set&gt;
          &lt;c:param name="action" value="login"/&gt;
          &lt;c:param name="name" value="NormanWalsh"/&gt;
          &lt;c:param name="password" value="MYPASSWORD"/&gt;
          &lt;c:param name="login" value="Login"/&gt;
        &lt;/c:param-set&gt;
      &lt;/p:inline&gt;
    &lt;/p:input&gt;
  &lt;/p:www-form-urlencode&gt;

  &lt;p:http-request cx:cookies="login" name="login"/&gt;

  &lt;p:sink/&gt;
</pre>
            </div>
            <p id="p14">I reverse engineered the way the login form works. I URL encode and pass my username, password, and other parameters to a <tt class="tag-starttag">&lt;p:http-request&gt;</tt> that POSTS them to the server.</p>
            <p id="p15">I don't care about the result, so I drop it on the floor with <tt class="tag-starttag">&lt;p:sink&gt;</tt>.</p>
            <p id="p16">I do care about cookies, so I have to store those somewhere. XML Calabash has an extension that lets you manage cookies in named sets. This <tt class="tag-starttag">&lt;p:http-request&gt;</tt> saves any cookies that come back in the “<tt class="literal">login</tt>” set.</p>
            <p id="p17">Next, we have to get the page we want to edit.</p>
            <div class="programlisting">
               <pre xml:space="preserve">
  &lt;p:string-replace match="/c:request/@href" cx:depends-on="login"&gt;
    &lt;p:input port="source"&gt;
      &lt;p:inline&gt;
        &lt;c:request method="GET" href="@@HERE@@"/&gt;
      &lt;/p:inline&gt;
    &lt;/p:input&gt;
    &lt;p:with-option name="replace" select="concat('&amp;quot;', $pageuri, '&amp;quot;')"/&gt;
  &lt;/p:string-replace&gt;

  &lt;p:http-request cx:cookies="login" name="getpage"/&gt;

  &lt;p:sink/&gt;
</pre>
            </div>
            <p id="p18">I use the “<tt class="literal">login</tt>” cookies so that the wiki knows who I am. I also use the <tt class="tag-attribute">cx:depends-on</tt> attribute to tell the processor that this step depends on the preceding login step, even though there's no dependency in the flow graph. Without this explicit statement about dependency, the processor might attempt to get the page before performing the login step.</p>
            <p id="p19">Once again, I don't care about the output so I drop it on the floor. In theory, I have to parse the output and find the “edit” link. In practice, I know how to create it without looking for it in the markup. I'm not even sure I have to do this step, but it is what a browser does and it was easy to do so I left it in.</p>
            <p id="p20">Now we want to get the page that includes the edit form:</p>
            <div class="programlisting">
               <pre xml:space="preserve">
  &lt;p:string-replace match="/c:request/@href" cx:depends-on="getpage"&gt;
    &lt;p:input port="source"&gt;
      &lt;p:inline&gt;
        &lt;c:request method="GET" detailed="false" href="@@HERE@@"/&gt;
      &lt;/p:inline&gt;
    &lt;/p:input&gt;
    &lt;p:with-option name="replace" select="concat('&amp;quot;', $pageuri, '?action=edit&amp;quot;')"/&gt;
  &lt;/p:string-replace&gt;

  &lt;p:http-request cx:cookies="login" name="getpageedit"/&gt;
</pre>
            </div>
            <p id="p21">Again, we use the login cookies. And this time we don't drop the output on the floor because we have to extract the hidden fields from the page in order for our subsequent POST to work.</p>
            <div class="programlisting">
               <pre xml:space="preserve">
  &lt;p:unescape-markup namespace="http://www.w3.org/1999/xhtml"
                     content-type="text/html" name="unescape"/&gt;

  &lt;p:for-each name="for-each"&gt;
    &lt;p:iteration-source select="//html:input[@type='hidden']"/&gt;
    &lt;p:output port="result"/&gt;

    &lt;p:string-replace match="c:param/@name"&gt;
      &lt;p:input port="source"&gt;
        &lt;p:inline&gt;&lt;c:param name="name" value="value"/&gt;&lt;/p:inline&gt;
      &lt;/p:input&gt;
      &lt;p:with-option name="replace" select="concat('&amp;quot;',/*/@name,'&amp;quot;')"/&gt;
    &lt;/p:string-replace&gt;

    &lt;p:string-replace match="c:param/@value"&gt;
      &lt;p:with-option name="replace" select="concat('&amp;quot;',/*/@value, '&amp;quot;')"&gt;
        &lt;p:pipe step="for-each" port="current"/&gt;
      &lt;/p:with-option&gt;
    &lt;/p:string-replace&gt;
  &lt;/p:for-each&gt;
</pre>
            </div>
            <p id="p22">To get the hidden fields, we unescape the markup. XML Calabash uses <a href="http://home.ccil.org/~cowan/XML/tagsoup/" shape="rect">TagSoup</a> for “<tt class="literal">text/html</tt>” pages, so we'll get well-formed XML.</p>
            <p id="p23">The <tt class="tag-starttag">&lt;p:for-each&gt;</tt> loop selects each of the hidden input fields and transforms them into <tt class="tag-starttag">&lt;c:param&gt;</tt> elements. We'll need those later.</p>
            <p id="p24">Next, we have to construct the <tt class="tag-starttag">&lt;c:param&gt;</tt> for the “<tt class="literal">savetext</tt>” parameter that contains our wiki markup. This one's a bit tricky.</p>
            <div class="programlisting">
               <pre xml:space="preserve">
  &lt;p:string-replace name="savetext" match="/c:param/@value"&gt;
    &lt;p:input port="source"&gt;
      &lt;p:inline&gt;
        &lt;c:param name="savetext" value="@@HERE@@"/&gt;
      &lt;/p:inline&gt;
    &lt;/p:input&gt;
    &lt;p:with-option name="replace" select='concat("&amp;apos;",replace(c:data,"&amp;apos;","&amp;apos;&amp;apos;"),"&amp;apos;")'&gt;
      &lt;p:pipe step="main" port="source"/&gt;
    &lt;/p:with-option&gt;
  &lt;/p:string-replace&gt;
</pre>
            </div>
            <p id="p25">What the hell, I hear you ask, is up with that “<tt class="literal">replace</tt>” value?</p>
            <p id="p26">Well, see, what's going to appear on the <tt class="literal">source</tt> input port of our pipeline is a <tt class="tag-starttag">&lt;c:data&gt;</tt> element that contains the wiki markup of the page. The <tt class="option">replace</tt> option <em>is interpolated</em> as an XPath expression, so we have to “quote” the value. This is a common idiom in <tt class="tag-starttag">&lt;p:string-replace&gt;</tt>
               <sup class="footnote">[<a name="p26.6" href="#ftn.p26.6" id="p26.6" shape="rect">1</a>]</sup>. Except, in
this case, <em>the value</em> may contain both double and single quotes, so we need to make sure that they don't result in an invalid XPath expression!</p>
            <p id="p28">Imagine that this is our <tt class="tag-starttag">&lt;c:data&gt;</tt> element:</p>
            <div class="programlisting">
               <pre xml:space="preserve">
&lt;c:data&gt;"Hello 'world'"&lt;/c:data&gt;
</pre>
            </div>
            <p id="p29">If we do the usual quoting trick, the resulting XPath expression will be:</p>
            <div class="programlisting">
               <pre xml:space="preserve">
'"Hello 'world'"'
</pre>
            </div>
            <p id="p30">and that's not a syntactically valid XPath string value. So we use <tt class="function">replace</tt> to double-up the apostrophes. That gives us</p>
            <div class="programlisting">
               <pre xml:space="preserve">
'"Hello ''world''"'
</pre>
            </div>
            <p id="p31">which is what we want. That took me a minute or two, believe you me.</p>
            <p id="p32">Next we wrap all our <tt class="tag-starttag">&lt;c:param&gt;</tt> elements in a <tt class="tag-starttag">&lt;c:param-set&gt;</tt>, construct a <tt class="tag-starttag">&lt;c:request&gt;</tt> to hold them, and use <tt class="tag-starttag">&lt;p:www-form-urlencode&gt;</tt> to encode them.</p>
            <div class="programlisting">
               <pre xml:space="preserve">
  &lt;p:wrap-sequence name="wrap" wrapper="c:param-set"&gt;
    &lt;p:input port="source"&gt;
      &lt;p:pipe step="for-each" port="result"/&gt;
      &lt;p:pipe step="savetext" port="result"/&gt;
    &lt;/p:input&gt;
  &lt;/p:wrap-sequence&gt;

  &lt;p:string-replace match="/c:request/@href" cx:depends-on="wrap"&gt;
    &lt;p:input port="source"&gt;
      &lt;p:inline&gt;
        &lt;c:request method="POST" detailed="true" href="@@HERE@@"&gt;
          &lt;c:body content-type="application/x-www-form-urlencoded"&gt;@@HERE@@&lt;/c:body&gt;
        &lt;/c:request&gt;
      &lt;/p:inline&gt;
    &lt;/p:input&gt;
    &lt;p:with-option name="replace" select="concat('&amp;quot;', $pageuri, '&amp;quot;')"/&gt;
  &lt;/p:string-replace&gt;

  &lt;p:www-form-urlencode match="/c:request/c:body/text()"&gt;
    &lt;p:input port="parameters"&gt;
      &lt;p:pipe step="wrap" port="result"/&gt;
    &lt;/p:input&gt;
  &lt;/p:www-form-urlencode&gt;
</pre>
            </div>
            <p id="p33">Send that off to the server and we're done!</p>
            <div class="programlisting">
               <pre xml:space="preserve">
  &lt;p:http-request cx:cookies="login"/&gt;

  &lt;p:delete match="/c:response/*"/&gt;

&lt;/p:declare-step&gt;
</pre>
            </div>
            <p id="p34">I display the result, after deleting its contents, just to make sure that I got a 200 back.</p>
            <p id="p35">That little XProc script got all the pages loaded in just a couple of minutes. FTW!</p>
            <p id="p36">If you're interested, the <a href="examples/wikiedit.xpl" shape="rect">whole script</a> is available.</p>
            <div class="footnotes">
               <hr width="100" align="left" class="footnotes-divider"/>
               <div class="footnote">
                  <p id="p27">
                     <sup>[<a href="#p26.6" name="ftn.p26.6" id="ftn.p26.6" shape="rect">1</a>]</sup>So common that I regret not providing some sort of syntactic shortcut for it. Oh, well, there's always version 1.1.</p>
               </div>
            </div>
            <div id="newcomment"/>
            <div class="footer"/>
         </div>
      </content>
   </entry>
   <entry>
      <title>Where am I?</title>
      <link rel="alternate" type="text/html"
            href="http://norman.walsh.name/2010/03/06/where"/>
      <id>http://norman.walsh.name/2010/03/06/where</id>
      <published>2010-03-06T21:57:48Z</published>
      <updated>2010-08-30T19:52:29Z</updated>
      <dc:subject>SelfReference</dc:subject>
      <summary type="xhtml">
         <div xmlns="http://www.w3.org/1999/xhtml">
            <p>Or, perhaps more to the point, where was I? And where will I be?</p>
         </div>
      </summary>
      <content type="xhtml" xml:base="http://norman.walsh.name/2010/03/06/where">
         <div xmlns="http://www.w3.org/1999/xhtml">
            <div class="abstract">
               <p>Or, perhaps more to the point, where was I? And where will I be?</p>
            </div>
            <p id="p1">I've long been fascinated by geospatial data. I do <a href="http://en.wikipedia.org/wiki/Geocaching" title="Wikipedia: Geocaching"
                  shape="rect">a little geocaching</a>
               <a href="/knows/what/Geocaching" shape="rect">
                  <img border="0" alt="[L]" src="/graphics/linkgroup.gif"/>
               </a>. I keep track of <a href="http://norman.walsh.name/2009/10/05/dominicanrepublic"
                  title="Dominican Republic"
                  shape="rect">the countries</a> I've been in. I use services like <a href="http://www.dopplr.com/" shape="rect">Dopplr</a> and <a href="http://www.tripit.com/" shape="rect">TripIt</a> to keep track of my itineraries. I carry a GPS to <a href="http://en.wikipedia.org/wiki/Geotagging" title="Wikipedia: Geotagging"
                  shape="rect">geotag photographs</a>.</p>
            <p id="p2">Carrying a mobile phone with a GPS allows me to explore the features of <a href="http://en.wikipedia.org/wiki/Geosocial_networking"
                  title="Wikipedia: Geosocial networking"
                  shape="rect">geosocial applications</a> like <a href="http://www.brightkite.com/" shape="rect">BrightKite</a>, <a href="http://www.gowalla.com/" shape="rect">Gowalla</a>, and <a href="http://www.foursquare.com/" shape="rect">Foursquare</a>. I allow Dopplr and Brightkite to update my <a href="http://fireeagle.yahoo.com/" shape="rect">Fireeagle</a> location.</p>
            <p id="p3">All very nice, but there were two obvious (to me) deficiencies in this arrangement. First, and most obvious, <em>my data</em> is spread all over <em>someone else's</em> servers. I consider this unacceptable. Any one of these services could get bought, go belly up, or <a href="http://www.wired.com/epicenter/2009/01/magnolia-suffer/" shape="rect">carelessly</a> (or <a href="http://help.yahoo.com/l/us/yahoo/geocities/close/close-03.html"
                  shape="rect">maliciously</a>, I suppose) discard all my data.</p>
            <p id="p4">The second point is less obvious: how do I tell when I'm home? I don't actually think any of you reading this would have a hard time working out where I live. I'm sure I've left enough digital clues for anyone sufficiently interested to work it out. That said, I can't actually convince myself that it's reasonable to “check in” to any of these geolocation services when I'm home. I'm not sure <a href="http://pleaserobme.com/" shape="rect">it's reasonable</a> to do when I'm not home, either, but I do. I think
I've set the services up so they only reveal my location to friends anyway.</p>
            <p id="p5">Not being able to solve the second of these problems made the data sufficiently unreliable (I've been checked into Staples for eleven days?) that the first problem hadn't crossed my “do something about it” threshold.</p>
            <p id="p6">All that changed a few days ago when <span class="personname">
                  <span class="firstname">Tom</span> 
                  <span class="surname">Morris</span>
               </span> happened to mention a clever solution in his Twitter stream. He later documented it in <a href="http://tommorris.org/blog/2010/02/22#When:19:34:55" shape="rect">a thoughtful post</a>. The basic idea is this: if you always carry your phone (or other device) on your person, then the presence of that device in your house means your home.</p>
            <p id="p7">A <a href="http://gist.github.com/311495" shape="rect">little hack</a> later and my server always knows when I'm home, give or take a few hours; it can only ping the device when it's on and not in “standby” so there's some latency. But not more than a few hours most days, I expect.</p>
            <p id="p8">Having solved the second problem, I turned my attention to the first. A few hours of hacking later and the TripIt, Foursquare, Gowalla, Brightkite, and Fireeagle APIs are giving me my data. The hardest part, honestly, was getting over the authentication hurdles. <a href="http://en.wikipedia.org/wiki/OAuth" title="Wikipedia: OAuth" shape="rect">OAuth</a> may be the right answer, but it's not painless to setup a new application.</p>
            <p id="p9">I started out by pouring all this data into <a href="http://www.marklogic.com/product/marklogic-server.html" shape="rect">MarkLogic Server</a>. (Well, I would, wouldn't I?). A little XQuery later and I had a normalized view of all my locations. Cool.</p>
            <p id="p10">But wait, I thought, what about all those GPS tracks? Yes, those belong in there as well! Easily done.</p>
            <p id="p11">The interesting thing about GPS tracks is that you can (sometimes) interpolate data between points. I do this already when I'm geotagging photographs. By adding “next point” to the normalized data when appropriate, I could expose that in my system as well.</p>
            <p id="p12">Once that idea was in place, it was clear that an airline flight or train ride (to a lesser extent) might be subject to interpolation as well. A quick tweak to the scripts that normalize TripIt itinerary data took care of that.</p>
            <p id="p13">At the end of the day, I have an interesting (to me) personal archive of my geolocation over time. It's derived from GPS tracks, explicit checkins, and itineraries. I'm also going to integrate the GPS data that comes from photographs taken with my mobile phone. All very cool to me.</p>
            <p id="p14">I've also got a web service that I can use for geotagging photographs. I can ask, for example, where was I this morning at 10:00a?</p>
            <div class="programlisting">
               <pre xml:space="preserve">
&lt;point lat="42.360633" long="-72.543451"
       timestamp="2010-03-06T14:51:53Z"
       duration="PT8M7S" seconds="487"&gt;Staples&lt;/point&gt;
</pre>
            </div>
            <p id="p15">Apparently, I was at Staples and had been for 8 minutes. No wonder I'm the mayor of Staples.</p>
            <p id="p16">If I ask where I was at 2006-07-15T13:28:00Z, the answer comes from a GPS track:</p>
            <div class="programlisting">
               <pre xml:space="preserve">
&lt;path start-lat="42.376713753" start-long="-72.516739368"
      end-lat="42.376821041" end-long="-72.516653538"
      timestamp="2006-07-15T18:27:58Z" end-timestamp="2006-07-15T18:28:03Z"
      total-distance="0.00842566695064306"
      total-duration="PT5S" total-seconds="5" velocity="6.06648020446301"
      duration="PT2S" seconds="2" distance="0.00337026678025723"
      lat="42.3768" long="-72.5167"/&gt;
</pre>
            </div>
            <p id="p17">That's a location interpolated over five seconds and about 44 feet. Seems pretty reasonable.</p>
            <p id="p18">Interpolating over airline flights is a little less precise:</p>
            <div class="programlisting">
               <pre xml:space="preserve">
&lt;path start-lat="42.363611" start-long="-71.006111"
      end-lat="18.3375" end-long="-64.969444"
      timestamp="2010-01-28T14:05:00Z" end-timestamp="2010-01-28T18:00:00Z"
      total-distance="1697.2841796875"
      total-duration="PT3H55M" total-seconds="14100" velocity="433.349152260638"
      duration="PT55M" seconds="3300" distance="397.236722905585"
      lat="36.7753" long="-69.2873"&gt;BOS&lt;/path&gt;
</pre>
            </div>
            <p id="p19">but it's still kind of cool. Also interesting is the fact that itinerary data lets me look forward. Where will I be at 2010-03-12T08:25:00Z?</p>
            <div class="programlisting">
               <pre xml:space="preserve">
&lt;point lat="50.1" long="14.266667"
       timestamp="2010-03-12T08:25:00Z"
       duration="P1DT1H55M" seconds="93300"&gt;PRG&lt;/point&gt;
</pre>
            </div>
            <p id="p20">Oh yes. I think I have <a href="http://www.xmlprague.cz/2010/sessions.html#Automating-Document-Assembly-in-DocBook"
                  shape="rect">an appointment</a> there. And it'll be more accurate after I've actually checked in, taken photographs, and used my GPS. Sweet.</p>
            <div id="newcomment"/>
            <div class="footer"/>
         </div>
      </content>
   </entry>
   <entry>
      <title>What your drive knows, and what it doesn't</title>
      <link rel="alternate" type="text/html"
            href="http://norman.walsh.name/2010/03/01/driveKnows"/>
      <id>http://norman.walsh.name/2010/03/01/driveKnows</id>
      <published>2010-03-01T20:39:11Z</published>
      <updated>2010-08-30T19:52:29Z</updated>
      <category term="laptop" scheme="http://technorati.com/tag/"/>
      <dc:subject>Laptop</dc:subject>
      <category term="osx" scheme="http://technorati.com/tag/"/>
      <dc:subject>OSX</dc:subject>
      <dc:subject>SelfReference</dc:subject>
      <summary type="xhtml">
         <div xmlns="http://www.w3.org/1999/xhtml">
            <p>I recently had occasion to swap hard drives between two essentially identical laptops. A surprising number of apps knew the difference.</p>
         </div>
      </summary>
      <content type="xhtml" xml:base="http://norman.walsh.name/2010/03/01/driveKnows">
         <div xmlns="http://www.w3.org/1999/xhtml">
            <div class="abstract">
               <p>I recently had occasion to swap hard drives between two essentially identical laptops. A surprising number of apps knew the difference.</p>
            </div>
            <p id="p1">I have two essentially identical laptops, loaded 17” MacBook Pro's. One is my personal machine and one belongs to <a href="http://www.marklogic.com/" shape="rect">Mark Logic</a>. I use my personal machine most of the time, but the fans have gotten insanely loud. I reported this as a warranty issue and got approval to take it in for service. (Yay!)</p>
            <p id="p2">Not wanting to be without my laptop for several days, I decided to be clever and swap hard drives. The <a href="http://eshop.macsales.com/installvideos/" shape="rect">install videos</a> at <a href="http://macsales.com/" shape="rect">Other World Computing</a> couldn't be more straightforward. (I had already bought the appropriate tools when I upgraded to a 500Gb drive.)</p>
            <p id="p3">Following the swap, I found a curious mixture of systems and applications that could tell.</p>
            <div class="itemizedlist">
               <ul>
                  <li>
                     <p id="p4">Not surprisingly, the iTunes authentication system could tell.</p>
                  </li>
                  <li>
                     <p id="p5">Also not surprising, Time Machine could tell. I suppose it's just possible that two folks could have absolutely identical but physically different hard drives. I really don't know how it could tell, though.</p>
                  </li>
                  <li>
                     <p id="p6">Some of the menu bar widgets were different. Apparently whatever makes the little flag icon is in flash memory somewhere and not configured from the hard drive?</p>
                  </li>
                  <li>
                     <p id="p7">The one that really surprised me was VMWare Fusion. It didn't like any of my virtual disks, it thought they were all “in use”. Stealing them back and telling VMWare I'd “moved” them was enough to recover, though, so no harm done.</p>
                  </li>
               </ul>
            </div>
            <p id="p8">My laptop is back and the drives have been switched again. I wish the problem had been fixed, but they claimed to be unable to reproduce it. (Boo!) I can tell you <em>right now</em> that it's still a problem.</p>
            <p id="p9">I should push harder to get the fans replaced, the intermittent high pitched whine is definitely a Bad Thing. Of course, the 17” MacBook Pro is due for a refresh any day now, right?</p>
            <div id="newcomment"/>
            <div class="footer"/>
         </div>
      </content>
   </entry>
   <entry>
      <title>Demo Jam at XML Prague!</title>
      <link rel="alternate" type="text/html"
            href="http://norman.walsh.name/2010/02/23/demojam"/>
      <id>http://norman.walsh.name/2010/02/23/demojam</id>
      <published>2010-02-23T20:13:39Z</published>
      <updated>2010-08-30T19:52:29Z</updated>
      <category term="marklogic" scheme="http://technorati.com/tag/"/>
      <dc:subject>MarkLogic</dc:subject>
      <category term="xml" scheme="http://technorati.com/tag/"/>
      <dc:subject>XML</dc:subject>
      <category term="xmlprague" scheme="http://technorati.com/tag/"/>
      <dc:subject>XMLPrague2010</dc:subject>
      <summary type="xhtml">
         <div xmlns="http://www.w3.org/1999/xhtml">
            <p>Demo Jam was a huge success at Balisage last year, so we're going to give it a go at XML Prague too!</p>
         </div>
      </summary>
      <content type="xhtml" xml:base="http://norman.walsh.name/2010/02/23/demojam">
         <div xmlns="http://www.w3.org/1999/xhtml">
            <div class="abstract">
               <p>Demo Jam was a huge success at Balisage last year, so we're going to give it a go at XML Prague too!</p>
            </div>
            <p id="p1">If you're coming to <a href="http://www.xmlprague.cz/" shape="rect">XML Prague</a>, please plan to come to demo jam!</p>
            <p id="p2">Here's the scoop: we provide the microphone and the projector. You provide the laptop and the demo. You get five minutes (that's 300 seconds, no more) to demo anything you want, as long as you can reasonably claim that there's some XML in there somewhere. We'd love to see some XQuery and maybe even <a href="http://www.marklogic.com/product/marklogic-server.html" shape="rect">MarkLogic Server</a> (you could use the <a href="http://developer.marklogic.com/about/whatiscis.xqy#editions" shape="rect">free Community
License</a>, for example), but that's not necessary.</p>
            <p id="p3">Judging is by audience participation: if you make the crowd cheer the loudest, you win. Winner walks away with a free pass to the <a href="http://www.marklogic.com/UserConference2010/" shape="rect">Mark Logic User Conference</a>, May 4-6 in San Francisco, CA, US. Everyone gets a T-shirt.</p>
            <p id="p4">Bring your demo and your posse to <a href="http://www.xmlprague.cz/2010/xmlprague-night.html" shape="rect">the social evening</a>; demo jam starts at 8:30p. See you there!</p>
            <div id="newcomment"/>
            <div class="footer"/>
         </div>
      </content>
   </entry>
   <entry>
      <title>XML FTW!</title>
      <link rel="alternate" type="text/html" href="http://norman.walsh.name/2010/01/25/xml"/>
      <id>http://norman.walsh.name/2010/01/25/xml</id>
      <published>2010-01-25T22:21:37Z</published>
      <updated>2010-08-30T19:52:29Z</updated>
      <dc:subject>Software</dc:subject>
      <category term="xml" scheme="http://technorati.com/tag/"/>
      <dc:subject>XML</dc:subject>
      <summary type="xhtml">
         <div xmlns="http://www.w3.org/1999/xhtml">
            <p>On the serendipitous joy of finding XML.</p>
         </div>
      </summary>
      <content type="xhtml" xml:base="http://norman.walsh.name/2010/01/25/xml">
         <div xmlns="http://www.w3.org/1999/xhtml">
            <div class="abstract">
               <p>On the serendipitous joy of finding XML.</p>
            </div>
            <p id="p1">As I've <a href="http://norman.walsh.name/2009/11/01/evernote#p7" shape="rect">said</a> 
               <a href="http://norman.walsh.name/2008/12/08/whichEndIsUp#p6" shape="rect">before</a>, I'm <em>very reluctant</em> to use your application if it's a roach motel for <em>my</em> data. It would not be fair to say that I'll <em>refuse</em> to use your application, it's just a lot less likely.</p>
            <p id="p2">For example, when it came to <a href="http://norman.walsh.name/2010/01/25/gsd" title="GSD!" shape="rect">GSD</a>, I decided that open access wasn't as important as picking an application that I'd actually use. If I let myself get distracted by exploring APIs, there'd be other things not getting done! (Priorities!)</p>
            <p id="p3">Having made my bed, I figured I should see what I was lying in. Today I took a peek at how <a href="http://en.wikipedia.org/wiki/OmniFocus" title="Wikipedia: OmniFocus"
                  shape="rect">OmniFocus</a> stores data. Now, the title of this essay no doubt gives away the punch line, so consider for a moment how this would have been done in the time before XML.</p>
            <p id="p4">
               <em>…go on, have a think, I'll wait…</em>
            </p>
            <p id="p5">In my experience it would probably have been in some proprietary format, almost certainly binary, and utterly opaque. How many tools document(ed) their proprietary data formats? On some platforms, there might have been system services for storing data, some sort of platform-supported database perhaps. Those systems are (often) only marginally better. They produce, instead of an opaque stream of bits, an opaque stream of atomic values. (Don't get me wrong, I've done the reverse-engineering thing
on binary formats, I'd prefer the stream of atomic values, believe you me.)</p>
            <p id="p6">What did I find when I went looking at the OmniFocus data? A directory full of ZIP files. And what's in each ZIP file? Why <tt class="filename">contents.xml</tt>, of course!</p>
            <p id="p7">Now, it would not be fair to assert that this is perfectly transparent. XML isn't magic. There are clearly some cross-reference relationships in there that will take a little mental gymnastics to decode. But still, I'll trade this:</p>
            <div class="programlisting">
               <pre xml:space="preserve">
...
&lt;task id="pJhk6REkEHC" op="update"&gt;
  &lt;task idref="ggQv63WgCbw"/&gt;
  &lt;added&gt;2010-01-21T16:23:08.983Z&lt;/added&gt;
  &lt;modified&gt;2010-01-24T21:01:41.632Z&lt;/modified&gt;
  &lt;name&gt;Add server-side support for multipart MIME to tests.xproc.org&lt;/name&gt;
  &lt;rank&gt;2113929216&lt;/rank&gt;
  &lt;context idref="jYnYAAVroBT"/&gt;
  &lt;due&gt;2010-01-27T22:00:00.000Z&lt;/due&gt;
  &lt;completed&gt;2010-01-24T21:01:41.622Z&lt;/completed&gt;
  &lt;order&gt;parallel&lt;/order&gt;
&lt;/task&gt;
...
</pre>
            </div>
            <p id="p8">for <em>anything</em> I would <em>ever have gotten</em> at <em>any other point</em> in the history of file formats!</p>
            <p id="p9">XML has its detractors. It would not be fair to say they are all wrong. But I'll take XML over fair any day!</p>
            <div id="newcomment"/>
            <div class="footer"/>
         </div>
      </content>
   </entry>
   <entry>
      <title>GSD!</title>
      <link rel="alternate" type="text/html" href="http://norman.walsh.name/2010/01/25/gsd"/>
      <id>http://norman.walsh.name/2010/01/25/gsd</id>
      <published>2010-01-25T15:13:26Z</published>
      <updated>2010-08-30T19:52:29Z</updated>
      <category term="osx" scheme="http://technorati.com/tag/"/>
      <dc:subject>OSX</dc:subject>
      <dc:subject>Software</dc:subject>
      <summary type="xhtml">
         <div xmlns="http://www.w3.org/1999/xhtml">
            <p>Our engineering department has a project management philosophy they describe as GSD. I aspire to GSD.</p>
         </div>
      </summary>
      <content type="xhtml" xml:base="http://norman.walsh.name/2010/01/25/gsd">
         <div xmlns="http://www.w3.org/1999/xhtml">
            <div class="abstract">
               <p>Our engineering department has a project management philosophy they describe as GSD. I aspire to GSD.</p>
            </div>
            <p id="p1">For me, the part of GSD<sup class="footnote">[<a name="p1.1" href="#ftn.p1.1" id="p1.1" shape="rect">1</a>]</sup> that I most often have difficulty with is keeping track of what needs doing. My todo (or want-todo) list is absurdly long. If I feel like castigating myself, I can always find a few things on my list that <em>should</em> have been done by now. It's not that I don't work hard or get a lot done, it's that I don't always prioritize perfectly and sometimes things slip through the cracks.</p>
            <p id="p3">I've been trying to get better at this. Having an online calendar sync'd with my phone keeps me from accidentally missing meetings and phone calls, so it seems to follow that some sort of online system should be able to help me with my todo list.</p>
            <p id="p4">My requirements are pretty simple: I want something that's easy to use and I want something that syncs with my mobile device. An online tool is almost, but not quite, as good as something that I can use offline on my PDA.</p>
            <p id="p5">I don't subscribe to any particular <a href="http://en.wikipedia.org/wiki/Getting%20Things%0ADone"
                  title="Wikipedia: Getting Things Done"
                  shape="rect">Getting Things Done</a> methodology. Maybe I'll get there someday, but that's not my immediate goal.</p>
            <p id="p6">I played with <a href="http://www.rememberthemilk.com/" shape="rect">Remember The Milk</a> on-and-off last year. It seemed to work pretty well for simple lists, but I wasn't using it consistently because, I think, it wasn't quite powerful enough.</p>
            <p id="p7">This month, I took a few different systems for a test drive: <a href="http://www.2doapp.com/en/2Do/overview.html" shape="rect">2Do</a>, <a href="http://www.toodledo.com/" shape="rect">Toodledo</a>, <a href="http://culturedcode.com/things/" shape="rect">Things</a>, and <a href="http://www.omnigroup.com/applications/omnifocus/" shape="rect">OmniFocus</a>.</p>
            <p id="p8">Unfortunately, 2Do is only an iPhone app. It appears that there are plans for the next version to support syncing with Toodledo, but that doesn't exist today. Toodledo is a web-based app and is quite nice, probably plenty sufficient for my needs. On the desktop front, both <a href="http://en.wikipedia.org/wiki/Things_%28application%29"
                  title="Wikipedia: Things (application)"
                  shape="rect">Things</a> and <a href="http://en.wikipedia.org/wiki/OmniFocus" title="Wikipedia: OmniFocus"
                  shape="rect">OmniFocus</a> are probably
plenty sufficient as well. (There are no doubt other similar applications, those are just the ones I happened to try. I didn't attempt an exhaustive survey, I've GStD!)</p>
            <p id="p9">And the winner is: OmniFocus, by a narrow margin. I like the project/context duality that OmniFocus uses (ToodleDo has contexts too, if you turn them on). Mostly it boiled down to the UI: I liked the “feel” of OmniFocus best.</p>
            <p id="p10">This is an app I plan to <em>force myself to use</em>, so I figured I'd best pick one that felt good. It's also the most expensive, by a pretty wide margin, but c'est la vie.</p>
            <p id="p11">Will this really work for me? Time will tell. But so far, so good. And I'm already learning to use it in ways I hadn't planned: maintaining shopping lists and travel check lists. Those aren't the sorts of things for which I would have actively sought out software (sometimes a pencil and a piece of paper really is enough), but it's encouraging to me that I have other reasons to be paying attention to my GSD tool.</p>
            <div class="footnotes">
               <hr width="100" align="left" class="footnotes-divider"/>
               <div class="footnote">
                  <p id="p2">
                     <sup>[<a href="#p1.1" name="ftn.p1.1" id="ftn.p1.1" shape="rect">1</a>]</sup>Getting Shi␈␈␈Stuff Done!</p>
               </div>
            </div>
            <div id="newcomment"/>
            <div class="footer"/>
         </div>
      </content>
   </entry>
   <entry>
      <title>XML Prague 2010</title>
      <link rel="alternate" type="text/html"
            href="http://norman.walsh.name/2010/01/24/xmlprague"/>
      <id>http://norman.walsh.name/2010/01/24/xmlprague</id>
      <published>2010-01-24T18:27:40Z</published>
      <updated>2010-08-30T19:52:29Z</updated>
      <category term="docbook" scheme="http://technorati.com/tag/"/>
      <dc:subject>DocBook</dc:subject>
      <category term="xmlprague" scheme="http://technorati.com/tag/"/>
      <dc:subject>XMLPrague2010</dc:subject>
      <category term="xproc" scheme="http://technorati.com/tag/"/>
      <dc:subject>XProc</dc:subject>
      <summary type="xhtml">
         <div xmlns="http://www.w3.org/1999/xhtml">
            <p>See you at XML Prague! And a chance to plug some really excellent training.</p>
         </div>
      </summary>
      <content type="xhtml" xml:base="http://norman.walsh.name/2010/01/24/xmlprague">
         <div xmlns="http://www.w3.org/1999/xhtml">
            <div class="abstract">
               <p>See you at XML Prague! And a chance to plug some really excellent training.</p>
            </div>
            <p id="p1">I'm delighted that my paper proposal for <a href="http://www.xmlprague.cz/2010/" shape="rect">XML Prague</a> was accepted. I'm a little less delighted that the final paper deadline was last week, but I guess that's encouragement to finish it, eh? (I will, I promise.)</p>
            <p id="p2">I'm going to speak about modular documentation in DocBook, both about the proposal for “assemblies” being developed in the <a href="http://www.oasis-open.org/committees/tc_home.php?wg_abbrev=docbook"
                  shape="rect">DocBook Technical Committee</a> and about my <a href="http://xproc.org/" shape="rect">XProc</a>-based implementation.</p>
            <p id="p3">I mention these things for only two reasons<sup class="footnote">[<a name="p3.1" href="#ftn.p3.1" id="p3.1" shape="rect">1</a>]</sup>: first, to recommend that <a href="http://www.xmlprague.cz/" shape="rect">XML Prague</a> is a conference you need to go to if you're interested in XML technologies. It's that good.</p>
            <p id="p5">Second, to plug <span class="personname">
                  <span class="firstname">G. Ken</span> 
                  <span class="surname">Holman</span>
               </span>’s <a href="http://www.cranesoftwrights.com/index.html#Crane201003CZ" shape="rect">XSLT/XPath 1.0 &amp; 2.0 and XQuery 1.0 Hands-on Training</a> class. If you're looking for someone to teach you XSLT and XQuery, you'd be hard pressed to do better than Ken. And if you're interested in XML, these are technologies you <em>need</em> to know. The maximum class size is an astonishing
<em>six</em>, so it's practically 1:1. Yet another reason to be in Prague in March</p>
            <p id="p6">See you there!</p>
            <div class="footnotes">
               <hr width="100" align="left" class="footnotes-divider"/>
               <div class="footnote">
                  <p id="p4">
                     <sup>[<a href="#p3.1" name="ftn.p3.1" id="ftn.p3.1" shape="rect">1</a>]</sup>In the interest of full disclosure, I should point out that <a href="http://www.marklogic.com/" shape="rect">Mark Logic</a> is a gold sponsor of the conference and Ken's course is being delivered in partnership with our own <a href="http://www.marklogic.com/services/training.html" shape="rect">training services</a>. I don't think that makes me baised, but I guess I wouldn't, would I?</p>
               </div>
            </div>
            <div id="newcomment"/>
            <div class="footer"/>
         </div>
      </content>
   </entry>
   <entry>
      <title>NYMUG: Cloud deployment options</title>
      <link rel="alternate" type="text/html"
            href="http://norman.walsh.name/2010/01/24/nymug"/>
      <id>http://norman.walsh.name/2010/01/24/nymug</id>
      <published>2010-01-24T18:16:47Z</published>
      <updated>2010-08-30T19:52:29Z</updated>
      <category term="marklogic" scheme="http://technorati.com/tag/"/>
      <dc:subject>MarkLogic</dc:subject>
      <summary type="xhtml">
         <div xmlns="http://www.w3.org/1999/xhtml">
            <p>Denise Miura, Sr. Director of Product Management will be speaking about Mark Logic's new offering for the Cloud at our upcoming User Group in New York this Wednesday.</p>
         </div>
      </summary>
      <content type="xhtml" xml:base="http://norman.walsh.name/2010/01/24/nymug">
         <div xmlns="http://www.w3.org/1999/xhtml">
            <div class="abstract">
               <p>Denise Miura, Sr. Director of Product Management will be speaking about Mark Logic's new offering for the Cloud at our upcoming User Group in New York this Wednesday.</p>
            </div>
            <p id="p1">The second Mark Logic New York User Group meeting will be held on Wednesday evening, 27 January 2010, hosted by <span class="personname">
                  <span class="firstname">Steve</span> 
                  <span class="surname">Kotrch</span>
               </span> from Simon &amp; Schuster!</p>
            <div class="variablelist">
               <dl>
                  <dt id="R.1.3.1.1">What</dt>
                  <dd>
                     <p id="p2">An opportunity to learn more about <a href="http://www.marklogic.com/product/marklogic-server.html" shape="rect">MarkLogic Server</a> and collaborate with other MarkLogic users.</p>
                  </dd>
                  <dt id="R.1.3.2.1">When</dt>
                  <dd>
                     <p id="p3">Wednesday, 27 January 2010, at 6:00pm EST.</p>
                  </dd>
                  <dt id="R.1.3.3.1">Where</dt>
                  <dd>
                     <p id="p4">
                        <a href="http://maps.google.com/maps?f=q&amp;source=s_q&amp;hl=en&amp;geocode=&amp;q=1230+Avenue+of+the+Americas,+New+York,+NY&amp;sll=37.0625,-95.677068&amp;sspn=54.005807,51.416016&amp;ie=UTF8&amp;hq=&amp;hnear=1230+Avenue+of+the+Americas,+New+York,+10020&amp;z=17"
                           shape="rect">1230 Avenue of the Americas</a>, New York, NY between 48th and 49th streets on Sixth Avenue.</p>
                  </dd>
                  <dt id="R.1.3.4.1">Who</dt>
                  <dd>
                     <p id="p5">Everyone who shows up, of course! The featured speaker this time is Denise Miura who will explain Mark Logic's new cloud deployment options and describe how they are being used today within the Mark Logic development community. She will demonstrate instantiating a MarkLogic AMI live on Amazon EC2 and talk about best practices for using MarkLogic on the EC2 platform. Finally a preview of the planned cloud-related product enhancements will be provided. This is a great opportunity to provide
feedback and influence the cloud computing initiative at Mark Logic.</p>
                  </dd>
                  <dt id="R.1.3.5.1">How</dt>
                  <dd>
                     <p id="p6">If you plan to attend, please join the <a href="http://developer.marklogic.com/mailman/listinfo/nymug" shape="rect">mailing list</a> and send your first and last name to cleo dot saab at marklogic dot com.</p>
                  </dd>
               </dl>
            </div>
            <p id="p8">If you're in New York, please stop by (and please let Cleo know if you plan to stop by).</p>
            <div id="newcomment"/>
            <div class="footer"/>
         </div>
      </content>
   </entry>
   <entry>
      <title>XProc: Back to Last Call</title>
      <link rel="alternate" type="text/html"
            href="http://norman.walsh.name/2009/12/28/xproc-lc"/>
      <id>http://norman.walsh.name/2009/12/28/xproc-lc</id>
      <published>2009-12-28T14:20:52Z</published>
      <updated>2009-12-28T15:24:41Z</updated>
      <category term="w3c" scheme="http://technorati.com/tag/"/>
      <dc:subject>W3C</dc:subject>
      <category term="xproc" scheme="http://technorati.com/tag/"/>
      <dc:subject>XProc</dc:subject>
      <summary type="xhtml">
         <div xmlns="http://www.w3.org/1999/xhtml">
            <p>Early in January, a new XProc draft will appear. It will be a Last Call Working Draft, a step backwards in the process, or maybe just a half-step. The reason is important though: versioning.</p>
         </div>
      </summary>
      <content type="xhtml" xml:base="http://norman.walsh.name/2009/12/28/xproc-lc">
         <div xmlns="http://www.w3.org/1999/xhtml">
            <div class="abstract">
               <p>Early in January, a new XProc draft will appear. It will be a Last Call Working Draft, a step backwards in the process, or maybe just a half-step. The reason is important though: versioning.</p>
            </div>
            <p id="p1">The <a href="http://www.w3.org/XML/Processing/" shape="rect">XProc WG</a> has been making steady progress on <a href="http://www.w3.org/TR/xproc/" shape="rect">XProc: An XML Pipeline Language</a>. We saw the start of wide adoption of <a href="http://en.wikipedia.org/wiki/XML_pipeline"
                  title="Wikipedia: XML pipeline"
                  shape="rect">XProc</a>
               <a href="/knows/what/xproc" shape="rect">
                  <img border="0" alt="[L]" src="/graphics/linkgroup.gif"/>
               </a> in 2009 and I think there's every reason to expect more of the same in 2010.</p>
            <p id="p2">This makes it all the more disappointing to report that we're going back to <a href="http://www.w3.org/2005/10/Process-20051014/tr#last-call" shape="rect">Last Call</a>. On a personal note, as a <a href="http://en.wikipedia.org/wiki/Technical_Architecture_Group"
                  title="Wikipedia: Technical Architecture Group"
                  shape="rect">TAG</a> alum, it's a bit embarrassing to admit why: versioning.</p>
            <p id="p3">We received significant and persuasive criticism of our <a href="http://www.w3.org/TR/2009/CR-xproc-20090528/#versioning-considerations"
                  shape="rect">versioning story</a>. In particular, we were pesuaded that requiring a processor to download the declarations for <em>V.next</em> steps in order to process them in a “forwards compatible” manner was too burdensome.</p>
            <p id="p4">In redrafting the story, we added a <tt class="tag-attribute">version</tt> attribute, “compile-time” <tt class="tag-attribute">use-when</tt> functionality <a href="http://www.w3.org/TR/xslt20/#conditional-inclusion" shape="rect">à la XSLT</a>, and extension functions for more precisely identifying the environment in which the pipeline is running.</p>
            <p id="p5">We also took the opportunity to fix decisions that were, in retrospect, mistakes, but not in-and-of themselves sufficient to motivate us to return to last call: we changed the rules for connections in option, parameter, and variable bindings so that an explicit <tt class="tag-starttag">&lt;p:empty&gt;</tt> isn't required when there's no default readable port, and we changed the rules for parameter input ports so that a binding isn't required when there's at least one explicit <tt class="tag-starttag">&lt;p:with-param&gt;</tt>. Users are already thanking us.</p>
            <p id="p6">I didn't get the document through the publication process before the end-of-year publishing moratorium, but you can read <a href="http://www.w3.org/XML/XProc/docs/WD-xproc-20091222/" shape="rect">the staged draft</a>, if you wish.</p>
            <p id="p7">Will this really be our last Last Call? I sincerely hope so! I also hope that we can move directly from Last Call to Proposed Recommendation without the formality of another Candidate Recommendation phase in between. There's precedent for doing this, and we've got active implementors.</p>
            <p id="p8">I'm sometimes frustrated by how long the process takes, but I console myself with the observation that the language is better for our efforts. Rising usage suggests the early adopters, at least, agree with us.</p>
            <div id="newcomment"/>
            <div class="footer"/>
         </div>
      </content>
   </entry>
   <entry>
      <title>David Alfred Walsh</title>
      <link rel="alternate" type="text/html" href="http://norman.walsh.name/2009/12/26/dad"/>
      <id>http://norman.walsh.name/2009/12/26/dad</id>
      <published>2009-12-26T20:38:58Z</published>
      <updated>2009-12-31T14:40:33Z</updated>
      <dc:subject>People</dc:subject>
      <summary type="xhtml">
         <div xmlns="http://www.w3.org/1999/xhtml">
            <p>9 June 1923 — 26 November 2009.</p>
         </div>
      </summary>
      <content type="xhtml" xml:base="http://norman.walsh.name/2009/12/26/dad">
         <div xmlns="http://www.w3.org/1999/xhtml">
            <div class="abstract">
               <p>9 June 1923 — 26 November 2009.</p>
            </div>
            <div class="epigraph">
               <p id="p2">A man may by custom fortify himself against pain, shame, and suchlike accidents; but as to death, we can experience it but once, and are all apprentices when we come to it.</p>
               <div class="attribution">
                  <span class="mdash">—</span>
                  <span class="personname">
                     <span class="surname">Montaigne</span>
                  </span>
               </div>
            </div>
            <p id="p1">My father was born in 1923 in Babylon, NY.</p>
            <div class="artwork">
               <div class="flickr-photo">
                  <div class="photo" style="width: 331px">
                     <a href="http://www.flickr.com/photos/ndw/4193489909/" shape="rect">
                        <img border="0" alt="[Photo]"
                             src="http://farm3.static.flickr.com/2556/4193489909_9968b98dc2.jpg"/>
                     </a>
                  </div>
                  <div class="link" style="left: 141px;">
                     <a href="http://www.flickr.com/" shape="rect">
                        <img border="0" alt="[Flickr]" src="/graphics/flickrt.png"/>
                     </a>
                  </div>
                  <h3>David Walsh, age 10</h3>
               </div>
            </div>
            <p id="p3">He survived the <a href="http://en.wikipedia.org/wiki/Great%20Depression"
                  title="Wikipedia: Great Depression"
                  shape="rect">Great Depression</a>. An enormous tree blew over next to him as he walked home through <a href="http://en.wikipedia.org/wiki/New_England_Hurricane_of_1938"
                  title="Wikipedia: New England Hurricane of 1938"
                  shape="rect">The Great Hurricane of 1938</a>; he walked away without a scratch. The <a href="http://en.wikipedia.org/wiki/Glider_infantry"
                  title="Wikipedia: Glider infantry"
                  shape="rect">glider born infantry</a>
took him to the <a href="http://en.wikipedia.org/wiki/China_Burma_India_Theater_of_World_War_II"
                  title="Wikipedia: China Burma India Theater of World War II"
                  shape="rect">China-Burma-India</a> theater in WWII.</p>
            <div class="artwork">
               <div class="flickr-photo">
                  <div class="photo" style="width: 315px">
                     <a href="http://www.flickr.com/photos/ndw/4193497853/" shape="rect">
                        <img border="0" alt="[Photo]"
                             src="http://farm3.static.flickr.com/2678/4193497853_475bc45843.jpg"/>
                     </a>
                  </div>
                  <div class="link" style="left: 133px;">
                     <a href="http://www.flickr.com/" shape="rect">
                        <img border="0" alt="[Flickr]" src="/graphics/flickrt.png"/>
                     </a>
                  </div>
                  <h3>Bombay c. 1945</h3>
                  <div class="description">
                     <p>Left to right: Charles Kuhn, York PA; Bill Bride, Beacon NY; Eddy Evans, Boston MA; David Walsh, Babylon, NY</p>
                  </div>
               </div>
            </div>
            <p id="p4">Shrapnel chipped a tooth, but he survived that too. After the war he went to Alaska.</p>
            <div class="artwork">
               <div class="flickr-photo">
                  <div class="photo" style="width: 500px">
                     <a href="http://www.flickr.com/photos/ndw/4193493117/" shape="rect">
                        <img border="0" alt="[Photo]"
                             src="http://farm3.static.flickr.com/2595/4193493117_a49982cafe.jpg"/>
                     </a>
                  </div>
                  <div class="link" style="left: 225px;">
                     <a href="http://www.flickr.com/" shape="rect">
                        <img border="0" alt="[Flickr]" src="/graphics/flickrt.png"/>
                     </a>
                  </div>
                  <h3>Browerville from the tundra, Mar 1960</h3>
               </div>
            </div>
            <p id="p5">My dad taught in <a href="http://maps.google.com/maps?f=q&amp;source=s_q&amp;hl=en&amp;geocode=&amp;q=barrow,+ak&amp;sll=64.501111,-165.406389&amp;sspn=32.580803,52.119141&amp;ie=UTF8&amp;hq=&amp;hnear=Barrow,+North+Slope,+Alaska&amp;ll=63.194018,-157.587891&amp;spn=34.054271,52.119141&amp;z=4"
                  shape="rect">Barrow</a> and <a href="http://maps.google.com/maps?f=q&amp;source=s_q&amp;hl=en&amp;geocode=&amp;q=nome,+ak&amp;sll=64.997939,-155.478516&amp;sspn=32.028433,52.119141&amp;ie=UTF8&amp;hq=&amp;hnear=Nome,+Alaska&amp;ll=64.501111,-165.406389&amp;spn=32.580803,52.119141&amp;z=4"
                  shape="rect">Nome</a>. After putting out a chimney fire, he walked away from a two story fall off a frozen roof by the lucky stroke of landing feet-first on an oil drum.</p>
            <div class="artwork">
               <div class="flickr-photo">
                  <div class="photo" style="width: 500px">
                     <a href="http://www.flickr.com/photos/ndw/4193491117/" shape="rect">
                        <img border="0" alt="[Photo]"
                             src="http://farm3.static.flickr.com/2671/4193491117_bf16b02b6b.jpg"/>
                     </a>
                  </div>
                  <div class="link" style="left: 225px;">
                     <a href="http://www.flickr.com/" shape="rect">
                        <img border="0" alt="[Flickr]" src="/graphics/flickrt.png"/>
                     </a>
                  </div>
                  <h3>Camping in Alaska, c. 1960</h3>
               </div>
            </div>
            <p id="p6">He single-handedly built a one-room cabin on a ¼ acre plot in Fairbanks. (I think I remember seeing once a photo showing the scaffolding he built to get the roof beam in place.) He worked for the <a href="http://en.wikipedia.org/wiki/United_States_Fish_and_Wildlife_Service"
                  title="Wikipedia: United States Fish and Wildlife Service"
                  shape="rect">Fish and Wildlife Service</a> in the summers.</p>
            <p id="p7">He used to practice orienteering by walking into the Alaskan wilderness on a compass bearing and then walking back out again. On one occasion he stumbled across a downed single-engine plane containing the skeleton of its pilot. His boss laughed when my dad offered to lead a team back to the crash, assuring him that he'd never find it again. Dad's boss was right. There is <em>a lot</em> of wilderness out there.</p>
            <p id="p8">On another occasion, my dad shot a caribou only to discover as he prepared to dress it that he'd left his knife back in the jeep. Leaning his rifle against a tree, he walked back and got his knife. An enormous brown bear greeted his return by standing on its hind legs and roaring. The bear got the caribou. And the rifle. And the knife, dropped during a hasty retreat.</p>
            <p id="p9">That wasn't the only caribou that nearly got him killed; on another occasion, one attempted, unsuccessfully, to jump over his jeep. He woke on the side of the road with a caribou hoof protruding into the cab and a nasty gash on his head.</p>
            <p id="p10">I'm lucky to be here.</p>
            <div class="artwork">
               <div class="flickr-photo">
                  <div class="photo" style="width: 333px">
                     <a href="http://www.flickr.com/photos/ndw/4194262042/" shape="rect">
                        <img border="0" alt="[Photo]"
                             src="http://farm3.static.flickr.com/2743/4194262042_47c8e66da1.jpg"/>
                     </a>
                  </div>
                  <div class="link" style="left: 142px;">
                     <a href="http://www.flickr.com/" shape="rect">
                        <img border="0" alt="[Flickr]" src="/graphics/flickrt.png"/>
                     </a>
                  </div>
                  <h3>Sleeping, June 1970</h3>
               </div>
            </div>
            <p id="p11">When my dad left Alaska, he gave the keys to his cabin to a friend. Those keys passed from friend to friend for more than twenty years. In the eighties, the current occupant persuaded my dad to let him buy the cabin. My father signed the deed and mailed it, asking the occupant to please mail the check back. The check came back a couple of weeks later. And it cleared. Luck of the Irish, or something.</p>
            <p id="p12">From Alaska, my dad traveled to Australia. My mom and dad met in Tasmania. They married in 1961.</p>
            <div class="artwork">
               <div class="flickr-photo">
                  <div class="photo" style="width: 357px">
                     <a href="http://www.flickr.com/photos/ndw/4194255572/" shape="rect">
                        <img border="0" alt="[Photo]"
                             src="http://farm3.static.flickr.com/2678/4194255572_933c2385e9.jpg"/>
                     </a>
                  </div>
                  <div class="link" style="left: 154px;">
                     <a href="http://www.flickr.com/" shape="rect">
                        <img border="0" alt="[Flickr]" src="/graphics/flickrt.png"/>
                     </a>
                  </div>
                  <h3>Mom and dad, August 1961</h3>
               </div>
            </div>
            <p id="p13">I came along a few years later.</p>
            <div class="artwork">
               <div class="flickr-photo">
                  <div class="photo" style="width: 500px">
                     <a href="http://www.flickr.com/photos/ndw/4193489085/" shape="rect">
                        <img border="0" alt="[Photo]"
                             src="http://farm3.static.flickr.com/2739/4193489085_feb699e381.jpg"/>
                     </a>
                  </div>
                  <div class="link" style="left: 225px;">
                     <a href="http://www.flickr.com/" shape="rect">
                        <img border="0" alt="[Flickr]" src="/graphics/flickrt.png"/>
                     </a>
                  </div>
                  <h3>Mom, dad, and I</h3>
                  <div class="description">
                     <p>June 1968</p>
                  </div>
               </div>
            </div>
            <p id="p14">I remember my dad singing sea shanties when I was a small boy.</p>
            <div class="artwork">
               <div class="flickr-photo">
                  <div class="photo" style="width: 500px">
                     <a href="http://www.flickr.com/photos/ndw/4194245458/" shape="rect">
                        <img border="0" alt="[Photo]"
                             src="http://farm5.static.flickr.com/4046/4194245458_5db392377f.jpg"/>
                     </a>
                  </div>
                  <div class="link" style="left: 225px;">
                     <a href="http://www.flickr.com/" shape="rect">
                        <img border="0" alt="[Flickr]" src="/graphics/flickrt.png"/>
                     </a>
                  </div>
                  <h3>Playing guitar</h3>
                  <div class="description">
                     <p>Time and place unknown</p>
                  </div>
               </div>
            </div>
            <p id="p15">Dad was a naturalist, hunter, trapper, fisherman, scientist, teacher, draftsman, and surveyor. He made beautiful wood carvings. He tied knots. At one time or another, <a href="http://en.wikipedia.org/wiki/List_of_knots"
                  title="Wikipedia: List of knots"
                  shape="rect">all of them</a>. I have his leather working tools. The old sewing machine on which he made sleeping bags, tents, parkas, rain slickers, and bicycle paniers got lost somewhere along the way. He built two boats.</p>
            <div class="artwork">
               <div class="flickr-photo">
                  <div class="photo" style="width: 335px">
                     <a href="http://www.flickr.com/photos/ndw/4194244816/" shape="rect">
                        <img border="0" alt="[Photo]"
                             src="http://farm3.static.flickr.com/2517/4194244816_68b9aa6e45.jpg"/>
                     </a>
                  </div>
                  <div class="link" style="left: 128px;">
                     <a href="http://www.flickr.com/" shape="rect">
                        <img border="0" alt="[Flickr]" src="/graphics/flickrt.png"/>
                     </a> 
                     <a href="http://maps.google.com/maps?ll=52.8406583333333,1.25690833333333&amp;z=16&amp;t=k"
                        shape="rect">
                        <img border="0" alt="[Google maps]" src="/graphics/map.png"/>
                     </a>
                  </div>
                  <h3>David Walsh, Sep 2009</h3>
               </div>
            </div>
            <p id="p16">After 86 years, entropy won. Entropy always wins. My dad taught me that. And the first and third <a href="http://en.wikipedia.org/wiki/Laws_of_thermodynamics"
                  title="Wikipedia: Laws of thermodynamics"
                  shape="rect">laws</a> as well.</p>
            <p id="p17">My father died in 2009 in Norwich, England.</p>
            <div class="artwork">
               <div class="flickr-photo">
                  <div class="photo" style="width: 500px">
                     <a href="http://www.flickr.com/photos/ndw/4155535952/" shape="rect">
                        <img border="0" alt="[Photo]"
                             src="http://farm3.static.flickr.com/2766/4155535952_b95b328e86.jpg"/>
                     </a>
                  </div>
                  <div class="link" style="left: 225px;">
                     <a href="http://www.flickr.com/" shape="rect">
                        <img border="0" alt="[Flickr]" src="/graphics/flickrt.png"/>
                     </a>
                  </div>
                  <h3>'tis himself</h3>
                  <div class="description">
                     <p>David Alfred Walsh 9 June 1923 - 26 November 2009</p>
                  </div>
               </div>
            </div>
            <p id="p18">Goodbye, dad.</p>
            <div id="newcomment"/>
            <div class="footer"/>
         </div>
      </content>
   </entry>
</feed>