On Chromebooks

I spent the summer of 1994 working minimum wage (a princely $4.25/hour), testing electronics, saving all of my pay to buy a beast of a computer. That September, I entered my sophomore year of high school and plunked down my saved ~$3000 to become the proud owner of my first Windows PC, a Comtrade Pentium 90 with 8 megabytes of RAM, a 730mb hard disk, and a quad-speed CD drive. My parents threw in a few hundred dollars to get me an upgrade to a 17” monitor (snicker… 15.7” visible). I split my time between DOS and Windows for Workgroups 3.11.

Suffice it to say, I’ve been a Windows user for a long time.

In 1999, I started as an intern on the team that became the SharePoint team, and in 2001 I joined Microsoft full-time to work on Microsoft Office, and later Internet Explorer.

Since 2012, I’ve dabbled with Macs and Linux VMs, but spent nearly all of my time on Windows.

That’s starting to change.


Confession: I love Chromebooks.

In January of 2013, I bought my first Chromebook, the $249 11.6” Samsung Chromebook. It was a underpowered little machine with a decent keyboard, a good battery, and not much else. But the long battery life meant it was almost always ready to go, and the tiny form factor made it an easy choice when I wanted portability but a better keyboard than the tablet.

Within a few months, my wife took over the machine; it was perfect for her scenarios: it booted quickly, rarely ran out of juice, and didn’t bother her with incessant demands that she install updates and reboot, a constant hassle with her Lenovo x200. Updates on the Chromebook are incredibly painless (just click an icon every few weeks) and make both Mac OS and Windows look primitive by comparison.

In March of 2014, I sent my parents a $160 ASUS Chromebox to replace their old Windows XP computer. The new box is about a twentieth of the size and probably four times as fast, but the real reason I sent it was that I was tired of doing remote tech support for browser-borne malware, and I was increasingly terrified of letting my parents do online banking from Windows.

In October of 2014, we upgraded my wife to the $329 Toshiba Chromebook2; it has a much faster CPU than the old Samsung, a dramatically nicer screen, and a respectable battery. It’s a bit heavier and bulkier than the Samsung, but it’s still much more pleasant than the Lenovo. The Samsung Chromebook became a hand-me-down to our two year old son (who loves pounding the keyboard) but alas, the screen was recently broken… not by the boy, but by our cat, who knocked it off a table. Still, for a $249 machine, we definitely got our money’s worth.

My favorite Chromebook is the Pixel. I had a 2013 model which was a beautiful machine with a fatal flaw—an inefficient CPU and a smallish battery that meant it wouldn’t last for five hours on a charge. As much as I wanted to love the Pixel, it let me down too many times; I’d pick it up and it’d be dead. The 2015 Chromebook Pixel solves this problem—it gets much longer battery life (10 hours or more), can live on standby for a very long time, charges rapidly over USB-C, and has a faster CPU. Build quality is generally very good (awesome touch screen, strong hinge, good keyboard). The only worrying issue is that I recently noticed that when the fan comes on (pretty rare) there’s a bit of an audible whine if the base isn’t horizontally level—a problem which may or may not be unique to mine, as I haven’t found anyone else with the next Pixel yet. Update: a friend reports his 2015 Pixel doesn’t have this problem.

I have the $1300 “LS” edition which has an i7, 64gb SSD and 16GB of memory but I’d recommend the $1000 regular edition (i5, 32gb SSD, 8gb RAM) to almost everyone, as there are more useful ways to spend the $300 price difference. (I bought the higher-end model with the idea that I’d eventually put Crouton on mine and run Linux beside ChromeOS… but thus far I’m too afraid to “break” it.)

I currently have a wide range of other devices to choose from (2015 XPS13, 2013 Mac Air, Lenovo T420s, Retina IPad 3, Nexus 7) but I find myself picking up the Pixel more often than not—it’s just a fundamentally pleasant machine for doing things on the web. I’ve also started redeeming the “free HD version on Google Play” codes that come with the HBO shows I’ve bought on DVD and Blu-ray and the Pixel is a great device for watching these as well, although the beta branch of Chrome OS seems to have a number of minor annoyances in the Google Play app.

