a life of coding

Friday, February 26, 2010

Looking at the Facebook Patent

I Am Not A Lawyer.

Facebook was recently granted a patent for "Dynamically providing a news feed about a user of a social network". This has generated much news, and has many people complaining about software patents. Unfortunately most comments look no further than the title.

The title is irrelevant. In fact, most of the text of a patent is irrelevant. Whenever you are presented with a patent, you should start with the independent claims. The claims are what you litigate (sue over), and the independent claims are the broadest. If you create a "social network news feed" which does not match one of the claims in Facebook's patent exactly (or equivalently), this patent has no bearing on you.

The three independent claims (1, 16, 24) are almost exactly the same, differing in the embodiments of a "method", a "system", and a "computer readable medium" and changing the grammatical structure to fit. Here is the first one, the others are trivially the same:

    1. A method for displaying a news feed in a social network environment, the method comprising: monitoring a plurality of activities in a social network environment; storing the plurality of activities in a database; generating a plurality of news items regarding one or more of the activities, wherein one or more of the news items is for presentation to one or more viewing users and relates to an activity that was performed by another user; attaching a link associated with at least one of the activities of another user to at least one of the plurality of news items where the link enables a viewing user to participate in the same activity as the another user; limiting access to the plurality of news items to a set of viewing users; and displaying a news feed comprising two or more of the plurality of news items to at least one viewing user of the predetermined set of viewing users.

Infringing this claim requires (a) monitoring activity, (b) storing it in a database, (c) generating new items from the activity that you plan on showing users, (d) attaching a link to participate in the same activity, (e) limiting who can see them, (f) displaying more than one news item to a user who did not specifically ask for it.

I would say that any basic security monitoring and alerting system would be sufficient prior art, except for (e). The claim specifically mentions attaching a link from "attaching a link associated with at least one of the activities of another user to at least one of the plurality of news items where the link enables a viewing user to participate in the same activity as the another user". This seems an oddly specific limitation on the claim, which leads me to believe (given the massive prior art list) that the claim was not accepted without it. So, if you write a news feed that does not attach at least one link that does exactly this, you are not infringing this claim.

PS: You should should have realized by now that this patent has nothing at all to do with twitter. Or really most social network feeds.

[ more comments at Hacker News ]

Thursday, January 28, 2010

Skirt the AppStore: Run Unsigned Code on a Stock iPhone / iPad

Another iPhone OS product, another flame-war over Apple's "iron fisted control". I think the whole argument is pretty silly, and to hammer it home I gave this post a title that's sure to anger lots of people. Why? Because what I'm about to say is (a) obvious, (b) correct, and (c) still not what people want to hear.

You can run arbitrary code on an unmodified iPhone, and the same will be true of the iPad. You will still have certain restrictions (only one app at a time, no access to the data in other apps, and limited access to hardware), but rarely do people complain about those. What people do say is that "Apple will stop me from doing X, because X interferes with their business model, or angers the carriers." Examples are Skype over 3G, Google Voice... really, there aren't that may reasonable apps that have been turned down on the AppStore, but as I said, this is a flame-war and "reasonable" isn't part of the vocabulary.

You can run whatever your little heart desires on your iPhone/iPad, and it only costs you $99 more. This product "upgrade" is called the Developer Program, and has been available for quite some time. After paying the fee, Apple lets you download a piece of software that lets you run almost anything that you like (I already listed the restrictions) on your iPhone. Done!

Whats truly amazing is that this is always how desktop development has always been done, except on Linux and Mac OS X. Pay your money, get your compiler, write your software, run your software. The Linux and Mac OS X crowd is up in arms because they have had GCC for at least 9 years, and $99 seems like a lot compared to free. Where things differ is what happens after you have written a piece of software that you like and runs correctly. Traditionally, you make the binary available and people can click it and have it run (insecurely) on their computer. With the iPhone OS, you send it to Apple, they make sure that it fits some minimum criteria, and now you can require people to pay you to use this software. The end user even gets a convenient update mechanism, and a way to re-acquire your application without re-paying should it be deleted.

