A few words about EventVue

It’s now been 8 months since we decided to shut down EventVue. One thing that has surprised me is the number of emails I get from people interested in launching similar companies. I usually get one email or phone call a week asking about what I learned and what I would do differently if I were to do it again. I really don’t understand why there is so much interest in this particular space, but I can tell you there are an awful lot of people thinking about building social networks around events. And as far as I can tell from my perspective, the interest is only accelerating. I try to be helpful and am always willing to share what I’ve learned, but since I’m getting asked the same questions over and over again, I figured it’s time I post my answers somewhere I can easily link to.

If you’re thinking about launching an EventVue clone and are wondering if it would be a good idea or not, this post is for you.

Here are some of the top questions I’ve been asked lately regarding EventVue:

What reeeeally happened?

If you haven’t read our EventVue post-mortem, that’s the best place to start. We tried our best to be as transparent as possible in our writing and so it’s disappointing when people call and ask “what really happened”. Sorry to disappoint you, but there really is no back story to be told. No crazy founder drama between Rob and myself. No crazy pressure from our investors. We simply ran out of money before we managed to find a product valuable enough to conference organizers that they would pay us enough to keep us in business.

What was the “nice to have” problem that EventVue waited too long to address?

EventVue was always a vitamin instead of a pain killer.  Conference organizers typically liked our product but none of them said they needed it.  It didn’t make their lives easier, make them more money or cut any of their expenses — it was just “nice to have”

How do you go from being a vitamin to a pain killer?

If you want to solve a conference organizers pain, help them make more money.

There are basically two ways conference organizers make money: ticket sales and sponsorships.  Which revenue stream they care most about depends on where they fall on the spectrum between a conference and a trade show.  Conferences typically have a low number of attendees, a high ticket price and the value of the event is mainly around the attendees.  Conferences care most about ticket sales because that’s where they make their money.  On the other end of the spectrum are tradeshows.  Tradeshows have a large number of attendees, a low ticket price and the focus is on the sponsors / exhibitors.

EventVue experimented with 3 different products. If you did it again, which one would you focus on?

Discover and social promotion tools in general.  Things that are interesting about this angle:

  • Conference organizers are HAPPY to pay hefty affiliate fees (often up to 30%) for any ticket sales that you drive for them.
  • No one has done a good job yet of turning attendees into marketers for an event.
  • Personally, I’m more likely to go to an event if I hear that someone I know is attending.  With Twitter, Facebook, etc, it should be easy to share that info and track affiliate links to show conference organizers which of their marketing efforts (or attendees) are the most effective.
  • Conference organizers are usually willing to discount tickets or give free hotel rooms to attendees who bring a crowd along with them.  Currently there is no good way to track or manage this data.
  • You will have way less friction signing up customers for a promotional tool than for a social network product.

Your post-mortem mentioned that Discover actually ended up losing money for customers. Can you explain why?

One statistic that is true for almost every event: 80% of ticket sales come in during the last 2 weeks.  This meant that showing the list of people attending the event actually had the opposite effect than intended. Instead of seeing their friends that were attending, they saw that no one had registered yet and assumed the event was a dud.

Who are the other players in this space?

Here are a few of the companies you should check out. Please don’t launch something new until you’ve looked at what they offer and have an idea for something new and innovative to bring to the table. The event industry doesn’t need more clones, it needs innovators. And by the way, I’ll let you in on a little secret they won’t tell you — none of these guys are making much money. Some are doing better than others, but none of them are getting rich off this yet.

Who are the event registration companies we should know about?

There are more but these are the ones we ran across the most.

Do you have any other advice for us?

Don’t assume that just because conference attendees want a way to network at events that conference organizers will jump to provide it. Conference attendees who used EventVue loved it! We wrongly assumed that since we were obviously improving the conference experience, organizers would want to pay for it. One of our customers memorably said “If I wanted to improve the conference experience I would buy everyone steak dinners. I don’t care about the conference experience. I care about selling tickets. What can you do to help me do that?”

