About Me

Some information about me, what I do and have done.

22 Oct 2018
3 min read

Hello! I’m Blake Rain, a UK-based software engineer with a passion for Rust, C++, and Haskell. I’m a seasoned user of neovim and a Linux and Unix enthusiast. I currently work at Inchora.

Over the years, I have been privileged to work across diverse sectors, from film processing and industrial automation to property management. My projects range from developing accelerated post-processing software for the emerging digital film industry, prototyping control boards for industrial automation, to creating tools to boost commercial property investment and contact centre automation.

These experiences have lead me to develop skills in system design, low-level system development, Unix and Linux kernel development, electronic design, network development, firmware development for embedded systems, functional programming, and user interface development.

Projects I’ve worked on

I have had the fortune of working on a wide range of projects in different industries: from film processing to industry automation to property management.

  • A PCI-DSS de-scoping solution for contact centres, which involved processing huge volumes of SIP traffic. This entailed lots of packet processing and a custom user-space driver for Intel NICs.
  • Contact centre automation, driving two contact centres in the UK. We built an adaptive dialler and campaign solution for the full automation of the contact centres at Inchora Home.
  • Automated investment opportunity set optimization for commercial property investors. This involved searching a large set of opportunities, constrained by various parameters such as capital, preferred yields, LTV preferences, rent cover and so on.
  • A tool to assist in the sale of commercial properties. The dominant element of this project was a calculator for commercial property investment which could perform goal-seeking of multiple variables.
  • Industrial automation: design and prototyping of control boards and embedded software development. This projected was concerned with fluid control in chemical and waste processing, and included both user interfaces and custom controllers.
  • We built some accelerated post-processing software during the emergence of digital footage in the film industry, where we produced a suite of effects tools that delivered high-fidelity at real-time speeds.

These projects have led to a fairly wide ranging experience:

  • Lead system design: both small, resource bound embedded systems and medium-scale information systems.
  • Low-level system development, including graphics pipeline optimization, JIT and assembly.
  • I’ve built a few custom Unix (and later Linux) kernels for custom and proprietary hardware.
  • Electronic design including schematic capture and PCB layout for prototype devices.
  • Network development, mainly with Ethernet networks spanning the physical and link-layer to transport and protocol design.
  • Firmware development for embedded systems: working with microcontrollers and FPGAs.
  • Working with higher-order functional programming languages (mainly Haskell) and some work with automated deduction tools.
  • User interface development in terminal applications and GTK; later moving to web-application development for my sins.

Getting in touch

If you need to get in touch with me, you can either use email or DM me on Mastodon. If you need to send me something securely, you can use my public key below.

Click to show public key
-----BEGIN PGP PUBLIC KEY BLOCK-----

mDMEZkt11RYJKwYBBAHaRw8BAQdAHvi/Zji4LBzJ/Q+0oIj8OcWZ7z0XyFxWJJ0/
6A5mnRO0JUJsYWtlIFJhaW4gPGJsYWtlLnJhaW5AYmxha2VyYWluLmNvbT6IkwQT
FgoAOxYhBI4qyosBdf3c6pxxmHIuzuuStTCqBQJmS3XVAhsDBQsJCAcCAiICBhUK
CQgLAgQWAgMBAh4HAheAAAoJEHIuzuuStTCq5acA/0CsWMC9JNIdpdFPTxiE4cJF
CzR+qda6Kc6z6xzMrIKQAQCSQlJ7wolCmAiqpOl/nbAnkozAv+1aT7z28kHEnGYH
Cbg4BGZLddUSCisGAQQBl1UBBQEBB0D0fEdIMv0DHUWbvL052yGvI+29qQAz3/34
m3P9lwx/FgMBCAeIeAQYFgoAIBYhBI4qyosBdf3c6pxxmHIuzuuStTCqBQJmS3XV
AhsMAAoJEHIuzuuStTCqnLIA/1JoIn1tKOR5NFnW8ey8uB+u75iWWVeMJRd5ulRL
r+psAQDlTzxKprXj0WMJBTjIYIyqIWLRF61OKjMgLLIVBqHVCQ==
=J8Ej
-----END PGP PUBLIC KEY BLOCK-----