The home of Aaron Traas — man of faith, science, and very bad humor

Aaron's blog, page 1

Ad-blockers are not evil

Adblock Absolution

Most websites with ads suck. Modern ad-supported sites offend as much as pop-unders in the early 2000's. Between full-page takeovers, fixed-position share links that take up 1/8 of the screen on mobile phones, auto-playing videos, slow, un-optimized JavaScript from ad-delivery and payloads in the 10's of megabytes, horrendous privacy violations, and ad networks that serve up malware, the web has never been worse.

Unless you run an ad-blocker, which makes browsing the web painless. But then some would make you feel guilty for "stealing" free web content. But is it really stealing?

No. Why? Because this is the open web. The purpose of the web is that you, the user, get to consume content in any way you want, and if the creators didn't want that, they have alternatives.

Free content is a choice

Making content freely available is a strategic choice by the creator. Using advertisements for monetization is another strategic choice. In the former case, the user gains value, while in the latter, the user experience is degraded. Neither are strictly necessary.

Some creators choose alternative business models that either do not include free content or do not include traditional advertising. Two case studies:

1) DaringFireball.net: blog of John Gruber, a popular and snarky Apple pundit. His site is successful and influential, and has no ads. He does sell sponsorships, which appear as native posts on his page and in his feed.

2) Stratechery.com: deep tech business analysis by Ben Thompson. He offers a combination of free weekly articles and a paid subscription for additional daily writing.

These are two examples in a large field of possibilities. Free content with ads is not the only possible business model.

Turnabout is fair play

There are multiple ways to detect and block users that have ad-blockers. Creators have had the option to thwart ad-blockers since the first Firefox plugins became available. The majority choose not to block the blockers as a strategy, because the loss of those users would be a greater blow overall, and blocking the blockers is seen as an aggressive stance by many users.

That being said, the creators are free to either block the blockers or serve alternative content to them, but they choose not to.

Ad networks and privacy

The greater issue for many users, myself included, is tracking. Most ads come from a small number of ad networks which are present on many different sites. These networks track your usage, so that if you are looking at a product on one site, you'll see advertisements for that sort of product on many other sites across the web.

The ad networks track users invisibly and without the user's consent. The content producers argue for the legitimacy of this tracking, because it is part of the implicit contract between a site creator and its users. That's a load of crap. The common user doesn't have the technical education to understand what's happening behind the scenes. And even if they are sophisticated enough to block third-party cookies, that doesn't prevent browser fingerprinting, Flash-based super-cookies, use of the new HTML local storage API, etc., which are all much more sophisticated, complex, and hard to prevent.

The way the open web is supposed to work

This is going to get a bit technical; I want to explore the role of the web browser with respect to content on the web.

A web browser is an HTTP-enabled user agent that renders HTML, CSS, and JavaScript content into a form that the user can understand, read, and interact with. According to RFC 1945: Hypertext Transfer Protocol &mdash HTTP/1.0 defines the user agent as:

The client which initiates a request. These are often browsers, editors, spiders (web-traversing robots), or other end user tools.

The CSS 2.1 specification's definition is similarly open:

A user agent is any program that interprets a document written in the document language and applies associated style sheets according to the terms of this specification. A user agent may display a document, read it aloud, cause it to be printed, convert it to another format, etc.

Traas.org on a browser that doesn't support CSS and JavaScript

In other words, the browser is a virtual "agent", or piece of software that performs tasks on behalf of the user. The agent's decision to not render certain HTML elements or execute certain pieces of JavaScript can be a positive thing. The browser makes all sorts of decisions on what to render based on the user's needs, such as hiding elements in responsive web sites when the viewport is too small, or downloading higher-DPI assets for higher-DPI screens.

Some user agents aren't capable of viewing modern ads. If a user of NCSA Mosaic browsed a site containing HTML5 banner ads in an iframe using ad-network supplied JavaScript, the ad would not render, as the browser does not support any of the technology mentioned. It would likely render the content from many sites, but it would fail at serving ads.

Again, from the CSS 2.1 specification:

The inability of a user agent to implement part of this specification due to the limitations of a particular device (e.g., a user agent cannot render colors on a monochrome monitor or page) does not imply non-conformance.

UAs must allow users to specify a file that contains the user style sheet. UAs that run on devices without any means of writing or specifying files are exempted from this requirement.

The user agent MUST provide ways for users to override the entirety of the styles on a web site! That is necessary for standards compliance! This puts an onus on the users' ability to choose which content to display and how.


