Michael James Gratton

Curriculum Vitae

Software architect and engineer, systems and network engineer. Research associate in artificial intelligence and robotics.

The most recent version of this document can always be found online at: http://mjog.vee.net/curriculum-vitae

Last updated: January 16, 2020.

Overview

Research Associate and PhD candidate investigating reasoning and perception in artificial intelligence and robotics. Research interests include knowledge representation and reasoning, machine perception, cognitive robotics, and cognitive science. Experienced in symbolic reasoning, logic programming, cognitive vision, robotic software systems and hardware interfacing.

Software architect, software engineer and UNIX systems engineer. Areas of expertise include Java and Python software design and development - particularly of Web and Internet-based applications, Linux and GTK desktop application development, XML data representation and UNIX system deployment and management.

B

Education

Academic Career

Creative Robotics Lab, UNSW Art and Design

Research Associate, The University of New South Wales. 2015-2018.

A research-focused academic position at the Creative Robotics Lab, UNSW Art and Design, and previously jointly with the School of Computer Science and Engineering, UNSW Engineering. This role has involved a number of research and development projects in tactile perception for cognitive robotics and for human-robot interaction more generally.

Select projects include:

National Facility for Human Robotic Interaction Research
Collaborating with and managing a team of researchers and software engineers to design and implement large-scale state estimation, data fusion, and vision processing systems for real-time, high-accuracy ground truth sensing in the Facility, which aims to provide an open, integrated laboratory for the multidisciplinary experimental study of human-robot interaction.
Interaction Interface for Creative Robotics
Co-PI on a teaching-focused, high-level software development project for robot control, which has enabled undergrad students with limited technical experience successfully learn and prototype embodied interaction design.
Eliciting emotions from tactile surfaces and kinetic agents
Developed machine learning systems for the recognition, formal representation and reasoning about human emotions via tactile interaction with a cognitive robotics system, that allowed people to communicate their affective state with robotic systems via touch.
Catch the Tiger, Big Anxiety Festival 2017
Collaborated with a team of researchers, architects and designers, to design the operating software for Catch the Tiger, an interactive study and large-scale interactive, co-operative game which examined the physiological and psychological response of participants to varying environmental stressors whilst carrying out a joint tasks.

Grants awarded:

UNSW Scientia Education Investment Fund, 2017
Jointly awarded grant to fund the Interaction Interface for Creative Robotics project, above.

Reasoning about Action in Contextual Logics

PhD Candidate, Computer Science, University of New South Wales, 2010-present.

Developed a formal account of the use of context in reasoning about action and change, motivated by the desire to build autonomous robotic systems that can successfully carry out tasks in human environments. Currently under examination.

Laboratory class consultant

Casual teaching, University of New South Wales, 2013-2015

Led student laboratory classes for the Prolog component of COMP9414; a postgraduate Artificial Intelligence course, and the Arduino micro-controller programming component of ENGG1000; an under-graduate engineering course.

Cognitive Vision

B.Sc. Honours thesis, University of New South Wales, 2009.

Examined the use of abductive reasoning for computer vision. Developed an automated reasoner in Prolog that generated symbolic hypotheses from visual percepts using abductive inference, and was able to infer the contents of simple scenes. Awarded 1st class Honours.

Constructing an optimisation phase using Grammatical Evolution

Summer research project, University of Adelaide, 2007.

Investigated the use of genetic programming to evolve a compiler optimisation phase for a functional, data-parallel language. This approach produced executables that performed as fast as hand-tuned optimisers.

Professional Career

Quuxo Software

Proprietor, 2004-present.

Founded Quuxo Software, a software consulting business. Manages day-to-day affairs of the business, provides software consulting and development effort for projects on behalf of clients.

Select projects include:

