Reflecting on O’reilly’s Departure from DRM Free Technical Books and Finding Alternatives

I’ve been trying to figure out why I’ve been so disturbed by Oreilly Media’s closure of their online bookstore. It feels like I’ve lost an old reliable friend.

The long and short of it is that they are no longer selling DRM-free versions of their technical books (i.e. in epub, mobi aka Kindle format, and PDF formats). Instead they have gone down the path of forcing customers to either have a Safari Books Online subscription ($399/year for individuals) or to purchase individual physical/electronic books through Amazon where the electronic version would be the Kindle format (i.e. a DRM mobi file that could be removed by Amazon at any time). Both of these options do away with the ownership of electronic books1.

Note 1: I have nothing against Amazon’s DRM protected Kindle books, and I have purchased many such books with the understanding that my purchases are a sort of perpetual lease that can be revoked at any time. I feel that this sort of arrangement is bad for technical books besides the significant format issues of the Kindle format (discussed below).

It is easy to be outraged by this change, and my peers at Hacker News have done a commendable job in expressing this justifiable outrage. Like my technical peers, I am rarely prone to emotional outbursts instead resorting to the sweet logical song of rationality. And yet, I can’t help but feel that I’ve lost an old friend. Why is that? It truly does not “make sense” to me.

In 2010 I attended a Drupal conference where Tim O’Reilly spoke about “Open Source in the Cloud Era.” I recall Tim speaking of his company’s core mission which included, front and center, DRM free books. And here we are seven years later with an evisceration of this core mission in the name of a “reinvention”. It’s funny how Tim O’Reilly has said nothing of this change beyond a tweet whose responses have been anything but supportive.

Out of all O’Reilly’s books, I will dearly miss the “Head First” series. But such is life, and I hope that this change will bring new publishers into the fray as well as inspire old publishers to avoid O’Reilly’s path.

Three aspects make me fairly certain that I will not be buying O’Reilly books in the future (which includes steering students away from such books for my online and on campus classes):

(a) As a reader of technical books:

As a reader of technical books, I have learned long ago that the Kindle and ePub version are inferior to PDF. While I love my Kindle Voyage for fiction books, the Kindle format is terrible for technical books. It is bad both from a formatting issue, in addition to the issue that Amazon published Kindle technical books are rarely updated as new revisions of a book are published (see Andy Hunt’s comment by searching for ‘AndyHunt’ in the previously mentioned Hacker News thread about this very issue). Check out any great technical book on Amazon, and you’ll see that more often than not the 1-star reviews refer to the Kindle edition. Here’s an example for “Head First JavaScript”:

The content is great, but the ebook formatting is some of the …
By … March 23, 2015
Format: Kindle Edition|Verified Purchase
> Note – this is about the kindle edition. The content is great, but the ebook formatting is some of the worst I’ve seen.
> Terrible, terrible, terrible. The formatting is some of the worst I’ve seen, with parts frequently unreadable and cut off. Want to read the code examples? Good luck, they were scanned in unchanged as images, so you can’t zoom in by changing the font size. Instead you get to squint!
> Seriously, did they just hire an intern to hold the book up to a flat bed scanner?
> The content is great, but the ebook formatting is some of the worst I’ve seen. DO NOT BUY
> Buy the physical version. Save yourself some headache. If you want an appropriately formatted Javascript e-book, Javascript: The Good Parts is very readable.

The only format that stands to the content rigor of technical books is PDF. Sure PDF is far from perfect, but for this sort of book, anything else is pretty awful.

The Safari online option is somewhat questionable in that the mobile and web reading experience is less than ideal (Hacker News has much information about this). If reading on O’Reilly book is a poor experience on the Kindle app and iBooks app, then how much better can O’Reilly’s Android/iPhone reading app be for Safari Online Books?

(b) As a teacher

As a teacher of technical/programming courses, I have always recommended the DRM free versions of any required textbooks including O’Reilly books. I heavily use the PDF version of such books to create my course materials (so lectures can be in sync with the particular text book for the course), and I steer my students from the Kindle version to the PDF version in a DRM free format. An example for this is the “Head First JavaScript” book. This book has various exercises and puzzles that should be solved by hand (i.e. “pencil the answers in the book” type of work). If you’re using the physical book then it isn’t a problem. But what if you want the electronic version of the book? The only easily printable version (i.e. maintains exact format and pagination of the physical book) is the PDF version of this book.

While I will continue with any current courses that utilize O’Reilly books, I cannot do so for any future courses. Without question, I will resort to non-O’Reilly books for any new courses, and I will only books from publishers that provide DRM free epub, mobi, and PDF.

(c) For future authors of technical books:

If you’re a someone who is considering writing a technical book – why would you write for O’Reilly? Outside of the name, what is the possible advantage? (and no – there is no editorial advantage)

Since O’Reilly’s new electronic version of their books comes only from Amazon – why bother? Why not publish directly with Amazon if you want to go that way? Obviously, you’ll distance technical readers that want PDF but that’s a conscious choice that you would be making. Alternatively, you could publish on Amazon and have a DRM free ePub/mobi/PDF versions that you sell on your site.

If you do want to publish PDF versions of your book(s) and DRM free epub/mobi versions on one platform then there are plenty of publishing options:

  • self publishing via Gumroad or Leanpub
  • more traditional publishing via:
    • Pragmmatic Bookshelf: From a publisher perspective, I would say that this publisher is the closest to being of the old O’Reilly quality while providing DRM free electronic books including PDF.
    • No Starch Press: A large and quirky publisher that allows for parallel Creative Commons publication (see books by Al Sweigart for examples of a hybrid approach)
    • Apress: Yet another one with lots of technical books
    • Pearson’s Informit: Another traditional technical publisher with DRM free epub/mobi/pdf options