The user chooses a user agent to decide on his behalf what content and functionality he wishes to prioritize. This could be a browser with an ad-blocker, a read-later application, a text-based web browser, an RSS reader that supports "mobilization" of content, or any number of other configurations. These are all fine. You don't need "adblock absolution." If a creator puts his work on the open web, making no effort to restrict consumption, you are under no obligation to view the ads on the site, submit to invisible tracking, or consume the content under any condition other than your own. Conversely, the creator is free to block ad-blockers, put content behind a paywall, ask users for donations, etc.

Rackspace's Managed Cloud page viewed through the pinnacle of human achievement

The popup blocker did not doom commercial web ventures. Advertisers moved on to ads that users found less objectionable. which adblockers (currently) can't target Certain classes of ads, such as sponsorships and native advertising, These are less obnoxious, and some studies say are more effective.

Finally, without the freedom to modify the way web content gets displayed on your browser, the world would never have the best browser plugin ever: Cloud to Butt Plus.

Exodus from Blogger

Bye, bye, Blogger!

Today, I'm free from Blogger. No longer must I maintain the nasty hacks that make blog.traas.org work. I'm free.

As I mentioned in a previous entry, I'd like to reduce my dependency on Google Apps. Writing a static blogging engine took longer than I thought. Actually, I finished the code months ago, but I was too lazy to clean up the garbage code that Blogger's editor generated and convert into Markdown.

The thing that finally got me off my butt was some weird server flag that caused a recent build of Chrome to try using HTTPS with *.traas.org, whilst Blogger does not support HTTPS.

If you subscribe to my RSS feed, nothing should change. The redirects should just work for you. Cacheing is slightly wonky, with my application cache, server cache, and CDN often acting strangely with each other.

Also, the convention common on static Markdown blogs of adding '.md' to the page URL listing the Markdown source is implemented here.

Feel free to report any bugs. Thanks in advance.

Planning My Exit from Google Apps

Today, Google announced an enhancement to Google+ and Gmail that I think is a step too far.

It sounds innocuous and even helpful. If you use both Gmail and Google+, people who can see your Google+ profile will soon be able to email you directly from your profile. It's handy, because you don't need to manage your own list of contacts; if you can encounter the person on Google+, you can send them a message.

Some people have objected on basis of privacy violations:

This is a fucking mess. Google just made it really easy for strangers to email you http://t.co/uX4gQHmr3i

—Joshua Topolsky (@joshuatopolsky) January 9, 2014

This is my primary objection to Facebook, and why I've refused to use it as a medium for communication: it has become the primary mode of exchange between a large percentage of people. To many friends and family, Facebook is the Internet, and they never leave it's walled garden. They coordinate events and meetups exclusively on Facebook, and thus people without a Facebook account are barred from entry into these events. I literally haven't heard from many of these people in 6 or more years; they no longer use email or SMS.

I'm not arguing that de facto protocols should never change, be augmented, or be replaced. I argue that the primary channels of communication must remain open. Facebook is not Open. Google+ is not open. I cannot make an implementation of Facebook myself, and communicate with Facebook via published protocols. Google+ is no different. Gmail, a proprietary product that adds functionality on top of email, enables me to communicate to users of Hotmail, Yahoo Mail, or any other service that implements the Simple Mail Transport Protocol defined in RFC 821 in 1982. But if Google is trying to direct people away from using email addresses, and instead make Gmail the messaging tool for Google+ users, I want out.

This is going to be a long process. I rely on Gmail for all https://traas.org email for my family. I rely on Google Calandar to keep my family organized. I'm using Blogger to write this blog post. I use Google+ to complain about gadgets. I use Google Drive to store and edit documents and notes. I use Google Voice to have a portable phone number and voicemail that isn't crap. I buy a new Android phone every year.

Google+ and Blogger will be the first to go. I've already disabled the Google+ comments on this blog. I'll be looking to migrate to something Python/Markdown based for blogging. On Google+, I will remove all my circles and posts. I will use it as an identity to improve the SEO of my website, and nothing more.

I won't be leaving Android, because there is no other open-sourced mobile OS that's gained any traction. I will minimize my use of Google services on the platform, to aide in my ability to switch to a different platform if one arises. iOS is not an option for me. I find the walls of its garden too high.

Gmail will be tough. Real tough. It offers a number of features that are non-negotiable, including great filtering, labels instead of folders, two-factor authentication, and first-class Android and iOS apps. I don't know what I'm going to do here. I'd like to switch to something that makes PGP easier, if possible.

I'm not surprised. Google canned XMPP support when they rebranded Google Talk as Hangouts. I understand extending the protocol to add capability; that's healthy. But not maintaining compatibility with a protocol used by a lot of platforms and blessed by the IETF as a mechanism of interchange between instant messaging frameworks is negligent at best, and hostile at worst. I accepted, once they did that, that they would eventually cross one line too far.

