Patrick Bowen

Location

Hampshire, UK

Portfolio

phunanon.github.io

Graduate, hobbyist, tutor, freelance, and professional in technologies from full-stack web to electronics.

Enjoys inter-discipline teamwork, problem solving, system architecture, and keeping skills modern.

Education

Staffordshire
University

Sept 2015 – June 2020

BSc (Hons) Computing Science
HND Applied Computing
1st Class
Distinction

Shrewsbury
College

Sept 2013 – July 2015

BTEC Extended Dip. Computing & I.T
DDM

Career Experience

Inbox Insight Ltd.

August 2020 – present | B2B marketing

C#TypeScript .NET 6Framework MVCWebpack GitAzure EFSQL
Full-stack web developer role. Maintaining and extending both internal and external websites; software, micro-services, internal and 3rd party APIs; near total deprecation/replacement of systems during time there. Agile, iterative, one of the first members of a growing team.
Internship in oil & gas well data acquisition: analysis & visualisation, physics simulation, compression, misc. utilities. Agile, with project-manager. Operation of high-voltage equipment. Conducted UK-wide presentations, tours and Python classes for children. Was offered a full-time position after university.

General Electric / Baker Hughes

July 2018 – July 2019 | Oilfield services & equipment

C#C++ Framework.NET Core WinFormsWPF MQTTWebSockets SVNDevOps

Personal Experience

Please do visit my portfolio listing most of my notable projects.

Flagship project – Insitux scripting language

Private tutoring

PythonHTML5, JS, TS Java, MDESQL, R C#, VB.NETC

Freelancing

IaaSHTML5, JS, TS SQLite

Achievements

General Electric Impact Award worth £70 for 6hr day of teaching Python;

vInspired ‘v50’ (vinspired.com) for voluntary computer literacy teaching;

First Aid at Work (expired 2021/03) with St John's Ambulance;

‘Rising Star’, 2013, and ‘Most improved’, 2015, Shrewsbury College;

100% Attendance for multiple terms at college & throughout secondary.

Enterprise projects & contributions

2018-19 - Baker Hughes, a GE company

A primarily C# role in the oil & gas industry, with regular collaboration between other industry fields. Due to the nature of the work not much material is available to share.

Poster - Software Dev. in Downhole Eng.

This poster by me was part of a gallery by all interns on site. It shows four screenshots of WinForms projects I developed solo.

Click to enlarge.

"Sondex Kernel" - MQTT broker

The vision of the software management at the start of my role was to reign-in decades' worth of utilities and software suites to one communication protocol.

It was decided to use one akin to MQTT, which would be translated to an embed-suitable protocol on-the-fly. I helped architect and test this new platform with their senior engineer. It became the "Sondex Ultracom" platform.

After development, to begin developing a new Ultracom utility—however small—required including up to fifteen .NET libraries. It was required to use ever-evolving boilerplate to operate them. I couldn't tolerate this.

I was granted the time to investigate solving this issue, and architected what I called the "Kernel." It became the sole dependency on a project, and at runtime would use reflection to orchestrate one communication "daemon" and one or more "modules". The Kernel provided a thin abstraction between the two types of actor, and completely divorced our business logic from our communication logic for any project. It also made "modules" composable between each other, using MQTT. It sincerely was my favourite programming project of all time.

Live WebSocket tool control/monitoring

As an experiment I developed a C# web-server with an Ultracom MQTT backend, allowing you to remotely monitor and control devices over the internet.

The screenshot shows the web-app used, controlling and monitoring a caliper tool – used to measure the diameter and integrity of oil wells. Here the calipers were depressed by hand on one side.

Not only popular with coworkers, but the local visiting school for demonstrations too!

Click to enlarge

Model-View-Presenter pattern document

I was made to learn MVP at work—something I thought wouldn't be of use to me at the time. Since then I've come to fully appreciate software patterns architectures.

Older coworkers managed to avoid good practise, resulting in very tightly-coupled, difficult to maintain programs. In an effort to combat this I wrote a document on how—and why—to use the Model-View-Presenter pattern in WinForms projects.

Click to read PDF

Miscellaneous contributions

3rd party comms. translation

Successful investigation and adoption of .NET Core

.NET Framework to Core automated porting utility

Combining and porting two firmware console utilities into one GUI

Ported critical a VB6 app to C#

Modernised a critical utility developed in the time of experimental comms.

Collaborated in a LabView adapter for Ultracom

Proof-of-concept proprietary database C# adapter

A simple scripting language for tool control

Proof-of-concept deterministic embedded histogram compression, 42% worse-case

Aid in revival of Azure DevOps use

Co-presented to local school children

Presented 45-min Q&A lecture on VBA to 55 UK-wide interns

Participated in "Dragon's Den" style Year 7's school activity

Physicist, Mechanical, and Manufacturing collaborations

Histogram bulk experimental analysis suite

Monte-Carlo optical simulator implementing Snell's Law

Set out and delegated a data processing workflow

Collaborated to develop an equipment testbox with soft. utility

Virtual oscilloscope over USB & TCP/IP

Magnetic field 3-axis diagnostic app

Personal & Academic projects

Bachelor's dissertation artefact

Different sport competitions are implemented with any back-end technology through a HTTP API, synchronised through an immutable message transcript. See screenshots here here until I add a gallery to this page; apologies!

