Hemingway Editor review


To improve the content of my websites I looked into writing tools recently. It is easy just to hit the “ABC” button in WordPress or copy your text in Word, but that won’t tell you if your text has style errors. The first tool I stumbled upon was Grammarly, but some digging suggests they have a terrible privacy policy. Next, I stumbled upon Hemingway Editor. It seemed to do everything I wanted (at first). As I wanted the ability to save files locally, I forked over the cash ($19.99) for the desktop app (Windows version).

I’ve now tried the Hemingway Editor for a few days, and well, it’s not bad nor great. One of the biggest issues is that it checks only for style errors. It doesn’t check spelling or grammar. So you inevitably end up having to copy your content into another editor (like Word) to do that. Having to copy text back and forth is a bit of a drag. So for this issue alone I will try something else next, probably ProWritingAid.

But core functionality isn’t my only gripe with the Hemingway Editor. When you open the app, it shows an empty document that for some reason is automatically marked “unsaved.” Which means it asks you to save the empty & unchanged document if you try to close it, and if you open a file it’ll do so in a new window instead of the existing window. Opening existing files is also a bit of a drag: there isn’t a “Recent Files” menu option.

More indefensible is that .hemingway files aren’t associated with the application during installation, and if you try to associate them manually, it turns out the app has no support for that! Meaning, if associate the app with .hemingway files and try to open them, it’ll just open an empty document instead. Something else I found out while trying to create the file association for the app is that it installed itself into the “AppData” folder. I’m not an expert in Windows software development, but I doubt that’s the right location.

So in conclusion, would I recommend it and is it worth its money? No. But of course you can still use it for free online.

Edit: I ended up going for Grammarly after all (but using the standalone app and not as browser plugin). And ProWritingAid too. I’ll probably end up using all three tools together. What made me reconsider Grammarly was: in the original text of this review (I used it to test all three), I accidentally wrote “expect” instead of “expert.” That’s not an easy mistake to spot, yet Grammarly did it. ProWritingAid isn’t bad either though not as smart, and it sometimes makes suggestions that make little sense. There is no substitute for your brain as the best proofreader.

Corrupted files during development using PhpStorm & Vagrant


I’m currently trying to develop my own WordPress theme from scratch (called “Tengu” but be warned: at time of writing it’s nowhere near usable yet). And I encountered a rather odd bug: part of the style.css file would get corrupted when viewing through the browser.

I am using PhpStorm on Windows and for live testing I use a virtual machine using Vagrant. On it I was using a plain, hardly modified installation of nginx to serve a WordPress test blog. As it turns out, by default nginx configuration turns the “sendfile” option on which usually makes sense, but sendfile apparently is extremely unreliable when used with remote file systems (in my case, VirtualBox extensions).

The quick solution: turn sendfile off during development (look for the appropriate line in /etc/nginx/nginx.conf). Supposedly this also applies to Apache btw. The problem went away immediately when I did that.

Source: https://coderwall.com/p/ztskha/vagrant-apache-nginx-serving-outdated-static-files-turn-off-sendfile

Fixing a Let’s Encrypt certificate renewal error


So just a moment ago I was wondering why my Let’s Encrypt certificate on a particular server wasn’t renewing. I’m using a simple script called acme-tiny for Let’s Encrypt as it’s just about the lightest implementation for it.  However it failed with this error message:

Traceback (most recent call last):
  File "/home/user/acme_tiny.py", line 198, in 
  File "/home/user/acme_tiny.py", line 194, in main
    signed_crt = get_crt(args.account_key, args.csr, args.acme_dir, log=LOGGER, CA=args.ca)
  File "/home/user/acme_tiny.py", line 161, in get_crt
    raise ValueError("Error signing certificate: {0} {1}".format(code, result))
ValueError: Error signing certificate: 403 {
  "type": "urn:acme:error:unauthorized",
  "detail": "Error creating new cert :: authorizations for these names not found or expired: example.com",
  "status": 403

The answer is here: https://github.com/diafygi/acme-tiny/issues/167 and the solution is simple: this was a bug, it has been fixed, just get the latest version. The problem went away after that.

Let’s Encrypt intermediate certificate change

I checked one of the sites I use Let’s Encrypt free SSL certificates on SSL Labs’ SSL Test recently and found to my dismay that they only got a “B” grade while I was pretty sure I got an “A” grade before. Looking at the details it showed the intermediate certificate chain to be incomplete and the dreaded “extra download” warning.

When I set up Let’s Encrypt I used the simple acme-tiny tool and naturally also configured Apache to to use the generated certificate properly, including sending the intermediate certificate. Some searching suggested that it might be because the relevant directive was deprecated in Apache 2.4.8. But the affected sites (incl. this blog) run on a VPS with Ubuntu 14.04 which includes Apache 2.4.7, so that change was not relevant to me (it will be when you upgrade Apache to a later version, like when upgrading to Ubuntu 16.04!).

So after some experimenting I finally figured it out: when the Let’s Encrypt beta went live all the certificates were signed by the “Let’s Encrypt Authority X1”. However sometime in March they changed this and now all certificates are signed by “Let’s Encrypt Authority X3”. My server was sending the wrong intermediate certificate (X1 instead of X3). It’s one of those problems that once you find out what is wrong, is very easy to fix, just understanding what was wrong took some effort.

Links for Let’s Encrypt intermediate certificates can be found here. Acme-Tiny has updated their readme as well.

Enabling http/2 on your sites with Ubuntu and nginx

HTTP is the most important protocol on the web, but hasn’t had a major update in a long time (HTTP 1.1 was introduced in 1997). In May 2015 however the HTTP 2.0 (HTTP/2) standard was published. The new standard promises increased speed.

As of right now http/2 will only work on HTTPS sites. Although the HTTPS requirement isn’t in the standard (although it nearly did), the most popular browser implementations (Chrome, Firefox, etc) don’t support http/2 with anything but HTTPS.

Now to enable http/2 on your Ubuntu server, just run this command (as root, prefix with sudo when necessary):

add-apt-repository ppa:nginx/development

Then run apt-get update and apt-get install nginx as usual. This will install the latest mainline version of nginx (http/2 support is included as of version 1.9.5). Despite the name of the PPA repository this is actually the recommended version: “We recommend that in general you deploy the NGINX mainline branch at all times”.

Now there is a slight problem: if you use this method on the current (as of writing) version of Ubuntu LTS (14.04) then an important part of http/2 will not work: ALPN. This TLS extension is used to enable http/2 during the connection phase. Without it another roundtrip to the server is needed for browser and server to agree on using http/2.

To enable ALPN you need a version of nginx that is built with OpenSSL 1.0.2. This version of OpenSSL is included from Ubuntu version 15.10 onwards (including 16.04 LTS). When installing on Ubuntu 14.04 the nginx PPA repository assumes you have the default version of OpenSSL installed (v1.0.1), hence no ALPN support.

That leaves three options: upgrade to 15.10 (not an LTS release, so not preferable on servers), build the latest version of nginx and OpenSSL yourself (which creates an upgrade burden) or live with having slightly crappy http/2 support until Ubuntu 16.04 LTS is available.

Once enabled you can test http/2 here: https://tools.keycdn.com/http2-test

(http/2 is not currently available on this blog, but is enabled on The Emulator Zone Forum)

Go to Top