I put together a locative framework for basic geoblogging at

  http://github.com/anselm/locative

It needs love but it does the basics - I'm hoping to improve it but
it's a low priority at this point. It is a generic extract that I
pulled out of another project when I realized I was building yet again
another locative media framework. I looked around earlier this year
and did not see one off the shelf that I could use - which I would
have figured would be a totally killed problem today.

My feeling about how this kind of stuff should be done :

1) These days it's not a big deal. In fact your biking site looks
pretty good as is.

2) Database schema and the like isn't that nettlesome either. Most of
the time most of the subjects that you're dealing with - in most web
applications - are :

              title -> a string
              link -> a string
              description  -> a string
              tags -> an external table
              location -> a long lat pair
              depiction -> a separate table of images
              sponsor -> the owner or creator human
              permissions -> public, protected, private? etc.
              parent -> see comment below ( # 3 )
              kind -> see below

You might also want to capture cycle paths and stuff like that - but I
won't bother going into that here since you didn't mention it as a
need. Nevertheless it can be done without too much more work either.

3) I like the idea of being able to make a "map" or a "group" that
collects a series of related points. So in each object I have a parent
field which indicates a parent object. Since I like to also build game
like directed acyclic graphs I keep key concepts in a single database
schema. For me a "collection" and a "point" are the same kind of
object except with a "kind"

4) I use google maps - yes lazy I know... There are lots of choices here.

5) I would expose a json or xml api of course as mentioned earlier.

6) I'd do it in Ruby on Rails ...  I like the grammar.

7) I'd make it as open source as possible including the data.
Ownership is a liability not an asset.

8) I *MIGHT* look at replicating my data store into something durable
like google mapmaker or the like if you are really concerned about the
system falling over and data being lost. What would be *really* cool
is doing the entire thing in one of the new free hosted environments
like freebase or the like - it's a huge risk that you'll lose your
data - basically that's the most likely thing... and it's annoying to
have to host, babysit and maintain a site over time - especially if
you have dozens of projects up and running over the years.  No real
answers here however.

9) The best way to protect a project is to have a community of other
developers around it. Solitary projects disappear into the dustbin of
history pretty quickly.

10) I like postgresql because there's always that possibility of using
its spatial support ( although I rarely use that as it turns out ).
Also I really like the tsearch2 engine which lets me do full text
search AND ordinary queries ( unlike say bolting SOLR or other engines
onto the side ). Also it scales well, you can partition and replicate
your data over many servers.

11) I like to have a direct view on my database schemas and tables - I
use a tool called "Active Scaffold" to do this - it is a bolt on to
Ruby on Rails. The code above implements it.

12) I try to decimate my projects into pieces; using worker agent
threads rather than doing a lot of work in the web or user facing
side. So if there are grooming operations that are compute intensive
it helps to get them out of the way and design the UI experience
around the fact that results may be deferred.

My biases are pretty much clear; I guess if you're into other
languages and tools it's worth digging around - I'm sure the
equivalent exists for php, python, c#, java etcetera. Generalizations
of the above pattern however might do the trick for you.

me

_______________________________________________
Geowanking mailing list
[email protected]
http://geowanking.org/mailman/listinfo/geowanking_geowanking.org

Reply via email to