On joining Microsoft Edge and moving to Seattle

TL;DR: I work for Microsoft now. Hit me up to tell me what bugs you about Edge – I want to hear it!

My relationship with the web has had a funny trajectory. It took me a long time to figure out what this weird nebulous thing called “the web” even was, and why it’s so remarkable.

As it turns out, I wrote a lot of Android apps long before I began to tinker with the web. Why Android? Well, I had an Android phone, and I knew Java, so it seemed like the sensible choice. I had just graduated from university in 2008, with limited programming experience, and I wanted to practice my craft with some hobby projects.

Most of the Android apps I wrote were little one-off sketches, designed to scratch a personal itch. I wrote a Japanese transliterator, a Pokédex (no, not that one), a debug logger, and many others. Looking back, they form a pretty motley portfolio.

For instance, I loved playing guitar, but my vocal range is Ringo-esque at best, so I wrote an app to transpose chord charts, shifting the key into a more comfortable range. Another app was born of a night playing board games at the pub, where my friends and I found there weren’t any good scorekeeping apps on the Play Store. So I wrote one.

Board games at the Royal Oak in Ottawa, where I used to hang. Source: Lauren Rockburn.

Board games at the pub. Source: Lauren Rockburn.

These apps were fun to write, and I often got positive feedback from friends, colleagues, and countless folks on the Internet. The feeling of creating something, seeing it in use by hundreds of thousands of people, and then hearing their stories about how it impacted their lives is something I can’t adequately describe.

From Android to the web

However, I always had this nagging thought in the back of my head: sure, I could write apps for Android, and that was fine because I had an Android phone, as did most of my friends. But what about people on iPhones, or Windows Phones, or desktops? Often I’d get a feature request to support some other platform, but the idea of learning Objective-C or C# was a daunting proposition.

So I started turning my attention to the web – that one platform that truly is “write once, run anywhere.” The web as a platform had always scared me: I imagined it as this big amorphous thing with vestigal junk jutting out everywhere, compared to the smooth linear path of writing an Android app.

The web, as I imagined it. Source: Katamari Damacy

The web, as I imagined it. Source: Katamari Damacy

However, around 2012 Android was already started to accumulate its own evolutionary baggage, as Ice Cream Sandwich added Fragments, Action Bars, and a panoply of new features that, from my perspective, only served to aggravate the fragmentation problem. It seemed like a good time to give the web a go.

So I started building web apps, often with Cordova, but sometimes just as pure web sites. And I discovered that, yes, although the web was messy, it was amazing! My friends with iPhones could use my app just as easily as my Android friends. And “installing” it was as simple as clicking a link.

The web: still messy

However, my experience with Android often led me to be frustrated and dissatisfied with the tools available on the web. Things that are easy in native apps – storing data locally, animating at 60FPS, smooth scrolling – proved to be a challenge for web apps. Sometimes the APIs were there, but they were deprecated, or half-baked, or inconsistent across browsers.

But I didn’t give up. Instead, I followed a progression that might be familiar to many folks who work with the web:

  1. Build an app, become dissatisfied that something doesn’t work cross-browser.
  2. Use a library or polyfill, become dissatisfied due to bugs or missing features.
  3. Contribute to a library or write a new one, become dissatisfied that the solution isn’t performant or elegant.
  4. File issues on browser vendors, become dissatisfied at the pace of adoption.
  5. Go work for a browser vendor. [1]

In 2016, I find myself at step #5. I love the web, I want to see it grow in new and exciting ways, and I want to be a part of that transformation. That’s why I’ve decided to join Microsoft on the Edge team. Starting next week, I’ll be a Program Manager with a focus on the Web Platform.

Going to Microsoft is a big decision, which may surprise some folks given my cred in the open-source community. So it’s worth explaining my thought process.

Why Microsoft?

I maintain a lot of open-source projects, mostly in the JavaScript and Node.js communities. As part of that crowd, I frequently interact with folks from various browser vendors: Mozilla, Google, Microsoft, Opera, even Apple. In fact, the person I collaborate with the most – PouchDB co-maintainer Dale Harvey – is a Mozillian working on Firefox.

I admire the work that all of the browser vendors are doing, and I’ve shared drinks, code, and conversation with many of them. However, when I thought about where I could go to have the biggest impact on the web, I found myself drawn to the same conclusions as Christian Heilmann, and I turned toward the browser vendor that puts the big blue “e” in “Redmond.”