I started EventVue because I thought it was crazy that people would spend thousand of dollars to fly across the country to attend an event to meet people without having any way of knowing in advance who those people were. Conferences are really just communities of people who are interested in similar things. I believe more today than ever that those communities deserve a place to communicate online. I want every conference I attend to use an EventVue-like product. And while there are some pretty big business challenges to be overcome, I appreciate your courage in wanting to try. For me personally, I want to stay as far away from the event industry as I can. But if after reading this you’re still crazy enough to try yourself, know that I’ll be here cheering you on.

 12 comments

My 3 rules about reading

I read a fair amount of books. The time commitment is hard for me as I’m not the fastest reader in the world, but I have an insatiable desire to learn new things and there’s nothing like a good book to exercise your mind and expose you to new ideas. Here are a few of the rules I’ve developed to help me figure out what to read and make the most of my time.

1) I don’t read anything that isn’t recommended to me

Amazon has literally millions of books available. I figured out a long time ago that I needed some filter to decide what to read. For me, that filter is my friends and their recommendations. I’m lucky to have a large group of smart people around me whose opinions I trust. There are one or two authors who I will read everything they write regardless, but other than that, I make few exceptions to this rule and so far it has worked out well for me. I always have a steady backlog of books to read. If you have any recommendations, let me know!

2) It’s okay to leave a book unfinished

If a book doesn’t capture my attention within the first chapter or two, I have no problem dropping it. I view my time as my most valuable asset. I’m not going to keep reading something just to say I finished it. I’ve also found that a lot of authors say everything they have to say in the first half of the book and then spend the second half rehashing all the same points as they strive to hit a certain word count. The minute I recognize this is happening, I set the book down and move on to the next one. I don’t leave books unfinished very often, but having a rule around this helps me not feel guilty about it when it does happen.

3) I give away every book I read

Moving sucks. Moving with massive stacks of books sucks worse. I’ve made it a habit to give away every book that I read once I’m done with it. Not only does it make moving easier, it gives me a fun way to share what I’m learning with my friends. I give away about half my books on twitter and the other half I give to specific people that come to mind as I’m reading through them. That said, I’m starting to read more on my iPad so that might put a dent in my book give-aways.

I’m currently reading Switch: How to Change Things When Change Is Hard by Dan Heath and I’m enjoying it a lot. This one was recommended to me by Rob Lafave and a lot of the ideas in the book have really resonated with me. While the book is about understanding the mechanics of change, I’ve found a lot of the concepts apply to software design as well. For example, Heath talks a lot about decision paralysis and how we tend to freeze up when we’re given too many choices. One of the tactics we can use to overcome this is to make the decision before we have to make the decision by setting up overarching principles that guide our decision making. It’s fascinating stuff. If you’re looking for a good book, check it out.

 8 comments

Boulder will be less without you

Today I learned that two of my favorite people in Boulder are leaving this town.

Matt Galligan is a good friend. We went through TechStars together and have been friends ever since. Matt has decided to double down on SimpleGEO and sadly that means moving to San Francisco so their exec team can all be together in one place. Matt is an incredibly smart guy who has an impeccable talent for sniffing out new opportunities before the rest of us do. It’s been fun watching Matt take the lessons he learned from Socialthing and apply them to SimpleGEO.  He’s a great networker and someone I am continually learning from and look up to.

Andrew Hyde is another guy I respect a lot. Between Startup Weekend, Ignite and his work with TechStars, few people have done so much for the tech community in Boulder as Andrew. He’s given his time freely over and over again and I know there are countless startups in Boulder that are forever indebted to him for his help. When Rob and I shut down EventVue, Andrew was the one guy who took us out to the nicest restaurant in town for a ‘non-acquisition dinner’. I won’t forget that.  But that’s just the kind of guy Andrew is.   Andrew has decided to go travel the world and I couldn’t be happier for him.

