Josh Haas's Web Log

Archive for the ‘Uncategorized’ Category

Collapsing the Wave Function

with one comment

To celebrate breaking-the-speed-of-light day, here’s my own crazy physics theory. This is definitely in the space of spaced-out 3 am thoughts, and actually proving or disproving it would be pretty hard as far as I can tell. But it also has a recurring plausibility and consistency to me such that I can’t quite get it out of my head. So here goes….

Background

I’m going to assume you more-or-less know what quantum mechanics and general relativity are. Basically, they are two competing sets of mathematical equations for describing how the world behaves. They both make mathematical predictions about what things will do, and in practice, the predictions made by quantum mechanics prove highly accurate at subatomic scales and the predictions made by general relativity prove highly accurate at human and cosmic scales.

The two theories are incompatible. The predictions made by general relativity are different than the predictions made by quantum mechanics. Somewhere in between the scale of tiny subatomic particles and things that we can see, the world stops working like quantum mechanics predicts and instead starts working like general relativity.

One of the holy grails of physics is a “grand unified theory”, a new mathematical model that predicts both microscopic and macroscopic behavior. Presumably, it would look like a system of equations that, when you input tiny values, simplify to look like the equations of quantum mechanics, and when you input large values, simplify to look like the equations of general relativity. It would explain where and why the cutoff between the two are. At this point although there’s been work done in this direction, like string theory research, no one has really figured it out.

Quantum mechanics describes the world in terms of probability waves. Rather than describing the trajectory of a particle, it describes the field of probable trajectories. The crazy thing about QM is that it predicts — and experiments observe — that particles actually interact with each other as if they were waves: a single particle, which common sense tells us is only at one place at one time, “collides” with a single other particle to form result-patterns that look like waves of particles were colliding and bouncing off each other. They form ripples. Read up on the double-slit experiment if this isn’t making sense (which it really doesn’t, unless you think very strangely).

When we look at how objects interact with each other, we see discrete objects, not waves of probabilities: we see a chair in one place, not a diffusion of possible places the chair could be. Under the Copenhagen interpretation of quantum mechanics, the most mainstream interpretation, at some point the quantum probability function “collapses” into one possible state. (In other interpretations, instead of the world collapsing into one state, the world splits into multiple possibilities each one corresponding to a different one, and our consciousness, for whatever reason, ends up in one of those possible worlds).

The Copenhagen interpretation explains that the collapse occurs when a system is “measured”. The confusing thing is that no one really knows what that means. There isn’t a precise scientific definition of measurement. Some people think that it’s a scale thing: when a system gets sufficiently large, it collapses. Other people speculate that it is human consciousness that causes the collapse, which is puzzling because “consciousness” isn’t a physics-term in any strictly defined way.

In quantum theory, when two particle waves interact, their probability waves become “entangled”. What this means is that you can’t describe the probable state of one particle without describing the probable state of the other. When you measure the state of one of them, you can accurately predict subsequent measurements of the other. It’s as though there becomes only one version of reality between the two particles: it’s not flipping two coins to decide how they will collapse, it’s only flipping one coin. Entanglement spreads virally: as more and more particles interact with each other, they all become entangled, their probability waves caught up in each other. This continues endlessly until there is a measurement and a collapse.

Because entangled particles assume a definite state consistent with one another, it is very hard to experimentally determine when measurement occurs. Hypothetically, the entire world could exist as a set of entangled probabilities right up until the point that it’s observed by you, yourself: you have no way of telling whether or not the collapse occurs at the point that you see things or at some prior point.

So what we have is this really weird situation, where we have two descriptions of the way the universe works, the description of quantum mechanics and the description that we see all around us. They both allow accurate predictions in different circumstances, and at some point one transitions into the other. But when, and how, and why are all unknown. How does “measuring” something cause collapse? Is consciousness involved? It’s a really weird mystery.

My Hypothesis

Imagine a situation where you have a particles bouncing off of each other in a loop. Particle A hits particle B, which hits C, then D, then back to A again. (There are magnetic walls or something that keeps them moving in a circle). Each iteration around the circle, they create a slightly different pattern with their movements, the output of particle D becoming the input of particle A and so on in a feedback loop.

This is a closed system without measurement, so each of our particles are behaving as waves rather than as discrete points. As the particles interact in a loop, the interaction between their probability waves becomes increasingly complex because the probable location of D feeds into the new probable location of A, each time adding onto itself.

Imagine that we set up this circle in such a way (we might need more than four particles, and lots of magnetic fields, but let’s hypothesize that this is possible) such that each time through the feedback loop, the space of possible positions of each particle shrinks. As there are more and more iterations around the feedback loop, we become increasingly certain of each particle’s location. For analogy, when you have a chunk of uranium, you don’t know what percentage of its atoms will have decayed at any given point in time, but as time approaches infinity, the amount approaches 100%. Likewise, you won’t ever know where any of the particles are, but as iterations around the circle approaches infinity, our uncertainty over their locations approaches zero.

In this little system we’ve imagined, the wave function never “collapses”, per se, but the system increasingly behaves like the particles are actually particles instead of waves.

Speculation 1 is that a system such as this is possible. To test this speculation we’d either need to design a system that we can mathematically prove behaves like this, or prove that given what we know about physics no such system is possible.

Speculation 2 is that such a system might be capable of computation. In other words, by arranging the particles in certain ways, you can have them interact such that they end up in an arrangement that represents a solution to a computable function. Per the Church-Turing thesis, all computing systems are essentially equivalent: any programmable system capable of computing a certain basic set of things is capable of computing anything that can be computed. Something is known as “Turing equivalent” if it can compute the same set of things that a Turing machine can; desktop computers, for instance, are Turing equivalent. Stephen Wolfram demonstrated that you can build Turing equivalent systems out of very simple sets of interacting things: he’s famous for “rule 110” which is a very simple simulation of “cellular automata” that give rise to highly complex patterns capable of doing computations.

Likewise, our particles are simple, but interact in ways that could possibly lead to computation. One of the major requirements for building a Turing-equivalent system is there is some kind of feedback loop. So, our particles spinning around in a circle and bouncing off each other could quite possibly be a Turing machine. To test this speculation we would need to revisit our proof of speculation 1 and see if we can construct a system that both satisfies it and gives rise to computation.

Speculation 3 is that the human mind is a Turing machine doing an indefinitely long calculation (taking in input and spitting out output along the way), and that consciousness is the result of a feedback loop going in on itself over and over again. This is in line with what we know about how the brain works: our neurons interact with each other electrically, and there are feedback loops between them, creating a cycle of perpetual feedback. This is how humans give rise to truly unpredictable behavior. Turing proved that the only way to always figure out, for any given Turing machine, what it will output, is to actually run the calculation (so if the calculation never ends, you’ll never know it is not going to end). For an indefinitely long calculation, the output becomes indefinitely unpredictable; to figure out what a person is going to do 100% reliably you actually have to reconstruct their brain.

Speculation 4 is that any feedback system capable of consciousness — able to form representations about itself and communicate about itself — has the characteristics of a system described by speculation 1: as the degree of feedback approaches infinity, the space of quantum probabilities of the state of the system approach a single possibility. This speculation, I imagine, would be extremely hard to test, unfortunately: this is really where my theory becomes a leap of faith. Below I’ll explain why I think it is a speculation worth entertaining.

When you put these four speculations together, what you get is this hypothesis: quantum mechanics is an accurate description of the way the world works, both on a micro and a macro scale. There is no such thing as wave function “collapse”. The entire universe is entangled with itself, and all there is are possible states of things. However, the existence of consciousness in the universe creates a feedback loop that causes a mathematical convergence of the field of possibilities. From our vantage points as conscious beings, we see a unified view of reality because the nature of our minds is such that the act of being aware (which I view as a highly rapid feedback loop, our mind’s engines spinning at thousands of RPMs per second), creates a convergence on one particular state. We never achieve perfect convergence, because we don’t self-reflect infinitely fast. However, we can get arbitrarily close to convergence. Moreover, the harder we look, the more aware we are, the greater the degree of convergence. So even though it never converges, we never catch it out as not converging, because it’s always just-converged-enough.

