(Ad) War and (Ad Blocker) Peace

It’s hard not to fall into the ‘war and peace’ clichés when consider ad blocking and the ad blocking ‘wars’. There have been many articles written about this and there will be many more. Of course there isn’t any blood spilled (thank G-d). There’s panic and the ‘you are going to put us out of business’ accusations that are being volleyed back and forth. It’s a weak first-world version of CNN news during wars – focusing the graphic pictures and the things that will raise viewership regardless of any sort of viewer scarring.

I’ve been using ad blockers on and off somewhat haphazardly. A few weeks ago my co-worker asked me for advice related to ad/tracking blockers for her home machine. Her daughter had reached the pre-teen stage and besides the typical drama my co-worker wondered how to prevent or at least minimize the tracking that her daughter encountered on the web without the use of a cyber-nanny type of program.

My immediate recommendation was Ghostery. I told her “just block everything, and then whitelist the sites that you trust for your daughter.” Was this good advice? I don’t know. It was advice that made sense at the time and to me it still makes sense even now.

I had been using Ghostery for a while and I really liked. The interaction with my co-worker occurred just before iOS 9 was released with purchase-able content blockers for iOS’s Safari browser.

I was about to purchase a content blocker named Peace by one of my favorite iOS developers. I was about to purchase the blocker but I held off because I realized that I did relatively little reading through mobile Safari relegating any long web reading to Instapaper and getting most news through RSS feeds or private Twitter lists that I created.

Right after my purchase hesitation, Marco Arment pulled Peace off Apple’s app store and the Twittersphere went ape sh*t over his decision vilifying him as a pariah that was charging $2.99 from his loyal followers only to yank the ‘app’ rug from underneath them.

Most of the folks beating up on Marco would not hesitate to buy a $3 cup of Starbucks coffee. In fact, they would probably buy a more expensive cup (Grande anyone?). And if they walked out of Starbucks, got into their car and started driving to say work. Lets also say that the Latte they’re drinking had bad milk. How many of these people would turn the car around and bitch the barista out? How many would scream expletives if they did indeed go back. Or would they humbly say “sir – my latte seems to have some bad milk”?

I’m probably biased when it comes to Marco because I appreciate his humanity and his willingness to put himself out there – in the public eye. Heck – he was even willing to explain his Peace related actions and motivations on his podcast (starting around the 18th minute).

Of course Marco isn’t the only developer in the ad blocker spotlight. There’s also Dean Murphy’s Crystal ad blocker and his recent decision to allow certain advertisers through in terms of Crystal’s default settings.

This whole thing made me consider the whole issue of ad blocking. It’s far from a black and white issue. There’s lots and lots of gray in there.

The players seem to be:

  • Content creators: these are the so called ‘publishers’ on the web. The bigger the site, the more obtrusive ad infestation, the greater the complaint about content blockers and how it was ‘the end of publishing as we know it’. It’s as if an iOS 9 content blocker will suddenly transport everyone to the stone age.
  • Advertisers: These are the companies that are paying for ads. They’re also paying for tracking and the magical voodoo known as analytics. They want to get as much data …as much ‘big data’ about their users so they can do things like offer their users ‘useful services’ regardless of whether their customers want this or not.
  • Ad/Tracker Services (ATS): These are the Googles and all those companies that put the mechanisms in place (typically 2nd, 3rd, 4th party JavaScript code) to do tracking and ad serving. Ghostery has an excellent options pane for its browser plug-in that shows their categorization:
    Ghostery Options

  • Developers: these are the developers of content blockers. Whether it is a big company like Ghostery or a tiny developer like Marco or Dean Murphy.

  • Consumers: This is me and all of you. Anyone that uses the web for something is a consumer (whether they want to be or not).

The thing about ads is that they’re not only pushing something onto the consumer, they’re also tracking the consumer. Ghostery displays an amazing little window for each visited site showing the number of ads and trackers that a site has. Here’s one from The New York Times.

The New York Times - Breaking News, World News

The ATSes provide services across all the various sites that you and I visit. How much data has Google collected in terms of Gmail, Google Docs, and Google search usage? What about Facebook? Yahoo? Bing? What about all the other ATSes that we know nothing about?

It’s a complicated subject and there are no easy answers (check out “Back to Work Episode 239” towards the end of the show regarding the fact that this is not easy).

The only voice that I can speak for is myself – as a consumer. Personally, I want advertisers to ask me to opt-in to their data collection and ads. So until they do this, I will use ad blockers like Ghostery.

