JavaScript MVC: Inheritance

If you’ve ever done a lot of JS development you might find the following situation familiar: you’re loath to open up the bowels of the sweet webapp you wrote because you know inside you will find hundreds of lines of jQuery selectors stacked on top of each other. Try as you might, they just won’t be tamed simply by separating out into distinct functions. Soon you’re lost in your own code, trapped in a Borgesian labyrinth of your own making.

That was one of the first challenges we ran into when I started working at Behance: the decentralized, deframework-ized nature of the client side code. Like many other shops, JavaScript was viewed with equal parts suspicion and distaste. But as our code grew, it became increasingly impossible to continue working the same way as thousands of lines of JS collided tectonically into each other as Everests grew out of merge conflicts.
Read more →

On-Site FTW!!!1!

Among IT professionals and software developers, the debate over the merits of working on site has raged since the dawn of time. The Behance team has always advocated that being on site is the best way to build up a finely tuned team. Building great products requires constant collaboration, balancing of opinions, and being able to work with the girl with the right set of skills to solve your problem.

Read more →

SEO: There Are No Tricks

I lost count of how many times I’ve been followed by an SEO/SEM expert, consultant, or programmer on Twitter. All these people claiming to be experts on something anyone can learn to do from a single-page leaflet. Because really, if everyone is claiming to be an expert in something, are there any experts at all?

If I had just one piece of SEO advice to give, it would be to stop paying for SEO advice. You can find it ALL online! Here are probably the most common ones you will read about:

  • Domain Name
    If you own “foobar.com” you can make a great bet you’ll be on the first page when someone searches “foobar”
  • URL Structure
    If you’re not lucky enough to own “foobar.com”, or any variation thereof, make sure your URLs segments can throw it in. “somethingelse.com/foobar” is better than nothing. Search “Typography” in Google and take a look.
  • Title
    In today’s multi-tabbed browsers it becomes harder and harder for users to read your full title. Search engines don’t have that problem so don’t forget to make each page title relevant to that page.
  • META tags
    Your description and keywords should be as relevant and unique as possible on each page. Yes I know Google doesn’t care about keywords anymore, but there are still other search engines.
  • Linkbacks
    Having other sites link to your site is key. If you want people finding you for “foobar” you want people linking to you with “foobar” being the text. Even if people link back with different text, it will at least increase your PageRank.

Read more →

Fix or Manage?

Sometimes bugs come along that require significant work to fix. Depending on what project timelines are like at the moment, sometimes fixing the bug isn’t the best option. For example, a race condition in the caching architecture causes pages to be stale. The persistent data store is correct, but the cache is not. To the person who just triggered the update, there’s a bug. The information on the public side is not in sync with the information they just entered.

So, like any other bug, a report will eventually percolate down to the dev team. People scream, fortunes are lost, the svn blame command is used, and the devs who wrote the code pee their pants. Once the chaos dies down, the actual prognosis of this issue can turn out to be extremely grim.
Read more →