Atlanta, ruby, Sports, startups, Technology

Touchdown Nation finds a rhythm – Atlanta Startup Weekend 3, day 2

Touchdown Nation was formed yesterday (the name was updated from Football Nation so we could secure a web domain, twitter account and be unique on Facebook).  As a part of Atlanta Startup Weekend 3, we’re building an engaging social game for Facebook in less than 3 days.

The first 24 hours of Startup Weekend are a volatile time.  During ASW1, a huge swath of business and marketing types ran away after we chose to work on Skribit, and more attrition followed during early and mid Saturday afternoon as the team lurched into action.  During ASW2, many, MANY teams flamed out when they realized that the person who pitched the idea was trying to find free development & sales labor to build their idea in the coming months.  This year, at least 2 of the 8 teams totally cratered in the first 24 hours.

It happens.  Teams realize they can’t agree on what to build, that they can’t build what they want to, or that someone else already built the whole thing.  It’s not always a reflection on the people involved.  In some cases, I think it IS a reflection of the idea pitched.  Vague pitches about ill-defined products that will take a year to build are recipes for team implosion.

The first 24 hours of Startup Weekend are kind of insane.  You have teams of 5 to 20 people trying to get on the same page to figure out exactly what their project is, how to make money, and how to work effectively with a dozen strangers.

Touchdown Nation was no exception.  We had a great working session on Friday night deciding many of the things the game was and was not.  It changed a decent bit from my original pitch, or at least what I had in my head, which is a good thing and a great reflection on the team.  We came into this morning with a list of things to get done by noon, and we basically hit all of them, but there was still this sense of urgency.  We had a loose plan, a new name, and the technology infrastructure was in place, but hadn’t had any time to actually build the technology, the business, or the marketing.  It’s an uneasy feeling, which makes people on a team want to spend more time generating certainty instead of building something.

In the afternoon, we started to do less planning and more doing.  There are amazing times in startups where I believe the core team is in a rhythm.  In a rhythm, people on different teams understand the common needs enough that problems are worked out in conference calls, not huge meetings, and I believe Touchdown Nation hit that stride today.  When everyone is running toward the same goal, you need less meetings to reach that goal.  Course corrections happen through natural conversations, not huge meetings.

We hit that moment today.  Code started flying, blog posts started getting posted, you name it), but we got everyone technically ready to do their job.

That’s enough for now.  We”re very exicted and having a blast.  Check out @TouchdownNation for the latest news.

Game On!

-Rob

Atlanta, Sports, startups, Technology

Football Nation – Atlanta Startup Weekend 3, Day 1

It’s been 2 years since the first Atlanta Startup Weekend, which I view as a landmark moment in the growth of Atlanta’s technology startup community, and certainly a pivotal moment for me personally.  It grew both my ambition of what startups could accomplish in Atlanta, and my network of like-minded startupy people.

We launched Skribit in 3 days, and it remains one of the most successful Startup Weekend companies anywhere.  Last year, I spent time on the Seed Stage Records and Giving Time teams.  I left Seed Stage after Friday night, before it proceeded to implode on Saturday, and spent the rest of the time on Giving Time, which may be viable but hasn’t launched yet.

I pitched an idea at Startup Weekend, didn’t last year, and decided to pitch an idea this year.  Whether or not my idea was picked, my main goal was to launch whatever app I did work on by Sunday night.

Imagine my surprise when I presented an idea to build a social game for Facebook centered around Football, which I initially called Football Nation (the actual name is TBD), and I ended up with a team to build it!  The idea is that football is super popular, and Facebook apps are super popular, but nobody has effectively combined the two – instead, people are busy building farms, restaurants, and mafias on Facebook.  Not only could a football app be successful as a standalone app, it could provide a foundation to build a niche in social sports games and eventually a way to dethrone EA as the king of sports games.  (Frustration with NCAA Football 10 was actually the pain point that generated this idea.)

Our team is pretty enthusiastic about football.  We’ll be streaming Georgia Tech v. Duke on a projector tomorrow, and probably some other games.  Our team was not as well versed in Facebook social games.  In perhaps an odd move, we spent the first 30 minutes or so of our team meeting playing  the currently popular Facebook games in teams of two.  Mafia Wars, Restaurant City, Farmville, YoVille, and I even assigned Sorority Life to a guy I knew could take it. Hopefully they can detach from these new-found addictions enough to work on our app tomorrow. 🙂