The appeal of this theory for me is in Occam’s razor. Although it is a little out there, I find it to be a really elegant explanation for the relationship between our minds and the universe. I have a hard time believing that there isn’t some connection between quantum mechanical collapse and human consciousness. It just seems so arbitrary that at a certain scale, all of a sudden things start acting like objects instead of probabilities. Moreover, consciousness seems like a fundamental component in any explanation of reality, because everything physics describes we know about only because we are there to witness it as a concious observer. However, on the flip side, consciousness seems to be a physical phenomenon: our brains obey the laws of physics as far as we can tell, and our minds seem to work on computational principles. And it doesn’t seem to be an all-or-nothing phenomenon: we can become increasingly conscious as we wake from sleep, for instance, and as we transition from embroyee to baby to adult. So this thing, human consciousness, is central to everything we know about the physical world, is the only reason that we think things actually exist as definites rather than as probabilities, and yet from a physical point of view it’s not “special”, it’s just another physical phenomenon.

So, it would be cool to explain how this organic, piecemeal phenomenon we call consciousness could possibly have the “measurement” / “collapse” effect that we see when we observe quantum systems. My theory provides a (somewhat, probably really hard to do in practice) testable hypothesis for one way this could work. Moreoever, it provides a precise definition of consciousness: a conscious system is one that creates a convergence of its probability wave as it continues to observe and reflect on itself. Whether or not this definition of consciousness corresponds precisely with our everyday definition is the open question. It’s a big leap, but so far I haven’t heard anything more plausible.

Written by jphaas

September 24th, 2011 at 9:43 pm

Posted in Uncategorized

Modest Proposal

with 3 comments

Warren Buffet recently published an op-ed arguing for higher tax rates on the ultra-rich, on the grounds that many of them pay effectively lower rates than the average American and that they’d be happy to do their part to help our country.

I think the sentiment is right but the approach is all wrong.

No one likes being told to pay more money. It’s a basic fact of human nature that people resist coercion. But what will lead to tax evasion when taken by force will often be willingly granted with the right kind of appeal.

Instead of making paying taxes an obligation, make them a competition. How much are you doing to support the federal government? How much is your neighbor doing? Let people opt-in to making their total contribution public, and give them the option to pay more than the legal minimum, then put up a nice website with a leaderboard, build a facebook app to let you put a badge in your profile, and let human nature take care of the rest.

If you haven’t visited Kickstarter, it’s a dramatic demonstration of the effectiveness of combining the traditional patronage model for the arts with a web 2.0 interface, moving the power to support artistic projects away from the wealthy few and into the hands of the people. Taxing the rich will help solve the national debt problem; getting everyone to chip in to the amount they are able will knock it out of the park.

Kickstarter succeeds because it recognizes that people want something in it for them. When you donate to a Kickstarter project, you have the satisfaction of helping bring a new thing into the world, but in addition to that, succesful project creators offer their donors various project-related perks based on the amount of their contribution. Likewise, contributing to the U.S. Treasury, you get the satisfaction of knowing that you are helping keep the roads paved, our borders safe, and the national debt paid off, but I also think it wouldn’t hurt for the government to offer personalized incentives as well. Here’s some suggestions:

Paying annual tax of:
$1 – Your name gets put on an acknowledgments list that can be obtained by filing a FOIA request
$5,000 – Invitation to an annual taxpayer’s ball, hosted in major cities across the country on Apr. 15. Open bar.
$10,000 – One “get out of jail free” card good for one municipal traffic violation
$20,000 – Free access for a year to every national monument, park, and museum in the country
$40,000 – Limited-edition gold-plated U.S. Treasury pen
$200,000 – Two-night stay in the Lincoln Bedroom
$400,000 – One “get out of jail free” card good for one misdemeanor or minor felony
$1,000,000 – Catered luncheon in the Capitol for you, two guests, and two senators of your choice
$2,000,000 – U.S. military will rescue you if you get trapped in a 3rd world country
$10,000,000 – Your face goes on the penny

Side-note: Although this isn’t heavily promoted right now, you can actually donate to help pay off the national debt today! Pay here via credit card or direct transfer from your checking account. My big question with this form, though: are donations tax-deductible?

Written by jphaas

August 28th, 2011 at 11:18 pm

Posted in Uncategorized

Assumptions

without comments

This is a follow on to my last post.

excerpt from Scott Pilgrim, Vol. 4We all believe a lot of stuff. Most of those beliefs, I think, are basically bullshit; things we’ve been told, things we’ve assumed, stuff we take for granted.

I’m going to assume you’ve either watched or heard of The Matrix — yes? The movie’s point (spoiler alert!) is that our entire reality could be a lie, and we would never know it. Descartes, who also worried about this, once said “I think, therefore I am”, arguing that at the very least, we know that we exist. Even that, though, has been called into question; sources as disparate as scientists, spiritualists, and postmodern philosophers all argue that even our sense of self is an illusion: just a story that our minds tell ourselves to try to fit life into some kind of coherent narrative.

I’m not going to rehash the whole debate, but basically I think that that’s right. All we really get from the universe is a flow of raw experience, billions of discrete sensory impressions. Our minds form stories out of those experiences to serve as organizing principles and filters. We have ourselves as the protagonists, and things around us become obstacles and opportunities, major and minor plot points. This storytelling is necessary, because without stories to filter our reality, we would have no way of prioritizing the infinitude of things we could observe at any given moment. We wouldn’t be able to tie our shoes or brush our teeth because we’d be too busy tracing the seams in the wood of our kitchen table. We would all starve.

So this is good, and our minds have evolved for millions of years to become adept at filtering out essential from inessential. However, on the flip side, every time we form a story about the world, we limit our ability to perceive things that don’t fit into it. Abstract concepts like “you” and “me”, “good” and “bad”, “science”, “society”, and all the rest explain a lot of what we see around us, but only in approximation. The real world is messy, and when our minds clean up the mess to keep things simple, we throw out a lot of baby with the bathwater.

At the end of the day it’s raw experience, not ideas, that make being alive a joy. It is the pattern of the grains in the table, or the shape of a smile on a friend’s face, or that queasy feeling where you can’t tell if you’re happy or afraid that makes the whole thing worth it. You can’t nourish yourself on concepts. I’m guessing a smaller but still large percentage of you have watched American Beauty. That’s that movies’ point. We get so lost in our stories that we can’t find the real world that’s right in front of our face.

If I were to sum up psychological maturity in one sentence, it would be the ability to choose from either perspective at will and need: both the raw experiential and the abstract conceptual. Most people I know can’t do this, not reliably. There is a desperately strong tendency to get attached to our concepts. We form our entire identities around a story of ourselves: the outsider, the loner, the smart one, the Christian, the Jew, the put-upon daughter, old reliable, the yuppie, successful, a little dorky, going to accomplish great things some day, deserving, a little wild but basically a good person. We live in a world of Republicans and Democrats, big government vs big business, middle class values and order vs chaos. Threats to those stories threaten our entire reality: they undermine our sense of control, the very structure of our lives. I’ve been through the trauma of losing faith in concepts I believed in, and it is completely destructuring. And I know that ahead of me is only more disruption, things I’m attached to that I don’t even see yet that someday will break for me if I don’t choose to keep my head in the sand. Perfect freedom from one’s concepts is only an ideal; in practice, there are only varying degrees of attachment.

The fact is, concepts — human thoughts — are not high-bandwidth enough to capture reality. They are approximations and generally poor approximations at that; the real world is infinitely more complex than our minds can fathom. So a healthy mind is constantly forming and releasing concepts, evolving them as new experiences break them down and build them up again. Like an artist sketching and re-sketching his drawing, we’ll never achieve perfect fidelity, but after years of practice we might come up with something more or less recognizable. And in the process, there’s spaces for psychological freedom and joy.

