RSS
 

Archive for the ‘Reputation’ Category

Opening Up Galapag.us for Alpha

30 Apr

My thesis project for NYU-ITP has been Galapag.us, a tribe and ecosystem for promoting the idea that we should be radically open and transparent with our data so that we can form and share metrics to measure our progress and success in different areas of our lives.  More info at the front page of Galapag.us.

User Zero

I came up with the idea in 2006.  An email I sent to my Army buddy in April, 2006:

I sort of had an idea but it seems like it’ll be difficult to build out.  My idea would be for something similar to Xbox Live’s ranking system.  Except it’s for your life.  Privacy issues aside, people would volunteer to put in as much personal info as they want.  At first it might seem cumbersome putting in so much info but I think as myspace and other services have shown, people are willing to do it if it means it cultivates their identity.

So for instance you put in your income and number of kids and connect your accounts for online game rankings (like in Halo or Battlefield 2) and your exercise plan and your birthdate and your finances and investments and how many web sites you’re on (like myspace, digg, yahoo, etc.) and from all that data, the company would generate statistics that break down your life and give you info about how much time you spend on certain tasks, how efficient you are with your money, what your online reputation is.  Stuff like that.  The core would be statistics…anonymous statistics I think so people won’t have any incentive to forge their results.  The point would be to turn peoples’ lives into a numeric game where they can see how they rate in certain aspects of their lives.  Think of all those online quizzes people take about what kind of lover they are or what their personality is.  That could be tabulated into the statistics, which could be searchable or broke down any way the person wanted.

At the end of a year, we could look internally at our statistics and go visit the top overall people in person to go verify their data and videotape their lives, interview them.  Then a winner would be announced…like the best person award.  Heh…there’d be so much controversy and whining and competition if it caught on.  Then we could write a book about our experiences going out and discovering what makes someone “the best” compared to everyone else.

So…that’s my idea so far.  Sort of like a real-life RPG.  Perhaps we could offer points for real-world scavenger hunts or traveling to different countries around the globe.  What about having life coaches for certain segments, if someone was weak in an area like professional development?  I was thinking we could also offer points for accomplishing certain tasks like humanitarian work.

A lot of stuff happened in the meantime: I got out of the Army, went to study foreign policy in DC, worked for Homeland Security, moved to NYC for school.  And so now I’m wrapping up the thesis, which allowed me more than a semester to work just about full-time (including any waking moment) on trying to make Galapag.us a reality before I can either A) get funding or B) get an engineer/developer job after school.

So I present Galapag.us for thesis on May 15 at NYU.  I have two weeks still to work on it before then.  I think I’ve gotten it to a point where I can start letting alpha testers in to explore, and think about it.  My work log has been tracked on the thesis blog.

Beginning Alpha Testing with Thesis

Want to help alpha test or just look around?  Give it a try at https://galapag.us/login and see what you think!

Here’s the slide deck I’ll be presenting at thesis:

Stack

  • Amazon EC2 small instance with ubuntu
  • node.js/express.js: So easy to build a site using this framework.
  • varnish/nginx+ngx_pagespeed: Caching, run-time optimizations for faster page loads/downloads.  Routes to https and socket.io server too.
  • python scripts for maintaining server default state
  • celery for queuing
  • redis for temporary data dumps and lookups
  • mongodb for permanent data storage
  • angularjs for the comment system
  • mocha, unittest, qunit for unit testing in python and javascript

 

I know the site’s confusing — like an airplane pilot dashboard.  It’ll become more cohesive over time.  A lot of things aren’t quite working yet, or they have filler data to get them going.  Apologies for that.  For more familiarization, try the welcome demo.

But here are some features that are worth checking out:

Comment System

Comments will be available for tribe forums, formula critiques, peoples’ profiles.  I decided to use angularjs so I could learn how to build SPAs with it!

ss_comments

 

Tribes

By tracking individual data, one can also track internal company metrics and state-level happiness metrics too!

ss_graph

 

The Islands

Each island has its own weather, environment, and bonuses/penalties for certain user behavior, so it benefits you to live on the island that incorporates your style best.

ss_islands

 

Professions and Skills

What does it mean to be “good” at something? Are companies hiring the most qualified candidates? How do we standardize that?

ss_professions

 

Your Genome

A profile for your data.  You get reputation scores in different areas.  Those scores are determined by which formulas you choose to use.  You can also see your internet of things (devices, pets, objects) is on the bottom right, while you’ll also be able to create gaming characters using your own data.

ss_profile

 

Quests

You can complete quests within Galapag.us to gain experience.  Some tasks will be data-gardening for other people, some will be to introduce gaming elements, others will be to visit lesser-seen parts of the site.  But mostly the quests should be geared towards helping others.

ss_quests

 

Status Bar

I love github’s command bar. I want users to be able to do most everything through the search bar.

ss_searchbar

 

Tribes and Their Genomes

Tribes are important to our identities. formulas serve as their DNA.

ss_tribes

 

Universal Reputation Lookup

The left-side widget can be opened on most pages to see what reputations the people named on them have.  I intend to allow people to look up reputations from just about anywhere.

ss_widget

 

 

API/Sandbox

Galapag.us will have an API to access one’s data, as well as common stats such as state population census results, zodiac signs, and global stats.  Plus a place to test the routes, within the sandbox:

ss_api

 

So with all that, please go help alpha test at https://galapag.us/login to begin your exploration of identity and reputation.  Thanks, and come to the ITP Spring Show if you can!

 

A Fake Review from The Economist: A Review of Galapag.us

14 Feb

[This was one of our initial assignments for our ITP thesis projects. Come up with a pie-in-the-sky review of your thesis idea.]

[FAKE] The Economist: A (Fake) Review of Galapag.us

Reputation and identity

The internet was a house of nil repute, until Galapag.us

An NYC startup is providing an ecosystem for people to build reputation metrics using any of their data

Forays into the online world have been fraught with peril, uncertainty, hucksters, intrigue, and irresistible indulgence of curiosities. Despite a need for truth-telling and fact-checking, social networking sites have been unable to establish reputation as a measure of quantifiable value to provide the unicorn of positive user experience.

However, a New York City-based startup would like to change that. Galapag.us, so named after the chain of islands made famous as Charles Darwin’s Eureka! moment for his theory of evolution, as well as for its American heritage and social emphasis (.us), has built up a loyal tribe of Galapag.users who promote its cause.

The tribe promotes openness of data and identity as a way to create measures for reputation, under the idea that being radically public will create more value for individuals and for society than governments, businesses, and nefarious individuals can take away through violations of privacy.

Surely other companies have attempted to reëvaluate reputation metrics, but as Ben Turner, the “discoverer” of Galapag.us says, “Companies either focus on low-hanging fruit from Foursquare and Facebook APIs, or they can only measure data in small spheres of peoples’ identities such as diet, exercise, or desktop PC productivity.” The strength of Galapag.us, Turner says, is in its ecosystem of data, variables, and formulae cutting across the spectrum of peoples’ identities, such as their professional progress, their hobbies, what they spend the fixed-limit twenty-four hours of the day doing, etc.

The other strength is indubitably its passionate tribe, made up of early adopters, quantified selfers, data science geeks, academic researchers (who have access to large-scale anonymized organization- or “tribe-” level data), and even recovering patients whose lives have been made quantified in order to survive their maladies.

For now, Galapag.us is closed only to members who vow to be open with their data, even though granular privacy controls with an “opt-in” only mentality are available. But Turner envisions a future where Galapag.us will provide reputations and identities to everyone — and every thing — on the planet, as a way to combat trafficking, bullying, undervaluation of good behavior, and other social problems.

The company can walk the walk, with an organic, thriving user base, as well as with its discoverer being a Texan and a former Army sergeant with an intelligence background, technical capability, and New York City Silicon Alley DNA. In an age where Internet users feel as though everything is being taken away from them, it is a breath of fresh air that Galapag.us is trying to return more value to people — and to society — than they need to provide on their own. economist_rectangle.gif

 

Understanding Genomes: Data Viz Tests for Galapag.us

17 Oct

My Understanding Genomes class with Yasser Ansari has been primarily about understanding the process of how DNA is replicated and how its encoding carries instructions for the building of life.  Our midterm is a fairly open-ended assignment for applying the DNA replication process to a project.  I decided I would do some tests for a person’s Galapag.user data object, in the form of a JSON object being displayed in various ways that allow for quick symbolic/artistic interpretation (which humans are good at) but also allow for quick deep dives into the data (which nerdy types like me who want to see more data on-screen at expense of simplified UI).

So, the first step is to set up a way to access the JSON object.  Right after the spring semester finished up, I had some free time before work started and so I began to port my PHP+MySQL Galapag.us code over to node.js+Express+MongoDB.  I still have a lot of work to do on that, but I can’t really work on that till next semester (AKA thesis semester).  Now, of course, because we use it at work, and there’s a class at ITP teaching it this semester, I’m interested in switching over to Python Flask+MongoDB, but I’m worried I might lose some time figuring out the quirks of that, versus just doing the quick-and-dirty with JavaScript.

