Bad Dinosaur!

You Should Check This Out

CollegeJobConnect | Better Undergraduate Recruiting

Monday, May 17, 2010

Solving the "Marketplace" Business Model

I came across an interesting article today about how to solve the "marketplace" business model issue. The article was posted on A Smart Bear and you can read the full text here. I wanted to share it with the Good Dinosaur collective, perhaps a rousing entrepreneurial discussion will ensue.

There are several inherent difficulties in establishing a market place:

  • You have a double-sided market that you must capture. This is also known as the chicken and egg problem.

  • Your venture itself must be two companies in one, appealing to both sides independently to win adoption.

  • Size can matter. You often can't bootstrap your way to success when it comes to market place establishment. It can be a go big (and spend big!), or go home situation.

The article discusses several viable ways to persever over these challenges, such as attempting to build up the supply side of your market first by offering incentives or targeting a specific niche so you can carve out a space for yourself.

At CollegeJobConnect, we've experienced the challenges in establishing a market place, so this article rings especially true. We are currently pursuing several campaigns to build our roster of companies that want to leverage us for undergraduate recruitment come the fall (attack the supply side). We are also setting up several student affiliate programs at our target schools to increase undergraduate adoption (win both sides in parallel, carve out our niche, scale up quickly).

I'd be more than happy to discuss at length with anyone that is interested. And if you know enterprising undergraduates that are interested in working with our startup, please let me know. Exciting stuff!

Monday, March 22, 2010

What Will Be Facebook's Adwords?


In the summer of 2004 I was interning at an NYC investment bank. We were all handed a booklet that contained the resumes of everyone in the program. Eduardo Saverin was part of our group and stuck around for about 2 days, deciding to abandon the corporate world in favor of his startup. On his resume, he had listed "Co-founder of The Facebook (thefacebook.com), an social network for Ivy league undergraduates that currently has 11 thousand members and is valued at over 6 million dollars. (I can't remember exactly so those numbers might be a bit off, but they are "ball park" close).

A few short years later, Facebook is now open to the masses, recently surpassed 400 million members, and eclipsed Google to become the most visited site in the United States.

Facebook did a great job to popularize itself. Mark Zuckerberg pitched his social graph thesis to gain interest and the creation of a developer's platform was an ingenious move. Facebook has made it in a big way. It has a larger user population than all of the United States by more than 100 million people. Think about that for a minute. If every man, woman, and child in the United States had a Facebook account (which most do), we'd still be short another 100 million people (so throw in another 12.5 NYC's and we are even stevens). Even more powerful, of those 400 million users, a large portion checks their account at least once a month, at a minimum. It is a large and sticky service.

The company is reportedly on pace to produce between $1-$2 bn in revenue for 2010, which is fantastic, but I wonder what will be Facebook's money maker that puts their revenue engine in line with their customer and product achievements. A similar story was seen with Google. The search engine was beloved by all that used it, but it's monetization method was not easily found. Larry and Sergey reportedly attempted to sell it to Yahoo! for a few million dollars as this seemed like the most lucrative exit. It wasn't until their flagship advertising platform, AdWords, was conceptualized and implemented that the cash started to really flow in. Facebook is clearly beyond this point, but what will take them from a $1-2 bn dollar company to the place they should be for a service with their size and integration into our world. What will be Facebook's AdWords?

Update: An article on TechCrunch points to a patent the company recently filed, which features a very global-esque looking virtual currency icon. If all money continues to go digital, could Facebook become the banking or transaction platform of choice for the web? It is already the platform that many use to share pictures, plan events, and communicate.

Friday, March 5, 2010

Thoughts: The Marriage Ref


Everyone's family is crazy. We all argue about the stupidest things. We get into heated arguments over things that are absolutely trivial.

To this day, my mother still hounds me about a head board that I used (and lost) freshman year of college to prevent my head from touching a stupidly unsafe in-wall heater positioned directly above my bed. I can tell you this for sure, that piece of furniture is long, long gone. It has been 9 years since our tragic loss. But yet, my mom will sling a "Jeff, have you figured out where it is?" or a "can you go back to your old dorm and check for it?" every now and again. Once we get going down this road, the discussion quickly devolves into how careless I am and how insane she is. I guarantee you, if she reads this posting, I will get a call. It will start off with some laughing and banter (Mom: "Oh ha ha, you are funny, I don't care about that stuff, I don't act like that ha ha") and will end along the lines of "Well Jeff, don't come back up to Vermont until you find that damn head board. You ruined your bed and don't even care" (hangs up the phone).

Seeking to capitalize on everyday squabbles such as these, the NBC braintrust unleashed a new show called "The Marriage Ref" where a panel of hosts reviews a family's fight and then declares a winner (and, more importantly, a loser). The first show had a star-studded line up, featuring funny woman Tina Fay, funny man Jerry Seinfeld, and all around beauty, Eva Longoria. Jerry Seinfield is also the shows executive producer, so it has to be good, right? Nope. I'm not a buyer.

Why not? I couldn't put my figure on it initially. My family gets into fights that are equally, if not more, stupid, silly, and annoying than the ones presented. And I certainly don't have Mr. Seinfeld or Mrs. Fay providing witty commentary or funny insights. But I just couldn't watch this show. I wanted to break my TV. Then I realized why.

Even though my family gets into its fair share of absolutely inane arguments that would fit in nicely with the ones presented by the show, I love my family and can thus deal with the complaining, the fighting, the absurd whatevers that inevitably take place. I don't love the families presented. Not at all. I can look back at past personal family feuds and smile and laugh. Our problems seem funny. But, without my love for the individuals involved, there is nothing keeping my inner Hulk from becoming immensely angered and annoyed, so I really don't see this show ever agreeing with me. Anyone else watch this show and have opinions?

Hi Mom!

Monday, March 1, 2010

Kevin Costner is Full of Sh*t

Kevin Costner is full of sh*t ... when it comes to startups at least. Build it and they will come. I implore you, do not listen to this man! This line of thinking is out in left field (har har).

I have to admit, I used to subscribe to this tag line. A few years back, I felt that if the idea was there, all that was barring a venture from success was time, effort, and determination. As a result, several of my early projects were drastically over engineered and tragically under utilized.

Case in point, in a 2005 project a friend and I wrote an entire professional network platform. It was Facebook meets LinkedIn (this was back when FB was still only for college kids and LinkedIn was lame). We were going to make the professional network that young professionals wanted and needed to join. We would monetize it somehow, but with the eyes and ears of tomorrow's top earners, we felt this would "fall into place" (don't follow this either). We wrote over 50,000 LoC. It did everything: secure login, password reset, profile creation, group formation, group messaging, secret groups, public groups, photo upload, friend requests, etc. etc. etc. We saw about 150 members over the next few months with few "sticky members." The issue wasn't that we had built a bad product / service, but more that we hadn't done our homework and gathered real world data before setting up shop.

