James Ferguson

Systems Engineer

+61 425 344 555 jamesferguson497@gmail.com jamesfer.me github.com/jamesfer

About

Constant improvement is my approach to Software Development. I am always reviewing my own code and architecture to find better ways of doing things. They always say that a career as a developer is a commitment to lifelong learning and all that learning isn't very useful unless it is being applied to the projects that I am working on.

At REA, I've spent time in the core search team, maintaining and improving the Elasticsearch clusters that perform every search to realestate.com.au, and in the security team where I was assessing the viability of a static code analysis tool. In between my contributions to normal delivery work I have been working on solutions to other company wide problems that I think I can improve. I built a pipeline to collect events from the services we use and store them in BigQuery so that we could aggregate metrics such as lead time for changes and mean time to restore service. Currently, I'm experimenting with the way we deploy our continuous integration agents, attempting to save a lot of money by moving them to a central ECS cluster with faster scaling and better caching.

Outside of work, I like to tinker with code much like many developers. I've been experimenting with a React style frontend framework that has a more efficient rendering algorithm that utilises an index to map paths in a centralised state to parts of the DOM that are dependent on that state. This allows much faster re-renders as once you know what has changed in the state, updating the DOM is a simple matter of finding a key in an index. More recently I've been experimenting with developing my own functional programming language; mainly for the fun of it.

Most of my experience has been in ops and backend focused roles and my primary language is Javascript using Node.js. I have spent a considerable amount of time with Scala and React as well.

Highlights

Functional programming language (early development)

github.com/jamesfer/query-language-type-system
typescript functional-programming type-inference
  • A statically typed functional programming language.
  • Compiles to plain Javascript or hopefully soon C++.
  • Designed to have a simple to learn and flexible to use type system.

Cypher Query Builder

github.com/jamesfer/cypher-query-builder
typescript node.js observables continuous-integration
  • Query builder for Neo4J's query language, Cypher.
  • Open Source.
  • Fluent syntax.
  • Supports streaming records using observables.

Incremental (frontend framework)

github.com/jamesfer/incremental
react functional-programming
  • Frontend framework designed to be more efficient than React's default renderer.
  • Models components as functional Applicatives.
  • Utilises a centralised state and indexes dynamic DOM nodes based on the state they are computed from.

Experience

2019 - now

Software Developer

REA Group

aws cloudformation elasticsearch javascript ruby scala postgres
  • Worked in multiple teams including the customer data team, core consumer search team and security team.
  • Was a major contributor to the update of the core Elasticsearch cluster which involved redesigning the way nodes are deployed.
  • In my spare time I built a pipeline and dashboard to collect and display metrics such as lead time, mean time to recovery and change failure rate in a scalable way for the entire business using BigQuery
  • Currently working on redesigning the way we deploy continuous integration agents to save money and toil using AWS' ECS, also in my spare time.
2018 - 2019

Full stack developer

Matrak

aws javascript nodejs react postgres
  • Was a core developer in a young construction start up
  • Developed a customizable reporting module to provide customers cost insights and exportable Excel documents
  • Designed and created a automated pipeline to process uploaded PDFs and display them on the internal architect mark-up tool
February - December 2017

Full stack developer

DCode Group

vue jquery scss php laravel mysql aws
  • Designed relational database layouts and developed full-stack applications that ran on Amazon Web Services.
  • Responded to feedback from clients and planned possible solutions to their requests.
  • Assisted other developers in using technology that I had experienced previously such as the Laravel Framework and Stripe Payments API.
2016 - 2017

Summer Scholarship Recipient

CSIRO Data61

python ros c pathing-algorithms
  • Performed research and aided in development of a self-navigating robot.
  • Analysed the current state of the project and provided guidance on future work that would be needed.
March - November 2016

Tutor of Creating Web Applications

Swinburne University of Technology

php javascript html5 mysql
  • Teaching students about the basics of how web applications work on the internet.

Education

2015 - 2018

Bachelor of Computer Science

Swinburne University of Technology

  • Received the Dean's Scholarship of Outstanding Achievement
  • Have achieved a High Distinction in the majority of subjects
January - December 2014

Certificate III in Media

Swinburne Secondary College

html5 javascript dreamweaver

References

Danial Pearce

Lead Systems Engineer - REA Group 0409 009 588 danial.pearce@gmail.com

Shane Hodgkins

CEO - Matrak 0405 602 375 shane@matrak.com.au

Brett Hodgkins