Anyway, I’ve already set up some basics for a Galapag.user’s profile database model.  And for Nature of Code class last semester, I built a quick node.js Express server for sending a JSON object of a person’s characteristics (1-10 scales for creativity, strength, charisma, etc.) to a Processing sketch for my genetic crossings project.

So I combined the two models to create an expanded Galapag.user profile, which looks something like this below:
{ "status": "OK", "JSONtitle": "Profile Summary", "profile": [{ "_id": "xxx", "adjectives": "", "appearance": 10, "armSize": "38R", "bio": "test me", "bodyType": "average", "broken": "femur", "caffeine": "coffee", "charisma": 8, "chewNails": "never", "children": 0, "chineseSign": 2, "city": "Des Moines, IA", "coatSize": "38L", "creativity": 3, "discipline": 6, "dressSize": "N/A", "drink": 1, "drugs": 0, "education": 6, "entrepreneurialism": 1, "eyeColor": "brown", "eyewear": 0, "facebook": "", "facialHair": "none", "fillings": 1, "flickr": "", "formulaEducation": "", "foursquare": "", "freckles": "back", "gender": 1, "google": "", "gracefulness": 8, "hairColor": "blond", "hairLength": "short", "hairStyle": "shaved", "health": 6, "height": 66, "homeTown": "Des Moines, IA", "honesty": 3, "humor": 6, "income": 120000, "injuries": "", "instagram": "", "intelligence": 5, "legSize": "30", "linkedin": "", "liquidityInteraction": "", "loggedOnTotal": "", "luck": 8, "maritalStatus": "single", "money": 7, "nationality": "USA", "neckSize": "16 1/4", "occupation": "analyst", "personalityType": "ENTP", "pid": 99, "piercings": 0, "politics": "Republican", "prosthetics": "none", "race": 1, "religion": "Christian", "religiosity": 6, "responsibility": 6, "scars": 1, "sexuality": 0, "shoeSize": "9", "sign": 1, "smoke": 1, "stamina": 5, "strength": 6, "strengthFriend": "", "stress": 6, "suggestedBy": "", "surgeries": "", "talent_art": 2, "talent_math": 6, "talent_sports": 8, "tattoos": 1, "totalBooks": "", "totalCostWardrobePerson": "", "totalInteractions": "", "totalTransactions": "", "totalWardrobe": "", "trustBusiness": "", "trustFriendship": "", "twitter": "", "waistSize": "32", "website": "", "weight": 175, "wisdom": 3, "wit": 5, "xbl": "", "youtube": "", "zipCode": 85083, "claimed": true, "audited": false, "firstTime": false, "active": true, "joined": "xxx" }] }

To visualize the data, there are a couple things I’d like to focus on.  One, I don’t want it to be just another widget you put on your site (besides, does anyone have sites anymore?), and two, I want to emphasize the non-financial benefits of reputation, which is to say, Galapag.us would be great for dating or hiring, but it should really stick to a core of providing an alternative model of judging trust, reputation, and worth through non-financial actions such as being a good friend, a good citizen, self-sacrificing (or not, depending on your opinion of altruism), whatever.

The point is that everyone has his own opinion of what makes someone else valuable, and Galapag.us needs to be a system that does not favor one system over another.  Granted, I think Galapag.us will have its own core values, which I’m hoping will be built upon the company’s DNA, of its founders, but it will also allow for alternate models created by, for example, the average expectations of the entire Galapag.userbase, or hopefully, the aggregate beliefs of different regions, countries, cultures, etc.

Anyway, back to the assignment.  DNA transcription, translation, and replication are essentially protocols for the secure passing of information.  Biology has created a highly reliable process for this.  Humans have developed less reliable processes for the passing along of cultural information, less reliable because the processes rely on generations of humans adhering to the cultural norms and traditions and taking the time to teach it to the next generation.  But look what beautiful things humans have done to pass along generations of information quickly:

Maori facial tattoos (ta moko) were often used to denote one’s place in society, based on positional rules.  From this blog post:

 For men, the Moko showed their rank, their status and their ferocity. The which is generally divided into eight sections :
1. Ngakaipikirau (rank). The center forehead area
2. Ngunga (position). Around the brows
3. Uirere (hapu rank). The eyes and nose area
4. Uma (first or second marriage). The temples
5. Raurau (signature). The area under the nose
6. Taiohou (work). The cheek area
7. Wairua (mana). The chin
8. Taitoto (birth status). The jaw

Something I’m more familiar with, American military uniforms, which allow soldiers who have never seen each other to immediately know someone else’s rank, achievements, stature, etc.  Here’s General Petraeus:

American children are primed for the military uniform (which is now full of symbology invisible to most Americans because of the small percentage of people who actually serve in it) through their Boy/Girl Scout uniforms:

These are individual displays of conformity into cultural systems and achievement within them.

But we also have ways of remembering those we’ve lost and loved.  Take, for example, the American quilt, which has traditionally been used to record family histories or American history, …

…but which not too long ago was used to create a massive remembrance of HIV/AIDS victims on the National Mall:

So how can I encode profile information in such a way that it’s visually appealing, culturally useful, and statistically informative?  To be honest, I have no clue.  It’s not something I’m strong at.  What I’m hoping is to have a few different options available, but to also just put up the API for proper designers to build their own interpretations, something that’s more in keeping with an open-ended system.  Yes, it is likely that no one at all would ever use Galapag.us, particularly any developers, but I think what’s important is to build a simple API for people (including internally at Galapag.us) to interact with.

Here are some visualizations I already made in the past:

YouTube Preview Image

So if I were going to come up with a new visualization that could be displayed in various mediums (on clothing, on sites, badges, business cards, etc.), there doesn’t necessarily need to be any order or logic if I am looking to create something cool aesthetically with the data, but it could help, with minimal cost.

In thinking about Galapag.us and a holistic reputation system, I thought that one would need to find universal constraints.  The first constraint I thought applied to all things, and people, rich and poor, good and bad, was time.  As Arnold Schwarzenegger and other motivators would say, there are only so many hours in a day in order to be great.  No matter how important or unimportant we are, we all only have 24 hours a day to do things.  How do we use that time while we’re alive?  How much time have we invested into different aspects of our lives?

At the same time, there are qualities and characteristics about people and things that require no time to develop or improve or grow into.  It doesn’t take you time to develop kindness, or honesty, or whatever.  You either are at any particular point in time, or you’re not.  These are binary instances, which may vary over time (most people go through periods of both).  If you took a snapshot at any point in time, you would be either one or the other.  Contrast this (and all its inherent inconsistencies) with, say, having gone through college.  It takes 4 years, usually, to get a degree.  Being a college graduate is something that took time to develop.

So time is one dimension. The other one, for better and for worse, is money.  What is your opportunity cost of spending x hours doing something?  If you become a surgeon, you have to spend maybe 6 years and a ton of money for med school.  But afterwards you end up healing sick, weak people.  If you take out loans now, you are going into debt in the present in order to earn far more money and reputation in the future.  What if you wanted to start a family in the meantime, but had to wait?  What if you had to leave your country in order to go to med school?  What if you couldn’t leave your country because of warfare or poverty?  So time versus money is a construct that we’re all in some form or another a part of.

Note that setting up time versus money does not imply that richer or more productive people are better.  It just places events on a chart.  So, I could still say that you could be a productive person even if you had no money, or you could be completely lazy and rich, but it doesn’t condemn you to being “good” or “bad”.

What if I set up this chart?

This, above, is perhaps a chart that shows the objectivist vs. altruist debate.  Should you be the best person you can be, but only for yourself (“selfishness”, in Ayn Rand’s use of the word), or is that utility also dependent on how much you’re useful to people outside of yourself? (if we added a time vs. money vs. health dimension here, we could map altruism vs. selfishness better)

Are the charts biased by going down and to the right?  Or up and to the right?  Does that imply, because of the way we learn mathematics (positive x, y graphs) that heading further out up/down to the right is “success”?

So I’m already seeing that even in displaying data in order, there are a lot of issues with bias, implication, and categorization.  Would it be better to have a visualization where a core self starts in the middle, and branches head outwards to denote connections with people outside oneself?

Let’s try to visualize the above JSON object.  Oh, and did you know that a Pokemon’s “personality value” is captured into a 32-bit unsigned integer in computer memory? (e.g. a binary 2^32 number)

Here’s a simple grid, with transparency based on the 1-10 scale of each characteristic.

The next is a line of squares, separated by category (mind, heart, body), with opacity again representing the 1-10 scale:

A background repeated pattern of the first grid:

