5 December 2017

Heard about miniflux on Micro.blog a couple of day ago and spent some time installing it on my own server this evening. Impressed so far. It’s not pretty but it’s very fast, and its compatibility with the old Fever API means that it can be used in the likes of Reeder and I never have to see the web UI.

4 December 2017

I set Firefox 57 — the new version with the overhauled browsing engine — as my default browser this morning, replacing Chrome.

The same 4 extensions are installed on every browser I use: Ghostery, uBlock Origin, HTTPS Everywhere and a fourth that provides Vim keybindings. In Chrome, that plugin has always been Vimium.

Vimium is available for Firefox, but it isn’t yet compatible with version 57. In fact, after looking around a little, most Vim keybinding plugins seem to be incompatible with version 57.

My search eventually led me to Saka Key, the pot of gold at the end of the rainbow. It’s fast (not that that was ever a problem with Vimium), open source, configurable, well designed (that was a problem with Vimium), and supports the same bindings as Vimium1. It even has a Chrome version.

  1. Vimium’s bindings aren’t the default ones. To use them, go to “Add Ons” → “Saka Key” → “Preferences” and choose “vimium” from the dropdown next to the “Keybindings” heading. [return]

The scripts I use for blogging with Vim and Hugo

Nearly 4 months ago to the day I setup a publishing workflow for this site that allows me to create, update, and delete content via Google Drive. It’s a setup that has worked flawlessly for me.

In my quest to streamline the blogging process as much as possible, I also wrote a couple of scripts around the same time. The first to create a new post, the second to publish the post currently open in Vim. These too have worked very well, so let’s take a look at them.

Continue Reading →

2 December 2017

Can’t remember the last time winter started so harshly here. Dropped to -9°C last night. Currently -8°C and falling with high winds to boot.


23 November 2017
18 November 2017

Snyk has been around for a while but this fantastic new addition to GitHub brings dependency vulnerability monitoring to the masses.

Vulnerabilities that have CVE IDs (publicly disclosed vulnerabilities from the National Vulnerability Database) will be included in security alerts. However, not all vulnerabilities have CVE IDs—even many publicly disclosed vulnerabilities don’t have them. We’ll continue to get better at identifying vulnerabilities as our security data grows.

They “only” support JavaScript and Ruby at the moment — in addition to those two, Snyk also supports Java, Scala, Python, Go and Gradle — but Python support is said to be coming in 2018 and I’m sure they won’t stop there.

In which Dave DeLong addresses a whole host of misconceptions held about dates and time.

The TL;DR for programmers is:

You should always use the Date and Time Services provided by the ICU Project. If you’re an iOS/macOS developer, then you should always stick to NSCalendar and its cohorts, which are all built on top of the ICU libraries.

16 November 2017

Today’s recommendation is a fantastic little Sketch plugin by Andrew Fiorillo that’ll export your selected artboards and bundle them up in a PDF. It does it perfectly and, somewhat impressively, it does it in 116 LOCs including comments and whitespace thanks to Sketch’s undocumented MSPDFBookExporter class.

If you’ve ever tried doing this manually you’ll know just how much time a plugin like this can save.

15 November 2017
13 November 2017

In a blog post about new user protection features coming to Chrome in future versions, Ryan Schoen mentions this update scheduled for Chrome 65 which should prevent the target='_blank' vulnerability known as “tabnabbing”:

When the user interacts with content, things can also go wrong. One example that causes user frustration is when clicking a link opens the desired destination in a new tab, while the main window navigates to a different, unwanted page. Starting in Chrome 65 we’ll also detect this behavior, trigger an infobar, and prevent the main tab from being redirected. This allows the user to continue directly to their intended destination, while also preserving the context of the page they came from.

If you’re unfamiliar with tabnabbing, a non-malicious demo along with recommendations on how to prevent the attack can be found here; here’s a nice concise write up about the attack too.

10 November 2017

Terence Eden with a good rundown of the problems around standardising a country input type:

Let’s start with the big one. What is a country? This is about as contentious as it gets! It involves national identities, international politics, and hereditary relationships.


Some countries don’t recognise each other. Some believe that the other country is really part of their country. Some countries don’t exist.


Borders shift. Countries disappear, merge, split, change names, change flags, and do all manner of weird things which trip up your edge cases.

8 November 2017

’Tis the season! This morning brought with it the first dusting of snow. ⛄️

This is a good post if your workflow already revolves around tools designed to run in the terminal and you’re interested in using the iPad Pro as your main computer.

I’ve experimented with this sort of thing in the past, and whilst it’s not realistic for me to use an iPad as my day-to-day machine — I need Sketch, Xcode and decent dev tooling for a start — I can certainly see why others are drawn to the idea.

One of the cons mentioned is the monthly cost of a server. It’s worth remembering that you don’t have to rent a server to have this kind of setup; you can keep a box running at home and log into that instead. When I was playing around with this stuff I was just SSHing straight into the Hackintosh that is my daily driver.

7 November 2017

Hadn’t used Google Maps’ “Send directions to your phone” feature before. 2 clicks, 1 tap and I had the route on my phone and downloaded for offline use. Props to whoever designed that flow.

Testing micro-posts…

27 October 2017

‘The Dying Art of Disagreement’, an opinion piece by Bret Stephens in the New York Times is, as far as I’m concerned, required reading.

In it he examines how a disagreement between two people is handled in today’s society; how we’ve reached a point where in many cases two people of opposing beliefs are no longer having an actual conversation. At best one party will shout the other down whilst attributing political -isms or -phobias, at worst they’ll resort to violence.

More shockingly, a narrow majority of students — 51 percent — think it is “acceptable” for a student group to shout down a speaker with whom they disagree. An astonishing 20 percent also agree that it’s acceptable to use violence to prevent a speaker from speaking.

I’d be doing the piece a disservice by going on much longer. You should instead spend that time reading it for yourself. I’ll close with the following quote:

[T]to disagree well you must first understand well. You have to read deeply, listen carefully, watch closely. You need to grant your adversary moral respect; give him the intellectual benefit of doubt; have sympathy for his motives and participate empathically with his line of reasoning. And you need to allow for the possibility that you might yet be persuaded of what he has to say.

26 August 2017

I always enjoy these sorts of posts: A developer starts with a specific goal in mind and an idea of how it might be accomplished. They proceed to run into a problem and rather than glossing over it, they document their debugging → understanding → fixing process. In this post the goal is to implement a binary tree data structure in Rust.

I particularly liked the optimisation section at the end. In my experience, it’s not uncommon for the first implementation that compiles and runs as expected to be fairly verbose. From there, optimising for usability and readability can be done fairly quickly though.

25 August 2017

U2F devices have been on my radar for a while; I’ve yet to take the time to investigate them properly though. This collection of to-the-point overviews of the most popular devices provides a nice jumping-in point.

15 August 2017
You can keep up to date with new posts by subscribing to the RSS Feed or by following me on Micro.blog.