To add to what Christian already said, Microsoft has come a long way since the dark days of IE6. They’ve licked their wounds, acknowledged their mistakes, and are doubling down on the web platform with a renewed zeal. They’ve open-sourced the Chakra JavaScript engine, signaling a new commitment to openness. In terms of HTML5 support, Edge is now neck-and-neck with Firefox, and at the rate it’s been improving with each release, I wouldn’t be shocked if it surpassed Chrome this year or the next.

Web standards are about more than just scoring points on HTML5Test, though. Hard work has to be done at the fringes, in order to make the web platform a truly painless experience for developers. When writing JavaScript libraries, I often find nasty little bugs in Edge (as well as other browsers) that either call for elaborate workarounds or force me to just forgo some useful feature. I’ve tried to solve a lot of these problems at the library and bugtracker levels, but I want to go deeper.

How will this affect your open-source projects?

If anything, I’m hoping this new direction will deepen my relationship with the open-source community. Rather than just filing bugs on Edge, I’ll be in a position to actually fix those bugs, or at least to vote internally for the kinds of improvements I think are important. (As always, IndexedDB is top of my list, but everyone has their own pet API.)

To be an effective browser vendor, I believe it’s important to keep an eye on what’s cooking over in Library-Framework-Polyfill Land, listening to both developers and users, and then figure out which features and bugfixes ought to be prioritized. To that end, I hope my friends in the open-source world will let me know when a bug in Edge is blocking them, or when there’s some unsupported feature that would just really be a home run for their use case.

I know browser vendors can often seem distant and aloof. But having filed many bugs on browsers in the past, I can tell you from personal experience that if you just come to them on their turf, they’re usually very receptive.

Are you going to switch to Windows?

This is a tough one for me. I was an ardent Linux user from 2007 on, until I finally relented to the programmer hive-mind and switched to a Mac in 2012. Phonewise, I’ve been an Android user since the very first one – the HTC Dream in 2008.

However, even though Microsoft doesn’t require employees to use any particular operating system, I plan on switching over to Windows. I’ll probably get a Surface Book and a Lumia 950, since both run Windows 10 and the latest version of Edge. The craftsmanship on both devices seems really great, and the recent unveiling of Bash on Windows eases the transition quite a bit.

For me, though, switching to Windows is a matter of principle rather than of convenience. My buddy Nick Hehr likes to talk a lot about empathy, and to add to the points he’s already made, I believe this is just a case of showing empathy for the people who use my software. I’m simply not going to understand the day-to-day pain points and frustrations of Edge users unless I become one myself.

Also, I’ve been inspired by Dave Rupert’s quest to go Windows, and, like him, I worry that our current Mac monoculture is driving us to a homogeneity of tools and products. During my interview at Microsoft, I saw Jacob Rossi type into his keyboard and then seamlessly flick the screen to scroll down a list. How many web developers are totally unaware that such a UI paradigm even exists, and how many consider it when coding for their Windows users? (Who still account for 90% of desktop browser share, by the way.)

Web browsers and diversity

Furthermore, I think that using Edge is a good act of web citizenship. I’ve been a Firefox user (on both desktop and mobile!) for the past couple of years, both because I admire Mozilla as a company, and because I think it’s important to get an alternative perspective on the web.

At a previous job, my coworkers would sometimes rib me for not using the One True Browser (or at least its respectable cousin, Safari), but honestly, being a Firefox user gave me a superpower: I could immediately discover bugs in our product, usually due to improper use of nonstandard WebKit features. For instance, someone might decide to use -webkit-background-clip: text; on a gradient background, which made the text invisible on Firefox and IE. Oops! These kinds of problems are incredibly easy to miss when you live in a Blink/WebKit bubble.

This also points back to why I’m joining Microsoft in the first place. I think the web is healthiest when there is a diversity of browsers, each bringing their unique perspective to the table. Web developers who sigh and say, “Ugh, everything would be so much easier if everyone was using Chrome” would be wise to remember that people were saying the same thing back in 2001 about IE6. The web succeeds when there’s competition, and it stagnates without it.

