boutell: (Default)
Reaction #1: "it's a price to earnings ratio of 100 to 1. That's completely batshit insane."

Reaction #2: "assuming Facebook's earnings are anywhere near their height is like saying 'OK, so you conquered the entire world and every army is prostrate at your feet, but you haven't looted any treasuries YET, so the whole thing was clearly a bust.'"

Reaction #3: "CBS is valued at 30 billion dollars. It was probably worth a lot more in 1985 although I can't seem to find a figure. Facebook is saying they are worth 100 billion dollars. They have one billion users, and they know WAY WAY WAY more about those users than CBS does, and they can market to them individually. 100 billion is about right for Facebook."

Reaction #4: "the usefulness of a social network is a function of the percentage of your peeps who are on it, becoming asymptotic as it approaches 100%. Everybody is on Facebook, therefore nobody will ever join a Facebook competitor, even if they would like to. They are only going to get bigger."

Reaction #5: "I encouraged friends to try an alternative social network. They replied that they did not know the email addresses of their friends and so could not invite them. Facebook is worth at least $100 billion."

Reaction #6: "Google is valued at $200 billion. Their business is also based on contextual advertising, and they know less about their users in some ways than Facebook does. They have tried and failed to unseat Facebook in social networking. Facebook is probably worth at least half a Google."
boutell: (Default)
My jsonwrapper code is currently part of Facebook's official standard library for building Facebook apps in PHP.

I only noticed because I was poking around to make sure I'd unpacked their latest code in the right place and started to worry when I saw what seemed to be my own code in what should have been a brand new folder from Facebook! Hey, what's going on, that's my code... that's... oh yeah, I released it. So they used it. Cool.

Sadly, I put it in the public domain and left out any credit notice in the source out of a sense of modesty: jsonwrapper itself is maybe 30 lines of code, if that, and all it does is wrap somebody else's library that actually implements JSON for poor bastards who still have PHP versions earlier than 5.2 so that you can write code exactly as if you had 5.2. I didn't feel it was appropriate to take ostentatious credit for:

jsonwrapper.php

<?php
# In PHP 5.2 or higher we don't need to bring this in
if (!function_exists('json_encode')) {
        require_once 'jsonwrapper_inner.php';
}
?>
jsonwrapper_inner.php
<?php

require_once 'JSON/JSON.php';

function json_encode($arg)
{
        global $services_json;
        if (!isset($services_json)) {
                $services_json = new Services_JSON();
        }
        return $services_json->encode($arg);
}

function json_decode($arg)
{
        global $services_json;
        if (!isset($services_json)) {
                $services_json = new Services_JSON();
        }
        return $services_json->decode($arg);
}

?>
jsonwrapper has its own home page on my site, so I get some credit for it that way. And besides, taking credit for helping old versions of PHP limp along isn't exactly rock star stuff.

But was it a wise choice on my part not to say "w00t first, copyright me, MIT license, have fun" in a piece of code that might, I don't know, wind up in Facebook's standard client library? Nope. Next time I'll be smarter.

boutell: (Default)
Last year I wrote a Facebook application called Join My Band. It is not a frivolous application. It is a serious tool that helps you look for potential bandmates. And it's supposed to contact you if new matches are found in your area.

But hardly anybody uses it.

Today I was astonished to discover email from Join My Band informing me that some guy named Sam is in my area and has compatible musical skills and interests.

At this point I am incredibly busy and couldn't possibly join a band, but it's neat to know I coded this thing correctly and that Facebook has managed, so far, not to break their own API to the point where it doesn't work anymore.
boutell: (Default)
I have to say, Facebook has been kicking ass for me lately. Pretty much the entire Philadelphia salsa scene has arrived on FB over the last six months.

This is huge because it's quite difficult to learn names on a loud, crowded dance floor! Suddenly I know who everybody is and have at least a little insight into where they're coming from. Suddenly I hear about parties. Etc.

Facebook's official line is that they are not a "social networking site." They are a "social utility." They make this distinction because the phrase "social networking site" is associated with sites like Myspace, where people tend to have lots of fakity-fake Internet friends (*) to whom they feel no real connection. Facebook takes a different approach, strongly encouraging you to connect with real people you know from high school, college, work and other social circles. They want to be seen as a tool that enriches and strengthens real-world connections.

Almost everything on Facebook bends toward this end. The photo and note-tagging systems are great for connecting things you share with the real people that are in them.

I did say "almost everything." Third party Facebook applications (like Superpoke) are not especially impressive in this department. Though I've written half a dozen, I don't use any third party Facebook apps at all myself. But this is partly because the built-in capabilities of Facebook are very complete and well-designed already. There just isn't much room for non-frivolous third-party apps.