If I’m ok with The Economist’s pay wall – then why shouldn’t I be with a content wall that a publisher puts up? If a publisher objects to ad blockers, then they should absolutely put up a content wall. I wont be offended. I’ll have a clear choice of whitelisting the site with my blocker or moving on to another site.

Ultimately, ad and content blockers are a consumer’s way of making ad and tracking services opt-in services. Publishers, Advertisers, and Ad/Tracking Services have been unwilling to follow an opt-in approach so now the consumers have the ability to enforce such a process.


As of 9/30/15 – Any ads on this site come from wordpress.com. It’s WordPress’s way of getting paid for the free service that they give me. I don’t get any money out of it.


How to Create an Encrypted Zip file on the Mac

It all started with a text message from my wife about needing help with a password on a zip file:

wife: I tried to put password in zip file

wife: I followed this page http://smallbusiness.chron.com/create-encrypted-zip-files-mac-44338.html

me: command of: zip -e myzipfile.zip file1.txt file2.txt OR zip -r -e myzipfile ./directory the tricky part is the terminal

wife: I used the terminal but for some reasons, it only creates empty folder
…a bunch of text messages later…

me: Here you go – give them this link…

My wife is really smart and quite a decent user of her Mac. She needed to encrypt a zip file because whe was sending some paystubs to some bank loan people.

I know what you are starting to think “but encrypting a zip file is insecure”. And you’re probably right but the fact of the matter is bank employees are severely constrained by their employers and you’re LUCKY if they’re even allowed to open an encrypted zip file. It’s not that they’re incapable of such a feat, but rather that they’re in a financial institution with a whole lot of rules and regulations that make secure electronic delivery of anything quite debatable.

There should be an easy..practically trivial way to compress a directory and put a password on the Mac but the “encrypted with password” part is not easy at all. In this tutorial I’ll walk you through how to do this.

And now for the instructions

These instructions and pictures were done on Yosemite but should apply to future versions of Mac OS X.

Creating a non-encrypted zip file is easy

Lets use an example directory called my directory

Creating a non-encrypted zip file is easy

Right click on your folder

Choose the ‘Compress’ selection

Right click on your folder

And now you have a zip file

It’s easy peasy – you now have a *my directory.zip *file. But it isn’t encrypted with a password. Anyone can double click on it and it would show its contents without difficulty.

And now you have a zip file

Creating an encrypted zip file

To create an encrypted zip file you need to use the Mac’s command line. The command line is a vastly different way to interact with the file system. Most of the tutorials that I have seen do not exactly explain how to use the command line. I will make a stab at making this tutorial clearly explain how to use the command line to create the encrypted zip file of a directory.

Before we proceed – you need to agree that you will follow my instructions to the letter….I’m assuming you are nodding your head with a ‘yes’. If you deviate in any way and you get surprising results then go back and try again by following the exact steps.

The usual disclaimer applies – use at your own risk and I’m not responsible if you destroy your Mac 🙂

Create a mydirectory directory in the Documents folder of your mac

Make sure that the mydirectory doesn’t have any spaces in the name.

Note: Your mydirectory folder doesn’t have to be in Documents. It can be anywhere that you can get to with the Finder.

Create a mydirectory directory in the Documents folder of your mac

Place your files in the mydirectory directory

Place your files in the mydirectory directory

Search for terminal in spotlight

Spotlight is the mac’s search facility. If you don’t see it in Finder just press the following keys: COMMAND SPACEBAR

The command is the key with the clover leaf symbol and the spacebar is….the spacebar. When you see the search box type terminal and then double-click on the suggested program like the one shown in the image (below).

Search for terminal in spotlight

Use the Terminal to change directory to mydirectory

In the terminal we’re going to change directory (cd) into the mydirectory folder. Remember that the Terminal is a completely different way of interacting with your file system (the other way is visually through the Finder).

In the terminal you will be typing the cd command followed by a space (i.e. pressing the spacebar).

  1. In the terminal type: cd
  2. With your mouse drag the *mydirectory *folder from the finder window into the terminal

In the next step you will press the enter key on your keyboard and within the Terminal you will have changed the directory into mydirectory.

Use the Terminal to change directory to mydirectory

Press the enter key

You should now be in the mydirectory folder. Congratulations…we’re almost there.

Press the enter key

Now type cd ..

Type: cd ..

The key thing is typing the letter c and d then a space with the spacebar followed by two periods.

