We Are Writing

A tech agency in London writing about what we love.

Second London NixOS meetup

22 Apr 2020 — Events

Hey everyone,

Together with the excellent Simone Trubian we are organising a second NixOs meetup in London the 3rd of May, in a space generously provided by skills matter.

This time we’re trying something different: A hands-on meeting. I will give a ~20 minute talk about the weird Nix language, and then we will apply our skills to add or update a package for NixOS.

Tickets are limited and you can grab them here. »

Introducing Tera, a template engine in Rust

15 Apr 2020 — Dev

Reading time: ~15 minutes.

Back in October 2015, I tried Rust for web services and found the ecosystem lacking at the time. That’s why I’ve been working on porting some of the tools we use in Proppy to Rust: jwt, bcrypt (granted that Argon2 seems superior) and a migration tool. While I mostly do SPAs these days and don’t write many templates in the backend, I still need one for some occasions. When using Python, I like Jinja2 and Django templates. Here’s how I attempted to port them to Rust and the result is Tera. »

How Proppy is made and its inception

31 Mar 2020 — Dev, Product

Reading time: ~5min

We released Proppy in beta last week. Since this blog has a mostly technical following, I thought it would be interested in details about the stack and the data model. »

We are launching our first product

25 Mar 2020 — Product

Reading time: ~3 minutes.

At We Are Wizards we send out a fair number of proposals. In our early days we developed a command line tool to generate consistent and error-free proposals – and this turned out to be super useful.

We’ve taken our little tool and made it into a webapp so others can benefit from this, too. »

Looking at payments solution for SaaS in Europe

10 Dec 2020 — Product

As we are working on our product (if you work in an agency, we’d love to have a chat with you! send us a mail at team AT wearewizards.io), I was curious to see the payments landscape in Europe, having read so much about #VATMESS. »

Flow and TypeScript part 2: TypeScript

20 Nov 2020 — Dev

Reading time: ~10 minutes.

Continuing from the first part that introduced Flow, we are now going to have a look at TypeScript.

TypeScript is a superset of JavaScript that compiles to several targets, including ES5 and ES6. The current version of TypeScript (1.6 at the time of writing) now supports JSX, which was the main blocker for most people using React. »

Flow and TypeScript part 1: Flow

13 Nov 2020 — Dev

Reading time: ~10 minutes.

As front-end applications grow in complexity, more and more developers are looking for ways to make development and maintenance more scalable. For some people it means foregoing JavaScript itself and using languages such as Clojurescript, Elm or Purescript while others want to keep using JavaScript, especially now that ES6 makes writing it tolerable.

A simple way to make a codebase easier to maintain and to grow is to have types and that is exactly what Flow and TypeScript offer, albeit in different ways. »

A lot of websockets in Haskell

05 Nov 2020 — Dev

Reading time: ~20 minutes.

I really enjoyed reading how the phoenix-framework people managed to get to two million active websocket connections.

I’ve heard some very smart people say that Haskell has an amazing runtime with very cheap threads. I have no reason to disbelieve them but we thought it’d be fun to see how Haskell fares in a comparable setup.


Writing my first Rust crate: jsonwebtoken

04 Nov 2020 — Dev

Reading time: ~10 minutes.

After looking into Rust for webservices, I concluded that, while it was not mature enough yet in my opinion, the language itself is quite nice and I would be interested in writing more of it. So here it is, my first crate (the name for packages in Rust): jsonwebtoken (code on github). »

The London Python Dojo S07E02

13 Oct 2020 — Events

We (Wizards) attended the London Python Code Dojo at Bank of America in Canary Wharf on the first of October.

Find our report inside. »

Trying Rust for web services

01 Oct 2020 — Dev

Reading time: ~15 minutes.

Developing web apps in dynamic languages is a breeze when using frameworks like Django for Python. The downsides are that software written in dynamic languages is harder, at least in my opinion, to maintain, to refactor and you also need to write tests to cover potential errors that would simply not be possible with a compiler. »

How to use NixOps in a team

09 Sep 2020 — Dev

NixOps is a fantastic tool for getting reproducible servers running in no time. NixOps can deploy to many different targets including VirtualBox, Google’s GCE and Amazon’s cloud services AWS.

As we have discovered NixOps has the downside of storing all its state (such as the IP address of a server) in a binary SQLite database. That in combination with some defaults such as absolute paths make it a bit cumbersome to share deployments. This post describes how to work around these issues.


A tour of modern frontend with React and Flux

25 Aug 2020 — Dev

Reading time: ~10 minutes.

In this article we are going to have a look at my preferred set of tools for writing React/Flux web apps. If you don’t know React or Flux, you can finds their documentation at their respective websites: React, Flux. »