What could we have done differently? We should have given a big middle finger to Kevin Costner and incrementally tested our thesis: young professionals (especially those in major urban environments a la New York City, Boston, DC, and so on) need a better way to network in the work place. At the very least, before we wrote a single script, we should have sent out an email to our friends (we probably could have gotten 500+ addresses, all in our target demographic) and asked if this perceived pain point (them: "we need better networking capabilities!") was a reality. If yes, did our proposed solution solve the problem? Make it worse? After passing these first sanity checks and receiving some initial buy in, we then could have produced a vastly trimmed down initial service (minimally viable product) to test actual adoption and utilization and gone from there. These would have been intelligent, no brainer steps to have taken. But as developers we often don't do this. We get into the groove and let the code fly. Projects like this burn you out both emotionally and entrepreneurially. You only have so much fuel in the furnace and hours in the day, so choose wisely.

This insight sprung up in my head over the past week when discussing a friend's startup idea. (No, not Bad Dinosaur). He had built a great product and wanted me to test it out. I told him I'm not going to be one of his likely early adopters and to go to XX [a popular blog dedicated to people he'd likely want to start off with] and start recruiting people (could even do this before any coding whatsoever). See if they are interested. If so, why? If not, why not? Which of the first features did they think were absolutely necessary, which were nice-to-haves, and which were unnecessary?

When giving a startup a go, you certainly have to have that optimistic dedication and drive to succeed as Kevin Costner demonstrated in "Field of Dreams." But rather than going whole hog right out of the gate, leveling his entire farm, and hoping for the best, Mr. Costner likely should have only hashed out a pitchers mound, picked up a few bats, and laid down some old shirts as bases. Then he could see if a any corn stalks began to rustle at night, or if that voice in his head starts to whisper further instructions ("now add bench seating, we want bench seating" || "no, I meant build a basketball court, dummy!").

Saturday, January 30, 2010

Don't Be A Fatty (Rails Controller)

WYMC
(why you might care is my effort to help you make your decision to read this posting more efficient. WYMC is a quick summary and the high level questions I pose so you can determine if you'd like to read the whole article or not)
---
During a project's build, I decided to use the ApplicationController / session store to implement a high level, expandable filtering system. Design decision allowed quick development, but fattened up the ApplicationController and feels more like "The PHP Way" rather than "The Rails Way". Critiques of the currently implemented system and viable alternatives requested.

As some of you know, I accidentally bid on a consulting project a month or so ago and was awarded the mandate. Oops. One of the major requirements for this application was a filtering system that was user specific and semi-persistent (filters needed to hang around while the user was logged in, despite jumping around to different views). The filtering system needed to be easily added to a model / view as per the client's request and adding / removing which criteria were "filterable" needed to be immensely flexible (as it was not set in stone what dimensions we would want to filter upon for any of the given models). The number of total users using this application at any one time would be very low. Oh yeah, and all this needed to be built super fast.

With an eye on speed of initial development and ease to quickly and seamlessly expand / extend down the line I set off down the coding road. I ended up with the following work flow for the filtering system. I look to you, internet, for feedback.

I leveraged the ApplicationController and a before_filter to scan for any new filters being added or removed via the params hash on each page load (ApplicationController#handle_filters). This method either adds or removes a specified filter to or from the session hash, for example:

session["#{controller_name.downcase.singularize}_filters"].push( params[:filter_to_add] )

I thought about associating the filters with the currently logged in User, but this seemed a bit overkill, especially given my time constraint. The session, while somewhat bush league, seemed like a good fit.

Next I created a shared/filter_controls partial that can be dropped into any model's view, which renders a standard filter control with a pre-populated list of acceptable filters for the current controller / model.

Now filters can be added / removed from the session and a nice UI component is readily available. How do they actually trim down the items returned? To make a model "filterable" I added a #find_all_matching method and pass it the model-specific session key (Dinosaur.find_all_matching(session[:dinosaur_filters]). This method finds all if the passed filter hash is blank, otherwise it processes the filters and sets up the appropriate set of conditions to apply to the query.

Positives: quick build; dead simple to add a filter; ApplicationController handles where to put the specified filter based upon the current controller; filters are semi-persistent; making a model "filterable" just requires adding a custom method to process any associated filters.

Negatives: Feels more like "The PHP Way" rather than "The Rails Way"; Fat ApplicationController:

Gross. Look at all that meat.

Given the current system, where are areas of improvement? Given more time to develop, what would be a superior set up?

Tuesday, January 26, 2010

Listen To Me (and PowerPoint), Damnit!


I used to hate PowerPoint. I previously worked at an investment bank in NYC and putting together presentations were a major responsibility for us analysts. It was a task I dreaded. How dry! How dull! What a waste of time! What's the point?!

Well, my opinion has since shifted. About a month and a half ago I was catching up with a friend of mine (no, not Bad Dinosaur) when he asked if he could run something by me. We discussed a problem his company was having and the current solutions they were considering. I thought about the options they had on the table and told him that none sounded like very solid solutions, especially for the attached price tags. I was then asked if I would be interested in building a custom solution, to which I responded "yes" - hooray, now I'm an independent contractor!

A month later, I sat at my desk composing a PowerPoint presentation detailing the work I'd done. I was spinning the tale of how the application solved their problem, how it worked and, more importantly, why my "client" should subscribe to (or outright buy) this software from me. I started thinking, I used to hate this stuff. PowerPoint Presentations suck. Why am I not having any of these thoughts ripping through my head right now? It hit me: tomorrow morning I will have a captive audience of decision makers (those that control the purse-strings) for 45 minutes to an hour! I get to sell them for a full hour! I get to hand them a document that details the value proposition of what I'm peddling and they have to listen to me! Why do I think this is a big deal?

At my other venture, CollegeJobConnect, it is a constant battle to get people to give you even just 5-10 seconds of their time. Whether it's trying to spark interest from a group of students, sell our concept to a company that is looking to hire or just "recruit better," or gain the ear of a potential investor / advisor, getting them to listen and care is a constant battle. The venture's other co-founder (#your link here, when you get a blog!) and I are constantly discussing marketing principles, customer conversation rates, A/B testing, funnels, and all that good stuff to help improve our "attention grabbing"-ness.

So what's the point to all this? There are a few. The first is pretty obvious, but harder to put into practice then you'd think. Whatever you are making, selling, or providing, make sure you have an audience to market to and make sure you can reach them effectively. An audience with existing demand is even better as you will be their potential savior and have to do less convincing of why they should a) hear what you have to say, b) use or do whatever you are asking them to do. Complete strangers are hard to acquire as customers and unveiling some web-service (or any new product) that fills everyone that lay eyes on it with joy and happiness and compels them to share it with their friends is damn near impossible.

I truly thought that once CollegeJobConnect's website was up and we emailed out to various on-campus newspapers about our venture there would be a tidal wave of support and interest solely based on our concept. Not so much. Again, getting people's attention is extremely difficult, especially when a) they don't know you, b) they have no perceived need for your product / service, or they don't understand it.

Secondly, Get Involved. Broadcast what you are working on, what you're interested in, and what your specialties are. Build stuff and learn by doing. The only reason I fell ass-backwards into this job was because my friend remembered that I was "working on some web-thing that helped kids find jobs or something" (this is unfortunately his understanding of CollegeJobConnect, and he's a close friend!). Put a lot of pokers in the fire, you never know which ones will get hot. Furthermore, do you think I would have learned RoR, Capistrano, HAML, etc. without this new project? I don't like to swear, but no f*ing way. So don't be shy, jump into the deep end. Your efforts will yield benefits in one way or another, I promise you that.