Now type cd ..

It’s time to zip up the directory with and encrypt it with a password of your choice

Type: zip -re myzipfile.zip ./mydirectory/

There’s a space (i.e. press the spacebar) between the words (see the red lines in picture).

Note that myzipfile.zip is the encrypted zip file that will hold your files. You can use another name for it but make sure that you don’t put spaces in the file name.

It's time to zip up the directory with and encrypt it with a password of your choice

Now press the enter key

You’ll be prompted for the encryption password so enter whatever password that you want to use and then press enter. Then type it in again when you see ‘Verify password:’

Now press the enter key

What you should see

After you re-enter the password in ‘Verify password:’ and then press the enter key you should see the directory being zipped and encrypted.

What you should see

Time to test the zip file

You’re pretty much done. It’s a good practice to verify that the directory is encrypted in the zip file. So we will use the Terminal that you already have open to open a Finder window to the directory where the zip file is located.

Type: open .

There’s a space between the open and the period.

Time to test the zip file

Open the new zip file in the Finder window

Use the new Finder window to find the zip file that you just created (myzipfile.zip in this case). Double-click on the file.

Open the new zip file in the Finder window

When you double click the zip file

If you have properly encrypted the zip file then you should get the picture shown below. If you don’t see this then you probably didn’t encrypt the zip file.

Note: the “hello.txt” message just refers to the first file in the directory. When you put in the correct password the zip file will be fully decrypted, so all files will be decrypted.

When you double click the zip file

After you put the correct password

After you put the correct password you should see your directory in the finder windows.

Note: In the image below there is a ‘mydirectory 2’ The reason there’s a ‘2’ next to the directory name because your original directory is in the same location.

After you put the correct password

Open the directory and verify that the you can open the files without issue

Open the directory and verify that the you can open the files without issue

You’re done – CONGRATULATIONS!!!

It’s time to put on your party hat and do the happy dance. You’re done!

Image credit: http://emojipedia.org/party-popper/

You're done - CONGRATULATIONS!!!

Let me know how I can make these instructions better.

If you think I can do a better job with this tutorial – let me know via twitter (@eli4d).

One last thing…

If you think that Apple should improve the encryption zip file – send Tim Cook an email at tcook@apple.com (I’m serious). Looking for an idea of what to send? Here’s a sample:

Email Subject:

Can you (pretty) please improve the Mac OS X Archive utility to allow zip encryption from the Finder

Email Body:

Dear Tim,

*Can you kindly ask your Mac OS X team to add an encryption capability to the Mac’s Archive utility so I can use the the Finder’s built in ‘Compress’ service rather than use tortuous command line tutorials like https://eli4d.com/2015/09/23/how-to-create-an-encrypted-zip-file-on-the-mac



The Voice Behind the Code

I recently listened to The Changelog episode about a static site generator called Middleman (as an aside – The Changelog is an amazing podcast about all kinds of open source software – kudos to Adam Stacoviak). Now I’m not a user of Ruby (haven’t had time to play with Ruby nor Rails) but after listening to this episode I really want to try out Middleman and in fact I put it on my list of projects to play with when I have time.

Why? Because I liked how Thomas Reynold presented himself on The Changelog, I like his philosophy in developing and managing Middleman. It’s a side project that he’s been maintaining for a long time and he’s committed to maintaing it for a long time still. Furthermore, his technical decisions and evolution of Middleman shows me that he’s someone who’s willing to evolve his software rather than let it fade away in a morass of old crufty code.

My immediate reaction of putting Middleman on my project playlist made me consider my own approach for selecting software. I used to look at software based on popularity as measured by techie blogs and the latest fad. Somewhere along the line I changed my approach and how I purchase software. Somewhere along the line, I started paying attention to the the voice behind the code.

These days – when I come across an interesting product – I start reading the blog of the developer (or company), and then I move onto any podcasts that the developer has participated in. It’s an oddly personal path to a product. I suppose that marketeers will call it ‘personalization’ or some such thing.

When did this start for me? When did I change from a blind purchaser of software to a more reflective one? (I think this is more applicable to Mac software purchases than iOS products where I’ve bought lots of crap before stopping my purchases for the most part)

I think it started with the Build and Analyze (B&A) podcast where I heard Marco Arment talk about software development. I found out about B&A from a Merlin Mann podcast called Back to Work.

