Web and mobile app developer with experience in Clojure(Script), functional programming, Artificial Intelligence research and logic programming. Enthusiastic Clojure developer and event organiser within the Bristol tech community.
Jordan River Advisors: 2021 - 2022
My most recent role was as full-stack Clojure(Script) developer in an early stage startup bringing financial tools to American farmers
ELiT Ltd, Bristol, UK: 2018 - 2021
I worked as a full-stack Clojure(Script) developer, creating apps that use Machine Learning techniques to help students learn English
Bath Spa University: 2016 - 2018
Lecturer in Creative Computing
I spent two years lecturing in Games Design, Web Development and Digital Storytelling, while pursuing research into using AI for story-based games
University of Bath, UK: 2016 - 2017
Post-doctoral work involving the creation of front-end tools (in ClojureScript) for the tagging and processing of large datasets as part of the ENLITEN project
Sysemia Ltd, Bristol, UK: 2013 - 2016
AI, semantic web, interactive narrative and intelligent agent research as part of my EngD doctorate with the University of Bath.
University of Bath, UK
EngD doctorate in Digital Media, 2012 - 2018
University of York, UK
MSc degree in Natural Computation, 2012
University of Exeter, UK
Upper Second Class (2:1) BSc degree in Computer Science, 2006
Skills and Projects
Clojure & ClojureScript development experience:
5+ years of experience as a full-stack Clojure(Script) developer
Worked as a full stack developer to create financial tools for American farmers using Clojure, Fulcro and Datomic
Development of APIs and tools using Clojure, Re-frame and AWS to support Cambridge English Assessment's Natural Language Processing research for English Learners
Use of Clojure with Semantic Web technology (RDF and SPARQL) for the creation and querying of graph databases
Creation of a constrained natural language DSL in Clojure
A hybrid mobile app for Bluetooth LE beacon detection and media display using ClojureScript, Reagent and Apache Cordova.
Rewriting an XMPP agent messaging service from Java to Clojure
Extended Overtone (a synthesiser library) to enable use of LADSPA audio plugins
At Jordan River Advisors, I worked on a Clojure and ClojureScript web application to help farmers in the USA plan for their financial years. This involved making sense of the legalities of government grants and insurance entitlements to make sure the farmers were covered in case of shortfalls of crop yields. This role involved building an application from the ground up in a small team of five developers, using a Fulcro and Datomic stack.
Write and Improve, Speak and Improve
At ELiT I work on these customer-facing web applications to give English learners feedback on test English exams, both written and spoken. The system uses Cambridge English's NLP research to score and give feedback on a learner's progress. I work as a full-stack developer using Clojure (Integrant) with ClojureScript (Re-frame, reagent) and AWS infrastructure.
This is an internal ELiT tool used by a team of linguists to manually add annotations to the output of the automatic speech assessment system used in Speak and Improve. The human-produced annotations are then used to retrain the system in order to improve it. This is also a full-stack Clojure project using the same technologies as above.
Semantic Web and Graph Database Experience
This PostDoc project was to develop tools to simplify the addition of metadata to multiple large university datasets of smart home energy readings. This project used RDF and SPARQL to unify and enable querying across these multiple datasets.
Logic and Agent Programming experience:
EngD project uses Answer Set Programming (ASP, a logic programming paradigm) to constrain the actions of intelligent agents acting out the characters in a story. Given a author's description of a story using tropes (recurring story components), ASP code is generated and run through a solver to find the actions available to the characters at any given point in the story.
Procedural Content Generation
MSc project was to procedurally generate 3D bridge designs by evolving and 'growing' them. Designs were then evaluated using the Bullet Physics Engine, scripted in Python.
Web and Mobile Application Development
5+ years experience: Clojure(Script)
Dev Ops: AWS, Git, Travis CI
Spoken & written languages: English (Native), Japanese (Advanced)
Organiser for two meetup groups in Bristol:
Twice-monthly meetups and occasional talks and coding events since March 2014, growing into a group with more than 100 members.
Bristol Japanese Language Meetup
Started in November 2013 with weekly Japanese conversation practice, as well as monthly events such as dinners and karaoke. This group has over 300 members, with 20 - 30 coming to the weekly events.
Telling Non-Linear Stories with Interval Temporal Logic (ICIDS2015)
Governing Narrative Events with Institutional Norms (CMN 2015)
An Interactive, Generative Punch and Judy Show Using Institutions, ASP and Emotional Agents (COIN @ IJCAI 2015, AISB 2015)
Artfinder: A Faceted Browser for Cross-Cultural Art Discovery (HSWI 2014)
Effect of Touch Screen Size on Game Immersion (BCS HCI 2012)
John Taylor, Colleague at Jordan River Advisors
+44 (0) 7478 336 319
Dr Steve Battle, Industrial Supervisor (formerly at Sysemia Ltd)
+44 (0) 7823 695 290