I think we’ve got a good concept, and great thoughts from the team helped solidify answers to some key product decisions.  I am immensely grateful to have a strong development team which I can trust implicitly because I have worked with most of them.  I’m excited about the non-developer elements of our team too because they had great input and we need strong design, marketing, biz dev, etc. to make this thing work, and we have all of those skills.

If you’re a creative type and interested in helping, please find us.  We have a great start, but I believe that with this app, we have  a nearly unlimited need for UI input and asset production to make this game really rock.

If you’re planning to come to a startup weekend, prepare an idea to pitch.  The process of running  a team that has chosen your idea is amazingly different from being a part of a tea built around someone else’s idea.

Tomorrow is going to rock.

Atlanta, startups, Technology

Atlanta Startup Weekend 3 – Launch Something!

Atlanta Startup Weekend 3 is coming November 13th-15th.  Based on my experience at the first 2 Atlanta startup weekends, I want to challenge anyone who is planning to attend to come with the intent of launching some version of their company & product by Sunday night.

The first Atlanta startup weekend created Skribit, which launched VERY late Sunday night of that weekend, and was one of the first Startup Weekend projects to take on a life of its own beyond the weekend.  With every ASW1 attendee united on 1 project, we had an amazingly balanced and capable team, but we lost a lot of people after day 1 when they decided the idea wasn’t for them.  Skribit received funding from Georgia Tech’s Edison Fund, and is actively being worked on by Paul Stamatiou and others.

The second Atlanta startup weekend took on a new format.  Instead of having 60+ people create one company, we split into multiple groups to launch multiple companies – this was a good thing, although it led to a skewed distribution of resources (Reepli may have had 1/3 of the total developer pool, possibly with zero non-developers.)  I’m not convinced that the multiple projects led to any less attrition on day 2 than the ASW1 format.

The other big change was that teams were no longer encouraged to launch their company by Sunday night.  I think this was a VERY bad thing.  Businessy types who had been hunting for a technical co-founder for months pitched their huge-scope ideas.  Developers don’t show up at Startup Weekend to get another job, especially on ideas that several other developers have already declined to work on.  Friday night, I decided to join the Seed Stage Records team.  Late that night, when SSR’s goal for the weekend was set as launching a static web page by Friday night and doing more in the months ahead, I bailed.  The team imploded on Saturday over vision & direction issues that wouldn’t have been a problem if they had been focused on launching a minimum viable product by Sunday night.  Saturday morning, I joined the GivingTi.me team.  I rolled up my sleeves and put a lot of work into building a launchable site over the next 2 days.  It didn’t launch, mostly, I think, because there was NO pressure to launch.  Nobody cared if Giving Time launched by Sunday night, so there was no pressure to work until 1 AM at night, no pressure to cut scope, etc, etc.  It STILL hasn’t launched 9 months later.  As best I can tell, none of the code our team wrote will be used when it does launch.  Almost sounds like a wasted weekend, but I still had a blast.

I believe the first Atlanta Startup Weekend did a better job of building community and launching product.  ASW2 did launch TwitPay, but it germinated from the core Merb team, and I’m not sure the weekend did more than give those guys a kick in the pants to launch a rocking idea (to their credit, they DID launch something).  ASW1 did a LOT more to build Atlanta’s entrepreneurial community.  Part of that is because ASW1 was a part of Atlanta’s Great Awakening.  In many cases, it was the first time many of Atlanta’s startup-oriented minds met and had a chance to size each other up.  I think that’s too flippant, though.  The process of fighting over the concept, scope, and design of Skribit to successfully launch it in 3 days led to a better product and a better community.  At the end of ASW1, I knew who I wanted to work with again, and who I did not (AND I currently work with 2 of my Skribit co-founders).

So my call for Atlanta Startup Weekend 3 is to LAUNCH SOMETHING.  Don’t pitch an idea that can’t be launched by Sunday night.  Don’t join a concept that needs 6 months of work to launch – this isn’t startup speed-dating.  Don’t let your first team meeting degenerate into 1 year planning meetings and a goal to launch a landing page.  Find a great idea with other smart Atlanta / SouthEast regional people to work with to LAUNCH some version of that product in 3 days.

And if you’re working on a startup either full-time or on the side, the same challenge is out there.  Launch Something so you can begin getting customer feedback, iterating on your idea, and learning, instead of thrashing on an unlaunched app.

ruby, Technology

Flex Remoting in Ruby? Easy Choice.

