Tuesday, 25 November 2008

Why it makes sense to give your money to Facebook

I recognise I’m a little late coming to the table on this one, so anyone who reads this post probably already knows: Facebook is considering charging application developers to have their applications listed in the app directory. And there’s a pretty big backlash… and I think MySpace feels pretty damn smug about the whole thing.

Here’s the neat thing: The amount of money that’s being spent, which is fairly considerable for solo developers, but a drop in the bucket for larger companies (about $400 to get it listed, then $100 a year to keep it there), is providing you with added value. Or in business-speak, it’s a value-add! Your $400 isn’t requred to let people use your application, it goes to have your application certified by Facebook, and listed in the directory. You get increased visibility in user news feeds and a little stamp on your application info page that assures that the application is safe. Your money goes somewhere. You benefit from spending it.

But remember, kids: anyone can develop an application for Facebook, make it publicly available, and advertise it. Absolutely anyone. There’s no barrier to entry. If you’re quick enough, this entire process can happen in one day, and you don't have to give a red cent to Facebook. With MySpace, you have to apply to be a developer, providing MySpace with your phone number so they can verify your identity (there’s at least one day lost, sometimes two), and then every application you develop has to be authorised by a member of the MySpace staff before anyone else can use it.

MySpace laughs, because they certify every application for free. But it can take as much as a week to hear back from MySpace, sometimes more, and if this is the first time you’ve made an application, you’ll probably have to resubmit it several times. Developing a MySpace application involves a great deal of waiting on them before anyone other than yourself can do anything. Everything’s “certified”, and that’s all well and good, but it takes a lot longer, and working with MySpace’s application verification team is an exercise in frustration.

Facebook is providing an optional service which, yes, improves their revenue stream, but gives application developers a tangible benefit over the usual model. As I said, increased visibility, publication in the application directory and a badge for your application, assuring your users that your application is safe to use. All this for $400 up front and $100 a year. Less than $0.30 a day. If you have a need for those benefits, you probably have financial backing for your app. You have an incoming revenue stream that outpaces what Facebook is asking by a long shot.

And if you’re a software company who write applications for other companies, you can always build it into your price and say “every application we write is certified by Facebook.”

It’s a great option. If you want it, it’s there. If you don't… don't worry about it! As the ING Direct guy says, save your money!

Friday, 7 November 2008

A model! A model! My kingdom, for a model!

At my last position, I was introduced to the formal concept of the Model-View-Controller architecture, specifically by way of Zend Framework. It’s a good framework. I enjoy using it a great deal, if for no other reason than the fact that it isn’t a bondage-and-discipline framework; I don’t have to use ZF’s functionality if I don’t want to.

But, it bears saying that the one function that ZF needs, that it doesn’t have, is a Model class. It has a Controller. It has a View. It has Layouts and Helpers, even a Paginator, for crying out loud, but it has no model. I feel this is a key component to the Model-View-Controller architecture. It’s even mentioned in the name. But ZF has no Model.

This leads, if you’re not careful, or ZF is your introduction to MVC, to a fairly significant error in design. The purpose of the Controller is to direct traffic between the user, the model and the view. Make sure the user should be able to do what they’re trying to do, see if there was a transmission failure in the case of user uploads, but really, your controller needs to small. Skinny controller, fat model, is what an old co-worker of mine advised the team. And I happen to agree with him.

The model is where all the heavy lifting involving your data goes. Controller tells the model, “I want a set of your objects that satisfy these conditions,” and the model goes and gets it. Controller tells the model, “Make an instance of yourself from this data, then store it,” and the model does it. Controller Actions should be tiny. You should be able to see an average of three on a screen.

But if you use ZF and you’re not fantastically careful about it, you’ll end up with a Controller that does all your work. That’s the one advantage I’ve seen about other frameworks like CakePHP. While you pretty much have to use Cake’s functionality, you use MVC correctly.

And that’s why I'm making a ZF application template that, by God, has a basic Model class to be extended.

Tuesday, 4 November 2008

So many job profiles to choose from..!

It’s really spooky, looking through jobs on Monster.ca, and noticing that every job in their “Featured Jobs” skyscraper box is listed in Ft. Meade. More so when you pick one at random and see that security clearance is a job requirement. As inexorably cool as it would be to work for the NSA, albeit indirectly, that would also be pretty stressful.

Besides, I’m Canadian. If I wanted to work for the spooks, I’d be applying at CSIS and CSE. I guess they’re not hiring.

What I am looking for, as of this point in time, is something in PHP development or system administration. While I can say pretty certainly that my days of writing PHP code are numbered, ever since I read about what the new namespace token is going to be, it’s also what I have the most expertise in, and frankly, it's what’s going to get me working. I’ll experiment with Python once I’m getting a steady paycheque again. If you happen to need a PHP guy, I’m your man. I like Zend as a framework; I'm not entirely sure that’s mentioned on my LinkedIn profile.