Facebook's "suggest a friend" feature has been particularly awesome in the salsa scene, rapidly filling in the gaps and putting people in touch. My biggest problem now is pacing myself so that I don't "friend" people faster than I can truly connect names with faces. I'd like to get this right.

If Facebook needed a case study to prove that Facebook is a useful social utility and not an emptyheaded "social network," the Philly salsa scene would definitely fit the bill. But Facebook doesn't need case studies at this point, I suspect. The big bang has already happened, in scenes all over the country. And we're definitely richer for it.

At this point, speculation about What Could Go Wrong With Facebook is like speculation about What Could Go Wrong With Google. We love them, we really effing love them, but what if they someday woke up and decided to be evil (**)? So far, neither company is particularly motivated to be evil. But Facebook, unlike Google, hasn't felt strong pressure to be profitable yet. Time will tell.

(*) As opposed to real Internet friends! Yes of course meaningful connections can begin on the Interwebs. Stand down photon torpedoes.

(**) Facebook had a brief, dumb, ill-advised flirtation with evil when they offered "targeted advertising" in a way that revealed far too much to advertising clients. I much prefer the "thumbs up, thumbs down" system they have now which allows you to self-categorize by voting on ads... if you want to, that is. I do think that Facebook, like Google, should be able to use your profile data to serve you appropriate ads— there's nothing inherently evil about that— but only if they can do so without revealing your Facebook user ID to the advertiser.
boutell: (Default)
[livejournal.com profile] mskala found a great big bug in LOLlograms and was kind enough to report it, resulting in a big ol' honkin' fix. Thank you, Matt.

Unfortunately this bug was big enough to prevent folks who haven't already added LOLlograms to their Facebook account from seeing a LOLlogram. Yes, that was a scenario I should have tested after making ANY change, no matter how seemingly irrelevant. Oops.

Gee, maybe the app will start growing again now that new people can actually receive them, eh.
boutell: (Default)
Hey you crazy kids,

I know your previous effort to open up your user demographics data to your advertisers ended in... something approximating a riot.

Now you're probably gunshy about giving your advertisers any data at all.

But when I'm on a social networking site, I tend to take for granted that there's some targeting going on. Also, I actually prefer to see relevant advertising.

So here's an idea: give us a place to voluntarily share any portion of our profile data with your advertisers.

If we don't wanna, we don't hafta. But if we'd rather see ads we might actually care about, we can.

The people paying for those "free panties" and "gay.com moments" ads will thank you profusely.
boutell: (Default)
I have six publicly available Facebook applications:

I'm Free 4 is a social time planner.
Snogbook generates over-the-top romantic kisses.
Supergroup is a Spinal Tap-ish rock band simulator.
Join My Band helps real musicians find each other.
Guess the Animal is just what it says it is. An update of a classic.
LOLlograms is a disturbingly complete system for transmitting personalized LOLcats.

Supergroup actually has a sort-of-healthy user base— pushing 1,300 users. I would describe growth as "exponential... just barely."

I'm Free 4 and Join My Band are growing oh so slowly but steadily, as genuinely useful applications will. Still, neither has broken the 50-user mark. So no ticker tape parades just yet. Both are basically waiting for someone with 5,000 people on her friendslist to say "holy shit, we all need to use I'm Free 4!"

Snogbook is so new it's not in the public directory yet, but after a brief spike of fun and games it didn't grow virally beyond my friendslist.

And Guess the Animal and LOLlograms are basically dead at this point.

I've learned a lot and I'm excited to build more apps. What's more, today would be a good day to build one, as I'm waiting to hear back on a number of things.

I'm not feeling particularly inspired today, though. So feel more than free to get in touch if you have a cool little idea and would like to share it for a cut of any future net profitz (yes, such things are at least possible).
boutell: (Default)
There is such a thing as a Facebook app that doesn't suck:

iLike Challenge is a whole lot of fun. Even if it mostly reminds me that I Don't Listen To The Radio Enough (or ever). I wasn't expecting actual song samples.