I want to emphasize that both the creation and the destruction are important. Traditional counterculture, presumably reacting to the seriousness with which most people take their perceived reality, tends to emphasize breaking down concepts. This is a theme running from the “turn on tune in drop out” hippies to the death-of-the-author postmodernists to the meditation and yoga crowd. Although it may be true that a state of pure awareness, just experiencing life without feeling the need to construct a story at all, may be the most joyful, “present” state of being available, the fact is that we are also biological beings that need to take action in order to survive and reproduce, which requires some amount of planning and structure.

Creativity, in fact, may be the process of going back and forth between the conceptual and experiential; escaping from your old concepts, but then creating new ones, only to repeat the cycle, building off previous iterations along the way. When a new concept hits the scene, for example “military-industrial complex”, it opens up the ability to perceive the world in ways that were previously impossible, opening the space of potential actions. But when people are still critiquing the military-industrial complex fifty years later, it becomes an anchor, locking down a certain way of perceiving the world that isn’t fluid with reality. A good test of whether something is true or not: if it’s really true, and you say it, it becomes not true any more.

Anyway, to put it succinctly: our minds make stuff up. That’s what minds do. That’s what they’re for. That doesn’t mean the stuff they make up is right or accurate, even though 99% of the time we believe it. So when we look at the basic facts we have to take for granted, the things that any software we want to write for the human mind has to start from, my perspective is that the list is very short. What we know, what we really know, is pretty much absolutely nothing.

This changes the game: it means that family tradition, religion, culture, science, everything we think we know about the world is up for grabs. In fact, that’s really what the scientific method is all about. Believing in science doesn’t mean believing in a body of knowledge such as Einstein’s laws or evolution or geology, it means taking a “show me” approach to reality. It means taking the things you believe and asking “how can I prove myself wrong?” And if you fail, then saying “Okay, I couldn’t prove myself wrong today; I’ll keep on assuming it for now, and maybe I’ll be cleverer tomorrow.”

So there we are. We’re at a bit of a crisis point as a culture with this realization. Over the last century we’ve broken pretty much everything down. But we still cling onto a lot of empty beliefs we don’t really hold with, because we haven’t learned how to live with uncertainty. We’re still a little afraid to let go. But I think we’re starting to learn, and what I want to do in the following posts is to build some tools that work in a world where we don’t take our concepts too seriously.

Next: Ontology and Epistemology, yay!

Similar ideas, more articulate:
Meditations on Violence by Rory Miller
Radical Honesty by Brad Blanton
The Book of Not Knowing by Peter Rawlston
The Power of Now by Eckhart Tolle

Written by jphaas

July 31st, 2011 at 7:16 pm

Posted in Uncategorized

My generic job (or anything else) application

without comments

I’m always interested in great ways of finding great people. Most interesting problems in life come down to talent acquisition at some level or another. Here’s a random late-night thought on a potentially good way to do it. I haven’t tested this in practice, so if you want to give it a go, please report back the results! The idea is that this would be a written pre-screen… in-person discussion is obviously the most important element, but generally some kind of pre-screening is necessary. Okay:

“Applications suck. They almost always involve a careful series of half-truths (if you’re honest; outright lies if you’re not) designed to put a positive spin on who you are. From my vantage point, I’m actually very uninterested in hearing a positive spin. Although the quality of the spin job you are able to do does tell me certain things about your writing ability and resourcefulness, it really doesn’t have all that much to do with the qualities needed to build a long-term relationship that works out well for both of us. The fact of the matter is, most people have excellent qualities and are also total disasters, and ability to hide how much of a total disaster you actually are is not very correlated with long-term success. So rather than hearing spin, I would much rather have genuine communication, and genuine communication is predicated on honesty and vulnerability.

It would be a very sadistic thing to ask you to write an unbiased, strictly accurate assessment of your strengths and weaknesses. There is no such thing as unbiased and accurate; even a third party observer would have a hard time doing that. What would end up happening is a careful process of calculating exactly how honest you can be without ruining your chances of getting the opportunity, which would be like a standard application but even more vile because of the inherent hypocrisy. So rather than asking that, let’s use hyperbole to make this whole thing easier. Please answer the following two questions: a) convince me, using honest expression of your experiences, that you are a complete, total disaster and absolutely worthless; b) convince me, likewise, that you are basically God’s gift to mankind and the greatest thing not only since sliced bread but since the notion of slicing things itself. Scoring is very simple: to get this opportunity, both essays need to be convincing: ie, I want someone with both the highest highs and the lowest lows, not someone in the middle.

In return, you can grill me when we meet in person about all the reasons this is the worst opportunity ever (and all the reasons that it is the best). Thanks — please don’t spend too much time on this, have a life instead!”

Written by jphaas

July 9th, 2011 at 6:49 am

Posted in Uncategorized

Success is simple

without comments

I previously wrote about how I think the most important challenge right now is figuring out how to scale the process of people living up to their potential. Why do some people go on to change the world, and others go on to jobs that inspire shows like The Office? The more people we can tip towards living inspiring, full lives where they bring light into the world, the better off we are going to be as a species.

So the first thing we need to do is develop a theory of success. Here’s my working hypothesis: success is very, very simple. The biggest obstacle to success, I think, is making it more complicated than it needs to be. Here’s what success looks like:

  1. Be totally honest with yourself about what you really want. If you don’t know what you want, take a wild-ass guess and go with the best answer you can come up with.
     
  2. Logically think through what needs to happen to achieve your goal, and then figure out the most immediate, direct step that you can take right this minute towards achieving it. If you don’t know what the next step forward is, the next step forward is asking someone who does know. If you don’t know anyone who knows, the next step forward is asking someone who might know someone who might know. And so on.
     
  3. Take the step.
     
  4. Go back to 1 and repeat.
     

I really think that’s all there is. Human beings are goal-achievement machines; we are built by billions of years of evolution to be good at it. If we just point ourselves in the right direction, and keep moving forward, then naturally along the way we’ll figure out what it takes to get there. It’s the north star method of navigation: even if you know nothing about geography, seafaring, or transport, if you just keep on following the north star, you’ll eventually find the top of the world.

So if it’s that dead simple, why is it that only a small percentage of humans live a life of wild, overwhelming success? The problem is, this process, especially steps 1 and 3, can be very scary. Fear by itself is not a problem: if you know you’re afraid of something, you can still force yourself to do it anyway, and there’s nothing like taking action to dispel fear. But fear tends to hide itself in rationalization, and that’s another thing people are very good at: making up a million reasons why things are more complicated than they actually are. The vast, overwhelming majority of human behavior is sideways motion: stuff that feels like taking action, that feels somewhat related to the goal, but is really just scuttling around in a circle. If you look at any large institution, such as a Fortune 500 company, or Congress, probably 99% of the activity that occurs is sideways, and only 1% is the forward motion that keeps the company’s stock price from plummeting and the union from dissolving. And as we see every time a company goes bankrupt, sometimes that 1% isn’t enough.

One very common thing I succumb to a lot, that I’m trying to train myself out of, is the trap of listening to good ideas. Every time someone successfully takes a step forward, a good idea enters the world. But just because that idea helped that person take a step, it doesn’t mean it will help you take a step. For instance, there’s a lot of great entrepreneurship blogs with tons of advice on how to build a great tech startup. I enjoy reading them, but they are all a distraction from actually moving forward my own company — “entreporn” is the clever name for it. Good ideas are wholesome-sounding, constructive behaviors — maybe I should develop a social media strategy! — that aren’t critical path at this moment for achieving your goals. Chasing after good ideas is fun, and a nice distraction from the scary stuff that success actually entails.

