<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xmlns:planet="http://planet.intertwingly.net/" xmlns:indexing="urn:atom-extension:indexing" indexing:index="no"><access:restriction xmlns:access="http://www.bloglines.com/about/specs/fac-1.0" relationship="deny"/>
  <title>Planet Perrygeo</title>
  <updated>2010-03-10T22:12:08Z</updated>
  <generator uri="http://intertwingly.net/code/venus/">Venus</generator>
  <author>
    <name>Matthew Perry</name>
    <email>perrygeo@gmail.com</email>
  </author>
  <id>http://perrygeo.net/planet/atom.xml</id>
  <link href="http://perrygeo.net/planet/atom.xml" rel="self" type="application/atom+xml"/>
  <link href="http://perrygeo.net/planet/" rel="alternate"/>

  <entry>
    <id>tag:blogger.com,1999:blog-14903426.post-2697785041481715132</id>
    <link href="http://blog.cleverelephant.ca/feeds/2697785041481715132/comments/default" rel="replies" type="application/atom+xml"/>
    <link href="https://www.blogger.com/comment.g?blogID=14903426&amp;postID=2697785041481715132" rel="replies" type="text/html"/>
    <link href="http://www.blogger.com/feeds/14903426/posts/default/2697785041481715132" rel="edit" type="application/atom+xml"/>
    <link href="http://www.blogger.com/feeds/14903426/posts/default/2697785041481715132" rel="self" type="application/atom+xml"/>
    <link href="http://blog.cleverelephant.ca/2010/03/where-20-drinking-game.html" rel="alternate" type="text/html"/>
    <title>Where 2.0 Drinking Game</title>
    <content type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml">It's that time of year again, and I'll be sitting in the audience with my flask (I hope you will too!) playing the Where 2.0 drinking game. Here's some of my phrases, what are yours?<ul><li>... find a Starbucks...</li><li>... we're releasing an API ...</li><li>... friends list ...</li></ul>Also, take a big slug if someone talks about working with geospatial data more complex than a lat/lon point!<br/> <div class="blogger-post-footer"><img alt="" height="1" src="https://blogger.googleusercontent.com/tracker/14903426-2697785041481715132?l=blog.cleverelephant.ca" width="1"/></div></div>
    </content>
    <updated>2010-03-10T18:59:17Z</updated>
    <published>2010-03-10T18:56:00Z</published>
    <author>
      <name>Paul Ramsey</name>
      <email>noreply@blogger.com</email>
      <uri>http://www.blogger.com/profile/04056244920940087995</uri>
    </author>
    <source>
      <id>tag:blogger.com,1999:blog-14903426</id>
      <author>
        <name>Paul Ramsey</name>
        <email>noreply@blogger.com</email>
        <uri>http://www.blogger.com/profile/04056244920940087995</uri>
      </author>
      <link href="http://blog.cleverelephant.ca/feeds/posts/default" rel="http://schemas.google.com/g/2005#feed" type="application/atom+xml"/>
      <link href="http://www.blogger.com/feeds/14903426/posts/default" rel="self" type="application/atom+xml"/>
      <link href="http://blog.cleverelephant.ca/" rel="alternate" type="text/html"/>
      <link href="http://pubsubhubbub.appspot.com/" rel="hub" type="text/html"/>
      <link href="http://www.blogger.com/feeds/14903426/posts/default?start-index=26&amp;max-results=25" rel="next" type="application/atom+xml"/>
      <subtitle>Open source geospatial opinions and techniques, seen from the trenches and from far far above...</subtitle>
      <title>Paul Ramsey</title>
      <updated>2010-03-10T20:35:59Z</updated>
    </source>
  </entry>

  <entry>
    <id>tag:blogger.com,1999:blog-14903426.post-982957366565511863</id>
    <link href="http://blog.cleverelephant.ca/feeds/982957366565511863/comments/default" rel="replies" type="application/atom+xml"/>
    <link href="https://www.blogger.com/comment.g?blogID=14903426&amp;postID=982957366565511863" rel="replies" type="text/html"/>
    <link href="http://www.blogger.com/feeds/14903426/posts/default/982957366565511863" rel="edit" type="application/atom+xml"/>
    <link href="http://www.blogger.com/feeds/14903426/posts/default/982957366565511863" rel="self" type="application/atom+xml"/>
    <link href="http://blog.cleverelephant.ca/2010/03/send-us-jeremy-and-keyur.html" rel="alternate" type="text/html"/>
    <title>Send us Jeremy and Keyur!</title>
    <content type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml">ESRI (pretty new web page, by the way) has put their <a href="http://www.esri.com/technology-topics/open-source/index.html">open source position</a> on-line and also produced a short podcast with Victoria Kouyoumjian on the same topic.<br/><br/><a href="http://www.esri.com/news/podcasts/audio/speaker/staff_kouyoumjian.mp3">http://www.esri.com/news/podcasts/audio/speaker/staff_kouyoumjian.mp3</a><br/><br/>One thing that struck me in the podcast was when Victoria noted that ESRI has sponsored open source events in the past (most notably <a href="http://2007.foss4g.org/">FOSS4G 2007</a> directly, but also 2008 and 2009 to a lesser extent through <a href="http://52north.org/">50°North</a>). She says, <blockquote>These events allow us the opportunity to engage in conversations and dialogs with various technologists because we want to gain feedback about the needs of open source developers and users.  The objective of course is to channel this information back to development so we can reflect this in future products and business decisions in order to best support our customers.<br/></blockquote>So far ESRI attendance has been at the managerial level, and while I love those guys (hugs to Satish and Victoria!) some real sparks could fly and serious interoperability improvements be made if we started seeing the developers, the project leads and software designers, at the events. We can do better than "channeling" information back to development, let's immerse development in it!<br/><br/><b>Update:</b> We promise to send them back. Really.<br/> <div class="blogger-post-footer"><img alt="" height="1" src="https://blogger.googleusercontent.com/tracker/14903426-982957366565511863?l=blog.cleverelephant.ca" width="1"/></div></div>
    </content>
    <updated>2010-03-05T17:03:20Z</updated>
    <published>2010-03-05T16:42:00Z</published>
    <author>
      <name>Paul Ramsey</name>
      <email>noreply@blogger.com</email>
      <uri>http://www.blogger.com/profile/04056244920940087995</uri>
    </author>
    <source>
      <id>tag:blogger.com,1999:blog-14903426</id>
      <author>
        <name>Paul Ramsey</name>
        <email>noreply@blogger.com</email>
        <uri>http://www.blogger.com/profile/04056244920940087995</uri>
      </author>
      <link href="http://blog.cleverelephant.ca/feeds/posts/default" rel="http://schemas.google.com/g/2005#feed" type="application/atom+xml"/>
      <link href="http://www.blogger.com/feeds/14903426/posts/default" rel="self" type="application/atom+xml"/>
      <link href="http://blog.cleverelephant.ca/" rel="alternate" type="text/html"/>
      <link href="http://pubsubhubbub.appspot.com/" rel="hub" type="text/html"/>
      <link href="http://www.blogger.com/feeds/14903426/posts/default?start-index=26&amp;max-results=25" rel="next" type="application/atom+xml"/>
      <subtitle>Open source geospatial opinions and techniques, seen from the trenches and from far far above...</subtitle>
      <title>Paul Ramsey</title>
      <updated>2010-03-10T20:35:59Z</updated>
    </source>
  </entry>

  <entry>
    <id>tag:blogger.com,1999:blog-14903426.post-1991992435132133204</id>
    <link href="http://blog.cleverelephant.ca/feeds/1991992435132133204/comments/default" rel="replies" type="application/atom+xml"/>
    <link href="https://www.blogger.com/comment.g?blogID=14903426&amp;postID=1991992435132133204" rel="replies" type="text/html"/>
    <link href="http://www.blogger.com/feeds/14903426/posts/default/1991992435132133204" rel="edit" type="application/atom+xml"/>
    <link href="http://www.blogger.com/feeds/14903426/posts/default/1991992435132133204" rel="self" type="application/atom+xml"/>
    <link href="http://blog.cleverelephant.ca/2010/02/nyc-sprint-day-3.html" rel="alternate" type="text/html"/>
    <title>NYC Sprint: Day 3</title>
    <content type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml">Third day, best day. There are four MapServer developers now working hard on implementing the <a href="http://trac.osgeo.org/mapserver/wiki/RenderingPluginStatus">rendering plugin</a> changes. Thomas Bonfort is doing the core work, Steve Lime is re-working the old GD renderer, Dan Morissette is creating support for hatched styles, and Assefa is doing KML output.<br/><br/>In Geoserver land, Andrea Aime added support for <a href="http://old.nabble.com/Variable-substitution-in-SLD-ts27689445.html">variable substitution in SLD</a>, which means that URL parameters can now be passed into SLD styling rules, to create dynamic styling effects. Tim Schaub and Justin Deoliveira also demonstrated an application that warms the cockles of my heart:  using their new GeoScript extension they made a web-based application that takes in SQL and spits out maps. So now I can type PostGIS queries into a web page and see the results overlaid on a map. Crunchy!<br/><br/><div style="text-align: center;"> <a href="http://www.flickr.com/photos/92995391@N00/4380402910/" title="Geoserver / OpenLayers Crew by pwramsey3, on Flickr"><img alt="Geoserver / OpenLayers Crew" height="240" src="http://farm3.static.flickr.com/2804/4380402910_b0f07b624b_m.jpg" width="180"/></a>  <a href="http://www.flickr.com/photos/92995391@N00/4380402882/" title="Steve Lime Contemplates by pwramsey3, on Flickr"><img alt="Steve Lime Contemplates" height="240" src="http://farm5.static.flickr.com/4040/4380402882_98d77fef52_m.jpg" width="180"/></a></div><br/><br/>Howard Butler has contributed some work on the auto-projection support in MapServer and is now working on LibLAS Oracle support. He also tracked down an excellent pastrami sandwich. So I am told.<br/><br/>In PostGIS world, Jeff Adams finished his lat/lon formatter and logged his first commit: an impressive complete collection of unit tests, documentation and a working function (ST_AsLatLonText) that can turn POINT(-120.5 12.25) into 12°15'0"N 120°30'0"W. Oliver continues to fix up the text output functions. And I completed my first cut of the WKT output. Curve support really adds a lot of overhead to these things! There are lots of variants and curves have more and sillier formatting rules than linear features. David Zwarg has continued beavering through tickets in the WKTRaster subsystem.<br/><br/>Thanks again to our sponsors, tonight we are heading out to dinner at a Malaysian restaurant in Chinatown.<br/><br/><div style="vertical-align: center; text-align: center;"><a href="http://www.azavea.com/"><img alt="Azavea" border="0" src="http://farm5.static.flickr.com/4023/4398161023_8b37ecdd58_o.png"/></a>  <a href="http://www.lizardtech.com/"><img alt="LizardTech" border="0" src="http://farm5.static.flickr.com/4037/4363909195_a73ab7d789_o.jpg"/></a> <a href="http://www.coordinatesolutions.com/"><img alt="Coordinate Solutions" border="0" src="http://farm5.static.flickr.com/4003/4364650774_9561cfe97a_o.jpg"/></a> <br/><a href="http://opengeo.org/"><img alt="OpenGeo" border="0" src="http://farm5.static.flickr.com/4072/4364650828_9b0562e902_o.jpg"/></a> <a href="http://www.qpublic.net/"><img alt="qPublic.net" border="0" src="http://farm5.static.flickr.com/4012/4363909295_d1e4391317_o.jpg"/></a> <a href="http://www.fargeo.com/"><img alt="Farallon" border="0" src="http://farm3.static.flickr.com/2690/4364650934_2305ed4739_o.jpg"/></a> </div><div class="blogger-post-footer"><img alt="" height="1" src="https://blogger.googleusercontent.com/tracker/14903426-1991992435132133204?l=blog.cleverelephant.ca" width="1"/></div></div>
    </content>
    <updated>2010-03-02T03:14:15Z</updated>
    <published>2010-02-22T22:00:00Z</published>
    <category scheme="http://www.blogger.com/atom/ns#" term="osgeo"/>
    <category scheme="http://www.blogger.com/atom/ns#" term="sprint"/>
    <author>
      <name>Paul Ramsey</name>
      <email>noreply@blogger.com</email>
      <uri>http://www.blogger.com/profile/04056244920940087995</uri>
    </author>
    <source>
      <id>tag:blogger.com,1999:blog-14903426</id>
      <author>
        <name>Paul Ramsey</name>
        <email>noreply@blogger.com</email>
        <uri>http://www.blogger.com/profile/04056244920940087995</uri>
      </author>
      <link href="http://blog.cleverelephant.ca/feeds/posts/default" rel="http://schemas.google.com/g/2005#feed" type="application/atom+xml"/>
      <link href="http://www.blogger.com/feeds/14903426/posts/default" rel="self" type="application/atom+xml"/>
      <link href="http://blog.cleverelephant.ca/" rel="alternate" type="text/html"/>
      <link href="http://pubsubhubbub.appspot.com/" rel="hub" type="text/html"/>
      <link href="http://www.blogger.com/feeds/14903426/posts/default?start-index=26&amp;max-results=25" rel="next" type="application/atom+xml"/>
      <subtitle>Open source geospatial opinions and techniques, seen from the trenches and from far far above...</subtitle>
      <title>Paul Ramsey</title>
      <updated>2010-03-10T20:35:59Z</updated>
    </source>
  </entry>

  <entry>
    <id>tag:blogger.com,1999:blog-14903426.post-3893762606281830656</id>
    <link href="http://blog.cleverelephant.ca/feeds/3893762606281830656/comments/default" rel="replies" type="application/atom+xml"/>
    <link href="https://www.blogger.com/comment.g?blogID=14903426&amp;postID=3893762606281830656" rel="replies" type="text/html"/>
    <link href="http://www.blogger.com/feeds/14903426/posts/default/3893762606281830656" rel="edit" type="application/atom+xml"/>
    <link href="http://www.blogger.com/feeds/14903426/posts/default/3893762606281830656" rel="self" type="application/atom+xml"/>
    <link href="http://blog.cleverelephant.ca/2010/03/nothing-nada-zip-bupkus.html" rel="alternate" type="text/html"/>
    <title>Nothing, Nada, Zip, Bupkus</title>
    <content type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml">There is nothing new under the sun, and I have been wrestling this week with writing out ISO-standard well-known binary from PostGIS. <br/><br/><img src="http://images.fanpop.com/images/image_uploads/Empty-Set-Symbol-random-241186_191_160.jpg" style="float: right;"/>The most obvious difference is that the type numbers for encoding the presence of Z- and M-dimensions are not the ones described in the old <a href="http://portal.opengeospatial.org/files/?artifact_id=909">OGC extension document</a> [OGC members only, <a href="http://postgis.refractions.net/pipermail/postgis-devel/2004-December/000695.html">cited by Martin Daly</a> in 2004, and <a href="http://svn.osgeo.org/postgis/trunk/doc/ZMSgeoms.txt">extended further</a> for PostGIS by Sandro Santilli that year] for WKB. Instead of setting high-bits to indicate the presence of Z and M, as OGC did, the ISO spec simply adds 1000. <br/><br/>So, the ISO geometry number for a PolygonZ is 3 (Polygon) + 1000 = 1003.<br/><br/>The, old OGC geometry number for a PolygonZ is 3 (Polygon) | 0x80000000 = 2147483651. <br/><br/>OGC seems more complex until you note that the function WKB_HASZ(num) can be written (num &amp; 0x80000000). While the ISO test is (num &gt;= 1000 &amp;&amp; num &lt; 2000). Setting flags for binary values (has-z, has-m, has-a-piece-of-pie) is nice. <br/><br/>Anyhow, that change was well-known and expected. What I didn't expect was the amount of ambiguity surrounding the definition of an empty geometry in WKB.<br/><br/>To review, the spatial SQL definition includes the concept of an "empty geometry", which is an empty set of a particular geometry type. The empty geometry has more information than a simple database NULL, which is a typeless emptiness. A 'POLYGON ZM EMPTY' has an implied dimensionality. It makes some sense that ST_Intersection() of two disjoint polygons would return a 'POLYGON EMPTY'.<br/><br/>The ISO SQL/MM well-known text specification has clear directions for writing empty geometries of all types. In fact, I've just written two of them above: the type name plus the 'EMPTY' keyword.<br/><br/>For well-known binary, ISO SQL/MM includes the following useless guidance:<blockquote>i) Case:<br/>i) If &lt;point binary representation&gt; immediately contains a &lt;wkbpoint binary&gt;, then &lt;point binary representation&gt; is the well-known binary representation for an ST_Point value that is produced by &lt;wkbpoint binary&gt;.<br/>ii) Otherwise, &lt;point binary representation&gt; produces an empty set of type ST_Point</blockquote>Representing an empty point in WKB is hard because there's nowhere obvious to indicate the lack of ordinates. But the ISO specification makes no attempt to solve the problem, they instead provide explicit guidance that is impossible to implement. Basically, if you are reading a WKB POINT and there are doubles after the TYPE number, you have a POINT(x y). If not, you have a POINT EMPTY. All well and good, but how do you distinguish, in a collection of WKB geometries, between the presence of doubles in the byte stream and the presence of another geometry in the stream? You don't. <br/><br/>The ISO guidance for empty Linestrings is even worse! <blockquote>q) Case:<br/>i) If &lt;linestring binary representation&gt; immediately contains &lt;num&gt;, then &lt;linestring binary representation&gt; is the well-known binary representation for an ST_LineString value. Let APA be an ST_Point ARRAY value with cardinality of &lt;num&gt; that contains the ST_Point values specified by the immediately contained &lt;wkbpoint binary&gt;s. &lt;linestring binary representation&gt; produces an ST_LineString value as the result of the value expression: NEW ST_LineString(APA).<br/>ii) Otherwise, &lt;linestring binary representation&gt; produces an empty set of type ST_LineString.</blockquote>As with the POINT case, the WKB reader is supposed to magically distinguish between an element of the current geometry (the &lt;num&gt;) in the byte-stream and an element of the <em>next</em> geometry in the byte-stream. And worse, the "clarifying" comment implicitly adds a <b>whole new kind of empty geometry</b>! What if the &lt;num&gt; is present, but the value is zero!?! <br/><br/>This is where the snake starts eating its tail. The way that implementations of OGC WKB have been encoding EMPTY geometries has been to provide the type number and an element count of zero.  Back when PostGIS was first getting WKB support, Dave Blasby <a href="http://postgis.refractions.net/pipermail/postgis-users/2003-April/002346.html">wrestled with</a> the fact that the specification did not describe how to encode EMPTY.  Mateusz Loskot recently <a href="http://mateusz.loskot.net/2010/02/26/sqlgeometry-and-point-empty-in-wkb/">published some information</a> showing the WKB EMPTY implementation that Microsoft used for SQLServer. Their implementation is one of the options Dave described five years ago – there's only so many ways to solve this problem.<br/><br/>If ISO didn't like the use of a zero-valued &lt;num&gt; count as a way of indicating EMPTY, they had another option available, which was to follow the original OGC WKB standard and use bitmask flags on their type numbers. There could have been a bitmask for Z, a bitmask for M, and a bitmask for EMPTY. There could even have been a bitmask for SRID, fixing up a huge drawback in WKB, namely that WKB does not include a slot for the SRID, which is an important element in the geometry model.<blockquote>Sidenote: As a result of WKB not having SRID support, it's not possible to round-trip a geometry through WKB without losing the SRID value. Try this standard SQL and see what happens: <br/><code>SELECT ST_SRID( ST_GeomFromWKB( ST_AsBinary( ST_GeomFromText('POINT(0 0)', 4326 ) ) ) )</code><br/> Then try the bastardized <a href="http://svn.osgeo.org/postgis/trunk/doc/ZMSgeoms.txt">PostGIS EWKB format</a> instead: <br/><code>SELECT ST_SRID( ST_GeomFromEWKB( ST_AsEWKB( ST_GeomFromText( 'POINT(0 0)', 4326 ) ) ) )</code></blockquote>As it stands now, the specification is out of synch with the implementations on the ground, which is bad news for the relevance of the specification. I will be implementing EMPTY using the same semantics as SQLServer, which will make the kinds of EMPTY PostGIS can represent slightly richer, but remain backwards compatible to the old schemes.<br/> <div class="blogger-post-footer"><img alt="" height="1" src="https://blogger.googleusercontent.com/tracker/14903426-3893762606281830656?l=blog.cleverelephant.ca" width="1"/></div></div>
    </content>
    <updated>2010-03-01T19:35:50Z</updated>
    <published>2010-03-01T17:26:00Z</published>
    <category scheme="http://www.blogger.com/atom/ns#" term="postgis"/>
    <category scheme="http://www.blogger.com/atom/ns#" term="wkb"/>
    <category scheme="http://www.blogger.com/atom/ns#" term="ogc"/>
    <category scheme="http://www.blogger.com/atom/ns#" term="iso"/>
    <author>
      <name>Paul Ramsey</name>
      <email>noreply@blogger.com</email>
      <uri>http://www.blogger.com/profile/04056244920940087995</uri>
    </author>
    <source>
      <id>tag:blogger.com,1999:blog-14903426</id>
      <author>
        <name>Paul Ramsey</name>
        <email>noreply@blogger.com</email>
        <uri>http://www.blogger.com/profile/04056244920940087995</uri>
      </author>
      <link href="http://blog.cleverelephant.ca/feeds/posts/default" rel="http://schemas.google.com/g/2005#feed" type="application/atom+xml"/>
      <link href="http://www.blogger.com/feeds/14903426/posts/default" rel="self" type="application/atom+xml"/>
      <link href="http://blog.cleverelephant.ca/" rel="alternate" type="text/html"/>
      <link href="http://pubsubhubbub.appspot.com/" rel="hub" type="text/html"/>
      <link href="http://www.blogger.com/feeds/14903426/posts/default?start-index=26&amp;max-results=25" rel="next" type="application/atom+xml"/>
      <subtitle>Open source geospatial opinions and techniques, seen from the trenches and from far far above...</subtitle>
      <title>Paul Ramsey</title>
      <updated>2010-03-10T20:35:59Z</updated>
    </source>
  </entry>

  <entry>
    <id>tag:blogger.com,1999:blog-14903426.post-646828291108739136</id>
    <link href="http://blog.cleverelephant.ca/feeds/646828291108739136/comments/default" rel="replies" type="application/atom+xml"/>
    <link href="https://www.blogger.com/comment.g?blogID=14903426&amp;postID=646828291108739136" rel="replies" type="text/html"/>
    <link href="http://www.blogger.com/feeds/14903426/posts/default/646828291108739136" rel="edit" type="application/atom+xml"/>
    <link href="http://www.blogger.com/feeds/14903426/posts/default/646828291108739136" rel="self" type="application/atom+xml"/>
    <link href="http://blog.cleverelephant.ca/2010/02/nyc-sprint-day-4.html" rel="alternate" type="text/html"/>
    <title>NYC Sprint: Day 4</title>
    <content type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml">End day was, as last year, a quiet one. Everyone worked on cleaning up their last bits of work before heading home around mid-afternoon. Unfortunately, most left before I had a chance to ask what they finished up!<br/><br/>(For my part, I finished some minimal regression tests on the WKT emitter, changed the emitter to use a stringbuffer for output, and upgraded the stringbuffer to be smarter about performance. Jeff Adams has been working on making our unit test program a little more flexible for developers (easier to add tests, and able to optionally run one test at a time)).<br/><br/>One more time, thanks to the sponsors, we got a great deal done and MapServer, Geoserver, PostGIS and the rest of the tribe are going to be stronger next year thanks to this event.<br/><br/>Special thanks also to <b>Temim Fruchter</b> of OpenPlans who was invaluable in helping me make arrangements in New York for hotels and food and all the things that made the event enjoyable and comfortable. Thanks to OpenPlans for hosting us in their lovely penthouse event room!<br/><br/><div style="vertical-align: center; text-align: center;"><a href="http://www.azavea.com/"><img alt="Azavea" border="0" src="http://farm5.static.flickr.com/4023/4398161023_8b37ecdd58_o.png"/></a>  <a href="http://www.lizardtech.com/"><img alt="LizardTech" border="0" src="http://farm5.static.flickr.com/4037/4363909195_a73ab7d789_o.jpg"/></a> <a href="http://www.coordinatesolutions.com/"><img alt="Coordinate Solutions" border="0" src="http://farm5.static.flickr.com/4003/4364650774_9561cfe97a_o.jpg"/></a> <br/><a href="http://opengeo.org/"><img alt="OpenGeo" border="0" src="http://farm5.static.flickr.com/4072/4364650828_9b0562e902_o.jpg"/></a> <a href="http://www.qpublic.net/"><img alt="qPublic.net" border="0" src="http://farm5.static.flickr.com/4012/4363909295_d1e4391317_o.jpg"/></a> <a href="http://www.fargeo.com/"><img alt="Farallon" border="0" src="http://farm3.static.flickr.com/2690/4364650934_2305ed4739_o.jpg"/></a> </div><div class="blogger-post-footer"><img alt="" height="1" src="https://blogger.googleusercontent.com/tracker/14903426-646828291108739136?l=blog.cleverelephant.ca" width="1"/></div></div>
    </content>
    <updated>2010-03-01T17:16:46Z</updated>
    <published>2010-02-23T21:36:00Z</published>
    <category scheme="http://www.blogger.com/atom/ns#" term="osgeo"/>
    <category scheme="http://www.blogger.com/atom/ns#" term="sprint"/>
    <author>
      <name>Paul Ramsey</name>
      <email>noreply@blogger.com</email>
      <uri>http://www.blogger.com/profile/04056244920940087995</uri>
    </author>
    <source>
      <id>tag:blogger.com,1999:blog-14903426</id>
      <author>
        <name>Paul Ramsey</name>
        <email>noreply@blogger.com</email>
        <uri>http://www.blogger.com/profile/04056244920940087995</uri>
      </author>
      <link href="http://blog.cleverelephant.ca/feeds/posts/default" rel="http://schemas.google.com/g/2005#feed" type="application/atom+xml"/>
      <link href="http://www.blogger.com/feeds/14903426/posts/default" rel="self" type="application/atom+xml"/>
      <link href="http://blog.cleverelephant.ca/" rel="alternate" type="text/html"/>
      <link href="http://pubsubhubbub.appspot.com/" rel="hub" type="text/html"/>
      <link href="http://www.blogger.com/feeds/14903426/posts/default?start-index=26&amp;max-results=25" rel="next" type="application/atom+xml"/>
      <subtitle>Open source geospatial opinions and techniques, seen from the trenches and from far far above...</subtitle>
      <title>Paul Ramsey</title>
      <updated>2010-03-10T20:35:59Z</updated>
    </source>
  </entry>

  <entry>
    <id>tag:blogger.com,1999:blog-14903426.post-6399884612652825192</id>
    <link href="http://blog.cleverelephant.ca/feeds/6399884612652825192/comments/default" rel="replies" type="application/atom+xml"/>
    <link href="https://www.blogger.com/comment.g?blogID=14903426&amp;postID=6399884612652825192" rel="replies" type="text/html"/>
    <link href="http://www.blogger.com/feeds/14903426/posts/default/6399884612652825192" rel="edit" type="application/atom+xml"/>
    <link href="http://www.blogger.com/feeds/14903426/posts/default/6399884612652825192" rel="self" type="application/atom+xml"/>
    <link href="http://blog.cleverelephant.ca/2010/02/nyc-sprint-day-1.html" rel="alternate" type="text/html"/>
    <title>NYC Sprint: Day 1</title>
    <content type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml">On a bright day in NYC, we all convened in the sunny Open Plans event room for the first day. As in last years sprint, the morning was spent in planning and discussions, and the afternoon folks began digging in.<br/><br/>The MapServer team talked about release plans for 6.0, and came up with <a href="http://trac.osgeo.org/mapserver/wiki/60ReleasePlan">an ambitious release plan</a>. They recognize that not every item on the plan will make the final cut, but hope that most will find either funded or community effort to bring about. Among the highlights (to me):<br/><br/><b>Pluggable renderer</b> would allow a much cleaner rendering chain, and new renderers for new formats to be more easily added. <b>filterObj</b> to enhance the power of MapServer querying and support OGC Filter fully (and incidentally leverage the power of databases like PostGIS more fully). <b>Named styles</b> to allow re-use of style objects through a map file, instead of repeating the definitions over and over.<br/><br/>I also talked with Steve Lime and Jim Klassen about <a href="http://trac.osgeo.org/mapserver/ticket/3305">a bug</a> in the one-pass rendering code that is making complex WFS queries fail. We think we have a solution and Assefa is doing the final tests.<br/><br/>The PostGIS discussions were about our <a href="http://trac.osgeo.org/postgis/wiki/DevelopmentDiscussion">2.0 roadmap</a> and what the implications of various changes are. Unfortunately, most of my proposed/desired changes are predicated are a large change to the underlying data serialization, so going forward requires a good deal of bravery – I have to burn down the village in order to save it. Olivier Courtin is working on more tractable new features: a polyhedral surface, suitable for storing 3D buildings and other objects that have grown increasingly common.<br/><br/>David Zwarg and Jeff Adams from Avencia joined the PostGIS group, and are working hard already: David on WKTRaster and Jeff on a geographic coordinates formatting routine. Don't tell Jeff, but if he gets the output formatter working, I'm just going to ask him to try and write an ingester.<br/><br/>Justin Deoliveira and Tim Schaub began working on improving the scripting extensions to Geoserver, Tim working on the server-side JavaScript and Justin working on the Python (and David Winslow working on Scala!). Andreas Hocevar has begun a Google Maps V3 API layer for OpenLayers, which will allow Google layers without API keys in OpenLayers (yay!).<br/><br/>As usual, the team had to be driven into the night bodily at the end of the day – it is hard to pry nerds from their code.<br/><br/>Thanks to our 2010 sprint sponsors, for keeping us well supplied with food, drinks and coffee throughout this busy week!<br/><br/><div style="vertical-align: center; text-align: center;"><a href="http://www.azavea.com/"><img alt="Azavea" border="0" src="http://farm5.static.flickr.com/4023/4398161023_8b37ecdd58_o.png"/></a>  <a href="http://www.lizardtech.com/"><img alt="LizardTech" border="0" src="http://farm5.static.flickr.com/4037/4363909195_a73ab7d789_o.jpg"/></a> <a href="http://www.coordinatesolutions.com/"><img alt="Coordinate Solutions" border="0" src="http://farm5.static.flickr.com/4003/4364650774_9561cfe97a_o.jpg"/></a> <br/><a href="http://opengeo.org/"><img alt="OpenGeo" border="0" src="http://farm5.static.flickr.com/4072/4364650828_9b0562e902_o.jpg"/></a> <a href="http://www.qpublic.net/"><img alt="qPublic.net" border="0" src="http://farm5.static.flickr.com/4012/4363909295_d1e4391317_o.jpg"/></a> <a href="http://www.fargeo.com/"><img alt="Farallon" border="0" src="http://farm3.static.flickr.com/2690/4364650934_2305ed4739_o.jpg"/></a> </div><br/><br/><b>Postscript:</b> At the end of the day, Olivier and I settled on an order-of-operations to move towards the new database serialization in PostGIS. Step one, remove the current places in the code where the serialization pokes up into function code and get it completely isolated underneath a serialize/deserialize layer.<br/> <div class="blogger-post-footer"><img alt="" height="1" src="https://blogger.googleusercontent.com/tracker/14903426-6399884612652825192?l=blog.cleverelephant.ca" width="1"/></div></div>
    </content>
    <updated>2010-03-01T17:16:36Z</updated>
    <published>2010-02-20T19:24:00Z</published>
    <category scheme="http://www.blogger.com/atom/ns#" term="osgeo"/>
    <category scheme="http://www.blogger.com/atom/ns#" term="sprint"/>
    <author>
      <name>Paul Ramsey</name>
      <email>noreply@blogger.com</email>
      <uri>http://www.blogger.com/profile/04056244920940087995</uri>
    </author>
    <source>
      <id>tag:blogger.com,1999:blog-14903426</id>
      <author>
        <name>Paul Ramsey</name>
        <email>noreply@blogger.com</email>
        <uri>http://www.blogger.com/profile/04056244920940087995</uri>
      </author>
      <link href="http://blog.cleverelephant.ca/feeds/posts/default" rel="http://schemas.google.com/g/2005#feed" type="application/atom+xml"/>
      <link href="http://www.blogger.com/feeds/14903426/posts/default" rel="self" type="application/atom+xml"/>
      <link href="http://blog.cleverelephant.ca/" rel="alternate" type="text/html"/>
      <link href="http://pubsubhubbub.appspot.com/" rel="hub" type="text/html"/>
      <link href="http://www.blogger.com/feeds/14903426/posts/default?start-index=26&amp;max-results=25" rel="next" type="application/atom+xml"/>
      <subtitle>Open source geospatial opinions and techniques, seen from the trenches and from far far above...</subtitle>
      <title>Paul Ramsey</title>
      <updated>2010-03-10T20:35:59Z</updated>
    </source>
  </entry>

  <entry>
    <id>tag:blogger.com,1999:blog-14903426.post-9033916703249082140</id>
    <link href="http://blog.cleverelephant.ca/feeds/9033916703249082140/comments/default" rel="replies" type="application/atom+xml"/>
    <link href="https://www.blogger.com/comment.g?blogID=14903426&amp;postID=9033916703249082140" rel="replies" type="text/html"/>
    <link href="http://www.blogger.com/feeds/14903426/posts/default/9033916703249082140" rel="edit" type="application/atom+xml"/>
    <link href="http://www.blogger.com/feeds/14903426/posts/default/9033916703249082140" rel="self" type="application/atom+xml"/>
    <link href="http://blog.cleverelephant.ca/2010/02/nyc-sprint-day-2.html" rel="alternate" type="text/html"/>
    <title>NYC Sprint: Day 2</title>
    <content type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml">Today the Geoserver, MapServer and OpenLayers teams got together and really showed off the "<a href="http://wiki.osgeo.org/wiki/New_York_Code_Sprint_2010_Agenda">making things work together better</a>" theme. Starting from Andrea Aime's new "WMS rotation" feature, Daniel Morissette implemented the same feature with the same semantics in MapServer, while Andreas Hocevar implemented client support for the feature into OpenLayers. During testing, a small bug showed up in the Geoserver implementation, which Andrea fixed. <br/><br/>The final result is shown in this screenshot: layers from Geoserver and MapServer viewed and rotated together within OpenLayers.<br/><br/><a href="http://www.flickr.com/photos/92995391@N00/4376132629/" title="screenshot008tm by pwramsey3, on Flickr"><img alt="screenshot008tm" height="233" src="http://farm3.static.flickr.com/2794/4376132629_d5ea4065b3.jpg" width="500"/></a><br/><br/>The MapServer team is now really digging into a couple major goals: <a href="http://mapserver.org/development/rfc/ms-rfc-37.html">reading projection information automatically</a> from data sources; and, making the <a href="http://trac.osgeo.org/mapserver/wiki/RenderingPluginStatus">rendering subsystem pluggable</a>. Here they are deep in discussion on the rendering design:<br/><br/><a href="http://www.flickr.com/photos/92995391@N00/4376445771/" title="photo by pwramsey3, on Flickr"><img alt="MapServer Conclave" height="375" src="http://farm5.static.flickr.com/4044/4376445771_036bc5344a.jpg" style="border: solid 1px #777;" width="500"/></a><br/><br/>Automatic projection reading will make it easier for new users to work with data in mixed projections, because they will no longer have to manually populate PROJECTION blocks for their layers. They will be able to just set PROJECTION to AUTO.<br/><br/>The pluggable rendering upgrade is mostly of interest to programmers, but because it will clean up the plumbing in drawing maps, it will allow new features like KML, PDF and SVG output to be added much more easily. In fact, Assefa is currently working on <a href="http://mapserver.org/development/rfc/ms-rfc-58.html">KML output</a>, using the new rendering design.<br/><br/>Keeping to himself quietly, Alan Boudreault is tying the XML Mapfile more tightly into MapServer. In the last revision, XML Mapfiles could be transformed to .map format with a utility. In the next revision, it will be possible to use them directly from the MapServer CGI program.<br/><br/>Over on the Geoserver side, Andrea Aime arrived from Italy last night, and today is adding the WMS GetStyles operation to Geoserver. Andreas Hocevar is working on tying together printing support in Geoserver and GeoExt. The scripting engine crew continues to beaver away on Javascript/Python/Scala scripting in Geoserver.<br/><br/>In PostGIS land, Olivier Courtin has blasted a pile of changes into PostGIS trunk, working on moving GML/KML/SVG support down into the core geometry library, where they will be easier to reuse. On a similar tack, I've been working on writing a new WKT emitter, that is easier to maintain and supports ISO WKT for extended types and dimensions.<br/><br/>Thanks again to our sponsors! In an hour we will be settling in to watch the Canada/USA hockey game on the big screen in the Open Plans penthouse. Go Canada!<br/><br/><div style="vertical-align: center; text-align: center;"><a href="http://www.azavea.com/"><img alt="Azavea" border="0" src="http://farm5.static.flickr.com/4023/4398161023_8b37ecdd58_o.png"/></a>  <a href="http://www.lizardtech.com/"><img alt="LizardTech" border="0" src="http://farm5.static.flickr.com/4037/4363909195_a73ab7d789_o.jpg"/></a> <a href="http://www.coordinatesolutions.com/"><img alt="Coordinate Solutions" border="0" src="http://farm5.static.flickr.com/4003/4364650774_9561cfe97a_o.jpg"/></a> <br/><a href="http://opengeo.org/"><img alt="OpenGeo" border="0" src="http://farm5.static.flickr.com/4072/4364650828_9b0562e902_o.jpg"/></a> <a href="http://www.qpublic.net/"><img alt="qPublic.net" border="0" src="http://farm5.static.flickr.com/4012/4363909295_d1e4391317_o.jpg"/></a> <a href="http://www.fargeo.com/"><img alt="Farallon" border="0" src="http://farm3.static.flickr.com/2690/4364650934_2305ed4739_o.jpg"/></a> </div><br/><br/><b>Update:</b> Canada disappoints! I blame Brodeur.<br/> <div class="blogger-post-footer"><img alt="" height="1" src="https://blogger.googleusercontent.com/tracker/14903426-9033916703249082140?l=blog.cleverelephant.ca" width="1"/></div></div>
    </content>
    <updated>2010-03-01T17:16:28Z</updated>
    <published>2010-02-21T19:42:00Z</published>
    <category scheme="http://www.blogger.com/atom/ns#" term="osgeo"/>
    <category scheme="http://www.blogger.com/atom/ns#" term="sprint"/>
    <author>
      <name>Paul Ramsey</name>
      <email>noreply@blogger.com</email>
      <uri>http://www.blogger.com/profile/04056244920940087995</uri>
    </author>
    <source>
      <id>tag:blogger.com,1999:blog-14903426</id>
      <author>
        <name>Paul Ramsey</name>
        <email>noreply@blogger.com</email>
        <uri>http://www.blogger.com/profile/04056244920940087995</uri>
      </author>
      <link href="http://blog.cleverelephant.ca/feeds/posts/default" rel="http://schemas.google.com/g/2005#feed" type="application/atom+xml"/>
      <link href="http://www.blogger.com/feeds/14903426/posts/default" rel="self" type="application/atom+xml"/>
      <link href="http://blog.cleverelephant.ca/" rel="alternate" type="text/html"/>
      <link href="http://pubsubhubbub.appspot.com/" rel="hub" type="text/html"/>
      <link href="http://www.blogger.com/feeds/14903426/posts/default?start-index=26&amp;max-results=25" rel="next" type="application/atom+xml"/>
      <subtitle>Open source geospatial opinions and techniques, seen from the trenches and from far far above...</subtitle>
      <title>Paul Ramsey</title>
      <updated>2010-03-10T20:35:59Z</updated>
    </source>
  </entry>

  <entry>
    <id>tag:blogger.com,1999:blog-14903426.post-7455667436424591716</id>
    <link href="http://blog.cleverelephant.ca/feeds/7455667436424591716/comments/default" rel="replies" type="application/atom+xml"/>
    <link href="https://www.blogger.com/comment.g?blogID=14903426&amp;postID=7455667436424591716" rel="replies" type="text/html"/>
    <link href="http://www.blogger.com/feeds/14903426/posts/default/7455667436424591716" rel="edit" type="application/atom+xml"/>
    <link href="http://www.blogger.com/feeds/14903426/posts/default/7455667436424591716" rel="self" type="application/atom+xml"/>
    <link href="http://blog.cleverelephant.ca/2010/02/nyc-sprint-day-0.html" rel="alternate" type="text/html"/>
    <title>NYC Sprint: Day 0</title>
    <content type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml"><img src="http://wiki.osgeo.org/images/8/89/I_osgeo_ny.png" style="width: 150px; float: right;"/>Here we go! 23 programmers are winging their way to the Big Apple to take part in the <a href="http://wiki.osgeo.org/wiki/New_York_Code_Sprint_2010">New York code sprint</a>, combining coding talent talent from MapServer, PostGIS, GDAL, OpenLayers, Geoserver, LibLAS, and, and, and!<br/><br/>I am in the air right now, and am looking forward to meeting up with the sprinters at the <a href="http://wiki.osgeo.org/wiki/New_York_Code_Sprint_2010#Social_Events">Broome Street Bar</a> (363 W Broadway) this evening.<br/><br/>Thanks to our 2010 sprint sponsors, for keeping us well supplied with food, drinks and coffee throughout this busy week!<br/><br/><div style="vertical-align: center; text-align: center;"><a href="http://www.azavea.com/"><img alt="Azavea" border="0" src="http://farm5.static.flickr.com/4023/4398161023_8b37ecdd58_o.png"/></a>  <a href="http://www.lizardtech.com/"><img alt="LizardTech" border="0" src="http://farm5.static.flickr.com/4037/4363909195_a73ab7d789_o.jpg"/></a> <a href="http://www.coordinatesolutions.com/"><img alt="Coordinate Solutions" border="0" src="http://farm5.static.flickr.com/4003/4364650774_9561cfe97a_o.jpg"/></a> <br/><a href="http://opengeo.org/"><img alt="OpenGeo" border="0" src="http://farm5.static.flickr.com/4072/4364650828_9b0562e902_o.jpg"/></a> <a href="http://www.qpublic.net/"><img alt="qPublic.net" border="0" src="http://farm5.static.flickr.com/4012/4363909295_d1e4391317_o.jpg"/></a> <a href="http://www.fargeo.com/"><img alt="Farallon" border="0" src="http://farm3.static.flickr.com/2690/4364650934_2305ed4739_o.jpg"/></a> </div><div class="blogger-post-footer"><img alt="" height="1" src="https://blogger.googleusercontent.com/tracker/14903426-7455667436424591716?l=blog.cleverelephant.ca" width="1"/></div></div>
    </content>
    <updated>2010-03-01T17:15:38Z</updated>
    <published>2010-02-19T17:00:00Z</published>
    <category scheme="http://www.blogger.com/atom/ns#" term="osgeo"/>
    <category scheme="http://www.blogger.com/atom/ns#" term="sprint"/>
    <author>
      <name>Paul Ramsey</name>
      <email>noreply@blogger.com</email>
      <uri>http://www.blogger.com/profile/04056244920940087995</uri>
    </author>
    <source>
      <id>tag:blogger.com,1999:blog-14903426</id>
      <author>
        <name>Paul Ramsey</name>
        <email>noreply@blogger.com</email>
        <uri>http://www.blogger.com/profile/04056244920940087995</uri>
      </author>
      <link href="http://blog.cleverelephant.ca/feeds/posts/default" rel="http://schemas.google.com/g/2005#feed" type="application/atom+xml"/>
      <link href="http://www.blogger.com/feeds/14903426/posts/default" rel="self" type="application/atom+xml"/>
      <link href="http://blog.cleverelephant.ca/" rel="alternate" type="text/html"/>
      <link href="http://pubsubhubbub.appspot.com/" rel="hub" type="text/html"/>
      <link href="http://www.blogger.com/feeds/14903426/posts/default?start-index=26&amp;max-results=25" rel="next" type="application/atom+xml"/>
      <subtitle>Open source geospatial opinions and techniques, seen from the trenches and from far far above...</subtitle>
      <title>Paul Ramsey</title>
      <updated>2010-03-10T20:35:59Z</updated>
    </source>
  </entry>

  <entry xml:lang="en">
    <id>http://spatialguru.com/58 at http://spatialguru.com</id>
    <link href="http://spatialguru.com/tyler-mitchell/what-book-do-you-need" rel="alternate" type="text/html"/>
    <title>What book do you need?</title>
    <summary type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml"><p>(ED: Enabling comments might help.. sorry about that, should work now.  TM)</p>