The last one charts outwardness and utility for two separate people.  The opacity represents the outward importance of the characteristic (i.e. intelligence is not very outwardly useful to other people) while the length of the bar represents the utility to the individual.  The two peoples’ bars are next to each other (i.e. the first bar is person 1′s intelligence, the second bar is person 2′s intelligence, the third bar is person 1′s strength, etc.).

What I like about the chart below (obviously it’s still not very clear) is that you can find the average utility vs. outwardness (the middle white line) and chop off the baseline, to find the spikiness of the person’s outward utility to the world.  If the data were better represented, you could also get a better sense of who is more “visible” in the world based on his characteristics, and who tends to be overshadowed, literally.

I didn’t have enough time to do more complicated visualizations, plus Processing is not the best thing for working with hashmapped/databased data.  I would rather be using Python or JavaScript to compare two different users’ data across different dimensions. Here’s a gist of my Processing sketch:

 

Nature of Code Final: Genetic Crossings

03 May

Professor Daniel Shiffman’s Nature of Code is outstanding.  Just check out the syllabus. And play with the Nature of Code repo Processing sketches hosted on Github. And be sure to get his book when it comes out! We covered some basic algorithms for simulating inside the Processing environment vectors and forces/repellers, genetical algorithms, Wolfram cellular automata, neural networks, autonomous agents, flocking behavior, particle systems.

Background

For me, the pull towards genetic algorithms, heredity, fitness, evolution, Punnett squares, etc. was great, so my project for my first intro to computational media class turned into my Nature of Code final.

My "EUDAIMONIA" Tattoo

My Genetic Crossings project attempts to create a simulated environment where people exist within a world connected to God, the peoples’ religions, their nationalities, and each other.  They produce offspring based on characteristic attraction rules (for my demo I only used “appearance”, “money”, and “religion”, but only to demonstrate what was possible –I would like to create a more fully-formed algorithm for my personal reputation/identity ecosystem Galapag.us to approximate and adjust to the infinite ways that people become attracted to each other and become married or have children or devote themselves to the other), and they can die.  Their well-being or happiness (what in Galapag.us will be eudaimonia) is dependent on their quality of living within their religions and nations.

Map View

A video from an older version:

YouTube Preview Image

See previous documentation on this project:

 

Here are the initial characteristics I created for each person.  There are so many more yet to add! Strength, intelligence, wisdom, charisma, stamina, wit, humor, education, creativity, responsibility, discipline, honesty, religiosity, entrepreneurialism, appearance, money, gracefulness, stress, health, luck, talent_math, talent_art, talent_sports.

Initial nationalities/regions: USA, China, EU, Africa, South America.  Characteristics of security, innovation, job opportunity, immigration policy, life expectancy, education, sanitation, standard of living, pollution, biodiversity, crime, political freedom, and nutrition.  By no means comprehensive.

Initial religions/spiritualities: Christianity, Judaism, Islam, Taoism, Confucianism, Hinduism, Buddhism.  With characteristics of commercialism, morality, hierarchy, portability.  Obviously these need some tightening up/additions/discarding.

Final Project

So in my midterm I managed to add Verlet 2D physics to the sketch so that people, nations, and religions have connections to each other which make them bounce around like they’re on springs, relative to their attractions and strength of ties to each other.

In my final proposal, I sought to add the following:

  1. Wolfram cellular automata
  2. Connect to external database
  3. A selection algorithm to choose certain parts from parents based on mutation rate and fitness to pass along to new offspring
  4. Interaction sliders to change variables
  5. Macro events that affect well-being of all objects in the world, such as earthquakes or war
  6. Micro events that affect individual well-being, like rites of passage
  7. Discrete clusters of people, mostly based on familial strength of ties, instead of one big clump of people in the middle like in my midterm

 

I managed to get most of this done.

I enjoyed adding Wolfram CA.  I wrote a node.js app for express which would act as a JSON middleman between my main genetic crossings sketch and a wolfram sketch.  Basically, when viewing the chromosomal stainings (genotypes), you can click on the CA button to the left of a person’s staining, and this will pass a JSON object (using Prof. John Schimmel’s Processing-Nodejs code) to the node server, which is detected within 5 seconds by a polling timer within the wolfram sketch.  The wolfram sketch then uses the JSON object as its data to apply rules to to construct a pattern unique to the selected person’s genetic characteristic code.

1) I added a third parameter to the rules which would display as either black or aqua, depending on the CA rules.  Prof. Shiffman’s code used base-2 groups of 3, which had 2^3, or 8 total possible combinations (using only the digits 0 and 1), but I used base-3 (0 = white, 1 = black, 2 = aqua), so it became 3^3, or 27 possible combinations.  For this ruleset, I duplicated Wolfram rule 90 three times, then added a few extra codes.  The triangular look seemed the most visually interesting for what I was doing.  Anyway, what was cool about Prof. Shiffman’s code was that it keeps streaming the pattern from bottom to top.  So when a new person is clicked on, that person’s signature is integrated into the flow seamlessly once the sketch loads the JSON off the node server.  I don’t know that any of this actually is useful except that it looks cool and uses principles from class and maybe, just maybe, shows someone’s digital characteristic “signature”.

Streaming Wolfram CA on top of Processing sketch code. Console of Processing shows a passed JSON object.

YouTube Preview Image

2) I’m happy I was able to set up a MongoDB to be accessed via node as well as by my Processing sketches.  When I build out Galapag.us, I’ll be able to pump out JSON objects of actual users into these sketches for data visualization.  I’d been wanting to do this since my first semester and now it’s done.  Most credit goes to John Schimmel though for writing the hook into node though!

node.js instance output including passed JSON object

3) I realized that I already had some mutation within my matingDance.sex() function, once the two parents’ characteristics were passed to a matingDance.punnettSquare() function.  Before, the function would just average the two parents’ characteristic values together and then add or subtract a random amount from them for mutation.  What I changed was making the function choose randomly from either parent’s base characteristic.  So if one parent had 10, and the other had 1, the result would not be 5 (rough average) but either 1 or 10.  Then I would offset a random amount (hardcoded as 4) if mutation kicked in (if a random number between 0 and 50 was less than 2, for approximately a 1 in 25 chance of mutation per characteristic).  What this ended up doing was increase the diversity within the genepool and more accurately reflect reproduction.  I still need to tweak these numbers to get more consistent levels of variety but the algorithm is mostly there.

Here’s a view of the chromosomal stainings before I changed the algorithm — here it averaged the parents’ traits, which, in the case of this sketch’s iteration’s octomom, created many extremely similar offspring:

Before

And here’s the view after picking from either parent and allowing for a slim chance of mutation:

After

I feel as though the end result has a more diversified population with more variability between generations and individuals.  I need to tweak this so that if the value from a parent is at 1 or 10, it may mutate in only one direction, but here’s the matingDance.punnettSquare() function:

int punnettSquare(int comp1, int comp2) {
    int mutation = (int)random(0, 50);
    int dominance = floor(random(0, 1.99));
    int crossover = 0;
    if (dominance == 0) {
      crossover = comp1;
    }
    else {
      crossover = comp2;
    }
    if (mutation < 2) {
      crossover += (int)random(-4, 4);
    }
    // don't want it to be out of bounds
    // TODO: fix so it can mutate only one way if parent is 1 or 10
    if (crossover < 1) { crossover = 1; } else if (crossover > 10) { crossover = 10; }
    return crossover;
  }

4) I didn’t add sliders to change variables mid-sketch — at this point I can use variables pre-set in the main class but I’d like to make the interface more user-friendly and interactive later.

5 and 6) I didn’t do macro and micro events because I figured they’d just require making a button that, when pressed, would cause particles’ values to change.  What would be interesting would be to have random events happen based on their likelihood to occur and then some events would have permanent effects (damage to peoples’ personalities) or temporary effects (nationalities’ well-being that would later recover).  This kind of introduces the possibility for individual peoples’ health and whether they have injuries/disabilities/diseases/gifts/talents.

I did add a Ritual class though, which only includes right now a funeral function.  When funerals are recognized by a culture (by pressing ‘f’), the dead are removed from view on the map and their attraction springs are removed as well.  What this is supposed to represent is that funerals are a way for the living to remember the dead and then put them to rest so that the living can move on and create new ties with the living.  I do like the idea that we retain our ties to the past, which can sometimes become weaker in death and sometimes become even stronger.  I didn’t model that yet.

public class Rituals {

  Rituals() {
  }

