About Nicholas C. Zakas

Recent Posts

Consensus-Driven Development

If you grew up in a democratic country, chances are you were taught at a young age about the importance of democracy and people’s right to vote. Children growing up in the United States, in particular, are inundated with the message that democracy is the best form of government and voting is the best way... […]

Generalists and specialists: thoughts on hiring

In my career, I’ve worked at companies of all shapes and sizes. From the very tiny five-person failed startup WellFurnished to the 13,000-strong Yahoo to the around 1,000-person Box (my current employer). During that time, I’ve been a part of many different engineering organizations that have had very different philosophies about hiring engineers. I’ve interviewed... […]

My ECMAScript 7 wishlist

With ECMAScript 6 now feature complete, any further changes to the core of JavaScript will happen in ECMAScript 7. I’m pretty excited about the changes coming in ECMAScript 6 and there are already some great ECMAScript 7 features such as Object.observe() and asynchronous functions. While the development of ECMAScript 7 continues, I just wanted to... […]

An open letter to the FCC regarding net neutrality

Dear Chairman Wheeler, I’m writing to you as a citizen who is deeply concerned about the direction the FCC may take with regards to ISPs. As both a consumer and a technology worker, I rely on the Internet not only as a source of entertainment and information, but also a way to communicate with colleagues... […]

URLs are already dead

Last week, there was a fair bit of furor when Jake Archibald wrote an article1 describing an experimental feature in Chrome that hides all but the domain name of the URL you’re on. The idea is very similar to what already happens in the iOS 7 version of Safari: once navigation is underway, the URL... […]

Creating type-safe properties with ECMAScript 6 proxies

In my last post, I explained how to use ECMAScript 6 proxies to throw an error when a non-existent property is read (rather than returning undefined). I came to realize that proxies allow a transparent way to augment objects with validation capabilities in an almost limitless fashion. After some experimentation, I discovered that it’s possible... […]

Creating defensive objects with ES6 proxies

This past week I spent an hour debugging an issue that I ultimately tracked down to a silly problem: the property I was referencing didn’t exist on the given object. I had typed request.code and it should have been request.query.code. After sternly lecturing myself for not noticing earlier, a pit formed in my stomach. This... […]

The Value-Effort Matrix: A framework for thinking about work

Your product owner comes to you with a request, and suddenly your stomach is tied in knots. There’s something about the request that doesn’t sit right. You blurt out, “well, that’s a lot of work,” because it’s the only thing that comes to mind. “Well, it’s really important,” comes the response. Inevitably, some uncomfortable conversation... […]

I have Lyme disease

As best I can recall, it all started around 15 years ago. I was finishing up my sophomore year at college and had just taken my last final exam. The following Monday I would be heading into the hospital for some diagnostic tests related to persistent and as-yet-undiagnosed digestive issues. I woke up on Sunday... […]

Announcing Understanding ECMAScript 6

For almost two years, I’ve been keeping notes on the side about ECMAScript 6 features. Some of those notes have made it into blog posts while others have languished on my hard drive waiting to be used for something. My intent was to compile all of these notes into a book at some point in... […]