I’ve had a rocky relationship with Adobe Flex.  An awkward attempt to migrate an existing app to Flex caused several strong reactions and cost a good bit of developer goodwill.  The details of that decision are messy and irrelevant.  The experience sucked.

On the other hand, I could not have built the FeatureFrame technology without Flex.  There’s no simpler way to build a widgetized video player with embedded applications.  The same pains of horrible documentation, irrational design decisions, insidious bugs, and painful workarounds remain, but the things it makes easier pale in comparison to the obstacles of any other approach.

And of course in building a virtual world such as Elf Island, Flex is an obvious choice if you want to play it in the browser and build maintainable code (binary Flash files make a poor foundation for a sustainable product).

For most languages you might want to build a Flex app in, free, open options are available.  I had a recent need to prototype a solution that might also turn into a test fixture for our vendors to use in producing Flash apps, so Rails seemed the natural solution for simplicity of deployment and prototyping speed.

The main choices to support Flex Remoting calls in Ruby are RubyAMF and WebORB.

In trying to decide, I encountered a very useful comment in this thread:

"The biggest difference between what WEBorb provides and what RubyAMF(only
AMF alternative I am aware of) provides is workflow.  Weborb is a great
product written by guys who do java primarily.  So it follows the patterns
of having a Service layer that connects you to your application.


RubyAMF is written by a ruby developer."

Immediately, I know what my choice is.  WebORB is obviously the trap of over-architecture and suffering that pervades “correct” Java development.  A quick search on how to use RubyAMF (in a controller) confirmed my suspicions:


respond_to do |format|
format.html # index.rhtml
format.xml { render :xml => @people.to_xml }
format.amf { render :amf => @people }
end

When I see code like this and compare it to the WebORB or GraniteDS implementations, I just can’t imagine choosing those other paths.

Rails + RubyAMF is concise, clean and obvious in what it’s doing.  Yes, please.

Java, Technology

Outsource the Scaffolding

Just today, I twittered a link to an insightful blog post, “Here’s the Deadliest Catch: Hiring an Agency to Build Your Startup”.  The title is largely self-explanatory, and I may blog my own riff on it at a later date.  Digg is often raised as a counter-example to outsourcing development of a startup, with version one developed for $200.  So how do you decide what the right balance is for you?

Ruby on Rails has this concept of “scaffolding“, which makes it trivial to get a simple web application running to perform create/read/update/delete operations on a simple business object.  So if you wanted to build a basic address book, Rails could basically create that application with a one line scaffold generate script.  It produces a simple web interface, and handles all of the database calls for you.  Java code to accomplish the same task is typically more verbose, but even if you wrote it from scratch in any language, it would be fairly intuitive for an experienced developer with no knowledge of your business to immediately understand the app and how to extend and maintain it.

At some point, almost any app becomes more complex.  The current version of Digg could not be developed for $200, and I dare say it would be foolish for someone like Digg to build an application of its current complexity completely contracted out.

I’ve been in startups all along the continuum, and made transitions between different mixes of internal versus external product development and infrastructure.  My current opinion is to outsource the scaffolding.  If you’re deploying a java/tomcat/MySQL app on a plain vanilla linux distribution, you can probably have a contract sys admin put that together for you – any other competent admin can look at how it’s configured and fix your problems.  When you start depending on all sorts of custom extensions, configurations, replication, huge scale, and/or DB sharding, it’s probably time to hire some admins that can own that custom knowledge you depend on.

The same thing goes for product development.  Are you building out a marketing web site?  An app that could be built with Rails scaffolding?  Contract it out – good contractors will realize how easy it is and crank it out for cheap (though maybe more than $200).  Most capable software developers you would hire or have hired don’t want to build or maintain that stuff anyhow.  Save internal development for the custom, proprietary stuff you need to spend time on, the meat and potatoes code that differentiates your application from everybody else’s.  The stuff that will take even a good developer more than a couple of hours to really comprehend.  Start throwing the switch to internal resources when it starts to get complicated – you’ll be much happier.  Trying to insource knowledge of a complex application that’s already been written by someone else is doable, but quite a challenge.

Atlanta, Java, Technology

The Next Episode

Back in March, I reached a decision to leave WeTheCitizens and spend some time in a contract role with Premiere. At the time, I expected that a contract gig would let me spend less after-hours time thinking about the day job, and more time on side projects and other interests. It turns out that even as a contractor, I cared about what I was working on. I consider that a good thing, we built up a good team, cranked out some pretty cool software, met some awesome people – I truly enjoyed my time at Premiere. The challenge for me on contract, was balancing life with billing more hours. In some ways, having a dollar amount directly attached to each hour of your time helps you better value your time. In other ways, it’s easy to imagine how working just a few more hours that week can earn you a shiny new gadget.

