How Should Society React to the Growth of Bitcoin?

Being the crypto currency nerd that I am, I watched the New York Department of Financial Services hearings on Bitcoin regulation.  The regulators came across as sincere and reasonably informed.  They’re really trying to create a regulatory framework that doesn’t inhibit innovation.

A couple things I took away from these hearings:

  • Bitcoin is a new technology, so when its supporters describe its benefits, it sounds very abstract.  Ex: “currency is only the first application”, “programmable money”, “it allows permissionless financial innovation”.
  • While the regulators agree that innovation is good, it’s nowhere near as important as preventing crimes.  In other words, stopping money laundering trumps allowing financial innovation.

As Bitcoin grows, I foresee greater conflict between the side that wants to innovate, and the side that wants to retain control over financial transactions.

This post lays out some thoughts on how we, as a society, should navigate this conflict.  But first, here are some facts around how Bitcoin is not so scary.

Bitcoin doesn’t have to Replace the Dollar

According to many economists, Bitcoin’s deflationary nature makes it a poor currency.  You can’t easily lend it, people will want to hoard it, and fractional reserve banking is more difficult.

They may be right, but Bitcoin doesn’t have to replace the dollar.  It could sit along side the dollar just like other assets (gold, for instance).

Bitcoin can be Taxed

Just as a waiter can evade taxes by not declaring all his tips, Bitcoin opens up some room to tax evasion.  For instance, a freelance graphic designer could take payment in bitcoins, and there would be no bank record of this transaction for the IRS to follow.

However, Bitcoin won’t lead to massive tax evasion.  The state still has plenty of ways to catch cheaters.

First of all, companies are required to keep books that record revenue and expenses.  If a company keeps income off the books or establishes a slush fund, that action is tax fraud and can lead to prison.  There are just too many people looking at the books in large companies to hide such activity.

Second, you can get caught if you visibly live beyond your means.  Or if you spend money on a purchase that can be linked to your identity.  Perhaps the easiest way to get caught is if someone who knows what you’re doing tells the IRS (and, as a whistleblower, receives 30% of the taxes you owe).

Bitcoin can be Banned

If Bitcoin turns out to be a really bad thing, we can always ban it.

It’s true that we cannot stop Bitcoin the protocol (at least, not without turning off the Internet).  But we can ban exchanges from converting bitcoins to dollars.  We can ban merchants from accepting them.  We can make it a crime to facilitate their use and transmission.

Since Bitcoin is a global phenomenon, we’d need widespread agreement across developed nations to enforce such a ban.  But there’s plenty of precedent for such coordination in international stances against drugs, human trafficking, and intellectual property violations.

The effect of such laws would be to drive the price of bitcoins to zero, or close enough to not matter any more.

However, Bitcoin will lead to Loss of Control

The essence of Bitcoin — and all crypto currencies — is they are decentralized.  They allow transactions without any central authority’s permission.  They allow financial freedom.

This freedom means I can store my money without worrying that the central bank will devalue my currency.  It means a bank cannot prevent me from accessing my funds.  It means I can send money to a gambling site, or a relative in Syria.

This freedom also means the state can’t seize my funds if I’m found guilty of a crime.  It means I can send money to a terrorist group.  Freedom isn’t always pretty.

The rise of Bitcoin will reduce the power of banks.  Right now, banks act as aggregation points for money, allowing the state to monitor and freeze assets.  The state will lose this tool.

Furthermore, technologies to anonymize transactions (such as ZeroCoin) are coming.  Their possibility is a mathematical fact, and there exists market demand, so they will happen.

The core issue that we, as a society, must grapple with in deciding whether to embrace or ban crypto currencies is whether their benefits are worth letting go of control.

On one side, you’ll find regulators and the vested interests protected by the current rules.  They’ll scare voters with the familiar boogeymen of drugs, terrorism, human trafficking and child pornography.

Those on the other side will point out that the vast majority of money laundering is related to drugs, and police can still prosecute drug dealers (they’ll just lose the tools of financial tracking and seizing).  And furthermore, perhaps if we just handled drug abuse as a medical and not a criminal issue — which seems to work pretty well for Portugal — we wouldn’t have to worry about all this money laundering.  And we could also free about half our current prisoners.  But I digress…