CTO - Matrak 0407 542 040 brett@matrak.com.au

About

Constant improvement is my approach to Software Development. I am always reviewing my own code and architecture to find better ways of doing things. They always say that a career as a developer is a commitment to lifelong learning and all that learning isn't very useful unless it is being applied to the projects that I am working on.

At REA, I've spent time in the core search team, maintaining and improving the Elasticsearch clusters that perform every search to realestate.com.au, and in the security team where I was assessing the viability of a static code analysis tool. In between my contributions to normal delivery work I have been working on solutions to other company wide problems that I think I can improve. I built a pipeline to collect events from the services we use and store them in BigQuery so that we could aggregate metrics such as lead time for changes and mean time to restore service. Currently, I'm experimenting with the way we deploy our continuous integration agents, attempting to save a lot of money by moving them to a central ECS cluster with faster scaling and better caching.

Outside of work, I like to tinker with code much like many developers. I've been experimenting with a React style frontend framework that has a more efficient rendering algorithm that utilises an index to map paths in a centralised state to parts of the DOM that are dependent on that state. This allows much faster re-renders as once you know what has changed in the state, updating the DOM is a simple matter of finding a key in an index. More recently I've been experimenting with developing my own functional programming language; mainly for the fun of it.

Most of my experience has been in ops and backend focused roles and my primary language is Javascript using Node.js. I have spent a considerable amount of time with Scala and React as well.

Highlights

Functional programming language (early development)

github.com/jamesfer/query-language-type-system
typescript functional-programming type-inference
  • A statically typed functional programming language.
  • Compiles to plain Javascript or hopefully soon C++.
  • Designed to have a simple to learn and flexible to use type system.

Cypher Query Builder

github.com/jamesfer/cypher-query-builder
typescript node.js observables continuous-integration
  • Query builder for Neo4J's query language, Cypher.
  • Open Source.
  • Fluent syntax.
  • Supports streaming records using observables.

Incremental (frontend framework)

github.com/jamesfer/incremental
react functional-programming
  • Frontend framework designed to be more efficient than React's default renderer.
  • Models components as functional Applicatives.
  • Utilises a centralised state and indexes dynamic DOM nodes based on the state they are computed from.

Education

2015 - 2018

Bachelor of Computer Science

Swinburne University of Technology

  • Received the Dean's Scholarship of Outstanding Achievement
  • Have achieved a High Distinction in the majority of subjects
January - December 2014

Certificate III in Media

Swinburne Secondary College

html5 javascript dreamweaver

Experience

2019 - now

Software Developer

REA Group

aws cloudformation elasticsearch javascript ruby scala postgres
  • Worked in multiple teams including the customer data team, core consumer search team and security team.
  • Was a major contributor to the update of the core Elasticsearch cluster which involved redesigning the way nodes are deployed.
  • In my spare time I built a pipeline and dashboard to collect and display metrics such as lead time, mean time to recovery and change failure rate in a scalable way for the entire business using BigQuery
  • Currently working on redesigning the way we deploy continuous integration agents to save money and toil using AWS' ECS, also in my spare time.
2018 - 2019

Full stack developer

Matrak

aws javascript nodejs react postgres
  • Was a core developer in a young construction start up
  • Developed a customizable reporting module to provide customers cost insights and exportable Excel documents
  • Designed and created a automated pipeline to process uploaded PDFs and display them on the internal architect mark-up tool
February - December 2017

Full stack developer

DCode Group

vue jquery scss php laravel mysql aws
  • Designed relational database layouts and developed full-stack applications that ran on Amazon Web Services.
  • Responded to feedback from clients and planned possible solutions to their requests.
  • Assisted other developers in using technology that I had experienced previously such as the Laravel Framework and Stripe Payments API.
2016 - 2017

Summer Scholarship Recipient

CSIRO Data61

python ros c pathing-algorithms
  • Performed research and aided in development of a self-navigating robot.
  • Analysed the current state of the project and provided guidance on future work that would be needed.
March - November 2016

Tutor of Creating Web Applications

Swinburne University of Technology

php javascript html5 mysql
  • Teaching students about the basics of how web applications work on the internet.

References

Danial Pearce

Lead Systems Engineer - REA Group 0409 009 588 danial.pearce@gmail.com

Shane Hodgkins

CEO - Matrak 0405 602 375 shane@matrak.com.au

Brett Hodgkins

CTO - Matrak 0407 542 040 brett@matrak.com.au