Social Networks are Boring

A common refrain. People will complain that Facebook, or Twitter, or whatever, is boring. What’s usually going on is

  1. their friends are boring,
  2. they’ve reached mental exhaustion,
  3. they try to use social networks less as a social pulse or passive awareness and more as active entertainment,
  4. they reached exhaustion of new content, or
  5. they’re boring.

In a previous job, I’d do 12-hour shifts watching social media, 2 or 3 days in a row. Like, say, on overnights on a weekend. By 6AM on Monday morning, I wanted nothing to do with looking at a computer, and I say that as a completely internet-wired junkie. Sometimes there’s just nothing going on at all. No news. Even the Associated Press wires are just posting baseball recaps. Even the most loserish folks online aren’t busy bashing something on Sunday evenings.  Social media on Sunday overnights is dead.

So hearing from anyone else that one needs to unplug for a while is understandable. What isn’t understandable is the lack of recognition that your boring feeds reflect boring friends or your boring interpretation of what your friends do.

There are variations of this problem: sometimes people don’t follow a critical mass of content creators, so that when they try to view a stream or feed, they barely see any new content, and what content is actually there is boring as fuck.  Some present evidence that Facebook or whatever is dying — well, if you want to cast your widest social net, what’s better than Facebook?  What will possibly be better than Facebook any time soon?  Best place for photos?  Instagram has got that locked up tight, with several derivative competitors trying to offer alternatives (Snapchat).  Social networks are entrenched.  The verdict is still out on video, private social networks, etc.  Maybe reddit is the least secure of the large social media companies.  But I guess what I’m trying to say is that if you claim you’re bored, then your only alternative is to opt-out and go offline, or maybe go underground.

Self-Censored Data

Another variation of the problem, and the main one I want to talk about, is that the types of content that we want to and are able to post lead to limited and boring outcomes, as a result of our ambivalence about personal privacy online, legal norms for data, corporate apprehension toward data liability, etc.

I took some time off working on Galapag.us after thesis presentations ended — I was handling personal matters including moving to a new place with my girlfriend, graduation from school, parents visiting, job interviews, and so on — but I’ve recently started wading back into my code again.

For Galapag.us, I created tons of categories for data for people to enter the moments that occur in their lives every day, such as memories, interactions, loves, hates, etc. Making the data entry part as accessible and as fluid as possible is key since I think anyone who’s done any quant selfing has tired of entering in what food they ate, where they checked in, etc. constantly every day.

My logic is that while physically-generated data is easier to quantify, even the results (aggregation and charting) of it are not very exciting. What good is it to know the flawed number of steps or relative activity level we achieve per day, without further context like diet, circumstances? (sitting at a desk at work, traveling in a plane, skydiving)

Qualitative Data

And so, perhaps as an alternative to that physically-generated data, what we really find meaningful over time might be when and where we had an interaction with someone else, or how our preferences change over time.  Those are the things we remember for years afterwards.

I grew up in a command line interface type world, one of BBSs and MUDs and prompts.  So I started working on an API for Galapag.us so one could access JSON responses via curl, via the web site, or via a command line on the web site (similar to github’s).  The command line on the site let me use angular.js for two-way data binding and for making a nice interface for commands to output.

I started having to think about what new data I could make reachable through the API.  I don’t have a large user dataset yet, so I was considering external APIs. APIs are bad enough these days, as the former best one (Twitter) has been jailed, and most APIs expose almost no interesting public data. It’s cool that data.gov releases a bunch of government data but to be honest 99% of that data is completely fucking boring.  The rest of it is most likely useful only to some NYTimes data scientist who will make some sexy d3 or raphael dataviz that people will cream their pants over.

Facebook, Twitter, etc. are most useful through the data exposed within their networks’ metadata — tracking how circles of friends and followers are related — but the rest of their content is fairly boring. One could say the same about the data that the NSA is collecting.

Instagram is the beneficiary of being the leader for photos, which are the king when it comes to immediate gratification, entertaining content, and pageviews/clicks/PR. The photos we take power today’s social media, now that our networks algorithmically have been around long enough that they’re reaching adolescence (I would think our networks will reach “adulthood” when most of the userbase is old enough that network graph sizes begin to shrink from old age deaths, and the social network providers begin to change their site designs to reflect that contraction in connection to the external self).

