We develop Facebook, Android, iPhone and high-performance Web applications. Our core values are rooted in simple design, clean code and standards-compliant Web sites.


-->
02
Jan 2010

Keep your crises small

Dr. Ed Catmull, co-founder of Pixar, discusses the company’s secret sauce, including developing great teams of people.

Digg This
Reddit This
Stumble Now!
Buzz This
Vote on DZone
Share on Facebook
Bookmark this on Delicious
Kick It on DotNetKicks.com
Shout it
Share on LinkedIn
Bookmark this on Technorati
Post on Twitter

28
Dec 2009

The history of the newspaper industry in a nutshell and how to turn it around

I’m going to sum this up:

Newspapers enjoy a monopoly brought on by the high cost of entry in the form of printing presses and legions of delivery boys.

Internet emerges.

Newspapers shovel their content online without regard to ways to exploit the emerging medium. They view it as another channel/platform for publishing the same content that they’ve already paid to produce. Online advertising is gravy atop their meat and potatoes print revenue.

Internet explodes with ubiquitous broadband access. It’s no longer just a publishing platform. And it’s more than a broadcast channel. Internet upends business models and revolutionizes communication. Newspapers are slow to understand the new skill sets and innovative thinking required to harness it.

Economy tanks, accelerating an already apparent decline in print circulation and market penetration. Old-school advertisers who would otherwise stick with print go out of business. Others flee a medium that is hemorrhaging readers no longer interested in reading yesterday’s news left on their driveways.

Desperate for revenue, newspapers slap paywalls on their online content. The problem is the content they’re publishing is commoditized. You can’t convince readers to pay for something you thought so little of before that you gave it away. High-value content borne out of authoritative analysis, shoe-leather reporting and critical thinking was thrown overboard with cost-cutting moves.

What’s needed:

  • Do what you do best and link to the rest, as Jeff Jarvis says.
  • Don’t turn your back on the Internet. Go all in.
  • Invest heavily in in-house innovation labs. Create new revenue channels and erect paywalls around ONLY those things you did not previously give away.
  • Extend the technology by embracing open-source thinking.
  • Fix your Web sites. They’re unusable. And while you’re at it, answer the phones and make it abundantly easy for the public to interact with you and to give you their money.
  • Hire content producers and outsource or automate sales efforts. Ad buyers sometimes understand the technology better than advertising staff.
  • Divert all remaining resources to producing truly unique content and watchdog reporting.
  • Continue your best efforts to remain impartial and unbiased, but allow point of view by engaging your audience to participate in the coverage.
  • Provide community leadership. Play a role in your readers’ lives. Rebuild any lost trust. Become transparent in everything you do.
  • Quit trying to be the mainstream media that is all things to all people. Pick your audience slice and target them to the exclusion of all others.
Digg This
Reddit This
Stumble Now!
Buzz This
Vote on DZone
Share on Facebook
Bookmark this on Delicious
Kick It on DotNetKicks.com
Shout it
Share on LinkedIn
Bookmark this on Technorati
Post on Twitter

19
Dec 2009

Understanding the job key to finding the perfect tool

When I moved into my first house I had a raft of home improvement projects but little money and few tools. The size of each project got magnified by my inability to buy the tools that would have dramatically reduced the time needed while increasing the quality of the work.

Fortunately, as my ambition for home improvement projects waned, my resources increased and I was able to buy the tools that made the jobs easier. Eventually, I simply hired a skilled expert to do the work for me.

Had I spent more time understanding the work and researching the proper tools I could have accomplished far more in those early years when I had more energy and fewer bucks.

The lesson was driven home this past week as I invested time learning about Mac development tools and getting a better grasp of what I’m trying to do with them. Not surprisingly, the more I learn the more I realize I have more to learn.

As I discovered with Textmate.

To get a taste of what Textmate can do, watch this video. My first reaction was to mentally calculate how many hours or even days of my life could have been saved by using a tool like this.

I think the tendency of most people is to find a way to get something done and to bang on it until the job is complete. The argument goes something like this: I can invest time to research and learn about better ways to do something, or I can make this other way work and get the job done even if it exhausts considerably more resources and energy.

Newsrooms are full of people like this because they’re places of intense pressure and unceasing deadlines. I understand that and in some respects I can appreciate the work ethic. What I don’t understand is the lack of inquisitiveness needed in order to discover whether there is a better way of doing something.

In newsrooms, a rejection of new technologies and methods is often a badge to be worn proudly.

Digg This
Reddit This
Stumble Now!
Buzz This
Vote on DZone
Share on Facebook
Bookmark this on Delicious
Kick It on DotNetKicks.com
Shout it
Share on LinkedIn
Bookmark this on Technorati
Post on Twitter

17
Dec 2009

The story in a new context and how Google can help newspapers thrive

One of my biggest problems with online news sites is the lack of innovation in distributing news and information.

Don’t get me wrong. There are some news organizations that are investing heavily in finding news ways users consume news and how best to meet those needs. Notably, the Washington Post does a nice job discussing their innovations in news.

And News Innovation is a great site for learning about cutting edge business models for news.