  void funeral(boolean funeralsRecognized) {
    println(funeralsRecognized);
    for (int i=0; i<numPeople; i++) {
      if (person[i].parent1 != -1 && person[i].parent2 != -1 && person[i].alive == false) {
        if (funeralsRecognized == true) {
          physics.removeSpring(parentSpringArray.get(person[i].parent1Spring));
          physics.removeSpring(parentSpringArray.get(person[i].parent2Spring));
          physics.removeSpring(parentMinDistanceSpringArray.get(person[i].parent1MinDistanceSpring));
          physics.removeSpring(parentMinDistanceSpringArray.get(person[i].parent2MinDistanceSpring));
          person[i].lock();
          person[i].display(0);
        }
        else { // TODO: re-reference spring after it's recreated?
          parentSpringArray.add(new VerletConstrainedSpring2D(person[i], person[person[i].parent1], person[i].parent1RL, random(parentGravity1, parentGravity2)));
          person[i].parent1Spring = parentSpringArray.size()-1;
          physics.addSpring(parentSpringArray.get(parentSpringArray.size()-1));
          parentSpringArray.add(new VerletConstrainedSpring2D(person[i], person[person[i].parent2], person[i].parent2RL, random(parentGravity1, parentGravity2)));
          person[i].parent2Spring = parentSpringArray.size()-1;
          physics.addSpring(parentSpringArray.get(parentSpringArray.size()-1));
          parentMinDistanceSpringArray.add(new VerletMinDistanceSpring2D(person[i], person[person[i].parent1], random(parentMinDistanceRL1, parentMinDistanceRL2), random(parentGravity1, parentGravity2)));
          physics.addSpring(parentMinDistanceSpringArray.get(parentMinDistanceSpringArray.size()-1));
          parentMinDistanceSpringArray.add(new VerletMinDistanceSpring2D(person[i], person[person[i].parent2], random(parentMinDistanceRL1, parentMinDistanceRL2), random(parentGravity1, parentGravity2)));
          physics.addSpring(parentMinDistanceSpringArray.get(parentMinDistanceSpringArray.size()-1));
          person[i].unlock();
          person[i].display(1);
        }
      }
    }
  }
}

7) Discrete clusters.  I ended up adding relationships between people and their parents from just constrained springs to a combination of constrained springs and minimum distance springs.  What this would change is that a person’s distance from his parents is both constrained to no more than a certain length but also more than a minimum length, so that they can both be more visible instead of overlapping visually, and also be more clustered together.  I found that this makes certain groups on the map appear more clustered instead of forming a big ball in the middle.  I still need to do more work on this though because as there are more people in the sketch, the big clusterfuck returns (because there are too many connections between everything and I can’t zoom in closer to see the gaps and relative spacing between different networks).

I converted a lot of my arrays of spring connections over to one large ArrayList, which I think was easier to deal with in the end in terms of manipulating them after they were initiated into the environment.  I did find, however, that I had to pass a reference to the spring’s number (since it was just an ArrayList entry) to the person’s class instance so it could refer to it later.  A problem with this though, as I realize just now, is that if I remove springs (as I do in the funeral ritual), I’ll lose the correct references.  So I have to make sure that when the springs are added again, when funerals are disabled, that a pass a new reference to the ArrayList.

I also found that there tends to be super-breeders every time I run the sketch, with certain people tending to produce tons of offspring while others produce none.  I’m talking like 1 or 2 people will produce 10 kids, which tends to make the sketch appear too tightly clustered because everyone is closely linked.  Perhaps this is a feature, rather than a bug, of reproduction?

Code

You can download the code from Github.  You’ll probably want to start up a node instance and then start the genetic crossings sketch, then finally the wolfram sketch.  Instructions are in the README.md.

Github: https://github.com/Xeus/Genetic-Crossing

Conclusion

And this leads me to some closing notes. I shied away from adding fitness yet again to my reproduction algorithms because I felt like “fitness” in the short-term was too much like large-scale evolution theory and autonomous agent simulation.  In my sketch there wasn’t really an ideal fitness state, with no limitations or rules imposed on the larger scale.  What I wanted was to break into modeling some culture into the simulation, so that choices were made between sexual partners based on cultural norms and not as much on randomized reproduction. Obviously modeling culture would work best if it were overlaid on top of basic biological reproductive theory such as choosing the fittest partner and whatnot, but I felt that was too much for the scope of this simulation, which I wanted mainly to focus on social networks.

JavaScript has come a long way.  It’s now the same on the backend and the frontend.  Processing can be exported to JavaScript in some capacity, and dataviz libraries such as D3 are taking off.  Soon we will be able to introduce more fluid, data, physics, and particle system simulations within a browser.  It’s too early for my sketch yet (ToxicLibs takes some finagling) but this is a glimpse of the web to come.

As I begin to do more serious work on the internal mechanics of Galapag.us, it’s stuff like this Processing project that makes me appreciate how careful I’ll have to be with positioning different factors against each other so that people can create their own formulae/evolutions to weight different priorities how they deem fit.

Looks like this book out of the Harvard Berkman Center, “Interop: The Promise and Perils of Highly Interconnected Systems”, by John Palfrey and Urs Gasser, is a must-read.

What I do feel is that current online social networks have not really tried to map out the complex interweaving, competing, variable connections and attractions we have between ourselves and others, between the different identities we all have, between the things we care about more or less at different times in our lives, etc.  To facilitate something like this, I can’t help but feel there needs to be a massive API that allows people to access all this data (if privacy settings allow it) so that we can take advantage of the multi-dimensional nature of our species.

You can think of someone’s identity as a meshed web that is being pulled apart by the external world and people and ideas and being pulled together by muscle and ligament and cartilage and sense of self and personality and such.  You can think of a community as a bunch of these springy people pulling on and apart from each other constantly, but at a stronger tension than from other communities.  Communities form religions and nations and cultures, again with that same network of relationships and competing identities. I hope that’s the dynamic I was able to capture in doing this project.

Credit

Special thanks to:

  • Prof. Dan Shiffman for all his documentation and code from Nature of Code, particularly his chapters on forces, genetic algorithms, ToxicLibs, and cellular automata
  • Prof. John Schimmel for his Processing-Nodejs code
 

Nature of Code Midterm: Genetic Crossing with Verlet Physics

07 Mar

For my Nature of Code midterm, I added a physics world to my genetic crossing project from last semester.

A short video, sped up quite a bit because my MacBook Air + QuickTime screencap choked on it:

YouTube Preview Image

Here’s some past posts on the project: http://blog.benturner.com/category/itp/icm/

Professor Shiffman‘s notes from his Nature of Code book were invaluable in understanding vector- and particle- based systems, so by the time we got to Box2D and ToxicLibs, understanding the underlying framework needed to make a world that reacts to physical forces was far easier.

My genetic crossing project, which allowed for people to reproduce and carry characteristics from their parents and their religious and national environments, was a perfect project for last semester but also a perfect transition project for a physics system, because I was trying to study the natural flow and connection between many different objects with differing characteristics.

I chose to use ToxicLibs’ VerletPhysics2D library because all I had to do was have my Person, Nation, and Religion objects to inherit the VerletParticle2D class, and then be added as particles with connecting springs in order to have them react to each other.

class Person extends VerletParticle2D {
  Hashtable trait = new Hashtable();
  String namePerson, gender;
  int parent1, parent2, uniqueID, pWeight, pHeight, age, mbti, lastBaby,
  nationality, religion, children,strength,intelligence,wisdom,charisma,stamina,wit,
  humor,education,creativity,responsibility,discipline,honesty,religiosity,entrepreneurialism,
  appearance,money,gracefulness,stress,health,luck,talentMath,talentArt,talentSports, happiness, employed;
  int[] colorBaseArray = new int[3]; // need base colors for each person
  float[][] traitPosArray = new float[numCharacteristics][2]; // save x,y for all characteristics
  float[][] traitPosArray_orig = new float[numCharacteristics][2]; // original copy of coords
  boolean alive;