An Android User's Review of the iPhone 5

I really, really like Android. A lot. I've been an Android guy since well before I got an Android phone. It just always lined up more with the way I thought an OS should work. I was always hopeful for WebOS, but it never felt quite finished to me, and HP bought it only to kill it a year later. In addition to my preference of the way Android works at a theoretical level, I'm also a heavy Google apps user, and that's kept me on Android as a primary platform.

I've felt, however, that I've never given iOS a fair, honest shake as a primary device. After a month with an iPhone 5 as a second phone (the first 2 weeks I used it as my primary), I can say that this is absolutely true; as a gadget nerd I really aught to have given it more of an effort. There's frankly a lot on the platform to love. And also plenty to hate.


I was quite happy with the hardware of the Nexus 4—a solidly built, attractive device with a great screen and fast internals. It's completely destroyed by the iPhone 5 here. The screen, in particular, on the iPhone 5 is only about 10% better, but it's a huge 10%. The two areas where it's simply better is color calibration and uniformity of brightness. The latter is a bit harder to pull off on a larger phone, but there's no excuse whatsoever for the former. Using the iPhone 5 has made me so unhappy with my Nexus 4 that I'm planning on installing a custom kernel this weekend that allows me to adjust the color. Like, seriously, this could have been fixed in software!

The build quality is just brilliant, and because of the nerrowness of the phone, it fits in the hand far better. I'm not a fan of using the phone naked; though it's beautiful, the sharp edges dig into my hand a bit. It's also delightfully thin and light.

The battery life is a hair better in my use than the Nexus 4. I initially had some issues with it, but I tracked down an app that was grabbing location data continuously, and that was making the phone's daily lifespan into a useless range.

The camera, as expected, blows away the Nexus 4's crummy shooter, but I honestly don't care that much, because taking pictures from my phone isn't really my thing.

Though the hardware difference that makes my Nexus 4 the most jealous is the LTE radio. I'm on T-Mobile, and they've been rolling out their LTE network in NYC and the surrounding areas lately. The LTE download speeds haven't been that much faster than HSPA+ (the best I've found is around 25 Mbps, and I've found comparable HSPA+ speeds in those locations), but the real difference is the upload speeds and latency. All of my network operations feel much faster. In my town in Jersey, some of the spots where T-Mobile had spotty coverage and would previously drop down to Edge, I'm getting a decent LTE signal.

One little thing I now desperately desire on my Nexus 4 is the mute switch. It's so damn useful. I know Android has great software toggles for this sort of thing, but the additional affordances of having a hardware switch that can make my phone instantly meeting/church/theater friendly is fantastic. It's such a little thing that's really great. I never used the switch on the iPad, but I don't take an iPad everywhere with me.

The screen size is a bit small, particularly for web browsing and reading. I'm used to the monster 4.7" Android devices now, and the iPhone feels... cramped. I don't know how I'd survive with the smaller screen of all the previous iPhones. This isn't a dealbreaker for me at all, but I do prefer a larger screen.

The new "Lightning" connector is interesting. Apple changed the connector from the 11-year-old proprietary connector dating back to the original iPod to something that's maddeningly not micro-USB, which is the standard that every single phone manufacturer other than Apple uses. However, Lightning is the nicest interconnect I've ever used. The best part: it doesn't matter if you plug it in upside-down. That's freaking brilliant. It just snaps in very solidly. Every night before bed, I plug in my iPhone 5, and then fumble for 5 minutes in the dark trying to plug in my Nexus 4. I really can't wait for one of the wireless charging standards to become ubiquitous, so they can get cheap and we can use them everywhere, but until then, we're stuck with this situation.