And yet, newspaper Web sites are all basically the same. They involve little more than a digital form of their print publications. The best ones sprinkle in some video and audio, or let readers leave comments and fight among themselves. These efforts boil down to using new tools to tell the same story.

And herein lies the problem.

As long as news organizations treat stories no differently than how they’re treated in print, albeit with a few more bells and whistles, then it’s easy for search engines to index their content and send the occasional drive-by reader to the news site to scan a few lines of text.

Jason Fry has written a good piece on solving the problem of drive-by traffic created by search engines.

Jason talks about the context of the reader. The reader sent to the site via a search engine has a very different set of expectations and needs than the reader sent there by way of a recommendation from a Facebook friend.

Just as news sites are ignoring the context of the reader, I believe they’re paying short shrift to the context of the story.

Every story printed in a newspaper or published digitally online is merely a point on a much longer timeline. What came before and what is to come next may be far more important than the single instance. If one adds related content, the two-dimensional timeline become three dimensional.

I had been thinking about this for months when Google announced a project with The New York Times and Washington Post called Living Stories.

It’s a step in the right direction. But Google is attempting to use technology to solve my problem with brute force. Throw enough processing horsepower at the challenge of finding related stories over time and organizing them chronologically. I’m not entirely convinced the problem can be solved by computers. As good as Google is, they’ve yet to start predicting future developments in a story.

So here is my seven-step program for how Google and the newspaper industry can help each other:

Newspapers:

  1. Acknowledge that Google drives considerable online traffic to you and provides a valuable service helping readers find content on your Web sites that are by and large impossible to navigate.
  2. Understand that you are implicitly agreeing to let Google index your content by way of your Web sites’ robots.txt file and that Google is not doing anything you haven’t given it permission to do. You can opt-out of the Google search engine by changing a couple lines of text in your robots.txt file.
  3. Work with Google to enhance the search engine’s ability to index your stories and understand what those stories are about. Google’s mission is to organize the world’s information. Understand what they are trying to do.

Google:

  1. Acknowledge that the newspaper headlines, thumbnails and snippets of information you display to Google users are often all a news consumer needs and that some if not most Google users never click through to full stories on news sites.
  2. Recognize in ranking search results which news organization broke the story and which sources are investing feet on the ground in covering the story. Do not drive traffic to competing news sites that are merely republishing wire service versions of the local story.
  3. Give newspapers a cut of any revenue associated with their content that you display on your search engine results. Yes, newspapers have given your robots permission to spider their sites. No, they have not given you permission to steal their content. This shouldn’t be hard. Google News has generated a list of “news” sites. You know who they are and where to send the check.
  4. Prove your intentions by developing the Living Stories technology and then giving news organizations the api to incorporate that artificial intelligence exclusively into their Web sites and story presentations. Do not make Living Stories a feature of Google.com and do not open-source it to any Web site that wants to build a business on the backs of news organizations. Rather drive the traffic back to the originating news sites to see stories in their fuller context.

Let newspapers refine the presentation to suit their needs. But more importantly, let newspaper editors and reporters do what Google’s massive data centers cannot: apply years of journalistic experience and judgement to guide readers on which stories are most important and where those story lines are headed.

Digg This
Reddit This
Stumble Now!
Buzz This
Vote on DZone
Share on Facebook
Bookmark this on Delicious
Kick It on DotNetKicks.com
Shout it
Share on LinkedIn
Bookmark this on Technorati
Post on Twitter

16
Dec 2009

Editing remote files with Textmate

Textmate is designed to edit local files. But if you’re like me, your development server may not be your computer or even your local network.

In that case, a couple pieces of software will allow you to mount directories via SSHFS or FTPFS and trick Textmate into thinking it’s editing local files.

Ashish at doodle dabbles provides an easy guide for working on remote files in Textmate.

If you’re using MacFusion on Snow Leopard, check out these instructions for making it work.

Digg This
Reddit This
Stumble Now!
Buzz This
Vote on DZone
Share on Facebook
Bookmark this on Delicious
Kick It on DotNetKicks.com
Shout it
Share on LinkedIn
Bookmark this on Technorati
Post on Twitter

13
Dec 2009

37signal's Ryan Singer discusses UI fundamentals for programmers

Ryan Singer gave a talk on “UI Fundamentals for Programmers” at WindyCityRails in Chicago. The talk covered modeling, breaking apps into screens, visual techniques, flows, and a few coding tips.

UI Fundamentals for Programmers by Ryan Singer from ChicagoRuby on Vimeo.

Digg This
Reddit This
Stumble Now!
Buzz This
Vote on DZone
Share on Facebook
Bookmark this on Delicious
Kick It on DotNetKicks.com
Shout it
Share on LinkedIn
Bookmark this on Technorati
Post on Twitter

13
Dec 2009

Development tools for the Mac

I bought my first Mac about a year ago, shortly after acquiring an iPhone. In that sense, I’m not unlike thousands of others who have made the iPhone a gateway drug to the Mac platform.