Click to enlarge.

Arduino & PC programming language

It's been a dream to have a programmable pocket-PC, and my own programming language. So I am developing a language called Chika in C++. It uses s-expressions, pure functions, immutable values, avoiding heap memory. Already it has a core library and some basic drivers like OLED and keypad. It can even compile on Arduino.

Isometric Shooter/Melee Survival

For the Global Games Jam 2018 another student and I built a game from scratch within 48 hours in C++. Unfortunately, neither of us knew the correct graphical approach at the time, but it was a fun and valuable experience, exposing my limits and abilites!

Ocastio.uk - Online Voting

A totally new platform for managing inter-organisational legislation and voting. Hosted on a DigitalOcean 2.2GHz 1GB Droplet, the application runs on the JVM (Java Virtual Machine), and is written in Clojure - a modern functional-paradigm programming language.

Multigloss - a Duolingo clone

An incomplete experiment, looking into ClojureScript and reactive workflow. I really enjoyed the single-page-application approach, choosing to merge server responses directly into a local database.

Older: Acastio - Online Voting

I was struggling to learn SQL at University, and so created a basic vote-casting website in PHP, allowing 'organisations' to arrange voters in ranges, schedule ballots, and make use of 3 different counting systems. I ended up enjoying using link tables...

Daily Goals App

Using Android Studio, I developed a simple app which would allow daily goals with a deficit system, daily records, and handy buttons. I found it a lot more motivating than other apps!

Crude Galaxy Simulator

I'd written a simple O(n^2) engine while bored, in SFML, but that wasn't challenging enough! I shoehorned it onto an ATtiny85, but it's 60x slower than the video...

The display also isn't perfect for it, as it eats 8-bit vertical stripes at a time.

Fencing Hit Detection System

Using an Atmel ATtiny85 with Arduino IDE, I constructed an inexpensive hit-detection device for the sport Fencing, Épée discipline. It needed to interface with the standard plug, operate within a 40ms timeframe, and power two weapons over a piste of 14m. I only went as far as a hand-soldered working prototype!

PAL Pong

Using the Arduino platform (Due/Mega 2560) I implemented the arcade classic Pong to work through PAL TV. Two potentiometers acted as controllers for the paddles, emulating the nostalgic feel of the first consoles! Unfortunately difficult to record due to framerate.

OLED/PAL Raycaster

Using the Arduino platform (Mega 2560) I ported this tutorial into Arduino C++, and utilised the Adafruit SSD13076 library and TVout library for display. They both used the same interface for movement as the Pong game.

Raycast First-person Shooter

For my HND Applied Computing project, I chose to create an SFML/C++ raycaster using the same core-code as in projects above, but textured. I still have a lot to flesh out in order to make it a fun, dynamic game!

Basic Circuit Simulator

Written in C++ for Linux terminal, this program allows you to create and step-through simple yet functional circuits. The animation demonstrates a compact hh:mm:ss clock design being simulated.

More videos

Basic Circuit Simulator Revival

C++/SFML, completely rethinks the approach to an easy-to-use circuit simulator. Though the code for the terminal one is awful, I still prefer its functionality...

Mahjong

A simple implementation of the classic virtual Mahjong. Written in C++ using the SFML framework, it was a personal experiment into basic graphical applications.

Basic Arduino OS

I've always wanted to create something with even the semblance of an OS, so I created FlintOS. It loads programs from ATtiny85's EEPROM, and executes them with a basic instruction set. I wrote a binary reader and a writer, in the instruction set, so it's good to go.

Canfield (Solitaire)

Another simple implementation of a tile-based game, this app incorporates dragging, auto-placement, animated finish, and a timer with auto-pause. The newest version looks a little bit better, with a random rotation of cards!

RTS Game

A bare-bones Real Time Strategy game implemented in C++/SFML – my first isometric graphical program. My goal was to generate AI towns/villages, gigantic maps (JIT map building, etc), and try to create a realistic economic setting.

Homebrew Pathfinding

Requiring a less CPU-intensive solution, with approximate routes, I took on the fun challenge of writing my own pathfinding. Governed by 7 steps, I ported it into the RTS Game featured above. The video demonstrates its execution. Can still be optimised further.

Basic Pixelart Editor

As our college course was part-time, I helped implement a peer's HND project to her design documentation, using HTML/CSS/JS.

Brainf**k Interpreter

A black-box Brainf**k interpreter, implemented in C and Python. It uses simple registers to repeat commands and cache loops. Could be improved by implementing optimisations as suggested by its community, multi-threaded printing, and perhaps even rudimentary branching.

Faux-machine Code Emulator

For an assignment in college we were required to show a basic understanding of machine code. I went one step further than basic Z80, and created my own Javascript emulator and instruction set.

Ascii Free-roam Game

In early 2016, two peers and I collaborated on a Linux-based terminal game, based around having a big expanse to explore, and AIs which would perform tasks autonomously. After the collaboration, I set out to write my own version of the AI my peers implemented, reducing the project to purely my code.

JSUno

An networked-multiplayer Uno implementation in HTML/CSS/JS+PeerJS utilising WebRTC. With pastel colours and helpful notifications, it is suitable for a virtually unlimited amount of children & adults alike, wherever they are.

And much more not included...