2017

Adventures in Microbenchmarking

July 15th, 2017

When we’re trying to speed up some part of our code, we want quick, targeted feedback about how our changes perform against the initial implementation. It’s common practice to write a microbenchmark: a small program that runs just the code you’re interested in and measures how well it performs. But be warned: microbenchmarks are fraught with peril, even for experts.

Making the Jump: How Desktop-Era Frameworks Can Thrive on Mobile

April 30th, 2017

How do tools that grew up on the desktop, like Ember, Angular and React, make the jump to the mobile future?

What’s the Deal with TypeScript?

April 11th, 2017

Two weeks ago at EmberConf, we announced Glimmer.js, a component-based library for writing superfast web applications. In the demo video, we use TypeScript to write our Glimmer components. Some people have been asking, what’s the deal? Have we turned our backs on JavaScript and embraced our new TypeScript overlords?

I’m Joining LinkedIn

January 4th, 2017

I’m very excited to share that I’ve joined LinkedIn as a full-time employee.

2016

SemVer Shouldn’t Mean More Breaking Changes

December 15th, 2016

There’s a fundamental mistake I see a lot of open source maintainers make when they start thinking about Semantic Versioning, or SemVer.

2015

JavaScript Frameworks and Mobile Performance

November 16th, 2015

Critics of frameworks tend to totally miss the value that they provide for people.

You’re Missing the Point of Server-Side Rendered JavaScript Apps

February 5th, 2015

There is a lot of confusion right now about the push to render JavaScript applications on the server-side. Part of this has to do with the awful terminology, but mostly it has to do with the fact that it’s a fundamental shift in how we architect and deploy these apps, and the people peddling this idea (myself included) have not done a great job motivating the benefits.

2014

Mozilla’s Add-on Policy is Hostile to Open Source

November 25th, 2014

Mozilla prides itself on being a champion of the open web, and largely it is. But one policy continues to increasingly grate: their badly-managed add-on review program.

2013

Maybe Progressive Enhancement is the Wrong Term

September 4th, 2013

Many of the responses to my last article, Progressive Enhancement: Zed’s Dead, Baby, were that I “didn’t get” progressive enhancement.

Progressive Enhancement: Zed’s Dead, Baby

September 2nd, 2013

I’ve got bad news: Progressive enhancement is dead, baby. It’s dead. At least for the majority of web developers.

San Francisco, I Love You But You’re Bringing Me Down

July 8th, 2013

It’s impossible to argue that San Francisco hasn’t changed my life dramatically. When I moved to the Bay Area four years ago, I was an inexperienced kid who was working at a Genius Bar in an Apple Store. I didn’t know JavaScript at all—hell, I could barely program and my useless liberal arts degree was doing nothing for me.

Evergreen Browsers

May 24th, 2013

…Exponential growth is seductive, starting out slowly and virtually unnoticeably, but beyond the knee of the curve it turns explosive and profoundly transformative. The future is widely misunderstood…

Today, we anticipate continuous technological progress and the social repercussions that follow. But the future will be far more surprising than most people realize, because few observers have truly internalized the implications of the fact that the rate of change itself is accelerating.

—Ray Kurzweil, The Singularity Is Near: When Humans Transcend Biology

Open Source, Thick Skin

January 24th, 2013

Yesterday, Heather Arthur posted a well-written and sad account of how she felt after the open ridicule of one of the projects she had made available on GitHub.

My iOS 7 Wishlist

January 21st, 2013

Actually, it’s not a list at all. There’s just one thing I want from iOS 7.

2012

Our Approach to Routing in Ember.js

May 14th, 2012

The URL is an important strength that the web has over native apps. In web apps, the URL goes beyond just being a static reference to the location of a document on a server. The best way to think of it is as the serialization of the application’s current state. As the user interacts with the application, the URL should update to reflect what the user is seeing on their screen.

Best Practices Exist for a Reason

April 28th, 2012

If you’ve ever used node.js, you’ve probably also used Isaac Schlueter’s npm, the node package manager. By maintaining a central repository to which authors can quickly publish their JavaScript modules, npm has made it easy to get started building node apps and its popularity has exploded over the past year. Unfortunately, two months ago, the hashed passwords of all npm accounts were leaked. npm uses CouchDB for its backend, and the default security model is to grant administrator access to all databases, but only when connections originate from the same machine. It appears that in this case, the CouchDB server was made accessible to the world over HTTP with the default access settings left in place.

Ember.js Resources

February 6th, 2012

I come across a lot of really interesting links related to Ember.js, but often don’t have anywhere useful to put them, or don’t really know how to describe the thread that holds them all together. So here is my linkdump post, which I will update as I remember things, that contains useful stuff for Ember developers.

Dizzying But Invisible Depth

February 4th, 2012

Jean-Baptiste Queru’s remarkable piece on the sheer amount of abstraction mankind has built to be able to load the Google homepage:

For non-technologists, this is all a black box. That is a great success of technology: all those layers of complexity are entirely hidden and people can use them without even knowing that they exist at all. That is the reason why many people can find computers so frustrating to use: there are so many things that can possibly go wrong that some of them inevitably will, but the complexity goes so deep that it’s impossible for most users to be able to do anything about any error. Dizzying but invisible depth

AMD is Not the Answer

January 16th, 2012

Every so often, we get requests to make Ember.js support AMD (asynchronous module definition). Until today, I had yet to hear anyone articulate why the advantages outweighed the (in my opinion) many disadvantages. Then, James Burke wrote an article called Simplicity and JavaScript modules that has so far done the best job outlining why AMD is good. However, I disagree with many of the assumptions and find many of the arguments outright contradictory. So, while James is both smart and I’m sure good-looking (and I agree with his comments on CommonJS), here are the reasons I think he is wrong about AMD.

Tilde’s Pairing Setup

January 2nd, 2012

Yehuda Katz and I spend the majority of our time pair programming on client projects and on our open source projects like Ember.js. As in any profession, it’s important to be “foaming at the mouth crazy” about your tools.

2011

An Uphill Battle

May 21st, 2011

Where is the web’s Loren Brichter?

Imagine a Beowulf Cluster of JavaScript Frameworks

April 11th, 2011

Thomas Fuchs recently wrote about the advantages of using JavaScript micro-frameworks:

I for one welcome our new micro-framework overlords—small frameworks and libraries that do one thing only, not trying to solve each and every problem, just using pure JavaScript to do it. Easy to mix and match, and to customize to your needs.

The Future of the View Layer

March 10th, 2011

The views expressed below are my own and not those of the SproutCore core team.