I bought Marco’s Instapaper app because of B&A. Here was an opinionated developer that wasn’t afraid to tell why he did or didn’t do certain things when it came to Instapaper. I liked the guy’s honesty, hard headedness and general East Coast demeanor. Marco sold Instapaper in 2013 and I thought that Instapaper was doomed to take a long slow nosedive into oblivion. But I was wrong because Marco entrusted his software baby to a great steward for his product.

He moved on from B&A to the Accidental Tech Podcast. He also created The Magazine but I didn’t buy it because it was not my cup-of-tea as a product (Apple’s Newstand never seemed right to me so I never bought anything in it).

He recently created a fantastic podcast client which I’ve been enjoying since day one of its launch. Overcast embodies Marco’s sensibilities and his choices fit the checkboxes that I have for a podcast client.

It’s funny how all of this started because of a podcast and listening to some anonymous guy passionately talk about his software and why he made certain choices when designing that software.

I have yet to be disappointed by a product purchase that is based on the voice behind the code. I’m not sure if this is a great approach to purchasing software but it works for me.

Voices that I’ve liked:

Book Review: “Childhood’s End” by Arthur C. Clarke

Warning: Spoiler Alert: If you intend to read the book, please do not read this review.


  • Harlequin level: n/a
  • Plot/action/story: 5
  • Solid conclusion: 5
  • SciFi thrill: 5
  • Fantasy thrill: 5
  • Part of a series but doesn’t skimp: n/a

Overall thoughts about the book

While I’ll do my best to describe my impression of “Childhood’s End”, I have to admit that words fail me. It is a stunning novel beyond description. I read it on my Kindle and immediately ordered a 1953 hardcover version the moment that I finished it. I rarely do that…actually, I never do that.

While I understand that scifi purists might scoff at Clarke’s combination of scifi and the paranormal, I don’t think anyone can deny his storytelling mastery when it comes to both.

Clarke divides the book into 3 parts:

  1. Earth and the Overlords
  2. The Golden Age
  3. The Last Generation

In Earth and the Overlords we are introduced to the mysterious Overlords that show up just as man is about to take off to the stars. This theme of man being prevented from reaching the stars is repeated over and over again and the last part of the book resolves this fundamental issue. Mankind does not ever take off but man’s children leave on a completely different route into the universe.

Getting back to this first part, Clarke plays with and refuses to answer whether the Overlords are ‘good’ or ‘evil’. Are they really here to help mankind or do they have a different agenda? He also taunts the reader with the most basic of questions – what do the Overlords look like and why do they refuse to show themselves?

He constantly hints at a hidden agenda and he uses the relationship of overlord Karellen with the human Stormgren to both clarify and obscure the Overlord/mankind relationship. This part of the book is best summed up by the last paragraph of part one:

And Stormgren hoped that when Karellen was free to walk once more on Earth, he would one day come to these northern forests, and stand beside the grave of the first man ever to be his friend.

There’s this bittersweet tone that the above paragraph sets for the next section of the book – The Golden Age.

In The Golden Age we are immediately shown what the Overlords look like. Sure it’s 50 years later and the Overlords have had time to affect man in a way that brings utopia to all mankind. But it’s still shocking to find that the Karellen (and therefore all Overlords) looks like Satan.

At this point I was sure that the Overlords’s agenda was ‘evil’ and of course I was wrong once again. Clarke is like an amazingly strategic volleyball player that sets up a fake spike and has one of his compatriots slam the ball on his confused opponents.

Mankind’s utopia is in full swing when we’re introduced to Rupert Boyce. Through Rupert we meet George Greggson and his future wife – Jean. And through Rupert’s séance party Clarke shows us some slight hints to the Overlord’s actual agenda. It has to do with Jean revealing the exact location of the Overlord’s homeworld (actually the location of their sun). In the process of showing us this we are also introduced to Jan Rodricks, who in the last section of the book, turns out to be the last man on earth.

Jan figures out a brilliant way to be a stowaway on an Overlord ship reaching for the stars and visiting their world. This daring move in conjunction with time dilation assures his place as the last man on earth.

The Golden Age closes with a one-two punch. The first punch is Karellen’s clear dictate that mankind would never reach the stars:

“It is a bitter thought, but you must face it. The planets you may one day possess. But the stars are not for man.” “The stars are not for man.” Yes, it would annoy them to have the celestial portals slammed in their faces.

The second punch is the bittersweet passage that continues the build up of the ending in this constant circular drumbeat sort of way. As I mentioned before – words fail me.