Anyway, there are a million other varieties of rationalization; I bring that one up in particular because it resonates with me personally. But I’m sure everyone can come up with their own. Luckily, at some level, you always know when you are listening to rationalization vs when you are following the north star. You have to train yourself to listen to this knowledge, but once you get the knack of it it is infallible: are you scared and intimidated by the course of action you are considering? If so, you are on track; if not, please try again.

So the process of achieving success is simple. However, it isn’t easy, and it is very easy to lose sight of it and wander off course. So I’m interested in solutions for helping people stay on their trajectory. I think the biggest thing is having other people hold you honest. It is much easier to see when someone else is lying to himself about what he really wants, or taking a roundabout path when there’s a more direct one staring him in the face, than it is to see it in yourself. So what I want to do is figure out a way of making the process of watching each other’s backs scalable; can we build communities that have built-in processes for keeping people on track? Would you want to be a part of such a group?

Written by jphaas

June 27th, 2011 at 12:02 am

Posted in Uncategorized

Relatives, absolutes, and changing the world

without comments

At my last job, part of the company folklore was a story called “the frog and the boiling water.” Although I believe this is biologically untrue, the tale is that if you toss a frog into a pot of boiling water, the frog will jump out to preserve its life, but if you raise the temperature of the water gradually, the frog, complacent, won’t notice until it is too late, and will boil to death.

Frog in boiling waterPeople have a hard time comprehending absolutes. It is much easier to judge in terms of “better” or “worse” than “good” or “bad”. Give me a terrible bottle of wine and follow it up with a bad one and I’ll praise the second one. The effect is muted in day-to-day life, because we can more-or-less easily think back to the last good bottle of wine, so it becomes a matter of degrees, but as we leave the grounds of our own experience, the distortion can become profound.

Consider the difference between your life and the life of someone born starving in Africa (if you’re reading this as someone who’s fought their way out of poverty in Africa, pick a different hypothetical of your choice). Compared to that, most of the difference people spend time and energy on — the size of our apartment, the number of blemishes on the face of our significant other, whether or not the cool sneakers are on sale — are as significant as whether you can taste the hint of oak in a bottle of two buck chuck.

Okay, but we (the majority of my readership, I’d guess…) aren’t fighting day-to-day for their survival, so while this is an interesting thought experiment, especially if it turns out those sneakers are in fact not on sale, who cares whether or not the majority of our concerns are trivial in the grand scheme? They may be small things, but at least they’re our small things.

Flip the scenario around, though. What if there were people to whom our lives are like those of third world children born with AIDS? Who can only look at us with mute incomprehension, almost too distant to actually pity us?

Let me suggest that that isn’t so terribly far-fetched. Put the employees of Dunder Mifflin in the same room as a bunch of Nobel-prize winning scientists, peace activists, political leaders, Olympic athletes, or world-traveling poets, and the conversational comprehension gap would very much be along the lines of wondering what to say to “hey, Jim was able to find some muddy water this morning by digging next to the latrine with a stick.” Good for him? I’m sorry?

Most of the people reading this are probably somewhere in between the existence of the drones on The Office and world-changing leaders at the height of their abilities. I don’t slave away 40 hours a week at a meaningless, tedious job, subject of a petty dictator boss, with nothing ahead of me other than eventual retirement after my best years are over (a dream, pathetic as it is, that is becoming increasingly unrealistic in the current economic conditions), but neither am I fully living up to the potential that I can imagine for myself. Everyone has a shadow self, consisting of unrealized dreams and ambitions; people approach that self in varying degrees, and I think it is a rare person who fully closes the gap, who no longer fantasizes a future for themselves because they are already living it.

What is the difference between someone who starves to death in a third world country and someone who succesfully emigrates or rises to a degree of local prominence and security? What is the difference between someone who dies in a shitty retirement home after a career of paper-pushing, and someone who lives a life that’s remembered for a hundred or a thousand years after they’ve passed? Is it inborn genetic ability? Pure luck and circumstances? Divine intervention?

The truth is that it’s probably a little of everything, and varies from person to person. But in the absence of sheer ill-luck, I think mostly it’s a matter of individual behaviors and beliefs: things like perserverence, hope, and wisdom. Innate genetic abilities such as raw strength, intelligence, artistic ability, etc., do make some difference, I’m sure, and in zero-sum games — such as who wins the Olympic gold medal for sprinting — they may be strictly necessary, but I think people overestimate their importance, most especially in the non-zero-sum games which are far more prevalent. Even athletics, which would seem to be at the far end of the abilities vs behaviors spectrum, is very much a mental game. Consider the career of the 5’3″ basketball player Mugsy Bogues, remembered as one of the greats: who would predict that someone two feet shorter than his peers would predominate in a game that depends on height?

The interesting thing about behaviors and beliefs is that they can be changed. Putting aside the question of its initial origin, it’s clear that the character people are born with is not necessarily — though often is — the same as what they die with. Probably only a very small percentage of people ever move the needle on their character enough to dramatically change their life outcomes. But its the small percentage that interests me, because if it is possible, then it is repeatable.

Imagine a world where instead of 1% of people fully living up to their human potential, 99% of people do. What would that look like? How would things be different?

A lot of what exists today would fall apart. Many of our institutions and economic engines are premised on a supply of people willing to be cogs in a machine. If the change happened overnight, there would probably be chaos. But if it happened more gradually, I think we would adapt, and build a world that’s almost unimaginable by the standards of the current one. Problems that seem completely intractable today would disappear. Healthcare reform, for instance, looks very different in a world where the majority of people aren’t sitting around the TV and eating themselves to death to take their mind off the fact that their lives are miserable compared to their hopes. If you replace old problems, new ones arise, of course — I doubt this would be some kind of utopia — but it might look like utopia from the perspective of people like us who are trapped in this third world country called America.

This is not just wishful thinking. The problem of raising the percentage of people who live up to their full potential is just that, a problem: no more ambitious than other problems we’ve solved in the past such as putting a man on the moon. Time travel Back to the Future-style may be impossible; we know for a fact that people can change their own characters because people have already done it. The only open question is how best to scale that process.

There have been past attempts to change the nature of human beings, and they’ve generally ended badly: eugenics and Communism are the two main ones. Their proponents tried to impose a vision of what humans should be like in a top-down, coercive manner, based on ideological preconceptions about reality. This of course is a recipe for disaster. The main characteristic of someone living up to their potential is freedom: any attempt to mandate or set norms for good behavior is inherently working in the opposite direction of humanity at its best, and the enforcement of said norms via violence creates an environment of fear that is completely antithetical to the stated goals of the project. Any succesful attempt would have to happen in a bottom-up way: offering the technology of change as a choice, and winning adherents by virtue of the superior results it yields. Likewise, an empirical attitude must be taken to the technology itself or else it will be no more than ineffective dogma.

Albert Einstein once said “We can’t solve problems by using the same kind of thinking we used when we created them.” The advances of the last century have largely been in terms of what people can accomplish at a material level. What we need today are advances in how people use that which we’ve accomplished. I see this as the biggest open challenge for humanity right now, and personally, my goal is to move this from dream to reality. Wanna help out?

Written by jphaas

June 26th, 2011 at 5:55 pm

Posted in Uncategorized

An Innovation Social Network

with 3 comments

I use LinkedIn, Facebook, Twitter (and occasionally Fourquare although not very regularly) to communicate with and stay in touch with people. However, even between all three services, I still feel like I’m missing something. The original concept behind Facebook, back when it was TheFacebook, was that it was a “directory of people.” Meet a cute girl at a party? Look her up. Want to see who’s who in Kirkland House? Check it out. In college, this really was the perfect tool — my universe, for the most part, was my fellow students, and therefore Facebook, with its circle-of-trust delineated by .edu addresses, and in-network browseability, captured the notion of directory perfectly.