Yes, I know this has been around a while, but some of my friendslist are still not on Facebook at all (;
boutell: (Default)
Facebook has expressly banned forced invitations. The policy is actually quite strict, strict enough that my Guess the Animal app might be technically in violation, although it says in so many words that inviting friends is utterly optional. If I have to stop displaying the invitation form after a game is completed, I'll gladly do so... it's worth it to see all the awful apps die off.

They are also enforcing new systems that limit the number of notifications and invitations an application can dish out per user per day, based on user feedback.

The people will still want what they want, which will not always be what I hoped to give them. So this doesn't mean the I'm Free 4s of the world will suddenly take over. But at least they won't be force-fed what they hate!
boutell: (Default)
Hi guys,

I have put together a good outline for a book on Facebook application development (*). This is obviously something I should be writing NOW NOW NOW while it is still super-timely. But while I have contacted two and a half publishers already, I have received lukewarm responses or none at all.

Huh.

Whose technical books do you tend to like? Do you care much who the publisher is, or do you go by reviews or sample the book online/in the bookstore?

(*) Yes, and OpenSocial too, now that the MySpace beta is opening up... although a lot of important features can't be tested yet. But Facebook development is more mature (hey, relatively speaking) and a book published now should focus on that and present the other options for interest.
boutell: (Default)
Go play with snogbook!

Snogbook generates passionate kisses in a mock-romantic prose style and lets you send them to worthy victims.

There's no time for it to make it to the Facebook directory before the 14th, but with any luck the word will spread... uh... old-school (let's not connect the words "viral" and "kiss" in the same thought, please).

I had entirely too much fun with this.

Zoom zoom

Feb. 12th, 2008 02:22 pm
boutell: (Default)
I just sent off a proposal for a book on Facebook application development. The outline took about an hour. Sometimes It's Just Time.

Now, if the publisher will just grasp the need for timeliness here and get back to me with something resembling same...

(Why yes, I would like to talk to the publisher you have connections with, thank you for asking! Yes, I have emailed Nat T.)

w00t

Feb. 8th, 2008 04:18 pm
boutell: (Default)
LOLlograms now has an AJAXfied inbox button that stays updated with the number of messages at all times and... you care because...

Uhh...

Yeah, it's a sickness. (;

Not sure why I felt the need to do that, as I have much more sophisticated AJAX demos, on Facebook and otherwise. The inescapable conclusion is that I did it for fun.
boutell: (Default)
This is probably the last time I'll berzerk adding features to LOLlograms for a little bit, honest (*). But I'm really pleased with the new inbox feature and the way it works in the profile box. I've addressed a lot of little things today that take better advantage of all the angles.

Needless to say, this is a proof of concept thing and not just a lark. Building a Facebook app that is reliable (as reliable as Facebook allows, that is) and which explores all of the possibilities is essential, even if the stated purpose of the app is a silly one.

(*) Okay, I'm lying. I've made LOLlograms a bit more asynchronous, which translates to "it does stuff without making you wait and/or stare at Facebook error messages." But now that I've caught on, I've realized that it shouldn't do anything at all immediately, if at all humanly possible. If there's a way to defer it, I've gotta defer it, period. It's the only way to deal with Facebook's chronic unreliability, not to mention the fact that the net itself is a flaky place. The mermaids singing each to each are not a reliable protocol.
boutell: (Default)
LOLlograms now offers a "heck, just LOL 'em all" button.

I didn't offer this before partly because Facebook limits messages per person per day per app, and partly because Facebook is flaky. If you do much in response to a user action, the odds are good Facebook will time out on you before you're finished, or simply fail to do something you asked of it. And then you're out of luck.

My new code simply defers the actual delivery of all notifications and emails to a separate program running in the background. That program can patiently retry emails and notifications without keeping the user waiting. If the user has sent enough for one day, no big; the code waits 24 hours before trying a particular notification or email again. SQL is very good at that sort of thing.

If the success of Superpoke is any guide, people generally think this stuff is fun and are unlikely to be overly annoyed. If I'm wrong, people can use Facebook's new flagging features to indicate that they feel the app is too spammy, and I'll naturally have to abide by that. We shall see.

I also implemented a "LOL the Dice" button to select 20 friends at random, and redesigned the send page and pickup page further to be much more conventional and non-confusing while still preserving... well... LOLlogrammitude.
boutell: (Default)
I redesigned LOLlograms to be much, much closer to the behavior of similar Facebook apps.

It's a shame, because I liked my original interface. It was idiosyncratic in a charming way, in my opinion. But it was probably also just too confusing. And slow, too— you had to cycle through the LOLcat pictures with the arrows and couldn't just pick the well-known phrases from a drop-down menu. As you can now.

Technically speaking, it's actually about a billyun times simpler than the old version. Oh well, I got more FBJS experience coding the original.

I have also recently added several additional LOLcats and switched to the full color version of the pictures. I didn't make a fuss about it because I wanted to get the more significant changes out of the way first.

I'm nearly finished adding support for deferred notifications, which would allow me to implement "mass LOLlograms" in much the way that Superpoke supports "mass poke." But I'm not quite there yet, so I still have the "please LOL only ten friends at a time" warning up there. This is the second major reason why LOLlograms doesn't spread more quickly: the fewer recipients a message has, the lower the chances that someone will say "oh that looks like fun!" and send another batch.

When I have support for mass LOLlograms, I will also be able to support conveniences like "select all" and "random."