  // constructor
  Person(int _uniqueID, int _mbti, int _stress, int _health, int _gracefulness, int _luck, int _talentMath, int _talentArt, int _talentSports, int _strength,
  int _intelligence, int _wisdom, int _charisma, int _stamina, int _wit, int _humor, int _pWeight, int _pHeight,
  int _education, int _age, int _creativity, int _responsibility, int _discipline, int _honesty, int _religiosity,
  int _entrepreneurialism, int _appearance, int _money, String _namePerson, String _gender, int _parent1,
  int _parent2, int _nationality, int lastBaby, int _religion, int _children, int _employed, float x, float y) {
    super(x, y);

Two things I found out pretty quickly.  First, I made this project with arrays and a hashtable but had I known better, I would have used ArrayList and no hashtables (just variables with integer values.  The other?  I had to rewrite my class xPos, yPos variables as x,y and include them as direct variables instead of references to new variables, in order for the objects to be recognized in the physics world.  Basically, my objects would drop like a stone in a pond because they were not connected to the system but still were “particles” in a world with gravity.

I still have a problem with bizarre array counting for adding the large amount of springs that connect every person, nation, and religion to each other, and more added as each new person is born into the world.  I’m probably wasting tons of memory and overwriting certain springs because I didn’t make entirely unique arrays.

But the simulation is now operating within a 2D world and now I can go through the process of tweaking the relationships between the objects to more clearly match up with the characteristics/heredity/uniqueness that I coded into the simulation last semester.  God is located in the center now, instead of in the bottom right, so he is a fixture within the world, with the nations and religions along the periphery of the map (no meaning behind that!) to space out the particles which are tethered by their springs.

Relevant code:

  physics.addParticle(god);
  god.lock();

  // #PeopleChange init all person objects & nations
  for (int i=0;i<numPeople;i++) {
    physics.addParticle(person[i]);
  }

  for (int k=0;k<numPeople;k++) {
    springArray[k] = new VerletConstrainedSpring2D(god, person[k], godRL, godGravity);
    physics.addSpring(springArray[k]);
  }

  int z=0;
  for (int k=0;k<numPeople-1;k++) {
    if (z < numPeople) {
      for (int l=0;l<numPeople;l++) {
        newPersonSpringArray[z] = new VerletConstrainedSpring2D(person[l], person[k], int(random(250, 650)), random(0.001, 0.003));
        physics.addSpring(newPersonSpringArray[z]);
        z++;
      }
    }
  }

Code is on Github.  I recommend running this in Processing since I have it set to something like 1200×700 pixels.

 

Genetic Crossings (ICM Final Project Presentation)

08 Dec

[see more documentation: proposal, part 2, part 1]

Focus

For Heather Dewey-Hagborg’s Intro to Computational Media class at NYU’s Interactive Telecommunications Program, I decided my final project would involve creating a simulation incorporating the traits of people, nations, and religions, creating offspring who are summations of their genetics and environments.

Processing is a great language for easily visualizing data.  I early on realized I wanted to make a visualization as a study for Galapag.us, my eventual thesis for developing a reputation and identity system that centralizes all the data you’ve ever created about yourself and what others say about you so that you can develop algorithms and formulas for evaluating and comparing your results with others.

Inspirations

Visually, I was interested in karyograms, Punnett squares, chromosome stainings, and representations of solar systems.

 

Application

The sketch initializes a world and fills it with 5 people to start off with, Albert Einstein and Gisele Bundchen, and 3 random individuals.  Time begins, with each pass of the draw() loop aggregated and calculated into a rough approximation of years in time.

People have innate traits and characteristics saved into variables: strength, intelligence, wisdom, charisma, stamina, wit, humor, education, creativity, responsibility, discipline, honesty, religiosity, entrepreneurialism, appearance, money, gracefulness, stress, health, luck, talent at math, talent at art, talent at sports, whether employed, happiness, nationality, religion.  They are on a scale from 1-10, with 1 implying the most negative state and 10 being the best. (e.g. poor health vs. superb health, ugly vs. gorgeous, a stressed-out person vs. a carefree one, etc.)

They are born into nationalities/regions: USA, UK, Africa, China, South America, with the traits security, innovation, job opportunity, immigration policy, life expectancy, education, sanitation, standard of living, pollution, biodiversity, crime, political freedom, and nutrition.

They have religions/ways of life: Christianity, Catholicism, Judaism, Islam, Taoism, Buddhism, Confucianism, with the traits commercial, morality, hierarchy, and portability.

You can already see the terminology isn’t precise (nations vs. regions), and I’m missing tons of variables.  Had I more time to code in more negative effects, I would add personality traits like deception, violence, libido, etc.

God is in the sketch.  All people are connected with him.  He also has baller stats:

// who art in Heaven
  god = new Person(-1, 0, 0, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
    0, 0, 10, 0, 10, 10, 10, 10, 10, 10, 10, 10, "God", "null", -2, -2, -1, 0, -1, 0, 1, 1100, 600);

Every pass through draw(), it’s determined whether 1) there’s a potential match (via the flirt() function), matching a male and a female (sorry, I didn’t have time to code in adoption et al), 2) there’s chemistry, and 3) if so, then sex().  Chemistry() requires a degree of likeness in appearance, money, religiosity, and some other superficial requirements. Then again, there’s also the matingDance.beer() function, which I’m particularly proud of:

else if (matingDance.beer(flirter1, flirter2)) {}

Social lubrication — some of the basic requirements for chemistry are, um, degraded, leading to easier baby-making.  This is also good for preventing my sketch from not having enough chemistry to produce offspring between the people.

Women between ages 18 and 50-ish are fertile (I had to adjust the numbers so that the sketch would work throughout its duration instead of the whole civilization losing an ability to breed by becoming too old) and need at least 5 “years” or something between babies before they can have another child.

boolean checkFertile(int _flirter1, int _flirter2) {
    int female = 0;
    boolean fertile = false;
    if (person[_flirter1].gender == "female" && person[_flirter1].alive == true) {
      female = 1;
      if ((currentYear - person[_flirter1].lastBaby > gestationRate) &&
       (person[_flirter1].age >= 18) && (person[_flirter1].age = 18)) {
        fertile = true;
      }
    }
    else if (person[_flirter2].gender == "female" && person[_flirter1].alive == true) {
      female = 2;
      if ((currentYear - person[_flirter2].lastBaby > gestationRate) &&
       (person[_flirter2].age >= 18) && (person[_flirter2].age = 18)) {
        fertile = true;
      }
    }
    return fertile;
  }

Children are created through matingDance.punnettSquare() of their parents.  The parents’ traits are averaged together and then some mutation is introduced for variability in the children.  I think I coded it so some traits change more than others, and some don’t change at all.

People can reach somewhere around 65-ish before death becomes a regular reality.  Once people die, they are removed from the population size, which is capped at 40 — allowing another child to be born somewhere if there’s less than 40 people alive.  The maximum number for the duration of the sketch is 90 people, so if 40 people are dead, up to 50 others can be alive.  The sketch starts to slow down once there’s more and more computation via people objects.

The orange-yellow buttons toggle between the main universe-like view and another view, which contains system stats and karyogram-like views of each person’s traits.  The traits are displayed as circles, with their sizes representing the size of the traits.

I made some formulas (or evolutions, as I call them) for actual vs. potential well-being.  This computes someone’s traits as he is born with, and after they are adjusted for quality of the nation and his religion.  This is then divided by the maximum well-being one could have in the same religion and nation.  Thus you get a ratio of actual vs. potential.  The goal is to bring these numbers as close together as possible, to see if a society is running at full efficiency.

In my fairly generous, unscientific, unsystematic world, people are STILL running far below efficiency.  The best of human achievement is squandered daily, not just by peoples’ own personalities and time constraints, but by poor maximization policy and by inflexible religious traditions.

I also coded in a happiness evolution:

int happiness(int i) {
    int happiness = person[i].health + person[i].money + person[i].stress + person[i].creativity + person[i].religiosity +
    round(nation[person[i].nationality].standardOfLiving / 10) + round(nation[person[i].nationality].pollution / 10) +
    round(nation[person[i].nationality].security / 10) + round(nation[person[i].nationality].crime / 10) + person[i].employed * 10;
    return happiness;
}

This computes someone’s happiness based on personal health, stress levels, creativity, religiosity, and his nation’s standard of living, pollution levels, national security, crime levels, etc.  It also relies on whether someone is employed or not.  Obviously this evolution needs a ton of work and far more variables.

My "EUDAIMONIA" Tattoo

The happiness metric and the actual/potential well-being ratio are key metrics that I want to spend more time nailing down.  I think these metrics are chasing Aristotle’s concept of eudaimonia, which I also have tattooed on my arm.  There’s more to life than money.  There’s all these other variables.  It could be said we are happiest (in a bigger sense) when we feel we are running at our maximum potential and can contribute to the world.  We need to be able to measure this and push it down to the individual level, so people can make better choices towards bettering themselves, and up to government level, so policymakers can make better policy to maximize a nation’s human and social capital.

Download/View

The code is too long to post here, but here’s a direct .txt link to the source .pde (w/ combined classes).  You can go see the sketch running at OpenProcessing.org!  Only thing about that is that it will run in a reduced-size window.  You can try to view the Mac .app version or the Windows .exe version, too.

The code is also now at Github.

Difficulties and Lessons Learned

I used a Hashtable at first, to try it out, but I quickly ran into limitations I didn’t know how to get around.  I would use pretty length functions to recast strings as integers and vice versa, and so on.  Eventually I got so pissed that I rewrote a lot of the code and Person classes so that everything was saved as an integer and then I could look up its “name” in a table via a function.  So the nations are coded as 0-5 or whatever, with 1 equaling the UK, etc.  Much easier to manipulate.  It also meant I could use the ID integer with arrays.

My code got long and complex quickly, so I had to split everything up into classes, just for organization’s sake:  Death, DrawFuncs, Evolutions, GetFuncs, MatingDance, Nation, Person, Religion.   I don’t think at this level of sophistication, I could really build more objects into the sketch.  I wanted to practice inheritance and polymorphism stuff but it didn’t come up.  Any ideas for refactoring?