<p>I talk a fair bit with various folks about book ideas they or I have.  I'm curious on your thoughts for potential new books that might be popular - what's the next big "geo" book that you think you, your colleagues, the world at large needs?</p>

<p>Where do <a href="http://oreilly.com/pub/topic/mapping">these books</a> leave off?  Or what new waters need to be charted?</p></div>
    </summary>
    <updated>2010-02-28T05:26:36Z</updated>
    <author>
      <name>Tyler Mitchell</name>
    </author>
    <source>
      <id>http://spatialguru.com</id>
      <link href="http://spatialguru.com" rel="alternate" type="text/html"/>
      <link href="http://spatialguru.com/index.php%3Foption%3Dcom_rss%2526feed%3DRSS1.0%2526no_html%3D1" rel="self" type="application/rss+xml"/>
      <title>Spatialguru.com -</title>
      <updated>2010-03-10T22:12:02Z</updated>
    </source>
  </entry>

  <entry xml:lang="en">
    <id>http://spatialguru.com/57 at http://spatialguru.com</id>
    <link href="http://spatialguru.com/tyler-mitchell/mapserver-workshop-foss4g-2010" rel="alternate" type="text/html"/>
    <title>MapServer Workshop at FOSS4G 2010</title>
    <summary type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml"><p>Hope to see you at the <a href="http://2010.foss4g.org/workshop08.php">MapServer introduction workshop</a> at <a href="http://2010.foss4g.org">FOSS4G 2010 in Barcelona</a> this September.</p>

<p>As usual, it's a team teaching approach for beginners, delivered by <a href="http://gatewaygeomatics.com/">Jeff McKenna</a>, Perry Nacionales and myself.</p>

<p>This workshop always sells out and people beg to join in or stand at the back - so <strong>sign up soon</strong> or you might miss out.</p>

<p>See you there!</p></div>
    </summary>
    <updated>2010-02-26T18:26:43Z</updated>
    <author>
      <name>Tyler Mitchell</name>
    </author>
    <source>
      <id>http://spatialguru.com</id>
      <link href="http://spatialguru.com" rel="alternate" type="text/html"/>
      <link href="http://spatialguru.com/index.php%3Foption%3Dcom_rss%2526feed%3DRSS1.0%2526no_html%3D1" rel="self" type="application/rss+xml"/>
      <title>Spatialguru.com -</title>
      <updated>2010-03-10T22:12:02Z</updated>
    </source>
  </entry>

  <entry xml:lang="en">
    <id>http://www.kralidis.ca/blog/?p=441</id>
    <link href="http://www.kralidis.ca/blog/2010/02/19/nyc-sprint-is-upon-us/" rel="alternate" type="text/html"/>
    <title>NYC Sprint is Upon Us</title>
    <summary>Building on the Toronto Code Sprint 2009 (I had the honour of helping Paul set this up), this year MapServer, GDAL, PostGIS, etc. devs are headed to to the Big Apple for the New York Code Sprint 2010.  Having participated in last year’s event, I can say that it is a fun, spirited and productive [...]</summary>
    <updated>2010-02-19T20:28:07Z</updated>
    <category term="geospatial"/>
    <category term="open source"/>
    <category term="technology"/>
    <author>
      <name>tomkralidis</name>
    </author>
    <source>
      <id>http://www.kralidis.ca/blog</id>
      <link href="http://www.kralidis.ca/blog/feed/" rel="self" type="application/atom+xml"/>
      <link href="http://www.kralidis.ca/blog" rel="alternate" type="text/html"/>
      <subtitle>I use this blog to post my thoughts and random stuff from time to time.  See my About page for more info about me.  Note that my views and opinions expressed here are my own and do not reflect the views of my employer</subtitle>
      <title>tommy's scratchpad</title>
      <updated>2010-02-19T22:12:06Z</updated>
    </source>
  </entry>

  <entry xml:lang="en">
    <id>http://www.kralidis.ca/blog/?p=439</id>
    <link href="http://www.kralidis.ca/blog/2010/02/19/geoscript/" rel="alternate" type="text/html"/>
    <title>GeoScript</title>
    <summary>GeoScript looks like a neat effort to leverage GeoTools into Python (an increasingly widely used language for GIS scripting) and JavaScript.
I love this for JavaScript, and I wonder how this relates to the other Python work out there (like Shapely and WorldMill); Sean?

		Written from home:


      window.onload=function() {
    [...]</summary>
    <updated>2010-02-19T20:01:07Z</updated>
    <category term="geospatial"/>
    <category term="open source"/>
    <category term="technology"/>
    <category term="web"/>
    <author>
      <name>tomkralidis</name>
    </author>
    <source>
      <id>http://www.kralidis.ca/blog</id>
      <link href="http://www.kralidis.ca/blog/feed/" rel="self" type="application/atom+xml"/>
      <link href="http://www.kralidis.ca/blog" rel="alternate" type="text/html"/>
      <subtitle>I use this blog to post my thoughts and random stuff from time to time.  See my About page for more info about me.  Note that my views and opinions expressed here are my own and do not reflect the views of my employer</subtitle>
      <title>tommy's scratchpad</title>
      <updated>2010-02-19T22:12:06Z</updated>
    </source>
  </entry>

  <entry>
    <id>tag:blogger.com,1999:blog-14903426.post-6534473362228620861</id>
    <link href="http://blog.cleverelephant.ca/feeds/6534473362228620861/comments/default" rel="replies" type="application/atom+xml"/>
    <link href="https://www.blogger.com/comment.g?blogID=14903426&amp;postID=6534473362228620861" rel="replies" type="text/html"/>
    <link href="http://www.blogger.com/feeds/14903426/posts/default/6534473362228620861" rel="edit" type="application/atom+xml"/>
    <link href="http://www.blogger.com/feeds/14903426/posts/default/6534473362228620861" rel="self" type="application/atom+xml"/>
    <link href="http://blog.cleverelephant.ca/2010/02/hotel-california.html" rel="alternate" type="text/html"/>
    <title>Hotel California</title>
    <content type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml">I recently bought a set of wireless handsets that include a digital answering machine, so I figured I should be economical and cancel my voicemail. This is the internet age, so I pay my bills and manage my phone account online. Go to my account page, a little hunting, and there's all the options available for voice mail.<br/><br/><img alt="You can check in any time you like..." src="http://farm5.static.flickr.com/4014/4368461046_3b43e12f99_o.png"/><br/><br/>Note that the check mark next to voicemail service is grayed out! You can <b>add</b> services via the web interface, but you can't remove them! I'd switch to the other phone company, but there isn't one. All I've got is the cable company, and they recently shut off my internet for a week, which put somewhat of a crimp in my working-from-home (became working-from-cafe).<br/> <div class="blogger-post-footer"><img alt="" height="1" src="https://blogger.googleusercontent.com/tracker/14903426-6534473362228620861?l=blog.cleverelephant.ca" width="1"/></div></div>
    </content>
    <updated>2010-02-18T17:52:19Z</updated>
    <published>2010-02-18T17:47:00Z</published>
    <author>
      <name>Paul Ramsey</name>
      <email>noreply@blogger.com</email>
      <uri>http://www.blogger.com/profile/04056244920940087995</uri>
    </author>
    <source>
      <id>tag:blogger.com,1999:blog-14903426</id>
      <author>
        <name>Paul Ramsey</name>
        <email>noreply@blogger.com</email>
        <uri>http://www.blogger.com/profile/04056244920940087995</uri>
      </author>
      <link href="http://blog.cleverelephant.ca/feeds/posts/default" rel="http://schemas.google.com/g/2005#feed" type="application/atom+xml"/>
      <link href="http://www.blogger.com/feeds/14903426/posts/default" rel="self" type="application/atom+xml"/>
      <link href="http://blog.cleverelephant.ca/" rel="alternate" type="text/html"/>
      <link href="http://pubsubhubbub.appspot.com/" rel="hub" type="text/html"/>
      <link href="http://www.blogger.com/feeds/14903426/posts/default?start-index=26&amp;max-results=25" rel="next" type="application/atom+xml"/>
      <subtitle>Open source geospatial opinions and techniques, seen from the trenches and from far far above...</subtitle>
      <title>Paul Ramsey</title>
      <updated>2010-03-10T20:35:59Z</updated>
    </source>
  </entry>

  <entry xml:lang="en">
    <id>http://www.perrygeo.net/wordpress/?p=141</id>
    <link href="http://www.perrygeo.net/wordpress/?p=141" rel="alternate" type="text/html"/>
    <title>Lazy raster processing with GDAL VRTs</title>
    <summary>No, not lazy as in REST  … Lazy as in “Lazy evaluation“:
In computer programming, lazy evaluation is the technique of delaying a computation until the result is required.
Take an example raster processing workflow to go from a bunch of tiled, latlong, GeoTiff digital elevation models to a single shaded relief GeoTiff in projected space:

 [...]</summary>
    <content type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml"><p>No, not lazy as in REST <img alt=":-)" class="wp-smiley" src="http://www.perrygeo.net/wordpress/wp-includes/images/smilies/icon_smile.gif"/> … Lazy as in “<a href="http://en.wikipedia.org/wiki/Lazy_evaluation">Lazy evaluation</a>“:</p>