It had been the Golden Age. But gold was also the color of sunset, of autumn: and only Karellen’s ears could catch the first wailings of the winter storms. And only Karellen knew with what inexorable swiftness the Golden Age was rushing to its close.

The Last Generation begins with the pettiness of George Greggson and the eventual move of both him and his family to New Athens – a sort of modern day commune. Here in New Athens Clarke builds up and hammers through the transformation of the Greggson’s children and the eventual transformation of all of the children of the world.

As a parent, some passages are utterly terrifying:

“I’ve only one more question,” he said. “What shall we do about our children?” “Enjoy them while you may,” answered Rashaverak gently. “They will not be yours for long.” It was advice that might have been given to any parent in any age: but now it contained a threat and a terror it had never held before.


It was the end of civilization, the end of all that men had striven for since the beginning of time. In the space of a few days, humanity had lost its future, for the heart of any race is destroyed, and its will to survive is utterly broken, when its children are taken from it.

Here Clarke reveals the full plan of the Overlords and the upcoming extinction of mankind. He also intersperses Jan’s journey to the Overlord home-world. It is a sort of high-tech rendition of biblical hell with less drama and lots of tech. Through Jan we get to see that the Overlords are really in their own sort of purgatory.

Jan is truly the last man on earth and through him we see the ascendence of man in the form of the children’s merger with the Overmind. Yet this merger is strange and inexplicable. We don’t know what really becomes of the children, we just know that they are no longer an obvious remnant of mankind.

They were emptier than the faces of the dead, for even a corpse has some record carved by time’s chisel upon its features, to speak when the lips themselves are dumb.

The Overlords are stuck in their own hell. They are servants to a master that they cannot understand. They are at an evolutionary dead-end and the only thing that they can do besides serving the Overmind is to do their best to understand that which they cannot understand. And yet Karellen assures us that they will not bow their heads without a fight.

Yet, Karellen knew, they would hold fast until the end: they would await without despair whatever destiny was theirs. They would serve the Overmind because they had no choice, but even in that service they would not lose their souls.

The above passage reminds me of Invictus and the way Clarke applies it applies to the Overlords – man’s version of Satan is quite astounding.

>Invictus by William Ernest Henley

Out of the night that covers me,
Black as the pit from pole to pole,
I thank whatever gods may be
For my unconquerable soul.

In the fell clutch of circumstance
I have not winced nor cried aloud.
Under the bludgeonings of chance
My head is bloody, but unbowed.

Beyond this place of wrath and tears
Looms but the Horror of the shade,
And yet the menace of the years
Finds, and shall find me, unafraid.

It matters not how strait the gate,
How charged with punishments the scroll,
I am the master of my fate:
I am the captain of my soul.

Man’s children have ascended and become something else (we don’t know if they’re in ‘heaven’, we just know they’re in ‘something else’). But the Overlords…they’re still fighting to be the captains of their soul.

Amazon Web Services Lesson – S3 Bucket Names are Universal so get your domain named S3 bucket before someone else does

I recently subscribed to Nicholas Zakas’s excellent http://www.nczonline.net newsletter and came across a shocking realization about Amazon’s S3 service: all S3 bucket names are universal. Let me explain what this means.

It all started with wanting a static image server for my blog

A few weeks ago I wanted to host all images for this site on images.eli4d.com. Why? Well I wanted to be able to easily move my blog without worrying about static assets. I also wanted to explore an AWS service such as S3.

I finally got it to work after beating my head against some security policy issues (this had more to do with me than Amazon but this is for another post). One of the key points that I learned when doing this is that the simplest approach to create an S3 based static site requires naming the S3 bucket with the name of the domain.

But then I read the following from Nicolas Zakas’s newsletter

From http://www.nczonline.net/blog/2015/08/wordpress-jekyll-my-new-blog-setup/

But then I read the following from Nicolas Zakas's newsletter

OMG – what?

image attribution: https://flic.kr/p/8Y1Mp9

OMG - what?

So what does this mean?

It means that if you have any intention of ever having a static S3 based website, then you should create the S3 buckets with the various permutation of your domain’s names before someone else does (so domain.com, www.domain.com, blog.domain.com, etc…). This is worth doing even if you don’t use those S3 buckets.

Keep in mind that you’re not locked out of using any other S3 buckets for your domains. But you have to deal with some unnecessary hoops.

So what does this mean?


Many thanks to Nicolas Zakas for documenting his experience with S3.