LJMatch Anecdotes


Back in 2003, I launched a small dating website called LJMatch. The "LJ" stood for LiveJournal, which was the closest thing the world had to Facebook at the time.

I believe that LiveJournal could have been Facebook 7 years early. Their "Friends Page," where the latest blog posts of all your friends were displayed interlaced in chronological order, was similar to what we now call News Feed. Until very recently, their custom friends list feature was more functional than Facebook's own, and they employ a more flexible bidirectional "following" model. Also, LiveJournal blogs were publicly viewable (except for friends-locked posts) so there was no signup friction for casual readers; you only had to sign up in order to comment and create your own blog. It's frequently said that Facebook was unprecedentedly sticky for a site; it's not well-known that LiveJournal also was, due to the addictiveness of the ever-updating Friends Page feature.

Unfortunately, LiveJournal was rife with incompetence at all levels (design, technical, general management, basically everything was run poorly, and with a healthy serving of Dunning-Kruger for good measure), far too idealistic for its own good and overly pandering to a vocal and immature minority of its userbase, and also never really learned to scale their services. Today, after one ill-fated sale to SixApart (which also basically blundered about screwing things up), it's now owned by a Russian company that finally appears to be doing sensible things (like ignoring the demands of its whiny users). Interestingly, the one good thing to come out of LiveJournal was memcache, a technology which now powers a core part of Facebook infrastructure (though we had to de-incompetent-ize that too, and it's still fundamentally flawed in certain ways, depending on who you ask).

LJMatch was a dating website with the usual features (e.g. user details, location, seeking) plus a pseudoscientific Myers-Briggs compatibility test thrown in. I had listened to a friend of mine recount to me how different Myers-Briggs personalities were compatible with each other and turned that into a test that output results along a scale that was able to match up with a certain amount of transitivity. I tested it out on a single datapoint, namely Kimberly and me, and the accuracy seemed plausible enough to employ on the internet.

One key feature was a little meme I created that would crawl your LiveJournal profile and find your friends and if any of them had also taken the test, it would calculate your compatibility with each of them and display it all in a pretty little bar graph, ranking your compatibility level with each of your friends, and you could copy and paste this graph into your LiveJournal and it included a link that said "How compatible with me are YOU?" which led back to the site. The thinking was that people would post these graphs in their LiveJournals and their friends would see them and sign up too, especially teens who had people on their friends lists who had secret crushes on them or whatever. Today on Facebook this is called "inserting stories into a user's News Feed." I figured that the implicit mysteriousness of how the test worked combined with how people tend to see plausibility/patterns everywhere would make for good conversation and interest.

It turned out that I was right.

It took me six months to code up the site, and I launched it Memorial Day weekend of 2003. Due to the virality of LiveJournal's Friends Page and the little signup meme, it spread like wildfire and the server melted down within about three days (i.e. the day I went back to work; I took a "sick" day to go home and tend to it). In just three weeks, it had over 100,000 users. (What's interesting about these stats is that in this post-Facebook Platform world they sound absolutely pedestrian, but at the time it was a shocking rate of growth) I was pretty quickly on LiveJournal's site-load radar and among other things, they advised me to use their API (which was not very public, so I'd never heard about it) to do things like gather friends lists and stuff - I had ended up developing these elaborate screen-scaping libraries to scrape user profiles (which were, as I'd mentioned earlier, complete crap when it came to being well-formed markup of any kind).

The highlight of this whole experience though, are three minor anecdotes, which I shall now share:

1) Anecdote the First

I had set up various emails for customer service to help resolve problems people were having with their account (all of the emails came to me, with the destination email address used only by my mail program to sort them into different folders for each issuetype) and soon after the service became widespread, I received an email from a guy complaining that he'd taken the test, and he was LJ friends with both his girlfriend and his ex-girlfriend, and each of them had taken the test so now it was displaying everyone's results, and the test showed that he was more compatible with his ex-girlfriend, and his current girlfriend saw that and was really mad, so what should he do?

It wasn't very clear to me if he was asking whether he should break up with his current girlfriend and get back together with his ex-girlfriend (i.e. "O internet oracle, give me advice..."), or if he was asking me how he should try to explain it away to the current girlfriend and also, just how accurate was this test and could I tell him how the science behind it worked? After consulting with Kimberly a bit, I ended up telling him that it was just an internet quiz and he shouldn't take it seriously, and good luck with everything.

2) Anecdote the Second