<blockquote><p>In computer programming, lazy evaluation is the technique of delaying a computation until the result is required.</p></blockquote>
<p>Take an <strong>example raster processing workflow</strong> to go from a bunch of tiled, latlong, GeoTiff digital elevation models to a single shaded relief GeoTiff in projected space:</p>
<ol>
<li> Merge the tiles together </li>
<li> Reproject the merged DEM (using bilinear or cubic interpolation) </li>
<li> Generate the hillshade from the merged DEM </li>
</ol>
<p>Simple enough to do with GDAL tools on the command line. Here’s the typical, <strong>process-as-you-go</strong> implementation:</p>
<ol>
<li> gdal_merge.py -of GTiff -o srtm_merged.tif srtm_12_*.tif </li>
<li> gdalwarp -t_srs epsg:3310 -r bilinear -of GTiff srtm_merged.tif srtm_merged_3310.tif </li>
<li> gdaldem hillshade srtm_merged_3310.tif srtm_merged_3310_shade.tif -of GTiff </li>
</ol>
<p>Alternately, we can simulate <strong>lazy evaluation</strong> by using <a href="http://www.gdal.org/gdal_vrttut.html">GDAL Virtual Rasters</a> (VRT) to perform the intermediate steps, only outputting the GeoTiff as the final step. </p>
<ol>
<li>gdalbuildvrt srtm_merged.vrt srtm_12_0*.tif</li>
<li>gdalwarp -t_srs epsg:3310 -r bilinear -of VRT srtm_merged.vrt srtm_merged_3310.vrt </li>
<li>gdaldem hillshade srtm_merged_3310.vrt srtm_merged_3310_shade2.tif -of GTiff</li>
</ol>
<p>So what’s the advantage to doing it the VRT way? They both produce <em>exactly</em> the same output raster. Lets compare:</p>
<table style="text-align: center;">
<tbody><tr>
<td/>
<td>Process-As-You-Go  </td>
<td> “Lazy” VRTs</td>
</tr>
<tr>
<td>Merge (#1) time </td>
<td> 3.1 sec</td>
<td>0.05 sec </td>
</tr>
<tr>
<td>Warp (#2) time </td>
<td> 7.3 sec </td>
<td>0.10 sec </td>
</tr>
<tr>
<td>Hillshade (#3) time</td>
<td>10.5 sec </td>
<td> 19.75 sec</td>
</tr>
<tr>
<td> Total processing time</td>
<td> 20.9 sec</td>
<td>19.9 sec </td>
</tr>
<tr>
<td> Intermediate files</td>
<td>2 tifs</td>
<td>2 vrts</td>
</tr>
<tr>
<td> Intermediate file size</td>
<td>261 MB</td>
<td>0.005 MB</td>
</tr>
<tr>
<td> </td>
<td> </td>
<td> </td>
</tr>
</tbody></table>
<p/>
<p>The Lazy VRT method <strong>delays all the computationally-intensive processing until it is actually required</strong>. The intermediate files, instead of containing the raw raster output of the actual computation, are XML files which contain the <em>instructions</em> to get the desired output. This allows GDAL to do all the processing in one step (the final step #3). The <em>total</em> processing time is not significantly different between the two methods but in terms of the productivity of the GIS analyst, the VRT method is superior. Imagine working with datasets 1000x this size with many more steps - having to type the command, wait 2 hours, type the next, etc. would be a waste of human resources versus assembling the instructions into vrts then hitting the final processing step when you leave the office for a long weekend.</p>
<p>Additionaly, the VRT method produces only <strong>small intermediate xml files</strong> instead of having a potentially huge data management nightmare of shuffling around GB (or TB) of intermediate outputs! Plus those xml files serve as an excellent piece of metadata which describe the exact processing steps which you can refer to later or adapt to different datasets. </p>
<p>So next time you have a multi-step raster workflow, use the GDAL VRTs to your full advantage - you’ll save yourself time and disk space by being lazy. </p></div>
    </content>
    <updated>2010-02-18T17:16:43Z</updated>
    <category term="Uncategorized"/>
    <author>
      <name>perrygeo</name>
    </author>
    <source>
      <id>http://www.perrygeo.net/wordpress</id>
      <link href="http://www.perrygeo.net/wordpress" rel="alternate" type="text/html"/>
      <link href="http://www.perrygeo.net/wordpress/?feed=rss2" rel="self" type="application/rss+xml"/>
      <subtitle>Matt Perry's random adventures with geospatial technology and other tangentially related topics</subtitle>
      <title>PerryGeo</title>
      <updated>2010-02-18T17:16:43Z</updated>
    </source>
  </entry>

  <entry xml:lang="en-us">
    <id>http://www.joelonsoftware.com/items/2010/02/18.html</id>
    <link href="http://www.joelonsoftware.com/items/2010/02/18.html" rel="alternate" type="text/html"/>
    <title>Facebook / LinkedIn importers</title>
    <summary type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml"><img align="right" alt="" border="0" src="http://www.joelonsoftware.com/items/2010/02/18import.PNG" style="MARGIN-LEFT: 5px;"/>New StackOverflow developer Kevin Montrose (6,878 reputation) added a neat feature to <a href="http://careers.stackoverflow.com/">the career site</a> that makes it a zillion times easier to file a CV if you’ve already put in your job and education history on LinkedIn or FaceBook. <a href="http://careers.stackoverflow.com/">Try it out</a>.
<p>Need to hire a really great programmer? Want a job that doesn't drive you crazy? Visit the <a href="http://jobs.joelonsoftware.com/">Joel on Software Job Board</a>: Great software jobs, great people.
</p></div>
    </summary>
    <updated>2010-02-18T14:05:02Z</updated>
    <author>
      <name>Joel Spolsky</name>
    </author>
    <source>
      <id>http://www.joelonsoftware.com</id>
      <logo>http://www.joelonsoftware.com/RssJoelOnSoftware.jpg</logo>
      <author>
        <name>Joel Spolsky</name>
      </author>
      <link href="http://www.joelonsoftware.com" rel="alternate" type="text/html"/>
      <link href="http://joelonsoftware.com/rss.xml" rel="self" type="application/rss+xml"/>
      <rights>Copyright 1999-2008 Joel Spolsky.</rights>
      <subtitle>Painless Software Management</subtitle>
      <title>Joel on Software</title>
      <updated>2010-03-10T22:12:08Z</updated>
    </source>
  </entry>

  <entry xml:lang="en-us">
    <id>http://www.joelonsoftware.com/items/2010/02/14.html</id>
    <link href="http://www.joelonsoftware.com/items/2010/02/14.html" rel="alternate" type="text/html"/>
    <title>Raising money for StackOverflow</title>
    <summary type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml"><p>A few people heard me on <a href="http://thisweekinstartups.com/2010/02/twist-41-with-james-segil/">This Week in Startups</a> (starting at 15:45) asking Jason if we should take money from the first VC who fell into our laps, or spend time doing the Sand Hill Road rounds, meeting more VCs, and doing a road show for the other firms that might be interested in investing.</p>
<p>Jason (and his guest <a href="http://www.linkedin.com/in/jsegil">James Segil</a>) both agree that we should take more time picking the right partner. We’re going to be in bed with these guys for years, they say, and we have to approach this like picking a spouse.</p>
<p>Anyway, people emailed me in shock and surprise that we would even consider VC, considering the <a href="http://www.joelonsoftware.com/articles/VC.html">things</a> I’ve <a href="http://www.joelonsoftware.com/articles/fog0000000056.html">written</a>.</p>
<p><span style="display: block; margin: 0 0 0.25ex 1em; float: right;"><a href="http://www.joelonsoftware.com/items/2010/02/14osterness.jpg"><img alt="" src="http://www.joelonsoftware.com/items/2010/02/14osterness-thumbnail.jpg" style="border: 1px solid #666;"/></a><br/><span>
</span></span></p><div><a href="http://www.flickr.com/photos/niznoz/" rel="cc:attributionurl">flickr.com/photos/niznoz</a> / <a href="http://creativecommons.org/licenses/by-nc-sa/2.0/" rel="license">CC BY-NC-SA 2.0</a></div>Why are we seeking venture capital for <a href="http://stackoverflow.com/">StackOverflow</a>?
<p/>
<p/>
<p>Almost ten years ago, I <a href="http://www.joelonsoftware.com/articles/fog0000000056.html">wrote</a> about two kinds of companies, the Ben and Jerry’s type of company, which grows carefully and organically, and the Amazon type, which uses huge amounts of investment capital to get big quickly.</p>
<p>At the time, I had no doubt that I wanted Fog Creek to be a Ben and Jerry’s type of company, and that model has served us well. By staying profitable and growing carefully, we’ve managed to survive two big downturns and we’ve grown into a stable, 34-person company that’s a great place to work and is likely to remain stable, and a great place to work, for a long time.</p>
<p>StackOverflow, though, is a bit of a different story. </p>
<p>There are a few indicators for the type of company that I believe can benefit from, and should take, VC.</p>
<ol>
<li>There’s a land grab going on. The business is in a new field with no competition, but the field has proven itself, and is obviously going to get very crowded very soon, so the faster you can grab territory, the better.</li>
<li>There is a provable concept that’s repeatable. I always point to the example of the Starbucks IPO, which was brilliant because it was so simple. Every new Starbucks store that opened in Seattle became profitable in a matter of months. They tried a couple of stores in Chicago and Washington just to make sure it wasn’t a Seattle thing, and those worked even better. Thus, the formula of opening as many stores as possible was as close to a sure-thing as possible, so raising money was a no-brainer.</li>
<li>The business itself could benefit from the publicity of getting an investment from someone who is thought of as being a savvy investor.</li>
<li>The investor will add substantial value to the business in advice, connections, and introductions.</li>
<li>The business can potentially have a big exit or become a large, publically traded company.</li>
<li>The founders are not in it for their own personal aggrandizement and are happy to give up some control to make the business more successful.</li></ol>
<p>There are counter-indicators, of course: signs that you shouldn’t consider VC. Here are just a few off the top of my head:</p>
<ol>
<li>If the founders are risk-averse and are willing to trade a much smaller payout for lower risk.</li>
<li>If the founders are technical without substantial business experience <em>and </em>wish to maintain absolute control forever.</li>
<li>If the investor is mostly “dumb money,” i.e., someone who doesn’t know about the field. The proverbial dentist, who is happy to give you a half million bucks, but doesn’t know the first thing about CPMs and CPCs and CTOs, so you might as well not bother.</li>
<li>If you’re going into an established field with a lot of competition, there’s no benefit to speed; you’re better off slowly building a niche business and growing from there, quietly taking one customer at a time away from the competitors.</li>
<li>If the product is immature and unproven, in which case, expensive marketing efforts will be wasted proving to the world how <em>bad</em> your product is.</li>
<li>If the founders don’t have enough of the right kinds of industry connections, or the idea is not compelling enough, so that raising VC would take months or years</li>
<li>If there is any other way to raise the kind of money you need, for example, by selling actual products to customers.</li></ol>
<p>When I put all these things together the conclusion is that StackOverflow is one of those rare companies for which VC can really work. Jeff and I started out with a goal for StackOverflow of changing the way programmers and system administrators get answers to their questions on the Internet, which was deeply broken. In 18 months we’ve accomplish that: we’ve got 6 million unique visitors every month. Now we’re biting off the bigger goal of changing the way <em>everyone </em>gets answers to their questions on the Internet, and that’s something we can’t do alone.</p>
<p>So, off I go, on a StackOverflow road show. I’ll be in Silicon Valley Feb 24-Mar 3; drop me a line if you want to get together.</p>
<p>Need to hire a really great programmer? Want a job that doesn't drive you crazy? Visit the <a href="http://jobs.joelonsoftware.com/">Joel on Software Job Board</a>: Great software jobs, great people.
</p></div>
    </summary>
    <updated>2010-02-15T02:21:03Z</updated>
    <author>
      <name>Joel Spolsky</name>
    </author>
    <source>
      <id>http://www.joelonsoftware.com</id>
      <logo>http://www.joelonsoftware.com/RssJoelOnSoftware.jpg</logo>
      <author>
        <name>Joel Spolsky</name>
      </author>
      <link href="http://www.joelonsoftware.com" rel="alternate" type="text/html"/>
      <link href="http://joelonsoftware.com/rss.xml" rel="self" type="application/rss+xml"/>
      <rights>Copyright 1999-2008 Joel Spolsky.</rights>
      <subtitle>Painless Software Management</subtitle>
      <title>Joel on Software</title>
      <updated>2010-03-10T22:12:08Z</updated>
    </source>
  </entry>

  <entry xml:lang="en">
    <id>http://think.random-stuff.org/?p=88</id>
    <link href="http://feedproxy.google.com/~r/random-stuff/think/~3/4kpw_nCguYI/denyhosts-on-mac-os-x" rel="alternate" type="text/html"/>
    <title>denyhosts on Mac OS X</title>
    <summary>I just spent some time figuring out how to set up denyhosts on Snow Leopard. I’ve used denyhosts before, but never felt like I had things set up properly for Mac OS. Now I think I have it figure out, so here it is. This is for 10.6, your mileage may vary on earlier versions.
I [...]</summary>
    <content type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml"><p>I just spent some time figuring out how to set up denyhosts on Snow Leopard. I’ve used denyhosts before, but never felt like I had things set up properly for Mac OS. Now I think I have it figure out, so here it is. This is for 10.6, your mileage may vary on earlier versions.</p>
<p>I had three goals – get denyhosts working, get it to start automatically at boot time, deal with rotating the logs (a general problem I’m happy to have figured out).</p>
<p><strong>Installation</strong><br/>
Easiest first – installing denyhosts. Note that you need to be root to do this. Pretty much just follow the directions. These are the three main settings to worry about.</p>

<div class="wp_syntax"><div class="code"><pre class="xorg_conf" style="font-family: monospace;">SECURE_LOG = /private/var/log/secure.log
LOCK_FILE = /var/run/denyhosts.pid
DAEMON_LOG = /var/log/denyhosts</pre></div></div>

<p><strong>Log rotation</strong></p>
<p>Mac OS 10.6 uses newsyslog for some logs (I’m not sure why, but apache logs don’t seem to be dealt with by newsyslog). To add your own to the mix, just put a file into /etc/newsyslog.d following the format for <a href="http://developer.apple.com/mac/library/documentation/Darwin/Reference/ManPages/man5/newsyslog.conf.5.html">newsyslog.conf(5)</a>. I called mine local.conf</p>

<div class="wp_syntax"><div class="code"><pre class="xorg_conf" style="font-family: monospace;"><span style="color: #adadad; font-style: italic;"># logfilename          [owner:group]            mode count size when  flags [/pid_file] [sig_num]</span>
/var/log/denyhosts                              <span style="color: #cc66cc;">640</span>   <span style="color: #cc66cc;">5</span>     *    $D0     J
<span style="color: #adadad; font-style: italic;">#</span></pre></div></div>

<p>The trouble is, this rotated the log just fine, but then denyhosts stopped logging because newsyslog essentially pulls the rug out from under denyhosts by moving the file. The fix for this leads me to the start at boot time section, because the same tweaking dealt with both.</p>
<p>One design difference between newsyslog and <a href="http://linuxcommand.org/man_pages/logrotate8.html">logrotate</a> is the way they deal with notifying processes that logs have been rotated. Logrotate uses prerotate and postrotate scripts, which would be ideal for denyhosts. The way you start and stop it is with</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family: monospace;">daemon-control start
 
daemon-control stop</pre></div></div>

<pre>daemon-control</pre>
<p> stop actually sends a
</p><pre>SIGTERM</pre>
<p> to the denyhosts process, but that won’t do any good in the newsyslog config file since once stopped, you need a command line to start it.</p>
<p><strong>Start at boot time</strong></p>

<div class="wp_syntax"><div class="code"><pre class="xorg_conf" style="font-family: monospace;"><span style="color: #adadad; font-style: italic;"># logfilename          [owner:group]            mode count size when  flags [/pid_file] [sig_num]</span>
/var/log/denyhosts                              <span style="color: #cc66cc;">640</span>   <span style="color: #cc66cc;">5</span>     *    $D0     J  /var/run/denyhosts.pid <span style="color: #cc66cc;">15</span>
<span style="color: #adadad; font-style: italic;">#</span></pre></div></div>

<img height="1" src="http://feeds.feedburner.com/~r/random-stuff/think/~4/4kpw_nCguYI" width="1"/></div>
    </content>
    <updated>2010-02-13T21:28:21Z</updated>
    <category term="Random"/><feedburner:origlink xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0">http://think.random-stuff.org/posts/denyhosts-on-mac-os-x</feedburner:origlink>
    <author>
      <name>Allan</name>
    </author>
    <source>
      <id>http://think.random-stuff.org</id>
      <link href="http://think.random-stuff.org" rel="alternate" type="text/html"/>
      <link href="http://feeds.feedburner.com/random-stuff/think" rel="self" type="application/atom+xml"/>
      <link href="http://pubsubhubbub.appspot.com/" rel="hub" type="text/html"/>
      <title>think</title>
      <updated>2010-02-18T19:12:04Z</updated>
    </source>
  </entry>

  <entry xml:lang="en-us">
    <id>http://www.joelonsoftware.com/items/2010/02/11.html</id>
    <link href="http://www.joelonsoftware.com/items/2010/02/11.html" rel="alternate" type="text/html"/>
    <title>Headcount</title>
    <summary type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml"><p>In the early days of a technology startup, you tend to have a lot of software developers, and you feel like you could never have enough. If you hire sales and marketing staff too early, they don’t really get much traction, and you may start to think that sales and marketing are a waste of time. This led me, in the early years, to believe that a healthy software company should have a lot of real software developers and maybe no sales and marketing.</p>
<p>At one point I entertained the quixotic and, retrospectively, stupid idea of requiring <em>every</em> employee at Fog Creek to be a programmer... even the receptionist would have to have done some BASIC programming in high school to qualify. In the US Marines everyone, even the cooks, is a rifleman. Of course that’s because the cooks are in <em>friggin Afghanistan </em>getting <em>shot at</em> so they <em>better be riflemen</em>, whereas our receptionist almost never has to drop into the source code and bang out a class. Almost never.</p>
<p>Over time, though, as your product gets better and better, the more sales and marketing people you hire, the more you sell.</p>
<p>That’s because programmers multiply salespeople, and vice-versa.</p>
<p>I’m a nerd, so I’ll be real math-y about this. Define the quality of your code on a scale from 0 to 1. </p>
<p>0 means your product solves absolutely no problems for anybody so nobody in their right mind would ever buy it. Microsoft Bob.</p>
<p>1 means that every single person on Earth, if they bought your software, would be net happier, even after paying your fee. </p>
<p>Your software starts at 0 and slowly climbs up the hill.</p>
<p>If everybody in the world knew about your software and was encouraged to evaluate it, the number that would buy it would be (Earth population) x Quality.</p>
<p>Sales and marketing functions exist to encourage earthlings to find out about your software and evaluate it. These functions will have no effect on sales if your quality is extremely low. But as the quality gets higher, the value of sales and marketing goes up, commensurately. Double the quality, and the same sales effort yields double the revenue.</p>
<p>The population of the planet is so large, and the effect of sales and marketing so hard to scale, that by the time your product is really great, the optimal ratio might be very heavily tilted in favor of sales and marketing. Large software companies might have 5 or 10 or 20 people in the sales organization for every developer.</p>
<p>This explains, among other things, why US software companies can’t expect to get sustainable advantage by offshoring software development to cheaper countries. If a developer in Russia, India, or China costs 50% as much as a developer in Seattle, San Francisco, or Boston, but software development is only 10% of your costs, you can only get a 5% advantage from offshoring development. The offshoring that <em>does</em> happen is strongly biased to <em>custom software development</em> which, by design, can only solve one person’s problem, so more developers than marketers are needed.</p>
<p>It is not the case (as commonly believed by nerds) that marketing is a <em>substitute</em> for code quality. The best marketing in the world cannot force people to pay for a useless product.</p>
<p>Need to hire a really great programmer? Want a job that doesn't drive you crazy? Visit the <a href="http://jobs.joelonsoftware.com/">Joel on Software Job Board</a>: Great software jobs, great people.
</p></div>
    </summary>
    <updated>2010-02-12T03:12:26Z</updated>
    <author>
      <name>Joel Spolsky</name>
    </author>
    <source>
      <id>http://www.joelonsoftware.com</id>
      <logo>http://www.joelonsoftware.com/RssJoelOnSoftware.jpg</logo>
      <author>
        <name>Joel Spolsky</name>
      </author>
      <link href="http://www.joelonsoftware.com" rel="alternate" type="text/html"/>
      <link href="http://joelonsoftware.com/rss.xml" rel="self" type="application/rss+xml"/>
      <rights>Copyright 1999-2008 Joel Spolsky.</rights>
      <subtitle>Painless Software Management</subtitle>
      <title>Joel on Software</title>
      <updated>2010-03-10T22:12:08Z</updated>
    </source>
  </entry>

  <entry>
    <id>tag:blogger.com,1999:blog-14903426.post-1180460429799981765</id>
    <link href="http://blog.cleverelephant.ca/feeds/1180460429799981765/comments/default" rel="replies" type="application/atom+xml"/>
    <link href="https://www.blogger.com/comment.g?blogID=14903426&amp;postID=1180460429799981765" rel="replies" type="text/html"/>
    <link href="http://www.blogger.com/feeds/14903426/posts/default/1180460429799981765" rel="edit" type="application/atom+xml"/>
    <link href="http://www.blogger.com/feeds/14903426/posts/default/1180460429799981765" rel="self" type="application/atom+xml"/>
    <link href="http://blog.cleverelephant.ca/2010/02/more-googlesoft.html" rel="alternate" type="text/html"/>
    <title>More Googlesoft</title>
    <content type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml"><img alt="Googlesoft" src="http://www.wired.com/wired/archive/12.03/images/FF_118_google_4.jpg" style="float: right; padding: 6px;"/>More great news from the G-Men and G-Girls down in Mountain View – social networking goodness is now available from Google, in the form of <a href="http://www.google.com/buzz">Google Buzz</a>.<br/><br/>Since their first attempt at a standalone social network, <a href="http://www.orkut.com/">Orkut</a>, never achieved escape velocity (<i>exceto no Brasil!</i>), Google is trying again. Only this time, they are stealing a page from Microsoft and using an existing dominant franchise to force their new offering into the marketplace. Oh, and incidentally crush the incumbents.<br/><br/>The <a href="http://news.cnet.com/8301-30684_3-10449662-265.html">CNET coverage</a> has this perfect sentence:<br/><br/><i>Google is attempting to do this [compete with Facebook] by taking Gmail, one of its more popular products, and integrating Buzz directly into the Gmail interface.</i><br/><br/>I mean, the parallel construction just writes itself! <br/><br/><i>Microsoft is attempting to do this [compete with Netscape] by taking Windows, one of its more popular products, and integrating Internet Explorer directly into the Windows interface.</i><br/><br/>But Google's not content to just crush a strong competitor by leveraging their market-leading franchise! Remember, these are the smartest people in technology! Today they <b>also</b> announced they'll be crushing a few puny start-ups.  <a href="http://foursquare.com/">Fourquare</a> and <a href="http://gowalla.com">Gowalla</a>, with all of 200,000 subscribers between them (divide that number into their $20M in combined venture money for a laugh) will henceforth be known as "that thing I tried before <a href="http://www.google.com/intl/en/mobile/buzz/">Google Buzz for mobile</a> came along".<br/><br/><small>(Incidentally, I'm looking forward to the day I receive my last Foursquare-initiated tweet, that charming idea got old incredibly fast. <b><i>I don't care if you're at the 7-11!</i></b>)</small><br/><br/>Keep on sucking up all the oxygen in the room G-People, yours is the fire that purifies, that consumes us down to the ashes of our soul and monetizes the dust left behind.<br/> <div class="blogger-post-footer"><img alt="" height="1" src="https://blogger.googleusercontent.com/tracker/14903426-1180460429799981765?l=blog.cleverelephant.ca" width="1"/></div></div>
    </content>
    <updated>2010-02-10T06:20:50Z</updated>
    <published>2010-02-10T05:25:00Z</published>
    <author>
      <name>Paul Ramsey</name>
      <email>noreply@blogger.com</email>
      <uri>http://www.blogger.com/profile/04056244920940087995</uri>
    </author>
    <source>
      <id>tag:blogger.com,1999:blog-14903426</id>
      <author>
        <name>Paul Ramsey</name>
        <email>noreply@blogger.com</email>
        <uri>http://www.blogger.com/profile/04056244920940087995</uri>
      </author>
      <link href="http://blog.cleverelephant.ca/feeds/posts/default" rel="http://schemas.google.com/g/2005#feed" type="application/atom+xml"/>
      <link href="http://www.blogger.com/feeds/14903426/posts/default" rel="self" type="application/atom+xml"/>
      <link href="http://blog.cleverelephant.ca/" rel="alternate" type="text/html"/>
      <link href="http://pubsubhubbub.appspot.com/" rel="hub" type="text/html"/>
      <link href="http://www.blogger.com/feeds/14903426/posts/default?start-index=26&amp;max-results=25" rel="next" type="application/atom+xml"/>
      <subtitle>Open source geospatial opinions and techniques, seen from the trenches and from far far above...</subtitle>
      <title>Paul Ramsey</title>
      <updated>2010-03-10T20:35:59Z</updated>
    </source>
  </entry>

  <entry>
    <id>tag:blogger.com,1999:blog-14903426.post-3774949531892289503</id>
    <link href="http://blog.cleverelephant.ca/feeds/3774949531892289503/comments/default" rel="replies" type="application/atom+xml"/>
    <link href="https://www.blogger.com/comment.g?blogID=14903426&amp;postID=3774949531892289503" rel="replies" type="text/html"/>
    <link href="http://www.blogger.com/feeds/14903426/posts/default/3774949531892289503" rel="edit" type="application/atom+xml"/>
    <link href="http://www.blogger.com/feeds/14903426/posts/default/3774949531892289503" rel="self" type="application/atom+xml"/>
    <link href="http://blog.cleverelephant.ca/2010/02/chocolate-and-peanut-butter.html" rel="alternate" type="text/html"/>
    <title>Chocolate and Peanut Butter?</title>
    <content type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml">My two favourite things, ArcView 3 and PostGIS, together at last...<br/><br/><a href="http://lac-conakry.blogspot.com/2010/02/postgis-mis-jour-o.html"><img border="0" src="http://4.bp.blogspot.com/_tFdskxT_0Jo/S0hzRKw9gHI/AAAAAAAAO10/YLscWnDZUdE/s1600/PostGIS.jpg" width="500"/></a><div class="blogger-post-footer"><img alt="" height="1" src="https://blogger.googleusercontent.com/tracker/14903426-3774949531892289503?l=blog.cleverelephant.ca" width="1"/></div></div>
    </content>
    <updated>2010-02-05T20:17:02Z</updated>
    <published>2010-02-05T20:11:00Z</published>
    <author>
      <name>Paul Ramsey</name>
      <email>noreply@blogger.com</email>
      <uri>http://www.blogger.com/profile/04056244920940087995</uri>
    </author>
    <source>
      <id>tag:blogger.com,1999:blog-14903426</id>
      <author>
        <name>Paul Ramsey</name>
        <email>noreply@blogger.com</email>
        <uri>http://www.blogger.com/profile/04056244920940087995</uri>
      </author>
      <link href="http://blog.cleverelephant.ca/feeds/posts/default" rel="http://schemas.google.com/g/2005#feed" type="application/atom+xml"/>
      <link href="http://www.blogger.com/feeds/14903426/posts/default" rel="self" type="application/atom+xml"/>
      <link href="http://blog.cleverelephant.ca/" rel="alternate" type="text/html"/>
      <link href="http://pubsubhubbub.appspot.com/" rel="hub" type="text/html"/>
      <link href="http://www.blogger.com/feeds/14903426/posts/default?start-index=26&amp;max-results=25" rel="next" type="application/atom+xml"/>
      <subtitle>Open source geospatial opinions and techniques, seen from the trenches and from far far above...</subtitle>
      <title>Paul Ramsey</title>
      <updated>2010-03-10T20:35:59Z</updated>
    </source>
  </entry>

  <entry xml:lang="en">
    <id>http://www.kralidis.ca/blog/?p=433</id>
    <link href="http://www.kralidis.ca/blog/2010/02/03/why-xml-libraries-rock/" rel="alternate" type="text/html"/>
    <title>Why XML Libraries Rock</title>
    <summary>msautotest is MapServer’s way of unit testing and sanity checking various features and bug fixes.
When testing the addition of AuthorityURL and Identifier support in WMS Capabilities XML, I found an issue with the output being invalid XML, which was tested and fixed.  Another fix was then added to ensure valid XML (isn’t open source [...]</summary>
    <updated>2010-02-03T23:46:44Z</updated>
    <category term="geospatial"/>
    <category term="open source"/>
    <category term="technology"/>
    <author>
      <name>tomkralidis</name>
    </author>
    <source>
      <id>http://www.kralidis.ca/blog</id>
      <link href="http://www.kralidis.ca/blog/feed/" rel="self" type="application/atom+xml"/>
      <link href="http://www.kralidis.ca/blog" rel="alternate" type="text/html"/>
      <subtitle>I use this blog to post my thoughts and random stuff from time to time.  See my About page for more info about me.  Note that my views and opinions expressed here are my own and do not reflect the views of my employer</subtitle>
      <title>tommy's scratchpad</title>
      <updated>2010-02-19T22:12:06Z</updated>
    </source>
  </entry>

  <entry>
    <id>tag:blogger.com,1999:blog-14903426.post-5948050448019760171</id>
    <link href="http://blog.cleverelephant.ca/feeds/5948050448019760171/comments/default" rel="replies" type="application/atom+xml"/>
    <link href="https://www.blogger.com/comment.g?blogID=14903426&amp;postID=5948050448019760171" rel="replies" type="text/html"/>
    <link href="http://www.blogger.com/feeds/14903426/posts/default/5948050448019760171" rel="edit" type="application/atom+xml"/>
    <link href="http://www.blogger.com/feeds/14903426/posts/default/5948050448019760171" rel="self" type="application/atom+xml"/>
    <link href="http://blog.cleverelephant.ca/2010/02/die-legacy-die.html" rel="alternate" type="text/html"/>
    <title>Die legacy, die!</title>
    <content type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml"><img src="http://vampires.monstrous.com/pictures/vampire10.jpg" style="float: right; height: 250px; padding: 5px;"/>'Tis the season to drive a stake through the heart of old technology apparently.  Steve Jobs appears to be <a href="http://www.informationweek.com/news/infrastructure/management/showArticle.jhtml?articleID=222600577">taking especial glee</a> in killing off Flash as a video format. And Google is <a href="http://blogs.computerworld.com/15509/google_internet_explorer_6_and_chrome_3_must_die">doing their damnedest</a> to run IE6 out of town.  It takes a certain amount of self-confidence in yourself to pit your unstoppable force against the immovable object of an entrenched de facto standard, but both Apple and Google seemed positioned to carry it off.<br/><br/>In the case of Google, the sheer number of alternatives, ease of access to those alternatives, and popularity of their products will be enough to pry the final population of IE6 users out of their millennial stupor.<br/><br/>For Jobs, the task requires more balls (right now, his crown jewel iPhone is <a href="http://www.macrumors.com/2010/01/30/apple-corrects-ipad-promo-video-to-show-no-flash-capability/">showing lots of holes</a> in web pages where Flash content should be), but is slightly easier, because he doesn't have convince millions of users to change their software, he only has to convince a handful of web sites to <a href="http://www.youtube.com/html5">add an HTML5 option</a>. And the <a href="http://en.wikipedia.org/wiki/HTML5">HTML5 standard</a> on video embedding is just close enough to "ready" that those sites (YouTube, vimeo, etc) will begin providing HTML5-based alternatives to browsers that can support them (like, the iPad, and Safari, and the iPhone).<br/><br/>I wish godspeed to both Apple and Google in their endeavors, since both Flash video and IE6 can't hit the scrapheap soon enough, in my opinion.<br/> <div class="blogger-post-footer"><img alt="" height="1" src="https://blogger.googleusercontent.com/tracker/14903426-5948050448019760171?l=blog.cleverelephant.ca" width="1"/></div></div>
    </content>
    <updated>2010-02-02T04:17:35Z</updated>
    <published>2010-02-02T01:14:00Z</published>
    <author>
      <name>Paul Ramsey</name>
      <email>noreply@blogger.com</email>
      <uri>http://www.blogger.com/profile/04056244920940087995</uri>
    </author>
    <source>
      <id>tag:blogger.com,1999:blog-14903426</id>
      <author>
        <name>Paul Ramsey</name>
        <email>noreply@blogger.com</email>
        <uri>http://www.blogger.com/profile/04056244920940087995</uri>
      </author>
      <link href="http://blog.cleverelephant.ca/feeds/posts/default" rel="http://schemas.google.com/g/2005#feed" type="application/atom+xml"/>
      <link href="http://www.blogger.com/feeds/14903426/posts/default" rel="self" type="application/atom+xml"/>
      <link href="http://blog.cleverelephant.ca/" rel="alternate" type="text/html"/>
      <link href="http://pubsubhubbub.appspot.com/" rel="hub" type="text/html"/>
      <link href="http://www.blogger.com/feeds/14903426/posts/default?start-index=26&amp;max-results=25" rel="next" type="application/atom+xml"/>
      <subtitle>Open source geospatial opinions and techniques, seen from the trenches and from far far above...</subtitle>
      <title>Paul Ramsey</title>
      <updated>2010-03-10T20:35:59Z</updated>
    </source>
  </entry>

  <entry xml:lang="en">
    <id>http://crschmidt.net/blog/?p=405</id>
    <link href="http://crschmidt.net/blog/archives/405/how-kml-succeeds-and-fails-as-a-web-format/" rel="alternate" type="text/html"/>
    <title>How KML Succeeds and Fails as a Web Format</title>
    <summary>KML is linked. It is self-descriptive, and can rely entirely on following of links to obtain more information, whether that is styles or additional data.
However, the most common way of packaging KML is as KMZ — which is sort of like packaging an HTML page inside a zip file with all of its component parts. [...]</summary>
    <content type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml"><p>KML is linked. It is self-descriptive, and can rely entirely on following of links to obtain more information, whether that is styles or additional data.</p>
<p>However, the most common way of packaging KML is as KMZ — which is sort of like packaging an HTML page inside a zip file with all of its component parts. When this is done, web-based tools — like the Javascript support in browsers — lose all access to the data other than through a server side proxy (and even that isn’t a trivial thing to achieve). Styling information and related parts are not stored as separate resources on the web. The information available in the KML has suddenly become just another application-specific format.</p>
<p>If this were uncommon, it wouldn’t be such a shame; it’s certainly possible to distribute data like this for use cases where it is necessary, including offline use and other use cases. However, this is not a limited situation — in fact, more than 80% of KML made available on the web tends to be primarily available as KMZ.  This packaging of KML leaves much to be desired, and limits the use of such data in web-based tools.</p>
<p>The web already has ways to compress data — gzip-based compression is common on many web servers (a tradeoff of CPU time for bandwidth), and works fine in all KML clients I’m aware of (including Google Earth and Google Maps). This lets your data exist on the web of resources and documents, rather than in a zipped up bundle.</p>
<p>My interest in this matter should be obvious: I work with mapping on the web. Ideally, I work with tools that don’t require server-side code — every piece of server side code you have to build is another heavy requirements placed on the users of any software. Browsers, as a common platform across which developers can code, are a worthwhile target, and trapping your data in KMZ hides it from browsers.</p>
<p>Free your KML! Publish on the Web! Don’t use KMZ!</p></div>
    </content>
    <updated>2010-02-01T15:46:28Z</updated>
    <category term="default"/>
    <author>
      <name>crschmidt</name>
    </author>
    <source>
      <id>http://crschmidt.net/blog</id>
      <link href="http://crschmidt.net/blog/feed/" rel="self" type="application/atom+xml"/>
      <link href="http://crschmidt.net/blog" rel="alternate" type="text/html"/>
      <subtitle>Ramblings of a GIS Hacker</subtitle>
      <title>Technical Ramblings</title>
      <updated>2010-02-01T15:46:28Z</updated>
    </source>
  </entry>

  <entry xml:lang="en">
    <id>http://crschmidt.net/blog/?p=400</id>
    <link href="http://crschmidt.net/blog/archives/400/haiti-crisis-map-effort/" rel="alternate" type="text/html"/>
    <title>Haiti Crisis Map Effort</title>
    <summary>One of the most difficult thigns to do in time of disaster is to quickly organize, marshal, and present resources. This applies across all aspects of disaster response — whether it be managing and distributing food, organizing volunteers, or setting up technical resources to assist with the relief effort.
The last is the field I obviously [...]</summary>
    <content type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml"><p>One of the most difficult thigns to do in time of disaster is to quickly organize, marshal, and present resources. This applies across all aspects of disaster response — whether it be managing and distributing food, organizing volunteers, or setting up technical resources to assist with the relief effort.</p>
<p>The last is the field I obviously have the most experience/ability to help with, especially with regard to mapping. In past situations, I have put some of my map expertise to work in helping to create a resource for the disaster; the last significant case for me was in 2007, when I managed a ton of imagery made available as part of the efforts with regard to the San Diego wildfires. (That map is <a href="http://hypercube.telascience.org/fire/">still available</a>, though it’s a bit worse for the wear at this point.)</p>
<p>When the Haiti Crisis happened, I let it slide; I figured that someone else would step up to manage the data this time. After a while, though, I saw an increased number of imagery sources, and little coherent organization of the resources by a single party — one of the key things that made the 2007 fires map successful. As a result, and combined with some data that was being more narrowly published, I decided to set up a map. The first day I did any significant work on this was over the weekend of the 15th.</p>
<p>At first, the map wasn’t particularly great; it was primarily just a tool to view a bunch of satellite data that was being made available. This was primarily just a quality control check for users of OSM who needed access to the data to complete the map of Haiti. Over time, more data became available — and more importantly, the OpenStreetMap map data became a primary map for the area and rescue efforts. Suddenly, the <a href="http://haiticrisismap.org">Haiti Crisis Map</a> — then just the “UAV map” — was being used more and more.</p>
<p>As more and more data became available, the old map, using a simple OpenLayers layer switcher, became unwieldy; never a user-friendly layout to begin with, adding 20 layers to an OpenLayers map with an unplanned mix of base and overlay layers leaves much to be desired. </p>
<p>By Wednesday, it was clear that the hodge-podge of available disk space attached to the hosting machine wasn’t going to cut it; though we started with just over 4TB available spread over 3 different drives, managing the data was becoming unwieldy at the same rate as the UI. Thankfully, by Wednesday the 20th, John Graham was able to get access to another Sun X4500 and set it up, giving us a clean 16TB drive to put new and old imagery on. (About 6 hours later, the NFS machine to which all of the current data was stored began to fail, most likely due to heavier than normal load on the machine; I spent most of that day moving data off the old drive and onto the new.)</p>
<p>In addition to the data migration, at this time, Aaron Racicot was able to step up and offer his help in building a GeoExt based UI for the map.  His efforts turned my hack into a reasonable UI for browsing the map, and it is really only because of that that I was able to keep going.</p>
<p>Over the weekend, at CrisisCamp, I was able to add additional features to support Ushahidi; the code was moved into Github,  <a href="http://github.com/crschmidt/haitibrowser/">haitibrowser</a>.  In the middle of this week, the code was integrated into APAN, the All Partners Access Network, to support the efforts of SOUTHCOM in maintaining a high quality Central Operating Picture of events in the area.</p>
<p>Over the past two weeks, data has continued to pour in, in the hundreds of gigabytes a day. This is in part thanks to the wonderful availability of imagery thanks to the generosity of the commercial providers, in addition to the data made available by organizations like NOAA, companies like Google, and more. The extremely high quality imagery produced by RIT/ImageCat/WorldBank, for example, is an example of what is possible with the hard work of people with great hardware and a great team.</p>
<p>Using my knowledge — gleaned from my efforts in the earlier days of OpenAerialMap — I have been able to process this data and make it available as tiles and WMS to all consumers, primarily targeted towards OpenStreetMap editors. Over two dozene layers are available via what is now called the Haiti Crisis Map, each one adding a different viewpoint of data. In addition, the map contains links to other files like KML collections from Ushahidi and Sahana, and as recently as yesterday, gained the ability to create your own layers, which you can access in the map and provide as a link to someone else, as well as export as KML.</p>
<p>As part of the process of making the site more readily available, it is now available from haiticrisismap.org. </p>
<p>The most difficult part of this is attempting to manage the large sources of data. Thankfully, the resources that I have available have allowed me to be a bit lax in my conservation of disk space, CPU time, etc. Many thanks to CalIT, SDSU/SDSC, and Telascience for organizing these resources. In addition, a lot of the ‘hard work’ in the UI has been done by Aaron Racicot of Z-Pulley. I’ve done a lot of minor work, but the major UI layout and work has been done by him.</p>
<p>Thankfully, I’ve had the support of a lot of good people in this effort, and a lot of good tools to use. Using GDAL + OSSIM in the background for image processing, MapServer + TileCache for mosaicing and serving, OpenLayers + GeoExt for a UI, and OSM for a base map data layer have all made this effort possible.</p>
<p>The haiticrisismap will continue to see improvements. It shows a lot about what a dedicated small group of people can do with an investment when properly motivated; I can honestly say that because of the resources made available through these efforts, we have saved lives.  Whether it is through maps produced through OSM being loaded onto Volunteer GPS systems, or the use of the data to determine an accurate location in a map by Ushahidi volunteers, this tool has been an effective aid to the relief effort in Haiti, and will continue to do so as much as is possible in the coming days and weeks.</p></div>
    </content>
    <updated>2010-01-29T22:38:31Z</updated>
    <category term="default"/>
    <author>
      <name>crschmidt</name>
    </author>
    <source>
      <id>http://crschmidt.net/blog</id>
      <link href="http://crschmidt.net/blog/feed/" rel="self" type="application/atom+xml"/>
      <link href="http://crschmidt.net/blog" rel="alternate" type="text/html"/>
      <subtitle>Ramblings of a GIS Hacker</subtitle>
      <title>Technical Ramblings</title>
      <updated>2010-02-01T15:46:28Z</updated>
    </source>
  </entry>

  <entry xml:lang="en-us">
    <id>http://www.joelonsoftware.com/items/2010/01/26.html</id>
    <link href="http://www.joelonsoftware.com/items/2010/01/26.html" rel="alternate" type="text/html"/>
    <title>Why testers?</title>
    <summary type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml"><p><span style="display: block; margin: 0 0 0.25ex 1em; float: right;"><a href="http://www.joelonsoftware.com/items/2010/01/26dog!.JPG"><img alt="" src="http://www.joelonsoftware.com/items/2010/01/26dog!-thumbnail.JPG" style="border: 1px solid #666;"/></a></span>My sister got her kids a little puppy, and they’ve been trying to train it. To live with a dog in the house, you need to teach it not to jump on people, not to poop in the house, to sit on command, and to never, ever, <em>ever </em>chew on the iPad. Never. Good girl.</p>
<p>With dogs the main trick to training is that feedback has to be immediate. If you come home to discover that, hours before, the dog tipped over the garbage can in the kitchen, it’s too late for training. You can yell at her but she just won’t get what you’re going on about. Dogs are just not that smart.</p>
<p>For programmers, getting better at what you do requires quick feedback, positive and negative, on what you’ve just done. The faster you get the feedback, the faster you’ll learn. With long-cycle shrinkwrap software, it can take a year or more to hear feedback from customers.</p>
<p><span style="display: block; margin: 0 0 0.25ex 1em; float: right;"><a href="http://www.joelonsoftware.com/items/2010/01/26marzocco.jpg"><img alt="" src="http://www.joelonsoftware.com/items/2010/01/26marzocco-thumbnail.jpg" style="border: 1px solid #666;"/></a></span>That’s one of the reasons we have testers. A great tester gives programmers immediate feedback on what they did right and what they did wrong. Believe it or not, one of the most valuable features of a tester is providing <em>positive</em> reinforcement. There is no better way to improve a programmer’s morale, happiness, and subjective sense of well-being than <strike>a La Marzocco Linea espresso machine</strike> to have dedicated testers who get frequent releases from the developers, try them out, and give negative <em>and </em>positive feedback. Otherwise it’s depressing to be a programmer. Here I am, typing away, writing all this awesome code, and nobody cares. Boo hoo.</p>
<p>Who should be a tester? That’s tricky! Software testing is one of those careers that isn’t that well known, so a lot of people who would be great at testing and would probably enjoy it a lot never consider applying for jobs as testers. </p>
<p>Signs of a good tester:</p>
<ul>
<li>Scientific</li>
<li>Loves a good puzzle, even the kind that takes days to solve</li>
<li>Likes to think about things methodically</li>
<li>Generally likes working with software and computers</li></ul>
<p>You don’t have to be a programmer to be a tester. A lot of companies want testers to be programmers who write automated test suites. It seems more efficient that way. This reflects a misunderstanding of what testers are supposed to do, which is evaluate new code, find the good things, find the bad things, and give positive and negative reinforcement to the developers. Sure, automated test suites are a time saver, but testing software covers so much more than that. If you put too much emphasis on those scripts, you won’t notice misaligned text, hostile user interfaces, bad color choices, and inconsistency. Worse, you’ll have a culture of testers frantically working to get their <em>own</em> code working, which crowds out what you need them to do: evaluate someone <em>else’s</em> code.</p>
<p>A particularly terrible idea is to offer testing jobs to the programmers who apply for jobs at your company and aren’t good enough to be programmers. Testers <em>don’t</em> have to be programmers, but if you spend long enough acting like a tester is just an incompetent programmer, eventually you’re building a team of incompetent programmers, not a team of competent testers. Since testing can be taught on the job, but general intelligence can’t, you really need very smart people as testers, even if they don’t have relevant experience. Many of the best testers I’ve worked with didn’t even realize they wanted to be testers until someone offered them the job.</p>
<p>If you:</p>
<ul>
<li>Love software and computers</li>
<li>Want to work on a software team, and</li>
<li>Don’t particularly like programming</li></ul>
<p>you should consider being a tester. (<a href="http://www.fogcreek.com/Jobs/QA.html">We’re hiring</a>! What a coincidence!)</p>
<p>Need to hire a really great programmer? Want a job that doesn't drive you crazy? Visit the <a href="http://jobs.joelonsoftware.com/">Joel on Software Job Board</a>: Great software jobs, great people.
</p></div>
    </summary>
    <updated>2010-01-26T21:04:05Z</updated>
    <author>
      <name>Joel Spolsky</name>
    </author>
    <source>
      <id>http://www.joelonsoftware.com</id>
      <logo>http://www.joelonsoftware.com/RssJoelOnSoftware.jpg</logo>
      <author>
        <name>Joel Spolsky</name>
      </author>
      <link href="http://www.joelonsoftware.com" rel="alternate" type="text/html"/>
      <link href="http://joelonsoftware.com/rss.xml" rel="self" type="application/rss+xml"/>
      <rights>Copyright 1999-2008 Joel Spolsky.</rights>
      <subtitle>Painless Software Management</subtitle>
      <title>Joel on Software</title>
      <updated>2010-03-10T22:12:08Z</updated>
    </source>
  </entry>

  <entry>
    <id>tag:blogger.com,1999:blog-14903426.post-6711599897897473781</id>
    <link href="http://blog.cleverelephant.ca/feeds/6711599897897473781/comments/default" rel="replies" type="application/atom+xml"/>
    <link href="https://www.blogger.com/comment.g?blogID=14903426&amp;postID=6711599897897473781" rel="replies" type="text/html"/>
    <link href="http://www.blogger.com/feeds/14903426/posts/default/6711599897897473781" rel="edit" type="application/atom+xml"/>
    <link href="http://www.blogger.com/feeds/14903426/posts/default/6711599897897473781" rel="self" type="application/atom+xml"/>
    <link href="http://blog.cleverelephant.ca/2010/01/happy-jobsmas-eve.html" rel="alternate" type="text/html"/>
    <title>Happy Jobsmas Eve!</title>
    <content type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml">How does your family mark Jobsmas Eve? Do you sing 1,2,3,4 and dance around your AirPort Extreme router, like my family? Or do you have a more relaxed, modern Jobsmas Eve, and just play networked iPod games together?<br/><br/>While, obviously, I am excited about the approach of Jobsmas, I find the hand-wringing and obsession about the physical shape of the Gift to be a bit over the top. <br/><br/><img alt="Possible Representation of the Gift" src="http://images.macrumors.com/article/2010/01/25/155026-tablet_2_2_500.jpg"/><br/><br/>No matter what, it's going to be a glass slab about the size of a hard cover book, OK? Does it really matter if the back is silver or black? What gets my Jobsmas noodles in a knot is ... what is it going to <b>do</b>??? <br/><br/>It's all about the software, how is this Gift different from the Gifts that have come before? Will the the new feature be something pointless and pretty like "Cover Flow", or something useful and immediately intuitive like "flick to scroll"? Pointless and pretty would be <a href="http://www.youtube.com/watch?v=Jd3-eiid-Uw">virtual 3D display</a> via head tracking.  Useful and intuitive would be <a href="http://www.macrumors.com/2010/01/12/islate-input-alternatives-handwriting-recognition-without-a-stylus-and-much-more/">pen-less handwriting</a>.<br/><br/>No matter what, I am looking forward to getting up tomorrow, putting on my black turtleneck and black jeans, and celebrating true spirit of Jobsmas, by oggling the Gift and figuring out how it Changes Everything.<br/> <div class="blogger-post-footer"><img alt="" height="1" src="https://blogger.googleusercontent.com/tracker/14903426-6711599897897473781?l=blog.cleverelephant.ca" width="1"/></div></div>
    </content>
    <updated>2010-01-26T17:29:39Z</updated>
    <published>2010-01-26T17:13:00Z</published>
    <author>
      <name>Paul Ramsey</name>
      <email>noreply@blogger.com</email>
      <uri>http://www.blogger.com/profile/04056244920940087995</uri>
    </author>
    <source>
      <id>tag:blogger.com,1999:blog-14903426</id>
      <author>
        <name>Paul Ramsey</name>
        <email>noreply@blogger.com</email>
        <uri>http://www.blogger.com/profile/04056244920940087995</uri>
      </author>
      <link href="http://blog.cleverelephant.ca/feeds/posts/default" rel="http://schemas.google.com/g/2005#feed" type="application/atom+xml"/>
      <link href="http://www.blogger.com/feeds/14903426/posts/default" rel="self" type="application/atom+xml"/>
      <link href="http://blog.cleverelephant.ca/" rel="alternate" type="text/html"/>
      <link href="http://pubsubhubbub.appspot.com/" rel="hub" type="text/html"/>
      <link href="http://www.blogger.com/feeds/14903426/posts/default?start-index=26&amp;max-results=25" rel="next" type="application/atom+xml"/>
      <subtitle>Open source geospatial opinions and techniques, seen from the trenches and from far far above...</subtitle>
      <title>Paul Ramsey</title>
      <updated>2010-03-10T20:35:59Z</updated>
    </source>
  </entry>

  <entry xml:lang="en-us">
    <id>http://www.joelonsoftware.com/items/2010/01/25.html</id>
    <link href="http://www.joelonsoftware.com/items/2010/01/25.html" rel="alternate" type="text/html"/>
    <title>Rocket Surgery Made Easy</title>
    <summary type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml"><p><a href="http://www.sensible.com/rocketsurgery/index.html"><img align="right" alt="" border="0" src="http://www.joelonsoftware.com/items/2010/01/25Krug.PNG" style="MARGIN-LEFT: 5px;"/></a><a href="http://www.sensible.com/">Steve Krug</a> has written a follow up to his usability classic <a href="http://www.sensible.com/dmmt.html"><em>Don’t Make Me Think</em></a><em>. </em>The sequel, <a href="http://www.sensible.com/rocketsurgery/index.html"><em>Rocket Surgery Made Easy</em></a><em>, </em>is a terrific, short, concise, fun guide to running simple “hallway” usability tests to improve the usability of your software and websites. Highly recommended.</p>
<p> </p>
<p>Need to hire a really great programmer? Want a job that doesn't drive you crazy? Visit the <a href="http://jobs.joelonsoftware.com/">Joel on Software Job Board</a>: Great software jobs, great people.
</p></div>
    </summary>
    <updated>2010-01-25T21:21:10Z</updated>
    <author>
      <name>Joel Spolsky</name>
    </author>
    <source>
      <id>http://www.joelonsoftware.com</id>
      <logo>http://www.joelonsoftware.com/RssJoelOnSoftware.jpg</logo>
      <author>
        <name>Joel Spolsky</name>
      </author>
      <link href="http://www.joelonsoftware.com" rel="alternate" type="text/html"/>
      <link href="http://joelonsoftware.com/rss.xml" rel="self" type="application/rss+xml"/>
      <rights>Copyright 1999-2008 Joel Spolsky.</rights>
      <subtitle>Painless Software Management</subtitle>
      <title>Joel on Software</title>
      <updated>2010-03-10T22:12:08Z</updated>
    </source>
  </entry>

  <entry xml:lang="en-us">
    <id>http://www.joelonsoftware.com/items/2010/01/22.html</id>
    <link href="http://www.joelonsoftware.com/items/2010/01/22.html" rel="alternate" type="text/html"/>
    <title>A little less conversation</title>
    <summary type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml"><p><span style="display: block; margin: 0 0 0.25ex 1em; float: right;"><a href="http://www.joelonsoftware.com/items/2010/01/22diagram.jpg"><img alt="" src="http://www.joelonsoftware.com/items/2010/01/22diagram-thumbnail.jpg" style="border: 1px solid #666;"/></a></span>“As companies expand, the people within them start to specialize. At such a point, some managers will conclude that they have a ‘keep everyone on the same page’ problem. But often what they actually have is a ‘stop people from meddling when there are already enough smart people working on something’ problem.”</p>
<p>From my latest Inc. column: <a href="http://www.inc.com/magazine/20100201/a-little-less-conversation.html">A Little Less Conversation</a></p>
<p> </p>
<p>Need to hire a really great programmer? Want a job that doesn't drive you crazy? Visit the <a href="http://jobs.joelonsoftware.com/">Joel on Software Job Board</a>: Great software jobs, great people.
</p></div>
    </summary>
    <updated>2010-01-22T20:33:45Z</updated>
    <author>
      <name>Joel Spolsky</name>
    </author>
    <source>
      <id>http://www.joelonsoftware.com</id>
      <logo>http://www.joelonsoftware.com/RssJoelOnSoftware.jpg</logo>
      <author>
        <name>Joel Spolsky</name>
      </author>
      <link href="http://www.joelonsoftware.com" rel="alternate" type="text/html"/>
      <link href="http://joelonsoftware.com/rss.xml" rel="self" type="application/rss+xml"/>
      <rights>Copyright 1999-2008 Joel Spolsky.</rights>
      <subtitle>Painless Software Management</subtitle>
      <title>Joel on Software</title>
      <updated>2010-03-10T22:12:08Z</updated>
    </source>
  </entry>

  <entry>
    <id>tag:blogger.com,1999:blog-14903426.post-8755665542113216265</id>
    <link href="http://blog.cleverelephant.ca/feeds/8755665542113216265/comments/default" rel="replies" type="application/atom+xml"/>
    <link href="https://www.blogger.com/comment.g?blogID=14903426&amp;postID=8755665542113216265" rel="replies" type="text/html"/>
    <link href="http://www.blogger.com/feeds/14903426/posts/default/8755665542113216265" rel="edit" type="application/atom+xml"/>
    <link href="http://www.blogger.com/feeds/14903426/posts/default/8755665542113216265" rel="self" type="application/atom+xml"/>
    <link href="http://blog.cleverelephant.ca/2010/01/new-york-code-sprint-2010.html" rel="alternate" type="text/html"/>
    <title>New York Code Sprint 2010</title>
    <content type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml"><b>Update: We're expanding from the "C tribe" to the "curly  braces tribe" and bringing in some JavaScripters too. Tim Schaub <i>and</i> Andreas Hocevar of OpenLayers/GeoExt will be joining the crew!</b><br/><br/><b>Update 2: If you haven't <a href="http://wiki.osgeo.org/wiki/New_York_Code_Sprint_2010#Participation">added your name</a> to the wiki and <a href="http://wiki.osgeo.org/wiki/New_York_Code_Sprint_2010#Hotel">booked your hotel room</a>, you don't exist! GeoExt, OpenLayers folks don't delay! </b><br/><br/><b>Update 3: <a href="http://www.avencia.com/">Avencia</a> has joined as a sponsor (and is sending a couple staff to join in the fun). Along with OpenGeo, who are providing us with lovely space and free internet access, that bring our sponsorship docket to <a href="http://www.lizardtech.com/">LizardTech</a>, <a href="http://www.coordinatesolutions.com">Coordinate Solutions</a>, <a href="http://www.qpublic.net/">qPublic.net</a>, <a href="http://fargeo.com/">Farallon Geographics</a>, <a href="http://www.avencia.com/">Avencia</a> and <a href="http://oepngeo.org/">OpenGeo</a>!</b><br/><br/><b>Update 4: Other members of the curly braces tribe will be in attendance, in the persons of Justin Deoliveira, Andrea Aime, and Gabriel Roldan from GeoServer. I'm looking forward to working with them on adding PostGIS 1.5 GEOGRAPHY support in GeoServer.</b><br/><br/><img src="http://wiki.osgeo.org/images/8/89/I_osgeo_ny.png" style="float: right;"/>Whoops, it's 2010! How did that happen?<br/><br/>I hope all members of the open source C tribe have gone beyond thinking about attending the <a href="http://wiki.osgeo.org/wiki/New_York_Code_Sprint_2010">New York Code Sprint</a> (February 20 to 23) and moved into the travel planning stage! Don't forget to book your hotel, the room block closes in three weeks.<br/><br/>The list of attendees includes top contributors from MapServer, GDAL, OGR, and LibLAS. I'm feeling a little lonely at the PostGIS table with just Olivier to keep me company. And where are the folks from QGIS, Mapnik and GRASS? We love you guys! Come on, group hug. There you go.<br/><br/>We have four great sponsors now (<a href="http://www.lizardtech.com/">LizardTech</a>, <a href="http://www.coordinatesolutions.com">Coordinate Solutions</a>, <a href="http://www.qpublic.net/">qPublic.net</a>, <a href="http://fargeo.com/">Farallon Geographics</a>) and are looking for a couple more to round out the event. Thanks to our sponsors so far!<br/><br/>Remember to sign up to the mailing list and add yourself to the wiki page so we know you are coming, and you receive all the event notices, it's impossible to plan for you if we don't know you exist. See you soon in the Big Apple!<br/><br/><small>Thanks to Joel Schlagel for the logo!</small><br/> <div class="blogger-post-footer"><img alt="" height="1" src="https://blogger.googleusercontent.com/tracker/14903426-8755665542113216265?l=blog.cleverelephant.ca" width="1"/></div></div>
    </content>
    <updated>2010-01-22T18:29:34Z</updated>
    <published>2010-01-04T15:30:00Z</published>
    <category scheme="http://www.blogger.com/atom/ns#" term="postgis"/>
    <category scheme="http://www.blogger.com/atom/ns#" term="grass"/>
    <category scheme="http://www.blogger.com/atom/ns#" term="qgis"/>
    <category scheme="http://www.blogger.com/atom/ns#" term="sprint"/>
    <category scheme="http://www.blogger.com/atom/ns#" term="mapserver"/>
    <author>
      <name>Paul Ramsey</name>
      <email>noreply@blogger.com</email>
      <uri>http://www.blogger.com/profile/04056244920940087995</uri>
    </author>
    <source>
      <id>tag:blogger.com,1999:blog-14903426</id>
      <author>
        <name>Paul Ramsey</name>
        <email>noreply@blogger.com</email>
        <uri>http://www.blogger.com/profile/04056244920940087995</uri>
      </author>
      <link href="http://blog.cleverelephant.ca/feeds/posts/default" rel="http://schemas.google.com/g/2005#feed" type="application/atom+xml"/>
      <link href="http://www.blogger.com/feeds/14903426/posts/default" rel="self" type="application/atom+xml"/>
      <link href="http://blog.cleverelephant.ca/" rel="alternate" type="text/html"/>
      <link href="http://pubsubhubbub.appspot.com/" rel="hub" type="text/html"/>
      <link href="http://www.blogger.com/feeds/14903426/posts/default?start-index=26&amp;max-results=25" rel="next" type="application/atom+xml"/>
      <subtitle>Open source geospatial opinions and techniques, seen from the trenches and from far far above...</subtitle>
      <title>Paul Ramsey</title>
      <updated>2010-03-10T20:35:59Z</updated>
    </source>
  </entry>

  <entry>
    <id>tag:blogger.com,1999:blog-14903426.post-4717279464911559531</id>
    <link href="http://blog.cleverelephant.ca/feeds/4717279464911559531/comments/default" rel="replies" type="application/atom+xml"/>
    <link href="https://www.blogger.com/comment.g?blogID=14903426&amp;postID=4717279464911559531" rel="replies" type="text/html"/>
    <link href="http://www.blogger.com/feeds/14903426/posts/default/4717279464911559531" rel="edit" type="application/atom+xml"/>
    <link href="http://www.blogger.com/feeds/14903426/posts/default/4717279464911559531" rel="self" type="application/atom+xml"/>
    <link href="http://blog.cleverelephant.ca/2010/01/foss4g-2010-savings.html" rel="alternate" type="text/html"/>
    <title>FOSS4G 2010 Savings</title>
    <content type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml"><a href="http://2010.foss4g.org/"><img alt="FOSS4G 2010" src="http://www.postgresonline.com/images/foss4g2010_small.png"/></a>If you know you're going to FOSS4G 2010 in Barcelona this year, you can save 20% by taking advantage of the <a href="http://2010.foss4g.org/registration.php">Sooper Dooper Early Registration</a> rates.  Rates end January 15, the early bird gets the savings.<div class="blogger-post-footer"><img alt="" height="1" src="https://blogger.googleusercontent.com/tracker/14903426-4717279464911559531?l=blog.cleverelephant.ca" width="1"/></div></div>
    </content>
    <updated>2010-01-02T03:21:45Z</updated>
    <published>2010-01-02T03:17:00Z</published>
    <author>
      <name>Paul Ramsey</name>
      <email>noreply@blogger.com</email>
      <uri>http://www.blogger.com/profile/04056244920940087995</uri>
    </author>
    <source>
      <id>tag:blogger.com,1999:blog-14903426</id>
      <author>
        <name>Paul Ramsey</name>
        <email>noreply@blogger.com</email>
        <uri>http://www.blogger.com/profile/04056244920940087995</uri>
      </author>
      <link href="http://blog.cleverelephant.ca/feeds/posts/default" rel="http://schemas.google.com/g/2005#feed" type="application/atom+xml"/>
      <link href="http://www.blogger.com/feeds/14903426/posts/default" rel="self" type="application/atom+xml"/>
      <link href="http://blog.cleverelephant.ca/" rel="alternate" type="text/html"/>
      <link href="http://pubsubhubbub.appspot.com/" rel="hub" type="text/html"/>
      <link href="http://www.blogger.com/feeds/14903426/posts/default?start-index=26&amp;max-results=25" rel="next" type="application/atom+xml"/>
      <subtitle>Open source geospatial opinions and techniques, seen from the trenches and from far far above...</subtitle>
      <title>Paul Ramsey</title>
      <updated>2010-03-10T20:35:59Z</updated>
    </source>
  </entry>

  <entry xml:lang="en-us">
    <id>http://www.joelonsoftware.com/items/2009/12/30.html</id>
    <link href="http://www.joelonsoftware.com/items/2009/12/30.html" rel="alternate" type="text/html"/>
    <title>Secret language</title>
    <summary type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml"><p><a href="https://careers.microsoft.com/JobDetails.aspx?ss=&amp;pg=0&amp;so=&amp;rw=1&amp;jid=9914&amp;jlang=EN">Microsoft Careers</a>: “<span id="ctl00_ContentPlaceHolder1_JobDetails2_lblDescription">If you’re looking for a new role where you’ll focus on one of the biggest issues that is top of mind for KT and Steve B in ‘Compete’, build a complete left to right understanding of the subsidiary, have a large amount of executive exposure, build and manage the activities of a v-team of 13 district Linux&amp; Open Office Compete Leads, and develop a broad set of marketing skills and report to a management team committed to development and recognized for high WHI this is the position for you!”</span></p>
<p>This is ironic, to use the Alanis Morissette meaning of the word [NSFW <a href="http://www.youtube.com/watch?v=nT1TVSTkAXg">video</a>].</p>
<p>The whole reason Microsoft even <em>needs </em>a v-team of 13, um, “V DASHES” to compete against Open Office is that they’ve become so insular that their job postings are full of incomprehensible jargon and acronyms which nobody outside the company can understand. With 93,000 employees, nobody ever talks to anyone outside the company, so it's no surprise they've become a bizarre borg of "KT", "Steve B", "v-team", "high WHI," CSI, GM, BG, BMO (bowel movements?) and whatnot.</p>
<p>When I worked at Microsoft almost two decades ago we made fun of IBM for having a different word for everything. Everybody said, "Hard Drive," IBM said "Fixed Disk." Everybody said, "PC," IBM said "Workstation." IBM must have had whole departments of people just to FACT CHECK the pages in their manuals which said, "This page intentionally left blank."</p>
<p>Now when you talk to anyone who has been at Microsoft for more than a week you can’t understand a word they’re saying. Which is OK, you can never understand geeks. But at Microsoft you can’t even understand the <em>marketing</em> people, and, what’s worse, they don’t seem to <em>know</em> that they’re speaking in their own special language, understood only to them.</p>
<p>Need to hire a really great programmer? Want a job that doesn't drive you crazy? Visit the <a href="http://jobs.joelonsoftware.com/">Joel on Software Job Board</a>: Great software jobs, great people.
</p></div>
    </summary>
    <updated>2009-12-30T15:01:12Z</updated>
    <author>
      <name>Joel Spolsky</name>
    </author>
    <source>
      <id>http://www.joelonsoftware.com</id>
      <logo>http://www.joelonsoftware.com/RssJoelOnSoftware.jpg</logo>
      <author>
        <name>Joel Spolsky</name>
      </author>
      <link href="http://www.joelonsoftware.com" rel="alternate" type="text/html"/>
      <link href="http://joelonsoftware.com/rss.xml" rel="self" type="application/rss+xml"/>
      <rights>Copyright 1999-2008 Joel Spolsky.</rights>
      <subtitle>Painless Software Management</subtitle>
      <title>Joel on Software</title>
      <updated>2010-03-10T22:12:08Z</updated>
    </source>
  </entry>

  <entry>
    <id>tag:blogger.com,1999:blog-14903426.post-2033562956570873985</id>
    <link href="http://blog.cleverelephant.ca/feeds/2033562956570873985/comments/default" rel="replies" type="application/atom+xml"/>
    <link href="https://www.blogger.com/comment.g?blogID=14903426&amp;postID=2033562956570873985" rel="replies" type="text/html"/>
    <link href="http://www.blogger.com/feeds/14903426/posts/default/2033562956570873985" rel="edit" type="application/atom+xml"/>
    <link href="http://www.blogger.com/feeds/14903426/posts/default/2033562956570873985" rel="self" type="application/atom+xml"/>
    <link href="http://blog.cleverelephant.ca/2009/12/deep-thought.html" rel="alternate" type="text/html"/>
    <title>Deep Thought</title>
    <content type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml">If "open" is <a href="http://news.cnet.com/8301-13505_3-10420220-16.html">good at making others loose</a>, and <a href="http://abovethecrowd.com/2009/10/29/google-redefines-disruption-the-&#x201C;less-than-free&#x201D;-business-model/">less than free</a> is the model for things outside your core revenue stream, why isn't Microsoft giving away free advertising?<br/> <div class="blogger-post-footer"><img alt="" height="1" src="https://blogger.googleusercontent.com/tracker/14903426-2033562956570873985?l=blog.cleverelephant.ca" width="1"/></div></div>
    </content>
    <updated>2009-12-22T19:35:41Z</updated>
    <published>2009-12-22T19:32:00Z</published>
    <author>
      <name>Paul Ramsey</name>
      <email>noreply@blogger.com</email>
      <uri>http://www.blogger.com/profile/04056244920940087995</uri>
    </author>
    <source>
      <id>tag:blogger.com,1999:blog-14903426</id>
      <author>
        <name>Paul Ramsey</name>
        <email>noreply@blogger.com</email>
        <uri>http://www.blogger.com/profile/04056244920940087995</uri>
      </author>
      <link href="http://blog.cleverelephant.ca/feeds/posts/default" rel="http://schemas.google.com/g/2005#feed" type="application/atom+xml"/>
      <link href="http://www.blogger.com/feeds/14903426/posts/default" rel="self" type="application/atom+xml"/>
      <link href="http://blog.cleverelephant.ca/" rel="alternate" type="text/html"/>
      <link href="http://pubsubhubbub.appspot.com/" rel="hub" type="text/html"/>
      <link href="http://www.blogger.com/feeds/14903426/posts/default?start-index=26&amp;max-results=25" rel="next" type="application/atom+xml"/>
      <subtitle>Open source geospatial opinions and techniques, seen from the trenches and from far far above...</subtitle>
      <title>Paul Ramsey</title>
      <updated>2010-03-10T20:35:59Z</updated>
    </source>
  </entry>

  <entry xml:lang="en">
    <id>http://www.reprojected.com/geoblog/?p=117</id>
    <link href="http://www.reprojected.com/geoblog/2009/12/18/i-am-back/" rel="alternate" type="text/html"/>
    <title>I am back…</title>
    <summary>Been a while.  But I am back.  Doing alot of Python, Javascript, Geo-Hacking and plan to dump my brain about it all soon.  Stay tuned</summary>
    <content type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml"><p><img alt="" src="file://C:/Users/Aaron/Pictures/2009/Family_Visit_July09/DSC07173.JPG"/><img alt="A" class="alignleft size-thumbnail wp-image-119" height="150" src="http://www.reprojected.com/geoblog/wp-content/uploads/2009/12/dsc07173-150x150.jpg" title="A" width="150"/>Been a while.  But I am back.  Doing alot of Python, Javascript, Geo-Hacking and plan to dump my brain about it all soon.  Stay tuned</p></div>
    </content>
    <updated>2009-12-18T07:51:07Z</updated>
    <category term="General"/>
    <author>
      <name>aaronr</name>
    </author>
    <source>
      <id>http://www.reprojected.com/geoblog</id>
      <link href="http://www.reprojected.com/geoblog/feed/" rel="self" type="application/atom+xml"/>
      <link href="http://www.reprojected.com/geoblog" rel="alternate" type="text/html"/>
      <subtitle>Warping your understanding of the gis world</subtitle>
      <title>Aaron Racicot's Reprojected GIS Blog</title>
      <updated>2009-12-18T07:51:07Z</updated>
    </source>
  </entry>

  <entry xml:lang="en">
    <id>http://www.perrygeo.net/wordpress/?p=140</id>
    <link href="http://www.perrygeo.net/wordpress/?p=140" rel="alternate" type="text/html"/>
    <title>Peaksware licensing revisted …</title>
    <summary>I had previously bitched and moaned about the licensing restrictions on the TrainingPeaks WKO+ software. Truth be told, the reason I was so put off by their crappy licensing scheme was that my cycling training relied so heavily on their software. It was not perfect but it was the best tool available. I’ve since discovered [...]</summary>
    <content type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml"><p>I had previously <a href="http://www.perrygeo.net/wordpress/?p=138">bitched and moaned</a> about the licensing restrictions on the <a href="http://www.trainingpeaks.com/WKO">TrainingPeaks WKO+</a> software. Truth be told, the reason I was so put off by their crappy licensing scheme was that my cycling training relied so heavily on their software. It was not perfect but it was the best tool available. I’ve since discovered <a href="http://goldencheetah.org/">Golden Cheetah</a> which is a viable open-source alternative but it still lags behind WKO+ in many critical features.</p>
<p>Now, fresh in time for the 2010 training season, Peaksware has released a new version 3.0 of WKO+ which, amongst many UI and functionality improvements, has made considerable progress on the licensing front.</p>
<blockquote><p>We know, our licensing has been a challenge to deal with for our customers in the past, but we’ve always tried to be as helpful as possible getting you back up and running after a hard drive crash or new computer. To remedy this, we’re pleased to announce an all new flexible licensing system. First, with every purchase we now allow you to install WKO+ 3.0 on up to two computers; second, we’ve built an online activation/deactivation system so you are free to move your active licenses from machine to machine. Are you leaving on a 2 week trip? Just de-activate your home computer, activate your laptop, and you’re on your way. When you get home, de-actiavate your laptop, re-activate your desktop and you’re all set.</p></blockquote>
<p>It ain’t open source (there is still a place in this world for proprietary software if they can push the boundaries and innovate) but the sensitivity to the licensing issue just may have restored my faith in their company.</p></div>
    </content>
    <updated>2009-12-17T02:33:42Z</updated>
    <category term="Uncategorized"/>
    <author>
      <name>perrygeo</name>
    </author>
    <source>
      <id>http://www.perrygeo.net/wordpress</id>
      <link href="http://www.perrygeo.net/wordpress" rel="alternate" type="text/html"/>
      <link href="http://www.perrygeo.net/wordpress/?feed=rss2" rel="self" type="application/rss+xml"/>
      <subtitle>Matt Perry's random adventures with geospatial technology and other tangentially related topics</subtitle>
      <title>PerryGeo</title>
      <updated>2010-02-18T17:16:43Z</updated>
    </source>
  </entry>

  <entry>
    <id>tag:blogger.com,1999:blog-14903426.post-455244280837819208</id>
    <link href="http://blog.cleverelephant.ca/feeds/455244280837819208/comments/default" rel="replies" type="application/atom+xml"/>
    <link href="https://www.blogger.com/comment.g?blogID=14903426&amp;postID=455244280837819208" rel="replies" type="text/html"/>
    <link href="http://www.blogger.com/feeds/14903426/posts/default/455244280837819208" rel="edit" type="application/atom+xml"/>
    <link href="http://www.blogger.com/feeds/14903426/posts/default/455244280837819208" rel="self" type="application/atom+xml"/>
    <link href="http://blog.cleverelephant.ca/2009/12/abstracterrific.html" rel="alternate" type="text/html"/>
    <title>Abstracterrific!</title>
    <content type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml"><a href="http://mcfunley.com/">Dan McKinley</a> takes a look under the covers of a couple Python PostgreSQL abstraction layers:<blockquote>Database client drivers intended for the same database can do drastically different things. By Python standards, the Postgres driver situation is completely schizo. There are a lot of them available - there are five dedicated Postgres drivers listed on the wiki, as opposed to just one for MySQL. People might choose different drivers for licensing reasons, for religious reasons, randomly (because they never did any analysis like I am about to do), or for completely inscrutable reasons because they are just plain out of their minds. You really would not believe how much blood I have seen spilled over Postgres client drivers.</blockquote><a href="http://mcfunley.com/445/python-postgresql-driver-authors-hate-you">Read it!</a><br/> <div class="blogger-post-footer"><img alt="" height="1" src="https://blogger.googleusercontent.com/tracker/14903426-455244280837819208?l=blog.cleverelephant.ca" width="1"/></div></div>
    </content>
    <updated>2009-12-16T23:00:15Z</updated>
    <published>2009-12-16T22:58:00Z</published>
    <author>
      <name>Paul Ramsey</name>
      <email>noreply@blogger.com</email>
      <uri>http://www.blogger.com/profile/04056244920940087995</uri>
    </author>
    <source>
      <id>tag:blogger.com,1999:blog-14903426</id>
      <author>
        <name>Paul Ramsey</name>
        <email>noreply@blogger.com</email>
        <uri>http://www.blogger.com/profile/04056244920940087995</uri>
      </author>
      <link href="http://blog.cleverelephant.ca/feeds/posts/default" rel="http://schemas.google.com/g/2005#feed" type="application/atom+xml"/>
      <link href="http://www.blogger.com/feeds/14903426/posts/default" rel="self" type="application/atom+xml"/>
      <link href="http://blog.cleverelephant.ca/" rel="alternate" type="text/html"/>
      <link href="http://pubsubhubbub.appspot.com/" rel="hub" type="text/html"/>
      <link href="http://www.blogger.com/feeds/14903426/posts/default?start-index=26&amp;max-results=25" rel="next" type="application/atom+xml"/>
      <subtitle>Open source geospatial opinions and techniques, seen from the trenches and from far far above...</subtitle>
      <title>Paul Ramsey</title>
      <updated>2010-03-10T20:35:59Z</updated>
    </source>
  </entry>

  <entry>
    <id>tag:blogger.com,1999:blog-14903426.post-9042852618372074120</id>
    <link href="http://blog.cleverelephant.ca/feeds/9042852618372074120/comments/default" rel="replies" type="application/atom+xml"/>
    <link href="https://www.blogger.com/comment.g?blogID=14903426&amp;postID=9042852618372074120" rel="replies" type="text/html"/>
    <link href="http://www.blogger.com/feeds/14903426/posts/default/9042852618372074120" rel="edit" type="application/atom+xml"/>
    <link href="http://www.blogger.com/feeds/14903426/posts/default/9042852618372074120" rel="self" type="application/atom+xml"/>
    <link href="http://blog.cleverelephant.ca/2009/12/goo-smart-by-half.html" rel="alternate" type="text/html"/>
    <title>Goo Smart by Half</title>
    <content type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml">I typed "postgis" into Google this evening, and in addition to the exquisitely organized first entry there were two ads, one relevant (EnterpriseDB, the Postgres company) and one <b>seemingly</b> utterly random, for an English language school.<br/><br/><img src="http://farm3.static.flickr.com/2778/4189734356_9a8be3d771_o.gif" width="550"/><br/><br/>Has the Google algorithm made a mistake? How is this relevant? Well, the language school <b>is</b> in Victoria, BC, birth-place of PostGIS, but it gets better than that.<br/><br/>Here's a picture of their sign, which I walked past every morning for almost five years, since the school shares a building (1207 Douglas Street) with Refractions Research, birth-company of PostGIS.<br/><br/><img src="http://farm2.static.flickr.com/1349/1445143912_3ec077175a_m.jpg"/><br/><br/>But wait, there's more! The name of the school is "GEOS Language Academy", and the <a href="http://trac.osgeo.org/geos">GEOS</a> spatial library was also created in Victoria, specifically to bring spatial predicate algorithms to PostGIS!<br/><br/>Poor Google algorithm, you never stood a chance.<br/> <div class="blogger-post-footer"><img alt="" height="1" src="https://blogger.googleusercontent.com/tracker/14903426-9042852618372074120?l=blog.cleverelephant.ca" width="1"/></div></div>
    </content>
    <updated>2009-12-16T06:31:07Z</updated>
    <published>2009-12-16T06:19:00Z</published>
    <author>
      <name>Paul Ramsey</name>
      <email>noreply@blogger.com</email>
      <uri>http://www.blogger.com/profile/04056244920940087995</uri>
    </author>
    <source>
      <id>tag:blogger.com,1999:blog-14903426</id>
      <author>
        <name>Paul Ramsey</name>
        <email>noreply@blogger.com</email>
        <uri>http://www.blogger.com/profile/04056244920940087995</uri>
      </author>
      <link href="http://blog.cleverelephant.ca/feeds/posts/default" rel="http://schemas.google.com/g/2005#feed" type="application/atom+xml"/>
      <link href="http://www.blogger.com/feeds/14903426/posts/default" rel="self" type="application/atom+xml"/>
      <link href="http://blog.cleverelephant.ca/" rel="alternate" type="text/html"/>
      <link href="http://pubsubhubbub.appspot.com/" rel="hub" type="text/html"/>
      <link href="http://www.blogger.com/feeds/14903426/posts/default?start-index=26&amp;max-results=25" rel="next" type="application/atom+xml"/>
      <subtitle>Open source geospatial opinions and techniques, seen from the trenches and from far far above...</subtitle>
      <title>Paul Ramsey</title>
      <updated>2010-03-10T20:35:59Z</updated>
    </source>
  </entry>

  <entry>
    <id>tag:blogger.com,1999:blog-14903426.post-1962022380455197878</id>
    <link href="http://blog.cleverelephant.ca/feeds/1962022380455197878/comments/default" rel="replies" type="application/atom+xml"/>
    <link href="https://www.blogger.com/comment.g?blogID=14903426&amp;postID=1962022380455197878" rel="replies" type="text/html"/>
    <link href="http://www.blogger.com/feeds/14903426/posts/default/1962022380455197878" rel="edit" type="application/atom+xml"/>
    <link href="http://www.blogger.com/feeds/14903426/posts/default/1962022380455197878" rel="self" type="application/atom+xml"/>
    <link href="http://blog.cleverelephant.ca/2009/12/pgpatch.html" rel="alternate" type="text/html"/>
    <title>PgPatch!</title>
    <content type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml">It's not much, but it's not nothing, my first ever patch to PostgreSQL proper is part of yesterday's <a href="http://www.postgresql.org/docs/8.4/static/release-8-4-2.html">8.4.2 release</a>:<blockquote>Fix incorrect logic for GiST index page splits, when the split depends on a non-first column of the index (Paul Ramsey)</blockquote>It was just a minor syntax error I found because I was reading through that section of the code <em>very, very, very</em> closely (it's true, I copy the work of smarter people than I) while implementing the indexes for GEOGRAPHY in PostGIS 1.5.<br/> <div class="blogger-post-footer"><img alt="" height="1" src="https://blogger.googleusercontent.com/tracker/14903426-1962022380455197878?l=blog.cleverelephant.ca" width="1"/></div></div>
    </content>
    <updated>2009-12-15T21:09:24Z</updated>
    <published>2009-12-15T21:06:00Z</published>
    <author>
      <name>Paul Ramsey</name>
      <email>noreply@blogger.com</email>
      <uri>http://www.blogger.com/profile/04056244920940087995</uri>
    </author>
    <source>
      <id>tag:blogger.com,1999:blog-14903426</id>
      <author>
        <name>Paul Ramsey</name>
        <email>noreply@blogger.com</email>
        <uri>http://www.blogger.com/profile/04056244920940087995</uri>
      </author>
      <link href="http://blog.cleverelephant.ca/feeds/posts/default" rel="http://schemas.google.com/g/2005#feed" type="application/atom+xml"/>
      <link href="http://www.blogger.com/feeds/14903426/posts/default" rel="self" type="application/atom+xml"/>
      <link href="http://blog.cleverelephant.ca/" rel="alternate" type="text/html"/>
      <link href="http://pubsubhubbub.appspot.com/" rel="hub" type="text/html"/>
      <link href="http://www.blogger.com/feeds/14903426/posts/default?start-index=26&amp;max-results=25" rel="next" type="application/atom+xml"/>
      <subtitle>Open source geospatial opinions and techniques, seen from the trenches and from far far above...</subtitle>
      <title>Paul Ramsey</title>
      <updated>2010-03-10T20:35:59Z</updated>
    </source>
  </entry>

  <entry xml:lang="en-us">
    <id>http://www.joelonsoftware.com/items/2009/12/14.html</id>
    <link href="http://www.joelonsoftware.com/items/2009/12/14.html" rel="alternate" type="text/html"/>
    <title>Let’s stop talking about “backups”</title>
    <summary type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml"><p><span style="width: 123px;"><a href="http://www.joelonsoftware.com/items/2009/12/emergency.jpg"><img alt="" src="http://www.joelonsoftware.com/items/2009/12/emergency-thumbnail.jpg" style="border: 1px solid #666;"/></a></span>Is your desktop backed up?</p>
<p>Did you backup that server?</p>
<p>Are your backups on a different machine?</p>
<p>Do you have offsite backups?</p>
<p>All good questions, all best practices.</p>
<p>But let’s stop talking about “backups.” Doing a backup is too low a bar. Any experienced system administrator will tell you that they have a great backup plan, the trouble comes when you have to <em>restore</em>.</p>
<p>And that’s when you discover that:</p>
<ul>
<li>The backed-up files were encrypted with a cryptographically-secure key, the only copy of which was on the machine that was lost</li>
<li>The server had enormous amounts of configuration information stored in the IIS metabase which wasn’t backed up</li>
<li>The backup files were being copied to a FAT partition and were silently being truncated to 2GB</li>
<li>Your backups were on an LTO drive which was lost with the data center, and you can’t get another LTO drive for three days</li>
<li>And a million other things that can go wrong even when you “have” “backups.”</li></ul>
<p>The minimum bar for a reliable service is not that you have done a backup, but that you have done a <em>restore</em>. If you’re running a web service, you need to be able to show me that you can build a reasonably recent copy of the entire site, in a reasonable amount of time, on a new server or servers without ever accessing anything that was in the original data center. The bar is that you’ve done a <em>restore</em>.</p>
<p>Let’s stop asking people if they’re doing backups, and start asking if they’re doing restores.</p>
<p>Need to hire a really great programmer? Want a job that doesn't drive you crazy? Visit the <a href="http://jobs.joelonsoftware.com/">Joel on Software Job Board</a>: Great software jobs, great people.
</p></div>
    </summary>
    <updated>2009-12-14T15:30:13Z</updated>
    <author>
      <name>Joel Spolsky</name>
    </author>
    <source>
      <id>http://www.joelonsoftware.com</id>
      <logo>http://www.joelonsoftware.com/RssJoelOnSoftware.jpg</logo>
      <author>
        <name>Joel Spolsky</name>
      </author>
      <link href="http://www.joelonsoftware.com" rel="alternate" type="text/html"/>
      <link href="http://joelonsoftware.com/rss.xml" rel="self" type="application/rss+xml"/>
      <rights>Copyright 1999-2008 Joel Spolsky.</rights>
      <subtitle>Painless Software Management</subtitle>
      <title>Joel on Software</title>
      <updated>2010-02-17T20:12:05Z</updated>
    </source>
  </entry>

  <entry xml:lang="en-us">
    <id>http://www.joelonsoftware.com/items/2009/12/13.html</id>
    <link href="http://www.joelonsoftware.com/items/2009/12/13.html" rel="alternate" type="text/html"/>
    <title>Stack stats</title>
    <summary type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml"><p>The higher someone’s <a href="http://stackoverflow.com">Stack Overflow</a> reputation, the more likely they are to have submitted a CV to <a href="http://careers.stackoverflow.com/">Stack Overflow Careers</a>:</p>
<p><img alt="" border="0" height="375" src="http://www.joelonsoftware.com/items/2009/12/13cvs.png" width="426"/></p>
<p>This is not entirely surprising, of course: the more time someone has invested in Stack Overflow, the more likely they are to (a) know about Stack Overflow Careers, (b) be willing to invest $29, after all the hours they’ve already sunk, and (c) have the confidence that their CV is going to impress the kind of employers that are using the site.</p>
<p>Still, the participation rate in Stack Overflow Careers is pretty impressive, and it somewhat confirms the claim we’re making to employers, which is that when you search for CVs on Stack Overflow, you are looking at some pretty gosh darn good programmers.</p>
<p>While I’m rattling on about statistics, here’s a little bit of data about Stack Overflow traffic itself that you may not have seen.</p>
<p>We use <a href="http://www.quantcast.com/">Quantcast</a> to measure our traffic. Currently, they’re <a href="http://www.quantcast.com/p-c1rF4kxgLUzNc">showing us</a> as the 740th ranked site in the world (of all sites), with 6 million monthly unique visitors, 1.9 million from the US. And the growth is pretty steady, except for a couple of weeks at the end there which reflect the holiday season:</p>
<p><img alt="" border="0" height="252" src="http://www.joelonsoftware.com/items/2009/12/13quantcast.png" width="493"/></p>
<p>Comparing our traffic to our big competitor is difficult because they don’t use Quantcast, so we have to rely on Alexa, which has a reputation for particularly terrible data, but here’s what that looks like:</p>
<p><img alt="" border="0" height="234" src="http://www.joelonsoftware.com/items/2009/12/13alexa.png" width="410"/></p>
<p>Are there any sites out there for programmers with <em>more</em> traffic than Stack Overflow? I haven’t found any, using the available data... even msdn.microsoft.com has less, according to Quantcast, but I find that hard to believe.</p>
<p>In either case, having decided that Stack Overflow was the biggest programming site in the world, I thought, “hey, it should be easier for us to get ads.” I asked our ad guy, Alex “DailyWTF” Papadimoulis, if Microsoft had bought any ads. They’re about to launch Visual Studio 2010, which is probably going to have the biggest marketing campaign (in dollars) in the history of developer tools, and you’d think they’d want to spend <em>something</em> at the biggest programming site in the world. Here’s what he wrote back:</p>
<blockquote dir="ltr" style="MARGIN-RIGHT: 0px;">
<p>“Microsoft is doing huge spends, but they’re going through McCann for the VS2010 launch (IIRC). Agencies really don’t like us. Now if we go to video units with fly-over… oh they’ll start loving us!”</p></blockquote>
<p dir="ltr">What he’s referring to is the fact that we don’t accept any kind of animated ads on Stack Overflow, because, well, they’re evil, so we lose a lot of revenue from advertising agencies who are looking for the most aggressive possible ways to get in people’s faces. Whatever. Don’t care. We hate animated ads and I’m pretty sure our users do, too.</p>
<p>Need to hire a really great programmer? Want a job that doesn't drive you crazy? Visit the <a href="http://jobs.joelonsoftware.com/">Joel on Software Job Board</a>: Great software jobs, great people.
</p></div>
    </summary>
    <updated>2009-12-13T22:57:11Z</updated>
    <author>
      <name>Joel Spolsky</name>
    </author>
    <source>
      <id>http://www.joelonsoftware.com</id>
      <logo>http://www.joelonsoftware.com/RssJoelOnSoftware.jpg</logo>
      <author>
        <name>Joel Spolsky</name>
      </author>
      <link href="http://www.joelonsoftware.com" rel="alternate" type="text/html"/>
      <link href="http://joelonsoftware.com/rss.xml" rel="self" type="application/rss+xml"/>
      <rights>Copyright 1999-2008 Joel Spolsky.</rights>
      <subtitle>Painless Software Management</subtitle>
      <title>Joel on Software</title>
      <updated>2010-02-15T19:12:07Z</updated>
    </source>
  </entry>

  <entry xml:lang="en">
    <id>http://www.kralidis.ca/blog/?p=409</id>
    <link href="http://www.kralidis.ca/blog/2009/12/11/why-i-love-linux/" rel="alternate" type="text/html"/>
    <title>Why I Love Linux</title>
    <summary>$ uptime
 21:20:01 up 112 days,  9:06,  1 user,  load average: 0.05, 0.09, 0.18

		Written from home:


      window.onload=function() {
        var point409 = new GLatLng(43.663194, -79.575653);

        var map409 = new GMap2(document.getElementById("map409"));
        [...]</summary>
    <updated>2009-12-12T02:48:09Z</updated>
    <category term="open source"/>
    <category term="technology"/>
    <author>
      <name>tomkralidis</name>
    </author>
    <source>
      <id>http://www.kralidis.ca/blog</id>
      <link href="http://www.kralidis.ca/blog/feed/" rel="self" type="application/atom+xml"/>
      <link href="http://www.kralidis.ca/blog" rel="alternate" type="text/html"/>
      <subtitle>I use this blog to post my thoughts and random stuff from time to time.  See my About page for more info about me.  Note that my views and opinions expressed here are my own and do not reflect the views of my employer</subtitle>
      <title>tommy's scratchpad</title>
      <updated>2010-02-19T22:12:06Z</updated>
    </source>
  </entry>

  <entry>
    <id>tag:blogger.com,1999:blog-14903426.post-7138817294647745612</id>
    <link href="http://blog.cleverelephant.ca/feeds/7138817294647745612/comments/default" rel="replies" type="application/atom+xml"/>
    <link href="https://www.blogger.com/comment.g?blogID=14903426&amp;postID=7138817294647745612" rel="replies" type="text/html"/>
    <link href="http://www.blogger.com/feeds/14903426/posts/default/7138817294647745612" rel="edit" type="application/atom+xml"/>
    <link href="http://www.blogger.com/feeds/14903426/posts/default/7138817294647745612" rel="self" type="application/atom+xml"/>
    <link href="http://blog.cleverelephant.ca/2009/12/code-sprint-2010-new-york-city_04.html" rel="alternate" type="text/html"/>
    <title>Code Sprint 2010: New York City</title>
    <content type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml">It's official! Following the success of the <a href="http://wiki.osgeo.org/wiki/Toronto_Code_Sprint_2009">2009 Toronto Code Sprint</a> a second event <a href="http://wiki.osgeo.org/wiki/New_York_Code_Sprint_2010">will be taking place</a> in New York City, this winter.<br/><br/><img align="center" src="http://farm1.static.flickr.com/120/292715372_56a910c585.jpg"/><br/><br/>This code sprint will bring together the developers for the <a href="http://mapserver.org/">MapServer</a>, <a href="http://postgis.org/">PostGIS</a>, <a href="http://gdal.org/">GDAL</a>, <a href="http://grass.itc.it/">GRASS</a>, <a href="http://gdal.org">OGR</a>, <a href="http://liblas.org/">LibLAS</a>, <a href="http://qgis.org/">QGIS</a>, <a href="http://trac.osgeo.org/proj/">Proj4</a> and other projects that are part of the "C Tribe" of open source software.<br/><br/><b>Timing:</b> Saturday, February 20 to Tuesday, February 23, 9am to 4pm.<br/><br/><b>Location:</b> OpenGeo Event Room, <a href="http://maps.google.com/maps?f=q&amp;source=s_q&amp;hl=en&amp;geocode=&amp;q=148+Lafayette+St,+New+York,+NY+10013&amp;sll=37.0625,-95.677068&amp;sspn=50.244827,62.402344&amp;ie=UTF8&amp;hq=&amp;hnear=148+Lafayette+St,+New+York,+10013&amp;z=16">148 Lafayette St</a>, New York, New York<br/><br/><b>More Information:</b> <a href="http://wiki.osgeo.org/wiki/New_York_Code_Sprint_2010">Wiki Page</a>, <a href="http://lists.osgeo.org/mailman/listinfo/tosprint">Mailing List</a><br/><br/><b>Sponsor this event!</b> Last year, sponsorship dollars paid for venue and dinners for the sprinters, who gave up their weekends and more to invest a collective 736 man hours in making their open source project stronger. Thanks again to our 2009 sponsors: <a href="http://www.greenwoodmap.com/">Rich Greenwood</a>, <a href="http://www.osgis.nl/index_en.htm">OSGIS.nl</a>, <a href="http://www.coordinatesolutions.com">Coordinate Solutions</a>, <a href="http://www.lizardtech.com/">LizardTech</a>, <a href="http://www.sjgeophysics.com/">SJ Geophysics</a>, <a href="http://qpublic.net/">qPublic.net</a>, <a href="http://www.gdal.org/">GDAL</a>! If you want to sponsor this event, and raise your profile with the 2 dozen people who make your software sing, please <a href="http://www.cleverelephant.ca/">contact me</a>.<br/><br/><b>Update:</b> Thanks to our first 2010 sponsors, <a href="http://www.coordinatesolutions.com">Coordinate Solutions</a>, <a href="http://www.lizardtech.com/">LizardTech</a>, and <a href="http://www.qpublic.net/">qPublic.net</a>! We are still <a href="http://wiki.osgeo.org/wiki/New_York_Code_Sprint_2010#Sponsors">looking for sponsors</a> for 2010!<br/> <div class="blogger-post-footer"><img alt="" height="1" src="https://blogger.googleusercontent.com/tracker/14903426-7138817294647745612?l=blog.cleverelephant.ca" width="1"/></div></div>
    </content>
    <updated>2009-12-11T21:46:33Z</updated>
    <published>2009-12-04T23:26:00Z</published>
    <category scheme="http://www.blogger.com/atom/ns#" term="postgis"/>
    <category scheme="http://www.blogger.com/atom/ns#" term="sprint"/>
    <category scheme="http://www.blogger.com/atom/ns#" term="mapserver"/>
    <author>
      <name>Paul Ramsey</name>
      <email>noreply@blogger.com</email>
      <uri>http://www.blogger.com/profile/04056244920940087995</uri>
    </author>
    <source>
      <id>tag:blogger.com,1999:blog-14903426</id>
      <author>
        <name>Paul Ramsey</name>
        <email>noreply@blogger.com</email>
        <uri>http://www.blogger.com/profile/04056244920940087995</uri>
      </author>
      <link href="http://blog.cleverelephant.ca/feeds/posts/default" rel="http://schemas.google.com/g/2005#feed" type="application/atom+xml"/>
      <link href="http://www.blogger.com/feeds/14903426/posts/default" rel="self" type="application/atom+xml"/>
      <link href="http://blog.cleverelephant.ca/" rel="alternate" type="text/html"/>
      <link href="http://pubsubhubbub.appspot.com/" rel="hub" type="text/html"/>
      <link href="http://www.blogger.com/feeds/14903426/posts/default?start-index=26&amp;max-results=25" rel="next" type="application/atom+xml"/>
      <subtitle>Open source geospatial opinions and techniques, seen from the trenches and from far far above...</subtitle>
      <title>Paul Ramsey</title>
      <updated>2010-03-10T20:35:59Z</updated>
    </source>
  </entry>

  <entry>
    <id>tag:blogger.com,1999:blog-14903426.post-1706889555645827424</id>
    <link href="http://blog.cleverelephant.ca/feeds/1706889555645827424/comments/default" rel="replies" type="application/atom+xml"/>
    <link href="https://www.blogger.com/comment.g?blogID=14903426&amp;postID=1706889555645827424" rel="replies" type="text/html"/>
    <link href="http://www.blogger.com/feeds/14903426/posts/default/1706889555645827424" rel="edit" type="application/atom+xml"/>
    <link href="http://www.blogger.com/feeds/14903426/posts/default/1706889555645827424" rel="self" type="application/atom+xml"/>
    <link href="http://blog.cleverelephant.ca/2009/12/extra-extra-postgis-really-fast.html" rel="alternate" type="text/html"/>
    <title>Extra, extra, PostGIS Really Fast!</title>
    <content type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml">Because, frankly, I love nothing more than approbation, I am going to quote <a href="http://blog.cleverelephant.ca/2009/01/must-faster-unions-in-postgis-14.html?showComment=1260481766531#c388201837491522179">this comment</a> on "<a href="http://blog.cleverelephant.ca/2009/01/must-faster-unions-in-postgis-14.html">Much Faster Unions in PostGIS</a>" in full:<blockquote>This is a truly spectacular piece of work. We have often been asked by clients to buffer and merge point datasets with several million points. We attempted this using ArcWhatever (could barely open the points, let along buffer them) and FME, which ran for a week and then gave an out of memory error. So, I do the whole configure, make, make install thing, 4 times, for postgres, goes, proj4 and postgis. After a lot of swearing and running ldconfig a few million times I eventually get postgis to accept that geos really is installed -- MySQL might have more limited spatial functionality, but it sure is a lot easier to build from source. Anyway, I digress. I run a few random queries using the excellent generate series capability in postgres, and manage to create, buffer and merge 100,000 points in a few seconds. Finally, I try this on a real world dataset, namely all of the postal addresses in Wales, 1.4 million or so. With a 200m buffer, this ran on a reasonably pokey 64-bit linux box in 19 minutes. Truly astonishing. Well done. Much as I love MySQL, this was a bit of St. Paul on the road to Damascus moment. </blockquote>Full credit to Martin Davis, who <a href="http://lin-ear-th-inking.blogspot.com/2007/11/fast-polygon-merging-in-jts-using.html">implemented this technique</a> in JTS. We just borrowed it for database land.<br/> <div class="blogger-post-footer"><img alt="" height="1" src="https://blogger.googleusercontent.com/tracker/14903426-1706889555645827424?l=blog.cleverelephant.ca" width="1"/></div></div>
    </content>
    <updated>2009-12-10T23:12:42Z</updated>
    <published>2009-12-10T23:09:00Z</published>
    <author>
      <name>Paul Ramsey</name>
      <email>noreply@blogger.com</email>
      <uri>http://www.blogger.com/profile/04056244920940087995</uri>
    </author>
    <source>
      <id>tag:blogger.com,1999:blog-14903426</id>
      <author>
        <name>Paul Ramsey</name>
        <email>noreply@blogger.com</email>
        <uri>http://www.blogger.com/profile/04056244920940087995</uri>
      </author>
      <link href="http://blog.cleverelephant.ca/feeds/posts/default" rel="http://schemas.google.com/g/2005#feed" type="application/atom+xml"/>
      <link href="http://www.blogger.com/feeds/14903426/posts/default" rel="self" type="application/atom+xml"/>
      <link href="http://blog.cleverelephant.ca/" rel="alternate" type="text/html"/>
      <link href="http://pubsubhubbub.appspot.com/" rel="hub" type="text/html"/>
      <link href="http://www.blogger.com/feeds/14903426/posts/default?start-index=26&amp;max-results=25" rel="next" type="application/atom+xml"/>
      <subtitle>Open source geospatial opinions and techniques, seen from the trenches and from far far above...</subtitle>
      <title>Paul Ramsey</title>
      <updated>2010-03-10T20:35:59Z</updated>
    </source>
  </entry>

  <entry xml:lang="en-us">
    <id>http://www.joelonsoftware.com/items/2009/12/09.html</id>
    <link href="http://www.joelonsoftware.com/items/2009/12/09.html" rel="alternate" type="text/html"/>
    <title>When and how to micromanage</title>
    <summary type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml"><p>“Like most entrepreneurs, Ryan and I are still learning about how to manage people and teams. And we’re both used to hiring very smart and dedicated people who will get things done to a high standard if you give them some general direction and set them free. But on this trip, we started to notice that this style of hands-off management, which works so well with our own staffs, just wasn’t working when we had outside vendors involved.”</p>
<p>From my December column in Inc.: “<a href="http://www.joelonsoftware.com/inc.html?24">When and How to Micromanage</a>”</p>
<p> </p>
<p>Need to hire a really great programmer? Want a job that doesn't drive you crazy? Visit the <a href="http://jobs.joelonsoftware.com/">Joel on Software Job Board</a>: Great software jobs, great people.
</p></div>
    </summary>
    <updated>2009-12-10T01:49:23Z</updated>
    <author>
      <name>Joel Spolsky</name>
    </author>
    <source>
      <id>http://www.joelonsoftware.com</id>
      <logo>http://www.joelonsoftware.com/RssJoelOnSoftware.jpg</logo>
      <author>
        <name>Joel Spolsky</name>
      </author>
      <link href="http://www.joelonsoftware.com" rel="alternate" type="text/html"/>
      <link href="http://joelonsoftware.com/rss.xml" rel="self" type="application/rss+xml"/>
      <rights>Copyright 1999-2008 Joel Spolsky.</rights>
      <subtitle>Painless Software Management</subtitle>
      <title>Joel on Software</title>
      <updated>2010-02-11T01:12:05Z</updated>
    </source>
  </entry>

  <entry>
    <id>tag:blogger.com,1999:blog-14903426.post-1074509914850971685</id>
    <link href="http://blog.cleverelephant.ca/feeds/1074509914850971685/comments/default" rel="replies" type="application/atom+xml"/>
    <link href="https://www.blogger.com/comment.g?blogID=14903426&amp;postID=1074509914850971685" rel="replies" type="text/html"/>
    <link href="http://www.blogger.com/feeds/14903426/posts/default/1074509914850971685" rel="edit" type="application/atom+xml"/>
    <link href="http://www.blogger.com/feeds/14903426/posts/default/1074509914850971685" rel="self" type="application/atom+xml"/>
    <link href="http://blog.cleverelephant.ca/2009/12/code-sprint-2010-new-york-city.html" rel="alternate" type="text/html"/>
    <title>Code Sprint 2010: New York City</title>
    <content type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml">It's official! Following the success of the <a href="http://wiki.osgeo.org/wiki/Toronto_Code_Sprint_2009">2009 Toronto Code Sprint</a> a second event <a href="http://wiki.osgeo.org/wiki/New_York_Code_Sprint_2010">will be taking place</a> in New York City, this winter.<br/><br/><img align="center" src="http://farm1.static.flickr.com/120/292715372_56a910c585.jpg"/><br/><br/>This code sprint will bring together the developers for the <a href="http://mapserver.org/">MapServer</a>, <a href="http://postgis.org/">PostGIS</a>, <a href="http://gdal.org/">GDAL</a>, <a href="http://grass.itc.it/">GRASS</a>, <a href="http://gdal.org">OGR</a>, <a href="http://blog.cleverelephant.ca/feeds/posts/liblas.org/">LibLAS</a>, <a href="http://qgis.org/">QGIS</a>, <a href="http://trac.osgeo.org/proj/">Proj4</a> and other projects that are part of the "C Tribe" of open source software.<br/><br/><b>Timing:</b> Saturday, February 20 to Tuesday, February 23, 9am to 4pm.<br/><br/><b>Location:</b> OpenGeo Event Room, <a href="http://maps.google.com/maps?f=q&amp;source=s_q&amp;hl=en&amp;geocode=&amp;q=148+Lafayette+St,+New+York,+NY+10013&amp;sll=37.0625,-95.677068&amp;sspn=50.244827,62.402344&amp;ie=UTF8&amp;hq=&amp;hnear=148+Lafayette+St,+New+York,+10013&amp;z=16">148 Lafayette St</a>, New York, New York<br/><br/><b>More Information:</b> <a href="http://wiki.osgeo.org/wiki/New_York_Code_Sprint_2010">Wiki Page</a>, <a href="http://lists.osgeo.org/mailman/listinfo/tosprint">Mailing List</a><br/><br/><b>Sponsor this event!</b> Last year, sponsorship dollars paid for venue and dinners for the sprinters, who gave up their weekends and more to invest a collective 736 man hours in making their open source project stronger. Thanks again to our 2009 sponsors: <a href="http://www.greenwoodmap.com/">Rich Greenwood</a>, <a href="http://www.osgis.nl/index_en.htm">OSGIS.nl</a>, <a href="http://www.coordinatesolutions.com">Coordinate Solutions</a>, <a href="http://www.lizardtech.com/">LizardTech</a>, <a href="http://www.sjgeophysics.com/">SJ Geophysics</a>, <a href="http://qpublic.net/">qPublic.net</a>, <a href="http://www.gdal.org/">GDAL</a>! If you want to sponsor this event, and raise your profile with the 2 dozen people who make your software sing, please <a href="http://www.cleverelephant.ca/">contact me</a>.<div class="blogger-post-footer"><img alt="" height="1" src="https://blogger.googleusercontent.com/tracker/14903426-1074509914850971685?l=blog.cleverelephant.ca" width="1"/></div></div>
    </content>
    <updated>2009-12-04T23:26:39Z</updated>
    <published>2009-12-04T23:26:00Z</published>
    <author>
      <name>Paul Ramsey</name>
      <email>noreply@blogger.com</email>
      <uri>http://www.blogger.com/profile/04056244920940087995</uri>
    </author>
    <source>
      <id>tag:blogger.com,1999:blog-14903426</id>
      <author>
        <name>Paul Ramsey</name>
        <email>noreply@blogger.com</email>
        <uri>http://www.blogger.com/profile/04056244920940087995</uri>
      </author>
      <link href="http://blog.cleverelephant.ca/feeds/posts/default" rel="http://schemas.google.com/g/2005#feed" type="application/atom+xml"/>
      <link href="http://www.blogger.com/feeds/14903426/posts/default" rel="self" type="application/atom+xml"/>
      <link href="http://blog.cleverelephant.ca/" rel="alternate" type="text/html"/>
      <link href="http://pubsubhubbub.appspot.com/" rel="hub" type="text/html"/>
      <link href="http://www.blogger.com/feeds/14903426/posts/default?start-index=26&amp;max-results=25" rel="next" type="application/atom+xml"/>
      <subtitle>Open source geospatial opinions and techniques, seen from the trenches and from far far above...</subtitle>
      <title>Paul Ramsey</title>
      <updated>2009-12-04T23:27:04Z</updated>
    </source>
  </entry>

  <entry xml:lang="en-us">
    <id>http://www.joelonsoftware.com/items/2009/12/02.html</id>
    <link href="http://www.joelonsoftware.com/items/2009/12/02.html" rel="alternate" type="text/html"/>
    <title>Programmer search engine</title>
    <summary type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml"><p>For as long as I’ve been in the industry, which is, I think, about 74 years now, the problem I’ve had with hiring programmers was not <a href="http://www.joelonsoftware.com/articles/GuerrillaInterviewing3.html">interviewing them</a> or deciding if they’re smart—it’s been finding them in the first place. </p>
<p>What I’ve dreamed about is a programmer search engine.</p>
<p>The ideal programmer search engine would only include programmers who are actually looking for jobs. If you’ve ever emailed someone based on a resume you found through a traditional search engine, you’ve probably discovered that they’re not actually on the market. </p>
<p>It would only include people willing to work in your neck of the woods.</p>
<p>It would show you CVs right away, and, ideally, it would show you something about their programming skills besides <a href="http://www.joelonsoftware.com/items/2009/11/05.html">the usual resume blahblah</a>.</p>
<p>Well, OK, <a href="http://careers.stackoverflow.com/">that day is here</a>, and I’m like a kid in a candy store. Nom nom. Announcing the other half of careers.stackoverflow.com: the employer’s side!</p>
<p><span style="display: block; margin: 0 0 0.25ex 1em; float: right;"><a href="http://www.joelonsoftware.com/items/2009/12/02careers.png"><img alt="" src="http://www.joelonsoftware.com/items/2009/12/02careers-thumbnail.png" style="border: 1px solid #666;"/></a></span>Right now, there are about 928 candidates on there. That’s a start. What’s more interesting is whether there’s a candidate who meets your needs.</p>
<p>Let’s say you’re searching for a full time Java programmer within 40 miles of Palo Alto. Right now there are 11 candidates listed. All but one are active on StackOverflow... one even has reputation over 4000 points.</p>
<p>Want a bit more choice? Check the box that indicates that you’re willing to relocate. Now there are 80 matches, all of whom have the legal right to work in the states. Candidates have a lot of flexibility indicating where they’re willing to work. Even if you need a Ruby on Rails programmer in Oklahoma City, as long as you’re willing to pay for relocation, you’ve got 7 choices. You’ve got 14 choices in London (with the legal right to work.) If you think that a Python programmer could learn Ruby, you’ve got 51 choices. There are plenty of choices whether you’re hiring in Tel Aviv, Sydney, Silicon Valley, or New York. There are four programmers in Copenhagen right now. No relocation required. All of them highly qualified, actually; any one of them would qualify to interview at Fog Creek.</p>
<p>Stack Overflow Careers is something of a chicken-and-egg business. We have to get a big audience of programmers <em>and</em> a big audience of employers all at the same time, and then it’s like a junior high school dance, with the boys on one side of the gym and the girls on the other side, and for a while you just sit there holding your breath to see if anyone will dance. We invited a few hundred employers as beta testers... these were the companies that have been <a href="http://jobs.stackoverflow.com/">listing jobs on StackOverflow</a> over the last six months, and so far, they’ve found a few dozen candidates that they liked. Once it gets to that point, we’re out of the loop, so we don’t really know how many people are actually finding jobs, but please email me your success stories and failure stories so we can keep working to make it better.</p>
<p>In the meantime, <a href="http://codinghorror.com/">Jeff</a> and the StackOverflow crew have done something brilliant: they’ve made it possible to do searches and see how many candidates match even before you have to pay. So if you want to try it out but are afraid that there aren’t students looking for OCaml internships in Houston, you can try it, and find that there is, indeed, one. So, <a href="http://careers.stackoverflow.com/employer">try it out right now</a>. There’s no obligation, and we’re happy to give you your money back if you don’t think you got good value.</p>
<p>Need to hire a really great programmer? Want a job that doesn't drive you crazy? Visit the <a href="http://jobs.joelonsoftware.com/">Joel on Software Job Board</a>: Great software jobs, great people.
</p></div>
    </summary>
    <updated>2009-12-02T22:24:43Z</updated>
    <author>
      <name>Joel Spolsky</name>
    </author>
    <source>
      <id>http://www.joelonsoftware.com</id>
      <logo>http://www.joelonsoftware.com/RssJoelOnSoftware.jpg</logo>
      <author>
        <name>Joel Spolsky</name>
      </author>
      <link href="http://www.joelonsoftware.com" rel="alternate" type="text/html"/>
      <link href="http://joelonsoftware.com/rss.xml" rel="self" type="application/rss+xml"/>
      <rights>Copyright 1999-2008 Joel Spolsky.</rights>
      <subtitle>Painless Software Management</subtitle>
      <title>Joel on Software</title>
      <updated>2010-01-27T19:12:08Z</updated>
    </source>
  </entry>

  <entry>
    <id>tag:blogger.com,1999:blog-14903426.post-2883792427512414375</id>
    <link href="http://blog.cleverelephant.ca/feeds/2883792427512414375/comments/default" rel="replies" type="application/atom+xml"/>
    <link href="https://www.blogger.com/comment.g?blogID=14903426&amp;postID=2883792427512414375" rel="replies" type="text/html"/>
    <link href="http://www.blogger.com/feeds/14903426/posts/default/2883792427512414375" rel="edit" type="application/atom+xml"/>
    <link href="http://www.blogger.com/feeds/14903426/posts/default/2883792427512414375" rel="self" type="application/atom+xml"/>
    <link href="http://blog.cleverelephant.ca/2009/12/perfect.html" rel="alternate" type="text/html"/>
    <title>Perfect</title>
    <content type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml">The New York Times political blog has <a href="http://thecaucus.blogs.nytimes.com/2009/12/01/live-blogging-obamas-afghan-speech/">instant commentary</a> on Obama's Afghanistan speech tonight, and the one-sentence teaser in the RSS feed speaks volumes:<blockquote>In an address aimed at rank-and-file Americans, Mr. Obama did not call for sacrifices.</blockquote> <div class="blogger-post-footer"><img alt="" height="1" src="https://blogger.googleusercontent.com/tracker/14903426-2883792427512414375?l=blog.cleverelephant.ca" width="1"/></div></div>
    </content>
    <updated>2009-12-02T03:58:41Z</updated>
    <published>2009-12-02T03:56:00Z</published>
    <author>
      <name>Paul Ramsey</name>
      <email>noreply@blogger.com</email>
      <uri>http://www.blogger.com/profile/04056244920940087995</uri>
    </author>
    <source>
      <id>tag:blogger.com,1999:blog-14903426</id>
      <author>
        <name>Paul Ramsey</name>
        <email>noreply@blogger.com</email>
        <uri>http://www.blogger.com/profile/04056244920940087995</uri>
      </author>
      <link href="http://blog.cleverelephant.ca/feeds/posts/default" rel="http://schemas.google.com/g/2005#feed" type="application/atom+xml"/>
      <link href="http://www.blogger.com/feeds/14903426/posts/default" rel="self" type="application/atom+xml"/>
      <link href="http://blog.cleverelephant.ca/" rel="alternate" type="text/html"/>
      <link href="http://pubsubhubbub.appspot.com/" rel="hub" type="text/html"/>
      <link href="http://www.blogger.com/feeds/14903426/posts/default?start-index=26&amp;max-results=25" rel="next" type="application/atom+xml"/>
      <subtitle>Open source geospatial opinions and techniques, seen from the trenches and from far far above...</subtitle>
      <title>Paul Ramsey</title>
      <updated>2010-03-10T20:35:59Z</updated>
    </source>
  </entry>

  <entry>
    <id>tag:blogger.com,1999:blog-14903426.post-2422858832117107392</id>
    <link href="http://blog.cleverelephant.ca/feeds/2422858832117107392/comments/default" rel="replies" type="application/atom+xml"/>
    <link href="https://www.blogger.com/comment.g?blogID=14903426&amp;postID=2422858832117107392" rel="replies" type="text/html"/>
    <link href="http://www.blogger.com/feeds/14903426/posts/default/2422858832117107392" rel="edit" type="application/atom+xml"/>
    <link href="http://www.blogger.com/feeds/14903426/posts/default/2422858832117107392" rel="self" type="application/atom+xml"/>
    <link href="http://blog.cleverelephant.ca/2009/11/is-good-enough-good-enough.html" rel="alternate" type="text/html"/>
    <title>Is "Good Enough" Good Enough?</title>
    <content type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml">The gift that keeps on giving, for me, is performance work. Users love it, and it tickles my cerebral cortex in a way other work just cannot touch. Some of my first substantive patches to MapServer were performance patches, and I've also taken that tack into PostGIS.<br/><br/>One of the things that surprised me while investigating the MapServer QIX index structure was how little a badly built tree impacted real world performance. The QIX file, when built on point files, tends to build in far more depth than it needs, strictly speaking. The extra depth adds theoretical time to traverse the tree for searches and yet... even when I tested quite huge shape files the performance was fine.<br/><br/>Recently I've been looking again at internally indexing geometries for high performance testing of things like distance and intersections. We already have some of this for PostGIS, using the GEOS "PreparedGeometry" construction, but I'd like a native implementation, and something that doesn't necessarily depend on a cached implementation.<br/><br/>There is already a form of internally indexed testing in PostGIS, in the point-in-polygon case, and while reading it over I was struck by the elegance of the underlying assumption: rather than pre-sort the geometry edges, and then build the tree, the implementation simply scans the point array from start to finish and builds parent nodes from each successive pair of nodes. The result is not a perfect tree, by any stretch of the imagination, but... it's good enough. Because the edges are spatially auto-correlated, the parent nodes end up having good locality. <br/><br/>The beauty of this approach to index building is that since there is no sorting step and no re-balancing of the tree or any of that fancy stuff, you can actually build an "index" in O(n) time. A brute force intersection test is O(nm) time. But if you can build your indexes in O(n) time the cost of doing an intersection starts to get closer to O(n+m) time! (Note, I am not a computer scientist and the O() term for the actual tree-on-tree intersection test is beyond my powers.)<br/><br/>Now, since no sorting is being applied in the building of these "indexes" they could theoretically be terrible indexes. But since we're indexing GIS data, and the edges have this wonderful autocorrelation, they are actually "good enough", and obtainable in very little time.<br/><br/>The same tricks apply to building indexes for intersection and distance in geodetic space, which I predict will be in hot demand once people experience just how computationally expensive operations on the new PostGIS 1.5 <code>geography</code> type are!<br/> <div class="blogger-post-footer"><img alt="" height="1" src="https://blogger.googleusercontent.com/tracker/14903426-2422858832117107392?l=blog.cleverelephant.ca" width="1"/></div></div>
    </content>
    <updated>2009-12-01T02:46:47Z</updated>
    <published>2009-12-01T01:16:00Z</published>
    <author>
      <name>Paul Ramsey</name>
      <email>noreply@blogger.com</email>
      <uri>http://www.blogger.com/profile/04056244920940087995</uri>
    </author>
    <source>
      <id>tag:blogger.com,1999:blog-14903426</id>
      <author>
        <name>Paul Ramsey</name>
        <email>noreply@blogger.com</email>
        <uri>http://www.blogger.com/profile/04056244920940087995</uri>
      </author>
      <link href="http://blog.cleverelephant.ca/feeds/posts/default" rel="http://schemas.google.com/g/2005#feed" type="application/atom+xml"/>
      <link href="http://www.blogger.com/feeds/14903426/posts/default" rel="self" type="application/atom+xml"/>
      <link href="http://blog.cleverelephant.ca/" rel="alternate" type="text/html"/>
      <link href="http://pubsubhubbub.appspot.com/" rel="hub" type="text/html"/>
      <link href="http://www.blogger.com/feeds/14903426/posts/default?start-index=26&amp;max-results=25" rel="next" type="application/atom+xml"/>
      <subtitle>Open source geospatial opinions and techniques, seen from the trenches and from far far above...</subtitle>
      <title>Paul Ramsey</title>
      <updated>2010-03-10T20:35:59Z</updated>
    </source>
  </entry>

  <entry>
    <id>tag:blogger.com,1999:blog-14903426.post-7708278764256093475</id>
    <link href="http://blog.cleverelephant.ca/feeds/7708278764256093475/comments/default" rel="replies" type="application/atom+xml"/>
    <link href="https://www.blogger.com/comment.g?blogID=14903426&amp;postID=7708278764256093475" rel="replies" type="text/html"/>
    <link href="http://www.blogger.com/feeds/14903426/posts/default/7708278764256093475" rel="edit" type="application/atom+xml"/>
    <link href="http://www.blogger.com/feeds/14903426/posts/default/7708278764256093475" rel="self" type="application/atom+xml"/>
    <link href="http://blog.cleverelephant.ca/2009/11/you-get-more-than-what-you-pay-for.html" rel="alternate" type="text/html"/>
    <title>You get more than what you pay for!</title>
    <content type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml">Entchev <a href="http://blog.entchev.com/2009/11/23/report-wikipedia-losing-volunteers-is-open-street-map-next.aspx?ref=rss">reflexively repeats</a> one of the most foolish canards ever hurled against collaborative knowledge building (open source, open data, open knowledge)<blockquote>You get what you pay for.</blockquote>Was there ever a putdown more easily falsifiable? <br/><br/>You pay nothing for PostGIS. Is the value to you nothing? You pay nothing for Wikipedia. Is the value to you nothing? You pay nothing for Open Street Map, is the value to you... nothing? Clearly, you, and everyone, gets <b>more</b> than what they pay for.<br/><br/>Now, there are many arguments to be made and beers to be drunk over whether what you get is <b>enough for all possible purposes of all possible people</b>. Some think that the trend in open knowledge is so strong that even that goal is within reach. Me, not so much. <br/><br/>But clearly, everyone has access to these resources, for free, and what they get in return is more than what they paid.<br/> <div class="blogger-post-footer"><img alt="" height="1" src="https://blogger.googleusercontent.com/tracker/14903426-7708278764256093475?l=blog.cleverelephant.ca" width="1"/></div></div>
    </content>
    <updated>2009-11-24T03:30:18Z</updated>
    <published>2009-11-24T03:21:00Z</published>
    <author>
      <name>Paul Ramsey</name>
      <email>noreply@blogger.com</email>
      <uri>http://www.blogger.com/profile/04056244920940087995</uri>
    </author>
    <source>
      <id>tag:blogger.com,1999:blog-14903426</id>
      <author>
        <name>Paul Ramsey</name>
        <email>noreply@blogger.com</email>
        <uri>http://www.blogger.com/profile/04056244920940087995</uri>
      </author>
      <link href="http://blog.cleverelephant.ca/feeds/posts/default" rel="http://schemas.google.com/g/2005#feed" type="application/atom+xml"/>
      <link href="http://www.blogger.com/feeds/14903426/posts/default" rel="self" type="application/atom+xml"/>
      <link href="http://blog.cleverelephant.ca/" rel="alternate" type="text/html"/>
      <link href="http://pubsubhubbub.appspot.com/" rel="hub" type="text/html"/>
      <link href="http://www.blogger.com/feeds/14903426/posts/default?start-index=26&amp;max-results=25" rel="next" type="application/atom+xml"/>
      <subtitle>Open source geospatial opinions and techniques, seen from the trenches and from far far above...</subtitle>
      <title>Paul Ramsey</title>
      <updated>2010-03-10T20:35:59Z</updated>
    </source>
  </entry>

  <entry>
    <id>tag:blogger.com,1999:blog-14903426.post-6835243013188546114</id>
    <link href="http://blog.cleverelephant.ca/feeds/6835243013188546114/comments/default" rel="replies" type="application/atom+xml"/>
    <link href="https://www.blogger.com/comment.g?blogID=14903426&amp;postID=6835243013188546114" rel="replies" type="text/html"/>
    <link href="http://www.blogger.com/feeds/14903426/posts/default/6835243013188546114" rel="edit" type="application/atom+xml"/>
    <link href="http://www.blogger.com/feeds/14903426/posts/default/6835243013188546114" rel="self" type="application/atom+xml"/>
    <link href="http://blog.cleverelephant.ca/2009/11/first-rule-of-fight-club.html" rel="alternate" type="text/html"/>
    <title>The First Rule of Fight Club...</title>
    <content type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml">Who knew that ESRI was so hip? From James Fee's <a href="http://www.spatiallyadjusted.com/2009/11/10/running-arcgis-9-4-alongside-arcgis-9-3-1/">blog</a>:<blockquote>Note: If you post any specific 9.4 Beta information (such as quoting forums posts on the Beta forums), expect ESRI to personally contact you. They appear to be monitoring this blog post. You’ve been warned.</blockquote><br/> <div class="blogger-post-footer"><img alt="" height="1" src="https://blogger.googleusercontent.com/tracker/14903426-6835243013188546114?l=blog.cleverelephant.ca" width="1"/></div></div>
    </content>
    <updated>2009-11-14T03:07:14Z</updated>
    <published>2009-11-13T22:06:00Z</published>
    <author>
      <name>Paul Ramsey</name>
      <email>noreply@blogger.com</email>
      <uri>http://www.blogger.com/profile/04056244920940087995</uri>
    </author>
    <source>
      <id>tag:blogger.com,1999:blog-14903426</id>
      <author>
        <name>Paul Ramsey</name>
        <email>noreply@blogger.com</email>
        <uri>http://www.blogger.com/profile/04056244920940087995</uri>
      </author>
      <link href="http://blog.cleverelephant.ca/feeds/posts/default" rel="http://schemas.google.com/g/2005#feed" type="application/atom+xml"/>
      <link href="http://www.blogger.com/feeds/14903426/posts/default" rel="self" type="application/atom+xml"/>
      <link href="http://blog.cleverelephant.ca/" rel="alternate" type="text/html"/>
      <link href="http://pubsubhubbub.appspot.com/" rel="hub" type="text/html"/>
      <link href="http://www.blogger.com/feeds/14903426/posts/default?start-index=26&amp;max-results=25" rel="next" type="application/atom+xml"/>
      <subtitle>Open source geospatial opinions and techniques, seen from the trenches and from far far above...</subtitle>
      <title>Paul Ramsey</title>
      <updated>2010-03-10T20:35:59Z</updated>
    </source>
  </entry>

  <entry>
    <id>tag:blogger.com,1999:blog-14903426.post-543673736665543687</id>
    <link href="http://blog.cleverelephant.ca/feeds/543673736665543687/comments/default" rel="replies" type="application/atom+xml"/>
    <link href="https://www.blogger.com/comment.g?blogID=14903426&amp;postID=543673736665543687" rel="replies" type="text/html"/>
    <link href="http://www.blogger.com/feeds/14903426/posts/default/543673736665543687" rel="edit" type="application/atom+xml"/>
    <link href="http://www.blogger.com/feeds/14903426/posts/default/543673736665543687" rel="self" type="application/atom+xml"/>
    <link href="http://blog.cleverelephant.ca/2009/11/palanterra-x3.html" rel="alternate" type="text/html"/>
    <title>Palanterra X3</title>
    <content type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml">James Fee has a nice <a href="http://www.spatiallyadjusted.com/2009/11/13/the-map-bar-has-to-go/">rant</a> on mapping interfaces today, but the part the piqued my interest was embedded in the screen shot of the National Map. It said "The National Map Viewer BETA: Powered by Palanterra X3"<br/><br/>Interesting! Who or what is this Palanterra X3 who have managed to get a top-of-the-fold "Powered by" on a major USGS site? Oddly, the Google is <a href="http://www.google.com/search?q=palanterra+x3">unusually terse</a> about this topic. Looks like it's an NGA project, and yet it's "Palanterra (TM)". Intra-governmental entrepreneurship at its finest, a carefully imagined brand name that appears only in meeting agendas and powerpoints.<br/> <div class="blogger-post-footer"><img alt="" height="1" src="https://blogger.googleusercontent.com/tracker/14903426-543673736665543687?l=blog.cleverelephant.ca" width="1"/></div></div>
    </content>
    <updated>2009-11-13T17:00:17Z</updated>
    <published>2009-11-13T16:54:00Z</published>
    <author>
      <name>Paul Ramsey</name>
      <email>noreply@blogger.com</email>
      <uri>http://www.blogger.com/profile/04056244920940087995</uri>
    </author>
    <source>
      <id>tag:blogger.com,1999:blog-14903426</id>
      <author>
        <name>Paul Ramsey</name>
        <email>noreply@blogger.com</email>
        <uri>http://www.blogger.com/profile/04056244920940087995</uri>
      </author>
      <link href="http://blog.cleverelephant.ca/feeds/posts/default" rel="http://schemas.google.com/g/2005#feed" type="application/atom+xml"/>
      <link href="http://www.blogger.com/feeds/14903426/posts/default" rel="self" type="application/atom+xml"/>
      <link href="http://blog.cleverelephant.ca/" rel="alternate" type="text/html"/>
      <link href="http://pubsubhubbub.appspot.com/" rel="hub" type="text/html"/>
      <link href="http://www.blogger.com/feeds/14903426/posts/default?start-index=26&amp;max-results=25" rel="next" type="application/atom+xml"/>
      <subtitle>Open source geospatial opinions and techniques, seen from the trenches and from far far above...</subtitle>
      <title>Paul Ramsey</title>
      <updated>2010-03-10T06:38:42Z</updated>
    </source>
  </entry>

  <entry>
    <id>tag:blogger.com,1999:blog-14903426.post-1179931286932871030</id>
    <link href="http://blog.cleverelephant.ca/feeds/1179931286932871030/comments/default" rel="replies" type="application/atom+xml"/>
    <link href="https://www.blogger.com/comment.g?blogID=14903426&amp;postID=1179931286932871030" rel="replies" type="text/html"/>
    <link href="http://www.blogger.com/feeds/14903426/posts/default/1179931286932871030" rel="edit" type="application/atom+xml"/>
    <link href="http://www.blogger.com/feeds/14903426/posts/default/1179931286932871030" rel="self" type="application/atom+xml"/>
    <link href="http://blog.cleverelephant.ca/2009/11/foss4g-hearts-sotm.html" rel="alternate" type="text/html"/>
    <title>FOSS4G hearts SoTM</title>
    <content type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml">A quiet bit of byplay is going on in the world of extreme geogeekery, as the <a href="http://www.stateofthemap.org/">State of the Map</a> conference, the annual gathering of the OpenStreetMap community, decides where to host their 2010 event. The twist for this year is that an intrepid member of their spanish community has <a href="http://lists.osgeo.org/pipermail/foss4g2010/2009-October/000067.html">suggested</a> hosting the event in Barcelona, to align with the <a href="http://2010.foss4g.org">FOSS4G 2010</a> event (either right before or right after). The OSM community decides on their site <a href="http://www.opengeodata.org/2009/11/11/state-of-the-map-2010/">in early December</a> – I'll add my non-binding "ooooooooh, I hopehopehopehopehope they choose Barcelona!"<br/> <div class="blogger-post-footer"><img alt="" height="1" src="https://blogger.googleusercontent.com/tracker/14903426-1179931286932871030?l=blog.cleverelephant.ca" width="1"/></div></div>
    </content>
    <updated>2009-11-12T01:11:34Z</updated>
    <published>2009-11-12T01:07:00Z</published>
    <author>
      <name>Paul Ramsey</name>
      <email>noreply@blogger.com</email>
      <uri>http://www.blogger.com/profile/04056244920940087995</uri>
    </author>
    <source>
      <id>tag:blogger.com,1999:blog-14903426</id>
      <author>
        <name>Paul Ramsey</name>
        <email>noreply@blogger.com</email>
        <uri>http://www.blogger.com/profile/04056244920940087995</uri>
      </author>
      <link href="http://blog.cleverelephant.ca/feeds/posts/default" rel="http://schemas.google.com/g/2005#feed" type="application/atom+xml"/>
      <link href="http://www.blogger.com/feeds/14903426/posts/default" rel="self" type="application/atom+xml"/>
      <link href="http://blog.cleverelephant.ca/" rel="alternate" type="text/html"/>
      <link href="http://pubsubhubbub.appspot.com/" rel="hub" type="text/html"/>
      <link href="http://www.blogger.com/feeds/14903426/posts/default?start-index=26&amp;max-results=25" rel="next" type="application/atom+xml"/>
      <subtitle>Open source geospatial opinions and techniques, seen from the trenches and from far far above...</subtitle>
      <title>Paul Ramsey</title>
      <updated>2010-03-04T22:47:05Z</updated>
    </source>
  </entry>

  <entry>
    <id>tag:blogger.com,1999:blog-14903426.post-1134055540627336333</id>
    <link href="http://blog.cleverelephant.ca/feeds/1134055540627336333/comments/default" rel="replies" type="application/atom+xml"/>
    <link href="https://www.blogger.com/comment.g?blogID=14903426&amp;postID=1134055540627336333" rel="replies" type="text/html"/>
    <link href="http://www.blogger.com/feeds/14903426/posts/default/1134055540627336333" rel="edit" type="application/atom+xml"/>
    <link href="http://www.blogger.com/feeds/14903426/posts/default/1134055540627336333" rel="self" type="application/atom+xml"/>
    <link href="http://blog.cleverelephant.ca/2009/11/postgis-gets-spherical-directors-cut.html" rel="alternate" type="text/html"/>
    <title>PostGIS gets Spherical (Directors Cut)</title>
    <content type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml"><b>Update:</b> Installation instructions have changed slightly since this post was written.<br/><br/>For a business oriented discussion of the new <code>GEOGRAPHY</code> type, see <a href="http://blog.opengeo.org/2009/11/04/postgis-gets-spherical/">my post on the OpenGeo blog</a>.<br/><br/><img src="http://t3.gstatic.com/images?q=tbn:A6ab0_KaSzQg2M:http://www.avidimages.com/preview/2006/10/01/globe_world_map_avidimages_1045_prev.jpg" style="float: right; padding: 5px;"/>So you want to try the new <code>GEOGRAPHY</code> type and see what it can do? Alright then!<br/><br/>If you are running Windows, please follow the directions on the <a href="http://www.postgis.org/download/windows/experimental.php">Windows experimental binaries</a> download page on the PostGIS site. Note that these builds might not be the absolute latest versions available.<br/><br/>If you are running Linux, fetch the latest code from SVN (svn checkout http://svn.osgeo.org/postgis/trunk postgis-svn) and then follow the <a href="http://postgis.refractions.net/documentation/manual-svn/ch02.html#PGInstall">install instructions</a>.<br/><br/>After installing, you should find the usual <code>postgis.sql</code> file which contains the old geometry and now the new geography features too. Install PostGIS and spatial reference information as usual:<br/><br/><code>createdb mydb<br/>psql -d mydb -f postgis.sql<br/>psql -d mydb -f spatial_ref_sys.sql</code><br/><br/>I find it useful for testing to load a shape file in the usual way, then add a geography column to it.<br/><br/><code>shp2pgsql -s 26910 -g geom taxlots.shp taxlots | psql mydb<br/>psql mydb</code><br/><br/>Once you have a table to play with, it's time to add a geography column, and build indexes. You have to transform the geometry into EPSG:4326 before casting to geography. When you build the index on the geography column, it builds a special index over the sphere which respects the poles and dateline.<br/><br/><code>alter table taxlots add column geog geography;<br/>update taxlots set geog = geography(st_transform(tgeom,4326));<br/>create index roads_geom_idx on taxlots using gist (geom);<br/>create index roads_geog_idx on taxlots using gist (geog);</code><br/><br/>How does this magic index work? The "trick" is to be as lazy as possible. I didn't want to write a whole new indexing scheme, and I already had a serviceable R-Tree index. What I needed to do was convert the lat/lon coordinates to a domain where the problems of the singularities at the poles and dateline would go away. The answer is to convert from spherical coordinates (lat/lon) relative to Greenwich into geocentric coordinates (x/y/z) relative to the center of earth. It's  easy then to build a 3D R-Tree on the geocentric bounds of the features. Calculating the bounds in 3D is tricky, because the curvature of the features over the spherical surface must be respected, but once that is done, the index performs admirably.<br/><br/>Now you can compare properties calculated on the plane and on the spheroid.<br/><br/><code>select st_area(geom) as geomarea, st_area(geog) as geogarea from taxlots limit 10;</code><br/><br/>Note that the units returned by the geography functions are metric. Square meters for area and linear meters for distances and lengths.<br/><br/>How about a quick spatial self-join, to test the indexes?<br/><br/><code>\timing<br/>-- geography test<br/>select sum(st_area(geog)) from taxlots a, taxlots b where st_dwithin(a.geog, b.geog, 100.0) and b.gid = 1;<br/>-- geometry test<br/>select sum(st_area(geom)) from taxlots a, taxlots b where st_dwithin(a.geom, b.geom, 100.0) and b.gid = 1;</code><br/><br/>In testing, I have been finding the geography index slightly faster than the geometry index, which is perhaps because I was able to write the geography index binding from scratch, trying to apply the lessons I have taken from reviewing the existing geometry index. In PostGIS 1.5 (coming Christmastime or sooner) the geography and geometry types will coexist, but use different disk serializations and index bindings. In PostGIS 2.0 (fall 2010) the geometry will also be swapped over to a new serialization and index binding and should become as fast (faster) than the geography index.<br/><br/>Finally, try out the transparent integration of the ST_Buffer() function from geometry with the geography type.<br/><br/><code>select st_area(st_buffer(geog, 2.0)) from taxlots limit 1;</code><br/><br/>By carefully transforming geometries out to appropriate planar spatial reference systems, you can use the functions built for geometry to provide operations on geographies. The definition for <code>ST_Buffer(geography, double)</code> looks like this:<br/><br/><code>CREATE OR REPLACE FUNCTION ST_Buffer(geography, float8)<br/>        RETURNS geography<br/>        AS 'SELECT geography(ST_Transform(ST_Buffer(ST_Transform(geometry($1), _ST_BestSRID($1)), $2), 4326))'<br/>        LANGUAGE 'SQL' IMMUTABLE STRICT;</code><br/><br/>Note that ST_Transform() appears twice, once to transform from geographics to a planar system and again to transform back after the buffer operation is complete. Also note the _ST_BestSRID() function, which analyzes the geography and provides a best guess planar system suitable for carrying out the operation. Right now the system picks an appropriate UTM zone, or a polar stereographic, or falls back to a mercator if there is no good choice.<br/><br/><b>Acknowledgements:</b> Of course, top billing goes to the funder, who has chosen to remain anonymous. Also, it would have been impossible for me to build the ST_Area() or ST_Distance() functions on the sphere and spheroid without the contributions of David Skea (if you check the PostGIS source code, you'll find he has contributed mathematical magic in the past also). And finally, <a href="http://www.paragoncorporation.com/team.aspx">Regina Obe</a> who has been testing and documenting my work as it is committed, resulting in very effective on-the-spot debugging and fixing of issues as they occur. Thanks everyone!<br/> <div class="blogger-post-footer"><img alt="" height="1" src="https://blogger.googleusercontent.com/tracker/14903426-1134055540627336333?l=blog.cleverelephant.ca" width="1"/></div></div>
    </content>
    <updated>2009-11-06T21:47:49Z</updated>
    <published>2009-11-03T21:46:00Z</published>
    <author>
      <name>Paul Ramsey</name>
      <email>noreply@blogger.com</email>
      <uri>http://www.blogger.com/profile/04056244920940087995</uri>
    </author>
    <source>
      <id>tag:blogger.com,1999:blog-14903426</id>
      <author>
        <name>Paul Ramsey</name>
        <email>noreply@blogger.com</email>
        <uri>http://www.blogger.com/profile/04056244920940087995</uri>
      </author>
      <link href="http://blog.cleverelephant.ca/feeds/posts/default" rel="http://schemas.google.com/g/2005#feed" type="application/atom+xml"/>
      <link href="http://www.blogger.com/feeds/14903426/posts/default" rel="self" type="application/atom+xml"/>
      <link href="http://blog.cleverelephant.ca/" rel="alternate" type="text/html"/>
      <link href="http://pubsubhubbub.appspot.com/" rel="hub" type="text/html"/>
      <link href="http://www.blogger.com/feeds/14903426/posts/default?start-index=26&amp;max-results=25" rel="next" type="application/atom+xml"/>
      <subtitle>Open source geospatial opinions and techniques, seen from the trenches and from far far above...</subtitle>
      <title>Paul Ramsey</title>
      <updated>2010-02-22T22:02:49Z</updated>
    </source>
  </entry>

  <entry>
    <id>tag:blogger.com,1999:blog-14903426.post-6752375204523475448</id>
    <link href="http://blog.cleverelephant.ca/feeds/6752375204523475448/comments/default" rel="replies" type="application/atom+xml"/>
    <link href="https://www.blogger.com/comment.g?blogID=14903426&amp;postID=6752375204523475448" rel="replies" type="text/html"/>
    <link href="http://www.blogger.com/feeds/14903426/posts/default/6752375204523475448" rel="edit" type="application/atom+xml"/>
    <link href="http://www.blogger.com/feeds/14903426/posts/default/6752375204523475448" rel="self" type="application/atom+xml"/>
    <link href="http://blog.cleverelephant.ca/2009/11/state-of-postgis.html" rel="alternate" type="text/html"/>
    <title>State of PostGIS</title>
    <content type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml">I gave a 30 minute talk about the past present and future of PostGIS at <a href="http://2009.foss4g.org">FOSS4G</a> two weeks ago, and thanks to the efforts of the folks at <a href="http://www.fosslc.org">FOSSLC</a> it's now online as <a href="http://blip.tv/file/2788616/">a video</a>.<br/> <div class="blogger-post-footer"><img alt="" height="1" src="https://blogger.googleusercontent.com/tracker/14903426-6752375204523475448?l=blog.cleverelephant.ca" width="1"/></div></div>
    </content>
    <updated>2009-11-05T15:00:03Z</updated>
    <published>2009-11-05T15:00:00Z</published>
    <author>
      <name>Paul Ramsey</name>
      <email>noreply@blogger.com</email>
      <uri>http://www.blogger.com/profile/04056244920940087995</uri>
    </author>
    <source>
      <id>tag:blogger.com,1999:blog-14903426</id>
      <author>
        <name>Paul Ramsey</name>
        <email>noreply@blogger.com</email>
        <uri>http://www.blogger.com/profile/04056244920940087995</uri>
      </author>
      <link href="http://blog.cleverelephant.ca/feeds/posts/default" rel="http://schemas.google.com/g/2005#feed" type="application/atom+xml"/>
      <link href="http://www.blogger.com/feeds/14903426/posts/default" rel="self" type="application/atom+xml"/>
      <link href="http://blog.cleverelephant.ca/" rel="alternate" type="text/html"/>
      <link href="http://pubsubhubbub.appspot.com/" rel="hub" type="text/html"/>
      <link href="http://www.blogger.com/feeds/14903426/posts/default?start-index=26&amp;max-results=25" rel="next" type="application/atom+xml"/>
      <subtitle>Open source geospatial opinions and techniques, seen from the trenches and from far far above...</subtitle>
      <title>Paul Ramsey</title>
      <updated>2010-03-01T18:06:23Z</updated>
    </source>
  </entry>

  <entry xml:lang="en-us">
    <id>http://www.joelonsoftware.com/items/2009/11/05.html</id>
    <link href="http://www.joelonsoftware.com/items/2009/11/05.html" rel="alternate" type="text/html"/>
    <title>Upgrade your career</title>
    <summary type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml"><p>Do you like your job?</p>
<p>Do you enjoy the people you work with? </p>
<p>Would you want to have lunch with them? Every day? Alex Papadimoulis <a href="http://answers.onstartups.com/questions/1498/what-fun-and-low-cost-fringe-benefits-perks-would-you-offer-to-employees/1502#1502">thinks</a> that Fog<span style="display: block; margin: 0 0 0.25ex 1em; float: right;"><a href="http://www.joelonsoftware.com/items/2009/11/05work.jpg"><img alt="" src="http://www.joelonsoftware.com/items/2009/11/05work-thumbnail.jpg" style="border: 1px solid #666;"/></a><br/><span>Tyler Griffin Hicks-Wright</span></span> Creek’s free lunches are “cultish,” but everyone at Fog Creek loves them. Maybe it’s the mandatory brain implant we install in each new worker, but I like to think that we just enjoy eating together because we genuinely like each other and like spending time together. If you can’t imagine eating lunch every day with your coworkers, I hate to break it to you: you might not like them. Is it OK to spend most of your waking hours with people you don’t like?</p>
<p>Do you actually enjoy doing your job? If you wake up an hour early in the morning, do you think, “Yay! I can go in early and get another hour of work in!” Or does that sound ridiculous to you?</p>
<p>Are you learning? When was the last time you had to learn a new skill? Is this year kind of like last year, or are you doing something new, stretching yourself, challenging yourself to be better?</p>
<p>At one of the recent DevDays events, I asked the audience (almost 100% programmers) how many of them were incredibly satisfied with their job, found it fulfilling, and were treated well by their employers. Only about 25% of the hands went up. I asked how many people either hated their job and couldn’t wait to find something better, or were actually actively on the job market. Again, about 25%. The rest were somewhere in the middle: maybe they can tolerate their job, but they’re keeping an eye open for something better.</p>
<p>Who is this DevDays audience? They’re the elite of the elite of the best programmers out there. They’re the people who participate in <a href="http://stackoverflow.com/">Stack Overflow</a>, the people who read, the people who are constantly trying to learn more about programming and software development. More than half of them paid their <em>own money </em>to attend a one day conference. They’re the most desirable software developers on the planet. And 75% of them are not delighted with their job.</p>
<p>That’s unacceptable. I’ve been saying for ten years that the top developers have a choice of where to work, and the top employers need to work harder to attract them, because the top developers get ten times as much work done as the average developers. </p>
<p>And yet, I still keep meeting ridiculously productive developers working in shitholes.</p>
<p>We’re going to fix this, right now. Thus, <a href="http://careers.stackoverflow.com/">Stack Overflow Careers</a>.</p>
<p>We’re going to completely turn the job market upside down, for the best software developers and the best companies.</p>
<p>This is a talent market. Developers are not even remotely interchangeable. Therefore, recruiting should work like Hollywood, not like union hiring halls of the last century.</p>
<p>In a union hiring hall, downtrodden workers line up like cogs, hoping to make it to the front of the line in time to get a few bucks for dinner.</p>
<p>In Hollywood, studios who need talent browse through portfolios, find two or three possible candidates, and make them great offers. And then they all try to outdo each other providing plush work environments and great benefits.</p>
<p><span style="display: block; margin: 0 0 0.25ex 1em; float: right;"><img alt="" src="http://www.joelonsoftware.com/items/2009/11/05cv-thumbnail.png" style="border: 1px solid #666;"/></span>Here’s how Stack Overflow Careers will work. Instead of job seekers browsing through job listings, the employers will browse through the CVs of experienced developers.</p>
<p>Instead of deciding you hate your job and going out to find a better one, you’ll just keep your CV on file at Stack Overflow and you’ll get contacted by employers.</p>
<p>Instead of submitting a resume, you’ll fill out a CV, which links back to your Stack Overflow account, so that you can demonstrate your reputation in the community and show us all how smart you really are. To a hiring manager, the fact that you took the time to help a fellow programmer with a detailed answer in some obscure corner of programming knowledge, and demonstrated mastery, is a lot more relevant than the Latin Club you joined in school.</p>
<p>Employers can see how good you are at communicating, how well you explain things, how well you understand the tools that you’re using, and generally, if you’re a great developer or not. And they can see your peer reputation, so all that hard work you’ve been putting into helping people on Stack Overflow can karmically come back and help you upgrade your job to the latest, state-of-the-art, great place to work.</p>
<p>Stack Overflow has grown incredibly fast. After a year in business, it gets over a million page views most weekdays and currently stands as the 817th largest site on the Internet, <a href="http://www.quantcast.com/p-c1rF4kxgLUzNc">according to Quantcast</a>. It reaches 5.2 million people a month. But Stack Overflow Careers doesn’t have to be massive. It’s not for the 5.2 million people who visit Stack Overflow; it’s for the top 25,000 developers who participate actively. It’s not for every employer; it’s for the few that treat developers well and offer a place to work that’s genuinely fulfilling.</p>
<p>Read the <a href="http://careers.stackoverflow.com/faq">FAQ</a>, then <a href="http://careers.stackoverflow.com/">go file your CV now</a>, and upgrade your career.</p>
<p>Need to hire a really great programmer? Want a job that doesn't drive you crazy? Visit the <a href="http://jobs.joelonsoftware.com/">Joel on Software Job Board</a>: Great software jobs, great people.
</p></div>
    </summary>
    <updated>2009-11-05T13:34:05Z</updated>
    <author>
      <name>Joel Spolsky</name>
    </author>
    <source>
      <id>http://www.joelonsoftware.com</id>
      <logo>http://www.joelonsoftware.com/RssJoelOnSoftware.jpg</logo>
      <author>
        <name>Joel Spolsky</name>
      </author>
      <link href="http://www.joelonsoftware.com" rel="alternate" type="text/html"/>
      <link href="http://joelonsoftware.com/rss.xml" rel="self" type="application/rss+xml"/>
      <rights>Copyright 1999-2008 Joel Spolsky.</rights>
      <subtitle>Painless Software Management</subtitle>
      <title>Joel on Software</title>
      <updated>2010-01-25T21:12:06Z</updated>
    </source>
  </entry>

  <entry>
    <id>tag:blogger.com,1999:blog-14903426.post-3403960739921712772</id>
    <link href="http://blog.cleverelephant.ca/feeds/3403960739921712772/comments/default" rel="replies" type="application/atom+xml"/>
    <link href="https://www.blogger.com/comment.g?blogID=14903426&amp;postID=3403960739921712772" rel="replies" type="text/html"/>
    <link href="http://www.blogger.com/feeds/14903426/posts/default/3403960739921712772" rel="edit" type="application/atom+xml"/>
    <link href="http://www.blogger.com/feeds/14903426/posts/default/3403960739921712772" rel="self" type="application/atom+xml"/>
    <link href="http://blog.cleverelephant.ca/2009/11/geography-and-mapserver.html" rel="alternate" type="text/html"/>
    <title>Geography and MapServer</title>
    <content type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml">Can you use the new PostGIS <code>GEOGRAPHY</code> type with <a href="http://mapserver.org">MapServer</a>? Yes! Just make sure your LAYER declares a geographic projection (e.g. "init=epsg:4326", or "proj=lonlat") so the correct coordinates are passed in. For simple DATA definitions(e.g. DATA "thegeog from thetable"), that's all you have to do. I haven't tested out more complex DATA statements yet, but I am pretty sure they should work fine. <br/> <div class="blogger-post-footer"><img alt="" height="1" src="https://blogger.googleusercontent.com/tracker/14903426-3403960739921712772?l=blog.cleverelephant.ca" width="1"/></div></div>
    </content>
    <updated>2009-11-04T23:36:48Z</updated>
    <published>2009-11-04T23:25:00Z</published>
    <author>
      <name>Paul Ramsey</name>
      <email>noreply@blogger.com</email>
      <uri>http://www.blogger.com/profile/04056244920940087995</uri>
    </author>
    <source>
      <id>tag:blogger.com,1999:blog-14903426</id>
      <author>
        <name>Paul Ramsey</name>
        <email>noreply@blogger.com</email>
        <uri>http://www.blogger.com/profile/04056244920940087995</uri>
      </author>
      <link href="http://blog.cleverelephant.ca/feeds/posts/default" rel="http://schemas.google.com/g/2005#feed" type="application/atom+xml"/>
      <link href="http://www.blogger.com/feeds/14903426/posts/default" rel="self" type="application/atom+xml"/>
      <link href="http://blog.cleverelephant.ca/" rel="alternate" type="text/html"/>
      <link href="http://pubsubhubbub.appspot.com/" rel="hub" type="text/html"/>
      <link href="http://www.blogger.com/feeds/14903426/posts/default?start-index=26&amp;max-results=25" rel="next" type="application/atom+xml"/>
      <subtitle>Open source geospatial opinions and techniques, seen from the trenches and from far far above...</subtitle>
      <title>Paul Ramsey</title>
      <updated>2010-02-22T22:59:35Z</updated>
    </source>
  </entry>

  <entry xml:lang="en-us">
    <id>http://www.joelonsoftware.com/items/2009/11/03.html</id>
    <link href="http://www.joelonsoftware.com/items/2009/11/03.html" rel="alternate" type="text/html"/>
    <title>Does Slow Growth Equal Slow Death?</title>
    <summary type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml"><p><a href="http://www.joelonsoftware.com/inc.html?23">My new Inc. column is up</a>. “For a guy who wrote a book on how to hire great programmers, it’s mortifying how incompetent I’ve been at enlarging the sales team, which, right now, consists of one terrific account executive and a dog. (I’m just kidding. There’s no dog.)”</p>
<p>Need to hire a really great programmer? Want a job that doesn't drive you crazy? Visit the <a href="http://jobs.joelonsoftware.com/">Joel on Software Job Board</a>: Great software jobs, great people.
</p></div>
    </summary>
    <updated>2009-11-04T00:50:52Z</updated>
    <author>
      <name>Joel Spolsky</name>
    </author>
    <source>
      <id>http://www.joelonsoftware.com</id>
      <logo>http://www.joelonsoftware.com/RssJoelOnSoftware.jpg</logo>
      <author>
        <name>Joel Spolsky</name>
      </author>
      <link href="http://www.joelonsoftware.com" rel="alternate" type="text/html"/>
      <link href="http://joelonsoftware.com/rss.xml" rel="self" type="application/rss+xml"/>
      <rights>Copyright 1999-2008 Joel Spolsky.</rights>
      <subtitle>Painless Software Management</subtitle>
      <title>Joel on Software</title>
      <updated>2010-01-22T18:12:05Z</updated>
    </source>
  </entry>

  <entry xml:lang="en-us">
    <id>http://www.joelonsoftware.com/items/2009/11/01.html</id>
    <link href="http://www.joelonsoftware.com/items/2009/11/01.html" rel="alternate" type="text/html"/>
    <title>Figuring out what your company is all about</title>
    <summary type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml"><p>What is your company about?</p>
<p>Recently I got inspired by Kathy Sierra, whose blog <a href="http://headrush.typepad.com/">Creating Passionate Users</a> and <a href="http://www.amazon.com/gp/redirect.html?ie=UTF8&amp;location=http%3A%2F%2Fwww.amazon.com%2Fs%3Fie%3DUTF8%26x%3D0%26ref%255F%3Dnb%255Fss%26y%3D0%26field-keywords%3Dhead%2520first%26url%3Dsearch-alias%253Daps&amp;tag=joelonsoftware&amp;linkCode=ur2&amp;camp=1789&amp;creative=390">Head First</a> series of books revolutionized developer education. She kept saying the same thing <a href="http://twitter.com/kathySierra">again</a> and again: <a href="http://www.globalnerdy.com/2009/10/17/its-about-helping-your-users-become-awesome-or-being-better-is-better-by-kathy-sierra/"><em>help your users be awesome</em></a>.

</p>
<p>Kathy taught me that if you can’t explain your mission in the form, “We help $TYPE_OF_PERSON be awesome at $THING,” you are not going to have passionate users. What’s <em>your</em> tagline? Can you fit it into that template?
</p>
<p>It took us nine years, but we finally worked out what <a href="http://www.fogcreek.com/">Fog Creek Software</a> is all about, which I’ll tell you in a moment, but first, some backstory.</p>
<p>In the early days, we were all about making a great place to be a software developer in New York City.
</p>
<p>Yep, that was all there was to it. Almost every software job in the city was terrible. You had a choice of which kind of terrible. Want to wear a suit and work long hours under crummy conditions? Take a job at a bank. Want to report to a manic-depressive creative who demands that you stretch HTML in ways that would have you put to death, in certain countries? Take a job at a media company. Want to work 24/7 in a basement with water pipes dripping on your head and get paid in worthless stock options? Take your pick of the revenue-free dotcom startups.

</p>
<p>Why New York, then? There are lots of great product companies where software developers are treated very well in Redmond, Washington. But I was sick of trying to live in lesser cities. Sure, the Seattle area is beautiful, and green, and clean, and possesses great coffee, and I understand that there are even a couple of grocery stores open late now. But I’m staying in New York, because it’s the greatest city in the world.
</p>
<p>I gave up the search, and decided to start a company with my buddy Michael Pryor. Making a nice place to work was our primary objective. We had private offices, flew first class, worked 40 hour weeks, and bought people lunch, Aeron chairs, and top of the line computers. We shared our ingenious formula with the world: </p>
<p>
	<img alt="" src="http://www.joelonsoftware.com/items/2009/11/01OldFormula.png" style="border: 1px solid #666;"/></p>
<p>The tagline was “building the company where the best software developers want to work.” It was, to say the least, awkward. It didn’t make for a good elevator pitch. It didn’t really have the right format. “Abercrombie and Fitch: building the apparel store where the hottest teenagers will want to work.” Who cares? Not the hot teenagers, I’ll tell you that.

</p>
<p>Anyway we <em>accomplished</em> that goal. Cross it off the list. What’s next? We needed a new mission statement.
</p>
<p>And it has to be something of the form, “We help $TYPE_OF_PERSON be awesome at $THING.”</p>
<p>Bells went off. Everything we’ve done successfully has one thing in common: It’s all about helping software developers be awesome at making software.
</p>
<p>That includes <a href="http://www.joelonsoftware.com/">Joel on Software</a>, <a href="http://stackoverflow.com/">Stack Overflow</a>, all the <a href="http://www.amazon.com/gp/redirect.html?ie=UTF8&amp;location=http%3A%2F%2Fwww.amazon.com%2Fs%3Fie%3DUTF8%26x%3D0%26ref%255F%3Dnb%255Fss%26y%3D0%26field-keywords%3Dspolsky%26url%3Dsearch-alias%253Dstripbooks&amp;tag=joelonsoftware&amp;linkCode=ur2&amp;camp=1789&amp;creative=390">books</a> I’ve been writing, the conferences like <a href="http://stackoverflow.carsonified.com/">DevDays</a> and <a href="http://businessofsoftware.org/">Business of Software</a>, the <a href="http://jobs.joelonsoftware.com/">Jobs Board</a> and <a href="http://careers.stackoverflow.com/">Stack Overflow Careers</a>. </p>
<p>It includes our flagship product, <a href="http://www.fogbugz.com/">FogBugz</a>, which is all about giving developers tools that gently guide them from good to great. It’s the software implementation of the philosophy I’ve been writing about for a decade, lacking only one thing: the feature to replace exceptions with return values, while adding Hungarian prefixes to all variable names. THAT IS A JOKE, PEEPLE. Put DOWN the bazooka.</p>
<p>Helping you make more awesome software is why I write endlessly about what we’re doing at Fog Creek, despite the fact that people accuse me of shilling. I’m not writing to promote our products. You don’t have to buy our products to get the benefit of reading about my experience designing them and building them and selling them. I’m writing to share some of my experiences in case they can help <em>you</em> make better software. </p>
<p>Our focus on helping developers explains why one of our early products, CityDesk, flopped: it had nothing to do with software developers. And it explains why another of our products, <a href="https://www.copilot.com/">Fog Creek Copilot</a>, only found a market in the niche of software developers doing tech support. </p>
<p>So, here you go, the new tagline: “We help the world’s best developers make better software.”
</p>
<p>Going through this exercise made it easy to figure out what belongs in future versions of FogBugz and what doesn’t. In particular, we’re adding <a href="http://www.fogcreek.com/kiln">source control and code review features</a> to FogBugz, using Mercurial, the best open-source distributed version control system. Everything that helps developers make better software belongs in FogBugz: project planning, project management, bug tracking, and customer service.</p>
<p>It took almost ten years, but I think we finally got the mission for the next ten nailed.
</p>
<p>
 </p>
<hr/>
<p>Optional Advertainment: If you’ve got a moment, check out this 4½ minute trailer for <a href="http://training.fogcreek.com/">Make Better Software</a>, a new video training series we’ve been working on for more than a year. It’s the video edition of <a href="http://www.joelonsoftware.com/">Joel on Software</a> and fits perfectly with our agenda of helping developers make great software.</p>
<p/>

<p>Need to hire a really great programmer? Want a job that doesn't drive you crazy? Visit the <a href="http://jobs.joelonsoftware.com/">Joel on Software Job Board</a>: Great software jobs, great people.
</p></div>
    </summary>
    <updated>2009-11-01T21:51:31Z</updated>
    <author>
      <name>Joel Spolsky</name>
    </author>
    <source>
      <id>http://www.joelonsoftware.com</id>
      <logo>http://www.joelonsoftware.com/RssJoelOnSoftware.jpg</logo>
      <author>
        <name>Joel Spolsky</name>
      </author>
      <link href="http://www.joelonsoftware.com" rel="alternate" type="text/html"/>
      <link href="http://joelonsoftware.com/rss.xml" rel="self" type="application/rss+xml"/>
      <rights>Copyright 1999-2008 Joel Spolsky.</rights>
      <subtitle>Painless Software Management</subtitle>
      <title>Joel on Software</title>
      <updated>2009-12-29T00:12:08Z</updated>
    </source>
  </entry>

  <entry xml:lang="en-us">
    <id>http://www.joelonsoftware.com/items/2009/10/31.html</id>
    <link href="http://www.joelonsoftware.com/items/2009/10/31.html" rel="alternate" type="text/html"/>
    <title>Adam Bosworth on standards</title>
    <summary type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml"><a href="http://adambosworth.net/2009/10/29/talking-to-dc/">Adam Bosworth</a>: “All successful standards are as simple as possible, not as hard as possible.” <em>Required reading.</em>
<p>Need to hire a really great programmer? Want a job that doesn't drive you crazy? Visit the <a href="http://jobs.joelonsoftware.com/">Joel on Software Job Board</a>: Great software jobs, great people.
</p></div>
    </summary>
    <updated>2009-11-01T04:50:24Z</updated>
    <author>
      <name>Joel Spolsky</name>
    </author>
    <source>
      <id>http://www.joelonsoftware.com</id>
      <logo>http://www.joelonsoftware.com/RssJoelOnSoftware.jpg</logo>
      <author>
        <name>Joel Spolsky</name>
      </author>
      <link href="http://www.joelonsoftware.com" rel="alternate" type="text/html"/>
      <link href="http://joelonsoftware.com/rss.xml" rel="self" type="application/rss+xml"/>
      <rights>Copyright 1999-2008 Joel Spolsky.</rights>
      <subtitle>Painless Software Management</subtitle>
      <title>Joel on Software</title>
      <updated>2009-12-14T00:12:28Z</updated>
    </source>
  </entry>

  <entry>
    <id>tag:blogger.com,1999:blog-14903426.post-4032825121335347992</id>
    <link href="http://blog.cleverelephant.ca/feeds/4032825121335347992/comments/default" rel="replies" type="application/atom+xml"/>
    <link href="https://www.blogger.com/comment.g?blogID=14903426&amp;postID=4032825121335347992" rel="replies" type="text/html"/>
    <link href="http://www.blogger.com/feeds/14903426/posts/default/4032825121335347992" rel="edit" type="application/atom+xml"/>
    <link href="http://www.blogger.com/feeds/14903426/posts/default/4032825121335347992" rel="self" type="application/atom+xml"/>
    <link href="http://blog.cleverelephant.ca/2009/10/googalytics.html" rel="alternate" type="text/html"/>
    <title>Googalytics</title>
    <content type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml">If you haven't read Paul Bissett's take on the Goog's entrance into the data collection and LBS businesses, you must, he's nailing it. Start with "<a href="http://blogs.weogeo.com/pbissett/2009/10/14/goog-borg-and-i-mean-that-in-the-nicest-way/">GOOG = BORG, and I Mean That in the Nicest Way</a>", and then do "<a href="http://blogs.weogeo.com/pbissett/2009/10/29/google-will-open-source-national-parcel-map/">Google Will Open Source National Parcel Map</a>".<br/><br/><img src="http://static.arstechnica.com/google_microscope.jpg"/><br/> <div class="blogger-post-footer"><img alt="" height="1" src="https://blogger.googleusercontent.com/tracker/14903426-4032825121335347992?l=blog.cleverelephant.ca" width="1"/></div></div>
    </content>
    <updated>2009-10-29T16:31:17Z</updated>
    <published>2009-10-29T16:25:00Z</published>
    <author>
      <name>Paul Ramsey</name>
      <email>noreply@blogger.com</email>
      <uri>http://www.blogger.com/profile/04056244920940087995</uri>
    </author>
    <source>
      <id>tag:blogger.com,1999:blog-14903426</id>
      <author>
        <name>Paul Ramsey</name>
        <email>noreply@blogger.com</email>
        <uri>http://www.blogger.com/profile/04056244920940087995</uri>
      </author>
      <link href="http://blog.cleverelephant.ca/feeds/posts/default" rel="http://schemas.google.com/g/2005#feed" type="application/atom+xml"/>
      <link href="http://www.blogger.com/feeds/14903426/posts/default" rel="self" type="application/atom+xml"/>
      <link href="http://blog.cleverelephant.ca/" rel="alternate" type="text/html"/>
      <link href="http://pubsubhubbub.appspot.com/" rel="hub" type="text/html"/>
      <link href="http://www.blogger.com/feeds/14903426/posts/default?start-index=26&amp;max-results=25" rel="next" type="application/atom+xml"/>
      <subtitle>Open source geospatial opinions and techniques, seen from the trenches and from far far above...</subtitle>
      <title>Paul Ramsey</title>
      <updated>2010-02-21T19:44:08Z</updated>
    </source>
  </entry>

  <entry xml:lang="en-us">
    <id>http://www.joelonsoftware.com/items/2009/10/26.html</id>
    <link href="http://www.joelonsoftware.com/items/2009/10/26.html" rel="alternate" type="text/html"/>
    <title>Capstone projects and time management</title>
    <summary type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml"><p>It is amazing how easy it is to sail through a Computer Science degree from a top 
university without ever learning the basic tools of software developers, without ever 
working on a team, and without ever taking a course for which you <i>don’t </i>get an automatic F for collaborating. Many CS departments are trapped in the 1980s, teaching the same old curriculum that has by now become completely divorced from the reality of modern software development. </p>
<p>Where are students supposed to learn about version control, bug tracking, working on teams, scheduling, estimating, debugging, usability testing, and documentation? Where do they learn to write a program longer than 20 lines?</p>
<p>Many universities have managed to convince themselves that the more irrelevant the curriculum is to the real world, the more elite they are. It’s the liberal arts way. Leave it to the technical vocational institutes, the red-brick universities, and the lesser schools endowed with many compass points (“University of Northern Southwest Florida”) to actually produce programmers. The Ivy Leagues of the world want to teach linear algebra and theories of computation and Haskell programming, and all the striver CS departments trying to raise their standards are doing so by eliminating anything practical from the curriculum in favor of more theory. </p>
<p>Now, don’t get me wrong, <a href="http://www.joelonsoftware.com/articles/ThePerilsofJavaSchools.html">this isn’t necessarily a bad thing</a>. At least they’re replacing Java with Scheme, if only because “that’s what MIT does.” (<a href="http://www.wisdomandwonder.com/link/2110/why-mit-switched-from-scheme-to-python">Too late!</a>) And they are teaching students to think a certain way. And given how much the average CS professor knows about real-world software engineering, I think I’d rather have kids learn that stuff at an <a href="http://fogcreek.com/Jobs/SummerIntern.html">internship at Fog Creek</a>.</p>
<p>Greg Wilson, an assistant professor at the University of Toronto, <a href="http://www.slideshare.net/gvwilson/bits-of-evidence-2338367">gave a talk at the StackOverflow DevDay conference in Toronto</a>, which was entertaining, informative, and generally just a huge hit. We got to talking, and he told me about his latest brainchild, <a href="http://ucosp.wordpress.com/">UCOSP</a>, which stands for “All The Good Names Are Taken.”</p>
<p>It’s a consortium of 15 universities, mostly in Canada, which are organizing joint senior-year capstone projects. They’re setting up teams of a half-dozen undergraduates from assorted universities to collaborate on contributing to an open source project, for credit and for a grade. As soon as I heard about the program I volunteered to sponsor a team to make a contribution to Mercurial. Sponsoring a team consists of offering to pay for a trip to Toronto for all the undergrads to get organized, and providing a programmer to mentor the team.</p>
<p>Browsing around the <a href="http://ucosp.wordpress.com/">UCOSP blog</a>, I was reminded of <a href="http://ucosp.wordpress.com/2009/10/21/a-rational-response-to-an-irrational-environment/">why student projects, while laudatory, frequently fail to deliver anything useful</a>. “One of the points of this course is to give you a chance to find out what it’s like to set and then meet your own goals,” Greg wrote. “The net result is pretty clear at this point: in many cases, students are doing less per week on this course than they would on a more structured course that had exactly the same content.”</p>
<p>College students in their final year have about 16 years of experience doing short projects and leaving everything until the last minute. Until you’re a senior in college, you’re very unlikely to have <i>ever</i> encountered an assignment that can’t be done by staying up all night. </p>
<p>The typical CS assignment expects students to write the “interesting” part of the code (in the academic sense of the word). The other 90% of the work that it takes to bring code up to the level of “useful, real-world code” is never expected from undergrads, because it’s not “interesting” to fix bugs and deal with real-world conditions, and because most CS faculty have never worked in the real world and have almost no idea what it takes to create software that can survive an encounter with users.</p>
<p>Time management is usually to blame. In a group of four students, even if one or two of the students are enterprising enough to try to start early in the term, the other students are likely to drag their heels, because they have more urgent projects from other classes that are due <i>tomorrow</i>. The enterprising student(s) will then have to choose between starting first and doing more than their fair share of the work, or waiting with everyone else until the night before, and guess which wins.</p>
<p>Students have exactly zero experience with long term, team-based schedules. Therefore, they almost always do crappy work when given a term-length project and told to manage their time themselves. </p>
<p>If anything productive is to come out of these kinds of projects, you have to have weekly deadlines, and you have to recognize that ALL the work for the project will be done the night before the weekly deadline. It appears to be a permanent part of the human condition that long term deadlines without short term milestones are rarely met.</p>
<p>This might be a neat opportunity to use Scrum. Once a week, the team gets together, in person or virtually, and reviews the previous week’s work. Then they decide which features and tasks to do over the next week. FogBugz would work great for tracking this: if you’re doing a capstone project and need access to FogBugz, please let us know and we’ll be happy to set you up for free. We can also set you up with beta access to kiln, our hosted version of Mercurial, which includes a code review feature.</p>
<p>I’ve been blaming students, here, for lacking the discipline to do term-length projects throughout the term, instead of procrastinating, but of course, the problem is endemic among non-students as well. It’s taken me a while, but I finally learned that long-term deadlines (or no deadlines at all) just don’t work with professional programmers, either: you need a schedule of regular, frequent deliverables to be productive over the long term. The only reason the real world gets this right where all-student college teams fail is because in the real world there are managers, who can set deadlines, which a team of students who are all peers can’t pull off.</p>
<p>Need to hire a really great programmer? Want a job that doesn't drive you crazy? Visit the <a href="http://jobs.joelonsoftware.com/">Joel on Software Job Board</a>: Great software jobs, great people.
</p></div>
    </summary>
    <updated>2009-10-27T00:36:42Z</updated>
    <author>
      <name>Joel Spolsky</name>
    </author>
    <source>
      <id>http://www.joelonsoftware.com</id>
      <logo>http://www.joelonsoftware.com/RssJoelOnSoftware.jpg</logo>
      <author>
        <name>Joel Spolsky</name>
      </author>
      <link href="http://www.joelonsoftware.com" rel="alternate" type="text/html"/>
      <link href="http://joelonsoftware.com/rss.xml" rel="self" type="application/rss+xml"/>
      <rights>Copyright 1999-2008 Joel Spolsky.</rights>
      <subtitle>Painless Software Management</subtitle>
      <title>Joel on Software</title>
      <updated>2009-12-11T22:12:29Z</updated>
    </source>
  </entry>
</feed>