Now to be sure, Chrome is an excellent browser, and Google is taking the web in some exciting new directions. In particular, I think folks like Alex Russell and Jake Archibald are 1000% correct about Progressive Web Apps, and I’ll be gunning hard for those features to land in Edge. (Spoiler alert: it’s on the roadmap!) Progressive Web Apps are, in my opinion, just a consummation of everything HTML5 was meant to be – a pure web experience that’s fast, immersive, and reliable. It can’t land soon enough.

However, I don’t believe it’s the duty of browser vendors to blindly follow the Chrome Consensus. Web standards shouldn’t be about one browser dominating and everybody else playing catch-up. This is why I’m excited to join up on the side of a smaller player like Microsoft (how weird is to be calling them that?). I want to help influence the future direction of the web platform, and Edge – being a browser with a little something to prove – seems like the perfect place to do that.

Leaving New York

I’m also moving from New York back to my home city of Seattle. To be honest, my decision was primarily for family and relationship reasons – my stepdad is undergoing serious health issues, and my girlfriend (another Seattleite) agreed it was better to settle here than in New York. Seeing as I was already moving back to the Emerald City, Microsoft was an easy choice.

I’m going to miss Squarespace, to which I’m grateful for contributing to my personal growth and for giving me a relaxed yet challenging work environment. I hope to keep in close contact with my former coworkers, so they can let me know how Edge can best improve the web experience for Squarespace and its users. (I’ve already been told that mix-blend-mode is high on the wishlist!)

Most of all, though, I’m going to miss BoroJS – the family of NYC JavaScript meetups that include BrooklynJS, ManhattanJS, QueensJS, JerseyScript, NodeBots NYC, and probably another one by the time you finish this sentence. It’s an amazing group of talented people, and the community is constantly growing thanks to a welcoming environment, a grassroots vibe, and a focus on fun.

I was the first to speak at four different BoroJS meetups – superfecta!

I was the first to speak at four different BoroJS meetups – superfecta! Source: @brooklyn_js

I could never adequately describe the magic of BoroJS, but Jed Schmidt has already done an excellent job, so go read that. Suffice it to say that the BoroJS community meant a lot to me, and I’m leaving it with a heavy heart.

Conclusion

The web is the largest open platform (or medium!) for expression that human beings have ever created. It isn’t owned by any one individual or organization, but it brings direct benefit to the lives of billions of people. It is a wondrous and precious thing, which gives a global voice to everyone, from indie bloggers and hobby-app creators to multibillion-dollar businesses.

As Anne van Kesteren recently said, the web is a public good. I look forward to serving it on the Microsoft Edge team.

Many thanks to Nick Hehr and Jan Lehnardt for reviewing a draft of this blog post.

Footnotes

[1] Note that I’m not saying I think everyone needs to follow this progression. If you feel comfortable at step 1, you should stay there, and keep building awesome stuff for the web! However, this flowchart seems to match the careers of lots of folks that I see working for browser vendors.