Web application software engineering, 2000-present
Designed, developed and maintained tailored, web-based applications for several clients, providing customer relations management, financial accounting, and business process automation services.
Robotics software engineering, 2014
Developed embedded operating software for Blue Iris, an episodic, interactive robotics installation artwork for artist and researcher Professor Mari Velonaki at the Creative Robotics Lab, UNSW Art & Design. Low-level sensory processing enabled interactive walls to respond visually to tactile sensory input from the viewer.
Robotics software engineering, 2012
Developed a reactive robot software architecture using ROS for TRACKER, an interactive robotics artwork for artist Margaret Seymour. Reactive behavioural control and 3D depth and sonar sensor processing allowed the mobile robotic systems to track and follow people in the exhibition space, manage on-board audio-visual interfaces, and alter behaviour based on external data inputs.

The Interaction Consortium

Software engineer, 2014-2015.

Roles include the design and implementation of client web sites, including the Museum of Contemporary Art and The National Association for the Visual Arts; of reusable application components for Django-based web applications; automation of provisioning, maintenance and deployment for Django web applications and Linux-based virtual private servers.

m.Net Corporation

Software Engineer, 2007-2009.

Employed as a server-side Java application engineer. Responsible for designing and implementing server-side components for a mobile phone based social networking application and m.Net's core messaging router.

Rising Sun Pictures

Software Engineer, 2006-2007.

A member of the in-house development team at Rising Sun, a motion picture visual effects production company. Responsible for developing and maintaining Python-based software for both production team and business management use.

Centre for Sleep Research, University of South Australia

Software Engineer, 2004-2006.

Employed by the Centre to take over and complete an existing software project; developing a Java web application for recording and managing industrial workplace safety incidents.

Recall Design Pty. Ltd

Software Architect, 2000-2004.

Initially employed as a senior developer to lead client development projects, then as a software architect for product development. Responsibilities included strategic product and technology planning, design and implementation of an in-house content management system and web application development framework, project management and team leader, mentor for junior staff.

Various

Systems Engineer, 1996-1999.

Employed by Cobweb Internet Services to solve the reliability and scalability problems, by N-Space Pty Ltd for internal server and networking services support and maintenance, Internode Professional Access as a Client Support Technician.

Community

As a Free Software enthusiast, Michael participates in the Ubuntu and GNOME communities. He is currently the maintainer of Geary, an email application for the GNOME 3 desktop based around conversations.

Previously, he has been active in the Mozilla and Debian communities, was a member of the GNOME User Interface Hit Squad and a committer for the Apache Xindice project.

Technical Skill-set

Robotics
Robotics systems development and deployment in C++ and Python for the Robot Operating System (ROS), low level sensor and affector driver implementation, high level behaviour implementation, simulation using Gazebo.
Visual Perception
Vision processing in C++ and Python using OpenCV, OpenNI, ROS, and related technologies.
Logic Programming
Prolog and Eclipse based logic and constraint satisfaction programming. Meta-programming in Prolog. Declarative answer set programming (ASP) in the Potassco suite of tools.
Machine Learning
Machine learning for classification using the Weka and scikit-learn toolkits.
Python
Numerical processing using NumPy, SciPy and Pandas, desktop application development using GTK+ and wxPython, and server-side software design and development using WSGI and Genshi for web applications, RDFLib, SQLAlchemy and Elixir for data management.
Java
Java EE Web tier development using Java Servlets, JSP and XML based presentation layers, Tomcat and Jetty servlet containers. Middle tier development using JPA, Hibernate, JavaMail, and other technologies. Core Java SE libraries. User interface development using JavaBeans, Swing, AWT and JFC. Extension APIs, such as JAXP, JNDI and so on.
Web and Markup Languages
Extensive, standards based approach to HTML, XHTML and related technologies such as CSS, ECMAScript/JavaScript, DOM. REST design pattern for web sites and applications. Use of XML for document data representation and (reluctantly) for structured representation and RPC. XSLT for markup transformation and XSL-FO for markup based formatting. Familiar with other main XML technologies such as XSchema, RELAX, XLink/XPointer, and so on.
Systems and Networking
Strong Linux working knowledge, familiar with FreeBSD, Solaris and others. Strong working knowedge of of common UNIX-based services such as Apache, MySQL, PostgreSQL, Sendmail, BIND, and Dovecot and Postfix. Extensive use of Bourne shell scripting. Strong working knowledge TCP/IP based networks, protocols and issues relating to them. Swings both ways: Emacs and vi.