Unoffensive and Boring Data Schema

The data itself being exposed for public consumption is fucking boring. The most exciting stuff you might see (outside of, once again, awesome photos from life-changing events that people post, and those swimsuit pics of those people you just friended) are who viewed your profile on LinkedIn (imagine if you could see that on Facebook), or an occasional drunk post signalling the rare chaos added to the polite, custom-filled order of our normal social feeds.

If you need an analogy, the personal data we disclose on our social networks is the equivalent of reading some small midwestern company’s corporate site.  Our front pages (Facebook and LinkedIn) are using, I guess, some shitty flash animation interstitial.  We probably have a shitty about page that barely contains any actual timeline info.  There’s no contact info available.  Check-ins on FourSquare?  A little racier, but maybe that’s just some scantily-clad photo we posted as a camgirl.  Most of the links on our shitty sites are broken or old.  Altogether it’s just a whole shitty experience.

At the same time, we can barely accept this “free use in exchange for using your data to advertise off you” compact we have with large siren servers like Google and Facebook, and we’re scared we’ve already contributed too much data online.

But it’s all so, so boring.  Few of us have the talent and courage to share what’s most dazzling and interesting and inspiring about our personalities and deeds online.  Those who do succeed because they are fulfilling their potential and fulfilling the powerful medium of expression that the internet was supposed to give us.  The rest of us hide our personalities and flaws and desires and failures and weaknesses because that would diminish our carefully curated statures online.

Few of us have enough details online to verify our reputations or trust, show proof of temperament or sound judgment under different bad circumstances, etc.  At the very least, most of us contribute nothing yet consume a lot every day.  People are afraid Facebook and Google and the rest know too much about us, but in reality, we’ve all agreed to some sort of social norm where we conceal what’s really interesting about us and only post the most fluffy, superficial information about ourselves.  We’ve all signed up to a social norm that we must be safely boring.

Dangerous Data

What I envision one day is seeing, over time, how other people and groups of people changed their body types after they had children, or as a result of increased work hours, or seeing the patterns of their lives through the 24 hours of their days.  What I envision is seeing hard data on failed dates vs. attempted dates, aggregated opinion of participants at concerts, sexual data, tracking peoples’ young potential vs. their older outcomes.

You know.  All the data that can be embarrassing to share — the data that often defines us more than any other data.  The data that shows when we’re vulnerable, emotional, petty, impulsive, breaking our own habits and patterns.

And what if the schema, API, and backend architecture also encouraged more scandalous insight? What if the data we collected, and the representation and sharing of it, did, as Jer Thorp wrote in his article “Art and the API”, bring us closer to what we really want to express?

[The] conceptual API. A piece of software architecture intended not only to bridge but also to question. The API as a software art mechanism, intended to be consumed not only by humans, but by other pieces of software. (Promisingly, the API also offers a medium in which software artists can work entirely apart from visual esthetic.)

Burnham wrote in 1968 that ‘the significant artist strives to reduce the technical and psychical distance between [their] artistic output and the productive means of society’. In an age of Facebook, Twitter & Google, that productive means consists largely of networked software systems. The API presents a mechanism for artistic work to operate very close to, or in fact to live within these influential systems.

There’s a reason people love to read the gossip sites all day.  The stories are glitches in the matrix regarding people we know (celebrities).  When order breaks down, we get interested.  Within our digital networks, order rarely ever breaks down.  People tailor their content to fit an identity, maybe not to improve their reputation, but very rarely to degrade it, unless they sacrifice some of it to pursue an issue worth it to them, like politics or sports.

If you want to know why social networks are “boring”, it’s because we’ve censored ourselves into being safe, and boring.

Identity

If anything, this is a stark argument for virtual identities, pseudonyms, and anonymity.  They allow us to act out in ways that we can’t within our main imprisoned identities.  They allow us to interact and experiment without the shaming that could come back to our physical identities.  The inference here is also that our other identities are inherently dangerous.