Now that I’m out of college, however, the need for a directory of people is even more important to me, but Facebook has the wrong feature set. My primary question in socializing right now is “Who is doing interesting, world-changing things?” I want to meet them, be their friends, exchange ideas, do my part to help out.

I don’t feel like any existing tool is useful for this, because they are all network-bound. Facebook spread rapidly because of the “friend” feature, but the reason it was useful was because of “browse” and “search”: because on campus, everyone trusted each other enough to share their profiles, the previously-opaque universe of who’s who suddenly became transparent. However, beyond the confines of campus, the level of trust isn’t there, and the sheer size requires much better tools for sorting relevant-from-irrelevant people.

The fact of the matter is, I am never going to have enough Twitter / LinkedIn / Facebook friends to put me one-degree-of-seperation away from all the interesting people out there. It’s nice to be able to map out and explore my network, but what is really interesting is who is not in my network. If I read my twitter feed, the message it sends is that the people busy changing the world are the ones who are building consumer-facing web applications, largely in New York City, because that’s who I know and follow. Moreover, because networks tend to be self-reinforcing, a lot of people on my twitter list probably think this is where all the action is. But I know that this is bullshit: there are many other clusters of innovation, some artistic, some entrepreneurial, some philosophic, some political, most of which I’m not plugged into at all.

This is the feature set I want in an application. Feel free to build it. If not, then maybe in a couple years when my current projects are wrapped up, I will, who knows.

  1. Complete transparency. The goal is people-discovery, not staying in touch. Let people know from day 1 that everything on here is public, and if you have something private you want to share, use a different medium.
     
  2. Organization by ambition. I’m interested in ambitious people, in general. Different people are ambitious about different things. The guy who thinks he’s going to revolutionize web comics and the guy who is sequencing the human genome both have daydreams, and I want to know about both of them, and to be able to sort and filter based on that. This is very different than the notion of “industry”. Industry might be a rough proxy, since people in biology are probably more likely to be dreaming of curing cancer while people doing international development are more likely to be dreaming of ending poverty, but some people in both industries are just dreaming of being rich, and others aren’t dreaming anything at all. I think ability to articulate what you’re ambitious about is a good filter for joining the site: if you can describe the change you want to see in the world, that’s strong evidence that you’re likely to be doing something interesting.
     
  3. Organization by geography. Although the internet is eroding barriers to distance-collaboration, “where” is still a hugely important criterion for trying to understand how innovation happens.
     
  4. Validation by network. The guy just getting started and the guy who’s transformed his industry both belong on this site, but we should be able to tell who is who. Different networks have different metrics for figuring out who the thought-leaders are, and all of those networks should be indexed. I.e., I want to see number of twitter followers, number of citations in peer-reviewed journals, stack overflow karma, and academy award nominations.
     
  5. Strong search and browse and heatmap capabilities based on all of the above. I want to be able to see at a glance that Silicon Valley is where the tech startup scene is and that there’s cool music stuff happening in Toronto. I want to know instantly if I visit Omaha, Nebraska, who the most influential people in the city are. If I meet someone interesting, I want to know who else thinks they are interesting, and who they are collaborating with, and what projects they have done in the past. Etc.
     
  6. Open invitations. The point of a directory is to facilitate person-to-person interaction. There should be cultural protocols for reaching out to people via this site. For instance, maybe there’s a feature that lets you publish a few office hours each week where you’re open to meeting anyone who’s interested in getting to know you. Or designated “welcomers” for people visiting from another city. Couch Surfing is a good example of a site that’s established a culture around meeting new people — it’s a little bit niche (since letting someone sleep over at your place can be pretty personal) but if the thing at stake was coffee instead of staying over, a lot more people would probably be open to participating.
     
  7. Open access to the data: this should belong to humanity, not to the owners of this site. If we’re going to ask innovative people to do work to maintain an entry in this directory, I think it’s the responsibility of the directory owners to share that data back with the innovators via APIs and non-restrictive intellectual property positioning.

Written by jphaas

June 20th, 2011 at 10:57 pm

Posted in Uncategorized

Marrying Boto to Tornado: Greenlets bring them together

with 14 comments

This one is for the techies.

I’m doing web app development for my startup KeywordSmart using Tornado, the pure-Python web server released by the Facebook folks.

Tornado is one of those super-trendy event-driven / non-blocking things that are becoming all the rage (like Node.js and all). The concept is, instead of the traditional thread-per-HTTP-connection approach, you have a single thread that asynchronously interacts with each request, allowing potentially thousands of simultaneous connections to a single server. Think of it as a Las Vegas blackjack dealer, whirling from one player to the next, touching each card only for an instant. (Or, you know, you could visualize it as a, like, tornado).

Actually, I don’t really use Tornado for its non-blocky awesomeness, I use it for the get out of deployment-hell free card. But, if I’m gonna add it to my tech stack, I do want my money’s worth — I’ll take the event loop too, thank you very much!

The problem is, asynchronous is all fine and good as long as you’re inside your own tech stack, but as soon as you start looking for 3rd party tools, the brutal realization sets in that most of the world still runs sync. You can mix synchronous with asynchronous by spinning up a thread pool alongside your main event loop, and delegating blocking operations to the pool to keep your main loop running briskly, but if you call a blocking operation in the majority of your methods, at that point you’ve given up a big chunk of the asynchronous performance advantage.

I use Amazon Web Service’s S3 and SimpleDB for the majority of my data storage right now. You access them over HTTP, so theoretically you could use Tornado’s built-in asynchronous HTTP client to make the requests, thus keeping your code async-kosher. However, life is way, way, way to short to parse SOAP, and Amazon’s documentation, while thorough, is not fun. Luckily, the good folks behind the boto project have done the painstaking work for us: boto provides a comprehensive Python library for accessing all facets of AWS in a nice, object-oriented way. But — you guessed it — boto is strictly synchronous. It’s bound to the HTTP facilities that come with the Python standard library, and there’s therefore no way to make non-blocking requests with it.

So what to do? It looks like a couple people have considered porting Boto to use Tornado’s HTTP facilities, and / or writing a new AWS interface from scratch, but there’s nothing even most-of-the-way complete that I was able to find. And I just have no desire or time to do a project like that myself.

It would be really cool if there were a way to just use Boto, as is, and somehow have it use Tornado’s HTTP classes instead of Python’s. Actually, this is what I did! It took a little hacking around, and the magic of greenlets, but I now have a working proof-of-concept. Let’s walk through how I got there….

