27 October 2014

Thinking like a fish

Lots of people have been asking what I do now. This has lead me to ask myself the same thing. After careful consideration this is what I've come up with. Think of it like an FAQ.

What am I doing:

I'm writing tools to help smart people find fishes.

So now let's let Monty Python frame the problem succinctly.


I won't get into the politics since that's not really what we're about. We're about provide the facts for people who want to know. Actually scratch that. We provide the tools for people to provide the facts.

Why does this matter?

Believe it or not humans are changing the planet. Worse than that, we're changing it fast in bad ways. Worse than that, we kind of need to for a lot of what we do.

If we're going to protect our environment we need to understand it. We need to know that wiping out a certain segment of river will wipe out the breeding grounds of certain species and therefore compound a pile of suck into a mountain of awful.

If I was the king of the world I'd declare the whole thing a nature reserve and relocate all the people to mars or something but until that day comes we need to figure out how and, more importantly where to either temper or restrain our insatiable need for industrial expansion, at least until the singularity.

One of the good ways to do this is to make impassioned cases for why certain areas are important and should not be destroyed or polluted. It's not enough to gnash your teeth and decry the bespoiling of our environment (not that I don't engage in that sort of thing). We need to be able to say "this river should not be touched and HERE's why". Then drop the microphone and walk out.

Why is this hard?

To say there's more than enough technical challenge to keep us busy is a colossal understatement.

Nature is a lot like truth in resisting narrative simplicity. There is no one "cause" for a lot of these things. They must be treated as whole systems. Computation gets more expensive the more variables you throw at it, and there are a LOT of variables.

Also, let's not forget that these systems are not static. They flood and erode and get blocked up (Dam you beavers!).

There's also the problem of not being able to measure something without changing it.

Luckily we can write models to help us abstract the infinite complexity of nature to something manageable by non-infinite 21st century computers.

So what can we do with some smart software, a few drones and a few dozen hungry grad students with measuring sticks? Quite a lot actually.

What do we know about rivers?

  • Depth at lots of points (measured with a stick)
  • Water speed and temperature at lots of points.
  • Pebble size
  • Where the trees and overhanging foliage is.

Using this information we can generate heat maps that show things like water temperature and depth all along the river.

So now we need to ask:

What do we know about fish?

  • Fish like to congregate where they have to do the least swimming to stay in one place.
  • They like shady, protected places
  • They lay their eggs only in certain places which can involve the size of pebbles.
  • They like it when edible things float by and they can dart out, gobble them up and return to safety.

Actually I'm already feeling a lot of empathy for these creatures who like to laze around their shelters and eat things that drift within mouth's reach, only moving when they actually have to. Sounds a little too much like a typical Saturday at my place.

Using what we know we can layer the maps of everything we know about rivers on top of each other and find the place where all the conditions are just right for the fish. Mark an X on the map and go take a look. Odds are pretty good you'll find fish there.

What's my piece in all this?

I'm not a geographer or a river.....ologist (gotta learn the names of these things) but I do have a physics degree and I bring a certain osmotically high concentration of knowledge about things like version control (git is king), the maker movement and minus a bunch of the assumptions academics in the field have been burdened with.

How does this software work?

Like this:


Sorry, couldn't resist.

So how's it going?

It's been two weeks now and things are really good. C++ is a long way from the Javasript, PHP and Ruby I've been writing for the past 3 years but it's been really nice to dig out my old comp-sci books and actually do some proper coding.

Windows is a bit of a sticky point too since I'm an OSX person (especially since Yosemite) but I'm running it inside a VM on my MacBook Pro without any problems.

Comments: This is a tiny site and comment moderation is a pain. Let's use social links to have a conversation on a bigger platform: