BiteofanApple Archive About Code Twitter
by Brian Schrader

Re: The ethics of modern web ad-blocking

Posted on Sun, 16 Aug 2015 at 11:39 AM

In the last week, there's been a lot of talk about Marco's article on the ethics of of web ad-blocking.

Marco Arment:

Because of how the web and web browsers work, the involuntary data collection starts if you simply follow a link. There’s no opportunity for disclosure, negotiation, or reconsideration. By following any link, you unwittingly opt into whatever the target site, and any number of embedded scripts from other sites and tracking networks, wants to collect, track, analyze, and sell about you...

And it’s all getting so much worse, so quickly.

I’ve never been tempted to run ad-blocking software before — I make most of my living from ads, as do many of my friends and colleagues, and I’ve always wanted to support the free media I consume. But in the last few years, possibly due to the dominance of low-quality ad networks and the increased share of mobile browsing (which is far less lucrative for ads, and more sensitive to ad intrusiveness, than PC browsing), web ad quality and tolerability have plummeted, and annoyance, abuse, misdirection, and tracking have skyrocketed…

Modern web ads and trackers are far over the line for many people today, and they’ve finally crossed the line for me, too. Just as when pop-ups crossed the line fifteen years ago, technical countermeasures are warranted.

Web publishers and advertisers cannot be trusted with the amount of access that today’s browsers give them by default, and people are not obligated to permit their web browsers to load all resources or execute all code that they’re given.

I used to run ad blockers, but in the last few years I'd stopped using them for all but the most egregious offenders. This week though, I started using Ghostery, and the amount of trackers and beacons it blocks by default is amazing. Ghostery's most interesting feature is the little number badge it puts at the top of each page that tells you how many 3rd party trackers, beacons, and ads are running on each page, and it's pretty scary sometimes. Some pages average 10-12 trackers! That's a lot of javascript, and a lot of behind-the-scenes tracking. The Verge, for example, has 15… 15!

The badge

So far I'm not blocking ads per say, just a lot of trackers. I've left Google Analytics unblocked along with many traffic monitoring services because if I'm going to run analytics on my site, then it'd be hypocritical of me to block them.

The guys on ATP, this week, talked a bit about their differing opinions on web ad-blocking. As always, John Siracusa had a really interesting take on the whole thing (audio below).

John Siracusa:

On this battle between users, and websites, and browser vendors and whatever, I try to, in my actions with the stuff that I install, I try to... [put] the sites that I care about on like a whitelist. The sites that I care about that have just become too obnoxious, I feel like I have to send them a signal, "I like your site, I like these things, but autoplay video is just not happening. I'm going to install things that are going to stop that."

If the only way that you can exist is with autoplaying video then I'm sorry, I don't want you to exist...

There's no obligation on either side. They put something listening on a port listening at an IP address, and they welcome the entire world to make requests to it to receive that information and we can do whatever the hell we want with that information. I can redirect it to a file, I can run it through Lynx, or I can show it in a web browser but just not request any of the flash, and not request any of the Javascript trackers... That's just the negotiation. There's nothing ethical about it; it's purely practical.

He makes a very good argument. I do feel some sort of obligation to website owners, but I also feel like I can go back on my side of the implied agreement if I feel like the website has crossed a line, which many do.

Though it was on a totally different topic (i.e. taxes and STOP signs), I think John Roderick made a very valid observation on this week's Road Work (audio below).1

John Roderick:

[Laws are really] mutual agreements and mutual agreements that I am invested in, and not a slave to, not an unthinking pawn, but a conscious aware and engaged and involved person... part of it is you have to think of each law and think, "Why is this a law? Why do we have this law?" And that's fun...

If you think about why we tax, and what the purpose of taxing is, you realize that, oh yeah, of course that system is incomplete, and of course there are opportunities for people to abuse it, but more often the taxations system is so big and it has to fill so many obligations... but you think, yes I want the things that taxes buy... and I pay them. Does it hurt a little bit? Yes. Am I mad a little bit? Yes. But I understand and agree... The same is true all the way down to STOP signs in the middle of nowhere...

I feel like all three of them are saying roughly the same thing, albeit John Roderick's opinion was in regards to running stop signs in the middle of the night. I feel that there is some implied expectation that says, "The reason I can view your content for free is because I see your ads." I also feel that it is my job to be a diligent member of the community and make my own decisions when sites step over the line, but also to tolerate the base level of tracking and advertising since it's something most websites need to have in order to remain free.

These agreements we have, implied or not, imply that website owners agree not abuse us with the ads and the trackers they send, and they imply that we, the readers, understand why they send them and that we agree to participate in them. However, all of these agreements we have, or feel that we have, are mutual. If they've not held up their end of the bargain, then I am not obligated to hold up my end.

Most sites have not only let their end fall, but are now telling us to carry both ends. Until this changes, the deal's off.

1 I know that John Roderick's argument was taken out of context, but I think it just fits so well. I hope I haven't construed it too much. I felt the idea was so relevant to this conversation, I just had to include it.


Posted on Fri, 14 Aug 2015 at 09:09 PM

Everyone likes Markdown, and everyone seems to have their own version of markdown. Well, now so do I.

Blogdown is both an addition to markdown and a tool for generating html from said markdown. As you can probably guess, blogdown is designed for blog posts. "But wait!" I hear you scream. Isn't the original markdown for blogging? Yes. Blogdown just adds some metadata to each blog post. Basically, it's a series of tags that get added to the top of a markdown post.

title: This is a title
author: Brian
tags: blogging, metablogging
status: draft

This is my blog post. I hope you like it.

There's a number of tags that are valid in "standard blogdown", they are: title, status, author, tags, published, updated, slug, and summary. Each of them add information about the post that can be used when generating the html for a given post.

This is by no means something new, but this is my version. Lots of other people do this.

Blogdown →


Posted on Mon, 10 Aug 2015 at 01:16 PM

Yesterday I published a new version of this site, and hopefully you didn't notice a thing.

One of the things that this rewrite allowed me to do was finally turn off PHP entirely. As of now, there is no more PHP or Python code that executes when you request a page from this site. It's completely static.

Hiking the Pacific Crest Trail

Posted on Sun, 19 Jul 2015 at 10:59 PM

I've always wanted to hike the Pacific Crest Trail. Last week, a part of that dream came true. Last week, two friends and I hiked a section of the PCT, from Klamath Falls, OR to Crater Lake, OR. It was a trip long awaited, and it meant a lot to all three of us. Sean, I'd known from Scouting, and Nathaniel, I'd known from college. The three of us had talked about the possibility of doing a trip like this back in November of 2014, the weekend of Thanksgiving, and last week it finally happened.

What follows is an account of the journey

Day 1: Once everyone had arrived, Sean on the train, and Nathaniel and I on a plane, and no one from a car, we set off, with smiles on our faces, on a shuttle from Klamath Falls, OR to our starting point off Hwy 140. We'd spent months planning to get here, and we were all thrilled to get started.

The Gang's All here!

After being dropped off by the shuttle, we started hiking.

The Trailhead

At the trailhead I found a walking stick that someone had left there. The tip was covered in charcoal and the handle was already worn; someone had used and loved that stick, and now I was its next holder. It served me well.

Setting out

Needless to say, the trail was gorgeous.

Hiking Day 1!

About 3 miles into the hike we came across the first sign that we were actually on the right track. As we took a short break in the clearing, a hiker came up the trail from the south. He was about our age, on vacation from Germany, and had been hiking the trail since April. He told us that he'd been averaging 30 miles a day and that he planned to be done by July's end. He didn't stop long before setting back off again up the trail. We never saw him again.

A sign!

After 10.5 miles and at the end of a long day, we set up camp, and went to sleep. We were all exhausted.

Day 1 Camp

Day 2 was filled with amazing vistas and high ridges. Early that morning, as we were breaking camp, another hiker approached from the south. She asked us if we'd seen a blonde, German guy. "We saw him yesterday," we said.

"What, yesterday?! I hiked with him for 2 days, but he said I was too slow and he went on without me," she replied. This was the first of many times that another hiker would ask about "the German guy". Apparently, he was a legend.

The trail forested 1!

As we climbed up the side of a ridge, we took a break and admired the scenery. As we climbed, the cover of trees broke and gave way to some really beautiful vistas.

Resting on a ridge

Surprisingly, we had cell service up here in the middle of the Oregon wilderness

Ridge view

A bit further, we found a spectacular campsite at the top of the mountain.

Day 2: Camp

It had been a long, mosquito filled day. We cooked ourselves dinner, and, from our high perch, we watched the sun go down, mantling the mountains in the reddish-purple haze of evening light.

Day 3 would prove to be the day of our highest highs, and lowest lows (literally and figuratively). We would reach the tallest peaks, feel the best we had in days, and end on the worst note of the entire trip.

The day started off on an off note as we entered the what remained of the forest after a recent fire.

Burned out forest

Traversing such a breathtaking and scarred landscape was something none of us had ever done before, and it was an experience I recommend, if only for its wonder. The utter silence is, at the same time, both captivating, and deeply unsettling as no sound of birds, or buzzing of mosquitos broke the ever present silence.

After the journey through the silent, dead swaths of burned out forest, we found ourselves on the top of a hill. A perfect retrospective of our progress thus far.

Looking back

That mountain in the back, Mt. McLoughlin, was where we started 2 days prior.

After a short break, we found ourselves traversing some rocky ridges on the way to our highest high.

Rocky ridge

At this point, we'd finally ascended Devil's Peak, 7,329ft above sea level, our highest high.

Devil's Peak

As a bonus, the peak came stock with a most spectacular view to the west.

