August 27, 2008

Documenting the History of MapServer

Inspired by the recent thread on FOSS4G history, I started an effort to document MapServer’s history, from it’s beginnings in the mid-1990s. Check out the progress we’ve made so far. If there’s anything missing, or in error, feel free to contribute! Written from home: window.onload=function() { [...]

Lex parsimoniae

Indeed. If the GoogleSat looked closely, we'd discover that many plants were "magnetically" facing East in the morning and West in the evening. See also Occam's Razor.

GIS-Python Lab website update

I've tuned up the http://gispython.org page; adding links to similar enterprises, highlighting the email list, and exposing project news items. Note that I'm using the Python Package Index's Topic :: Scientific/Engineering :: GIS as the canonical list of open source geospatial software for Python. I hope the update is helpful.

Some ponderings on FDO Schema's

"Schema

In RDBMS terms, a Schema is a collection of tables, indexes,
views, etc. in a database. Feature and RDBMS schemas do not correspond 1:1.

A Feature Schema may be stored in different RDBMS schemas and an RDBMS schema
might be composed of multiple logical schemas."

http://fdo.osgeo.org/glossary.html

As a result of this loose definition we have no simple standard for schema and class naming across providers.

Here are some examples of different schema & class names currently in use in FDO
OSGEO.SHP reports Default:shpfilename
OSGEO.Gdal reports default:default
KingOracle reports KingOra:ZAC~BUILDINGOUTLINES~SHPGEOM
OSGEO.OGR reports OGRSchema:BUILDING
MySql reports Fdoreports:aquifer_property

SDF reports what ever was set as the schema name
spot the pattern ?

PostGIS has been reformed following this discussion

http://www.nabble.com/Is-there-a-Feature-class-naming-convention-to15021175s18162.html#a15021175

http://trac.osgeo.org/fdo/ticket/310

I really don't see the need to inject provider names into the mix? ever.

It's really confusing for people new to FDO, here's a few ideas to make
things simple

1. Providers which don't support multiple schemas, should report an empty schema,
all their content lives in that single schema ( ie was default).

2. Providers which have native schemas with multiple real schemas,
should represent those available schemas to GetSchemas unless over-ridden
in the connection string or by custom mappings.

3. The tables in the user schema are listed in empty schema (default) conceptually
potentially twice.

4. Class names for databases are normally tablename, unless qualified which
then has ~COLUMN_NAME appended. (Coz if the are multiple geometries, FDO requires
to know which one is the identifier)

5. Class names for file based providers is based on their file name as current

6. Drumroll, The empty schema ":watercourses" could be also just "watercourses"

so lets see that means
OSGEO.SHP reports filename
OSGEO.Gdal reports filename
KingOracle reports schema:tablename or if connected as "schema" then just tablename
OSGEO.OGR reports filename
MySql reports schema:tablename or if connected as "schema" then just tablename
SDF still reports what ever you like as a schema name
what's peoples thoughts on this?

August 26, 2008

Java Power Tools cuts straight and true

Part of my summer holiday reading is the book Java Power Tools, by John Ferguson Smart.


I count a computer book a good buy if I get one new idea from it; two is stellar; and three or more goes on my "Recommend to Colleagues" list. This one is on the list... Ideas I`ve picked up include:
  • the XMLTask extension for Ant, that provides easy and powerful editing of XML files. This should make configuring things like web.xml and struts-config.xml a lot easier. It even provides a way to uncomment blocks of XML markup.

  • SchemaSpy, which generates database documentation (including ER diagrams!) from JDBC metadata. The tool also also comes with profiles for interpreting some vendor-specific metadata. It will be interesting to see how it handles spatial datatypes in Oracle and PostGIS...

  • using Doxygen to generate documentation for Java source. Doxygen provides more capabilities than Javadoc, including UML diagrams and a variety of output document formats.

  • UMLGraph also allows generating UML diagrams from Java source, and embedding them directly in Javadoc.

For graph visualization, SchemaSpy, Doxygen and UMLGraph all use the GraphViz application. This looks like a great tool in its own right. It provides a DSL for specifying graph structures and node and edge symbology, along with a layout and rendering engine which outputs to numerous different formats.

JPT of course covers all the better-known tools such as Ant, Maven, CVS, SVN, JUnit, Bugzilla, Trac, and many others. It doesn`t replace the documentation for these tools, but it does give a good comparative overview and enough details to help you decide which ones you`re going to strap around your waist for the next project.

Zpátky mezi zdravými

Už je to týden, co jsem byl na zatím poslední kontrole v Krči. Výsledek je, že jsem byl prohlášen za zdravého (podmíněně ovšem - na dalších několik let). Následovat budou kontroly, ve smyslu jednou za pár měsíců markery, sem tam PET a CT. "Váš organismus má velkou pochvalu." Řekla mi ...

It’s still spam…

<rant>

Like others, I recently received a comment about an upcoming competition on  my “about” page. Like others, I feel that this is a curious way of advertising a competition with large monetary prize. Possibly unlike others, I also feel quite strongly about being contacted in this way. Don’t get me wrong, I think it’s a very worthy competition, and had the advertising policy been better thought through I would be all for it.

I do feel quite strongly about only posting my own personal views on my site. I do occasionally get asked to post on particular subjects/sites/products, and in general I won’t, unless it fits with something I was going to say anyway. I also feel quite strongly about posting on subjects that have been covered ad nauseum by other people, unless I have something different to add.

All in all, that makes me quite tetchy when I receive comments like this. By not using the contact form, it means I have to decide whether to get quite stalinist with my comment deletion policy, or to give people some free advertising. Furthermore, by posting to multiple blogs, our collective readership get stung with the same old post multiple times.

I guess this is just all just a request for people to learn a little blog-etiquette- make the effort to contact people in the correct way, and don’t use blog comments to advertise!

</rant>

Friends don't let friends use Endnote

Kurt, I have in fact seen mapping integrated with Zotero. Shekhar Krishnan used the GeoNames database to locate items by their place of publication in a demo at THATCamp.

August 25, 2008

CarbonArc revisited

Jeff Harrison’s mass email caught my eye today with the free trial of CarbonArc. I had the pleasure of taking an early release of CarbonArc for a spin last year and while it was a good start there were a few key things missing from my point of view. Having pushed and prodded Mapinfo 9.5 support for use with our SDI, why not run the new CarbonArc 1.6 through its paces …

From the press release,

CarbonArc PRO 1.6 eliminates barriers to SDI usability through advanced SOA-based discovery, analysis, exploitation, transaction management and security tools for OGC SDI - directly from the ESRI ArcGIS desktop.

Instead of just regurgitating the release, the key question that always gets asked is … doesn’t ESRI ArcGIS already do all this?

Its a tricky question to answer because while on paper i could say, “Yes it does!”, in reality there are just so many annoying quirks and missing features, it quickly becomes a nightmare integrating SDI features into your normal ArcGIS workflow (which is what this is all about, right?).  So with fingers crossed, lets dive right in and see what i can find in 5 minutes flat …

The Good

  1. Well laid out and robust tool set which delivers fully functional WMS/WFS/WFST/WCS capabilities … with no mucking about required!. The thing just works.
  2. Very easy export to Shapefile tool
  3. Full featured filter encoding support … no black magic, user has full control
  4. Full access to the query string for all service types
  5. Caching of features / images when saving to project files

The Bad

  1. GML Integration will always be difficult given its a completely new ArcGIS feature source, but its still not up to the average users expectations I dont think. There is no attribute table, the features are independant of pretty much all other ArcGIS functionality so you are really left with GAIA functionality squished into an ArcGIS window.
  2. Web services request headers are devoid of any accept-encoding headers. I’m still pondering the choice of Expect: 100 requests … but i’m sure there’s a good reason in the depths of HTTP …
  3. The exclusive tool for CubeWerx “Identity Management Service” seems a bit strange as i’m not aware of any services that use this technology? Shoot me a link if i missed something!
  4. Lack of support for any WMS LegendGraphics. Users can choose from multiple Styles, but theres no way to actually view legend information which is a bit disappointing
  5. In the full minute spent trying, i wasnt able to get the WFST support working … i could get as far as the schema but as soon as i’d try to insert a feature the thing would just bail out.

I’m beginning to think the best suggestion would be to somehow merge CarbonArc WFS functionality with an automated export to shape on each filter response. This would allow excellent SDI WFS support, while still giving full ESRI ArcGIS functionality to users without having to reinvent the wheel (for things like the edit system). With the WMS/WCS support pretty solid, i think getting the balance of WFS right could mean the difference between a very promising product and one I would recommend to everyone using our platform.

Thoughts?

August 24, 2008

Digital Cities: Where does the data come from ?

Earlier this year, GITA hosted an Emergency Response Symposium (ERS), organized by Talbot Brooks of Delta State University, as part of GITA's 2008 annual conference.  Doug Eberhard, Tim Case, Dan Campbell, and I were part of a panel that discussed the convergence of BIM, CAD, GIS, and 3D simulation, digital cities, and some of the implications for emergency response.  Joe Francica of Directions Magazine was in the audience, and asked a very important question which I will paraphrase.   Where does the data come from ?  Afterward Joe wrote an insightful article about this discussion.  Recently, I discussed the same issue with Kenneth Wong of Cadalyst magazine.

When we talk about modeling cities digitally, we are talking about modeling the infrastructure of a modernGeoweb_2008_gzeiss_v10_2 city including buildings and other structures, transportation networks, and utility and communications networks.  We need to be able to visualize the city photorealistically,  and we also need to be able to analyze how it works, and simulate how it would might work under different conditions. 

Data Sources: Visualization

The relatively recent introduction of new technologies has dramatically improved our ability to efficiently image cities digitally in 3d. Advances in aerial photogrammetry and the widespread application of laser scanning are making 3D imagery available for many of the cities of the world.   For example, Vexcel, now part of Microsoft, has developed cameras that enable the efficient creation 3D building models, rectangular solids with textures draped on the exterior walls, with a precision on the order of centimeters.  Other technologies such as LIDAR and mobile terrestrial laser scanning are also being applied to create high resolution 3D cityscapes.  To image the inside of buildings and structures such as electrical sub-stations, terrestrial laser scanning can generate imagery with sub-centimeter precision.  Technology even exists for subterranean imaging of utility and communications networks.

Data Sources: Analysis and Simulation

In addition to being able to visualize cities, it is also important to be able to analyze how cities Traffic_operations behave and to simulate how they might behave under different circumstances.  Analysis and simulation is easier to do when the infrastructure data has intelligence.  For example, capturing connectivity enables tracing an electrical network from a failed transformer to determine the customers affected so they can be contacted.   Similarly, an intelligent transportation network model facilitates determining possible evacuation routes.

Utility, Communications, and Transportation networks

In the 1980's utilities and communications companies, realizing that their paper-based business processes were inefficient and were hindering their ability to provide new services to a growing,  more affluent population and with the example of the successful replacement of paper and ink engineering drafting by CAD technology, began converting their paper engineering drawings into digital form.  The conversion process required an expensive, multi-year effort,  but the result is that for many cities intelligent digital utility and communications network models are available.  Most of these models include not only location and properties, such as rated voltage and installation date, of each item of network infrastructure, but also connectivity, for example, which electrical networks are connected to which transformers.  Similarly, topological network models also exist for rail networks and other transportation networks including roads and highways.

Buildings and Other Urban Structures

In a similar vein, intelligent digital models are required for buildings and other structures.  For example, it may be necessary to model the propagationBuilding_interior_engineering of smoke or a noxious gas through the heating and ventilation system of a building, conduct a finite element analysis to determine the structural stability of an impaired structure, or determine evacuation routes form the upper floors of a high rise.

The data  required to model buildings often already exists because it was created when the building was designed.  It may be in the possession of the owner and designer, an engineer or architect.  But it also may be at city hall or the town council, because most municipalities' permitting process requires the submission of engineering or architectural drawings.  The permitting process usually requires that these drawings be made available for public inspection at city hall or the town council offices. After the public review process is completed and a decision rendered on the permit application, these drawings are archived, either in their paper form, on microfiche, or using a digital document management system.

For older buildings, these drawings are paper.  For buildings designed since the widespread adoption of CAD, they may be available in both paper and digital form, as a DWG or DGN file. For very new structures, it may be possible to find both paper and an electronic building information model (BIM).  Some municipalities, such as the St Johns River Water Management District in Florida, are actively encouraging electronic submissions.

It is interesting to what extent municipal governments make use of these drawings after the permit has been issued and the structure built.  In some municipalities, it appears that they are archived, and no further use is made of them.  But in some municipalities the value of these drawings is recognized, and they are being used for a variety of purposes, among them, emergency planning and first response.  For example, the fire marshal may find that the drawings are invaluable for emergency preplanning or the police may find the drawings reduce risk to personnel responding to an an emergency situation in a bank or at an airport.

Some of the questions that this raises and that I hear people asking are, 

1) How should municipalities be encouraging the submission of intelligent, digital designs, for example BIM models, as part of the permitting process ? At the federal level the GSA in the US requires BIM models for federal projects.  The analogous organization in Singapore recommends BIM models.

2) How do we overcome issues of intellectual property rights and security that hinder reuse of this data ?

3) Can we expect to see the conversion of paper drawings to digital form and the capture of critical infrastructure intelligence for buildings and other urban structures analogously to what happened beginning in the 1980's at utilties and communications firms ?

August 23, 2008

Architectural Design Pattern for Web Mapping with an Open Source Implementation

One of the advantages of travelling as much as I do, is that I have a high probability of meeting interesting people who are doing very innovative things.  I'm currently in Australia to attend next week's GITA conference in Sydney, and on my way here I ran into Sam Majid of Ennoble Consultancy in Melbourne.  Sam, whom I have known for several years, has implemented a classic architectural design pattern for web-based mapping that can provide scalable, high performance mapping on low cost hardware. 

Architectural Design Pattern for Web Mapping

The design pattern is a three tier architecture, comprised of a client, typically desktop, Geospatial_web_architecture_design_ tablet or hendheld running a web browser, a middle tier where pre-rendered map tiles are cached, and a data server, where geospatial and other data is stored.  The reason that this is such a successful architecture for low cost, high performance computing is that navigation operations, panning and zooming, only require loading and unloading cache tiles and do not require accessing the data server. Since a pan or zoom operation can involve typically a thousand features, loading a few tiles is much more efficient from a CPU and I/O perspective and dramatically reduces the load on the data server.  The other key to this architecture is that the user only updates the data store, never the cache, so there is only one point of truth.  The cache is refreshed by a background process running in the middle tier or data tier.

Open Source Implementation

Sam has developed his implementation using open source geospatial components, including Open Layers, FDO, and MapGuide Open Source.  Open Layers provides a Javascript-based client-side application environment that will run without a plug-in in any browser supporting Javascript.  Since he chose to use the FDO API, Sam's application can directly access for both read and update widely used geospatial datastores including shape, Oracle Spatial, ArcSDE (GeoDatabase), MySQL, PostGIS, KML, and SQL Server 2008 Spatial.  Sam showed me an application using this architecture, where the client was in Kuala Lumpur, the cache was in Australia, and the data server was in California.  Performance was impressive, definitely worth taking a look at.

FWTools 2.2.6

Frank has issued an update for FWTools bundle. The latest version of Frank’s binary kit has number 2.2.6 and is dedicated to Windows users only. Available to download from primary and mirror site.

Sol Katz Award - Call for Nominations

The FOSS4G 2008 is only one month away. Traditionally, the Community gathered around Free and Open Source Software for Geospatial will award an individual with prestigious Sol Katz Award:

The Sol Katz Award for Geospatial Free and Open Source Software (GFOSS) will be given to individuals who have demonstrated leadership in the GFOSS community. Recipients of the award will have contributed significantly through their activities to advance open source ideals in the geospatial realm.

Past Awardees:

Yesterday Frank posted official call for nominations:

The Open Source Geospatial Foundation would like to open nominations for the 2008 Sol Katz Award for Geospatial Free and Open Source Software.

The winner will be announced on at the FOSS4G 2008 conference closing plenary in Cape Town, South Africa.

geourl.info is down

Front page of http://geourl.info has been welcoming visitors with Offline message for a few days. Anyone has an idea what’s going on with the geourl.info service?

I hope it won’t be down for 9 months as the previous services was.

Shapely 1.0.7

Version 1.0.7 fixes problems with polygon ring dimensions and reference cycles. Related: I fixed the only known Rtree bug and am lobbying hard to push it ahead to 1.0.

August 22, 2008

More Mapping Insights

From Andrew Turner, the Urban Spoon spatial-temporal map of restaurant seeking. Among the insights you can glean from this data presentation:
  • People look for restaurants in cities full of people, not in the wilderness.
  • People don't look for restaurants when they are asleep.
Perhaps a zoomed in view of San Francisco would be more interesting.

Visualizing Restaurant Searching

24 hours of Urbanspoon on the iPhone One of the simplest, most useful, and well executed applications on the iPhone is UrbanSpoon’s free restaurant finder. Open the application, it geolocates you, give the iPhone and shake and three Slot machine style selectors spin around and randomly choose a restaurant nearby. You can then even lock in specifics such as location, cuisine, or price range and shake to give more suggestions.

However, what’s particularly neat about the application is that UrbanSpoon has been recording these “shakes” by location (inherent in the API call obviously) and created a great visualization showing the locations around the US over a day of “shaking”.

The heatmap essentially shows the evolving enquiry of people looking for a place to eat. There isn’t an actual time display or timeline slider to investigate - but I imagine there are interesting trends during meals, and particularly after normal eating times when people don’t have a plans on where to eat. In addition, a timezone lag that would show shaking progressing east to west.

Context mining of mobile devices, combined with geographic location - and especially via inferred geographic information instead of directly volunteered information can yield interesting trends on ambient behaviors. Imagine if UrbanSpoon could also collect the number of people in the group by detecting other repeatedly seen nearby bluetooth/wifi devices, previous meals of the day, and the ultimate destination and distance to the chosen restaurant.

C++ Concurrency in Action

By the beginning of the year 2009, new must-read book for C++ hackers is rolling around. Anthony Williams is writing book titled: C++ Concurrency in Action (ISBN: 1933988770):

I will be covering all aspects of multithreaded programming with the new C++0x standard, from the details of the new C++0x memory model and atomic operations to managing threads and designing parallel algorithms and thread-safe containers. The book will also feature a complete reference to the C++0x Standard Thread Library.

from Anthony’s blog

Since June, Anthony’s book is available through Manning Early Access Program. The final release is planned on February 2009.

In the meantime, Anthony has published an article Simpler Multithreading in C++0x introducing multithreading support and thread library as a new feature in the C++0x standard.

August 21, 2008

FOSS4G History

Mateusz posted a link to an interesting topic on osgeo-discuss. I think it’s a great idea to document the history of geospatial and open source, and I echo Dave’s comments on how Wikipedia would be an ideal home for documentation and maintenance. Perhaps the best way to go about this would be for the various [...]

The Geography of Manufacturing

It's a shame I'm not a geographer, because there are probably some interesting sociological nuggets hiding in the way manufacturing has dispersed across the USA over the past 40 years. This weakly reasoned article in Salon includes the point that auto manufacturers are locating their US plants in the South. Why so?

Union avoidance probably has something to do with it. But the price efficiency of a dependent labour force has to balanced against the inefficiency of being separated from a concentrated nexus of talent. Jane Jacobs, in the "Economy of Cities", talks about the self-reinforcing nature of the skills networks that develop in cities, and you don't have to look far to see them in action. Silicon Valley, Hollywood, the Research Triangle, etc, etc.

Oddly, the USA has some world class geographic nexuses of intellectual talent, while the manufacturing base has dispersed. Intellectual work is highly portable (I'm writing in a coffee shop, linked into a client's VPN, and compiling a library on their machine) and virtual. Manufacturing work is heavy, with physical objects to move around. Why aren't all the auto parts manufacturers, secondary assembly plants and final auto assembly still located in Michigan?

Clearly the cost of moving things around has fallen so much in recent years that factory sites can be chosen on other bases (prevailing wages, tax holidays) instead. I would also guess that the automation of parts of the assembly line has lowered the required skill specialization of line workers, so that having access to a pool of qualified talent in a factory hub has become less important too.

I wonder if increases in the cost of transport will cause some manufacturing to geographically re-integrate, so Boeing (for example) will stop shipping wings around the world, and their parts suppliers will find it more economical to set up satellite production closer to final assembly in Seattle.

Maybe if I beg, FortiusOne will dig up some cool maps on this topic. Please? Pretty please?

Mapguide FDO, making oracle describe schema perform

(this was posted on fdo-users)

This is the query being used at the moment for the describe schema in King Oracle,
(I did rewrite the sql a bit, I got rid of there where clause)
SELECT   a.owner, a.table_name, a.column_name, a.srid, a.diminfo, b.cs_name,
b.wktext, c.index_name, d.sdo_layer_gtype, s.sequence_name,
d.sdo_root_mbr, NULL o1, NULL o2, NULL o3, NULL o4, NULL o5, NULL o6,
NULL o7, NULL o8, NULL o9, NULL o10, NULL o111, NULL o12
FROM all_tab_columns t
INNER JOIN all_sdo_geom_metadata a
on t.owner = a.owner
AND t.table_name = a.table_name
AND t.column_name = a.column_name
LEFT JOIN MDSYS.cs_srs b
ON a.srid = b.srid
LEFT JOIN all_sdo_index_info c
ON a.owner = c.table_owner
AND a.table_name = c.table_name
LEFT JOIN all_sdo_index_metadata d
ON c.sdo_index_owner = d.sdo_index_owner
AND c.index_name = d.sdo_index_name
LEFT JOIN all_sequences s
ON s.sequence_name = CONCAT (a.table_name, '_FDOSEQ')
--and s.sequence_owner=t.owner criteria
ORDER BY a.owner, a.table_name
it's pretty slow because of the use of the all tables, I think there's
a bug in there as well with the sequence join, it will match on duplicate
table names in other schemas.

but the performance goes to hell if you add the s.sequence_owner=t.owner criteria back in

if we just use the user views, that problem disappears
SELECT a.table_name, a.column_name, a.srid, a.diminfo, b.cs_name,
b.wktext, c.index_name, d.sdo_layer_gtype, s.sequence_name,
d.sdo_root_mbr, NULL o1, NULL o2, NULL o3, NULL o4, NULL o5, NULL o6,
NULL o7, NULL o8, NULL o9, NULL o10, NULL o111, NULL o12
FROM user_tab_columns t
INNER JOIN user_sdo_geom_metadata a
on t.table_name = a.table_name
AND t.column_name = a.column_name
LEFT JOIN MDSYS.cs_srs b
ON a.srid = b.srid
LEFT JOIN user_sdo_index_info c
on a.table_name = c.table_name
LEFT JOIN user_sdo_index_metadata d
on c.index_name = d.sdo_index_name
LEFT JOIN user_sequences s
ON s.sequence_name = CONCAT (a.table_name, '_FDOSEQ')
ORDER BY a.table_name
the performance improvement and load reduction is quite dramatic, the
difference is that user_tab_columns lists the objects owner by the users,
while the all_tab_columns lists everything that the user has access to

when using these tables, a ALTER SESSION SET CURRENT_SCHEMA='%kingoracle.oracleschema%'
would be required at the start of the session if you use a different
username than the specified oracleschema

small schema
q_user_schema (Datasource=gis, Time=16ms, Records=4) that's roughly 100 times faster
q_all_schema (Datasource=gis, Time=1750ms, Records=4)

big schema
q_user_schema (Datasource=gis, Time=234ms, Records=146) that's roughly 6.5 times faster
q_all_schema (Datasource=gis, Time=1531ms, Records=146)

not only is it faster, but it's also a lot less work for the database

Mapping McCain's homes

Speaking of maps in the media -- I like this one of John McCain's homes:

http://www.washingtonmonthly.com/blogphotos/Blog_McCain_Homes.jpg

I know he doesn't personally use the internet tubes, but maybe an aide can print it out and help McCain keep track of these places.

Does this kind of "attack map" contribute to the stupefication of US politics? Yes, perhaps, but I for one am happy to see the other side get the rare pleasure of defending itself from this kind of bullshit. For once.

History of FOSS4G

Today, George Silva asked on the OSGeo Discuss mailing list for some details on history of Free and Open Source Software for GIS. Shortly, the discussion has turned into a very interesting brainstorm session resulting in detailed overview of FOSS4G roots and chronology.

More on Brief history of GIS OSS (bit off topic?)

Update: 22-08-2008:

Based on the discussion about history of FOSS4G, dedicated article on OSGeo Wiki has been started: Open Source GIS History

Easier

Mateusz's post about marshaling geometries from hex-encoded WKB strings in C++ reminds me how easy this is in Python using built-in string methods and Shapely:

>>> from shapely.wkb import loads
>>> g = loads('01010000005839B4C876BEF33F83C0CAA145B61640'.decode('hex'))
>>> g.wkt
'POINT (1.2340000000000000 5.6779999999999999)'

My only regret about switching to dynamic languages for (almost) all my development is that I didn't go straight to Python. Last weekend I ran into a former co-worker at the Fort Collins downtown street festival and was reminded about the enormous Perl legacy I left behind at that shop.

Better

This is better, as I was saying. It's nice to see Python catching on in my home state's GIS department, and also to see ESRI users catching on to the power of more idiomatic Python. It's more than just an open source Avenue, after all.

Speaking of better Python things, yesterday I found out about Tarek Ziade's Atomisator project. It's the kind of framework for feed processing that is entirely lacking in my Mush application. A comment on his entry then led me to TOPP's Melkjug, which has a slick web UI for creating feed filters that is also not to be had from Mush. I think I'll borrow liberally from each, and maybe Mush can provide some geographic processing and filtering inspiration in return.