The experiment concludes. Social networking: meh.

So, I’ve been usin Twitter for a while now, and recently added facebook to my arsenal. This was hearalded by those who know me as a sign of the end times, but it was meant merely as an experiment. In fact, the facebook portion of the experiment lasted only a week before I learned all I needed. Now the experiment has concluded, and I’m dumping twitter/facebook in the trash where they belong.

Couple of core problems with the social networking scene as I see it:

  1. It remains a wasteland of self-centered indulgence. The very framework is designed not to encourage any sort of truly social behaviour, but to allow narccissistic indulgences (such as this?!) to proliferate with no regard for relevance or content. The utter banality of it amazes me. I want to have interesting conversations with people, not constantly watch comments about how someone’s cat just took a shit fly by. In traditional blogs people are at least somewhat encouraged to write interesting things because nobody will read or comment on them if you don’t! You have to keep the readers interested! “Social networking” has none of this. They’re going to be reading, if your content is good or not. I won’t completely discount Facebook as a way to have substantive discussions, but in my observation they seem to be more the weeds than the flowers.
  2. Social networking attitude. “why don’t you want to be my friend” is the only encouragement towards any sort of cooperative behaviour. Blackmail and guilt are a great basis for interacion and friendship, sure! “Be my friend” only extends so far as the little tag showing the number of people you’re friends with though.. Being someone’s “friend” grants only rights, without any accompanying responsibilities. You get to watch your “friends” fill out quizzes, talk about what they’re doing, maybe toss an “LOL” at other people once in a while, and it seems to encourage this shallow level of friendship. People may feel less alone by having 100+ “friends” that they chat about trivialities with. This also has the side effect of requiring less work than truly having and caring about even one single person. Also, when someone does something you don’t like you don’t feel like you have to fix the relationship, after all, you have over a hundred other friends to talk to.
  3. The overhead required! How do you balance what goes on facebook status, what goes on Twitter, what deserves a full blog post, and what simply doesn’t need to be said? I really don’t like the idea of having to maintain profiles and data on all these various sites either, especially when I have my very own location right here! For me I think this is the biggest issue. I like keeping track of what my friends are doing, but when you have to spend so much time spreading yourself across so many places, it really loses something. The problem goes both ways as well. Say I have a “friend” on Twitter who I follow because we have a bit of a shared history, and both like programming. He doesn’t tweet much about programming, but maybe he has a programming blog somewhere that I’m just unaware of because he doesn’t talk about it on Twitter. Because he has no centralized identity it’s difficult for me to see all the things he’s doing and choose what I’m interested in. (Turns out he also does some music stuff that I want to follow that he doesn’t tweet about much.)
  4. Eavesdropping. Yes, I’m guilty of it! I like to see what people are doing, and that’s the whole point of these sites! But what about when it turns out to be your boss, or someone looking to hire you? Twitter is all-or-nothing on the privacy issue, so you either lock yourself completely out of the crowd, or you’re completely open to everyone. Facebook has pretty good privacy capabilities, but is trending towards being more open.
  5. Walled Garden. This is very similar to problem 3 I suppose. I know I’m a geek but “Information wants to be free” is a guiding principle! I don’t care if you want to use Facebook. My problem is that in order to read your blog Facebook forces me to have Facebook as well! If you’re going to write interesting things, do it in a way that’s either public, or uses well-accepted security technologies to restrict access. I would love to add your blog to my Google Reader, honest! Use a tool that lets me! The Walled Garden issue is one of the primary reasons I don’t like Facebook, but am mostly okay with Twitter.

Or maybe, just maybe, the problem is completely different. Maybe I’m doing it wrong. “Josh is a socially retarded super-genius who doesn’t play well with others” is always a good fall-back position. 🙂
In truth, this may not be far wrong. In the end, I just have so very little interest in how things work on these sites that I’m not really interested at all in working with them. Maybe they work for some people, maybe I really am just that socially stunted in the real world that even the internet can’t help me.

What to do though? There are people who I know who I only really stay in contact with through either Twitter or Facebook. I’m going to miss them. As far as Twitter goes though, I’m adding people to my Google Reader feeds, so I can at least see what they’re doing and remember to shoot them an email once in a while. I would very much like people’s real blog addresses as well. Anything I can RSS, or add to my “blogs” bookmarks is great! And I’m going to try and work on blogging more here so anyone who follows me can say hi too. Feel free to comment, It doesn’t even require registration! (And OpenID is here too if you’d like to login as “yourself”!)

Now let’s see what we can do to do this the right way!

Delicious? How about “somewhat tasty”?

Delicious Library (Hah, you thought this was about food!) is a cool app. It’s pretty much the only game in town, and has also long been considered one of the premier mac apps in terms of visual style and workflow.

Where are the basic features though? Like secondary sorting characteristics? I really want to go through all my books and tag the “series” they belong to, but as delicious doesn’t sort “Series within author”, it’s kind of useless. This is especially annoying because the way core-data predicate searching works should make this decently easy to accomplish. iTunes has it (Album by Artist), and it’s really kind of an intuitive thing now that people are going to expect. (I’m actually really annoyed at Delicious Library right now, just because of this sorting issue!)