I’ve always been a PC guy. If I had to sum it up, I’d say I liked the idea of popping open the hood whether that’s in the literal sense of opening the case or figuratively in tweaking the software. I wanted the biggest bang for my buck and I was all about go rather than show.

In hindsight, when Apple moved to a unix-based OS and Intel chips, it was probably only a matter of time before I switched from PC to Mac. When Mac became an equally good if not better development environment, I made the leap.

I have no regrets in my decision, and I still have a PC on my desk at home and at the office. But the Mac is my primary development environment and as such I’m always looking for my ideal setup in terms of software and configuration.

I say “my ideal setup” because everyone has their own based on personal preferences, work flow and needs. So what are my needs? Well that’s kind of where I’m stuck. It’s one thing to describe what you do and it’s another thing to know what you need.

So I’m always interested in learning more about the tools that others are using and how they’re using them.

Corey Oordt of The Washington Times has a nice list of his development setup.

Web Jackalope has this list of 23 Essential Tools For Web Development on a Mac.

5thirtyone has a good piece called Web development – Recommended OSX tools.

Mac Zealots has a nice article on Beginning Mac Development. It’s more about developing for the Mac than anything else but there’s some helpful information about the tools available.

So here’s my current list.

Coding:
Coda

FTP:
Transmit

Software installation:
MacPorts
Porticus- a GUI front-end to MacPorts.

Version management:
Beanstalk

Browser:
Firefox – But if I could get my key Firefox plug-ins like Web Developer, Firebug and Delicious on Chrome for Mac, I’d happily abandon Firefox. That said, I browse in Chrome and work in Firefox. (Sorry Safari. Just haven’t found a compelling reason to use you.)

Digg This
Reddit This
Stumble Now!
Buzz This
Vote on DZone
Share on Facebook
Bookmark this on Delicious
Kick It on DotNetKicks.com
Shout it
Share on LinkedIn
Bookmark this on Technorati
Post on Twitter

05
Dec 2009

Facebook application Step 1: Retrieving user information

As a first step in our Facebook application, we’ll be retrieving some basic information about a logged in user who is visiting our application.


fbuser = User.objects.get_current()

# Get some specifics about the user
user_details = request.facebook.users.getInfo([fbuser.id], ['first_name, current_location']);
name = user_details[0]['first_name']
current_location = user_details[0]['current_location']

This is pretty straightforward. First we get a user object for the logged in Facebook user using the User.objects.get_current() method.

Then we’ll use the user’s ID to gather some basic information about the user, i.e. first_name and current_location. It’s important to note that the user information that can be retrieved depends whether you’re passing a session variable.

While the method doesn’t require a session key, without one you’re limited to the following:

  • uid
  • first_name
  • last_name
  • name
  • locale
  • affiliations (regional type only)
  • pic_square
  • profile_url

The same restrictions are in place if the user has not yet installed our application.

If you have a session key and the user has installed our application, the sky’s the limit. See the Users.getInfo documentation for a complete list of what’s available.

As always, I welcome comments and constructive criticism. I am by no means an expert at this so I can already anticipate there are better ways to accomplish the things I’m trying to do.

Digg This
Reddit This
Stumble Now!
Buzz This
Vote on DZone
Share on Facebook
Bookmark this on Delicious
Kick It on DotNetKicks.com
Shout it
Share on LinkedIn
Bookmark this on Technorati
Post on Twitter

05
Dec 2009

Setting up a Facebook application and installing the Python framework

For my Facebook app, I’ll be using using PyFacebook. I’m going to leave installation and configuration of this framework to others with more expertise, but here are a few links you might find helpful.

We’ve selected PyFacebook because we’re a Django shop. There isn’t nearly the amount of documentation available for PyFacebook as there is for the Facebook PHP frameworks. And few of Facebook’s own examples are in Python.

I’m also going to leave the setup of a Facebook application to the excellent documentation provided by Facebook.

Digg This
Reddit This
Stumble Now!
Buzz This
Vote on DZone
Share on Facebook
Bookmark this on Delicious
Kick It on DotNetKicks.com
Shout it
Share on LinkedIn
Bookmark this on Technorati
Post on Twitter

22
Nov 2009

Considerations when designing a news site

Steve Yelvington makes a number of great points in his piece offering advice to designers of news Web sites.

While it doesn’t address the core issues I’ve taken with news sites in the past and why today’s news sites have it all wrong, it does raise some excellent corollary points.

I’ve used similar arguments in the past for why a newsroom should be responsible for a news site’s design rather than the online department.

Designing a news website requires a deep understanding of the content that is being displayed. If you’re not a hands-on production editor, you may not realize that the proposed design is ultimately unsustainable because the available content won’t support it. And design committees tend to contain many opinionated executives who want to argue about fonts and color, and no actual line editors. …Someone who’s good at building mockups with Photoshop may not necessarily be any good at information architecture or envisioning the interactive experience or delivering a usable system.

Digg This
Reddit This
Stumble Now!
Buzz This
Vote on DZone
Share on Facebook
Bookmark this on Delicious
Kick It on DotNetKicks.com
Shout it
Share on LinkedIn
Bookmark this on Technorati
Post on Twitter