Of course, some of these publishers may follow O’Reilly’s path so you might consider having a contractual clause that lets you move your book to another publisher if the DRM free options go away.

In conclusion, the “books as a service” is not a surprising business goal. Recurring monthly subscriptions seems to be the current holy grail for many companies. After all, if Adobe, Netflix, and Spotify can do it why can’t anyone else do so? Whether the company is small or large. But like everything in life the true answer is ‘it depends’:

  • Is the subscription service providing a better product for the customer? (For technical books – O’Reilly media is not providing a better product)
  • Can the customer get the product without a subscription? (Customers cannot get O’Reilly books without subscription (and no – the Amazon Kindle version does not count because of the poor formatting and content update experience for technical books))
  • Can the customer find equivalent products from competing vendors? (fortunately, there are plenty of other technical book publishers)

O’Reilly Media Inc. has every right to choose its business model. My hope is that readers, teachers, and authors will vote with their dollars and feet by moving to other publishers. I know that in my case, O’Reilly’s website will be the last place I will look for a new technical book instead of being the first.

Thoughts? Feedback? Let me know: @eli4d on Twitter


The eli4d Gazette – Issue 018

Issue 018: 2016-11-09

Tech Pick

In Issue 16 of this Gazette, I mentioned a recent well done JavaScript survey. Last week I listened to Sacha Greif, the creator of the survey, on the React Native Radio podcast. There was an interesting part of the conversation where Sacha explained his view/approach to the JavaScript fatigue issue. His fundamental point, that the JavaScript ecosystem has gotten large enough for specialization, was both enlightening and reassuring. In other words, you don’t need to know every nook and cranny of JavaScript and surrounding frameworks/build-tools/fill-in-the-blank to do your job.

Media Pick

Through John Gruber’s site I came across this video where iPhone app developers are reading their 1-star reviews (note that parts of this video are NSFW). While superficially the video is funny, it fundamentally demonstrates the issues of customers and customer support. No matter how much blood, sweat, and tears is poured into software (and to any product for that matter), some customers will always show disdain and disrespect. But that’s the cost of having customers and doing business.

More Recent Articles

Thoughts? Feedback? Let me know – @eli4d on Twitter or eli4dcom on Snapchat (I’m still experimenting with Snapchat)

A Tiny Little Privacy Hack for Grammarly

Remember your English teacher in high school?

Do your remember THAT English teacher in high school? Well, I remember THAT one. Her name was Miss Johnson (I’ve changed this name of course :-)). I don’t remember much of Miss Johnson’s teaching, but I do remember one incident when I accidentally called her “Mrs. Johnson”. After uttering those two words, time stopped, the clouds darkened, and Miss Johnson turned around and became Voldemort. She yelled at me with a quiet hissing tone – “IT’S MISS JOHNSON, NOT MRS. – IS THAT SO DIFFICULT TO UNDERSTAND?” She then turned back and continued with the lesson muttering some other words under her breath.

I may have forgotten my grammar and my English, but I never ever forgot to use ‘miss’ when addressing Miss Johnson.

You don’t need a Miss Johnson – you just need Grammarly

