Sunday, February 27, 2011

Side Projects, Green Projects

I love doing side projects. There are many reasons:

  1. No better way to learn some technology than to put it into practice.
  2. Can actually turn into a real thing, even a day job (a good example is Instapaper, which is the "killer app" for ebook readers like the Kindle as far as I am concerned).
  3. Good for showing off to current and future employers, particularly if it is semi-related to your current domain.

I had read quite a bit of gushing on Ruby on Rails from Dave Bouwman, and I had a stupid idea for a web app that probably already existed, so I thought "why not"? I searched around and couldn't find what I had a picture in my head of.

This is what I wanted:

Simple two/three line webform where a user enters in where they are, what home improvement project they were looking at. They get back a list of what their local utility company would pay for and what contractors were available for it.

The utility information was basically public and there are actually quite a few conservation programs - every kilowatt hour saved is less that needs to be generated by building new, usually dirty power plants.

Contractors could add themselves and maybe pay to show up first. I wired up a prototype last weekend and showed a coworker who deals with conservation credits like these.

Her: "I like it."

Me: "Yeah I was going for something simple and direct like Hipmunk"

Her: *looks at Hipmunk* "Yeah, you just need an adorable mascot like they do"

Me: "Exactly! How about a big cartoony green brontosaurus with a bulbous nose?"

The next day, of course, I see a link via Twitter of a website that not only does more or less exactly what I was planning, but even had the mascot I was thinking of; only orange instead of green. The mascot bit might have been subconcious, because I remember reading a blog post from the same site (via hackernews) without ever looking at their homepage.

I'm not an expert in web design (mostly backend stuff), but I think I would prefer the simple form rather than their current landing page. I think it would be more focused on responding to what a homeowner is looking for. The energy savings calculator though, is probably the best I've seen in terms of visual style.

I might keep going with this project. The fact I couldn't easily find it on my initial search (my conservation coworkers hadn't heard of it either), the landing page, and the low barrier to entry (what do I have to lose, exactly?) means I could build something pretty quick I think.

Maybe not. I have a lot of other ideas for side projects - an open source outage management system has been rattling in my head since I've had to deal with a wonky one at work. That would be a great opportunity to do some high scalability/performance stuff outside of work.

Posted via email from The Pragmatic Geographer

Introducing (belatedly) nx_spatial

It's been more or less done a while, but here is finally a blog post about it.

nx_spatial is a collection of addon functions for the networkx python graph library. What can you do with it?

  1. Load GIS formats into networkx graphs (where you can do all sorts of crazy analytics on them)
  2. Perform upstream and downstream traces with stopping points.
  3. Set sources and find/repair edges that don't have the correct to/from nodes.

Example from the wiki:

>>> import nx_spatial as ns 
>>> net = ns.read_shp('/shapes/lines.shp') 
>>> net.edges() [[(1.0, 1.0), (2.0, 2.0)], [(2.0, 2.0), (3.0, 3.0)], [(0.9, 0.9), (4.0, 2.0)]] 
>>> net.nodes() [(1.0, 1.0), (2.0, 2.0), (3.0, 3.0), (0.9, 0.9), (4.0, 2.0)] 
>>> source = (2.0, 2.0) 
>>> ns.setdirection(net, source) 
>>> net.edges() [[(2.0, 2.0), (1.0, 1.0)], [(2.0, 2.0), (3.0, 3.0)], [(0.9, 0.9), (4.0, 2.0)]]

Available on pypi or bitbucket. Eventually I want to integrate it with networkx trunk (loading shapefiles is already in 1.4).

Posted via email from The Pragmatic Geographer

Tuesday, December 14, 2010

Random Hacks of Kindness

I really didn't know what to expect.

Information on the official site and wiki was limited. The location, percise problem definitions, available resources, what we should bring - all quite hazy.

I don't think I could be much happier with how it turned out.

Random Hacks of Kindness (RHOK) is a weekend-long event in dozens of cities that puts volunteer programmers to problems identified by disaster relief experts. In Seattle, this took the form of around 20 people going after (1) mobile damage assessment and (2) identifying and providing information on populated places during disasters. Splitting off into groups, I joined the group working on the latter problem.

A decent portion of our first day was taken up with research and getting set up. The problem asked to pull information from Wikipedia for the populated regions, but the GeoNames API was vastly more suited for the task. It was decided to create a very simple Rails app that took as its input a know populated place. The user would then be prompted with a disambiguation page that includes a search radius option. The final output drops some very basic data about nearby populated places (at the moment, just the name and population), hopefully later to be expanded (haven't quite gotten around to that).

Lion's share of the credit goes to Kevin Moore and Ezekiel for doing much of the hacking. Being fairly new to Ruby I mostly helped with the spatial stuff - talking up GeoNames, OGC, and database help at the end (and in some controller tests we never really used).

Source code is up on github here.

 

Posted via email from The Pragmatic Geographer

Thursday, September 30, 2010

Location based services are going to compete on trust, except Facebook

Two articles recently came to my attention - one describing how location based services like FourSquare are used by some vanishingly small percentage of young people and basically no one else. This could be rather bad news for such services, as young men are a group that will try anything at least once regardless of its practicality or common sense.

The other article described how some mobile applications are secretly sending GPS coordinates to advertisers. This is both good and terrible news for developers of location based services. To me, it suggests two things:

  1. They'll be competing on trust, which is remarkably difficult to do if you get big. Even if you are internally careful about the sharing of information there are third parties that can make your whole idea look like a bad one.
  2. Quite a lot of money is being invested into location based services - startups like CloudMade and Facebook (Places) for example. Is it potentially because things like sending GPS coordinates and other personal information was what the funders were ultimately expecting in the future?

People will still use Facebook even if they find out it's been sending GPS coordinates and personal information to advertisers because everyone knows what they are getting into (or should). Everyone else has to worry about the incompatibility of competing on trust and potentially being funded on the notion that in the future you will be asked to betray your users.

Posted via email from The Pragmatic Geographer