11 responses to this post.

  1. Posted by bgallia on June 9, 2016 at 6:19 PM

    Congratulations on your new job. Microsoft is getting a great asset. I was hoping Apple would hire you to help fix the direction of their Safari and Safari mobile teams but helping shape the direction of Microsoft should also be helpful to the web community as a whole.

    The main thing that bugs me about Edge is Microsoft lack of long term commitment to their own previous operating systems. It is easier to get a Windows 7 user that was using Firefox or Chrome from day one to a browser version that supports the latest web standards than it is to get a Windows 7 user that is used to IE being their primary browser. Microsoft’s “solution” to this seems to be a heavy handed method of “encouraging” upgrades to Windows 10. I don’t think the gwx.exe demands to follow the “One Microsoft Way” (and the resulting breakage on incompatible hardware) is a good long term solution for getting users to trust upgrading to keep up with web standard. Instead, anti-upgrade solutions like Never10, GWX Control panel and discussions on how to stop the forced Windows updates on Windows 10 are becoming popular forums topics.

    Here is a run down of Microsoft Windows versions, browsers that support them and method to upgrade to latest browser vendor version:

    Windows Vista:
    End of Support Lifecycle Date: April 2017
    Latest supported Microsoft Browser: Internet Explorer 9
    Method to upgrade to latest Microsoft browser: Purchase Windows 10
    Latest supported Mozilla Browser: Firefox 46
    Method to upgrade to latest Mozilla browser: Go to Help -> About
    Latest supported Google Browser: Chrome 49
    Method to upgrade to latest Google browser: Upgrade to newer OS

    Windows 7:
    End of Support Lifecycle Date: January 2020
    Latest supported Microsoft Browser: Internet Explorer 10
    Method to upgrade to latest Microsoft browser: Upgrade to Windows 10
    Latest supported Mozilla Browser: Firefox 46
    Method to upgrade to latest Mozilla browser: Go to Help -> About
    Latest supported Google Browser: Chrome 50
    Method to upgrade to latest Google browser: Go to Help -> About

    Windows 8.1:
    End of Support Lifecycle Date: Janurary 2023
    Latest supported Microsoft Browser: Internet Explorer 11
    Method to upgrade to latest Microsoft browser: Upgrade to Windows 10
    Latest supported Mozilla Browser: Firefox 46
    Method to upgrade to latest Mozilla browser: Go to Help -> About
    Latest supported Google Browser: Chrome 50
    Method to upgrade to latest Google browser: Go to Help -> About

    It should be clear from this table, the browsers with the least number of hoops to jump through to upgrade is the ones that aren’t from Microsoft. While none of the three operating systems versions that I listed above are at the end of their supported lifecycle, not a single one can be upgraded to the latest browser from their OS vendor. In the case of Windows 8.1, it was released only 2 years ago and is still considered to be in mainstream support for another 18 months! Yet Windows 8.1 already can’t get any additional web standard features added for the built-in browser?!

    So where will Edge users be just 2 years from now? Or 3 years from now? What hoops will they need to go through to stay on the latest version in comparison to users of Firefox or Chrome? What about Edge changes the issues which discourage Microsoft browser users from keeping on the latest version?

    The other aspect to this issue is recommending Firefox or Chrome only addresses the stand alone browser. Telling users to stop using all Trident engine/MSHTML.DLL applications is not realistic. While it might be possible to encourage more developers to use the Chromium Embedded Framework instead, several publishers of CEF based applications have a poor history of keeping CEF up to date.

    So, my main request to Microsoft Edge team right now is show that the OS support period is longer than just 2 years by back porting as much of Edge as possible to previous versions of Windows or at least announce a policy that all future versions of Edge will continue to support Windows 10 til October 2025. This would make recommending using and embedding Edge a lot easier.

    Reply

    • Thanks for your comment; I feel your pain and will definitely pass on what you said to the team. I know Windows 10 has had some hiccups, and some folks just don’t feel like upgrading, which means webdevs have to deal with the annoying situation where a lack of movement towards Windows 10 is keeping IE on life support. It’s a pain the neck; I agree.

      Unfortunately I think the issue here is that Edge relies on Windows 10 platform features, hence it’s not trivial to backport. Also, and gonna be frank here… what’s in it for us to backport Edge to Windows <10? That would just keep people from upgrading, which in effect coddles them, and also denies us a selling point for Windows 10.

      Honestly I think the best solution here is for web developers to 1) stop supporting IE <11 (even Microsoft doesn’t), and then 2) use progressive enhancement so that sites work better in Edge/Chrome/FF.

      If end-users have a crummy experience in IE, then they’ll either upgrade to Windows 10+Edge or switch to Firefox/Chrome, which is better for the long-term health of the web. Us browsers vendors should definitely give them the means to upgrade, but some of the burden is also on webdevs to make sure there’s an appropriate incentive to upgrade.

      Also FWIW… once you’re on Windows 10, it’s essentially evergreen. Last version of Windows ever. So basically Windows <10 is our Android <Lollipop; once you’re on 10, you’ll always have the latest Edge. This is literally the last hurdle we have to convince folks to jump over, before we never have to worry about this problem again.

      Reply

      • Posted by bgallia on June 13, 2016 at 8:55 PM

        I agree that there are features of Edge which can’t be backported. To get the full feature set of Edge should require upgrading to Windows 10. It is unrealistic to re-create underlying APIs of Windows 10 into previous version. I’m not expecting a backport to have the same security hooks, GPU acceleration or Cortona integration as a fully featured Edge for Windows 10. But getting access to the improved HTML/CSS rendering engine and Chakra shouldn’t be artificially glued to upgrading to Windows 10.

        The Edge team has done an amazing job and they deserve to compete for market share without having one arm tied behind their back. The philosophy of “what is in it for Microsoft” seems to be going away for most other areas of the company and a focus on what each division can do to gain market share for itself seems to be the new method of business. I don’t have to answer the question of what is in it for Microsoft to release MS-SQL for Linux. I don’t have to answer the question of what is in it for Microsoft to provide Linux on Azure. I don’t have to answer the question of what is in it for Microsoft to provide Cortana for Android and iOS. I don’t even have to answer the question of what is in it for Microsoft to provide ChakraCore for porting to Linux. Each of those questions have already been answered by Microsoft. But the question of what is in it for Microsoft to release Edge (or Edge Lite) for Windows 7/8 is really something I need to explain?

        “If end-users have a crummy experience in IE, then they’ll either upgrade to Windows 10+Edge or switch to Firefox/Chrome”

        That isn’t what I hear from other developers. Rather, it is easier to get a current user of IE for Windows 7 user to provide the latest version of ActionScript 3 (Flash plugin) than it is for them to get a user to switch to Firefox/Chrome. This allows the developer to stop having to check a “can i use” table as the lowest common denominator as AS3 is the same across the browsers. If you are going to make it the burden of the developer to encourage upgrades, they aren’t going to encourage upgrading the component you think they should. They will continue to work-around the issue using the path of least resistance. In this case, the path of least resistance is a plugin the user usually already has installed and can be upgraded on the OS they already have installed. I don’t see how continuing to encourage that situation benefits either Microsoft or the long term health of the web.

        Also, if Windows 10 is the last version of Windows ever, why has Microsoft already documented a Windows 10 End of Mainstream Support date of October 13, 2020? Forever already has a known expiration? If the Thresholds have their own revised life cycles, why hasn’t an updated life cycle dates appeared for Threshold 1 and Threshold 2?

        It seems like Windows 10 as the last version of Windows ever is just a marketing claim with no document existing which creates an actual legal obligation on Microsoft. I could provide a laundry list of marketed claims of long term commitments of things abandoned by Microsoft but I don’t want this to be about bashing Microsoft’s past. Ultimately, users shouldn’t be expected to just blindly accept another marketing claim in the hope this is the one Microsoft will honor in the future. And developers shouldn’t be made to feel obligated to promote it either.

        Microsoft has admitted that their adoption of web standards used to only go as far as the top 9000 web sites (the same web sites that had coded to work-around issues with IE)[1]. They dropped the ball time and time again, each time claiming the next version of IE is the one that the development team took web standards seriously. And each time we kept finding the bugs we filed against the previous IE still exists. Shouldn’t the burden to regain the trust of the web community be on Microsoft at this point? I don’t understand why the web community owes Microsoft anything at this point.

        [1]
        https://blogs.windows.com/msedgedev/2015/02/26/a-break-from-the-past-the-birth-of-microsofts-new-web-rendering-engine/

  2. I frequently launch Edge because it starts up fast but then switch over to IE in frustration over the lack of history on the back button.

    Reply

  3. Some years ago I was working on a hobby video game project. I wanted to use a compound index in IndexedDB, but IE10 didn’t support it. I figured “oh well, it works in Chrome and Firefox, and I’m sure MS will fix IE in the next release too!” Little did I know that years (and thousands of lost users) later my hopes and dreams would have been nearly gone. But now, you are my hopes and dreams. I now believe that, in just a couple more years, there’s a chance that some small fraction of users on the latest version of Edge will actually be able play my video game. It’s all riding on you, Nolan! Then after that, go get a job at Apple :)

    Reply

    • Heh, well I can’t claim I’m going to fix IDB in one fell swoop, but it’s definitely on my radar. In the meantime you could also check out David Fahlander’s excellent iegap.

      As for Safari, last I checked in the Technology Preview, they’ve actually caught up and maybe even surpassed MS’s implementation. Look forward to a working IndexedDB in their next release!

      Reply

  4. Can we have Edge for Mac & iOS? May be on Android too but I don’t have one so can’t speak for them. I am pretty sure that having Edge on every other platform would serve Microsoft well and will also be very helpful to a lot of web developers out there.

    Reply

  5. I agree with your perspective. Thanks for working on improving the web!

    Reply

  6. Posted by Sameh on July 27, 2016 at 11:06 AM

    Already missing you, but this makes a lot of sense, glad you could make that choice!

    Reply

  7. Congrats on the new job Nolan! Welcome back!

    Reply

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s

%d bloggers like this: