Posts by Year


Migrating from NPM to PNPM

6 minute read

PNPM has been touted as a more performant and reliable replacement for NPM, aiming to reduce slow build times and eliminate issues with dependency mismatches. I primarily investigated PNPM as a way of speeding up the ...

Web based 3D geological model viewer

8 minute read

BGS’s 3D geological model viewer provides on-demand generation of images of synthetic borehole log, vertical section and horizontal slices as outputs from selected 3D geological models. These are made available throug...

Static Code Analysis with SonarQube

3 minute read

Static Code Analysis with SonarQube The use of static code analysis tools can help developers identify code quality issues and security vulnerabilities early in the software development lifecycle, and so helps in the ...

Speeding up ETLHelper’s API transfers with asyncio

4 minute read

ETLHelper is a Python library developed at BGS for reading from and writing to databases. It makes it easy to run a SQL query and transform the results into JSON objects suitable for uploading to an HTTP API.

Back to Top ↑


Personas in product design

1 minute read

Personas are representations of user groups whom we expect to use our products. They help to convey information about the users to the product team. Some products target just a single user group, but most will have mo...

Moving window operations across arrays

3 minute read

Applying functions using moving windows are a common feature of geospatial data analysis and often exist “under the hood” of GIS software. If you’ve ever calculated a slope or aspect grid from a raster elevation datas...

Back to Top ↑


Fork vs Spawn in Python Multiprocessing

9 minute read

I recently got stuck trying to plot multiple figures in parallel with Matplotlib. It took five hours to find a two-line fix to make it work. Afterwards I spent even more hours learning about multiprocessing in order t...

CentOS 7, Ansible and the end of Python 2

2 minute read

Python 2 vs 3 mismatches have been causing problems in our CentOS 7 server adminstration. We use Ansible for automatic configuration and continuous integration deployments. A few of our long-used jobs recently broke b...

Back to Top ↑


BGS contribution to Parse Server open-source platform

3 minute read

A number of BGS projects are using the open source Parse Server platform. Previously an MBaaS (mobile backend as a service) purchased by Facebook in 2013, Parse was closed in 2017 and subsequently open-sourced under ...

Experimenting with GraphQL

11 minute read

Some background, a development team within the BGS Informatics department were tasked with creating an API to expose sensor data (in this case sensor data from instrumentation placed within boreholes). The API to be p...

Moving code into the open

6 minute read

We recently released our internally-developed etlhelper tool under an open source licence. This post is a reflection on the experience, explaining what we did and why and with advice for future projects. The take-home...

Back to Top ↑