Those of us who are older could also point out that money laundering wasn’t even a federal crime until 1986, yet pre-1986 society held together just fine.

Money beats Fear beats Logic

In the end, this issue will be decided by voters, and I’m not convinced logic and abstract promises of innovation will overcome fear in an argument.  But Bitcoin supporters have another weapon that might be even more powerful than fear.  Money.

Any legislation that bans Bitcoin will cause financial harm to those who hold bitcoins.  If enough people own bitcoins — and if those coins are worth enough — they’ll be able to exert political influence sufficient to counter the voices of fear that seek to ban it.

 

Health Hacks for Computer Workers

I spend a lot of time on the computer, which was fine until I hit my mid 30s. And then I started to suffer from pain in my arms, and random back spasms.

That’s when I learned that sitting down is bad for your health (in fact, sitting for 5 hours is as bad as smoking a pack of cigarettes). 20 years of frequent sitting was taking its toll.

After much experimentation, I’ve found ways to avoid these problems. Hopefully, by sharing my solutions, I can help some of you avoid these issues.

Tip 1: Sit/Stand Treadmill Desk

The most effective (and most expensive) change was getting a sit/stand treadmill desk.

I ordered an 80″ wide LifeSpan desk with a TR1200 treadmill (see http://www.thehumansolution.com/uplift-lifespan-treadmill-desk.html).

I chose the widest model because sometimes I’m tired of walking and just want to sit.  So I keep a chair next to the treadmill, and move the monitor/keyboard from one side of the desk to the other.

My setup

My setup

So now I walk 5 or 6 miles every day.  More than anything, this change has mitigated health issues, while also increasing my overall energy.

The cost was $2600, which I consider some of the best money I’ve ever spent.

Tip 2: The Gokhale Method for a Pain-Free Back

I had dozens of chiropractor visits, and started practicing yoga a few times a week.  None of that seemed to help.

Then I bought 8 Steps to a Pain-Free Back.  The book’s basic premise is that back pain is mostly a symptom of bad posture, and is rare in developing countries where people don’t sit all day long.

From the book: “Notice that his shoulders are aligned toward the back of his torso; his neck is elongated without much curvature and, as a result, his chin angles down; his belt is lower in front than in back, reflecting a pelvis that is tipped forward and a sacrum that is angled back; his chest is “open”; his breast bone is more horizontal than vertical; and his rib cage is flush with the contour of his torso. Even though he works on a low table for much of the day, he does not stoop forward or hunch his shoulders at all”. Free image courtesy of www.egwellness.com

What I like about focusing on posture, is you can always be working on it.  With back-strengthening exercises, you have to find time to do them.  But you’re always standing, or sitting, or walking, or lying down.

After reading this book, I got rid of my fancy Aeron chair (which tries to mold your back into a C shape), and bought the ugly-but-functional Gokhale chair ($560).

th (1)

Tip 3: Trigger-point Massage

Sometimes, your best efforts at prevention don’t work, and you need a cure. A couple years ago, I had pain in my right arm that just didn’t go away.

I went to doctors and physical therapists. I tried acupuncture, took various vitamins. None of it worked.

I stopped using a computer, thinking rest would fix my arm. But it didn’t, not even after over a month of not working.

Finally, I discovered the book It’s Not Carpal Tunnel Syndrome!: RSI Theory and Therapy for Computer Professionals, which explains how wear and tear can accumulate in the human body. Sometimes, nerves get snagged by knots of tissue. What’s tricky is that, when this happens, you will feel pain somewhere other than the source of the problem.

Once I identified the type of therapy I needed (which goes by “trigger point massage” or “myofascial release”), I was fine after a few sessions.

What does “owning” a Bitcoin really mean?

Lately, I’ve taken a deep dive into the technical inner workings of the Bitcoin protocol. There’s enough fascinating concepts involved to fill a dozen blog posts, but today I want to highlight one aspect: what, precisely, does it mean to “own” a Bitcoin?

Let’s start with what it means to own a dollar. It means you either have physical access to the dollar, or some kind of legal contract that recognizes your right of ownership. Physical access is easy to understand, but inconvenient if you want to transfer that dollar to someone out of arm’s reach. A legal concept of ownership brings many benefits, such as you retain your money even if your bank is robbed. Of course, the legal system can also take your money.

As for Bitcoin, a useful metaphor is a piggy bank. Anyone can put money into a piggy bank, but taking it out is harder.

You can think of Bitcoin as millions of piggy banks, each of which has a lock that requires a special mathematical key to open.

When you open up your Bitcoin wallet and you see something like:

Address: 404371705fa9bd789a2fcd52d2c580b65d35549d
Balance: 5.03 Bitcoins

What that really means is there are a bunch of piggy banks in the block chain whose locks express “you may open if you have the private key associated with 404371705fa9bd789a2fcd52d2c580b65d35549d” and whose values sum up to 5.03 Bitcoins.

A couple things strike me as interesting:

  • There’s actually no explicit concept of a “Bitcoin address” in the protocol. The above lock is expressed programmatically as “OP_DUP OP_HASH160 404371705fa9bd789a2fcd52d2c580b65d35549d OP_EQUALVERIFY OP_CHECKSIG”. By convention, Bitcoin wallets look for locks of this form, and extract the number in the middle (404371705fa9bd789a2fcd52d2c580b65d35549d) and call it an address.
  • The piggy banks can have more complicated locks. For instance, a bank might require 2 keys to open, or 2 out of 3 keys.

Remember the movie “Eyes Wide Shut” where Tom Cruise rips a $100 bill in half, hands one half to a taxi driver, and promises the second half if the driver waits for him? That’s the same semantics as a lock requiring two keys to open. If a balance of Bitcoins is protected by a lock that requires two keys owned by two different people, then who “owns” those Bitcoins? Both people? Neither?

Or consider an escrow transaction, where person A buys something from person B, but held for some time by an escrow agency. You can create the same structure in the Bitcoin protocol by expressing a lock that requires 2 out of 3 keys to open, where keys belong to A, B and the escrow party.

But there’s one big difference between these two scenarios: with normal money, you have to trust that the escrow agency doesn’t run away with your funds. In the Bitcoin case, the escrow service can’t move your coins without cooperation from one of the other parties. The burden of trust is much lower.

Bitcoin allows you to do with math what, with normal money, requires lawyers.

As for what does owning a Bitcoin really mean, I would answer that “own” is the wrong word to apply. The Bitcoin protocol doesn’t understand ownership, it just follows rules. A more precise way to describe owning a Bitcoin is to say you have the ability to spend it.

Startups: How to Plan with Too Many Options

Plans are worthless, but planning is everything.
- Dwight Eisenhower

One common difficulty startup founders face is how to avoid being overwhelmed by the sheer amount of stuff to do.  In a typical startup, you need to know your market well, execute on building a product, acquire lots of customers, raise money, hire great talent, build a strong company culture, and manage your cash flow.  Our brains simply don’t have the power to wrap themselves around all these areas in all their details all the time.

I faced this difficulty myself in running HitPlay, and I see this issue all the time in companies I mentor.  From my own experience — and the experience of various other people I respect — I’ve outlined an approach I think is helpful.

The trick is to wrap your head around one area at the right level of detail, and to be smart about how you move this focus around.

Here’s the process:

  • Figure out which aspect of your business is the most important to address right now.
  • Focus like a laser on this area until it’s no longer what’s most important.
  • Rinse and repeat.

Great, thanks, but how do I do that?

Start with awareness.  You (as the founder) will be in the best position to make the right call.  What’s most important is that you actually follow this process, and refine your instincts as you go.

You should cultivate a habit of asking yourself “what’s the most important thing to be thinking about right now?”.  The answer may be high-level and strategic.  Or it may involve low-level implementation details.  Whatever the answer, once you identify it, you can use this awareness as a tool to cut down on wandering thoughts.

Seek advice.  More experienced entrepreneurs can give valuable perspective, especially on high level “what’s the most important thing to focus on” kinds of questions.  Often, when you’re deep in the operational trenches, you don’t see the forest for the trees.  You feel like you’re in the middle of a sprint, when really running a company is a marathon.

As for how to find mentors, a little flattery goes a long way.  Find someone you’d like as an advisor, and send them a note as to why they in particular would be helpful to you.  Ask to schedule a quick phone call, and be respectful of their time.

Embrace Constraints

You’ll never get a handle on complexity without ways to reduce your search space.  Some techniques:

Say no a lot.  Say no to random requests to “grab coffee”.  Say no to most prospective business deals.  What you say no to is more important than what you say yes to.

Suppress thinking about something until a certain condition is met.  A couple examples:

  • You have a site and are considering throwing up ads for revenue.  Before devoting resources to this task, do a little math.  Let’s say you can sell ads for $1 CPMs, and anything less than $1000 / month of revenue is immaterial.  That means you should wait until you’re getting 1 million page views per month before you think further about this task.
  • You know your code needs to be refactored to allow horizontal scalability.  But there’s a high likelihood that you’ll never have enough concurrent users to require this scalability.   So you could use a trigger like “don’t worry about refactoring until my server load is greater than 1″.

Group tasks into milestones. By milestone, I mean:

  • A measurable deliverable at the granularity of “a few weeks of work”.
  • What you learn by achieving the milestone will improve your subsequent planning.

The second point is the key.  Because of the expected knowledge to gain, there’s no point planning beyond the milestone (other than the rough planning to determine that the milestone is comparatively more important than other things to do).  The milestone acts as a horizon that limits the scope of your planning.

And once your identify a milestone, switch into execution mode where you drop down to the low levels of detail you need to do the work.

Let me walk you through an example.  Let’s say you and a friend have an idea for a startup, but don’t have anything built yet.  A good milestone could be “create a landing page that expresses the value proposition of your product, and collect 300 email addresses of interested people”.

This milestone is small enough that you should be able to wrap your head around all the necessary steps.  And consider how much you learn upon achieving it:

  • You’re forced to clearly articulate your value proposition.
  • You gain knowledge on how to acquire customers.
  • You validate your interest in the company, as well as compatibility in working style with your partner.
  • You have lots of people’s contact info to reach out to for feedback.

I’d like to end with a few anti patterns to be aware of:

  • The founders cannot agree on what’s the most important issue.  Founder disagreements are a big deal.  If you find yourself unable to agree on what’s the most important issue, then your most important issue is this inability to agree.
  • I’m fighting too many fires all the time to do much planning.  You need to make time for non-urgent / important tasks.  If you find yourself in reaction mode all the time, your most important issue is to get ahead of the chaos so you can be proactive.
  • We know what we need to do and we’re too busy to spend much time in planning.  This situation is almost never true for a startup, but is a common sentiment since it’s easy to get caught up in the details.  It takes discipline to operate at multiple layers of perspective.  When you’re executing toward a milestone, you shouldn’t be spending a lot of time planning.  But between milestones, you should give yourself (and the entire team) lots of time (several days, if necessary) to focus just on planning.  You should have a healthy ratio of time spent thinking vs. doing, or else you will slowly drift off course.

How about everyone else?  What approaches to planning and prioritization have worked best for you?

Thoughts from an Angel at Last Night’s 500 Startups Demo Day

Overall, I was quite impressed.  Dave McClure and the folks at 500 Startups have done a good job vetting and mentoring applicants.  You meet a lot of talented entrepreneurs on demo day — it’s a networking event on steroids.

As an angel investor, my key takeaways are:

Market rate for terms

The typical company that presented not only boasted a strong team and a working product, but also demonstrated some kind of traction.  For example:

  • Twitmusic has over 8,000 musicians registered with 32,000,000 Twitter followers.
  • TenderTree transacted $20,000 in revenue in June.
  • TeliportMe has been downloaded over 450,000 times

Most of the companies were trying to raise $500K – $1M on convertible notes with caps in the $4M range.

So — whether you’re on the raising or investing side of the aisle — that’s your market rate.

Overall trends

Of the 27 companies presenting:

  • 5 were child or education related.
  • 5 were fashion related.
  • 7 were led by female founders.
  • 6 were foreign.

Some Standouts

  • Network replaces you phone’s contacts with a smart, networking app.  It promises to do away with business cards, and add contextual information to contacts.  This idea will either work spectacularly, or fail quickly.
  • Chalkable is building a platform to sell educational apps to schools.  I like the education space.  It’s just itching for major disruption.  Chalkable’s approach is to work top-down, by selling to schools.  That’s a challenge, but also a great barrier to entry if they succeed.  And they already have several schools using their product, so early indications are good.  I’m not sure if the “app store” model is right, but they could capture enormous value if they are simply a modern web 2.0 platform company that provides distribution through schools to children.
  • Wanderable is a honeymoon registry for couples who want experiences, not stuff.  From a financial perspective, I like ideas associated with weddings, since you’re capturing people at a very price insensitive moment of their lives.  And the scuttlebutt on Wanderable is the two founders (who have been close friends for a decade) are a particularly strong team.
  • Happy Inspector is probably the least sexy idea, and the one I judge “most likely to exit”.  They have an iPad app for property managers to perform inspections easily.  They already have 300 users paying monthly subscriptions.  They are in the enviable position of having customers paying them to develop more features.

 

This Photograph Cannot be Efficiently Priced

On Hacker News, I just read This Photograph Is Not Free and the response This Photograph  Is Free.

<tl;dr> summary:

  • Not Free: this photo cost me several thousand dollars in fixed costs, so I should be paid if you use it.
  • Free: sure this photo cost me money, but I did it for fun and I’m happy to share it with the world.

The deeper problem is there’s really no good pricing model for digital goods.

Specifically, production of digital goods involves a fixed cost (sometimes a very high fixed cost), but the marginal cost of copying a digital good is free.

How do you price something with zero marginal cost?  An every-increasing percentage of goods and services have this characteristic, so I believe solving this problem is the key economic question of our times.

The current approach the movie and music and software industry takes is to:

  • Charge the price that maximizes revenue.
  • Rely on various legal and technical mechanisms to prevent copyright theft.

We’re all well aware of the enormous “pain in the ass” that copyright law inflicts on us.  It sucks, it holds back innovation, etc. — but there are enough rants out there about copyrights.

The other big (but less discussed) issue is how to charge the appropriate price.  I believe the main inefficiency here is the price for most digital goods falls into what I call the vast chasm of impossible pricing.

To illustrate, let’s say I have a cool photo I want to monetize.  My options are:

  • I can ask people to enter a credit card number and pay for it.
  • I can offer it for free, and serve ads on the side.

The problem is asking for a credit card is a big deal.  The customer has to get over a purchasing friction, and the merchant has to pay a fee.  Essentially, you can’t charge anything less than around $5.

On the other end lie ads.  Talking orders of magnitude here, a typical CPM is $1, so if you have an ad-supported revenue model, you’re basically selling each item for $0.001.

There’s a 5000x difference between the most you make from ads, and the least you can make from credit cards.

So what do you do if you took a nice photo?  Or you wrote an insightful blog post?  Or you sent an investigative journalist to Iraq and wrote an article?  The fair price for whatever you did might be a nickle.  And you’d probably be happy if you got a nickle every time someone viewed you page.

And many people might be perfectly happy giving you a nickle in appreciation, but they don’t want to deal with the cognitive load of authorizing a transaction.

Imagine if we had an easy way to charge a nickle.  A very long tail of writers, photographers, musicians, and programmers would see a 50x boost in their revenue.  There’s an incredible opportunity in solving the vast chasm of impossible pricing.

Hacker News and SaaS

An interesting thing happened on Hacker News yesterday that highlights some complexities around innovation and compensation in today’s world.

Someone posted a link to visitor.js, which is a hosted piece of JavaScript that gives details on your visitor (like which city they’re in, date of last visit, etc.).  The creators set it up as a paid service.  You’d have to pay at least $10 per month to use it.

Within hours, someone posted a free open source version of visitor.js.

However you feel about this emotionally, here are two facts I believe to be true:

  • The creation of the open source version of visitor.js is good for the industry as a whole.  It’s yet another tool that developers everywhere can use and repurpose however they see fit.
  • The open source version makes it harder for the people behind the original visitor.js to make money from their efforts.  Hacker News has provided a disincentive for their innovation.

The economics of software are funny.  If you build a service that’s really deep so no one can easily copy it (like Twilio), you can survive.  If you build a site that accumulates millions of users, no one can easily take them away from you even if they replicate your product.

But if you do something that’s kind of cool, like visitor.js, you’ve added value to the ecosystem of technical tools, but… you don’t get compensated for this value

This dynamic creates a world where independent developers are increasingly effective at building things, but making money from what we build is more difficult.

Reflections on Starting a Company

Being good in business is the most fascinating kind of art. Making money is art and working is art and good business is the best art.
- Andy Warhol

There’s a lot of practical advice out there on how to run a startup.  I want to add a few personal words about some of the intellectual and emotional lessons I learned in building HitPlay.

Some background notes: HitPlay grew organically without investors, so I have little to say about raising money, but a lot to say about earning it.  Also, I started the company over 9 years ago, so these lessons are colored by having seen many business cycles.

1) How to Overcome Fear

