Profile

My name is Samuel and I'm a software engineer. I enjoy finding creative solutions to difficult problems.

References

Reference from Dr. Tadao Takaoka, Professor at the Department of Computer Science and Software Engineering, University of Canterbury (2013).

Reference from Dr. Mark Billinghurst, Director, HIT Lab NZ, University of Canterbury (2013).

Reference from Dr. Tim Bell, Associate Professor and Deputy HOD, Computer Science and Software Engineering, University of Canterbury (2011).

Reference from Geoff Ford, Managing Director, Attitude Group Ltd (2004).

Additional references can be found on my LinkedIn profile.

Education

University of Canterbury — M.Sc., Computer Science with 1st class Honours (2013).
GPA: 8.95 out of 9.0 (University Transcript)
Thesis: Real-time Hybrid Tracking for Outdoor Augmented Reality.
University of Canterbury — B.Sc., Computer Science (2008)
Last year GPA: 8.34 out of 9.0 (University Transcript)
Trinity College of London — Classical Flute
(2002) Grade 8 with distinction (top in Christchurch).
Royal Schools of Music — Music Theory
(2002) Grade 5 with distinction (top in New Zealand).

Awards

Innovation in Tourism & Entertainment — GeoZone
(2017) Winner at the New Zealand Innovation Awards.
UK Trade & Investment Innovative Mobile Technology — GeoZone
(2015) Winner at the New Zealand Hi-Tech Awards.
Finalist in the pre-commercialisation category — GeoZone
(2014) New Zealand Hi-Tech awards.
Development Funding — Programming Dojo website
(2013) Received funding for website updates.
Most Entrepreneurial Team — Puteko Ltd
(2012) Awarded $6,000 NZD from Entré Ltd.
Tech Jumpstart Award — Puteko Ltd
(2012) Awarded $20,000NZD from Tech Jumpstart.
Academic Exchange — MIME Group, National University of Singapore
(2012) Awarded $10,000NZD to assist with outdoor augmented reality research and development in Singapore.
Best Master's Presentation — Computer Science and Software Engineering, University of Canterbury
(2012) Awarded an iPod Touch for a presentation on my Master's thesis research.
Master's Thesis Scholarship — HIT Lab NZ, University of Canterbury
(2011) Awarded $15,000NZD to study outdoor augmented reality sensor fusion and tracking.
Development Scholarship — HIT Lab NZ, University of Canterbury
(2011) Awarded $10,000NZD for the development of augmented reality applications for the iPhone.
Development Funding — Film and Theatre, University of Canterbury
(2011) Awarded $2,000NZD for the development of an online digital teaching tool.
Summer Scholarship — Compiler Design and Program Verification
(2010) Awarded $5,000NZD from the University of Canterbury, working with Dr. Tadao Takaoka.
Development Funding — Programming Language Posters
(2010) Awarded $1,500NZD for the development of the Programming Language Posters and their distribution to New Zealand Schools from the University of Canterbury.

Conferences

Asynchronous Ruby
RubyWorld Conference 2019, Matsue, Japan. Without the right support, programs that handle many simultaneous tasks can be hard to build. The traditional request-per-process/thread model does not scale well. Explicit concurrency, including promises/futures, impose a significant cognitive burden and their use pollutes code all the way up the call chain. We present async, a gem for Ruby that implements the reactor pattern using stackful coroutines. We discuss asynchronous programming models, touch briefly on the state of asynchronous programming in Ruby, and show how fibers can be an excellent model for concurrency.
The Journey to One Million
RubyConfTW 2019, Taipai, Taiwan. Modern servers are capable of supporting millions of clients, both in terms of requests per second, and simultaneous connections. However, unless scalability is a priority, it can be very difficult to utilise the available hardware efficiently. Overheads in the application code, frameworks and operating system can act as force multipliers which increase memory pressure, latency and resource utilisation. We discuss the challenges encountered when scaling Ruby to one million concurrent WebSocket connections, and investigate the changes required to make it possible.
Fibers Are the Right Solution
Ruby Kaigi 2019, Fukuoka, Japan. The majority of performance improvements in modern processors are due to increased core count rather than increased instruction execution frequency. To maximise hardware utilization, applications need to use multiple processes and threads. Servers that process discrete requests are a good candidate for both parallelization and concurrency improvements. We discuss different ways in which servers can improve processor utilization and how these different approaches affect application code. We show that fibers require minimal changes to existing application code and are thus a good approach for retrofitting existing systems.

Research

A Robot System for Pruning Grape Vines
Journal of Field Robotics, 2016. This paper describes a robot system for automatically pruning grape vines. A mobile platform straddles the row of vines, and images them with trinocular stereo cameras as it moves. A computer vision system builds a 3D model of the vines, an AI system decides which canes to prune, and a six degree-of-freedom robot arm makes the required cuts. The system is demonstrated cutting vines in the vineyard.
Transform Flow: A Mobile Augmented Reality Visualisation and Evaluation Toolkit
Image and Vision Computing New Zealand, 2013. It is common in mobile augmented reality (AR) research to examine results that were attained with unpublished tools and data sets, which makes it difficult to compare and improve existing work without significant effort. We discuss the development of an open source toolkit called Transform Flow, which includes a data capture application for iOS, a desktop application to replay and analyse captured data sets with different algorithms, and a mobile application that can run these algorithms in real-time. Our results suggest that our toolkit can be a centre for collaborative research, as it provides a common platform on which tracking algorithms for mobile AR can be developed, studied and eventually deployed.
Hybrid Tracking using Gravity Aligned Edges
Awarded best paper at Computer-Human Interaction New Zealand, 2013. We have developed a hybrid tracking algorithm for mobile outdoor augmented reality (AR) applications. Our approach combines inertial sensors and camera video to improve global bearing calculations. Prior research in this area has focused on gravity aware feature descriptors, but we expand this to efficient full-frame vertical edge detection. We discuss our implementation and evaluate it’s performance on an iPhone 5, which reveals that our approach is over 100 times faster than existing feature alignment algorithms and can improve tracking with only 2-4ms of additional processing per frame on current generation mobile phones.
Mr Painting Robot
Image and Vision Computing New Zealand, 2011. This research investigates the identification of outlines, and how this can be used for input into a creative painting algorithm. It builds on several existing algorithms including the bilateral filter and laplacian edge detection, and develops several new algorithms including intensity scanning and brush stroke formation. The primary benefit of this approach is that the output format is vector based (and thus suitable for robotic armatures), rather than pixel based (such as one would expect from the majority of painterly algorithms). Synthetic tests show that the entire process can reproduce sumi-e style images with over 90% accuracy.

Skills

Software Design and Development
10+ years of experience as a software engineer.
Fluent in a variety of different programming languages including: C++, Objective-C, Swift, Ruby (favourite language), Python (mainly teaching), JavaScript.
Experienced with different programming APIs including: UNIX, POSIX, Cocoa, CoreFoundation, iOS, Vulkan, OpenGL, OpenAL.
Proficient with source code management systems, continuous deployment and unit testing.
Proud open source software contributor; experienced at collaborating with other developers.
Networking and Systems Administration
10+ years of experience as a network and systems administrator.
Experienced with the deployment of a wide variety of network services, including hardware, software and related infrastructure.
Good at problem solving and dealing with legacy systems and installations.
Familiar with most major operating systems and virtualisation environments.
Capable of dealing with end user problems professionally, compassionately and in a timely manner.
Fluent at scripting and able to automate a wide variety of tasks.
Programming Language Design and Implementation
Fascinated by language design, syntax, semantics and program analysis/verification.
Implemented several experimental programming languages.
Experienced with byte-code interpreters, garbage collection, parsing and code generation.
Designed a variety of programming language tools specifically for teaching purposes.
Computer Vision and Rendering
Familiar with a variety of feature point detection and tracking algorithms.
Implemented several high level tracking algorithms with OpenCV.
Interested in painterly rendering algorithms and systems that produce 'creative' output.
Experienced with the implementation of augmented reality applications and their practical use.
Developed tools for visualising large datasets and algorithmic behaviour.
Computer Science Education and Teaching
2+ years experience as a teacher and a tutor.
Enjoys teaching and helping people understand new concepts.
Experienced with a variety of age groups from primary school through to university level.
Game Design and Implementation
Enjoys the creative challenges associated with creating fun and engaging games.
Passionate about developing interesting game mechanics and artificial intelligence.
Familiar with content generation and working in a diverse team environment.
Efficient Algorithms and Problem Solving
Interested in searching and sorting algorithms and their implementation on parallel hardware.
Passionate about solving challenging problems and developing new algorithms.
Familiar with using a profiler to analyse performance and optimise code.