My 2015 XPS13 which is an awesome form factor (light and fast) but it is currently running Windows 10 which is not ready. Prior to upgrading to Windows 10, the XPS13’s real problems were the awkwardness of the Metro UI paired with the hassle of constant Windows Updates. Another key consideration is that you can’t get (performance destroying) antivirus for a Chromebook, and most IT departments don’t know how to screw them up. Previously this beneficial ignorance was an advantage for Macs as well, but our IT department at least has started “enhancing” Macs and making them awful too.

Despite its many benefits, the Pixel isn’t a perfect machine and it’s probably not for everyone. Apps are sadly sparse, and web-based replacements aren’t getting new features as fast as I’d hope. There have been a few promising developments recently, like Skype making its way to Chromebook. I’m not a gamer, but Chromebooks are very limited in this department– while many browser-based games will work great, those based on Java don’t, and none of the major PC games available for Windows (and increasingly, for Mac) will run on Chromebooks.

The biggest disappointment so far is in printing—it’s not a super-common scenario for us, but we do a ton of online shopping and need to print a return label a few times per month. At home, we have a Brother DCP 7065DN printer and you basically can’t print to it from Chromebooks without expensive workarounds like the Lantronix xPrintServer Cloud Print. It’s goofy that I have to buy a little box to run a print server just so ChromeOS can print, while presumably the exact same print daemon could be run directly on the ChromeOS machine. While frustrating, this limitation will probably continue to fade in importance as new printers come with the Google Cloud Print code built in; for instance, the slightly newer Brother DCP L2520DW supports Cloud Print, and it’d be cheaper to buy that than the xPrintServer box.

Unlike most of my PCs, I feel like my Chromebook works for me, rather than the other way around.


Anecdotal Ephemera

This post is a basically random list of things that have happened over the years; it will grow over time.

My freshman year of college, we had three bins in the halls of our dorm—“Trash”, “Recycle” and “Styrofoam”. I diligently sorted everything for disposal and fumed that my dorm mates were constantly throwing out their Styrofoam cafeteria containers in the trash, or throwing trash into the Styrofoam bin. I often ended up pulling trash out of the Styrofoam bin, or pulling Styrofoam containers from the Trash bin, dumping their contents, and putting them in the Styrofoam bin where they belonged.

At the end of the year, I was procrastinating while cleaning up my room for moving out and I leafed through the fifty page student handbook for the first time. A small note in the middle mentioned “Styrofoam recycling was not cost-effective and the program was canceled [five years ago]. Please use Styrofoam bins to dispose of normal trash.”

Over the last week of 2001, I was driving cross country to Seattle and ran out of clean t-shirts. I stopped at Target and bought the cheapest clearance shirt they had, a University of Iowa Athletics “Hawkeyes” t-shirt; it was $5.

Over the intervening 16 years, I’ve received more comments on this shirt than anything else I own. Oftentimes, it takes me a moment to realize that the guy across the street shouting “Go Hawks!” is talking to me.

Over a decade ago, I read Jay Leno’s memoir Leading with My Chin. Two anecdotes stood out.

The first was that, even as a kid, Leno was really into cars. So when his parents bought a new car, they let him pick the engine. So that’s how the family ended up with a station wagon equipped with a V8 Police Pursuit Package.

The second was that Leno once went to D.C. to buy a motorcycle from an old collector; the old guy only wanted to deal in cash, so Leno had ten grand or something in hundreds. He’s waiting in his hotel before going to meet the guy when he gets a call. The president (Clinton, I think) heard he was in town and wonders if he’d like to come over and meet at the White House. So Leno is about to go when he realizes that he’s got all this cash and he really doesn’t want to leave it behind. So he straps it to his body and goes over to meet the President in the West Wing. Naturally, when he’s getting screened for entry, the metal detectors go off and the Secret Service pats him down. They unbutton his shirt, see thousands of dollars in cash taped to his body, and before he can sputter out an explanation they tell him to “Go right in, Mr. Leno.”

Optimize PNGs using PngDistill

Unfortunately, many PNG image generators opt for minimum compression time, failing to achieve maximum compression. Even worse, the most popular PNG generation tools often include huge amounts of unnecessary metadata that can bloat images by thousands of percent!