Want to be a revolutionary? Here's some advice: stop complaining, join the developer program, and make something people want.

Thursday, January 21, 2010

The Most Amazing Error Condition

I stumbled on a dumbfounding message today. It said: "The application Preview can't be opened -10810." I saw another one later that said: "The application TextEdit can't be opened -10810." I have seen strange errors when upgrading (I assume due to pieces of libraries cached in memory differing from the remaining code on disk), but I had not upgraded recently. Thinking that I may have run out of disk space, I decided to check "df -h". Opening a new Terminal window just said: "Could not open a new pseudo-tty."

"Huh. Thats odd..." A search brought up some old Linux threads mentioning a maximum number of processes-per-user. I couldn't think of any reason why I would have too many processes, so I went to an existing shell, typed "ps -ax" and got "fork: Resource temporarily unavailable." Further adding to the awesomeness of the situation. But, I had a possible out - if there were indeed too many processes running, I could sacrifice some and the problem would (temporarily) go away.

I did manage to run a "ps -ax", and I saw a large number of:

  502  4344 ??         0:00.00 (Google Chrome He)
502 4432 ?? 0:00.00 (Google Chrome He)
502 4433 ?? 0:00.00 (Google Chrome He)

... zombie Google Chrome processes! Hah! I have been running Chrome for long periods of time, and its process management system is not functioning correctly. Close Chrome, problem solved.

Man, that was a weird one.

Thursday, November 19, 2009

Paul's Mistake (Be Strong, Not Whiny)

Paul Graham recently commented on the state of Apple's AppStore and their treatment of developers. The comment seemed uncharacteristic of him, dedicating a lot of time to chastising Apple for their actions and claiming that this will substantially tarnish Apple's reputation. I respect Paul, but feel that his tone is wrong. Only time will judge whether Apple's treatment of developers will keep them from being successful. Instead of complaining, we should be analyzing how Apple has been successful and attempt to reproduce that on our own. Its the longer, harder path, but it will make all the difference.

(continuing with the previously titled "Developers: You Are Whats Wrong With the iPhone AppStore")

You pounded your fists because Apple didn't have a "real" SDK, so Apple created one. Then you pounded your fists because the approval process is too slow, so Apple hired a bunch of noobs. Now you're pounding your fists because the newbies aren't consistent in their execution.

Stop. Stop making iPhone apps. Stop complaining about Apple. Stop using their phone. Stop.

I am a long time Mac user, and I will tell you that nobody cares about your app, least of all Apple. I didn't buy the iPhone because of you, I bought it because of Apple. Apple put a bunch of cool things on it, and they all work (mostly) great. Most AppStore apps sell for a dollar, because thats about all they're worth. (BTW: please disprove this by creating something valuable.)

Since Apple made a great phone, they have become popular. But Apple isn't good at popular. Popular people have to bend to the will of others to stay popular, and that just isn't Jobs, and it isn't me either. Apple wants to be the best, and you have to be a little elitist to do that. You have to somewhat ignore what everyone wants and concentrate on what is best. Personally, I'm okay with this, and so are most of the people who bought an iPhone.

When Apple releases a tablet, will your iPhone app work on that? Of course not. What about Google's Droid? Not there either. Your apps will be rewritten (and re-tested) on every platform there is. The reason that we were all making web apps before the iPhone was that web apps actually work everywhere. JavaScript+HTML is the data interchange format for executable code (delivering what Java was supposed to). Don't like Apple's phone? Get a new one, your email, photos and web applications will continue to work there. Man that sounds nice, doesn't it.

If Apple is pissing off developers, I personally think this is great. Instead of building yet another iPhone app that Apple has to test and only your friends will ever use, you'll think about building your own hardware, or an app for another phone, or a web app that will be usable on any device for decades. Better yet, build a WebAppStore that works exactly like the AppStore, but for web applications.

You can pound your fists all you want, but only a couple of your peers are even listening.

[Discuss at Hacker News]