Finally, all work is cumulative, so treat it as such. Looking back, yeah, I didn't like PowerPoint Presentation composition, but I should have attacked it with a bit more drive. I'm now spending time learning things I should have already had under my belt. If what you are doing is not too fun or seems dull (but pays the bills right now), take a step back and think about how it is preparing you for future projects and how it is making you a more skilled and valuable individual. Hone your skills and take pride in your work.

All in all, I now look at creating a PowerPoint presentation as a reward for hard work. It is my time to shine and convince you to do what I'm pitching. And I'll probably get more than a few seconds to do so :)

Tuesday, January 5, 2010

Riding the Rails Train

A few weeks back I decided to bite the bullet and get on the Rails Train. Complete confusion was my first thought upon reading through a few Rails tutorials. There is no end to the number of articles about Rails on the web (now there is one more!) and I was feeling a little lost trying to determine where to start. So I figured I'd start with the basics and began reading about Ruby (created by Matz in Japan), the base language of Ruby on Rails.

I purchased Ruby by Oreilly and read through it diligently, computer always at the ready to test out examples from the tome. Ruby takes a little while to get your head around, especially if you are a closet, wannabe coder n00b like myself. For example, I was used to iterative loops such as (for PHP):

for($i=0; $i > myCollectionOfThings.len(); $i++) { prints myCollectionOfThings[$i] }