One thing I’ve learned is everything that limits us is a form of fear or laziness.

Creating a startup is a lot of work, so if laziness holds you back, you’re not going to get far.

Fear is more complex.  If you have real financial responsibilities (like a family), the fear is valid.  But other fears, like fear of failure and fear of what other people think, is much less useful.

5581_original

Fear is the mind killer

The way I overcame fear was through a simple thought experiment.  My startup could either succeed or fail.  If it succeeded, fantastic.  But, I realized, even if it failed, I would be happy I tried.  I’d rather be the guy who tried and failed than the one who never tried at all.

Once I made this realization, I had no intellectual reason to not do a startup.

2) Ownership Feels Great

One of the immediate (but not predicted) joys of starting my own company was how great ownership felt.

As an employee, my job was a means to make money.  I did what my boss asked, and I did it competently.  But I didn’t invest much energy into my work.  I just didn’t care that much.

Now that I was working on the product I conceived, for the company I started, I was in a whole new world.  I took pride in every line of code, in every pixel on the screen.  I wasn’t just slinging code.  I was nurturing my baby.

I also took pleasure in the accumulative nature of building.  In other words, I could work all day and make a minor but distinct improvement — and this improvement would be present every day in the future.  I felt like I was rolling a big ball, and every day I was increasing its speed.