Here’s one of the downsides in working on cutting-edge platforms like Mac OS-X, iPhone App-Store, or the edge of webapp development. It’s a reaaaaally fast moving target. A feature that even a year ago would have been amazing, is now a major defect in your software if you don’t have it. You’re going to have to spend a lot of time chasing the target, and using whatever is left of your day to get ahead and innovate on your own.

This makes me wonder about doing development on any of these cutting-edge areas. I don’t know if I have that much time!

Things I learned from … facebook …

Yes, that’s right. I have joined the huddled and unwashed masses, and I now have a facebook account.

Allow me to set one thing straight though! The only reason that I caved: to destroy one’s enemy, one must first understand one’s enemy. I still think the concept is fundamentally wrong, but just my first 2 days in facebook has shown me some of the things it does astoundingly well, which are major hurdles to any attempt to replace the thing.

Here’s the thing facebook does right. Connect people.
The people facebook presented me with that it thought I might want to be friends with? Whew! It does it’s job pretty well! I did things step-by-step just to see what it would give me. When I entered that I worked at Apple, it gave me a lot of people. When I narrowed down that I lived in portland, it gave me people from my area, primarily people from my downtown store. When I the entered my email address it gave me a bunch MORE people. (I started with the address “facebook@joshproehl.com” just to test this functionality.)

It seems to remember anyone who’s ever searched for my name, my email address, or tagged anything with either of those. This is impressive, and something I have no idea how to duplicate when designing a distributed social networking service. This one thing (which I had previously overlook due to my anti-facebookery) ? may be the thing that makes facebook worth saving rather than destroying. At the very least it’s an incredible hurdle to overcome.

I’m going to go approve some people as friends so that I can “write on their wall” in a snide and demeaning tone.

Bleep it!

Here’s what I’m curious about. Why is bleeping words considered acceptable, or even useful? They very clearly just beeped the “hi” from “shit”. It didn’t obfuscate the word at ALL. What was the point? Everyone who knows, knows, and everyone who doesn’t figures it out.

Here’s an idea. Ratings. We have perfectly good technology. Although I find arbitrary ratings systems just as objectionable as bleeping! It’s my choice what I find objectionable, what words I find offensive. Don’t push your morals on me, don’t choose what I get to see.

How about all shows are read through a voice recognition app and creates a transcript for your show. Then you can create your own list of words you find offensive. If an show contains certain words (or too many offensive words) it will just warn you!

Never let anyone think for you. Do it yourself.

Why no observer patterns? (Pt. 2)

Immediately after posting the last article I started thinking about how this could work. Let’s assume a RESTful Rails based project.

Things we want to observe: Resources.
Done! That was easy!

So: http://daedalusdreams.com/observers/ would show you a list of things you could “subscribe” to, and indicate which of them you were already subscribed to. This would require you to be logged-in (openID) and have your own site’s URL tied to your login. (Thought: OpenID metadata?) Then you could simply say “I am interested in blogposts, microblog posts, and any new images you post.”

Then I, as daedalusdreams.com, would have an option when I went to submit a blogpost: “Notify Observers?”. (Maybe it would only appear if this resource had people actually observing it?)

I should speak briefly on the core principle of this system and the reason I started thinking about it. People often think I am against “social networking”. In reality, what I am really against is personality fragmentation. I refuse to have a twitter AND a myspace AND a facebook AND a linkedin AND a flickr AND a del.icio.us AND twitpic AND youtube AND…. I AM daedalusdreams.com, and everything about me should be in this single place. (Subject to needing additional hosting/bandwidth, but that can still all be linked to daedalusdreams.com and found here.)

I’ve just discovered something called WebHooks.? I think I’ll go read about that for a while. Looks interesting.

Why no observer patterns?

The observer pattern is really quite handy:
“Hey, you, the dude responsible for managing Josh’s twitter posts! Let me know when he posts something new! My address is…”

That’s basically it. It works in Cocoa, it works in SproutCore (Javascript), it works in Rails.. Why has it never been taken to a wider scale?? I understand that pushing to users is difficult due to the “statelessness” of HTTP, but “push”ing between servers with static IP/Hostnames should be decently trivial.

REST, JSON, SSL, toss out any number of acronyms you want. It’s doable in a number of different ways. So why isn’t it common? Why can’t I subscribe to your blog and have it notify me when you make a new post? Forcing me to poll your RSS feed periodically to see if you’ve made a new post is, shall we say, fucking backwards and wrong!!

So what are the real challenges here?

  1. Callback address. What if a registered observer changes their callback URL? How do we address them?
  2. How do we authorize changes? Must research OpenID/OAuth and see if there are systems that might work for this.
  3. Sufficiently extensible and user-definable. No locking the user profile into ONLY having fields like “favorite pet” and “smoker y/n”. No limiting the language used.

What might this look like?? If I (joshproehl.com) want to obsevre events at daedalusdreams.com I could send this:


http://daedalusdreams.com/observer/create
POST
{
model:blogpost
callback:http://joshproehl.com/listener/
}

And then when daedalusdreams.com makes a change to the blogposts it would know to send this:


http://joshproehl.com/listener/
POST
{
source:http://daedalusdreams.com/
model:blogpost;
sourceURL:http://daedadalusdreams.com/blog/5
}

I’m having trouble visualizing both exactly how this would work, and why it might not. I think it may be time to start diagramming some things out.

Continue reading in Part 2