Profile
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.
Experience
-
iO Academy: 2023 - Present
Trainer
Leading and delivering 16-week full-stack web development courses for people changing careers
-
Kroo Bank Ltd: 2022 - 2023
Senior Developer
Backend development in Clojure, along with React Native mobile application development and load testing
-
Jordan River Advisors: 2021 - 2022
Senior Developer
Full-stack Clojure(Script) developer in an early stage startup bringing financial tools to American farmers
-
ELiT Ltd, Bristol, UK: 2018 - 2021
Software Engineer
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
Research Associate
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
Research Engineer
AI, semantic web, interactive narrative and intelligent agent research as part of my EngD doctorate with the University of Bath.
Education
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
Use of event-sourcing to help scale and maintain Kroo's banking infrastructure with Clojure
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
-
Developer training and mentoring
At iO Academy, I deliver 16-week intensive coding bootcamp courses to in-person groups in our classroom in Bath. This requires a very high level of interpersonal skills, communication ability, organisation skills and attention to detail. I have been able to deliver course material to a very high standard in a creative and engaging way, as is expected by the academy.
-
Application scaling
At Kroo Bank, I worked in the scaling team that was responsible for tackling the challenges that came with scaling up to hundreds of thousands of customers. This included integration of new customer support software and load testing our systems to make sure we could handle extra traffic.
-
Tilley
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.
-
Speech Annotator
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
Over three years of experience with developing applications for iOS (iPhone) and Android platforms, primarily using web technologies such as HTML5, CSS3, ClojureScript, Coffeescript and Javascript, and also with Objective C and Java.
-
Languages
5+ years experience: Clojure(Script)
Also comfortable with: Prolog, Python, Javascript, Haskell, Java, C, C++, Lua
Dev Ops: AWS, Git, Travis CI
Spoken & written languages: English (Native), Japanese (Advanced)
-
Community Engagement
Organiser for two meetup groups in Bristol:
Bristol Clojurians
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.
Publications
-
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)
References
-
Will Murphy, Senior Developer at Kroo Bank
Reference details upon request
-
Dr Steve Battle, Industrial Supervisor (formerly at Sysemia Ltd)
steve.battle@uwe.ac.uk