Matt and Andrew, I couldn’t be more excited for you but know that Boulder will be less without you. I’m honored to be your friends. I just wanted to take a minute to say publicly that I’m going to miss you guys and remind you that you better get your butts back here soon.

 1 comment

Live dangerously! It’s safer.

I was honored to speak at Ignite Boulder 11. For those unfamiliar with the format, Ignite is a national public speaking event where each speaker gets 5 minutes and 20 slides that auto-advance every 15 seconds. Topics tend to be quite geeky and the audience can get quite harsh to people who fail to entertain, educate and inspire. Ignite Boulder is the largest Ignite in the world and I set a new personal record of speaking to around 1,400 people.

It was a fun event and I’ve got to give huge props to Andrew Hyde and all the organizers for pulling off such an incredible event. Chautauqua is a beautiful venue and the fact that 1,400 people would show up to a predominately-geek event is quite a testament to the community we have here in Boulder.

My title of my talk was Snakes and Staircases and the idea was to point out the disparity between the things that scare us and the things are actually dangerous. In general we tend to be scared of a lot of the wrong things. My goal was to make us to take a step back and reevaluate our fears to see which ones make sense and which ones don’t.

My slides are also available on Slideshare if you want them.

I borrowed a lot of my statistics from a bunch of various sources. If you’re interested in this topic, you might enjoy checking out some of these books:

One of the most challenging things about a 5 minute talk is figuring how to cut stuff out.  Here are a few other statistics that I find quite fascinating that didn’t make the cut:

  • 15 times more people die from disease than from accidents
  • 1% chance of dying in outer space (assuming you go)
  • 1 in 4 odds of dying from attempting to climb k2
  • 1/112,000,000 chances of being killed in a vending machine accident
  • 1/5,913,000 chances of being killed by lightning
  • 1/477,300 falling out of bed

Live dangerously!

 11 comments

Why you should never use a CAPTCHA

I hate CAPTCHAs (you know, those squiggly bits of impossible to read text you have to fill out before you can do anything on some websites). I think all of us can relate to the experience of trying to register for a service or comment on a blog only to be stopped cold by an impossible CAPTCHA. Maybe you got it on the second or third try, but chances are you’ve also had occasions when you’ve bailed and decided it just wasn’t worth the effort.  Today I want to convince you to never add a CAPTCHA to your site.

Let’s start by looking at why CAPTCHAs were invented. The acronym stands for Completely Automated Public Turing test to tell Computers and Humans Apart. Quite a mouthful, eh? The idea is to have something that a computer can create but only a human can read. Whether or not humans can read CAPTCHAs is debatable, but that’s the idea anyway.  Lots of sites use these things to attempt to stop automated requests. For example, you’ve got to fill out a CAPTCHA to get a Gmail account, send a message with a link on Facebook or even just email directions on Mapquest. CAPTCHAs are most often used to stop abuse around systems where there is a high incentive for automated systems to be used, like spamming everyone on Facebook. There are also a lot of people using CAPTCHAs where an alternative solution would suffice.

My biggest beef with CAPTCHAs is that they are so freaking annoying for users. They add an incredible amount of friction to the process — friction that you probably can’t afford. Sure, some CAPTCHA’s are better than others, but none are great. I understand you want to protect your site from spam and abuse, but are you ready to lose potential users over it?  The trade off just isn’t worth it, especially if you are a startup!

One of the things I’ve noticed is that many people use CAPTCHAs when a simple non-intrusive spam-stopper would suffice. For example, say you have a blog and notice you are starting to get a large amount of spam comments. You decide to add a CAPTCHA to fix the problem. The thing is, you’re not big enough to be a victim of a targeted attack, you’re just getting generic spam bots. You don’t need a CAPTCHA.