Work

RedBubble Ltd
(2016-2017) Developed scalable Vulkan-based rendering technology for rendering product images deployed on AWS.
GeoZone Ltd
(2013-) Lead server-side developer in a startup developing popular mobile apps for tourists. Specialized in web application development, deployment, and scaling.
Puteko Ltd
(2012-2013) Lead developer in a startup focusing on enhancing children's colouring books with augmented reality. Children can enjoy colouring in pages and seeing the results animated in 3D. I developed the iPad prototype which uses modern computer vision tracking algorithms and provided entrepreneurial guidance.
Game Mechanics Society
(2012-) A society of local programmers and artists who collaborate on the design and development of games. I am the founding member and assist with the organisation of events.
(2012) We created TileShift, a game that uses genetic algorithms to evolve levels in real-time for Ludum Dare 24. We ranked in the top 10% overall, and in the top 5% for innovation.
Computer Science and Software Engineering, University of Canterbury
(2012-2015) Participated in the start up of the Computer Science Club, a weekly event for middle school aged students to learn about computer science concepts. I helped develop the initial course structure, including the badge system and week-to-week social initiatives. I mentored students and provided support to other tutors.
Takashi Ikegami Laboratory, University of Tokyo
(2012) Gave a seminar on Mr Painting Robot, with a specific focus on how it relates to artificial life.
MIME Group, National University of Singapore
(2012) Developed an augmented reality navigation system which guides users through a series of waypoints as part of an interactive game. I implemented several visualisations and assisted with the associated evaluation and research.
Computer Science and Software Engineering, University of Canterbury
(2012) Teaching COSC121 and COSC122 Introduction to Computer Science as part of the STAR course specifically for talented high school students. I designed and marked all COSC122 assignments on algorithms using a modern unit test-based approach. I was the main tutor for COSC261 Fundamentals of Computer Science, implementing a variety of algorithms for teaching.
(2013-) Continuing teaching COSC121 and COSC122.
University of Canterbury Student Chapter, Association for Computing Machinery
(2011) President of the local chapter. I am helping to recover the chapter after it was suspended during the Christchurch Earthquakes.
HIT Lab NZ, University of Canterbury
(2011) Primary iPhone developer, building augmented reality applications and middleware. I designed and developed a high level outdoor augmented reality framework which has since been used in several projects including DiscovAR and CityViewAR.
Computer Science and Software Engineering, University of Canterbury
(2011) Computer science tutor, taught and developed teaching material covering a wide variety of topics in COSC261: Foundations of Computer Science and COSC329: Algorithms and Artificial Intelligence. I proposed and managed the COSC329 Sudoku Competition which challenged students to write efficient algorithms.
Orion Transfer Ltd
(2009-) Website programming and development, including online advertising, sales, competitions and content management.
St Margaret's College
(2008-2009) Technician, improving network infrastructure and day to day operations. I implemented real-time load monitoring for all desktop computers and used this information to assist with software and hardware deployment. I designed and implemented policies to reduce stress in a busy office, including a ticketing system to keep track of important jobs. I assisted with the development and management of the school website as well as a system for tracking potential enrolments during open-day.
Unlimited Paenga Tawhiti
(2006-2008) Technician, responsible for all computers and related infrastructure. I improved utilisation of computer resources by centralising administrative tasks. I developed and implemented policy for the student laptop program, from advertising through to deployment. I provided professional support to all students and staff covering existing technology and advising/deploying new technology where appropriate.
ISB Global
(2004-2006) Working as a programmer designing and developing a consultant placement system using Ruby on Rails.