Martin Griffin

About Me

I learned to program when I was 14(-ish) so that I could write games, and even these days programming is far-and-away my favorite thing to do. I like to work on cool, often computer-science-y things during my spare time and holidays and have written about some of the prototypes I came up with at Geneity and Skimlinks.

I love to learn all the ins and outs of the tools I use, as a C++ developer I followed the standards committee papers, and as a Python developer I read the mailing lists. I try to live on the bleeding edge and once ICEd GCC while experimenting with C++11 for constexpr containers.

Experience

  1. OpenLieroX

    07/07–06/11
    • C++

    LieroX is a real-time, networked 2D shooter; like a 2D Quake or real-time Worms. The community was averse to upgrading the client, so I used the protocol creatively to introduce new features; notably the hide and seek game mode that abused spawns and kills to selectively hide one team from the other.

  2. FunctionalBasic

    08/10
    • Visual Basic 6

    FunctionalBasic provides higher-order and anonymous functions. At its core is a recursive descent parser and an interpreter for the resulting AST.

  3. Full-stack Developer, D3R

    10/10–11/10
    • PHP
    • Zend
    • HTML
    • JavaScript
    • CSS
  4. Frontend Developer, Proteus Virtual

    07/11–09/11
    • HTML
    • CSS
    • Remote
  5. Research Assistant, CIRG, University of Brighton

    04/12–09/12
    • GML
    • sed

    Brighton’s Cultural Informatics group applies technology to cultural heritage preservation. I used a PostScript-like research language GML to produce a 3D model of Brighton’s Royal Pavilion for a 3D-COFORM exhibition, and to implement a proof of concept for Parametric 3D-fitted frames for packing heritage artefacts. To aid with this I built a series of libraries including a static typing system, pattern matching, and LaTeX-inspired infix math.

    I also built a series of shell and sed scripts to parse the results of low-quality OCR captures of address books and convert them into XML.

  6. CL GML

    12/12–04/13
    • C++
    • OpenCL
    • Flex
    • Bison

    A (partial) implementation of GML on the GPU. This project is notable only for its heavy use of the preprocessor to build a cross-language DSL with function overloading and recursion (which OpenCL does not support natively).

  7. Senior Software Developer & Team Lead, Geneity

    09/13–10/16
    • Python
    • C
    • x86 Assembly
    • Docker
    • NumPy
    • RabbitMQ

    Geneity provides a sports betting solution to bookmakers. I worked in and managed the algorithms team that writes real-time implementations of statistical models and integrates them into the platform. I prototyped a system that would enable us to compute combination bets across related contingencies — an industry first — with 6000× the performance of the naïve Python implementation as a result of being written in cache-friendly C and using the PDEP instruction introduced by BMI 2. I built much of our microservice infrastructure and refactored our models to expose them as a service.

  8. Senior Software Developer, Skimlinks

    10/16–present
    • Python
    • Spark
    • Scikit-learn
    • MySQL
    • Remote

    Skimlinks provides transparent affiliate links for websites, acting as a middle-man between publishers and merchants/affiliate networks. I worked in the network integrations team that integrates third-party affiliate networks into the platform, and in the data science team that analyzes browsing history to enable targeted advertising. I built a system that allowed the non-developer operations team to take over maintenance of integrations by automatically generating parsers from the data and providing an interactive debugger to verify the result in. I trained classifiers to detect product brands and verticals from URLs.

  9. Pokémon AI

    01/17–present
    • JavaScript
    • React

    Pokémon AI is a prototype for an original IP with many similarities. The key idea is to keep the player in a state of flow by challenging them just enough, achieved by modeling them as if they were an AI, inferring their weights from their actions. The implementation more closely resembles Deep Blue than AlphaGo because ML black-boxes are difficult to tweak, let alone generalize to a different game.

Education

  1. A Levels

    09/08–07/10
    • Computing A
    • Maths (Mechanics) A
    • Physics B
  2. University of Brighton

    09/10–07/13
    • Computer Science BSc (Hons) 2.1

Contact

Web
www.martin-griffin.com
Email
martinrgriffin@gmail.com
Phone
+447906858373
GitHub
mrgriffin