Martin Gallagher Martin Gallagher

About

I'm a freelance software developer based in Uppermill, Saddleworth near Manchester in the North West of England, UK — specializing in Google Go (Golang), data mining / acquisition, search engine and big data systems.

Computer programming is my vocation. Along with tinkering with source code I'm an armchair naturalist with a keen interest in the natural sciences and luring people in to "debates" on our place in the universe.

Skills

I have a diverse set of skills and expertise in both frontend and backend development. Full-stack developer isn't my favourite term but it might best describe my skill-set. I do however have a strong bias towards the development of scalable big data systems / distributed systems, web crawlers, data acquisition, microservices, REST API design & development and other areas of backend development.

Development Platforms & Tools

Programming Languages

The Google Go (Golang) Gopher I'm a proponent of "KISS" — a key reason I'm a fan of Google Go. "Golang" strikes an excellent balance between developer productivity, safety, performance and the enforcement simple, explicit & maintainable code and a fantastic standard library.

Rust is another language that has recently piqued my interest due to its performance & security in the absence of a runtime and GC - this allows FFI without the context switching penalties that come with using C in Google Go.

Serialization & Encoding Formats

Databases & Data Stores

I've worked with big data sets and understand the constraints & considerations depending on the data store, from traditional RDBMS to NoSQL platforms and the limitations of CAP theorem.

Web Design & Development

Although web design isn't my forte I have some creative aptitude, including UI / UX and accessibility considerations. I have a good understanding of responsive design and providing great user experience across a wide range of devices, from desktop computers to the plethora of mobile phone platforms.

Experience

  1. Speeple

    Owner, 2005 - 2011, Manchester, UK — FeedsFarm.com and Speeple News were search engines for aggregated news content. Over 100,000 high quality RSS / Atom feeds fed into a MySQL database by an highly concurrent crawler implemented in Java. The collective audience surpassed 50,000 unique visitors per day.

    • Linux
    • C/C++
    • Java
    • MySQL
    • PHP
    • Sphinx
    • Full-Text Search
    • RSS
    • Atom
    • XML
    • Data Feeds
    • Data Aggregation
  2. One iota

    Technology Developer, 2010 - 2011, Rossendale, UK — Helped develop a RESTful API for a multi-channel e-commerce platform, a brand awareness system implemented in Java which performed rudimentary NLP, Facebook applications and HTML5 mobile websites including the first iteration of FootAsylum's responsive website optimized for mobile browsers. Integrated Facebook & Twitter APIs and PayPal & Sage Pay payment gateway APIs.

    • HTML / HTML5
    • CSS / CSS3
    • JavaScript / jQuery
    • Responsive Design
    • Twitter API
    • Facebook API
    • NLP
    • Java
    • PHP
    • MySQL
    • E-Commerce
    • PayPal
    • Sage Pay
    • Payment Gateways
    • REST APIs
    • Agile
  3. Synthesio

    Developer, 2011 - June 2015, Paris, France — Developed high capacity crawlers to collect data from social networks & traditional media sources across the web including exotic social networks such as Vkontakte, Sina Weibo, Tencent Weibo, WeChat and Renren and sources such as the Twitter firehose, Facebook API, Moreover, Google+, YouTube, LinkedIn, DataSift, Socialgist, Gnip and Hottolink. Improved Unicode support for multi-lingual search and developed a myriad of system tools, microservices & APIs.

    • PHP
    • Agile
    • MySQL Galera
    • Big Data
    • Sphinx
    • Unicode
    • Silex
    • Gnip
    • Twitter Firehose
    • Crawling
    • Data Mining
    • Full-Text Search
    • Jenkins CI
    • CI
    • Bootstrap
    • JavaScript
  4. Praegressus Limited

    Owner, April 2014 - Present, Manchester, UK — Search engine SaaS and bespoke software development — primarily in Google Go (Golang) — for big data, distributed and cloud computing systems. Provides affordable search-as-a-service with many advanced features and near-linear scalability making large datasets searchable.

    • Google Go (Golang)
    • C/C++
    • Java
    • PostgreSQL
    • Big Data
    • Cassandra
    • NoSQL
    • RabbitMQ
    • AMQP
    • Algorithms
    • Distributed Systems
    • Data Mining
    • SaaS
    • Search Engines
  5. Parkour Method, Inc.

    Freelance, June 2015 - August 2015, Washington, D.C., US — Developed a microservice API providing geolocation search for places near a given latitude / longitude coordinate pair using PostGIS queries. Implemented in Google Go resulting in a configurable, high performance and low resource service. Several EC2 instances were deployed behind an elastic load balancer to provide performance and availability. Backed by AWS RDS PostgreSQL databases.

    • Google Go (Golang)
    • REST APIs
    • PostgreSQL RDS
    • PostGIS
    • GIS
    • Spatial Databases
    • JSON
    • AWS
    • Cloud Computing
  6. Bark.com

    Senior Developer, June 2015 - Present, London, UK — Working across the full technology stack to develop a platform to find local service professionals. Work includes the integration of Google Apps for Work API, AB testing tools and Stripe payments API.

    • PHP
    • MySQL
    • AWS
    • AWS RDS
    • Bootstrap
    • HTML / HTML5
    • CSS / CSS3
    • JavaScript / jQuery
    • Responsive Design
    • Stripe Payments API
    • Facebook API
    • Twitter API

Projects

  1. Encycolorpedia

    November 2012 - Present — A popular website providing insights into colours — producing complementary and related palettes for any hex, RGB / RGBA, HSL / HSLA format colour along with information and conversions to several other popular colour-spaces. Paint matching is performed in the CIELab colour space for accuracy. Colour profile pages are dynamically styled from the given hex colour.

    • Node.js
    • JavaScript
    • Colour Science
    • Paint Matching
    • Colour Spaces
    • PHP
    • Colour Quantization
  2. DomainWho.is

    October 2014 - Present — Serving as a demo of the Praegressus Limited search technology, DomainWho.is indexes over a hundred million domain names and makes them searchable via full-text and filtered search queries. Implemented using the Google Go programming language; key features include horizontal scaling, an advanced natural language query lexer, search snippet algorithm and distributable crawlers fed by task queues. Optimized responsive designed across devices, from mobile to desktop.

    • Google Go (Golang)
    • C/C++
    • Praegressus Search
    • Search Engines
    • Full-Text Search
    • PostgreSQL
    • RabbitMQ
    • Cassandra
    • REST APIs
    • Responsive Design
    • Distributed Systems
    • WHOIS
    • Domain Names

Open Source

  1. Gawp

    A simple, configurable, concurrent, file watching job execution tool implemented in Google Go.

    • Google Go (Golang)
    • YAML
    • Task Automation
    • Build Systems
    • Concurrency
  2. Routify

    An extremely simple & low feature set router package and route generation tool written in Google Go. Routes are defined in YAML and go generate is used to build the Go routes file.

    • Google Go (Golang)
    • YAML
    • REST
    • HTTP Servers
    • Routers
  3. go-jsonmp

    A Go package to facilitate JSON merge patch format and processing rules (RFC 7386).

    • Google Go (Golang)
    • JSON
    • JSON Merge Patch
    • RFC 7386
    • REST