Fiddler now includes PngDistill, a simple tool that removes unnecessary metadata chunks and recompresses PNG image data streams using the Zopfli compression engine. Zopfli-based recompression often shaves 10% or more from the size of PNG files. You can access the PngDistill tool from the context menu of Fiddler’s ImageView inspector:


While it is well-integrated into Fiddler, PngDistill, which is installed to C:\program files (x86)\Fiddler2\Tools folder, only requires PngDistill.exe (a .NET application) and zopfli.exe to run; you can use these tools without using Fiddler.

To run PngDistill against an entire local folder of images, you can do so from the command prompt:

   for /f "delims=|" %f in ('dir /b *.png') do PngDistill "%f" replace

This script runs PngDistill on every image in the current folder, replacing any image for which the distillation process saved bytes. You can then update the images on your server with the optimized images.

Running PngDistill.exe without any arguments will show the usage instructions:



  • The “Minify-then-compress” Best Practice applies to PNGs. While large fields of empty pixels compress really well, the browser must decompress those fields back into memory. So, if you’re building a sprite image with all of your site’s icons, don’t leave a huge empty area in it.
  • More advanced optimizations for PNG files are available using filters, color depth reduction, etc. PngDistill does not undertake these optimizations as its goal is to be 100% safe for automation, with no possibility of a user-visible change in the pixels of the image.
  • PngDistill partially supports .ICO files. Icon files may contain embedded PNGs; when run on a .ICO, PngDistill will extract the PNGs and save them externally; you will need to rebuild the .ICO file with the new PNG file(s).


Meaningless Legalese

The folks @Wired would like to remind you that viewing their website in any browser violates of their terms-of-use.

wired tou

All web browsers cache content, by-design. And I’m pretty sure that “reading” is one just one of many ways that the material might be “otherwise used.”

For an otherwise forward-looking publication, seeing this garbage on the homepage is a depressing failure.


Reactions to Collateral Damage

Last night, I wrote up a quick post on the importance of iOS9’s introduction of a content-filtering API.

Naturally, there have been a variety of reactions to this post, so I’d like to address some of those and provide some additional context.


First, I’d like to point out that while there are many important factors in the evolution of technology, ignore economics at your peril. My first-hand experience with this was watching the “race to the bottom” in the Certificate Authority market; anyone with even a passing examination of the economics behind CAs could have seen it coming many years before it actually happened.

Second, I’ll point out that I wrote a much longer and more popular blog post on ad-blocking almost five years ago. Beyond showing how to block many web ads, I also provided some examples of what happens when ad-blocking becomes prevalent enough for sites to respond; generally, it’s not pretty. Go give it a quick skim, especially starting at the section Evaluation of Blocking Mechanisms. If you didn’t read between the lines, the tl;dr subtext of the post is “Hey, all of y’all evangelizing mass adoption of ad-blockers—knock it off, or you’re going to ruin it for us.

Third, I maintain a Tracking Protection List for IE9 to IE11 that blocks many web advertisements.


@mattapperson noted that iOS isn’t shipping with an ad-blocker, only a filtering API, and that’s true.  As I noted, however, there are significant short- and long-term strategic benefits for Apple if their new API is broadly used to block web ads. Mike and @steve228uk think the new API won’t be a game-changer and only power-users will block ads. That’s a possibility for sure, but again, it’s absolutely in Apple’s interest to ensure the API is broadly used.

@reganwald implies that ad-blocking won’t damage the open web, only its monetization. This is that pesky “ignore the economics” fallacy; the web grew not only because it was super neat, but also because there was plenty of money available. Shut off the money spigot and the attention and investment will move elsewhere.

@thomask77 observes that ads will simply get integrated into the first-party HTML and obfuscated; you could imagine technology like ShapeSecurity getting used for this. That’s certainly a possibility, but it overlooks some technical complexity and other problems (e.g. harder for ad networks to root out fraudulent clicks, which are already a huge problem). But yes, one outcome of widespread adoption of ad blockers will be a further blurring of “content” and “ads”, in the same way that American Idol judges guzzle Coke out of big cups and the singers croon at Fords parked on stage.