I LOVE Grammarly. It’s an excellent English teacher without the attitude and embarrassment of dealing with a Miss Johnson. While the Grammarly site ( explains all of the features, I think that the Grammarly magic can best be summarized in 2 steps.

You don't need a Miss Johnson - you just need Grammarly

Grammarly Magic – 1

Here’s William Ernest Henley‘s poem Invictus. It is one of those gritty determination types of poem that has been inspirational (at times).

Getting back to Grammarly – so notice that Grammarly flagged a grammar issue. Now looking at this, you would think “well – even Word can do this” and I would answer with “Yes but WAIT TILL STEP 2.”

Grammarly Magic - 1

Grammarly Magic – 2

By choosing to expand the explanation card, you get to see the Grammarly magic. It’s Miss Johnson without the terror and attitude. Here we get to understand why Mr. Henley should have used a comma (now granted – it’s a poem, so in a sense it’s an ‘anything goes’ grammar stew). My point is that Grammarly teaches you about grammar usage using the best relevant examples i.e. your day-to-day writing.

Of course, you don’t have to expand that card, and you can just go based on whatever ‘sounds’ right. But there’s something educationally magical to have this card explain the problems with one’s writing. And if I learn what’s wrong with my writing, I can become a better writer. Grammarly gives you the gift of education without the high school English flashbacks of Miss Johnson. This gift makes Grammarly fantastic!

I have yet to encounter another web service that does such an amazing job at teaching without seeming to teach.

Grammarly Magic - 2

Houston – we have a teeny tiny privacy problem with Grammarly

So hopefully I’ve established how much I like the service. However, like all things on and off the web, Grammarly has an issue when it comes to privacy of information. I’ll explain the problem by covering:

  • The two methods which Grammarly uses to check your work
  • Some fatal privacy assumption that we all make

Then we’ll cover an easy solution for one of the privacy issues.

How Grammarly checks your work – Method 1

The first method is to type/copy your words into Grammarly’s editor. Grammarly checks your words and shows you the errors.

You can do this on Grammarly’s web application (at or through a native application such as Grammarly’s native Mac application.

Questions to consider:

  • On the web application – where does Grammarly store your document?
  • On the native Mac application – where does Grammarly store your document?

How Grammarly checks your work - Method 1

How Grammarly checks your work – Method 2

In the second method, Grammarly checks your work within your web browser. In this case, you need to have Grammarly’s plug-in installed for your specific browser (there are plug-ins for all the major browsers). In the example below, I’m writing an email in Gmail and Grammarly does the checks right on the web page.

Note: As an aside, there are certain sites/conditions where Grammarly will not work. For example, Google drive is not supported at this point.

Question: So in this case – where does Grammarly store your document? Or does it even store your document at all when you’re in something like Gmail?

How Grammarly checks your work - Method 2

Where does your work reside after Grammarly checks it?

As mentioned in the previous steps, a fundamental question is where is your work/data when Grammarly checks it?

The answers are as follows:

  1. If you’re on Grammarly’s web application, then your document is in your Grammarly account. Makes sense – right?
  2. If you’re on a web page (like Gmail’s “Compose an email” page), then Grammarly checks the document, but it does not store your document in your Grammarly account as a ‘document.’
  3. If you’re in a native application (like Grammarly’s Mac client) then Grammarly stores your document on your Grammarly account on the web.

Where does your work reside after Grammarly checks it?

Fatal Privacy Issue – Grammarly’s Native Applications

It is the native application (like the Mac app) that is troublesome from a privacy perspective. After all, if it’s a native application, you would expect the app to save your document on your Mac. If you pursue this assumption, then you would think that using the native application would provide more privacy than any other approach, and you would be completely wrong.

You might be thinking “well that’s not a big deal – Grammarly’s native application is just a wrapper to the web application”. Unfortunately, it is somewhat of a big deal. Consider these scenarios:

  • You are writing a sensitive vendor contract or HR document.
  • You are writing a sensitive internal email to an employee.

There are lots of scenarios besides the above two. The point is that you would not want your document to be stored on Grammarly’s servers (i.e. by being a ‘document’ in your Grammarly account) for sensitive documents/information. Consequently, using Grammarly’s native application could be disastrous from a privacy perspective.

Houston – we have a solution

Grammarly’s browser plug-in provides the solution for our teeny tiny privacy issue. The on-the-web page check is the only Grammarly method that does not store anything in one’s Grammarly account.

Note: There is still a period of time when Grammarly’s web service has the data for the in-web-page checks. I checked with Grammarly’s support folks and found out that “User Data is stored on our servers for up to 14 days. After 14 days, deleted user content is completely removed from our servers.” So if you’re dealing with extremely sensitive information that shouldn’t leave the premises of your network, then you should skip Grammarly altogether. The solution I propose in this section prevents your document from being stored on the web application side as a document. Of course, the usual disclaimers apply regarding anything that I state in this article and throughout my site.

Special Thanks to Kasey and Christine from Grammarly’s Support Team

I’ve come across many support teams, and there’s this very fine line between a ‘just stop asking me questions’ curt response and a sincere, helpful response. Grammarly’s support team goes beyond the ‘curt’ approach, and I really appreciate it.

Kasey answered my questions about the browser plug-in while Christine answered my data retention questions.

Solution Approach

My initial approach to prevent Grammarly from storing my words as a document on my Grammarly web account was to create a simple page with a textarea and no submit button. All I wanted was that tiny little green Grammarly refresh icon to show up. But I got nothing. So I contacted Grammarly support.

Solution Approach

My question to Grammarly support

My question to Grammarly support

Grammarly support response regarding textarea

In relatively quick order the fantastic Kasey responded with the answer. The moment I read this, I did an immediate face-palm – of course it couldn’t see a local file. So I had to put my super simple page on a web server somewhere.

Grammarly support response regarding textarea

Where to store my super simple html file?

I could, of course, spin up a Digital Ocean* droplet, but that would be somewhat ridiculous for one html page (it would be the equivalent of swatting a mosquito with a hammer). My K.I.S.S. (Keep It Super Simple) choices were either an Amazon S3 bucket or GitHub Pages. I ended up going with the creation of a GitHub page.

Where to store my super simple html file?

Here are the steps to the solution

You can find my tiny little Grammarly hack page at You can use my page or create your own and toss it on a web server.

The steps are as follows:

  1. Get an account on Grammarly (you can get a free one or a paid one – up to you)
  2. Pick your least used browser (in my case it was Safari):
  3. Whenever you want to check a document (text only), just copy and paste it into the textarea box and click on the little green Grammarly refresh icon.
  4. After fixes to your document, make sure to copy everything from the textarea box back to your document.

Using the above steps you can use Grammarly without worrying that a document will be created and stored in your Grammarly account.

A reminder: As mentioned above – this method does not prevent Grammarly from storing your data (even this temporary data). In fact, according to Grammarly support you must assume that even for this sort of temporary check, Grammarly’s servers will hold you words for 14 days. That’s a bit crazy from a privacy/security point of view but this retention time is up to Grammarly’s management.

Here are the steps to the solution


Is Grammarly’s service awesome? Absolutely. It’s like having a nice electronic version of your high school grammar teacher (like Miss Johnson) minus the meanness.

Is Grammarly private? It’s as private as any web application that’s on the Internet (my assumption of course because I have not seen any architecture/security documents about their infrastructure). The steps I provide in this article related to preventing Grammarly from storing your document in your Grammarly account. So if someone breaks into your account on Grammarly, they won’t see anything. On the other hand, if someone breaks into Grammarly’s servers, then they could potentially get to any in-line checked user documents (even if the document is not saved in your user account) because of Grammarly’s stated 14 day retention period.

Personally, I find Grammarly’s service to be invaluable. I get to explore the quirkiness of my writing in conjunction with the quirkiness of the English language, and I get to learn to write better.

(And in case you were wondering – yes – I did use Grammarly on this article, but I choose to ignore some suggested fixes and keep my quirkiness)

TextExpander Expands into Subscription Pricing while Consumers Shrink with Sadness


Ok – I couldn’t help write a title that plays off TextExpander’s name and functionality.

So what is TextExpander? TextExpander is a program that is the equivalent of keyboard shortcuts but for words/phrases/paragraphs. For example, I have a snippet (i.e. whatever you want to expand to) that expands ;thx to Thanks for your help!. So thx is the trigger that expands into the snippet of Thanks for your help!

The brilliance of TextExpander is in its integration with iOS. The TextExpander that runs on my Mac can save my snippets to a folder on Dropbox, which TextExpander Touch (iOS) version can use. Then I can use this text expansion on my phone in 2 ways:

  • The first use is through iOS apps that support TextExpander expansion (like Day One and ByWord).
  • The second is through the TextExpander keyboard for iOS apps that don’t support TextExpander (i.e. most apps)

It is my eventual loss of this integration that makes me sad about Smile Software‘s (the maker of TextExpander) to change their pricing model to a somewhat steep subscription model ($45/year).


Pricing up to now

Up to now Smile Software charged for upgrades. Typically the price was around $20 for such upgrades. For instance, the (Mac) TextExpander version that I have is version 4.3.7. When Smile went to version 5, I didn’t upgrade. Why? Well – 4.3.7 had all the functionality that I needed so I didn’t see the point.

In fact, I think this is the core issue with the change to subscription pricing for TextExpander. As a consumer, I only need updates to the application when Apple makes operating system changes that break the old version of the app. TextExpander for me is in the same class as text editors (like the previously mentioned ByWord). For example, I don’t need ByWord, but it’s nice, and it makes me more productive with its built-in features.

Subscription what?

Smile Software Announcement – 1

On 4/5/16 Smile Software announced subscription pricing.

As a consumer, I don’t share my snippets. They’re my own quirky snippets – why would I need to share them?

Smile Software Announcement - 1

Smile Software Announcement – 2

Continuing with information from the announcement:

Why do I need a web application? Up to now Dropbox acted as the synchronization tool since I just need the Mac application to sync up with TextExpander on my iPhone/iPad.

Also, why mention the technology stack? This is a product announcement – so why mention Meteor and Galaxy (and why have links to them)? Maybe I’m reading too much into this but seeing the pricing for Galaxy (which is a service that provides hosting for Meteor) does not persuade me to TextExpander’s subscription model. After all – if I don’t need the web application, then I don’t need Meteor nor Galaxy. Dropbox synchronization has been more than sufficient.

Smile Software Announcement - 2

Smile Software Announcement – 3

The subscription pricing explanation talks about “regular costs to provide an online service”. But if Smile used Dropbox (like it has up to now), then there are is no “online service” and “regular costs”? Exciting times indeed.

Smile Software Announcement - 3

Is this subscription pricing worth for me?

I’m a consumer of TextExpander, not a “life hacker”. I’m not a business, and I’m certainly not an “enterprise user”. So I speak from this perspective.

I can’t justify TextExpander’s subscription pricing. As mentioned before, I can justify needed upgrades due to application breakage from operating system upgrades. Maybe I’m frugal (I’m still sporting an iPhone 5S and am patiently waiting for the iPhone 7S plus), but $50 per year for a text editing class application is very hard for me to justify.

I’ve let Smile Software know this through the contact link mentioned in their announcement. If you feel the same – you should let them know too or through Twitter (@smilesoftware and @textexpander).

Is this subscription pricing worth for me?

TJ Luoma explains this pricing issue very well

TJ Luoma explains this pricing issue well in his post (found through John Gruber’s excellent Daring Fireball site). It’s a post well worth reading. He talks about SaaS and contrasts TextExpander’s subscription model with 1Password for Families (another subscription product).

Where to go from here?

Smile Software published a follow up to their pricing change blog post. The folks at Smile Software are friendly and intelligent people. The concluding part of their follow-up post clarifies that TextExpander was a product that was either declining or staying flat sales-wise. Their choice to go to subscription pricing is a choice to pursue a different set of customers (i.e. business/enterprise/”life hackers”). I bear no grudge towards Smile Software and I wish them well with this approach.

Personally, I’m going to stick to 4.3.7 and potentially upgrade to 5.0 as the “final” TextExpander upgrade. My hope is the iOS integration will work for a while though iOS 10 is coming up fairly quickly. After TextExpander’s Mac/iOS integrations stops working I’ll pursue another solution like TypeIt4Me.

Where to go from here?

How to Reset a Mac OS X Application (ScreenFlow in this case)


This article covers how to do an application reset on ScreenFlow 5 on Mac OS X – Yosemite. It’s more of a reminder to myself but I’m documenting this in case it might help someone else.

The usual disclaimer applies here – I’m not responsible for any potential destruction that may occur on your machine if you follow any of this information.

It started with constant crashes of ScreenFlow 5.0.6

I’ve been working on creating videos for the online version of my Stanford Continuing Studies JavaScript class. I’ve been using ScreenFlow for quite a while because it’s awesome (i.e. intuitive and easy to use), or better said – it was awesome up to now 😦 .

So what happened? The long and short of it was that whenever I tried to smooth volume levels by checking the “Smooth Volume Levels” checkbox, the application would crash. Every stinking time – ScreenFlow 5.0.6 crashed.

It started with constant crashes of ScreenFlow 5

ScreenFlow’s fantastic crashing sequence

First I would get the problem report screen and I would click “Reopen”

First I would get the problem report screen and I would click "Reopen"

Then when ScreenFlow started up again I would get a Crash Reporter screen

I’ve seen this crash reporter screen over and over and over again. I’ve included my email with the report but I’ve heard nothing from Telestream. At this point, I’ve reached the conclusion that it’s an automated report that might go to Telestream but then again it might not (as in /dev/null on Telestream’s side).

Then when ScreenFlow started up again I would get a Crash Reporter screen

How The Omni Group deals with crashes

As a comparison of an app/company that approaches this correctly, when OmniFocus crashes (whether on Mac OS X or iOS) it generates a crash report that it sends via email. The Omni Group’s ticketing system responds with a ticket number and an explanation that this crash has been recorded in their system. As a user I feel that someone (perhaps Ken Case in cat form) will see this ticket via such an acknowledgment.

Image credit:

How The Omni Group deals with crashes

I pointlessly attempt to submit a ticket to Telestream asking for crash resolution and a a download of an earlier version of ScreenFlow

I attempted to submit a ticket to Telestream through my registered user account but this didn’t work. Then I vented my frustration through Twitter (yes – I know – not constructive…though the crash logs are constructive – aren’t they…come on Telestream?).

I also ran ScreenFlow 5.0.2 and the same crash occurs over and over again. So a useful data point – it’s not the latest version that is problematic.

I pointlessly attempt to submit a ticket to Telestream asking for crash resolution and a a download of an earlier version of ScreenFlow

It’s time to work the problem

Maybe it’s my environment. Maybe it’s a recent Yosemite security update. Maybe it’s a solar flare. There are too many things that might have changed since the time when ScreenFlow was stable. So while I can’t track all the environmental/system changes from that point, I can at least clean up any plists, cache, and crash files related to ScreenFlow (this is the duct tape approach).

Image credit:

It's time to work the problem

How do I find all the setting/cache files related to ScreenFlow

I have a copy of CleanMyMac 2 and I run it to see what I get under the “uninstaller” option. When I click on the “Application Reset” button, CleanMyMac helpfully puts filled out checkboxes next to all settings/cache/crash files that are related to ScreenFlow but are not part of the ScreenFlow program. There’s a big “Reset” button at the bottom of CleanMyMac and I use it to delete all of these files.

How do I find all the setting/cache files related to ScreenFlow

I re-run ScreenFlow after the above “application reset”

OMG – smoothing volume levels works without a ScreenFlow crash…for a couple of videos.

I re-run ScreenFlow after the above "application reset"

After editing a few videos – the crashes recur

So this is an electronic duct tape solution but it works for now.

Image credit:

After editing a few videos - the crashes recur

A teeny tiny problem with CleanMyMac 2

One problem with CleanMyMac is after deleting these files – CleanMyMac doesn’t refresh all of the ScreenFlow associated files so to see this again (so I can re-delete them) – I need to quit CleanMyMac and do it again whenever ScreenFlow begins to crash.

It would be great to script this up so I can run it as a bash alias. Luckily, CleanMyMac provides a very helpful way to find out the location of the specific folders/files.

A teeny tiny problem with CleanMyMac 2

The best-est bash alias ever

Ok – so it’s not the best because ScreenFlow values are hardcoded and bash is the shell equivalent of the Punisher (at times). But it’s good enough for now.

The best-est bash alias ever


Looking for instructions on Mac OS X app resets on duckduckgo and google doesn’t yield many useful results. CleanMyMac 2 is pretty good about showing application files that relate to cache, crash, and plists. Using these as a guideline it is fairly easy to create a bash alias to bring out a somewhat big duct-taped club for ScreenFlow’s settings and to deal with a recurring crash.

Thanks Hover!

You’re back Hover!

Dear Hover,

Back on 2/12/16 I wrote you an open letter ( or about some problems with your renwal emails. I really appreciate your same day response via Twitter.

This week I got a renewal email that didn’t make me feel uncertain or unclear about costs and pricing. Now I know that you were working on email revision before my open letter (based on the emails that you sent me in regards to this issue). Nevertheless, I really appreciate these changes and I know that they will help all of your customers.

You’re back in terms of your legendary service and responsiveness! I’m really glad that I can wholeheartedly recommend you again and use ‘Hover’ as a term that refers to great customer service.

Thank you!


PS: Below are the ‘before’ and ‘after’ emails for those that don’t want to read my previous post.

The renewal email before the change

From my post – here is the email that I used to get (with my suggested changes in red).

The renewal email before the change

After the change

Obviously – this is a one domain renewal email. I have not received the multi-domain renewal emails but I assume the price breakdown is the same.

Awesomeness achieved:

(1) The renewal price is clearly shown.

(2) A reminder that once a renewal is processed – there’s no refund and a clear explanation as to why this is the case

After the change

Dear Hover – Please Fix Your Renewal Emails

2016-02-24 Update: Renewal emails have been fixed. Hover is back to being awesome – I created a new post describing the change: or

2016-02-12 Update: I got a very quick and helpful response from Hover via Twitter ( and a detailed email. In the email their representative indicated that:

Hover prides itself on having honesty, empathy and helpfulness among our guiding principles, and it’s clear that we haven’t lived up to that in this case. We’ve prioritized adding a cost breakdown into the renewal notices, which should be rolled out within the next few weeks. As a side note, we currently have a much bigger email overhaul project underway, so instances like this will hopefully soon become a thing of the past.

I look forward to see these changes in the next few weeks. I will update this post when these changes are in place. I also got a response back from the support rep (John) that dropped the ball on my original question regarding this. He admitted to this and was ready to answer any additional questions that I had.

So far – this is the ‘old great’ Hover that I’ve come to admire and appreciate.

Dear Hover…

Dear Hover,

You are my favorite^100 domain registrar. I’ve been your customer for years and you have delivered on your legendary customer service (up to now). In fact, I’ve used ‘Hover’ as a substitute for great customer service in talking to others – as in “well they’re certainly no Hover…even after you go through the 10 levels of voicemail hell, you still end up leaving a voicemail message” or “OMG – that registrar is the opposite of Hover”.

However, recently, I’ve realized that your “you have upcoming domains that will renew” billing related renewal emails are really bad in that:

  1. They don’t inform me of my upcoming cost.
  2. Even after you charge me for a bunch of domains, you give me an email with a total dollar cost without giving me a breakdown within that very email.
  3. Your legendary customer support has fallen on its face in answering my question about this issue nor in remediating this in any way.

In this letter/post – I will explain the problem and the best way to remedy the issue. I hope you live up to the great service that you have provided so far. I know there are plenty of registrars out there but so far there has been only one Hover. I hope that you choose to fix this issue.

The Problem

In this section I cover the problem with your renewal emails and how through omission of domain pricing they inherently mis-inform the customer.

It begins with purchasing a domain

I’ll admit I’m a bit of a domain hoarder, and you don’t make it easy to avoid purchases through your somewhat awesome introductory pricing. Now there’s nothing wrong with this sort of pricing – that’s totally fine. It’s definitely the thing that pushes me over the edge to buy a domain that I’m hesitant about.

It begins with purchasing a domain

A year passes, the earth turns, and it is soon time to renew those domains

Then I get a renewal email. At this point I think “oh yeah – that’s going to be around $15 per domain so $30 since that’s what I bought the domains for – that should fine.”

Now you might counter that my assumption is totally on me and that’s true…I’m human. This is why I need your technological assistance in making the renewal emails better.

A year passes, the earth turns, and it is soon time to renew those domains

After the domains renew – I get the billing email

Wait – how did I end up with a $55.78 bill? Where’s the per-domain breakdown? The renewal email didn’t have any pricing. Heck – even this receipt email has no breakdown of per-domain pricing.

The next day I get the billing email

I know that I can’t cancel a domain after renewal

I’ve asked before about domain cancellation after another billing surprise and I got the following response. OK – I get it – you can’t cancel a domain after it has been renewed – fair enough. So how about letting me know the renewal pricing before I renew the domain. How about letting me know the renewal pricing through the domain renewal emails?

I know that I can't cancel a domain after renewal

So I write you an email about these renewal emails.

I’ll admit it – I was really ticked off when I wrote this email – I’m sorry about that.

So I write you an email about these renewal emails.

The response I get

I get a response from John (not his real name of course).

Say what? So I need to go to to figure out the pricing that you already know when you send me the renewal emails?

Also, first purchase promotional pricing is vastly different than renewal pricing.

The response I get

Why don’t we take a look at ?

So I need to remember the amount of domains that I have to account for any discounts (1). Then I need to search for the tld (2) and write this down, and then search for the TLD of my next domain and write that renwal price. Then I continue onto the next domain and do the same thing. And finally I need to add the total for my upcoming cost. Really?

Now granted – for my 2 domain example this is not that big of a deal. But what about a renewal email for 5 domains or 10?

Why don't we take a look at ?

The Solution

The solution is simple. The whole solution is explained in the following image. I suggest that you include the price of the renewal next to each domain that you list. I’ve used the previously shown renewal email as an example. If you want to be even more awesome – include the approximate total too.

This is a clear honest way to represent the upcoming renewal price for each domain, as well as the overall total.

The Solution

I responded to your support’s email but I got nothing

I responded to the customer support email but so far I’ve heard nothing. You’ve been very very silent Hover – why is that? Why has that legendary customer support faltered?

As your loyal customer – I’m here to help. This is why I took the time in writing this letter and included a solution specification (seriously).

I responded to support's email but I got nothing

Your turn

The solution is simple if not a bit obvious. Will it cost you some revenue because your customers wont let a renewal occur based on blind price assumption – maybe. But you’ve chosen to be a Hover – you’ve chosen to be better than other registrars in dealing honestly with your customers and in providing great customer service. I hope you can approach this renewal email issue in the same way and fix this problem.



PS: I’m more than happy to update this post with a response from you regarding this issue.

QP: Shout-out to High Sierra and the best customer service I’ve experienced in a very long time

So before you ask – no this is not a sponsored ad or any such thing. This is about a great customer service experience which is somewhat unusual these days.

I just received my brand spanking new High Sierra backpack after contacting them ( about their lifetime warranty. The long and short of it is that I’ve had this High Sierra backpack for many years and I’ve used it every day. Recently it ripped and I decided to shop around for a new backpack. I came across some Amazon reviews (and responses from High Sierra) that talked about their lifetime warranty. So I decided to give the warranty a shot.

High Sierra was amazing. I contacted them. They asked for some pictures of identifying tags of the backpack and bam – new backpack on the way. In all honesty I haven’t experienced this sort of customer service (for a physical good) in years. I would have completely understood if they rejected my request (did I mention that I’ve used this backpack every day). But they didn’t. They sent me a new backpack and they cemented me as a loyal customer.

Thanks High Sierra!

Opinion: Where’s my data and who owns it?

A long time ago I worked for an information security firm. In one of the classes that I took – an animated and spunky instructor asked “what is the most secure computer system in the world?” Me and the other participants answered with technical solutions involving things like firewalls and encryption systems and the instructor stood there smiling and waiting with a Cheshire grin.

Once we all finished he paused for a few seconds and then answered the question with “the most secure computer system in the world is a system that is in a bunker connected to an isolated power source with a closed door and a soldier standing in front that door with an M-16 rifle”. One of my peers protested with “that’s not fair – if the system is not connected to a network, then what’s the point?”

That was the ‘aha’ moment for me about data security and the tug of war between data security and connectivity/usefulness. At the time of this class there were very few networks and the Internet as we know it today did not fully exist.

Fundamentally, there is no data security when you are surfing around the net. Your browser is a speed boat that moves from one information island to another, and data sucking barnacles keep collecting on the bottom under the waterline and out of sight. The difference of course from real barnacles is that you ‘data barnacles’ are quickly connected and stored (cookies, super cookies, trackers, etc…). Unfortunately, you can never wash/scrub/scrape them out like physical equivalents.

Surfing is one thing – but what about a specific relationship with a company? What about a ‘paid’ customer relationship versus a ‘free’ one? I’ve been thinking about this recently when interacting Evernote.

I started using Evernote as an alternative to when went downhill but I never became a paid user. My data usage was always below the max allowed for free users and as time passed I used Evernote less and less.

Recently, I came across the possibility that Evernote would go out of business and this made me think of the data the I accumulated over time. What would happen if they got purchased by another company…how would my data be treated? Who would it be sold to?

So I went down the rabbit hole of trying to get my data deleted. I wanted to email Evernote support but there was no way to do it from their website nor from my logged in account. Twitter saved the day and I got into their ticketing system through the Evernote Twitter responder. Through this person I received an email from a support person (Ms. S). I emailed back and forth about removing my account and my data. Below is my communication with Evernote.

The back and forth with Evernote in pictures

Initial ‘contact’ pages on website did not provide access to any support person

Maybe the ‘support’ page will have something.

Initial 'contact' pages on website did not provide access to any support person

‘Support’ page provided no mechanism to contact a support human

Support page was a dud. Onto Twitter.

'Support' page provided no mechanism to contact a support human

Twitter rules in reaching someone at Evernote

Evernote’s Twitter human responder rocks!

Twitter rules in reaching someone at Evernote

I finally have a ticket to Evernote due to Twitter

I finally have a ticket to Evernote due to Twitter

OK – so I followed your procedures for account deletions but…

“Hard deleting data” – interesting? So how many storage and back-up storage mechanisms does Evernote have?

OK - so I followed your procedures for account deletions but...

But wait….what…so where’s my data? Did you delete my data? What happens if someone acquires your company?

But where's my data?  Did you delete my data?  What happens if someone acquires your company?


This whole interaction left me in this fuzzy territory of feeling that my data is still out there regardless of my request for its removal. I suspect the same support path would apply even if I was a paid customer.

I suppose that my hypocrisy was in thinking of Evernote as a library rather than a company. Whereas librarians care about their user’s privacy companies don’t because that’s not their business model. This doesn’t make Evernote ‘evil’ or ‘good’. Google typically gets the good/evil arguments though it applies to companies in general (though as a sidenote – Google’s Data Liberation Front is an interesting approach in dealing with this very issue…kudos to Google for addressing this upfront).

If I willingly gave my data to Evernote then what does make me? I could claim ignorance…’I didn’t know you guys would never let my data go’ but that’s a stupid excuse. My data is only safe in a locked room on a computer that’s connected to an isolated power supply and nothing else. But when my data is this safe it is also pretty useless. How many pages could I have stored on Evernote without a network connection? Zero pages of course. Was the utility of Evernote worth it? This is the same question that can be applied to all other ‘free’ services:

  • Is the utility of Gmail worth it?
  • What about Google docs?
  • What about Office 365?
  • What about all the free services that I use all over the web?

I don’t know if there’s any good solution to any of this. Perhaps I should have chosen Pinboard as my bookmarking service. Maybe a dude developing in his underpants is more trustworthy than a corporation. Then again – maybe not.

Fragmentation Based Customer Support

Note: This post is not about customer service representatives but rather the actual support processes put in place by companies. In the past I’ve worked in technical support and it is a difficult job where you get beaten up by both customers and management. Unlike retail where a customer will physically show up at the returns desk and see the human behind the desk in tech support customers have no problem ‘screaming’ – through the phone, email and Twitter.


Why is it so hard to have great customer support? I think that one big reason is fragmentation. Customer support representatives seem to have very little power to actually help, and it always seems to be another department that is the right one to help.

In this post I talk about my experience with OfficeMax and Adobe. There’s nothing unique about this experience. It happens across most companies. There are very few companies that have great customer support and there are even fewer that have representatives that can solve your problem on the spot. The only company that comes to mind where both great support and rapid resolution intersect is Hover.


About a month ago I ordered a 2 TB portable hard disk from OfficeMax for my workplace. I went through the work related shopping carts to order this drive. It was supposed to be shipped within a week of the order but nothing showed up. Two weeks later, I contacted my workplace finance person to check on the order (i.e. the PO) and she confirmed that everything was squared away on my employer’s side. She sent me an email with the PO number and it alsoincluded the UPS tracking number.

Going to UPS’s website I discovered that the package was not delivered due to an address issue. It was almost the right address, but almost is not good enough when UPS can’t deliver it. So I called the OfficeMax customer service number listed on their the website with PO in hand.

The representative that answered (lets call her Jane 1 aka J1) and politely asked me for the details of my order. Then after about 2 minutes of silence she said to me “I’m sorry sir but I don’t have access to the part of the system that would show me your order. I need to transfer you to the technology team and they’ll be able to answer your question”. Before I could anything in response, I was on hold with OfficeMax’s grating elevator music.

Forty five minutes later I was still on hold and no one from the ‘technology team’ graced me with a moment of their time. I hung up in disgust and went back to UPS’s website. I noticed an option to update the address if I had an account so I went ahead and created an account and updated the delivery address. Since I wasn’t sure if this would work I called OfficeMax again with the foolish hope that I would get someone that could do something about my order.

Jane 2 (J2) picked up the phone and I related my previous hold and call time. She apologized and told me that “the technology team has been merged with customer service, so I should have access to your PO”. She looked it up and finds it, then she tells me that it might not make sense to to alter the delivery through UPS since I already changed the address. I tell her that I want my address to be changed in their system in order to avoid this kind of mess-up can be avoided (after all I’ll be forced to order from OfficeMax again). She tells me that I have to go to my employer’s finance group to get that changed.

The drive arrives the next day due to my intervention through UPS’s website. But it leaves a bitter taste in my mouth about OfficeMax. Moving forward, I decide to find some other way to get equipment to avoid OfficeMax as much as possible.

Now was the representative ‘bad’ in any way? Not at all. Why couldn’t J1 find my order but J2 could? I can only figure that there’s tremendous compartmentalization in OfficeMax’s customer support.

Of course my experience with OfficeMax was a walk in the park when compared to Adobe. Adobe’s customer support fragmentation is breathtaking in its depth and breadth. About 2 years ago I had to move a license for Framemaker from a coworker that left the company. After about two weeks of phone calls and emails the license was finally moved. It was unbelievable exhausting ordeal.

Yesterday I had a flashback to my previous experience with Adobe. My current employer got me a Creative Cloud (CC) license and I got the CC email on Monday:

Hi Eli4d,

You have been assigned a Creative Cloud — Complete membership. This grants you access to the full collection of Creative Cloud desktop products — with team-level benefits.

Accept invitation

Some of your benefits include:

The latest release of Adobe Creative Cloud apps
Access additional tools and services.
Collaborate with colleagues, both inside and outside of your organization.
Use cloud-based storage and device syncing capabilities to access and share your work wherever you are, while the software remains installed on your computer.

Welcome to Adobe Creative Cloud.

I clicked on the ‘Accept invitation’ link and ended up on a Adobe’s login page. My work email address was pre-populated but I wasn’t logged in. I used the site’s forget-password mechanism to get in. After logging in – Adobe’s website informed that I ad no subscriptions and suggested that I really should joint Creative Cloud because it’s awesome. The moment I saw this I thought OMG – I have to deal with their customer support – sh*t.

The contact information page indicated that I could only contact them by email or chat. I kept looking for a phone number – but nothing. So I choose chat even though I had 10 minutes to talk to them (kid pickup deadline). I’m not sure why I did this even though I knew that nothing would happen.

The exact thing like OfficeMax happened here – I got a representative (T1) who got information from me and then transferred me to another representative (B1) who asked me for the same exact information as the first representative. Here’s my chat session with their representative(s).

Note: I should have been nicer to the human on the other side of the keyboard. I was tight on time but he/she certainly didn’t deserve my frustration.

T1: Hello! Welcome to Adobe Customer Service.

T1: I have received your query.

T1: Please allow me a moment while I look into your account & verify the details.

Eli4d: I think I have multiple accounts and your system got confused.

Eli4d: Your file was successfully uploaded: Join your team email_showing_cc_membership.pdf.

T1: okay

T1: May I know the name of the product?

Eli4d: Attaching email that I just got.

Eli4d: Please read the email (attached pdf)

T1: okay

T1: May I know the name of the product?

Eli4d: Creative Cloud…have you read the email?

T1: I have checked your email and it is for creative cloud.

T1: For this query, I am not a right person to handle this issue and I need to transfer this chat to creative cloud support team.

T1: May I?

Eli4d: Why does your system say I’m not attached to any plan?

Eli4d: I have 8 more minutes that I can spend on this before I need to leave.

T1: I understand that but , I am not a right person to handle this issue and I need to transfer this chat to creative cloud support team.

T1: May I?

Eli4d: Is there an 800 number to talk to a human?

Eli4d: fine – transfer me

T1: Thank you

T1: Please stay online while I connect you

Eli4d: I just need someone to fix this already – I’ve been waiting for a while for corporate approval on this and now – I can’t get access.

T1: I apologize for the inconvenience.
info: Please wait while we connect you to a representative.
info: You are now chatting with B1.

B1: Hello! Welcome to Adobe Customer Service.

B1: Hi Eli4d.

B1: I understand that you are unable to use the subscription. I will be glad to check and help you with this.

Eli4d: Any status on this?

B1: I check and see that there is no subscription under eli4d@employer_email. May I know if you have an alternate email address under which you have the subscription?

Eli4d: Did the other representative send you the pdf document that I uploaded?

Eli4d: CC was purchased under eli4d@employer_email

Eli4d: Any other accounts that I have are irrelevant.

B1: May I confirm if you are referring to Adobe Creative Suite 5 Design Standard Student and Teacher Edition?

Eli4d: Your file was successfully uploaded: Join your team email_showing_cc_membership.pdf.

Eli4d: No – it’s creative cloud. Resending the pdf I already sent the other rep.

B1: May I know if you are referring to team subscription?

Eli4d: My time is up with this chat session. Kindly forward this to whoever deals with PO for your system. The attachment I sent you clearly shows you what company this is associated with – employer_name.

Eli4d: It’s unfortunate that your chat system is just a constant non stop frustrating thing.

Eli4d: Kindly give me a phone number to speak to a person.

I still haven’t resolved the CC licensing issue. No one followed up with me after the above chat.

With Adobe I feel like I’m always asking for help from the wrong person. It’s like running in circles on a track. You keep putting mileage on your shoes but you’re not going anywhere. Of course with a running track you’re at least getting some exercise, whereas with Adobe it a constant exercise in futility and frustration.


It’s easy to prescribe un-scalable solution. If you’re not a financial institution, then why must your support people have fragmented information about the customer? Why did Adobe’s T1 representative not have my customer information? Why did he have to send me to the “Creative Cloud team” for a subscription issue? Why did B1 not get the information that T1 already had? Is it a training issue? Is it a systemic problem with customer information?

I don’t know what the solution is for this issue. As a customer I can’t do much about monoliths like Adobe or Officemax. Perhaps someone on their side can do something about fragmentation based customer support. Perhaps and then again perhaps not.

As a customer I’m dreading my next attempt in contacting Adobe. My Creative Cloud subscription is nowhere in sight and I have so little time to deal the tortuous process of getting this resolved. I’m trying to figure out if this is worth resolving or is it better to ask my employer to get a refund and then go purchase something like Pixelmator. Sure it’s not Photoshop but is Photoshop worth all the stress and aggravation of Adobe’s customer support?

Updates to this post

  • 2015-07-29: Before going back to the dreaded Adobe chat channel on Adobe’s site I reached out to Adobe customer support via Twitter referencing this post. I got immediate response from their representative.
  • 2015-07-30: Through the above Twitter conversation I got an actual human from Adobe to call me and resolve the issue (thank you Kashish). I’ve reviewed the ‘Conclusion’ section of this post and I don’t see a reason to change it. I realize that my case was resolved more than anything due to my dogged persistance. Customer support continues to be quite fragmented both for Adobe and many other companies.