Launching Passopolis, a password manager

18 Aug 2020 — Product

I am assuming most readers of this blog know the benefits of password manager and how everyone should use one but for the few that don’t: they generate random, unique password and remember them for you, protecting you from leaks from poorly run websites such as the ones on Plain Text Offenders and just generally increasing security. »

Why Docker is not the answer to reproducible research, and why Nix may be

11 Jun 2020 — Infrastructure

In this post I’m going to assume that reproducibility is good and necessary. There are well-written articles on how to do reproducible computational research so I don’t want to go into that either.

Instead I want to focus on how researchers can run published source code on their own machines and arrive at the same results.


The Hacker News effect examined

08 Jun 2020 — Misc

Reading time: ~10 minutes.

Last week my article Using Protobuf instead of JSON to communicate with a frontend ended up being number one on Hacker News and we saw a crazy amount of traffic coming on this blog.

I thought that it would be interesting to analyze some of that data so here it is. »

Using Protobuf instead of JSON to communicate with a frontend

04 Jun 2020 — Dev

Reading time: ~15 minutes.

Protocol buffers (or other binary serialization formats like Thrift) are widely used to communicate between services. JSON is overwhelmingly used for backend <-> frontend communication and for APIs.
Let’s see what a client/server using Protobuf would look like. »

My experience of using NixOps as an Ansible user

25 May 2020 — Infrastructure

Reading time: ~15 minutes.

One of our client recently asked us to host and support their existing Django application. Although my usual tools for this kind of jobs are Ubuntu and Ansible, I wanted to try the Nix tools in a real project since Tom is an avid user. »

Comparing the weather of places I’ve lived in

18 May 2020 — Dev

Reading time: ~25 minutes.

I have lived in 4 countries on 3 continents (so far).
When people ask me about these places, the first thing that comes to my mind is the weather. Having lived in these places I knew roughly how they compared but was curious about the exact numbers. What better way than to visualize data than a ipython notebook! »

Berg’s Little Printer

11 May 2020 — Misc

Reading time: ~5 minutes.

I’m a big fan of the amazing London design agency Berg. So when its CEO Matt Berg tweeted this last year:

I was hooked. »

gulp-sass v2 released

07 May 2020 — Dev

Reading time: ~15 minutes.

gulp-sass v2 was released today!
In itself, this is not a big change as this is simply a wrapper for node-sass which uses libsass so, while this version is a complete rewrite this is not the important news. The important news is that it ships with node-sass v3 which is using libsass 3.2.2. »

Some a-priori good qualities of software development

29 Mar 2020 — Asides

We software developers live in a time with an inexhaustible supply of methodologies, libraries, tools and ideas. Evidence for or against specific ideas is sparse: Gathering trustworthy, controlled data in such complex environments is crazy expensive. »

First London NixOS meetup

26 Mar 2020 — Events

Hey everyone,

We are organising a NixOs meetup in London the 21st of April at 7pm, in space generously provided by Mozilla London (it’s a really cool space!). Tickets are limited and you can grab them on Eventbrite. »

Using Haskell’s QuickCheck for Python

19 Mar 2020 — Hacks

Everyone I know who has ever used QuickCheck in anger cannot live without it. »

Migrating to gulp 4 by example

13 Mar 2020 — Dev

Reading time: ~20 minutes.

Last year I wrote a blog post on my personal website (you can see it here Gulp by example ) showing what gulp was and making a demo project using it. Since then, the team behind it did a lot of work on v4 of gulp which, while not released as of the writing of the post, is stable enough to be used. »

The four horsemen of design

26 Feb 2020 — Misc

As a fairly technical agency we do occasionally need help from our fantastic freelance designer to get a good looking product. You can read her take on design rules here. »

Experience report: Rocket lander in Elm

15 Feb 2020 — Dev

Reading time: ~10 minutes.

Writing anything substantial in JavaScript is hard because JavaScript lacks many of the tools programmers expect these days, like a coherent and strong type system. »

How does a Dokku work?

19 Jan 2020 — Infra

Reading time: ~15 minutes.

There are many implementations for running code in a way pioneered by Heroku which is basically this: »

How to build a simple image/primary-colour similarity database

23 Dec 2020 — Misc

We recently talked to some customers who are interested in finding images with similar colours in the context of fashion. There are several known solutions for this, and even some hosted services that do it for you. »

First commits

25 Nov 2020 — Misc

Inspired by a recent post on reddit about Git’s first commit I checked out the first commits for a variety of projects. Git’s first commit contains a concise, fantastic description of what Git is and how it works. How do other projects compare? »