Several commenters, including @theodorejb opined that sites just need “to move beyond ads to other forms of revenue.” It’s a fine idea, but the genius of Apple’s position here is that the easiest move is for the publisher to build an iOS app and leave their existing ad investments intact.

On April Fools day in 2011, I proposed a new specification, P5P, the Pretty Please Platform for Participating Publishers. While this was mostly a tongue-in-cheek takedown of the Do Not Track request header, I also took some shots like this one:


This token indicates that the user does not wish to be shown any form of advertising content, and expresses their earnest belief that the web publisher will find some way to remain in business without an income stream.

Note: This preference appears to be far more common than the related NO-ADS-HERE-IS-MY-BILLING-INFO-INSTEAD value.

@joshin4colours points out that some sites may be overlooking obvious revenue opportunities; I’m sure this is true in some cases, but again, the inertia is going to be for the blockee to simply kick the user over to their unconstrained iOS app.

One alternative revenue model is “tipping.” For instance, http://virtualglobetrotting.com/ detects blocked ads and allows users to send support via Bitcoin or Litecoin:


I support Virtual Globetrotting by using the Amazon Affiliates link to shop (and I buy quite a bit on Amazon), but I suspect that ad-blocking is still revenue negative for the developer.

@MaxenceBouret observes that widespread use of Safari’s content blocker could backfire and lead to users being asked to switch out of Safari to Chrome instead of using an iOS app. It’s a possibility, but I think it’s not the likely outcome.

@jdev1977 and others point out that sites can simply block visitors who block ads; that’s true, and it’ll likely be early return fire in an escalating arms race.

Related Reading

Here are a few articles in this area:

Collateral Damage

Most web users tolerate ads; many web users hate advertising with the fiery passion of a thousand suns. There are many good reasons that users dislike ads (they’re bad for performance, security, and privacy) as well as less universal, more arguable grievances (e.g. annoyance factor, disagreement about the value exchange for ad-funded services, etc).

Apple, a company that makes ~80%ish of their revenue from iOS-based products, recently announced that iOS 9 will ship with a compelling ad-filtering API for the Safari browser.

In what is surely a huge coincidence, Apple and iOS’s only significant competitor makes ~90%ish of its revenue from advertising.

If you thought that websites’ “Install our app” prompts were annoying before, imagine what’s going to happen when the only way to reliably show ads is via a native app? That “No thanks” link is probably not going to be there, especially when the site detects your ad-blocker (scroll to “Evaluation of Blocking Mechanisms“).

Let’s review:

  • Websites (temporarily) load ~40% faster on iOS? Apple/users win.
  • Websites forced to build native apps to get paid? Apple wins.
  • News sites forced to move to the Apple News app to get paid? Apple wins.
  • Google revenue inexorably forced downward? Apple wins.
  • Ad-funded sites that can’t afford to build a native app? Collateral damage.
  • The open web? Collateral damage.

It’s an utterly brilliant plan.

In the Microsoft anti-trust case, Microsoft was infamously accused of a trying to “cut off Netscape’s air-supply.” This summer, Apple will be quietly putting its hand on Google’s money-spigot.

It’s far from clear how it will end, but collateral damage seems inevitable.

Update: My responses to reactions to this post.

Medical Bills

In April, Noah (22 months) fell on the playground. It wasn’t an especially bad fall, but he bumped his head pretty hard. He cried, but mostly because he dropped the ball he was carrying– he quickly stopped when it was returned to him. No big deal. He had a nasty bruise and some swelling, but he’s had worse.

Later that night, he threw up after dinner. This was worrisome, since he’s had a pretty strong stomach and has only ever done so a few times in two years. Googling around, the general consensus is you only need to call the doctor after the third instance of vomiting when no other symptoms are present. Whew!

Until he threw up three more times over the next hour.