I really hated recasting strings and integers.

I want to spend more time coding on happiness and actuality vs. potentiality.  What I learned was that you have to build a really large system sandbox before you can begin to tackle those metrics.  This includes modeling and simulating an environment to such a degree that it can begin to calculate and visualize your concept of what happiness is, since it pulls from so many dimensions of one’s life. (not just money, but also charity, family life, employment, etc.)

Ways to Expand

Still want to use real-time data from Galapag.us, fed in from its database into Processing.  Too much to do right now though.  I’d have to redesign my database as well as fix the sketch variables!

The algorithms and equations need a lot of tweaking to be more realistic.  For Galapag.us, I’m hoping to crowdsource algorithms for the most accurate ways to calculate somewhat qualitative figures.

I wanted to be able to introduce outside shocks (natural disasters, etc.) into the system, to see how it would affect various nations and personality types, to see who would be more resilient.

I would like to give random people innate superpowers or traits that are unique or very rare.  So that maybe when they turn 30, something is unlocked within them.  I guess I could also give them random diseases and genetic predispositions.

Conclusion

This project helped me get pretty solid on classes and functions and how to organize a sketch.  If I were to rewrite this, it would be far cleaner and more compact.  Mostly I’m appreciative of how much work it takes just to get to a level where you can start doing interesting network effects on large systems.  I barely scratched the surface, in about 1,590 lines of code, but I did manage to achieve perhaps 90% of the infrastructure that I hoped to build.  All of this helps me build a better reputation and identity system for Galapag.us and for my thesis.  I’m hoping the more solid I get on the infrastructure, the bigger breakthroughs I will have on the algorithms and crowdsourcing enablers that will be at the heart of Galapag.us.

 

Eudaimonia Versus Existing in a Childproofed Society

10 Aug

We live within a culture where negative feedback is purposefully avoided.  You can’t “dislike” on Facebook, you can only “+1″ on Google+.  Yelp was rumored to have strong-armed companies into paying to get rid of bad reviews.  Online sites like Consumerist are attacked by businesses who claim they’re unfair.  Most companies purposefully hide their contact numbers on their sites so you can’t easily call them (because if you’re calling, you probably have a problem with them!), you can’t cancel service on a web site and usually have to call, people avoid conflict and argument, companies set up complex levels of firewalls to prevent angry customers from getting anywhere, etc.

It goes further.  The world’s standard for measuring national improvement is Gross Domestic Product, which only tracks consumption in a very crude way.  Simon Kuznets, one of the architects of the GNP metric, admitted, “The welfare of a nation can scarcely be inferred from a measurement of national income… Goals for “more” growth should specify of what and for what.”  But this forewarning was ignored.  If someone gets cancer and has to purchase a bunch of equipment and pills and spend money in the hospital, this is counted as a net positive for society because of the purchases, even if all these resources are being spent on one person who is unable to contribute to society while sick.  The U.S. government (!) is protesting credit rating agencies’ assessment of its indebtedness, where both the U.S. government has been profligate and the agencies have been corrupt in currying favor with the U.S. one moment and then trashing it the next.

The stock market, currently in shambles within the last few weeks, has scared nations yet again after a shock only three years ago.  Predictably, the Greek government, which has watched its economy grind to a halt and reach almost-default levels, has decided to ban short-selling of stocks for two months.  This is essentially an ideological move.  Short-selling, where you make money by betting on a stock going DOWN, not up, has always been seen by non-market people as, in varying degrees, dastardly, unpatriotic, illegal, and even dangerous.  It’s that last point regulators focus on.  They believe that short sales by people who hate a company can drive a stock to zero.  Meanwhile, market folks know that short selling actually adds more transparency, information, and support to stock prices, because there will be pressures pushing the stocks both up AND down, and not just up.  The problem in a market without short sellers is that without them, when buyers disappear, prices collapse completely.  No short sellers would be covering their positions.

And this says something else about markets.  Very few people actually understand how they work.  Virtually all the mainstream articles being written about the latest downturn are just flat out WRONG.  You’ll get guys like this, who tell you to stay in the market so you don’t risk the upside (again, it’s always about things going up).  He goes on in another piece to say that Wall Street is irrelevant!  The Daily Beast, usually a pretty savvy digest of the most important stories, has turned to mush when it comes to the markets.  Otherwise very intelligent people I follow online also have very flawed notions of how the markets work.  The lack of economic understanding is frightening when you consider that these people probably know a little bit more than the politicians elected to vote on policy for government role in the economy.

I’d prefer to read people like George Friedman, who emphasizes that it is not just economy, but political economy, that we must talk about.  Politics and the relations between power groups affects most of the dynamics in our lives, and we cannot act like the economy is some neutral entity that is impervious to human mistakes and designs.  The “economy” is intimately wrapped within the designs of men.

I had to quit watching the daytrading IRC channels because even those high-frequency traders had what was basically a cynical Ayn Rand-ish slash Gordon Gekko slash Snake Plissken view of the world where you’re only successful if you cut others’ throats to get to where you are.  Their adaptability to changing market conditions was highly questionable.  Basic economic principles were ignored.  But hey, they made good money so I can’t complain too much.

I would agree with Richard Florida (PDF), Umair Haque, Tim O’Reilly, and some others that we are in the very early, ugly stages of a transition to an eudaimonia society, from a purely consumerist society.  I believe that we need to be able to take an honest look at how our society is structured and allow for more negativity in our metrics.  We need to develop the capacity to take criticism, to be voted down, to be shamed when we do things that are wrong (a concept crudely and devastatingly wielded mostly by religion), to take a more holistic look at everything impacting our lives.  Pure revenue should mean less if it comes at the cost of environmental degradation, pollution, lack of time at home raising families, lack of sleep, abuse from employers or manipulation from unions, etc.

Eudaimonia is a term fit only for us classicists, but @'s concept of the economics of the good life is spot on http://bit.ly/l25koR
@timoreilly
Tim O'Reilly

Umair Haque:

“I believe the quantum leap from opulence to eudaimonia is going to be the biggest, most significant economic shift of the next decade, and perhaps beyond: of our lifetimes. We’re not just on the cusp of, but smack in the middle of nothing less than a series of revolutions, aimed squarely at the trembling status quo (financial, political, social): new values, mindsets, and behaviors, fundamentally redesigned political, social, economic, and financial institutions; nothing less than reweaving the warp and weft of not just the way we live–but why we live, work, and play.”

The goal is for people to be able to pursue middle-class professions in fields that they are talented at, to unlock their creative potential, instead of shoe-horning people into certain professions if they want to live any kind of decent lives for themselves.  The goal is for people to have a successful career but also a family to raise, a community to participate in, and a healthy life.  The way society is constructed now, as I’ve said before, is a zero-sum kind of get-rich-or-die-tryin’ mentality where everyone is incentivized to fuck everyone else over, at least until one becomes wealthy enough to think about maybe working on philantropy for others.

My "EUDAIMONIA" Tattoo

Instead of just Gross Domestic Product, people like Mark Anielski (“The Economics of Happiness: Building Genuine Wealth”) recommend the Genuine Progress Index, or the GPIAtlantic.  The GPIAtlantic was broken down into these indicators:

  • Time Use
    Value of Civic and Voluntary Work, Value of Unpaid Housework and Child Care, Value of Leisure Time, Paid Work Hours
  • Living Standards
    Income and its Distribution, Financial Security – Debt and Assets, Economic Security Index
  • Natural Capital
    Soils & Agriculture, Forests, Fisheries and Marine Resources, Energy, Air, Water
  • Human Impact on the Environment
    Solid Waste, Ecological Footprint, Greenhouse Gas Emissions, Transportation
  • Human and Social Capital
    Population Health, Costs of Crime, Educational Attainment

These indicators are far more in line with how we actually consider the world subjectively.  They capture our concerns, worries, and understanding of how much we feel safe living in our communities.  But all of the factors are ignored in the top-line metrics that we use.

Which is sad because we live in an era now of big data.  The top quants in the nation are working in finance, insurance, computer science, crypto.  Yet the metrics we use for our own well-being and happiness are crude “neutral” measurements from another century.

The above chart shows the disparity between how the U.S. economy is measured through GDP versus how it is in actuality.  In short, we have hit a plateau in our quality of life for almost 60 years, while our GDP measurement seems to indicate we’re much “richer” per capita.  It coincides with increasing income inequality, measured through the Gini coefficient:

They show that our society as a whole probably peaked in overall access to happiness somewhere in 1968.

In short, we have insulated ourselves from seeing the negative aspects of our society.  Amartya Sen calls this phenomenon “hedonic opulence”, Anielski calls it “chrematistics”, Clive Hamilton calls it “affluenza”.  We believe that we can grow our way out of poverty, that if we have enough positives in a society, that we can just overwhelm the negatives.  But the truth is that the negatives impact the bottom line of growth and positivity.  A community full of pollution and crime will stop creative processes from flourishing there.  A sick populace will be less productive at work, impacting overall economic success.

