Did these guys just reinvent the Web?

San Francisco startup Famo.us is doing amazing things with JavaScript, radically raising the bar on what cross-platform Web and mobile apps can do

Steve Newcomb and Mark Lu had hit a wall. The co-founders had raised $1.1 million for their startup -- "sort of Pinterest meets About.me meets Facebook," says Newcomb. They'd been toiling long hours to build everything in HTML5, lured by the advantages of maintaining a single code base across all platforms.

They burned through $400,000 before they realized that HTML5 wasn't ready for the type of dynamic UI they wanted to create, which was around the same time that Facebook's Mark Zuckerberg publicly reached the very same conclusion. Browsers were meant to render text documents with links; trying to build a JavaScript app as slick and responsive as, say, a native iOS app was an exercise in futility. "We realized we either needed to give the money back or do something radical," Newcomb recalls.

[ For more on the next-generation Web, read "The triumph of JavaScript" and "You're already living in the cloud." | Choosing an open source JavaScript framework? See how the 10 hottest Javascript projects stack up. | For a quick, smart take on the news you'll be talking about, subscribe to the InfoWorld TechBrief newsletter. ]

Newcomb was the grizzled startup veteran whose most successful company, the natural-language search venture Powerset, had sold to Microsoft for $100 million to become part of Bing. Lu was a full stack engineer who, being just 21 years old, didn't mind attempting "things that would be Crazy Town for other people," as Newcomb puts it.

As recounted by Newcomb, a conversation between the two founders ensued that set the pair on a different path to a new startup -- a venture dubbed Famo.us that intends to empower JavaScript developers to build much more dynamic apps.

"Facebook is right. HTML5 isn't ready," sighed Newcomb.

"The fact is, it's the wrong tool," said Lu, referring to the renderer within the browser. "We're years away from this being fixed."

"I feel like we're working with a car that has a lawn mower for an engine. We need a better engine. What we really need is to create our own renderer. Like Flash, but without the need for a plug-in...and in JavaScript."

"Hmm. Yeah. Hmm. Why can't we do that?"

"What? JavaScript would be an awful slow renderer. Also, how do we circumvent the browser's renderer in JS? We're not going to use some plug-in. That would be death."

Lu thought for a little while. "I think we may already have a solution to both of those concerns. To fix the rendering problem, the primary part we need to rewrite is the part of the renderer that creates and multiplies the matrices. And luckily for us, JavaScript is about 80 percent of the speed of compiled C for those specific types of operations."

"That should give us a big advantage. How big?"

Lu did some quick calculations. "Possibly an order of magnitude."

Newcomb's jaw dropped. "That's ... really good. But how do we circumvent the browser's renderer without a plug-in?"

"We use the CSS3 primitive -webkit-transform: matrix3d, which lets us compute the composite matrix and skip the browser's renderer. No plug-in, no download, no hack. By appending this to each DIV, we can render the composite matrix and go straight to the GPU."

"Um, that sounds like really hard stuff."

"Not really. I'll have it done by tomorrow."

1 2 Page
From CIO: 8 Free Online Courses to Grow Your Tech Skills
Join the discussion
Be the first to comment on this article. Our Commenting Policies