So, Jane called the nurse’s line and they suggested we go to Dell Children’s Hospital, the best in Austin. We piled in the  car and headed over, convinced that we were probably worried about nothing, but still… He threw up in the lobby and we got into see a nurse a few minutes later. She offered an anti-nausea pill (“Zofran”) which we initially declined but went back to get after he threw up yet again. After more waiting, we got in to see a doctor, who probed at his bruise/bump a bit, reiterated his medical history, and had us give Noah some more water to see if he could keep it down. Eventually, he decided that we should do a CAT Scan just to be sure, and we all headed downstairs for the scan. Throughout the process, Noah was happy and wide awake, apparently excited about getting to hang out past his bedtime in a neat new place with lots of gadgets. We assumed this would end when he had to lay down for the CAT Scan machine, but he was the perfect patient, laying down as quietly as he ever had and not moving at all for the scan.

An hour or so later, we got back the results (no problems found, yay!) and we got discharged with a diagnosis of “mild concussion” and a prescription for more of the Zofran just in case he needed it.

A few hours after we got home, I apparently “caught Noah’s concussion” and began throwing up. Oops. Well, at least we ruled out any kind of real problem; there was no fever, just some nausea and difficulty in keeping food down.

We both got better within a few days.

Then we got the bill. The letter the hospital was pretty simple: “Hey, send us $2150. Got any questions? Talk to your insurance company.

A few days later, the insurance company sent over their explanation of benefits, explaining that they’d covered $2017, we got a $1041 discount, and we owed the remainder of our annual deductible ($2150). They at least offered a slight breakdown of the charges:


Even still, we wondered about the $309 “Pharmacy” charge—Noah had only taken two tiny pills (dissolved) and they seem to have a street price of $2 to $12, depending on where you buy them. What’s up with that?

The lack of detail here made it seem almost as if the insurance company had no interest in preventing fraudulent billing. Weird.

Jane called and nagged the hospital into sending over a detailed bill. That they didn’t send it on the back of the initial letter irritates me to no end, but it immediately becomes clear why they might not want you to know what you were charged:


The Zofran was marked up at least 1000%. The “5GM Cream” was some sort of topical anesthetic that the nurses had applied to his hand just in case he needed an IV if he didn’t keep down the water he drank—my guess it had at least the same level of markup.

Fortunately, my employer provides ridiculously good healthcare benefits (they even pay deductibles!) so the entire trip didn’t directly cost us anything. But I’m terrified of how broken the pricing model is for healthcare is in this country. I’m a big fan of the ACA, but if we as a country don’t find a way to rein in uncontrolled healthcare costs, we’re doomed anyway.

Time Magazine did an awesome story on this topic almost exactly two years ago: http://time.com/198/bitter-pill-why-medical-bills-are-killing-us/


The Muse

There’s a writer living in my head, and he’s a genius.

Or so he tries to convince me, as his prose flows freely day in and out, filling most idle moments– while I’m showering, driving, dining, taking out the trash, or performing any of the other mundane tasks of daily life. His prose is brilliant– his points always well aligned, his recall of long-ago events and facts uncannily perfect, and his agility in seamlessly transitioning from one topic to the next is above reproach. He never needs spell-check or a thesaurus, and he never struggles to find the right way to approach the topic. His efforts are frequently interrupted by periods of basking in the glorious reception he imagines for his easy labors, and is certain that untold rewards are sure to follow.

Unfortunately, this genius is a huge jerk.

As soon as a spare moment is found in which hands can be placed upon a keyboard or a notepad, he’s either nowhere to be found, or not “in the mood” to rehash old topics that were perfectly formed in the ether… to commit such brilliance using a device so banal as a keyboard is an insult, it seems, and he won’t dare to be part of such an endeavor.

Over the years, I’ve found that the only way to write is to just type, painfully, whatever drivel comes to mind, scaffolding up the roughest of approximations of what he might say, providing nary a distraction to amuse him. With false start after false start, rewrite after rewrite, I suffer until he comes out, clucks his tongue at my pathetic efforts, and begins to guide my fingers on the keyboard. He bridles at the annoyance of checking facts (rolling his eyes in distain each time an inaccuracy is found—“the piece would be better if I was right!” he argues) and groans each time my feeble mind grapples with a word choice.

When a throwaway tweet gets 300 times the pickup of a hard-scribed blog post, he groans and rants at the inanity of the mortal world.

But what alternative is there?