To me it is not shocking that the government can collect on any of us.  One should always assume that the US keeps the blade of its sword sharpened, and if it chooses to target you, anything you have linked to you is compromised.  What is shocking is the breadth for which the government is trying to piece together disparate datapoints together.  A huge piece of that puzzle is linking random datapoints collected online back to a MAC ID on your network card, so that it knows that “Xeus” and “Ben” are the same person.  Google is trying to do the same thing to get better data on pageclicks vs. pageviews across sessions and page transitions.  This is the key data.

If you want your social networks to be more interesting, you’re going to have to give more online.  You’re going to have to play more, experiment more, fail more.  You’ll have to expand your friend networks to areas you’re not as comfortable in.

And of course you can argue: hey, who gives a shit?, it’s just an online waste of time.  But I wonder how many peoples’ lives are not actually enriched at least a tiny bit by the passive awareness granted by online networks. I actually consider it beneficial knowing almost subconsciously that distant friends and acquaintances are busy raising that newborn or are changing jobs and moving to another country (you know, the heavy lifting of our timelines) even though we haven’t talked.

I think everyone’s going to have to suck it up a bit and realize that a digital life is one worth living to the fullest. The digital life can no longer be neglected or made fun of.

One of the more recent influential articles for me was by Nathan Jurgenson, who wrote about the IRL fetish:

Every other time I go out to eat with a group, be it family, friends, or acquaintances of whatever age, conversation routinely plunges into a discussion of when it is appropriate to pull out a phone. People boast about their self-control over not checking their device, and the table usually reaches a self-congratulatory consensus that we should all just keep it in our pants. The pinnacle of such abstinence-only smartphone education is a game that is popular to talk about (though I’ve never actually seen it played) wherein the first person at the dinner table to pull out their device has to pay the tab. Everyone usually agrees this is awesome.

Completely fetishized.  The reality:

Facebook doesn’t curtail the offline but depends on it. What is most crucial to our time spent logged on is what happened when logged off; it is the fuel that runs the engine of social media. The photos posted, the opinions expressed, the check-ins that fill our streams are often anchored by what happens when disconnected and logged-off. The Web has everything to do with reality; it comprises real people with real bodies, histories, and politics. It is the fetish objects of the offline and the disconnected that are not real.

Publicy vs. Privacy

The power of the people is publicy whereas the power of siren servers, cartels, etc. stems from privacy.  I would argue that we’re fighting a losing battle if we try to pursue even more privacy, government data retention laws, and oversight into surveillance.  We should still pursue strict controls on authorized surveillance as a matter of course, as it’s the only way to solidify gains legally, but the underlying strategy should be more openness, more sharing, more creation of public alibis to verify our reputations and livelihoods.  By withholding information from others, we give those who can still get that information power, since they then have access to data others don’t.  By sharing information, we not only take it out of play in the interconnected data market, we free that data for use in silly experimental games, behavioral economics studies, and so on.

I feel as though the conservatives have been particularly absent from the NSA story, probably because they are conflicted: on one hand, whistleblowing is a fine line between treason and heroism, whereas Big Brother and mysterious government agency behavior is a mainstay of the skeptical conservative.  The liberals on the other hand have gone full-retard.  Their shock that an agency tasked with collecting and analyzing information might try to game the internet is just downright laughable, particularly after almost a decade of encroachment into our communications networks painstakingly whistleblown by brave but mostly unheard individuals.  The liberals are also in disbelief that Obama could do this (!) and have begun equating what “he” has done with the horrors under Bush and Cheney.  It’s like some sort of retarded amnesia.  The final absurdity is that there has been no even half-constructed policy suggestion from the liberals on how to deal with maintaining intelligence superiority through surveillance versus maintaining first amendment freedoms in an interconnected hyperglobalized hybrid digital-actual world.  The NSA of course has blown almost every opportunity to win by just laying out an honest case for the nation requiring such systems in order to maintain superiority in foreign affairs.  I assume it squanders this position because it knows it really doesn’t have to do anything except keep its head down until this passes (like gun control, Gitmo, and a litany of other liberal causes abandoned when the next fauxtrage comes about).  You know, at least the Tea Party advocates turned out for rallies.  Digital liberals will just mock Occupy and Anonymous and Like Kony 2012 and anti-NSA causes on Facebook, slacktivism at its finest.