3) How to Work Without Direction

When you work for someone else, you’re given direction.  For the first few months of my company, I was still of this mindset.  I kept wanting someone to tell me what to do.

This lack of direction is a double-edged sword.  On one hand, it’s liberating and empowering.  But it’s also overwhelming.

Too-many-choices

What makes it so overwhelming is you have no constraints on your set of choices.  Do you want to build a certain feature?  Spend your time optimizing page load speed?  Do a Google Ad Word experiment?  Look for someone to hire with expertise in marketing?  Pivot to a new business model?  Paint your company’s name on your body and run naked through the superbowl?  It’s up to you.

4) It’s Lonely without a Co-Founder

I threw myself entirely into my company, and I obsessed about everything.

The problem is no one else really cares if your border radius is 3 or 5 pixels.  Or whether you should pay slightly more for bandwidth in exchange for a lower commit level.

lonelyman

When you run a startup, you’re making tons of decisions that are vital to the business, but meaningless to everyone else not in the trenches with you.

A few months into my startup, one of my friends joined me, and I was much happier because I finally had someone who cared as much as I did.

5) Your Company will Live or Die by Traffic

The single most important and most difficult problem to solve for any consumer oriented web site is how to get traffic.

Shibuya_night_m

In my naïveté, I thought all I had to do was build a product people were willing to pay for.  I didn’t ask myself how I would get those people to my site in the first place.