In spite of that, I was able to hatch FeatureFrame during my off-hours. It did occupy much of my creativity, and the process of building a product prototype, a pitch for Startup Riot, filing a provisional patent, designing a logo and business cards, and creating an actual business entity has been exciting, challenging, and in a twisted sense, fun. Many thanks to my Twitter posse, who often functioned as my co-founder, providing feedback and helping with decisions where I needed more than just my opinion. No I do not have stock options for any of you. Some interesting FeatureFrame news may yet be around the corner. It is still an interest and a passion of mine, and it will live on, but it’s not quite ready to be my main job.

The other thing I suspected when I left WeTheCitizens was that there were some interesting opportunities out there that weren’t crossing my inbox either because they were being filled by recruiters we’d used at WeTheCitizens, or because people generally seem to have the (often correct) impression that an executive in a startup isn’t really looking for another opportunity, at least until the startup’s been bought/folded and the earn-out is done. Being on contract actually did seem to send a clear signal, “Hey, I won’t be doing this new gig for too long, and I’ll need something interesting to do after that.”

A few moderately interesting things came and went, but one opportunity stood out, and I’m now a few weeks into my new role with Good Egg Studios. For all the times we jabbed at one of my Premiere colleagues for his work on Barbie.com, I never thought I would be working to build a virtual world for kids.  But here I am working on Elf Island.  A glance at the site and the blog should begin to make it obvious why.  This is an amazingly talented team, with the right marketing, the right funding, and the right product at the right time. The creativity and talent of the creative team is off the charts, and has combined with some talented technical resources to build a virtual world that a generation ahead of what kids are currently using.  The $2 billion valuation of Webkinz and Disney’s $700 million acquisition of Club Penguin are both examples of companies who have made this space extremely profitable.  The “secret” of Elf Island and our “play games, do good” mantra (which allows users to directly help non-profit causes) are going to be very sticky features that I think kids and adults will enjoy (even before launch, we’ve already had eager & hopeful users build us a fan site).  Our office space in west Atlanta is a win both for commute and for awesomeness – I need to take some photos, or come by and visit some time.

So that’s the news.  We are hiring a Java developer, a Flex developer, and a technical project manager (dev mgr?), so if you are somebody or know somebody who would enjoy such a role, do let me know.

Technology, Uncategorized

Create TinyURL like URLs in Ruby

Some Ruby on Rails side-project hacking I’ve been doing led me to need to generate shortened URLs.  The ShortURL gem is fine if you want to use TinyURL, Snurl, or some other external service to generate and manage your URLs, but in my case, I need to host the URLs so I can track usage statistics and redirect to a URL determined at request-time.

I wanted to avoid generating curse words, or any words for that matter, so I opted not to use vowels rather than try and figure out something more clever.  I also had no requirement to obfuscate the sequential nature of the generated value.  The result essentially converts a number to a base 54 string suitable for use as a URL parameter.

URL_CHARS = ('0'..'9').to_a + %w(b c d f g h j k l m n p q r s t v w x y z) + %w(B C D F G H J K L M N P Q R S T V W X Y Z - _)
URL_BASE = URL_CHARS.size

def generateUrl idNumber
localCount = idNumber
result = ”;
while localCount != 0
rem = localCount % URL_BASE
localCount = (localCount – rem) / URL_BASE
result = URL_CHARS[rem] + result
end
return result
end

My usage will be to convert the numeric primary key of my model objects to this hash, so that Person #1174229 could be referenced as the short url http://app.com/p?i=7sH_

Obviously, the straightforward business of inserting this value into your table, performing lookups on it, etc is omitted and should be fairly straightforward to a seasoned developer.  The function can fit almost a half-billion values into 5 characters, and doesn’t experience the stack overflow issues of some recursive implementations I found, so I think it’s pretty useful.  (7 characters give you 1.3 trillion possibilities… nice!)

I can see a pretty cool plugin being built to solve this problem… maybe I’ll get around to writing short_url_fu one of these days.

Technology

Startups & the Superhero Origin Story

Josh and I went to see “Iron Man” after Startup Riot this evening, and Josh commented how the first superhero movie is always the best.  I tend to agree, and for me, I think it has a lot to do with my love of startups (and why Superman is lame).