There’s absolutely no informed debate about this issue at all, yet it permeates every damn site right now.  So frustrating.  I would maintain that you can have 3 legitimate stances on it: 1) you don’t care, 2) you delete all your social data online and encrypt all your email along with friends who agree to it, or 3) you try to see the issue as a balance between national security, technological advancement, and public freedoms.  I choose #3 as a matter of pragmatism.  But I respect those who choose #1 and #2 as well.  I also allow for the criticism of being more open, which Jaron Lanier partially explains:

Metadata has proven to be a tool for certain kinds of behavioral change. Facebook can use metadata to find people who are more likely to agree to share information with each other, because they share history with each other anyway. This, in turn, increases the amount of metadata available to the algorithms. Once enough people are signed up, a new sphere of social mores is created and even more information is shared. … Young people, weaned on free Internet services that spy on them, seem to have accepted an America in which their financial prospects are reduced, and in which no one should expect “privacy.” The acquiescence of our young people is historically exceptional and bizarre. In the metadata age, privacy needs a new definition, and it might be “freedom from being profiled.” Or “equity with those who use the biggest computers.”

So in short: I wish there were more people clamoring for more openness, more transparency, starting with our own personal data.  If agencies and corporations draw power from controlling the distribution of our data, then we need to dump it out there into the public domain.  Aren’t open sourcing, transparency, openness, public domain the things digital liberals and other civil libertarian groups always say they want?

Well, as my final point, I would argue that those values are not really what they want.  They want everyone else to share more, but they won’t do it themselves.  Other people can fight the war, they’ll stay home and watch the Daily Show “destroy” some FOXNews pundit.  Other people can put the leg work in, they’ll make sure to catch that sweet rooftop party tonight.  Other people can dirty their hands with campaigning and fighting for causes, they’ll just photograph it to feel like they’re a part of it.  No associations, no taking a stand.  Just criticizing, critiquing, “doing no harm”.  Useless.

Tech Fetishism

At the same time, the obsession over drones, NSA surveillance, and other aspects of the “military-industrial complex” borders on tech-fetishism.  Behold the awesomeness of that drone turning that pickup truck into glowing-white heat signatures.  Think of the sexiness of that NSA terminal poring a search query through petabytes of data!  Are you getting a boner yet?  It plays into every Ayn Rand teen’s wet dream about how insidious and dangerous the government is, yet it’s ignorant of the reality of today’s world, where columns of tanks and infantry are so rarely seen, but code — and data — runs 24 hours a day, every day.  The thing about that is, tanks and infantry always cause destruction — they were built to destroy — whereas code can be good or bad, depending on the policy and the actors behind it.  Anti-NSA tech-fetishists would have the code and tech destroyed, while in awe of it, but a more sensible approach would be for a citizenry to push a responsible use of that tech through Congress and POTUS: acknowledge the necessity of it, yet create sound policy to govern the use of it.

And a nation won’t use it as much if the nation’s priorities don’t require so much of it.  Right now under a paranoid post 9/11 security apparatus (worldwide and even in the holier-than-thou Europe, I might add, and not just under Nobama’s America), the threat vector includes just about any potential self-radicalizing self-pitying dumbass who read a pamphlet about how x or y is oppressing z.  So you take away the siloed cartel control of distribution of our data, establish reputations and publicize them, and you take away much of the potential for abuse by over-zealous states who either through blunder or through antipathy go after non-targets and then claim confidentiality and parallel construction (a technique as old as the hills by any type of law enforcement, I might add) as a defense.

I don’t know where the fuck this post is ending :) so I’ll wrap it up here but right now there’s some sort of weird disconnect between the reality of a world I thought we all witnessed in the last decade or so and the Sesame Street world that the old Tea Partiers, anti-NSA libertarianers, and uninformed liberals are living in.

And so it will continue.  Sigh.

Opening Up Galapag.us for Alpha

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

[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

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:

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

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:

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.

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

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:

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)

[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

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

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?