alienturnedhuman.com presents

"

an online CV & porfolio for

"

Ben Dickson

(Scroll down or click the arrow)

Benjamin Dickson

Briefly About Me

I am presently working as a freelance software engineer and web developer, having graduated from the University of East Anglia in 2018 and having moved to Japan in 2019.

My main work is as lead Web Developer at PMH, a start up that is at the forefront of large table compression / querying, having created a RESTful API service and a fully featured HTML5 interface to use the technology in real time over the internet.

In my free time, I have been developing Rebright, computational photography software called to turn videos or burst photographs into extremely high dynamic range images.

In my free time I have a strong passion for drinking specialty coffee and cooking vegan food.

I am an avid follower of Formula 1, having followed every season since 1992 and I have attended races in four different countries (UK, Germany, USA, Japan)

I enjoy being creative, having produced many things online over the last 25 years - from games mods for Command and Conquer: Red Alert in the late 1990s, to writing news satire in the 2000s and writing a tech focused web comic in the 2010s.

'Alienturnedhuman' has been my online handle for all of my online activities for the last 20 years.

What I bring to the table:

  • Enthusiasm for the projects I work on
  • 25 years experience developing GUIs & Systems
  • Cross-cultural outlook gained from living in Japan
  • High attention to quality/details
  • Excellent problem-solving skills

Programming Skills

Competent Creative Experienced
Javascript                
CSS                
Python                
Java                
C++                
PHP                
Swift                
SQL                
Git                

General Skills

Good Skilled Excellent
Mathematics                
Learning New Languages                
Agile Development                
UML                
Linux                
Formal Writing                
Spreadsheets                
Graphics Software                

Web Service / Web API Development

Key Skills

  • Python/Flask
  • Linux/Apache Server
  • MVC Architecture
  • Agile Development
  • UML Documentation
  • Git
  • HTML5 / CSS3
  • Javascript
  • RESTful APIs
  • JSON

Details

In 2018 I joined the team at PMH to help develop a webservice for VBase, their new table compression / querying software

VBase is a technology that allows tables with trillions of rows to be highly compressed, but have complex queries computed in milliseconds. Conceived in the product configurator/variant market space - the technology can be applied for any use case requiring large tables.

To enable people to make use of the software, either for trial purposes or for use cases where a local installation was not possible, I was brought on the team to develop both a means to use the software.

This required the development of a bespoke backend that takes customer requests, either through a web portal or directly via a RESTful API, and executes them securely on the VBase engine.

As clients often have high confidential data, the service is engineered to make it impossible for anyone other than the client to access their data, and the requests are sanitised and thoroughly validated to ensure that nothing malicious can be executed.

The other major responsibility I had was to create a fully featured HTML5 web app for filtering, based on the SWT Java prototype originally developed. This was entirely bespoke, as the most critical feature of the application is its speed (usually less than 2ms) - so the application had to minimise latency given the added overhead of sending and validating the requests over the Internet

The web app makes use of the same RESTful APIs available to third party development and is a showcase for the company vision of what is possible.

External Links

Rebright

Computional Image Software

Key Skills

  • Python
  • numpy
  • opencv
  • Computer Vision
  • Computational Photography
  • Multithreading
  • C++
  • gcc
  • Raspberry Pi
  • Android / iOS

Details

After a photographer friend showed me the magical beauty of day time long exposures he had taken using special filters, I realised that digital photography could achieve this without the use of filters, and wrote simple scripts to average all the frames from a video filmed on a tripod mounted camera.

Fast forward to my degree, during my module in computer vision, I had a disagreement with my lecturer about data needed for HDR photography. I realised that using the ideas from my long exposure code, I could use the same principle to make HDR photographs from videos or photobursts taken on smartphones.

This was genesis of Rebright, software I created to create very high quality photographs from older camera hardware.

After studying Computer Vision at University, it enabled me to implement my ideas a lot faster than I had done the first time around, as I was familiar with Python, numpy and the openCV library. Using these I was quickly able to prototype ideas, initially taking videos or photobursts taken on tripods, but later adding my own image alignment algorithms to align handheld shots creating huge image stacks, potentially comprising thousands of images.

Unlike the more modern approaches, that use neural networks to fill in the gaps, this is a much more 'honest' solution to the image stack problem. While it is at the mercy of the algoritms baked into the camera image processors - the rest of the pipeline does not manipulate the data, resulting in exceptional colour consistency in the resulting images, which are perfect for editing in Lightroom.

Using Rebright, I have been able to take nighttime photographs on 10 year old iPhones that look comparable to those on only a couple of years old.

The current phase of development is to move the code base from Python - which is very slow, despite the use of numpy and openCV - and rewrite it in C++, so it can be run efficiently on mobile hardware. The initial C++ solution was more than 3 times faster than python/numpy, and after adding multithreading, I was able run the algorithm on a Raspberry Pi more than 10 times faster than the original python implementation.

External Link

University Project

Computional Image Software

Key Skills

  • Python
  • openGL
  • Parsing/compiling obj files
  • Matrices
  • Cluster Computing
  • 3D Studio Max
  • LaTeX
  • Powerpoint

Details

My final year project was "Realistic Urban Modelling" which saw me work with the University's 3D modelling team to take a model they had made of Norwich Castle and develop ways of making the geometrically perfect blocks look like stone that had endured hundreds of years of erosion.

My approach was to develop a procedural weathering system, which utilised thousands of nodes simulating weathering properties and material properties - all governed by probabilities that I could tune to get different degrees of weathering and different types of materials.

The approach produced very realistic results, but was computationally very time consuming, and would have taken two weeks of constant computing for my laptop to process the entire castle model, as it was an extremely detailed model.

Taking inspiration from the SETI@Home screensaver project from the early 2000s, I wrote a simple server that distributed individual components of the model to client computers that could connect, download a task, and upload the results back to the server until the entire model was done.

I was then able to use all the computers in one of the IT labs (after hours!) as client computers, and process the entire model in less than two hours.

External Link

Web Site / Web Service Integration

Key Skills

  • Python/Flask
  • HTML5/CSS3
  • Javascript
  • XML / JSON
  • Integration of 3rd Party Service
  • Content Management System

Details

Paul Hubbard Online uses a content management system I built myself on top of the Python/Flask framework.

The CMS was designed to be very lightweight, and minimise code overhead, while allowing me complete freedom to design and manage the templates. It performs very well on the Google metrics.

It also allowed me to integrate the listings from the third party property management service the client uses, meaning that the properties shown on the website are up to date.

External Link

Web Site / Web Service Integration

Key Skills

  • Python/Flask
  • HTML5/CSS3
  • Javascript
  • XML / JSON
  • Integration of 3rd Party Service
  • Content Management System

Details

Pad-a-Terre also implements my custom CMS.

The website required integration with a third party booking system. The client also wanted additional services not offered by their third party, such as emails with templates that matched the aesthetic of their website.

The other notable feature on the website was a unified Twitter and Instagram feed, that was filterable in real time by hashtag. This required writing code to query the Twitter and Instagram feeds, and then - upon getting new posts - place them in an ordered database, in the correct relative time.

As there were no services available at the time that provided the exact service the client wanted, this had to coded in entirety from the ground up, and has worked reliably since it was implemented in 2016.

External Link