Photo from Clint Adair on Unsplash — https://unsplash.com/@clintadair

In a previous article I explained there is no such thing as anonymised data. If you don’t want a privacy breach, don’t release your dataset — in any form. As I explained, even statistical and demographic summaries of the data can be used in so-called reconstruction attacks to reveal information about individuals in the dataset.


Functioning teams usually agree to code standards intended to make life easier for everyone. Unfortunately, we constantly flout those agreed rules — to our detriment. Not only does this lead to less manageable code, it can also lead to friction and discord within your team.

I think Alexander Pope put it best

Ah ne’er so dire a Thirst of Glory boast,
Nor in the Critick let the Man be lost!
Good-Nature and Good-Sense must ever join;
To err is Humane; to Forgive, Divine.

Ideally, we’d like to offload the contentious aspects of code review to an objective third-party that knows…


In HMH we have adopted fairly strict eslint rules regarding code complexity. I’ve written about eslint complexity metrics before, and will no doubt do so again! The rules work well for our code, but do tend to get in the way when we are writing tests.

Tests need code standards too!

I’m not saying you should abandon all pretense to code standards for unit test code, but by their nature tests are often larger, more verbose, and complex than the code they are targeting. …


As a group, developers are a funny lot. We have a rosy view of ourselves. We like to think we are proud of our craft. We tell ourselves that we study best practices, write tests, seek reviews from our colleagues, practice self-reflection, and regularly refocus how we work as individuals and as a team. We fool ourselves into thinking we write the best code we possibly can.

In reality we fail all the time. We generate technical debt, we add bugs, we create confusion — what the heck is wrong with us?

Clearly, we need help.

Picking up rocks

Even monkeys know that…


If you have ever needed to use Python you will have hit problems with versioning and dependencies.

I thought I had this tamed when I learned how to use virtualenv, but installing Tensorflow on a new machine, with Python 3.6 broke everything, and I didn’t have a quick fix.

pyenv to the rescue

Not only does pyenv promise to manage multiple versions of Python, but it manages that using bash scripts, great!

As I am on a Mac I’ll use homebrew to install pyenv, however, the installation instructions cover other platforms

Now, you’ll need to update your bash profile

No we’ll install…

Mark Lennox

Front-end, mobile, devops, and master of null exception

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store