Once I have all of these things in place I plan to experiment with advertising the app within other apps, via various dirt-cheap ad networks for that purpose, in order to get another shot at a decent user base. Right now LOLlograms is old news and very few people use it each day, so it may need a shot in the arm to get growing again.

I also made a small tweak to Supergroup today: it's easy to find your band's unreleased songs now. No big deal, but a significant number of people have said it's too hard to figure out where they are hiding. And when they couldn't find the songs written by their fellow bandmembers, their enthusiasm for playing with the app diminished considerably.
boutell: (Default)
So I wrote Supergroup, and time ensued, and it grew slowly...

And it had to happen eventually: somebody created a Supergroup fantasy band with lyrics that are genuinely hilarious. The other album's lyrics are great too.
boutell: (Default)
When are you free for lunch? I have no idea. So I wrote a Facebook app to figure that out for me. Plug in the days you're free for lunch (and dinner, etc.) and click "match" and kaboom pow, potential lunch dates.

Of course, this will only work if you guys use it too. There's always a catch, eh?

Let's give it a shot:

I'm Free For

Feedback very welcome!
boutell: (Default)
Hmmm, my Facebook applications ain't growin' much.

Supergroup is the most successful, with 633 users. I actually broke it myself for a few days when I upgraded to PHP5 without testing thoroughly for revealed bugs (bad programmer, no biscuit). Hey, I've been busy at the paying gig... until then it had a modest growth rate. I've fixed it, of course.

Join My Band is utterly stuck at less than 50 people. That's a shame, because it is actually useful.

And LOLlograms has really surprised me by stalling out at a little over 100 users. I'm not sure why. With Superpoke and a million similar apps as successful as they are, it's hard to believe the concept is too frivolous.

Possible reasons:

It's too confusing
It's too nonstandard (aka confusing) — I love the quirky interface, others don't
It uses notifications rather than requests and people just don't look at them
You have to click the notification to actually see the LOLcat and personal message

Before folks say "well put the image in the notification," they should realize that this is not possible. There's a reason why Superpokes are as plain as they are— to do anything more graphical and interesting, they would have to be links to the "real" Superpoke, much like LOLlograms. In the case of LOLlograms I feel there is absolutely no point in sending someone the message without, y'know, the cat. It's all about the cat. And occasionally the walrus.

I do put the images in newsfeed stories, because that is possible. (I don't put the personal messages there, of course.)

A recent explosion of super-spammy applications that require you to invite other people before you ever get to try the app have made it tougher for everyone by making users angry enough to ignore requests, invitations and notifications altogether. But other apps are growing out there, so I can't hide behind this entirely.

Many successful applications also reward users for inviting friends in less obviously obnoxious ways. Even Supergroup (sure enough, my most successful app) does this in a fairly mild and relevant way by making the recruitment of bandmembers a key feature (which is working well) and giving you points for every fan of your band (not working so well, in part because I don't have an explicit "invite people to be friends of my band" link— I figure folks will find each other's fantasy bands via their profiles and news stories).

It looks like I may have a little free time today to work on my own stuff. I have one practical-but-universal app and one app-related web site in mind that may help goose things along.
boutell: (Default)

YEAH HI MY NAME IS TOM
I HAVE A DRUPAL SERV3R
RUNN1NG CENTOS, LIKE MENTOS
BECUZ PAYIN FOR RED HAT IS BOGOS
AND IT'S IN A VIRTUAL MACHINE
ON MY LAPTOP
AND I'M FORWARDING T3H PACKETZ THROUGH MY CHEAPASS ROUTER
WITH DYNAMIC DNS ON MY COMCAST? YEAH?
AND I REGISTERED IT AS A FACEBOOK APPLICATION?
SO, LIKE, YOU VISIT FACEBOOK
AND THEN YOU GET A PAGE BACK FROM FACEBOOK?
BUT FIRST?
IT HAS TO TALK TO MY LAPTOP MAN.
YEAH.
FACEBOOK HAS TO CALL MY LAPTOP AND SAY PRETTY PLEASE MAY I HAVE A PAGE SIR
AND MY LAPTOP SAYS OH I GUESS LET ME TALK TO THE IMAGINARY VIRTUAL MACHINE YOU THINK IS REAL YOU BIG DUMB FACEBOOK SERV3R.

WHICH MEANS I'M UPSTREAM. UPSTREAM FROM FACEBOOK. IN MY LAP.

AND THAT'S HOW I T3ST. BECAUSE MY KUNG-FU IS THE B3ST.

GNEE.

September 2014

S M T W T F S
 123456
78910111213
14151617181920
2122232425 2627
282930    

Syndicate

RSS Atom

Most Popular Tags

Style Credit

Expand Cut Tags

No cut tags
Page generated Sep. 23rd, 2017 11:27 pm
Powered by Dreamwidth Studios