The superhero origin story typically follows some flawed individual who sees something wrong in the world that gives them a reason to become something great.  Startups are based on flawed individuals who see a problem and think they have a solution.  Both startups and superheros make mistakes along the way, go through awkward phases where they come to grips with their “powers”, need to reevaluate their solutions, and can emerge powerful and revolutionary.

To me, the story of a successful startup closely follows the superhero origin story.  The sequel can be done well – watching Google mess with the wireless spectrum auction was interesting, but not nearly as cool as watching them rise from nothing to trounce Yahoo, Microsoft, Altavista, and the rest in search.  The mistakes made along the way are part of the charm, and nothing will ever be as epic as their rise to fame.  Superman is lame because he’s a golden boy – he basically shows up with super powers and no real flaws.  Cheering for Superman is like getting excited about the epic rise of ESPN 2.

Java, Technology

Running Eclipse on MacBooks with Java 6

The title of this post is a bit misleading in that you apparently cannot run Eclipse on a MacBook Pro with Java 6 set as the default JDK.  Never mind that it took Apple a year and a half after the release of Java 6 for Apple to support Java 6 on OS X in the first place.  I thought Apple was “developer friendly”?  My experience on a Mac has usually been slightly better than working on a PC, except that the failings of a PC can usually be dismissed as Microsoft’s incompetence.  Apple seems to act more like a highly-opinionated jerk.

After I upgraded to Java 6 (and then had to manually change my JDK symlink even after the upgrade), Eclipse refused to start.  The system log showed:

[0x0-0xa90a9].org.eclipse.eclipse[4265]: _NSJVMLoadLibrary: NSAddLibrary failed for /System/Library/Frameworks/JavaVM.framework/Versions/CurrentJDK/Libraries/libjvm.dylib
[0x0-0xa90a9].org.eclipse.eclipse[4265]: JavaVM FATAL: Failed to load the jvm library.

To resolve the issue, I edited /Applications/eclipse/Eclipse.app/Contents/Info.plist, and uncommented this line:

/System/Library/Frameworks/JavaVM.framework/Versions/1.5.0/Commands/java

Problem solved.  Apparently Eclipse uses 32-bit SWT-Cocoa bindings, and Apple just decided that they weren’t going to support 32-bit SWT any more in Java 6, breaking any app that uses them in the process.  So the fix is to just run Eclipse under Java 5 (Java 6 projects still work in this setup).  I’m starting to lose track of the consumer-unfriendly attitudes I’ve experienced from Apple.  Their version of Java 6 is late, incomplete, and lazy.

I will declare this now – Apple is every bit as evil as Microsoft.  If Apple EVER gets the market share that Microsoft once held, Microsoft’s anti-trust violations will seem like trivial misdemeanors compared to what Apple would do with such power.  I need to gather my thoughts on this soon and elaborate on this point.

Atlanta, FeatureFrame, Technology, WeTheCitizens

Startup Riot is HUGE for Atlanta

Startup Riot will rock Atlanta on May 19th, 2008.  ~70 startups will have 3 minutes each to pitch themselves before an audience of other startups and prospective investors, employees and customers.  Bilgistic creator Sanjay Parekh has been a force in organizing this event, recruiting his high-school colleague Drew Curtis of Fark.com as the keynote speaker, and getting more than 70 regional startups signed up to pitch.

Atlanta has had several cool startup community events.  TAG‘s annual business launch competition is underway again, Atlanta Startup Weekend launched Skribit, and we have had awesome unconferences such as 2 years of SoCon and last year’s BarCamp Atlanta.

What sets Startup Riot apart is that it is ORIGINAL and UNIQUE.  I haven’t heard of ANY other cities hosting events where an early stage company can pitch their company to investors and customers for FREE.  Sanjay has certainly been working hard to make the event happen, and the costs seem to already be covered by sponsors.  It is an event I can see other cities copying, and it’s starting here in Atlanta.

Of course I have a vested interest in Startup Riot.  My previous startup, WeTheCitizens. will be pitching.  I’ll be pitching (for a whopping 3 minutes)  FeatureFrame, a video platform for independent film-makers and commercial content-producers, but I’m also interested in the community aspects.  Many, many startups that I know of will be using this event as a major catalyst for them to build their pitch and move their business forward.  I can’t wait to hear about what dozens of other Atlanta startups are working on, and for Atlanta to pioneer an event that other cities will undoubtedly look to reproduce.