Said Robert Kennedy on March 18, 1968, at the University of Kansas:

“Too much and too long, we seemed to have surrendered personal excellence and community values in the mere accumulation of material things. Our Gross National Product [GNP]… – if we should judge America by that – …counts air pollution and cigarette advertising, and ambulances to clear our highways of carnage. It counts special locks for our doors and the jails for the people who break them. It counts the destruction of the redwood and the loss of our natural wonder in chaotic sprawl. It counts napalm and counts nuclear warheads and armored cars for the police to fight the riots in our cities…. Yet the gross national product does not allow for the health of our children, the quality of their education or the joy of their play. It does not include the beauty of our poetry or the strength of our marriages, the intelligence of our public debate or the integrity of our public officials. It measures neither our wit nor our courage, neither our wisdom nor our learning, neither our compassion nor our devotion to our country, it measures everything in short, except that which makes life worthwhile.”

This is why I want to work on Galapag.us as my life project.  It is an ecosystem for reputation.  All the things you’ve worked on in your life are aggregated into metrics of your own design.  The most popular metrics (say, success at being a contributor to your community, looking at data such as your volunteer work, church life, money donated, time spent tutoring other people or children, household income, trustworthiness, crime record, etc.) would be voted up to the top.  We would not be constrained to just GDP.  We could build our own metrics.  Then those local, individual metrics could be aggregated for county level, state level, all the way up to national level.  The data is anonymized as it is grouped, or, if you choose, fully identifiable and open if you are an open person.

The imperative, though, must be on more transparency and accountability.  If we as individuals can’t handle being criticized publicly, then we can’t expect things to improve at higher levels of organization.  Being criticized is not always a bad thing.  If the criticism is fair, you should improve yourself with it.  If it is unfair, your detractor should be penalized for making false statements.  We do not have this kind of global feedback system in place.  We are victim to flash mobs, anonymous attackers, stalkers, people who suffer no negative feedback from their actions.  Galapag.us would fill this hole in the internet’s identity layer while still providing degrees of anonymity, pseudonymity, and identity.

Daniel Suarez’s seminal but overlooked books, Daemon and Freedom (TM), suggest deprogramming the “Non-Player Character”/NPC dynamic of being trapped within a world of simplistic metrics (the quotes below are from Freedom (TM):

“What do we look like to a computer algorithm, Sergeant? Because it will be computer algorithms that make life-changing decisions about these people based on this data. How about credit worthiness—as decided by some arbitrary algorithm no one has a right to question?”

“Imagine how easily you could change the course of someone’s life by changing this data? But that’s control, isn’t it? In fact, you don’t even need to be human to exert power over these people. That’s why the Daemon spread so fast.”

Suarez’s books propose that darknet hacker communities will spring up in the rural areas, away from legal restraints and the encroachment of lawyers, corporations, and other barriers to entry, creating more balanced, sustainable, networked communities for people to be rewarded at their individual trades by leveling up in the darknet world and then using darknet credits to earn a reputation and a living.

“Holons are the geographic structure of the darknet. Any darknet community lies at the center of an economic radius of one hundred miles for its key inputs and outputs—food, energy, health care, and building materials. Balancing inputs and outputs within that circle is the goal. A local economy that’s as self-sufficient as possible while still being part of a cultural whole—a holon—thus creating a resilient civilization that has no central points of failure. And which through its very structure promotes democracy. That’s what we’re doing here, Sergeant.”

“The Daemon financed this.” Sebeck turned to her. “Didn’t it?” “The Daemon’s economy is powered by darknet credits, Sergeant. Imaginary credits are all that money is.” “But there’s a theft at the heart of it.” She thought about it and nodded slightly. “Yes, the darknet economy was seeded by real world wealth. Wealth that was questionable in origin to begin with. Here, it’s being invested in people and projects that have begun to return value—not in dollars, but in things of intrinsic human worth. Energy, information, food, shelter.”

There are ways out of the messes we’re in, but most people see them as unconnected issues.  But personally I see it as symptomatic of an entire society’s failure to examine itself.  Gnowthi seauton.  Jared Diamond-type stuff.  Granted, it would be a LOT to expect humankind to be able to look at itself honestly, for humans always hope to avoid the negative and only see the good in the things they believe in, but this would be one of those points where one would hope that our civic leaders and politicians would be required to study — and therefore detect — such policy/societal failures and properly diagnose them.

Unfortunately, that is not the ruling class that we have, and we are not likely to correct these systems until an alternative system is built.  Those who make money under the current system will resist, but even politicians go along with something when it’s shown to be successful.  Hopefully for me it would be something like Galapag.us, but I would accept any attempts.

The only way to change our systematic problems is to build our own alternative.

 

Moments

30 Jul

When I think about how poor my memory is, I know that there is a lot I’m just going to forget, not because I just don’t care or think it’s unimportant, but because 1) I’m a guy and 2) I don’t remember details so much as impressions and also how to find those details again.  The internet is becoming our collective mental hard drive.  It’s far better at storing data for individual long-term memories as well as for shared memories (what we might called culture transmission and shared knowledge).  This off-loading of long-term memory from our brains means our short-term mental RAM can become sharper.

Still, we’re human.  We remember certain experiences with the utmost vividness, even decades afterwards.  Whether they are traumatic or pleasurable inflection points, they profoundly affect our characters.  Just think about your relationship with someone close to you.  Perhaps you will remember impressions of many days spent together, but you will remember certain key moments down to how the air smelled or what song you were listening to.  The rest sort of fades away.

This is our passion and our personality.  The way we react intuitively and immediately to certain situations.  Highly dependent on our most vivid memories of something similar.

Yet, all that discarded memory can be important too.  Certain memories may strike you differently and more profoundly at some other point in your life.  But since it wasn’t relevant at the time, maybe you forgot it.

One project I’d like to work on is reproducing the magic of a moment digitally, whether it’s the profound or not so profound.

The profound is easy.  You would want to remember your first kiss.  You would want to remember how you felt and looked when you graduated from something.  You would like to see the looks on your family’s faces when they were so happy with something you’d done.

Certainly an age of everyone recording videos of each other is coming.  It leads to accountability, transparency, and reviewability, among other things.  If you’re not recording, everyone else will be.  Once cameras become cheaper and more ubiquitous, this is inevitable.

But what I want to do is create new moments.  Say you want to create a moment for your girlfriend who lives a long way away.  You’ll likely not see her for a while.  You can write a letter or email, or send a gift, sure.  But it’s not quite a shared experience.  It’s a one-way communication in many ways.

I would like the ability to create something like a moment quest.  I would let her know that she has a moment quest ready for her.  In order to receive the message or gift or news that I want to give her, she will have to complete a series of actions or mini-quests in order to unlock the moment made especially for her.  Perhaps the tasks are shared tasks that you do online together.  Or they require both of you to complete.  At any rate, the quest is something the two of you shared together, and thus, when the reward comes at the end, the reward is fused with the journey taken to receive it.  This is a moment.

You can craft better moments.  Ones that incorporate story-writing, taking photos, sharing sights and smells and thoughts, ones that require going out to complete mini-quests like going to four sushi joints.  Ones that require you to talk to your mom and dad first.  Ones that send you on a scavenger hunt or a digital Odyssean quest.

There’s even the story about the wedding gift a man made for his newlywed friends which consisted of a locked box that had a button on it.  The box said the newlywed couple would have 50 presses of the button to figure out how to open it, or it’d stay closed forever.  Pressing the button would give simply a distance to the target, and the number of remaining guesses.  So the box had a GPS unit in it, and it was telling the couple how far they were away from a location which, when the box detected it, would presumably open the box.  It turns out the box was on some charming island where the man had first started having feelings for the woman.  A great wedding gift.

I don’t accept the divide people make between the digital world and the “real” world.  The two are converging.  History in the future will show an intimate relationship between the two — you’ll have to interact in both worlds to do many jobs, I’m sure of it.  What if we could move past bias against one type of world, and just create more quality moments with those we care about?

When we’re on our deathbeds, aren’t those quality moments all we’re going to really care about?

 

Moved My Reputation Research Blog Posts Here

30 Jul

I’ve migrated my reputation research blog into this blog to make things easier.  A lot of my stuff is blending together, personal life and reputation, so it’s harder to decide whether a post should go under this blog or that blog, so I’m moving over. :)

The posts here are now on my main blog under the “Reputation” category.

 
 

My Goals for NYU’s ITP Program

07 Jun