(Update 1/21/12: Simon from MoPub packaged the greenlet-Tornado interaction piece of this as an easy-to-use decorator: https://github.com/mopub/greenlet-tornado)

It’s relatively easy to switch out the class that Boto calls to make HTTP connections. Boto’s insert-name-of-service-Connection objects call self.get_http_connection() to fetch the standard Python HTTPConnection, so all you need to do is subclass the Boto classes and replace get_http_connection with a method that returns a mock HTTPConnection, and you’re in.

class AsyncConnectionMixin(object):
    def get_http_connection(self, host, is_secure):
        ...return my connection object...

#just like a normal S3Connection, but you've inserted your trojan horse!
class AsyncS3Connection(AsyncConnectionMixin, boto.s3.connection.S3Connection):
    pass

#this is how you use it:
conn = AsyncS3Connection('my key', 'my secret')

(For working code that shows how to do this, check out this project which I discuss further down.)

So far, all good. But now we’re at the hard part. Boto expects that when it calls the getresponse() method on the HTTPConnection object, that method will block until the HTTP request is complete and the method can return the results. Which is precisely what you don’t want to happen.

Inside Boto, there’s code that looks like this (faked for dramatic effect):

def fetch_me_some_s3_data_please(some_params):
    my_raw_xml = HTTPConnection.getresponse(build_request(some_params))
    the_data = parse_me_some_soap(my_raw_xml)
    return the data

What we really need to do is freeze this function mid-execution: we want it to call getresponse(), feed the request to our asynchronous tornado library, and then we want to hibernate the function until we get the data back again, at which point we want this function to pick up where it left off.

Can we do that? No, and yes. No based on Python’s built-in capabilities. But yes, with the installation of an easy C extension. Before we go there, though, let’s think for a minute about why we can’t do it natively. There are a couple Python language features that would seem to be potential candidates for pulling it off:

  • Generators: this is the canonical way in Python to freeze a function mid-execution and resume it later. A generator function, instead of producing a return value, produces an object that can both yield and accept input. The only problem is, you can’t turn a function into a generator after it has been written: it has to be a generator from the start. And generators can only yield control directly up the call stack: the function that calls a generator has to be aware that that’s what it is dealing with. We control the code at the top of the call stack, and we control the code at the bottom, but boto sits in the middle, and that’s the code we need to change to use generators successfully. (In one desperate moment, I considered writing a utility that would traverse the AST and automatically transform target code from function calls to trampolining. And then I returned to sanity).
     
  • Threads: why not just launch the boto call on a separate thread, then freeze the thread? Unfortunately, Python threads are high overhead, and I wasn’t able to figure out a way of “freezing” them that saved their state while releasing their resources (if there’s a way of doing it, please chime in in the comments, because that would be awesome). I’m anticipating potentially thousands of open outbound connections simultaneously, and in my unscientific experiments, the Python interpreter started erroring around the creation of thread #700.
     
  • Stack frame inspection: I was intrigued by the possibilities of the inspect module, specifically the fact that it lets you change the currently executing line of code. However, it turns out that that’s all it lets you do — you can’t jump around on the call stack to an arbitrary location, which is what I want. (I can imagine writing a utility that inspects the current call stack, saves the values of all the local variables, then systematically recreates it later by re-running the code and advancing the line pointer directly to each function call until you’re back where you started — but this idea is right next to the auto-trampolining idea in my “totally insane” bucket)
     
  • Exceptions: this is the other vanilla Python mechanism for subverting the call stack. By throwing exceptions, we can jump from our code in the HTTPConnection all the way at the bottom of the call stack up to our application code at the top, skipping over boto (assuming it doesn’t have blanket try-catch statements). This would allow us to pause boto’s execution while we launch our asynchronous request. But unfortunately, there’s no mechanism for jumping back down the call stack to the place where you initially threw the exception. Well, there is one way — the hard way. Yes, this guy’s code does exactly what you think it does: it calls the original boto method, throws exceptions to break out of the http request, and then re-calls and keeps re-calling the method until every HTTP request necessary for its execution has completed. He has a working proof of concept, and for that, I salute him, but on my personal “is it brave or stupid?” scale, I have to lean towards stupid, at least for production code: there’s just too many ways that irregularities in the boto codebase could break this technique, from over-aggressive try-catch statements to side-effects that cause weirdness when you call the same method twice.

So with all hope exhausted, I finally stumbled across the greenlet library. What are greenlets, you ask? They’re pieces of 100% carbon-neutral zero emission byte chunks that… oh wait, no, they’re actually a Python implementation of true coroutines. Unlike generators, greenlets can yield control to any arbitrary location in your code; whereas generators still operate in the paradigm of a single execution stack per thread, the greenlet extension introduces multiple parallel stacks. In other words, they are exactly what we need to solve this problem!

Greenlets work as follows: there’s a “master” greenlet that consists of the original call stack when you start your code, and you can create “child” greenlets that have their own, parallel call stacks, by creating a greenlet object, giving it a function to serve as the start of the call stack, and telling it to start. Unlike threads, only one greenlet is running at a time: you explicitly yield control via the switch() method, which you call on the object that represents the greenlet you want to switch to. Switch() works a lot like the built-in yield: you can send values out of the greenlet, and when control is returned, values can be passed back in. But unlike yield, which passes control up the call stack to whatever function invoked the next iteration of the generator, switch() lets you target any greenlet you want, which means, crucially, that you can use it to put a call stack on hold for an arbitrary amount of time. Also, unlike yield, you can use switch() alongside standard return statements, which means that a parent function calling a greenlet-enabled child doesn’t need to know that anything special is going on – -from its vantage point, it called a child, and got a return value as normal.

Let’s see how this works in practice to make boto asynchronous. The first step is to wrap your web-method in a greenlet:

import greenlet
import tornado.web

class MyApp(tornado.web.RequestHandler):
    @tornado.web.asynchronous
    def post(self):
        def business_logic():
            ...do whatever work needs to be done, including making calls to boto...
            self.write(...stuff that gets returned to client...)
            self.finish() #end the asynchronous request
        gr = greenlet.greenlet(business_logic)
        gr.switch()

The call to gr.switch() will start up your greenlet running the function business_logic. Since at this point we haven’t modified boto, business_logic will run through to the end, blocking on all the http calls, and will then write its response to the server. When business_logic finishes, gr becomes “dead”, and control switches to the parent of gr, which is our original call stack, at the point we switched away: i.e., back to the line following gr.switch(). In other words, as written, the code above will run just as if you had called business_logic normally: the code will run, it will block on the boto requests, and then it will return the results to the client.

Our goal, however, is to have the “post” function terminate at the point we fire the boto requests, and then have a callback added to Tornado’s event loop once the relevant data is fetched from the server. So at this point, we inject our custom HTTP handler into boto as described above. Here’s the code for the class we pass to boto in lieu of the HTTPConnection that it is expecting:

import tornado.httpclient
import tornado.ioloop
import greenlet

class AsyncHttpConnection(object):
    def __init__(self):    #boring  
        self.host = None
        self.is_secure = None
        
    def request(self, method, path, data, headers): #boring
        self.method = method
        self.path = path
        self.data = data
        self.headers = headers     

    def getresponse(self):  #this is the method boto calls to get the result
                                    #of the request... this is where we do our thing
        #prepare the request for Tornado's http client
        http_client = tornado.httpclient.AsyncHTTPClient()
        if self.is_secure:
            schema = "https"
        else:
            schema = "http"
        url = "%s://%s%s" % (schema, self.host, self.path)
        request = tornado.httpclient.HTTPRequest(url,self.method, self.headers, 
                                                                      self.data or None)
        
        #Find the greenlet that is currently executing -- 
        #this should be the one we created in MyApp.post() above
        gr = greenlet.getcurrent()
        #Create the callback function to be fired when Tornado gets the 
        #results of the request back
        def callback(tornado_response):
            #see https://github.com/almost/asyncboto for the AsyncHttpResponse class: 
            #it's just a dummy class we used to coerce the response into
            # something that looks like the response that Boto expects
            response = AsyncHttpResponse(tornado_response.code, "???", 
                              tornado_response.body, tornado_response.headers)
            #resume our current greenlet, passing in the response
            gr.switch(response)
        #fire off the http request, with the callback we just created
        http_client.fetch(request, callback)
        #now, yield control back to the master greenlet, and wait for data to be sent to us
        response = gr.parent.switch()
        #hand the data back to boto
        return response

This takes a little staring at to really wrap your head around the control flow. When we hit gr.parent.switch(), this sends us back to the master thread, which is, at least the first time we enter getresponse(), in MyApp.post(). MyApp.post() returns, causing Tornado to move on and handle the next thing on its event loop. Then later, Tornado receives the results of the http request, and fires the callback. The callback calls gr.switch(response), which re-activates getresponse() where we left off: “response = gr.parent.switch()”. The switch() passes the response through, it gets assigned to the variable, and then it gets returned to boto, which commences processing of it. Boto then returns the result back up the call stack to business_logic(), which writes the response to the client and calls self.finish(), ending the request. Follow that? It gets mildly more complicated when there’s multiple http calls inside business_logic()… each subsequent time we call gr.parent.switch(), the code that gets resumed is actually the code in the callback() function which is now the bottom layer of the master greenlet’s stack. But confusing as it is behind the scenes, from the perspective of you writing your application code in the business_logic function, it just works: you code in a synchronous style, but you automagically get the performance characteristics of asynchronous. Yay!

The code above is actually a simplified version of what I use: I like to wrap my business logic in timing code to make sure that the main event loop runs nippily, and exception-handling code to log bugs and send appropriate feedback to the clients. I omitted that for clarity, since it further obscures the control-flow. The thing to remember is that you need to wrap said code around every call to gr.switch(): both the original call in MyApp.post() that starts the execution of business_logic(), and then the subsequent calls in callback() that resume the business logic. The results of that timing won’t be the total time from request arrival to request fulfillment — if you want that number, put the timer at the start and end of business_logic — it will be the time spent by the main Tornado thread executing your business logic before switching to the next request, which is the relevant metric for determining whether or not one of your functions is slowing down the event loop and thus the number of simultaneous connections you can take on before you need another server.

So to sum up, greenlets allow us to freeze and then resume execution of arbitrary code without incurring the prohibitive overheads of multithreading. This can be used to convert synchronous libraries to asynchronous — we used boto above, but we should be able to use this technique on any library that makes a call to an underlying resource that we can switch out for an asynchronous driver.

Written by jphaas

June 19th, 2011 at 11:37 pm

Posted in Uncategorized

Consumer Culture, Creator Culture

without comments

On June 23, 2008, Pixar released WALL-E, a science fiction movie which predicted that humankind’s ultimate fate would be morbid obesity. In the movie, we retreat into space in technological wombs, leaving behind on Earth a planet-wide landfill, residue of our consumer culture, until we are rescued by a sentient robot that somehow restores our will-to-work.

WALL-E‘s premise was a reasonable attempt to forward-project cultural trends. Throughout most of the 20th century, America lived in a world of cheap calories and mass-produced content: a TV next to an Iowa cornfield. We stuffed our faces with food and our minds with reality shows, and it’s not too crazy a leap to extrapolate from that to couch-potato apocalypse. But today, that vision of the end seems as archaic as World World II propaganda showing Hitler marching through downtown Chicago.

There are two representative events that make me think that the world might end in fire, or it might end in ice, but it won’t end in lard. One was in September of 2006: Facebook released News Feed and Liking, and in literally under 24 hours, a hundred thousand people joined a group to protest; ironically, the rapid mobilization was made possible by the same-said technology, which, slightly modified, is increasingly becoming the basis for a new, participatory internet. The other was in September of 2008: only three months after WALL-E was released, Lehman Brothers collapsed, shattering the illusion that America was on a sustainable economic path. There will never be floating spaceships of the obese, because any civilization that would build them will be too deep in debt to afford it.

Although the Lehman collapse, subprime crisis, and ensuing recession were shocks to the system, they are going to look like minor tremors compared to the convulsions coming in the next thirty years. In the Arab world, the revolution has already started, and so far it has been political. I don’t know what it will look like in America but I hope — considering the alternatives — that it will be economic.

Simply put, in a world where the population keeps on expanding, a culture that focuses on consuming is not sustainable. Thomas Malthus infamously predicted that the pressure of population against resources would lead to poverty and death. We now know what actually happens is that humans invent new means for creating wealth. In the past, that creation was largely focused on material goods, and although each burst of wealth disrupted the power structure in society — for instance, the rise of the Rockefellers on a wave of oil — things quickly settled back into equilibrium. Now, the medium of creation is information, the creators are everywhere, and there are too many of them for the cultural elite to assimilate them all.

We are surrounded by the walking dead. Blockbuster CEO Jim Keyes was quoted in 2008 saying “I’ve been frankly confused by this fascination that everybody has with Netflix.” Everyone laughs at that now after Netflix drove his company into bankruptcy, but that was just a foretaste of the economic disruptions ahead. Across every industry, the barriers to entry are dropping: making and distributing movies (cellphones + YouTube), building software (python/ruby + amazon web services), journalism (wordpress + twitter)… Even in “hard” industries like manufacturing, you can start to see the beginnings of the end. As the barriers to entry go down, the creators start kicking out the landlords. It becomes harder and harder to sit on your ass and collect rent; to survive, you have to create value for other people.

Success in a creation economy requires a different set of characteristics than success in a consumer economy. Authenticity becomes more important than presentation. Speed becomes more important than size. Personal responsibility becomes more important than office politics. Pointy-haired boss better hope he has a good retirement plan. There is going to be, there already is, a fundamental shift in power into the hands of the people who master the tools of the new mediums. The revolution will not be televised, but it will probably happen on Apple hardware. And the people who create are not going to be satisfied seeing the results of their labor fed back into the black hole of the federal healthcare budget.

Every generation is a historical anomoly. The great anomoly of the 20th century was the utter lack of demands placed on the citizens of first-world countries. To pick an extreme example at the other end of the spectrum, the citizens of Sparta in ancient Greece were expected to maintain superb physical health and athletic fitness, devote their lives to training for combat, and endure a life of austerity and hardship; in exchange, their civilization became one of the great powers of the ancient world. The rigors that will be required for economic survival in the next few decades will be different — less obedience and conformity, more creativity and vision — but the fact is, the bar is going to be raised and not everyone will make the cut.

Losing weight isn’t easy. We have an education system, a political system, an agricultural system, and of course an economic system that have all been optimized to satisfy the basic material comforts of as many voters as possible, as well as the extended material comforts of a somewhat smaller subset. In other words, we are trained and groomed from birth to be fat, lazy and dumb. This is the world we built for ourselves; this is the fruit of our ancestor’s success. We got here with good intentions, but it’s a local maximum, not a global maximum, and therefore it’s a trap. Escaping from a local maximum is hard to do on your own. The more people who make it out, the easier it will be for us as a whole to ride the transition from a consumer culture to a creator culture succesfully.

I like the announcement they make on airplanes: put on your own oxygen mask first, then help the people around you. I don’t think we’ll crash, but we may experience sudden shifts in cabin pressure. So, if you don’t know where the oxygen masks are, the time to start looking around is now…

Written by jphaas

June 12th, 2011 at 8:45 pm

Posted in Uncategorized

Keep Moving Forward

with one comment

So I was thinking about how it’d be fun to give one of those inspirational, I did it, you can do it too speeches. And before I knew it, I actually wrote one in my head. Unfortunately, no one’s going to invite me up on a stage to talk about how I HAVEN’T built a succesful business and written a revolutionary tract on moral philosophy. And by the time I have, I’ll probably want to give a different speech. So I’m going to be lame and share this one now, even though I have to put my accomplishments in placeholder brackets, and of course it’s all probably bullshit since I’m just making it up. Whatever, I’m a dork, and this is my blog.

Brace yourself, here goes:

Dear blah blah blah, great to be here, blah. Insert dumb comment about the venue. Today we’re going to talk about entrepreneurship, and the “founder’s psychology”. A lot of people will tell you that it takes a certain type of person to be an entrepreneur. You have to have a high risk tolerance. You have to be a rebel or a rule-breaker. You have to be nerdy like Mark Zuckerburg. You have to really want it. I dunno, there’s a bunch of theories. I’m here to tell you that that’s all bullshit. 100%, absolute, total crap. The next time someone starts talking to you about the personality type it takes to be a founder, what I want you to do is stick your fingers in your ears and start singing “nah nah, nah nah nah nah, hey hey, good bye”. And then walk away.

The actual truth of the matter is that success, in any venture, enterprise, endeavor, quest, or vision, has nothing to do with personality. Or, more accurately, “personality” is just a way of describing the sum total of a person’s attitudes and behaviors. Some of those behaviors you can’t change, like the fact that you lisp like your Uncle Henry, and others you can, like the fact you punch Uncle Henry every time you see him. And the ones relevant to success are the latter.

What success actually comes down to is learning principles. We live in a universe governed by natural laws, which dictate principles for achieving things. If you want to build an airplane, all you need to do is master the principles of thrust, lift, drag, and weight: if you got those right, it’ll fly; if not, it won’t. No one is born understanding thrust… we had to figure it out, and once we did, airplanes turned from something that people thought was impossible to something people churn out in factories multiple times a day.

The really good news is that people are principle-learning machines. We were built for this. Picking up principles is as easy as learning to walk. In fact, that’s what learning to walk was. Take out a piece of paper — don’t actually do this, I’m talking right now — and write down everything you know how to do, from tying your shoes to driving a car to picking up attractive people in bars. Every one of those represents a victory of your natural mechanism for learning principles. Most of these accomplishments you probably take for granted now. But the very same thing that made those possible, is what enabled us to build the Manhattan skyline, for F. Scott Fitzgerald to write the Great Gatsby, for {insert president’s name here} to convince half the country he’s better than the other guy.

Wait, you ask. If it’s so easy, if it’s just human nature, why am I not president of the united states? (I’m sure you think you’d do a better job, right? Come on, admit it). I have that idea for a company. Or a book, or a sculpture, or an inner city agency to help teach kids how to play classical guitar. But it hasn’t happened yet.

Well it turns out there’s one meta-principle. A principle that makes the difference between whether or not you succesfully acquire all the other principles that you need. One principle to rule them all, you might say.

I think every succesful person would articulate it differently, but I think they’d all recognize it. You recognize it, because in your own way, you’re succesful too — you’ve done stuff, accomplished things… whether or not you’re happy with what you’ve accomplished, whether or not you’ve accomplished up to your full potential, the fact of the matter is you probably wouldn’t be sitting here if you were completely oblivious. Think back on all the moments in your life where you did something, grew as a person, moved forward, become more of an adult and closer to the person you want to be. What’s the common thread that you see?

I see a common thread, and the way I would articulate it is, “keep moving forward.” That’s the master principle. To be succesful in life, what you must do, is you must keep moving forward. Another way of putting it, is “let the universe tell you ‘no’.” It’s your job to decide what you want. And then it’s your job to keep moving forward. And it’s the universe’s job to try to stop you. Do you want to revolutionize the fashion industry? Do you want that cutie to be your significant other? Do you want to be suntanning on the beaches of Argentina? Do you want to write a book that’s read a thousand years after you die? Decide what you want, keep moving forward.

As long as you keep it straight — your job, move forward; universe’s job, say no — everything works great. It’s when you get confused and let the universe move things forward while you tell yourself ‘no’ that things go to shit. There are a million little ways we tell ourselves no every day. “I don’t think I deserve to have a great job, I’m not good enough.” “I don’t think she likes me.” “I can’t introduce myself to him, he’s famous!” “Maybe that book isn’t such a good idea after all.” That’s how failure happens. Because you can’t do two jobs at once. If you’re doing the job of telling yourself no, then you’re not doing your job of moving forward. And if you don’t move forward, guess what: you won’t go anywhere. Duh, right?

It’s actually relaxing to let the universe take over the work of telling you no for you. Maybe you’re actually not good enough for him: great, he’ll walk away when you try to talk to him. Maybe your vision for a company is impossible: great, investors won’t give you any cash. The universe does its job very, very well. It can and will come up with more creative ways of shutting you down than a hypochondriac worry-wort’s wildest dreams. Honestly, if you try to beat the universe at its own game, you’re out of your league. It’s far better just to play dumb and keep on operating as though you will start the company and get the lover and write the book and just keep on going until you run smack into a brick wall. Because sometimes, you will, but other times, the brick wall won’t actually be there. Just keep on moving forward and find out.

There’s a million ways you can keep going. If your business partner gets sick and can’t work any more, then you can find a new one, proceed without a partner, or see if you can work with her around her illness… or any other solution. No matter what disaster happens, as long as you’re not telling yourself ‘no’, it’s actually very easy to brainstorm ways of taking the next step.

So let’s go back to the founder psychology for a minute. The interesting thing is that some people seem to — from whatever childhood experience or genetic disease or whatever — seem to be born really getting it, and others life has to basically hit them over the head with a two-by-four before they catch on.

I’m in the latter category, by the way. I didn’t have a clue for the longest time. I would think myself silly trying to figure out, why isn’t my life going the way I want it to, and make it super-complicated, and blah blah blah blah blah. I mean, I was really terrible. I couldn’t tie my own shoelaces. I was the guy in class who’d try to make the insightful comment in the hope that people would hear and go, wow, you’re really insightful, let me make you famous now. Yeah, I was that guy, sorry everyone. I didn’t get the girls, I didn’t make an impact, I didn’t achieve my dreams. Because I was trying to have the universe do my job. I was hoping that if I stood there and smiled and waved, it would move things forward. Things only started turning around for me when I realized that that it was on me to make things happen.

Anyway the reason I’m telling you this is that I want to make the point that, whether or not the “keep moving forward” thing is something that comes to you naturally or not, you can learn to think that way. You don’t need the “high risk tolerance” gene. You don’t need to have been raised by bears in the forests of Africa, learning how to rip out the hearts of deer with your bare hands. You just gotta keep reminding yourself, “am I saying no or am I moving forward? Am I doing the universe’s job or am I doing my job?”

Okay, some typical objections. Number one: but it’s scary!

Actually, if you get so far as to realize how unbelievably scary it is, you’ve made a lot of progress. Most people are so busy rationalizing to themselves why they don’t move forward that they don’t even recognize how terrifying actually going after your dreams is.

Anyway the fear thing is really easy. Have you ever jumped off a high cliff into a lake? You can stand on the edge of the cliff for twenty minutes going back and forth, talking yourself into it, talking yourself out of it, shivering and looking really dumb in your bathing suit, etc. etc. But then the second you’re like, “oh well, what the hell” and jump, boom, you’ve just done it. The antidote to fear is acting. And you don’t need to “beat” or “master” or “conquer” your fear first, you just have to act. And most action is over so quickly, there’s almost not even time to fuck it up. For instance, “hi boss, I’d like to quit my job because I want to start my own business”…. oh shit oh shit oh shit what did I just say did I just say that oh well, too late, security’s showing me out the door, guess I better be an entrepreneur now….

It’s okay to scream like a 5-year-old girl going down. It’s all good. You’re allowed. Tarzan bellowing might be classier, but either way you hit the water, and that’s what counts. Just keep moving forward.

Number two objection: but I don’t know which way forward is! What do I want?? Yeah, this one really nailed me for a while. Should I write a book? Start companies? Join the peace corp in Africa? I don’t know!!!! How do I decide!!! Watching a freshman trying to choose their college major is often like this. You want to put the poor creature out of it’s misery, it’s just awful to watch. The trick is… being right is not important. It is far, far better to make a bad decision and act on that decision and experience the consequences of that decision then it is to not decide. Most people interpret Nietzsche’s “That which does not kill us makes us stronger” as creepy Teutonic bravado, but I actually think it’s just really down-to-earth good advice.

Fact: the only way you learn what you want, and how to get what you want, is to try things and see what happens. You want to be an astronaut and also be a doctor? Flip a coin then spend a summer interning with one of them. Still can’t decide? Spend the next summer interning with the other. Still can’t decide? Flip another coin, then major in biology. Still can’t decide? Flip a coin, then go to med school. Still can’t decide? Open a private practice. Just keep moving forward until either a) you have more clarity or b) you wake up one morning and realize that you’ve achieved one of your dreams. And you know what? Worse come to worse, you can do both. Maybe even simultaneously if you’re really Mr. I-can’t-make-up-my-mind. It’ll be harder, but then, “hard” is one of those things that it’s the universe’s job to worry about. Most indecisiveness is really disguised procrastination. Don’t do it. Yes, you may find yourself saying, in the words of Michael Bluth, “I’ve made a huge mistake.” But hey, that’s half the fun of life. Just keep moving forward.

Written by jphaas

June 11th, 2011 at 11:00 am

Posted in Uncategorized