view from the top

The way back down would greet us with 5 water stops in the span of 2 miles, which we heartily enjoyed. Today had been our best day by far... at least until now. We had one mile left to go.

During that last mile, Sean slipped and fell in a stagnant, mosquito filled pond, and I received a lovely gift from the microbes in the river water. All of that, coupled with that last mile being the most mosquito filled section of the trail, so far, had beaten us down when we finally settled and set up camp for the night.

Unfortunately, as we all knew, the next day would be a hard one: it was our first of two whole days without the ability to fill our water stores. Whatever we had now was all we'd have to last 2 days. We'd known about this section of the trail before setting out, but this 20 mile section was devoid of water until we reached the campground at the end, Mazama. After a short discussion, we elected to try to cover the entire 20 miles in one day, double our so-far daily milage. The prospect of being left high and dry, and with another night between ourselves and a burger at the Mazama cafe, was too much of an incentive.

Day 4: I only have one picture of day 4; it was a long one. We did it though, all 20 miles.

The trail took us over more ridges, through more burned, and scarred terrain, and onto some lovely vistas, all of which are left to the imagination of the reader. We didn't have much time to stop and take pictures, we were on a tight schedule.

I do have this picture though, taken just after the 3 of us arrived at Mazama, 12 hours of hiking, and after covering a total of 20 miles.

At Mazama

We didn't last long that night after this. We showered, ate microwave burritos from the convenience store, and went to bed.

Day 5: We literally did nothing all day. Exhausted from the day prior, and a day (actually 2) early in the schedule, we took some time to relax, play card games, and eat the burger we earned the day prior. Once again, we encountered a hiker who, as they set up camp, asked us if we'd seen the German guy. When we said that we'd last seen him 3 days ago, he was impressed but not too surprised.

"He was really moving," was all he could say.

Day 6 and 7: For the next two days we bounced between Mazama and our final destination because of logistical reasons. I'm combining these days because, really we spent them in the same place, Crater Lake.

Crater Lake

There were other happenings during the day like how it rained on and off, or how we were left behind by the trolley and had to hike the 5 miles back to our camp site that evening, but really the majesty of Crater Lake blew all that out of the water.

Crater Lake, again

Crater Lake, again, again

At the end of the day, we spent time at the lodge, and at the meadow next door overlooking Crater Lake and all its immense glory, but as these things usually go, it was soon time to get back on the shuttle and head home.

Before that, I needed to leave something behind. It was time to leave my walking stick in a place akin to where I'd found it, at a trail marker on the PCT.

My hiking stick

On the shuttle ride home I found myself in a somber mood. All of that awe-inspiring scenery, the grand wilderness, the epic feeling of exploration, and the grandeur of Crater Lake were all behind us now. We'd had an amazing time together, but it had come to an end, and now here we were, flying home to our respective lives, all right where we left off.

My hiking stick

Until next time.


This was my first excursion down a small part of the Pacific Crest trail, and I don't know when my next will be, but it can't come soon enough.

Well, maybe it can wait until after my bug bites heal. Yeah, that would be good.

WWDC and Open Source Swift

Posted on Tue, 09 Jun 2015 at 02:56 PM

I'm pretty happy with yesterday's announcement (excluding the "One more thing..." part). OS X got a very understated release, but that's because, I suspect, that it seems to be mostly bug fixes, and that's great news. I'm mostly excited about the bug fixes and performance enhancements, but there were some solid updates to Safari, and Maps as well (transit isn't available for San Diego yet, but hopefully it will be soon).

On the iOS front, the iPad got all the love, and that's long overdue. The "new" (Surface Pro style) multitasking is nice, and the popovers look cool (Netflix and Twitter at the same time!). I'm also a fan of the new battery improvements and the Spotlight search API (Finally).

To me though, the biggest news of the whole conference was the announcement that Swift will be Open Source1. For Apple, this means that Swift will be placed alongside Go and Rust in the new, hot systems programming language category. Chris Latner expressed his desire for Swift to be open source last year at WWDC, and I'm glad he was able to convince the higher ups. Making Swift open source allows it to be a real alternative (and competitor) to Rust and Go, and I can't wait to see what people do with it. Swift interoperability with Python is also something I look forward to hearing about since Python already interfaces with Rust quite nicely (examples). Using Swift, Rust, or Go as your low level language instead of C has a lot of advantages, and its great to see Apple keep pace with the outside world. More competition and choice in the systems programming language world is always good, and there will shortly be 3 great options to choose from.

1. Yes I'm aware that Apple said, "later this year." Yes, I am also aware that FaceTime was supposed to be an Open Standard. I contrast with this: ResearchKit is on GitHub; this is a new Apple.


Subscribe to the RSS Feed. Check out my code on GitHub
Creative Commons License
BiteofanApple is licensed under a Creative Commons Attribution 4.0 International License.