What the heck are blocks? Yield? Bah! Needless to say, it took a few days to get used to.

So now with just enough Ruby under my belt to make me dangerous, I moved on to Rails. I started with the basics again, reading through each section of the Ruby on Rails website. I was thrust into a land of migrations, YAML, DRYing, REST, MVC (model, view, controller), routing, and other magical concepts.

As I pushed forward from topic to topic, making progress here, hitting a wall there, it started to make sense why the Rails logo-of-choice is a train. I started to feel like a coding conductor, all my objects easily aboard my locomotive, quickly eating up the track and rushing towards project creation (wow, that was possibly the nerdiest thing I've said in a long, long while). I remember being amazing, even feeling a little sorry for myself for not getting aboard sooner! I started to see projects written in other languages would take immensely longer to develop, and worse, would not be as elegant, well organized, and easily shared. The MVC framework and "Convention Over Configuration" principle guide Rails developers, from the newbies to the veterans, on how a basic web-app is structured, how to use as little code as is efficiently and "readibly" possible, and what goes where.

The train metaphor was also driven home recently when I was trying to deploy an app on a remote server. I felt like I was in the middle of a train wreck. As wonderful and beautiful as Rails is, it is also a complicated organism with a lot of deep, moving parts. Rolling out an application has even more layers to it and computers don't really do "hey, you *almost* got the configuration right", but rather just crash.

But after spending about and hour or two tracking down my issue and debugging (more to come on this via another post), I pulled myself from the twisted metal and wreckage, relieved and happy again. Rails does a great job of telling you where it is getting tripped up so you can Sherlock Holms your way out of it (the issue ended up being an outdated gem the hosting service was forcing me to unknowingly use, rather than my nice, shiny, up-to-date ones). Using a different technology likely would have taken me several times longer.

Gems bring another element to Rails that really should make anyone thinking about getting into Rails jump on in. The iPhone is the beautiful gadget, but the apps put it head and shoulders above the rest. Same with Rails. There is a vibrant, talented, and witty group of developers that contribute amazing add-ons to a Rails application ("There's a gem for that" anyone?).

It really amazes me how abstracted web development has become. A year or two ago I was writing straight HTML, crafting SQL statements, writing login scripts, and the like. Now its all HAML, find_by_this's, acts_as_auth, etc. While I initially felt a bit disconnected by this, the benefits it brings are immense: less time worrying about stuff that has been done and tested a thousand times leaves more time to build a better service and be a better developer.