With Build 2019 come and gone, and even though I’m not really the target of most of the announcements and/or see them as logical consequences of the path Microsoft is currently taking, I thought it was time to dust off some notes I’ve left lingering around and never got around to post about something else – the Surface Laptop. But first, a little perspective.
Windows for Web Development
Out of the pletohra of marketing-speak over the past couple of weeks, there were three things that I see as fundamentally changing the game for developers: WSL2 (which gives me complete Linux kernel call coverage), Visual Studio Code remote extensions, and Edge on Chromium.
I honestly don’t care one whit about the new Terminal (I already use
wsltty with WSL), nor will I be using WSL2 until it is mainstreamed, but I’m already using (and quite literally breaking in) the new Visual Studio Code remote extensions.
The latter, together with the 1905 build of Windows 10 and Firefox’s asinine blunder last week (which got me to move to Edge), means not only that I finally have atop Windows a “more than good enough” development environment to do what I need to do, but also that in a few months I will be able to get rid of most of my workarounds, since all the above will ship with the base OS.
How this relates to the Mac
I came to the Mac as a haven from the (then crappy and useless) Windows NT-era desktops we ran. Even though I was one of the first people to use NT 4.0 as a “workstation” (and even ran maliing-lists and web sites on it using the ancient EMWAC servers), I wanted:
- A powerful UNIX workstation
- Great hardware that “just worked”
Switching to the Mac was so amazingly great that I even named this site after the overall experience, a little over fifteen years ago.
Well, it’s 2019, and if you read through Michael Tsai’s curated list of posts regarding WSL2, it’s pretty obvious that Apple has completely dropped the ball where it regards mainstream developers (and various definitions of “pro” users) these days.
The hilariously bad MacBook keyboards defy explanation to the point where the issues have become mainstream news (again, Michael has a killer round-up of recent issues), and the state of abandonment in which the macOS UNIX userland finds itself (with hopelessly outdated CLI binaries that require
brew replacements) is, well… difficult to justify.
And so it has come to pass that, even though I am typing this on my MacBook Pro, I have been using a Surface Laptop for nearly six months as a semi-daily driver, and it’s finally time to bring together my notes on it as a sort of follow-up to my Surface Pro 4 post from a couple of years ago.
The Laptop Itself
It was provided to me as replacement of the Lenovo Carbon X1 I was saddled with when I joined up (which I never really liked, since its cafeteria tray-like spread and spongy keyboard annoyed me nearly as much as the smudge-prone, matte screen and hilariously bad touchpad).
I got one with a 2.50GHz i7, 16GB RAM and 512GB SSD, and picked it over the Surface Book because I have zero faith or need for that hinge and actually looked at the specs – especially dimensions and weight – before ordering.
Over the past few months, it’s become the envy of quite a few of my colleagues (who either went for the Book or stuck with Lenovos) because it’s way lighter, rock solid and much quieter.
Even though there is now a second edition (the Surface Laptop 2) it is physically identical, so I expect this post to age well.
The Surface Laptop fits in neatly between my MacBook Pro and the pre-2018 MacBook Air, and the size and weight difference is negligible. It is lighter than the MacBook Pro, but heavier than the Surface Pro 4, and that matters when you carry your machine with you to several locations over the course of a day – so I still travel primarily with the Pro 4, unless I’m certain that I won’t be walking around much.
It has a wedge shape that tapers towads the touchpad and provides a slight gradient to the keyboard, and the overall feel is much easier on the wrists than the MacBook Pro‘s annoying hard edges.
Like any other Surface, it is excellent, and sports 2256x1504 pixels. This is a taller layout than is customary these days on a laptop, and it feels roomier than my MacBook Pro when coding due to the vertical spread. Font rendering is still annoyingly quirky (it is running Windows), but text is crisp and readable and the color gamut feels comparable to the MacBook Pro‘s – which is tricky to judge given that there are still noticeable differences where it regards color management on either platform.
The important thing here, however, is that it is a fully-functioning touchscreen, and that I’ve become so used to having a touchscreen on most places that the MacBook Pro seems somewhat archaic at times.
Even if you are still of the amusingly anachronic persuasion that a touchscreen is not useful for desktop applications, believe me that it makes one heck of a difference over time.
You get exactly the same ports as on a Surface Pro - USB-A, mini DisplayPort and the Surface Connector for power, plus a headphone jack (always something to remark positively upon these days).
They tend to be all I need given that I spend most of my time on the go, but I keep a USB-C Hub (with USB-A plug and ports) on my desk for hooking up an Ethernet adapter.
The funny thing is that I carry around my old Mac DisplayPort dongles (which work perfectly with it, both VGA and HDMI), but require nothing else otherwise. The single USB-A port hasn’t been a problem (so far).
The keyboard is (fortunately) quite similar to the Surface Pro 4, with a power button added just left of the
Del key. Cursor keys have an H-like layout (with the up/down keys compressed into the size of a single key).
It’s backlit, has a set of media keys, and a perfectly normal and extremely satisfying
Other than the top row, it is almost exactly the same layout as the MacBook Pro, so besides the usual finagling around with accented characters (which have traditionally been on slightly different keys on Macs and PCs) and the
Ctrl-Fn-Windows-Alt block (which is also irritatingly different from the Mac’s
Fn-Ctrl-Option-Cmd layout), the keyboard is perfect as far as I’m concerned.
Key travel, however, feels vastly different. The Laptop’s has more travel than the Surface Pro’s, which is welcome even if it tends to slow me down a tad. In fact, If the MacBook Pro‘s keys were to rate a 1 in terms of travel and bounce (as well as other aspects, but I digress), then the Surface Pro and my Mac’s recent Bluetooth keyboard would rate a 2 (with a bit further travel), and the Laptop’s a full 3 (maybe even a bouncy 4).
Like everything else, it’s a matter of taste. Some of my colleagues hate the Surface Pro keyboard because it wobbles a bit when you don’t lay it out fully flat, but I love it.
The touchpad is, in a word, great. It is easily on a par with the MacBook Pro‘s (albeit 1/3 smaller), and is only let down by the lack of smoothness in software (the 4-finger slide-up gesture, which takes you to Timeline in the latest Windows 10 update, works fine but lacks all the interpolation smoothness you get when you do the equivalent on a Mac - it is a triggered transition rather than a progressive one).
Zooming and scrolling works very smoothly on any native application except Firefox (where it is still janky and broken even after seven years), so I’m a happy camper – all the more so because Windows 10 has sane window tiling support (which I use Moom on the Mac for), which means I hardly take my hands off the keyboard for organizing windows.
Ironically, I live fairly close to the part of Lisbon with the same name (but properly accented), so I think this is worth singling out if only for that reason.
I had no choice in colors (otherwise I’d probably have gone for black or red), so I got the default silver model, with the much-touted textured light grey finish.
It’s a more welcoming experience than any MacBook in wintertime (because you don’t feel as if your wrists are against a fridge when you start using the machine) and it is touted as being both friction and spill-resistant.
I expected my wristwatch and daily wear and tear to start showing, but it’s been six months already and… Nothing. How long it will take, I don’t know.
This thing goes on forever. I haven’t done any systematic testing, but in practice I can work for a day on it (cloud management stuff, running terminals, a browser and VS Code), whereas both my MacBook Pro and Surface Pro 4 will seldom last me that long in continuous use.
The main difference is that the MacBook Pro is much more efficient for light use (I still get around a week of use out of it) checking personal mail in the evenings and little else, but drains the battery steeply whenever I use Office or Docker.
Obviously enough, I’m running Windows 10 on it. I’ve grown used to the default “Modern” Windows 10 applications (OneNote, Mail, Calendar, etc.) and actually prefer using them with Office 365 instead of Outlook and the other “regular” applications.
But most of the time I just keep Edge open with tabs for e-mail, Azure and whatever else I need.
I live inside the “old” Windows Subsystem for Linux anyway, so other than setting that up and slapping Docker into obeisance (which I have partially scripted), I have very little setup to do when I move to a new machine (OneDrive just works, and all it takes is time for everything to sync).
And that, I think, is what Apple should be terrified of. All the attrition and instability that drove me to the Mac is essentially gone (other than Windows Update and the usual corporate IT stuff, the latter of which is likely irrelevant for most developers), and the hardware is squarely in the “more than good enough” zone, so… why use a Mac, then?
Loyalty? Courage? Easier access to iOS integration?
Time will tell.