It’s far easier to stop generic spam bots than a targeted attack. There are a lot of different techniques you can employ, but a simple option is to add an extra field with a tempting name like “email” to your form that is then hidden using CSS. Humans can’t see the field and as a result will never fill it out. Any request that comes in with the field completed can easily be eliminated as spam. The beauty of this is you have a pretty effective spam-stopper without ruining the user experience or adding any friction to the process. A simple technique like this is probably enough to stop the majority of spam bots.

But what if you really are big enough to be at the receiving end of a targeted attack? What if you’re Facebook or Google? They might not be fun, but aren’t CAPTCHAs a necessary evil?  I don’t think so. CATCHAs still aren’t going to protect you. The bad news is that most CAPTCHA systems have already been cracked using OCR software making it trivial for your system to be compromised. For the rest, hackers have been known to set up porn sites that require you to enter a CAPTCHA in exchange for access to the adult content. What are you going to do to prevent that? Not to mention, there’s a booming business in India right now for breaking CAPTCHAs. The going rate is $2 per 1,000. Can you compete with that? If someone wants into your site, I’m sorry, but your annoying little CAPTCHA isn’t going to stop them.

Some people have taken more creative approaches to the CAPTCHA problem.  Joe Stump tweeted the other day about one solution he discovered. You’ll see a lot of these around the web, often added by people who hate CAPTCHAs but haven’t stopped to think through the details. I remember seeing one approach that Hot or Not used that asked users to pick the 3 most attractive people out of 9 pictures. While these sort of solutions are more fun for users than a traditional CATPCHA, they are usually still pretty worthless at providing any real security. For example, with Hot or Not, the odds of a computer correctly guessing the 3 attractive people are 1 in 84. While those aren’t great odds for a human, they’re not bad for a computer — especially if you have a botnet at your disposal! Other approaches like the ones that ask you to do simple math or ask simple questions like “what is known as man’s best friend?” are vulnerable too. In most cases, all you’d need to do to crack the CAPTCHA is throw the question at Google and analyze the responses that come back.  These systems are often also vulnerable by having a limited list of questions to ask so it doesn’t take long for a hacker to build up a dictionary of correct answers to feed to the bot.

reCAPTCHA from Google is another anti-bot alternative.  They proudly talk about all the good they are doing by using the technology to help digitize books. But even reCAPTCHA can be broken with 23% accuracy and it’s just as frustrating for users as the other alternatives.

So where does that leave us?  CAPTCHAs are annoying, you probably don’t need one and even if you did it could still be broken pretty easily.