And advertising didn’t work.  Ad rates are set by the highest bidder, so I could only make money to the extent that I out monetized everyone else.  I couldn’t compete in pure monetization, unless the ads were so precisely targeted that the ad volume was negligible.

6) The Secret to your Success is not Public Knowledge

You cannot analytically derive a plan to success.  Because if you could, then so could other people, and the opportunity would be arbitraged away.

images

To win, you’ll have to stumble into something not publicly known.  For instance, when Google started, no one thought search was going to be big.  Or a company called ThePoint observed that lots of people were using their group action platform to coordinate purchases, so they started Groupon.

You’ll need to increase the surface area of your luck, and keep a close eye on your analytics to see if there’s a pattern you can exploit.

7) Hiring is a Big Deal

In my case, we took little funding and grew organically for years before we made enough to hire people.  The change from just a couple founders to a team of employees was the most challenging transition in the company’s history.

Partly, it was challenging because I had no management experience.  Also, my product was my baby, and I had a hard time letting go.  Nonetheless, before hiring, your effectiveness is determined by what you do.  After hiring, it’s measured by what you get other people to do.  And that changes everything.

th

I could write a dozen posts going into specifics, but some books that helped include What Got You Here Won’t Get You There, Tribal Leadership, and Good to Great.

8) Your Most Enduring Asset is Your Reputation