I’m really excited to be starting my Master’s in Professional Studies program at New York University for the Interactive Telecommunications Program in August. In a way, it’s a true culmination of all the things I’ve been doing on my own OUTSIDE of school for so long. BBS‘ing and Sierra Networking in high school, telnetting and MUDding and daytrading and webdesigning in college, blogging and searching in the Army, coding a bit at Georgetown. Not really finding folks who found value in doing anything technical in any of those tribes.

I don’t know how this program will end up, but given that it’s throwing people headfirst into Arduino circuitboards, coding, hacking, social media remixing, designing, creating…I’m hoping to find peers who love to experiment and play and make.

Having seen various sectors of the American economy while living in CA/DC/TN/TX/IZ, particularly the knowledge economy, what I’ve been struck by most has been the lack of technical knowledge. People know their tiny sliver of the world, such as collateralized debt obligations, US-Pakistan policy, aid packages, writing reports…but anything broader than that knowledge is usually treading on very delicate ground. Even in some of the more technical areas I’ve worked in (military intel, social media, innovation projects), there is literally no knowledge of or curiosity for experimentation or remixing.

When I see people who don’t tweet or blog or have much of a presence online, particularly when they claim to be pretty digitally savvy, it makes me wonder. Twitter is all about remixing ideas, combining cultures and taboos and tribes. It’s a swirl of information waiting to produce the next memes or companies or news or collaborative one-offs. To me, not only is this environment fascinating, versatile, and by its nature educational, it also is a cauldron for the next generation of successful projects and people. It’s a testing ground for future successful workers. How can you compete in the working environment if you can’t keep up digitally? I understand if you don’t like computers or the internet, but it’s your own livelihood.

About a year ago, before I applied or even knew what I was going to do, I quit my job for 2.5 months. I got to enjoy the DC summer, but mainly I was coding full-time for my personal project, Galapag.us, having no clue where it would go or how it would ever be more than just a dumb idea. But I was super-frustrated with where my career was going. I wanted to build, to create, to do more with my hands. I think I called several family members and friends looking for advice. I ended up applying for ITP (and nowhere else), shelving Galapag.us for a bit, and returning to work. In April I found out I got in.

The way I see it, heading to NYC, the most creative, diverse, urban, and pragmatic city in the world (I’d argue), to finally be a true geek, I can only see this as a huge personal victory, a huge opportunity to be myself and to create a lot of great things that are useful to a lot of people.

And since I’m older this time around, and have an international development/international affairs Master’s under my belt from the best IR school in the world, this time I know I should have a plan of attack.

Galapag.us

Galapag.us is what I’d like to be my life’s work.  It’s what I want to be known for.  An open reputation system providing alternative forms of credit and trust, verified through a balance of different interests, using all your life’s data to compute what kind of person you are.

I want my projects to all work on some aspect of Galapag.us, to test its weaknesses and experiment with what it could eventually look like or become.

 

Prototype Glasses with Visual Augmentation for Reputation

To that end, I want to build the glasses used in Daniel Suarez’s Daemon and Freedom (TM).  Regular-looking glasses that you put on, plugging you into digital layers that show reputational score layers next to someone’s image, route planning towards your next objective, visuals of your level and trade (Level 19 Farmer, Level 3 Government Analyst, etc.) and others, digital inventories you can use with real-world objects, etc.  Augmented reality is being worked on at the platform level, but I’d like to build a functional prototype of some sort (PDF).

Prototype Location-Aware RFID Organizer Bins and Objects

Cory Doctorow’s Makers had his two tinkerers create a cheap and easy tech that consisted of RFID chips in containers and on objects, so that when you needed to locate something in your closet, you could call it up and the container it was in would glow for you so you could find it faster.  RFID and its intermixing with IPv6, linked data, and object reputation will lead to greater connectedness between the digital and real world, and will enhance our ability to interact with the real by mapping the computational digital world onto it.  It’s pretty kludgy the way we look at a real-world object (a book) and then google or amazon it online.

Video Editing

We have already reached textual literacy on the internet.  To the extent that we can remix and reuse text without violating the horrible, innovation-choking copyright laws that currently exist, we’re actually pretty good at finding, searching, and sharing text.  With bandwidth and storage and access increasing for video, we will need to reach video literacy next.  I already know that my posting a video will have far fewer hits than if I post just text.  Many people don’t want to watch a long video, or are at work and are blocked from YouTube.  But once a video goes viral, it has far more of an impact.  I would like to capture some sort of Marshall McLuhanesque understanding of video and get smart on video, Final Cut Pro, AfterEffects.  Video editing I see similar to web design — it’s a way to create and express your own view of the world without relying on others to make it for you.  And now that video is social and allows for feedback, through perhaps the most important tech given to us after the dotcom revolution besides Google (no, not Twitter or Facebook), YouTube:

YouTube Preview Image

Music Creation

Instead of being a guy on his night out at the club, I always wanted to own the club, or be playing the music for the club.  While I have no musical ability, I think I’ve at least accumulated enough knowledge from a broad enough swath of songs to be able to start mixing them together.  The tools for music creation, however, are somewhat arcane.  I want to get more comfortable with it.  Out of my straight-laced DC policy/analyst friends, I have seen their better parts/personalities emerge only when drunk and on the dance floor.  That is the power of music and communitas with alcohol and Cee Lo Green-revealed magic of Friday and Saturday night.

YouTube Preview Image

Miscellany

I have a few other projects I want to prototype.

ProbablyGonna. DC culture consists of a bunch of people who live in the District and want to go to happy hours/networking events EVERY NIGHT.  I came to DC and went immediately to Georgetown, so I had a built-in group of friends to hang with.  I have a feeling people in DC have a bunch of different circles and tribes they hang with, so the best way to meet up is not necessarily blast e-mails or FourSquare checkins.  What might work best is you signaling your intent to go out on certain nights on the calendar.  Say you want to have a night of clubbing on Friday night, until late, and maybe you want to do Adams Morgan.  You signal that on ProbablyGonna (as in, I’m probably gonna do this on Friday), and anyone else connected with you can signal their intent to do the same.  It’s not mutually exclusive to other events, so you could signal for multiple events.  This solves the FourSquare problem of knowing someone is at a location after they’re there, or in most cases, long after they’ve left.

Men’s tailoring. Most men do not know how to dress.  They certainly don’t own the essentials, the basics, for different social events.  What if you go to a site, select that you want a “business casual” outfit for work, enter your rough dimensions, and order a pretty basic outfit of a suit, shirt, starter tie, socks, shoes, underwear, belt, cufflinks, watch?  Then that kit either goes to a local tailor working with my company, or it goes to you and you schedule your time with the tailor later.  The tailor establishes a personal relationship with you and zeroes in your dimensions for the clothing.  The tailor then mends your kit, and gives you a business casual basic outfit that actually fits you, flatters your shape, and is worth far more than a regular tailoring job.  The best part?  Over time, your purchases get better.  Different outfits (going out Friday, wedding, weekend wear) go straight to the tailor, who tailors your kit, then gives it over to you.  It helps you dress far better for your body shape, it helps the tailor develop clients, it helps my company move product.  Then I can also sell you your pieces of personality, usually in the tie, the socks, shoes, kerchief, etc.

Reputation badges for your outfits:  piggy-backing on Galapag.us. You unlock badges that you wear on your clothing or bags when you go out.  They have QR codes or some other unique form of code (e.g. Itizen TRACKit).  Say you’re an excellent wingman and have saved three mates.  You get a wingman badge with two oakleaf clusters.  Or you know CPR.  You get a CPR tab (designates a skill, not an accomplishment).  Designated driver?  Badge.  This mirrors the military uniform system of achievements.  Clothing subconsciously is used to denote class, personality, and tribal association, but we’ve lost individuation and accomplishment that Papua New Guinea and Maori and other tribes used tattoos for, or Roman colors for their togas.  I want to bring that back.  Using Galapag.us’s reputation system as the backend and standardization platform.

So in short I want to play with things.  I don’t expect to get good at any one thing.  I’m not sure I will be very good at 3D printing or laser cutting or making actual models of things, having no prior design background, but I’ll give it a shot.

Setting the Tone

Those are the actual products.  Mostly what I want to do is create things that are useful and happy.  Two of the biggest problems among Internet-Americans is that they 1) have no clue how to make tech that benefits the poor, weak, and under-represented, and 2) they get too cynical or unhappy.  Fortunately NYC is taking on the personality of a digital city, thanks to Mayor Bloomberg and his efforts to push the city online, including appointing a Chief Digital Officer, Rachel Sterne.  As for me, I’ve realized how happiness and laughter and fun make more of a difference in peoples’ everyday lives than being sarcastic, sardonic, cynical, pessimistic, or mean.  While I’m sarcastic and dark in my humor, I want to try being happy.  I want to make peoples’ lives better and happier.  I want to stay away from the easy, which is being critical, doubtful, and resentful, while at the same time being pragmatic, useful, and iconoclastic.

So that’s what I want out of the next two years.  Hold me accountable to it.