News
Angel: Review of Angel
The goal of the project is to develop an understanding of what is happening in a community. I am doing this by leveraging Twitter. Twitter is moving in the direction of geo-location . Things like this are emerging all the time - such as Almost.at today but this has to be open source and durable. The project can be broken up into a series of parts:
- Outreach including invitations, a website, blog posts such as this one, statements, source code on github and things of that nature.
- Basic infrastructure issues such as the Ruby on Rails foundation, the data-model, aggregation of content, clustering, full text search, parts of speech tagging, geolocation, semantic analysis.
- A simple user interface including the search display, a map, login, administration and the marking up of interesting messages, match-making.
- Rich visualization using tools such as processing, papervision3d and iphone native applications.
- Metrics to reflect on the projects impact; showing total happiness in a community and the like.
In my research so far I've found some interesting links related to many of these pieces. If you look at This Map of the Twitterverse of related applications or this mind map of twitter you will see that there are literally entire businesses around just solving one fragment of this problem.
One of the core goals is to aggregate from Twitter and Facebook and other sources on the web. Currently for Aggregation I am using John Nunemaker's Twitter Gem. Twitter has serious rate limits so it is only part of the answer. I've just started to try turn to other services such as Yahoo's YQL service and I've been considering also pinging Friend Feed although I think I'll just stick with YQL . I will also have to ask Twitter to whitelist me for more queries soon.
For text analysis I have a few different options. My goal is to tear apart sentences into subject/noun/verb and to pull out hashtags and to pull out URLS and to pull out geo-location information. Basically I am trying to extract as much meaning from the text fragments as possible as a prelude to further analysis. I even want to track if a message is a reply to some other message. For starters I put a traditional full text search engine directly into the application using the Write an Internet Search Engine in 200 lines of Ruby Code blog post. This is the classic high school implementation, stem your terms, score them by the inverse of their frequency and the like and it's a great job. I saw another similar effort entitled Eigenclass as well. Beyond this there are many more industrial solutions here such as Ferret and Sphinx and acts_as_solr and Sunspot . Note that articles on using Solr mostly completely suck - it is SPECTACULAR how bad the documentation is - it makes me want to write a service to rewrite the web. Here is one article on solr that does not totally suck". Also look here for something with more meat: QuarkRuby. For parts of speech tagging I've been looking at the Ruby Linguistics Framework . The shalmaneser engine seemed good as well. However the best one seems to be entagger . For brute force geo-location I am now using the Yahoo PlaceMaker engine, and as well I'm still using the MetaCarta Query Parser API .
Clustering is turning out to be the real hot-spot and I'm relying on it even for deciding what content to aggregate - especially because of the limits on polling Twitter. Andrew Turner pointed out Nexxus for examples of how this is done. As well on Wikipedia you can see a few good articles on clustering techniques such as this clustering overview . Of course my plan is to use Carrot2 since one of my collaborators at Meedan Dawid Weiss is a key contributer to this effort. Here is one of many links to people discussing this topic on the net . This stuff is all a cesspool of half completed works, works that are described but have no implementations, theory and the like. Some of the interesting work such as ProteoLens is not clearly documented down to the source code level so it cannot be candidates for use. As well many things have pretty pictures such as Tools to visualize your FaceBook network but are end user apps - not real tools.
How is all this stuff going to be used? I am not sure what will end up happening. As I have been moving through the work I have found that the way I am phrasing what I want to do keeps changing. But I do have a current plan. My current big picture strategy is this:
- A participant will arrive at the website and will see a search box and a map. They can 1) move the map around to set a focus 2) enter search terms 3) enter a list of participants into the search term box 4) enter an url into the search term box 5) enter hash tags into the search term box 6) enter a location into the search term box.
- A query to my site may result in queries to twitter. I don't have a lot of caching - I will try cache but I think that I can't anticipate the range of data that users are going to want and anyway the twitter firehose is too big to hold.
- A query will have a geography and "a social network filter". I will filter the query on a set of users so that I only accept results from that given social network. Ideally these are users that you have specified, or are users who are friends of yours, or failing that, are users that are known to be "good people" in that geography. I want to have all queries be based on a ground truth understanding of a neighborhood - so being able to specify users is key - and if you do not specify them then I will have to use a variety of other approaches to try get some initial users. For example if you are really interested in activity in Iran, then your query would probably be anchored on one or two users who are in Iran. I will spread the query out so that friends and friends of friends are included in the query results, but ultimately it is filtered by that anchor - it is not a free for all because there is too much spam. Here is one project that shows how to follow local twitter users . Tweepz also lets you find by geography. I will copy similar functionality to help seed my geolocal queries if required.
- A query can also have ordinary search terms and the like. I am not sure what to do if I filter by some users and get no results. I guess I will have to do a naked search query and allow any results through. Another option is to use users that I know are good users in the region if any.
- If you don't put in a search term, then what you are going to get back is a series of posts scored by importance in that network. I score by two factors. First is velocity - if there is a fast trending URL or if there is a fast trending hashtag then it will be scored up and more visible. Second is magic phrases. If I see phrases like "I need" or "I want" or "I have" then I score those up as well.
- As a user you have some interaction possibilities. If you click on a post then that post can become the anchor for further queries. If you drag a post into your "save me" bucket then the post is scored up and will show up in further queries. I think scores are subjective to you and your social network.
- Finally you will be able to connect two people together, so you can bookmark people and then connect them to other people that you find.
End goal applications of all this are to find what is going viral - for example see Visualizing retweets by Dan Zarrella and separating real issues in a neighborhood from spam. The participation will be circular - people can score up issues to make them more visible.
For rich visualization I am looking at either Processing or Papervision 3D . However I am still stuck on the earlier stages so I have to try close out there before focusing here.
Everyone Needs Memory Palaces: A lifetime of objects
We live in a world of digital objects that exist over time. But these objects exist in disjoint data repositories and the manual labor required to manage them is unduly high. As well in general, the dimension of time is somewhat ignored by most applications. Emails sent out are not clearly visible as waiting for responses. Things have no beginning nor end, dependencies are not clearly shown. The implications of something such as a recurring bill do not affect a bottom line in a clear way. It is non trivial to report small transactions such as filling up the car with gas, or meeting a new client, or thinking of a new idea, to a centralized knowledge management store.
How can these objects begin to have a life of their own? To move around more easily? To be orderable and directable? To be manipulable by a variety of tools? To embody their own permissions and rights?
Angel: Project submission for Open Source Bridge
Here's the submission link:
http://opensourcebridge.org/proposals/246
Excerpt
We're using a variety of gems to build an ambient sensing tool to watch user activity over urban environments. The acts_as_solr gem to help provide faceted search, carrot2 to perform clustering and topic analysis, the twitter gem to fetch user activity in the first place.
Description
We live in dense urban landscapes that have crisis at many different scales. A crisis may be a large event such as a tsunami, an earthquake, a terrorist attack or other large scale disaster. A crisis may be something smaller such as a house fire, or a pileup on the freeway, a gas leak or a road out. A crisis may be something relatively minor, a crisis only to one person, such as being locked out of ones car, or trying to find a lost pet, or needing help sharing babysitting duties.
For the purpose of this talk I am interested in the far end of the long tail of crisis response – and what open source technology we can strap together to build tactical systems for helping tackle such crisis. I have been developing an approach using off the shelf tools that can help resolve local crisis – the smaller more personal crisis that interrupts peoples lives.
If we watch messages over a city, and provide analytic views for interested parties, then a role for “angels” to participate emerges. Interested individuals can act in a matchmaking capacity to connect complementary interests together. We can collaboratively up-score or down-score public comments aggregated from a variety of geo local sources. We can filter away noise so that responders can more easily decide what to respond to. In sum we can make it possible for people on the ground, in the area, to volunteer to help out by providing clarity.
I consider these class of services to be a kind of ubiquitous angel. They are not something that you have to even know exist until they help you.
The tools that we can leverage today to build such services are worth knowing – having many applications. In particular solr ( an enterprise search engine ) and carrot2 ( a topic clustering engine ) can play a powerful role in helping filter noise. Other related projects in particular Ushahidi and Swift have a high degree of overlap and those technologies will be discussed as well.
Beyond today there’s a role for such technology to help us deal with new kinds of crisis in the future. Over the next decades we may be facing economic and environmental concerns that are granular, evenly distributed and problematic in resolution. These kinds of tools and approaches may be useful there as well.
Angel: Understanding and Visualizing Social Needs
To help keep the project focused I'm going to try to visualize the signaling space over Portland. The hope is to aggregate data from twitter, to cluster related articles, and to visualize the the active connections or potential connections as they happen in real time.
Producing a visualization is a three step process:
1) Aggregation. For test data I am now aggregating all twitter traffic over Portland Oregon. This is just using a cron job with the ruby twitter gem - and it was a piece of cake.
2) Clustering. To cluster related posts I first tried writing my own traditional search engine - this works well and is currently mounted at http://citybot.org/search . But this doesn't really address the issue of clustering related posts. So instead now I am trying out the carrot2 search engine. As well I am considering throwing out my aggregation engine and replacing it with nutch - which would scale better.
3) Visualization. As far as visualization itself I am trying processing - where I've written a small engine that can visualize tweets with some special effects over time - onto a map. This wasn't terribly hard; the real challenge it turns out is the middle phase - of clustering related posts. As soon as I have some good data to render I should be able to do so. There is some small argument of switching away from processing over to papervision3d - but it is a hassle to build a compiling environment for flex and that still requires research so I am sticking with processing for now.
This new work and time I've put in overall has given me some new perspective lately. As well changes in the market are also changing my perspective. Several twitter based market place applications have emerged - and we do see the rise of twitter agents in a way similar to IRC. On the web two new services have emerged: http://hutch.com and http://vark.com - both of which are effectively a kind of social search. I very much want a "real time" sense to citybot. I'd like to let you ask a question of your geography essentially. The reality of social engagement is not one of matching complementary needs against each other but rather matching needs against people in your community. My overall feelings now are that:
1) The real value of a social search service is to help you find the person who can help you - not just find the data but find a person - find a party to have a dialogue with. Perhaps this is obvious but it bears keeping in mind.
2) I still feel that surfacing and sharing those implicit publishing moments ; the kinds of moments that google collects whenever you do a search - is vital. This is something I really learned from Meedan.
3) It's ok to connect communities of people who are all seeking the same answer - because it helps to crowd-source the problem of finding those answers. I had previously been thinking that one wanted to only connect complementary interests.
4) Do you have to message some agent when you have a need? This is an ongoing but evolving question. Perhaps the biggest shift in my thinking has been that one should not bother requiring an agent that you talk to by messaging it directly. Rather I think I should just measure the happiness or satisfaction over Portland ( by looking for satisfaction terms in twitter such as 'thanks!' ) and then apply my agent to that traffic, to help create satisfaction moments, and then to measure again to see if I've improved the number of satisfaction events. In this way I'm tackling empirically measurable issues ( quality of life ) and testing for real results. I'm looking to have a quiet quality of life improvement; one that doesn't necessarily translate to increased GDP or Standard Of Living or other such economic measurables - and in fact probably works against them.
5) In all this work my emphasis lately is to try and facilitate human brokers. The hope on the website is to let people match-make other people and to get credit for that. This means that the clustering tools and the like have to appear in a place where an expert can use them to browse the posts that people are making and find likely matches.
Angel: Angel discussion - on the 'citybot' branch of ideas
Briefly I see 3 goals,
1) One shift that I'm going to try now is to not require users to actually message citybot - but rather to have citybot just look for specific keywords. This shifts the engine from you needing to type in "@citybot blah blah blah" to it having to use the twitter search API to say search for pizza for example.
2) I'd also very much like to think about how to let other people easily create their own groups rather than having to use the citybot room specifically. 3) And I'd like to look at automated match-making, although first I think I want to let ordinary users filter and search and do human match making.
This all comes out of a series of discussions. At one of our MakerLab hack sessions we met with Katherine Ball from Springboard Innovation who is putting together a forum on hunger and how to solve it. See Springboard Forum .
This was a good example of where MakerLab can have real value, and help solve real problems so I see this as a good synergy for many reasons. In this case Katherine points out that there are a lot of restaurants that dump food and as well a lot of gleaners that are happy to pick up food. In a perfect world the dumpers could message or signal the gleaners in some easy way and the gleaners could come fetch the food before it is thrown away.
This does happen with projects like foodnotbombs but I want to do better. I want to connect together more people more of the time in a more energetic and 'loud' way. People should be able to just broadly indicate to their geography about needs or opportunities - rather than always requiring people to have specific end to end connections with other people. Of course I ignore the traditional routes such as advertising, television and radio because they are too slow and they are not 'proactive' - they don't actively go out of their way to message the people who can come pick up the food or whatnot as the case may be.
The challenge of "connecting dumpers with gleaners" could be done with a citybot like approach. The dumpers could sms a message to a phone number and this effectively would be a twitter. Alternatively they could call a hot-line too. Their burden would be very very low, simply to send one message or make one call. The next step is to try to surface this in a visible way, so that gleaners who are nearby can respond - and in my mind twitter is a good way to do this. The location of the need can be twittered geographically ( such as citybot demonstrates already ) and gleaners can listen in and respond, or citybot itself could proactively sms the listeners.
Finally - one question that keeps being raised is one of privacy. There may be cases where restarants do not want to broadly advertise that they have food to throw away. How can this be solved? I'll leave this open for thought although some ideas present themselves - I'd prefer to give the issue and any solutions some time to grow.
Angel: Angel release - code named 'citybot'
The goal of Angel is an ambient sensor over a city.
Citybot is more modest - it is a pared down subset of the bigger vision.
This is the first pass at what I hope will become a real time trading service - it matches buyers with sellers using twitter.
The history of this is that I've wanted to build a lightweight social bartering service for quite a few years now, in fact my older project thingster was intended to be this - but it predated google maps and I got bogged down in trying to render maps. Platial also I hoped would provide some kind of brokerage service also - but even just collecting and showing users favorite places took all of our time and energy. Part of the problem I think with many of the social place sharing sites was their silo nature. I tried to start an aggregator entitled placedb in my waning days at Platial but I just couldn't quite articulate that vision - and fireeagle does it now anyway.
With Citybot I'm able to get further because I have to do a lot less - and the coverage of twitter is so large that I don't have to deal with aggregation. I can see that by building on twitter I should be able to get closer to the idea of a real time service for signalling about wants or haves. The risk of course is that the folks at Twitter will just do it themselves and kill the ecosystem.
The kinds of things I hope to see people use the service for includes things like donating free time, or telling people that you have extra apples in your garden, or that you're happy to help volunteer some time for something, or that you're bored and want friends to hang out with right now - that kind of stuff. It's all the kind of stuff that we normally think about every day but that isn't very easy to tell other folks.
To be more specific I see people using hashtags like so:
- @locative the name of the agent itself for now
- #all subscribe to all requests
- #have you have something
- #want you want something
- #nearby it should be nearby
- #bike a thing that you want or have
- L:pdx where you are if not your default location on twitter
- #private privately message me back please only
- #public publically message me please
- #free the thing is free
- #money it costs money
- #trade it is a trade in services
- #silent do not send tweets to me
- #digest only sent me tweets once a day
- #realtime send me responses as soon as possible
- #now time sensitive
- #later not time sensitive
- #anytime etcetera
Why not just use Craigslist? I am very impressed with Craigslist - in fact it helped me find my dog only last week - but I still feel a need for something a little bit more precise and a bit more "in your face" than craigslist. Craigslist doesn't collect location data very well - I've talked to the founder about this but it just isn't a very high priority. And it doesn't really have a model of its user base - it can't signal to the people who express a specific interest... you have to search it - and the burden is placed on you - which seems a bit heavy.
The funny thing is that the service is a way of adding "groups" to twitter... Effectively citybot is one group. I may go the route of letting people make their own channels; or groups; by spawning clones of the service or maybe just letting them create groups on twitter through citybot.
Also, another funny thing is that it creates a social network not of explicit first order connections but one of geography and shared interest. Twitter really fails at surfacing second order networks - friends of friends.
Anyway this is all the vision. Currently the system is very simple and very early. The first pass is just to surface the conversation - to show as much data as possible. To see if the idea is sound. The next pass will be to try to do some real analytics.
ArtMeetGeek: Digital Gender
There is gender and there are gender roles.
Like all things it is a continuum and has no absolutes; but like all things it is a landscape with peaks associated with concepts here in the west like 'masculine' and 'feminine'. In India it even includes concepts that we can only perceive of as a third sex. What we attach to those peaks is culturally subjective; be it dresses, kilts, piercings, gesture, promiscuity, aggression or the like.
Gender is also entangled with so many other aspects of what it means to be human; age and ageism, maturity, power, need. But those things aside - gender by itself is a trait - and it is a trait that may be undergoing a cultural rewriting.
We've all been playing with gender roles; fags, dykes, hets, trangendered and the like have all been examining ourselves through the lens of gender for millenia.
At social gatherings, parties and even in day to day activity there have been members of these communities that either consciously or helplessly fragment and recompose features associated with traditional roles. There's a Shakespearean quality of playfulness in juxtaposing one trait against another - from the full fledged switching of gender roles - to just tweaking one historical gender trait.
But online this goes a step further. Gender roles online can be deep in the sense of indistinguishable - reaching a Ru Paul pitch of perfection. People can become deeply associated with these online genders - having sex in them - thinking of themselves as them. Online this kind of exploration may be more than just donning a mantle of a gender role but something that changes oneself.
The same can be argued for non digital spaces; but the verisimilitude is more accessible digitally; on the net nobody can tell if you're a _.
Paige asks if this deep gender play changes what we think of as gender in the real world? How pervasive real world are the effects of digital gender roles?
ArtMeetGeek: Ideas for Art Meet Geek
ArtMeetGeek is a recognition that geek boys should date art girls and visa versa. That each has a lot to contribute to the other. This is Paige's fundamental premise.
What I think when I hear this is the idea of a place where you don't just look for a hook-up - like say OkCupid or other sites - but rather where you can project any number of digital identities into a forum and see how they match up. You can take your eccentric traits and make small persona for them and watch and see how then mix.
Also there's the thought that people can be cupid. That you can shoot an arrow through two (or more!) hearts and see if things work out. Perhaps you could even get little prizes for being a good match maker.
Another strand of thought is that it should be a maker place; where you create and share your creations; where you show off. This is a key idea. Make people make pictures to communicate, write dirty stories, make chocolate cupcakes, dress up as samurai or pirates and take pictures of themselves, challenge people to get a picture of themselves behind a bar or being a barista or to get a tattoo or a new black dress shirt or to write an essay about something they know a lot about.
Of course the secret is that this is the net as a whole. And like Facebook; the continual fountain of energy that replenishes these forums is the fresh blood of new participants.
If the site itself is authored, edited and maintained by its membership then it becomes a reflection of itself - it becomes like Urban Honking or other sites - something that dives through itself and is more a pattern than a thing - like the images we see on television about schools of fish balling up when being pursued by whale sharks.
The point is to avoid being yet another dating site. To be not a site where you try to fit yourself into procrustean multiple choice quizzes that often completely fail to hit the true distillation of oneself. We are wheels within wheels and the true heart and true motivator of the answers that end up arriving at our lips are not so easily read by other than what we make.
OpenSim: More pragmatic technical thoughts about modeling watersheds
Data Model Requirements¶
1. a data model that allows for the transport of schemas as well as data
2. support for geometry and geometric representation of objects and space
3. support for describing the relationships between things
4. support for arbitrary metadata
5. support for provenance; so that authors of content can be used to filter spam
6. support for filtering content by an extended trust network
Objects¶
1. prototypes
2. uid
3. permissions
4. schemas
1. agents
2. agent api to query, split join?
1. geometry
2. points in 3 space
3. lines
4. polygons
5. boxes
6. circles
7. polyhedra
8. spheres
9. potentially visible sets? { may be helpful as an optimization }
1. appearance
2. color
3. texture
4. illumination
1. constraints
2. groupings
3. collision hulls and planes
4. friction
5. static computed voxel volumes with extended metadata { pollution, light... }
6. classic rigid body constraints; joint limits and the like
7. parametric relationships { a tree of height x shall have branches all over }
8. rule based scoring constraints { trees fail to grow under water }
9. algorithmic linear constraints { certain pollution levels affect salmon }
Primitive Types¶
class Vec3 {
float x,y,z;
}
class Geometry {
private Array vertices;
private Array polyhedra;
}
class Volume {
public Vec3 position;
public Vec3 size;
public Vec3 min;
public Vec3 max;
double radius;
}
interface Agent {
public void update();
public void version();
}
class Physical {
public Geometry geometry;
public Volume volume;
public Agent agent;
}
Prototypes¶
class Environment extends Physical {
public void update() {
// defining things like sunlight, evaporation, rain,
// diurnal cycle, tide cycle, seasonal cycles, interglacial cycles
// the burden of evalution should probably be on the agents rather than this.
// defines time; iterating forward by desired time
// defines diurnal cycle
// defines solar radiation
// defines seasonal cycles
// defines tide cycles
// defines interglacial cycles
// probably has public accessor methods
}
public float solar_radiation { }
public float
}
class Ground extends Physical {
public void update() {
// probably defined as a digital elevation model
// this would have to be a simplified model; perhaps not doing erosion?
}
}
class River extends Physical {
public void update_environment() {
// a discovery tool handles this...
// Checks it for solar information to do evaporation, rainfall, freezing
// Binds to all ground objects; uses slope and the the like
// sets a pile of its own state variables
// this would have to query the local environment for factors such as
// wind velocity, sunlight and sunlight direction, rain, slope, rockyness
// and the like in order to compute changes to its temperature and
// oxygenation levels and the like.
//
// one challenge with a river is that it may need to be simulated as a
// cellular automata in order to do stream flow and the like in detail.
// a coarse model may do for now.
//
// ultimately it has to interact with the ground to do volumetric erosion.
}
}
class river_soil_handler {
// i could have handlers that handle the interaction between kinds of things
// in this way a river could be a fairly simple thing
// however are there ways that things intersect that is not just pairwise?
// a river interacts with solar influences that also depend on wind...
// if i made the solar module sensitive to weather then evaporation off the river might 'just work'?
}
class water_solar {
// visit all points on surface of water <- this can be optimized away; so that the pure mathematical relation below remains
// get mean solar at this point
// evaporation at this point is a function of solar at this point
// surface_temperature at this point is a function of solar at this point
//
}
class water {
// issues
// water could fully evaporate... and new bodies of water can form...
// also geography could change leading to new water pools...
// so... a cellular model could add up water over it and try dissipate it; or fail to and thus allow build up.
// same is true for tree cover; it can expand or contract or the like; or be holed...
// so ...
// are polyhedra just a form of cellular automata?
// i want some way to coarsely aggregate and consolidate and define phenomena...
// how can i say that something basically covers a swatch? can i indicate its granular composition over that swatch?
// should i have polyhedra that also have a bitmap coverage or some kind of density gradient?
// in which case water or plantcover etc is global?
// and solar impact computes angle of sun at a given angle? modulated by cover at an angle?
// would solar have a bitmap too? for its interaction at that point?
// and if so are we dealing with a large number of overlapping bitmaps?
}
collection water_group {
// grouping would be very convenient
water_solar {
evaporation { reduce water as a function of temperature }
condensation { add water as a function of temperature }
}
water_soil {
erosion { erode soil as a function of water volume and velocity at this point creating soil suspensions }
deposition { deposit soil as a function of suspension }
}
water_movement {
carry water and soil suspensions forward at volume and velocity
note that we may have to evaluate the entire system from top left to bottom right
otherwise we may not be effectively computing overlapping water volumes etc
maybe we need a sparse matrix approach too
and maybe the polyhedral model is only good to setup initial conditions
so i guess we print into a cellular automata
but there is a question of scoring these things; how can we report a river has dried; not moved?
and as well, how about simulation of complex oil systems; like extraction, refining, usage and impacts?
do we also have some point objects or polyhedral objects co-existing in this landscape?
}
}
An example Scene¶
Geometry environment_geometry {
name { environment_geometry }
vertices { 0,0,0, 100,0,0, 100,100,0, 0,100,0 }
polyhedra { 0,1,2, 2,3,0 }
}
Environment {
Geometry { environment_geometry }
}
Geometry ground_geometry {
vertices { 0,0,0, 100,0,0, 100,100,0, 0,100,0 }
polyhedra { 0,1,2, 2,3,0 }
}
Ground {
Geometry { ground_geometry }
}
Geometry river_geometry {
vertices { 0,0,0, 100,0,0, 100,100,0, 0,100,0 }
polyhedra { 0,1,2, 2,3,0 }
}
River {
Geometry { river_geometry }
}
The Simulator Engine¶
Note it may be possible to avoid using a cellular automata in favor of objects. All intersecting volumes are defined by relationships and we can visit each relationship once per time slice. The relationships can apply wind as a whole to say river parts or the like. On the other hand it may be harder to grow volumes past their initial bounds and some kind of cellular automata model may be easier.
One can imagine a simulation core like so:
interface solar {
getset_temperature(point)
getset_wind(point)
getset_humidity(point)
}
class water {
getset_behavior_at_point()
}
class relation_water_solar {
evaluate(x,y,time) {
cell = cells[x][y]
cell.evaporation = cell.temperature * cell.wind * time;
cell.water = cell.water - cell.evaporation;
cell.water = some function of cell.slope;
cell.aquifer = some function of water;
cell.erosion ...
cell.temperature = ...
cell.wind =
can affect nearby cells too...
}
}
main() {
for all points {
for all relationships {
we arrange all of the cells by type in an n-deep array
and then all the algorithms visit all the cells
}
}
}
OpenSim: Approaches for modeling communities
Overview¶
What are some of the goals in building a simulations based foundation for discussion of issues affecting watersheds, communities and planetary populations?
Goals¶
An educational tool¶
As a starting point it is important for people to even see that there are local systems! To see:
1. natural geographic features; canyons, mountains, beaches.
2. the watersheds and how they course through those features.
3. impacts of climate and weather.
4. impacts of land use zoning laws and regulation.
5. wildlife areas, forest, natural spaces.
6. road and transport networks.
7. farms and agricultural systems.
8. presence of churches and other social agencies.
9. areas of manufacturing and industry.
10. urban development.
11. garbage dumps and recycling.
12. pollution emitters including industry and superfund sites.
And to have a way to see how these systems interact,
1. see how individuals are impacting these systems
2. see how groups can change how they interact with these systems
3. try out actions and speculatively predict what might happen
A 'third participant'.¶
In the conflict between opposing vested interests it helps when the debate is over a "chess board" rather than head to head.
The goals are to:
1. build consensus; not just vote.
2. frame the debate with rigor
3. forcing arguments to be internally consistent; independent of opponents
4. to actually test arguments by simulating them forward in time
5. a way of raising the quality of the rhetoric; making all participants smarter
To re-assume responsibility.¶
We all need to start shifting responsibility back to us instead of trying to blame other parties such as Big Oil or Big Business. If we were a 'simulnation' instead of a 'voter nation' or a 'consumer nation' we'd at least stop trying to pass the blame while contributing most of the damage.
1. playing on the hawken's idea of a 'million small organizations'
2. give us a sense of investment and involvement in solutions
3. help supercede media and political propaganda that would have us blame others
4. help us act in concert
5. help us avoid misguided efforts that cause more harm than good
6. stop us from being so passive
Examples and Use Cases¶
To simulate the Watershed of the Pacific North West.¶
1. let you look at the pacific northwest
2. see the watershed run-off from the columbia cascades to the ocean
3. see all live current data on health of key indicator species such as salmon
4. see all live current data on pollution, plastic and other wastes flowing to ocean
5. see the electricity yield from dams and other energy sources in the pacific nw
6. see the electricity needs of local populations
7. see the food production of farms in the watershed
8. see the food consumption requirements
9. see the natural spaces, animal habitat and continuity thereof
10. see natural space requirements and health, mental stability and crime relationships
11. try explore variations of energy sources; solar, wind and cost/benefits
12. try explore variations of reward systems to encourage people to shift behavior
13. speculate forward computationally up to 10 years into the future based on models
14. get triple bottom line scores on overall health and resilience of economy,environment,growth
To model Big Oil¶
Modelling the oil system in all its parts from
1. vehicles to gas stations
2. to suppliers
3. to refineries
4. to ocean going shipping
5. to reservoirs
6. wildcatting
7. market speculators
8. environmental impacts
9. carbon pollution
10. social
11. environmental and political effects
And as well to let participants play with parameters ranging from:
1. oil supply chains
2. effects of disruption
3. pricing
4. volatility
5. and doing long term speculation about oil reserves and the like
Modelling a single houses total impact on the environment, mitigation and the like.¶
Visualize Watersheds¶
Let ordinary folks in small communities easily fly over and examine local watersheds to simply visualize:
1. water flow
2. food networks
3. social, political and legal networks
4. to see superfund sites
5. pollution
6. current costs of maintaining the status quo
7. as well as get quick estimations of longer term costs
To let the more ambitious segue into changing parameters of the predictive model:
1. try out alternative energy sources (and see possibly unexpected repercussions)
2. allow people with domain specific expertise to submit new relationships between things
3. where they can express that say a wind-farm has a specific unexpected side-effect
4. that say for example noise levels affect bird populations in unexpected ways
5. to express side-effects coarsely as some kind of algorithm
To let people slice and dice the model to get different vantage points; to understand the view of the world through the lens of another persons point of view:
1. allow people to cherry pick what expertise they trust by using an extended peer network as a filter
2. and to then run simulations forward on that data only
3. perform very coarse grained planetary level simulations of long term outcomes
User Interface¶
A key goal is a many participant space. Some of the key aspects are:
1. a many participant shared online digital space
2. accessible over the web
3. allows you to describe individual phenomena and the relationships between them
4. allows you to share your facts with other persons in a wikipedia like manner
5. has geographical and watershed data
6. lets you play out game scenarios with available data
Engineering goals¶
Implementation has a number of key goals as well,
1. open source
2. distributed computation using a framework like 'folding at home'
3. open participant submission of models and relationships
4. simulates behavior of a series of objects forwards in time
5. may use a cellular automata
6. may use linear equations for a more formal constraint based solver
7. at the user level is based on describing individual 'objects' like wikipedia
8. facts are represented each as a 'data sheet' each with a unique URL
9. online and offline operation
Also available in: Atom