Over the years, money comes and goes.  Markets change, businesses follow cycles.

What lasts are the relationships you cultivate, and the integrity with which you operate.

Check your ego at the door.  Don’t focus on how big your slice of the pie is; rather, focus on growing the pie.  Speak clearly, and act transparently.  Over the years, you’ll grow a network of people who like working with you and trust you.

9) If You’re Not Having Fun, You’re Doing Something Wrong

Time spent at your startup should be in service to your life, not vice versa.  You commit to a startup, but you have a deeper commitment to find whatever gives you meaning and satisfaction.

One of my favorite Steve Jobs quotes is

I have looked in the mirror every morning and asked myself: “If today were the last day of my life, would I want to do what I am about to do today?” And whenever the answer has been “No” for too many days in a row, I know I need to change something.

Note: as Steve said, sometimes you have to do things that aren’t pleasant.  You just deal with it.  But if you’re doing unpleasant things too many days in a row, you should make a change.

In Conclusion

Running a startup is lonely, filled with stress, often not glamorous, and has a high chance of failure.  But it’s betting on yourself.  So if you’re crazy enough to do it, I sincerely wish you the best luck.

Fun with Reddit Image Data

Reddit is one of my favorite sites.  It has a fantastic community that generates a wealth of interesting data.

Spidering image posts to Reddit