Though the hardware is really great, and beats the vast majority of Android phones neatly, the software is the more interesting difference. iOS is fundamentally and philosophically different than Android in its goals, and thus the surface-level similarities are really cosmetic. The preference for one or the other is polarizing. The real reason I wanted to use this as a primary phone for at least a couple weeks without jailbreaking (which I still haven't done at the time of writing) was to see for myself if my preference for Android was genuine, and not based on a superficial knowledge of what it is to own an iOS device.

The good stuff first - the OS is really, really polished. The median perfomance of the Nexus 4 is on just as responsive as iOS on the Nexus 4, but the outlying cases is where iOS shines. It never, ever seems to drop below 60 FPS, no matter what it's doing. That's phenomenal. Even though on the Nexus 4, I get 60 FPS 99.9% of the time, that additional 0.1% of time is really key to making the platform feel more solid and real. And I'm not one to talk about "magic" with software; I've done everything from basic web apps to debugging a SCSI tape IOCTL in the Linux kernel. It's all comprehensible to me, but the consistent, uniform performance is the closest thing to "magic" I've seen in years. It's simply quite amazing.

And, frankly, shame on Google for not having this fixed yet. Android is way, way smoother and faster than it was a few years ago, but it's still not good enough. I don't want to hear damn excuses about garbage collection or or the extra safety of bounds-checking in Dalvik or other nonsense. If you can't have your render thread deliver a consistent framerate for 2D compositing on first-party apps on a quad-core Snapdragon S4 Pro, that's kinda sad in 2013. I mean, you've got more compute than a high-end desktop chip from like 5 years ago.

The polish of the OS also extends to the better iOS apps. Apple has been doing, more consistently and for longer, a better job at teaching developers to make apps that feel cohesive to the platform. Google put in a major new effort with Ice Cream Sandwich 18 months ago, and that's helped an awful lot, but they still haven't caught up. Tweetbot is just better enough than Tweetlanes to make me prefer it. Prompt blows ConnectBot out of the water. The iOS versions of Vine, Evernote, 1Password, etc. are better than their Android versions. And, frankly, this is the key reason some geeky power users, who I'd expect to prefer something super-customizable like Android, legitimately prefer iOS. It's nice to be able to drink from this well.

But certain classes of apps are more functional on Android: notably ones that sync large amounts of data in the background. Because of the limits of what iOS apps are allowed to do in the background, particularly when push notifications are recieved, they are made to feel slow and janky compared to their Android equivalents. This primarily effects RSS readers, mail clients, podcatchers, and similar apps. The lifecycle goes like this:

  1. Recieve push notification for, say, a new email recieved
  2. Tap on said notification to launch the app
  3. Wait for app to load
  4. Wait for app to sync with server and download new emails
  5. Tap on email to view.Whereas with Android, when the push is recieved from the server, the app is woken up, and immediately begins downloading the new content before the notification is presented to the server. That way, when the user taps on the notification, it brings them immediately to the appropriate email message or whatever. I know iOS 7 will likely mitigate some of this issue, but it doesn't do so for me right now.

This is exacerbated further in applications that want to sync a large quantity of data, like podcatchers. An app can only run in the background for 10 minutes at a time, so when you're syncing podcasts, which can be hundreds of megabytes each, you have to do it more or less manually, because they'll often time out otherwise. Whereas on my Android phone, the quite excellent Pocket Casts simply downloads my podcasts in the background at its leisure with no action on my part.

Related is the actual terribleness that is notification center, which Apple added in iOS 5. It was a huge, huge improvement over the previous system, but it's primitive compared to the notification tray in Android 1.0, let alone the truly excellent and interactive notifications in 4.2. The worst thing is the tiny little "x" button that I can never seem to tap—let alone tap twice—to dismiss a bucket of notifications.

I know this is a personal thing, but many, many touch targets, particularly on toolbars in the header or footer of the screen, are too small. I frequently fail to register taps, and in some case gestures. Also, there seems to be a bit of a lag between when I press the home button and it returns me to Springboard, and that drives me nuts. I wish Apple enabled the same gestures as on the iPad for going home and switching tasks. I also find the μk1 on web views to be way too high, but on list views, it's just right. The fact that I'm nit-picking about these sorts of details is likely and indication that I've really spent most of my time, historically, on Android, and have developed a preference for an Android feel, so take this with a grain of salt.

Back to Normal

After spending a few weeks forcing myself to use the iPhone 5 as my primary device, going back to normal is nice. I've noticed my usage patterns change from before. I default to Android for most tasks. I do use the iPhone for certain things, however. Most notably and consistently is the Camera -- the hardware and software on the iPhone 5 is just plain better, end of story. The second is Twitter, as Tweetbot is just better than anything available currently available for Android. The third, strangly enough, is a Google app: YouTube. The screen is a hair better, the speaker is louder, and is on the side, rather than the back. And then there's LTE. Most importantly, however, since I use my Nexus 4 for most things, I tend to go through battery faster on Android, and thus I have more battery available on the iPhone 5.

I'm glad I did this. It's nice to see how the other half lives. I really get, for the first time, why power-users like the platform. I actually appreciate Android more now as well, for what it does very well. Though it's not my platform of choice, it's an excellent platform, and a fantastic device. I also can't wait to try iOS 7.

  1. Coefficient of kinetic friction. A higher μk means greater friction force, which means that the object in motion will slow more quickly. See this article for more info (Wikipedia).

Keyboard Shortcuts

Show/hide help
Select right-hand menu
Next menu item
Previous menu item
De-select right-hand menu