James Clark

Skills

Communicator

Whether it's writing clear documentation or steering a meeting back on track, good communication is one of the absolutely essential skills of a software developer. I tailor my language to my audience, avoiding being overly technical where it would be unnecessary, acting as the translator of others where needed.

Polyglot

I have been programming professionally for over 23 years at this point, and have specialist knowledge of multiple languages. I can pick up pretty much anything without trouble. Modern software development rarely focuses on a single language for the entire stack - there is always going to be some unique scripting used for CI tasks, Infrastructure-as-Code, or end-to-end tests.

Delver

Software invariably accumulates tech-debt and bit-rot. Having worked on some extremely old projects, I've found that I actually enjoy digging into old codebases where nobody knows how things worked and there is no documentation. I like instrumenting and understanding legacy code, and feel rewarded when I can uplift it to modern standards.

Unifier

We work better together. Whether it's between Product and Tech, Devs and Testers, or people from different backgrounds and life experiences, I like to promote cameraderie within my team. It's better to have a team that feels comfortable with each other and un-stressed.

Experience

Senior Software Developer

Domain GroupOct 2022 - Feb 2024

Tightly integrating a modern Next.js React app with a legacy Java app, designing and building a user interface aimed at replacing critical workflows with a new framework that can enable speedier development.

  • Collaboratively designing a new hybrid app structure with a cross-functional team.
  • Reverse-engineering existing Java code behaviour, documenting and reimplementing in Javascript.
  • Transforming the user experience with Single-Sign-On and accomodating for legacy username requirements.
  • Identifying and working around shortfalls with availability of data.
  • Configuring app dashboards and enabling visibility of app behaviour and documentation of first-response protocols.
  • NextJS
  • React
  • Java
  • Tomcat
  • Tapestry
  • Kibana
  • PostgreSQL

Senior Software Developer

Domain GroupMay 2021 - Oct 2022

Building a greenfield responsive React app for comparative market analysis to compliment an existing product.

  • Working closely with the API team to design a new API to service the requirements of the app while working within the constraints of the existing system and database design.
  • Creatively managing integration issues discovered with late notice, pragmatically balancing tech debt and code quality to ensure on-time delivery.
  • Bringing new team members up to speed, building out mocks, stubs and scaffolding to ensure the entire team can work in parallel with API and design developments.
  • Aiding Product and design to ensure the best possible UX and feature set can be available while taking potential pitfalls into account.
  • Utilising Infrastructure-As-Code via AWS CDK to ensure repeatability of deployments and consistency of app environments.
  • Exploring, assessing, and implementing PDF creation workflows.
  • NextJS
  • React
  • Emotion
  • Redis
  • Puppeteer
  • Cypress
  • AWS
  • CDK
  • ELK
  • Docker

Javascript Developer

Domain GroupMar 2020 - May 2021

Extending our Agent Portal with new features that are tightly integrated with the business' initiatives.

  • Working closely with Product on a small focused team building out a new universal portal product that collates data from across the business into one convenient location.
  • Taking ownership of the backlog, release management, sprint planning, and design.
  • Integrating a new Early Access business-wide initiative allowing agents to promote properties before their full listing goes live.
  • NextJS
  • React
  • Modern CSS
  • GraphQL
  • Cypress
  • ELK
  • Docker

Perl Developer

Domain GroupNov 2016 - Mar 2020

Updating and uplifting our Agent Services CRM software. Working across the entire stack, from EC2 to frontend JS & CSS.

  • Diving into a unique multi-feature CRM with a 20-year legacy and 200,000 users, navigating the challenges of BAU work alongside new product features and integrations.
  • Uplifting the existing codebase to make use of modern paradigms and improvements. Changes to improve developer experience and reduce iteration time while improving deployment confidence.
  • Auditing and improving security across the application, enabling Single-Sign-On and locking down administrative roles.
  • Modernising infrastructure with containerisation, automated tests, multiple environments and more control over deployments.
  • Enhancing observability with improved logging and visualisations, alerts, and developer-specific workflows to allow reverse engineering of application behaviour.
  • Building up team culture and confidence with regular group learning sessions.
  • Modifying the app to allow it to scale to a large userbase and efficiently handle custom feature sets.
  • Responding to incidents, writing up post-mortems, and building new mechanisms for resiliency.
  • Perl
  • Apache
  • MySQL
  • PHP
  • jQuery
  • AWS
  • Git
  • Jenkins
  • ELK
  • Kibana
  • Grafana
  • Docker
  • Python

Senior Software Developer

The University of SydneyMay 2005 - Apr 2014

Working on the GPlates project, an open-source C++ / Qt application for modelling information and motion of tectonic plates through geological time.

  • Working closely with professors and students to gather requirements.
  • Creating and documenting an information model to encompass existing and future data needs.
  • Building a cross-platform C++ application visualising plate tectonic models in 3D across geological time.
  • User interface design and implementation using modern desktop best practices, conforming to multiple platform conventions.
  • Updating tooling and documentation for the information model to keep up with standards and new data requirements.
  • C++
  • Python
  • Qt
  • XML
  • SVN
  • Geoscience

Education

Bachelor of Computer Science and Technology (Honours)

The University of SydneyFeb 1999 - Nov 2002

  • Studied programming in areas of algorithms, data structures, optimisation, network security, cryptography, 3D graphics, network programming, and artificial intelligence.
  • Learned techniques of database design and creation, object−oriented design, distributed processing, and user interface design.
  • Honours Project: Machine Learning to automatically classify email between user-defined categories, using Neural Networks and Genetic Algorithms.
  • Java
  • C
  • C++
  • Prolog
  • Matlab
  • Perl
  • Python
  • Bash
  • UNIX

Publications

J. Clark, I. Koprinska, J. Poon (2002). "LINGER - A Smart Personal Assistant for E-mail Classification", in The Proceedings of the 13th International Conference on Artificial Neural Networks, ICANN'2003, Istanbul, Turkey, 274-277.
J. Clark, I. Koprinska, J. Poon (2003). "A Neural Network Based Approach to Automated E-mail Classification", in The Proceedings of the IEEE International Conference on Web Intelligence, WI'2003, Halifax, Canada, 702-705, IEEE Computer Society Press.
I. Koprinska, F. Trieu, J. Poon and J. Clark (2003). "E-mail Classification by Decision Forests", in Proceedings of the Australasian Document Computing Symposium, ADCS’2003, 41-46.
I. Koprinska and J. Clark (2004). "Video Summarization and Browsing Using Growing Cell Structures", in IEEE International Joint Conference on Neural Networks, IJCNN'2004, Budapest, Hungary, 2601-2606, vol. 4, IEEE Computer Society Press.
I. Koprinska, J. Clark, and S. Carrato (2004). "VideoGCS – A Clustering-Based System for Video Summarization and Browsing", in Proceedings of the Sixth COST 276 Workshop “Information and Knowledge Management for Integrated Media Communication”.
M. Saberi, S. Carrato, I. Koprinska, and J. Clark (2005). "Estimation of the Hierarchical Structure of a Video Sequence Using MPEG-7 Descriptors and GCS", in Proceedings of the 9th International Conference on Knowledge-Based Intelligent Information and Engineering Systems, KES'2005, Melbourne, Australia, 8-15, Lecture Notes in Computer Science 3682.
I. Koprinska, J. Poon, J. Clark, J. Chan (2007). "Learning to Classify E-mail", in Information Sciences 177, 2167-2187, Elsevier.

Links