I wanted to play around with a slice of this data (image posts).  Getting all these images was kind of annoying, particularly because Reddit’s API only returns 1000 search results, and Reddit rate limits you to one request every two seconds.  So I wrote a cron script to suck down all new image posts every hour.

But I also wanted accurate scores and comment counts.  So I had another cron script re-download information on every post 1 week after it went live (to allow time to gather up/down votes and comments).

I wish Reddit would distribute an occasional database snapshot.  That would be a great data source to play with.  But, alas, they don’t, so I’ve had these scripts running for about 5 months.

If you’d like to play with the image links I spidered, you can use my snapshot (230,248 images, 19 megs compressed, JSON output from SOLR):

links.json.gz

The structure of each entry looks like:

{
        "permalink":"/r/pics/comments/jjpng/the_singlemost_sad_moment_of_my_childhood/",
        "author":"A_Slow_Descent",
        "url":"http://i.imgur.com/Gmjyq.gif",
        "num_comments":3,
        "sequence":628406,
        "subreddit":"pics",
        "score":4,
        "over_18":0,
        "title":"the single-most sad moment of my childhood",
        "thumbnail":"http://thumbs.reddit.com/t3_jjpng.png"
}

Example Application

I wanted to build something that surfaced interesting new photos with minimal effort.  Reddit is great first thing in the morning when it’s full of fresh content.  But what if I want to goof off and it’s only been 15 minutes since I last browsed Reddit?

I can keep paginating further and further away from the front page.  But them I’m constantly scanning links to see if I’ve visited them.  And there’s no way to tell when new content is on the front page.

What I really wanted was a single button that I could click as much as I wanted, each time getting a new photo.  I don’t really care to see the most recent photo — just give me a reasonably good one, and make it easy to keep seeing more.

Try it out!

Random Next