A balanced approach would be to add some basic security to stop generic bots but get rid of the CATPCHA altogether. Instead, watch out for suspicious IP’s and monitor for nefarious behavior (like spam links being sent to multiple users, large # of requests from one IP, etc).

There are services like Ellipsis Human Presence that offer non-intrusive human behavior analytical modeling to attempt to identify non-human site traffic. They use other heuristics like how you navigate the site or how you move your mouse to detect whether you act human or not. I’m sure their detection system can be circumvented with enough effort, but they significantly increase the cost for bad actors without pissing off your actual guests.

We live in a world where spammers are a real problem and must be addressed, but CAPTCHAs are not the answer. You simply can not afford the friction. By using a CAPTCHA you are making the internet a whole lot less fun for all of us.

 78 comments

Breadcrumbs in Rails

I’ve been working a little with Ruby on Rails recently.  One of the things I needed was a good module for handling navigational breadcrumbs.  I googled around a bit, but wasn’t able to find anything that fit my needs.  The closest to what I wanted was this example on stackoverflow.  It was a great starting point, but I ran into issues when I wanted to use nested controllers.  I wanted something a little more flexible.  Here’s my final solution.  I’m still a complete noob at rails, so feel free to point out any improvements you may have.

Features:

  • Splits up the URL and looks up the controllers for each section
  • Assumes you have a ‘name’ field on your data structure
  • Doesn’t link the last item since it should be the current pag
  • Works with nested controllers
  • Converts underscores to spaces and titleize’s the labels
  • Easy to modify to fit your own purposes

Code:

def get_bread_crumb(url)
    begin
        breadcrumb = ''
        so_far = '/'
        elements = url.split('/')
        for i in 1...elements.size
       
            so_far += elements[i] + '/'
           
            if elements[i] =~ /^\d+$/
                begin
                    breadcrumb += link_to_if(i != elements.size - 1, eval("#{elements[i - 1].singularize.camelize}.find(#{elements[i]}).name").gsub("_"," ").to_s, so_far)
                rescue
                    breadcrumb += elements[i]
                end
            else
                breadcrumb += link_to_if(i != elements.size - 1,elements[i].gsub("_"," ").titleize, so_far)
            end
           
            breadcrumb += " » " if i != elements.size - 1
        end
        breadcrumb
    rescue
        'Not available'
    end
end

Usage:

<%= get_bread_crumb(request.request_uri) %>

Which converts a URL like this:

/admin/posts/12/comments/8

to breadcrumbs like this:

Admin » Posts » Breadcrumbs in Rails » Comments » Great Post!

 37 comments

Integrity

I remember a couple weeks after I graduated college going to the movies with some friends.  The girl behind the counter asked “student?”  We all said “yes”.  Of course, none of us were technically students anymore, but the girl behind the counter didn’t know that and she almost certainly didn’t care.  We all still had our students ID’s and we looked the same as when we were eligible for the student discount.  We joked about how many years it would be before we got called out on this little loophole.

But then my conscience started bothering me.  You see, one of the most important things in the world to me is that people trust me.  I want to be known as someone you can count on to do the right thing.  Someone who won’t screw you over.  Someone with integrity.

And in that moment it felt like I had sacrificed all of that to save a dollar.

So in one of my prouder moments, I turned around, walked back up to the counter and said to the surprised girl behind the desk “I’m not a student anymore. Sorry I lied.”

That was three years ago and since then I’ve had far bigger opportunities to stretch the truth for my own benefit.  In fact, the temptation to compromise my integrity is everywhere.  It would be so easy to tack on a couple extra hours when billing for some contract work.  It’s so easy to lie just to make myself look a little bit better than I am.  But integrity is doing the right thing, even if no one is watching.  Every time I’m tempted I think back on the feeling I had as I walked away into that movie.

And I wouldn’t trade that for the world.

 6 comments

Hey Josh, what are you doing now?

That’s the question I’ve been getting about 10 times a day lately.  It’s been 4 months since we shut down EventVue and my life has changed a lot since then.  I wanted to give a quick personal update to those of you who care about me and are interested.

After shutting down EventVue, Rob and I were immediately inundated with messages from friends and strangers alike.  I was blown away.  The outpouring of support was completely unexpected and I want to say “thanks” to everyone who reached out.  You reminded me once again how lucky I am to be a part of this community.

Next, I decided to take a month and travel around Australia and New Zealand.  The scenery was stunning and the trip gave me a much needed break.  It turns out startup life can be quite exhausting.  We’d been at it for 3 years and I was working 12 hours a day, 7 days a week right up to the end.  Going to the other side of the world gave me a much needed opportunity to clear my head.  It also reminded me that other things in life matter more than just working all the time.  I met a ton of great people and their nonchalant attitude towards their careers was pretty contagious.  I left for down under with the intention of figuring out my next startup or job, but over the month I was gone I felt every ounce of ambition drip out of me.  It was great.

After getting back to the States, I started wading through the dozens of job offers that had come in while I was gone.  I considered a few of them, but the month off left me with some serious commitment issues.  I knew I wasn’t ready to do another startup, but I could already feel that itch starting to come back.  The more I thought about it, the less it made sense for me to take another full time job.  I hated the idea of taking a full time job when there was still a high chance that I would just bail after a few months to do another startup .  As they say, you only get to leave Google once.

So instead, I said “yes” to some offers for consulting and contract work.  And that’s mostly what I’ve been doing.  It’s been a good chance to work on projects I find interesting with people I like.  It’s also given me a great opportunity to get my work-life balance straight once again.  I’ve been getting outside more and have started to get into rock climbing.  I’m loving it!  Summers in Boulder are amazing and I’m looking forward to lots of hiking and mountain biking this summer.

Another benefit of the contract work is that I have more time to play with ideas for my next startup.  I’ve realized that startups are an addiction and I’m thoroughly hooked.  One idea in particular has captured my attention.  It’s too early to say much, but the basic concept is that I want to change the way we grocery shop.  I’m trying to learn as much as I can about the grocery business and I’d appreciate any insight or introductions you can make along those lines.  I’m not planning to jump head-first into another startup quite yet, but it’s fun to start dreaming of new ideas again.

So, how’s life?  Better than I deserve.  I’m convinced we made the right decision to close EventVue — if for no other reason than I’m happier now than I’ve ever been.

 11 comments

My talk on AB testing at BDNT

On Tuesday I gave a 5 minute talk at the Boulder New Tech Meetup on the value and dangers of AB testing. It’s an area where I’ve made mistakes in the past and it was fun to share my perspective on the topic.

Here’s the entire video from the event.  I start talking around 19:22.

Thanks to Robert Reich for the opportunity to speak, Julie Penner for doing such a great job MCing at the last minute and to Dan Moore for linking me to the video.

 3 comments

Simple expandable menu with jQuery

I recently needed a nested and expandable navigation system (accordion style) for a project I was working on.  I took a look around at the existing jquery plugins and was surprised by the complexity of them. To me, there’s no reason for a simple menu to require 200 lines of JavaScript.  Thankfully jQuery makes it possible to pack a lot of punch into just a few lines of code.  While I recognize the other plugins offer more functionality, I wanted to show that these days it sometimes makes more sense to just roll your own solution. Not only does this solution cut down on the number of bytes that the user has to download, but you’ll also have code that is more concise and easier to maintain.

Click here to check out the demo and download the code

Here’s the jQuery magic that I came up with:

$(document).ready(function() {
    $(".menu").click(function(e) {
        // unhighlight the previous menu selection
        $(".menu .selected").removeClass("selected");
        // highlight the selected item & its parents
        $(e.target).closest("li").addClass("selected").parent().parent().addClass("selected");
    });
});

The HTML is a standard nested list and looks something like this:

<div class='menu'>
    <ul>
        <li><a href='/index.html'>My blog</a></li>
        <li><a href='#'>My profiles</a>
            <ul>
                <li><a href='http://www.facebook.com/joshfraser'>Facebook</a></li>
                <li><a href='http://www.linkedin.com/in/joshuafraser'>LinkedIn</a></li>
                <li><a href='http://www.twitter.com/joshfraser'>Twitter</a></li>
            </ul>
        </li>
    </ul>
</div>

And the CSS is easy to customize to match your own look and feel:

.menu {
    width:200px;
}
.menu a {
    color:#666;
    text-decoration:none;
}
.menu ul {
    padding:0;
    border-top:1px solid #CCC;
}
.menu ul li {
    list-style:none;
    border-bottom:1px solid #CCC;
}
.menu ul li a {
    text-indent:6px;
    display:block;
    padding:6px;
}
.menu ul li a:hover, .menu ul li.selected a  {
    color:#FFF;
    background-color:#006363;
}
/* nested items */
.menu ul li ul {
    display:none;
}
.menu ul li.selected ul {
    display:block;
}
.menu ul li.selected ul a {
    color:#666;
    background-color:white;
    border-left:6px solid white;
}
.menu ul li ul li {
    border-bottom:1px solid white;
}
.menu ul li ul li:first-child {
    border-top:1px solid white;
}
.menu ul li.selected ul li.selected a, .menu ul li.selected ul li a:hover {
    color:#FFF;
    background-color:#7EB0B0;
    border-left:6px solid #006363;
}

That’s it. Remember – guard your bytes!

 7 comments