Later, I added a new feature to the site called the "Sexual Compatibility Quiz." This quiz was even more pseudoscientific than the first - I just took a range of sexual activities and asked you how dis/interested you were in them, and then I'd calculate a range or inverse-range based on if the activity was a complementary activity (e.g. D/s) or a similarity one (e.g. kissing), and then I just totaled it up. Of course, this quiz also included a little graph meme that said, "How sexually compatible are you with ME?" (I was heading for the lowest common denominator here).

Well, after that one launched, I got an email from a guy who said that he was LiveJournal friends with his daughter, and they'd both taken the quiz and now he'd found, much to his creeped-out-ness, that the person they were each most sexually compatible with was the other. This guy wasn't so much asking me for any advice, but he stated that he didn't think his daughter had seen it yet (she'd taken the quiz first, so she'd seen the graph with her and her friends in it but not him) so he hoped that if he deleted his LJMatch account now and never spoke of it, presumably it would then not show up in her results if she later refreshed, and this ought to teach him not to participate in those stupid LiveJournal memes.

I didn't even try replying to that one.

3) Anecdote the Third

The whole "business model" of the site was that it didn't show your real name or LiveJournal name to other users, and thus interdicted at the point of contact. It would also scrape a bunch of entries from your journal, scan for any strings that matched your name or journal name, exclude those entries, and display the rest of the content (thus roughly anonymized) to people browsing profiles. You could buy "credits" via PayPal that would enable you to send messages to people and contact them, and later I implemented an unlimited monthly pass. It was all pretty cheap; the cheapest credits package was like only $5. It was the bottom of the recession then, so I didn't particularly feel like I should rely on an ad-supported revenue model (especially as Google hadn't yet brought AdSense to the world).

Occasionally, people would try to cheat the system by putting their names in their profile descriptions, so by default the system would place any new or updated profiles in a queue to be manually-reviewed by a human before being displayed in full. I built an admin interface for Kimberly (the main human reviewer) to scan the profiles.

There is this guy that I kind of know (not personally, but many people I know have met him) who is kind of an internet-famous douchebag, or tries to be. He maintains an ornate and custom-styled LiveJournal and fills it with entries implying how awesome he is, and generally tries to get around a lot (on the internet!) and be seen at parties. He likes to date younger women (he's in his 30s, I think) so LiveJournal's teen demographic was a bit of a hunting ground for him. He's a financial advisor of some sort and apparently read some guide to getting women somewhere that taught him a magic trick for parties (a friend of mine who had the dubious luck of being at a party where he showed up directly witnessed this) that involves keeping a couple hundred dollar bills in his wallet and pulling them out and doing a trick with them, with the real point being that you are flashing this money around to show women them how rich you are, because you carry around hundred-dollar bills.

When LJMatch launched, he immediately showed up in the admin queues, updating his profile every day and in particular, trying every day to somehow sneak his username into his profile (using spaces, symbols, etc). Not only did these fail to get past my non-naive regex-matching (the admin interface would attempt to pre-scan for forms of the person's username and highlight them, to make Kimberly's job easier), he apparently didn't expect that a human was actually reviewing all of the profiles. Kimberly eventually became very annoyed with him because he would show up day after day with some new lame attempt to game the system. It was only later that we heard the story from a friend of ours about him at a party attempting to impress women by flashing money that we realized that he wasn't just kind of lame that way, he was also, ironically, incredibly cheap (though we are the only ones who know his secret).


In case you are wondering what happened with LJMatch, the service turned out to be vaguely successful, in the sense that it paid for itself (if you don't count the cost of my labor, i.e. it paid for its hosting and bandwidth - I eventually had to migrate to a premium hosting service to get enough CPU power). By the third day of operation, it had already made back my startup costs and thereafter was able to generate enough revenue to pay for itself each month, plus a small bit of spending money.

The growth curve eventually leveled off at a steady state that was the same rate as LJ's own user growth (proportionally-speaking), and I ran it for about two years. While it was extremely exciting at first (basically a 24-hour adrenaline rush of crisis, customer service, and new feature development), it began to wear on me, especially as I wasn't really prepared to try and leverage it into something bigger and/or scale it out. Also, I had begun getting promoted into busier management jobs at PayPal and Kimberly was getting tired of how much time I spent running the site so one day I just canceled the subscriptions of everyone who had a recurring monthly subscription, refunded their last month's payment, shut it off, and archived everything into a zipfile.

Overall, it was an unique experience that, among other things, taught me the basics of configuring a box from the ground up and LAMP technologies (it was then where I developed a loathing for PHP and it's inconsistent handling of truthy/falsey values). I actually learned PHP just to write that site, which came in handy when I joined Facebook a couple years later.

Originally posted here on 2009 Apr 20, by Yishan Wong.