Every time you want a new image, just click the “NEXT” button.  To make that work:

  • I threw the content into a SOLR index, which allows filtering by subreddit as well as random sorting.
  • JavaScript handles resizing images (for smooth user experience), randomizing SOLR results (so you get a new path even if you reload the page), and updating the DOM with the image.
  • To improve quality, the default view filters out images with a score under 100 (which eliminates the bottom 80%).

Synchronized Viewing Experience

Perhaps the most novel feature is “synchronized viewing”.  Everyone who visits the image-viewing page gets a distinct channel as a URL.  If you share this URL with a friend, you’ll see the same images.  Each time one of you clicks “NEXT”, you’ll both see the same new image.

To build this feature, I used PubNub, which is a great service to publishing and subscribing to channels.  It’s really easy to set up.

Every time someone visits the page, I give them a random channel (if they don’t already have one).  And then every time they view another image, I publish that image’s id on the channel.

The page also subscribes to this channel, so everyone else on the same channel will receive the image id and display it.

Results

I found the image explorer fun when the images have immediate impact (like a beautiful landscape photo rather than a rage comic).  I also discovered lots of subreddits I never knew existed.

Some images I like:

A bullet going through some M&Ms

Butterfly Tongue

Just a baby hippo taking a bath

Attack!

Sunrise reflected in a bubble

Mount Bromo

Acknowledgements

In addition to PubNub, I’d also like to thank imgur.com for hosting all these images for free.

Hey YouTube, Implement This!

There’s practically an infinite supply of videos on the Internet.  But there are limited ways to discover and view video content.

Rather than waste words trying to explain visual concepts, let me just show you.  I took the top 1000 videos of all time on YouTube, and threw them into this special player I built:

Try it out!

Play around with it for a while, then come back to me.

The Product

People are great at processing moving images.  And we should be, since our visual cortex takes up 1/3 of our brains.  I wanted to create a viewing experience that took advantage of all this neural hardware.  I wanted users to feel a pleasant flow as they decide what to watch, and quickly jump from video to video.

To that end, I implemented the minimum set of features to provide this experience.  I didn’t want any other features — such as a speed control — that might introduce an additional cognitive loop.  I want viewers to just let the visual data flow, and not concern themselves about whether to speed up or reverse the stream.

Another aspect of the user experience, is the flow is infinite.  The players shows random slices of random videos, and it goes on forever.  1000 videos is only a tiny fraction of YouTube’s library (much less the entire web’s library).  But you can watch this player for a long time without the content losing its novelty.

The Technology

Some highlights from the technical side:

  • I use ActionScript because I had code with a polished player interface (i.e., displaying thumbnails while scrubbing the video).  The main reason to use html5 vs. ActionScript is to run on iOS devices.  But the browser on iOS doesn’t let you embed playing videos into a page, so it wouldn’t have worked on those devices anyway.  For what it’s worth, I really enjoy working in ActionScript, and I’m sad it’s going away.  But that’s a topic for another post.
  • The player takes advantage of high bandwidth.  Broadband speeds have been quietly increasing over the past few years.  Most people have much bigger pipes than a typical video play uses.  For instance, a DVD-quality video stream is roughly 1000 kilobits per second (or kbps).  I’ve got a cable modem, and I just measured over 20,000 kilobits per second.  In other words, my computer could stream 20 DVD-quality videos at once.
  • All the thumbnail videos you see scrolling by are compressed to 50 kbps (they’re 160×120 pixels with no audio).
  • I used YouTube’s API to get these videos, but unfortunately, their API only returns 1000 search results.  So I have no practical way of adding more content.  I really wish API designers would allow access to entire content libraries, but that’s also a topic for another post :)

Next Steps

I would love to see this “video wall” player as an option on all video sites.  I think it works really well with the enhanced interactivity possible on the Internet.

Technically, I can hook this player into different content libraries.  But there are a couple practical obstacles.

First, to make scrubbing work well, I need sprites that show different frame from the video.  Second, I need tiny 50 kbps thumbnail streams that show the videos scrolling across the wall.  For full integration, the site hosting the content needs to generate the sprites and tiny videos as part of their encoding pipeline.