Recent projects of mine include an electric scooter, RC vehicles, robots, drones, high-altitude flight controllers, and more. My PCBs are custom, and I assemble them myself with SMD techniques. My enclosures, frames, and chassis are 3D printed. Most of my projects are powered by 8-bit AVRs.
The µBee: an inexpensive, 3D-printed drone I built from scratch. Optional mounts allow integration with a motion capture system. I used these drones to conduct my PhD research.
An electric scooter I built it from scratch using plywood, aluminum, and 3D-printed parts reinforced with steel. An ATMega328P powers the logic, motor control, and display.
An animated render of my rugged-terrain, differential drive remote-controlled car. It is nearly entirely 3D-printed, including the controller.
A brief test of a small µBee fleet, detected and controlled by custom software I wrote that also doubles as a simulator to test out behaviours beforehand. A Vicon motion capture system surrounding the lab space captures the 9.5mm markers attached to the drones. For size and weight considerations, only 3 reflective markers are used per drone. The software controlling the µBees detects and tracks these markers over time to associate the detections with drone IDs.
Myself, test-flying the µBee. With the optional motion capture markers, the drone weighs 37g (including the LiPo battery), and has a flight time of up to 3 and a half minutes.
Myself, riding the electric scooter. Its top speed is approximately 16km/h and it has a modest maximum range of about 7km when powered with a 3.3Ah 6s LiPo.
Field tests of the rugged-terrain remote-controlled car on the SFU campus.
A smart watch I built from scratch, and not just for show—I use it to control my smart home, robots, and other conveniences.
A partially-disassembled view of my watch. I designed the board, the case, and wrote all the drivers, firmware, and applications. The main chip is an AT90USB64.
An interactive LED coaster that lights up when something is underneath it. The circuitry is all analog, with no microcontrollers.
This is an 8-bit vector gaming console I built entirely from scratch, complete with a game I wrote for it. It's powered by an ATmega1284. The entire project took 3 months to build.
A wired game controller that goes with my custom 8-bit console. Up to 4 of them are supported, although my latest game uses only one of them.
The Pocket Bot is a 3D-printed, 1.5-inch robot with line following sensors, infrared communications (with a server or other Pocket Bots), USB-C charging, and more.
The Pocket Bot's chassis is printed with PLA, with TPU wheels for extra grip. The main controller is an ATmega328p.
A Pocket Bot can be assembled from parts in minutes. When fully charged, a Pocket Bot will run continuously for over 3 hours.
A board I built for high-altitude missions. It has a camera, GPS, IMU, SD card, environmental sensors, and a long-range radio to communicate with my custom ground station.
The high-altitude device in its final enclosure. It's designed to be lightweight and to survive temperatures down to -60°C.
One of many photos of the Earth I captured during my first high-altitude mission.
Two of my games are on Steam. My games and engines are cross-platform (Windows and Linux) and written from scratch, because I enjoy the learning that comes from doing things yourself. I've also built scripting tools, physically-based rendering (PBR) and raytracing engines, and more.
I write my games in Vulkan or OpenGL, with shaders written in GLSL. Most of my custom development tools were written in C# .NET. I construct art assets in Blender and GIMP (most recently using a PBR metallicity workflow), and I do my own foley/sound design with Goldwave and Audacity.
Hypergate is a 3D space combat game available on Steam for Windows and Linux. It took five years to develop.
Check out the Steam Store page here.
Asteroids Millennium is a modern take on an old classic, available on Steam for Windows and Linux.
Check out the Steam Store page here.
Secrets of Mars is a game about an autonomous rover that begins to question reality, and its own programming, when things on Mars begin to become strange.
A game that I developed in 48 hours for my submission to the 45th Ludum Dare "Compo" competition using my open-source C media library SIGIL. It ranked 360th out of 2613!
No-Fly-Zone is a short survival first-person shooter (FPS) where you defend yourself against rogue drones. It's a simple open-source example of how to create an FPS with OpenGL.
A render from a raytracing engine I wrote. It features bounding volumes and other techniques for faster rendering, although not in real-time. The object in the center is a mirror.
I modelled the Voyager holodeck and put it into my experimental engine to learn about the differences in lighting between movies and video games, motion blur, and other techniques.
A 3D platformer I wrote to learn how to make a game engine in Vulkan. It supports animated models, diffuse and specular irradiance, shadow maps, multisampling, and more.
Another GIF of the platformer, showing the main menu and most of the world.
I've developed stock market backtesters, automated options trading software (which actually perform live trading), high-altitude mission command and control software, drone swarm simulation and control software, particle effect editors, a media library for C, mission scripters for my custom game engines, tools for my PhD research, and many more.
My preferred languages are C and C++. I'm very comfortable with C#, Swift, and Python.
Fornax is a general-purpose particle editor I use a lot. The GUI was made in C# .NET, with the preview functionality built in C++ with OpenGL.
The scripting and mission layout tool I built to script missions in Hypergate. It was made in C# .NET.
Some output from a suite of back-testing tools I wrote to develop and test options trading strategies on the S&P 500. These tools were built using C++ and Python.
My automated trading software, written in C# .NET, running on a wall-mounted tablet.
Screenshot of the drone simulation and control software I wrote that powered my drone experiments for my PhD research.
A fun visualization project showing ping results for IPV4 addresses a.b.c.d, for all a, b, c, and a random d.
Doctor of Philosophy (CS). Simon Fraser University (2021). Supervisor: Dr. Richard Vaughan.
Thesis title: Flock Heterogeneity and Its Applications.
Master of Science (CS). University of Manitoba (2016). Supervisor: Dr. John Anderson.
Thesis title: Active Recruitment in Dynamic Teams of Heterogeneous Robots.
Bachelor of Science (CS). University of Manitoba (2013).
Research Scientist at
Apple, since November 2021.
Staying hungry and foolish.
Prototype Engineer at Archiact (defunct), 2015 to 2016.
Led software and hardware projects that merged robotics and virtual reality.
Sessional Instructor at
University of Manitoba, 2013 to 2015.
Taught 7 undergraduate computer science courses ranging in size from 30 to 100 students.
Computational and Structural Advantages of Pairwise Flocking.
Geoff Nagy, Alex Thornton, Hangjian Ling, Guillam McIvor, Nicholas Ouellette, Richard Vaughan.
Proceedings of the 2nd IEEE International Symposium on Multi-Robot and Multi-Agent Systems, New Brunswick, USA, 2019.
PDF |
BibTeX
Simultaneous Measurements of 3D Trajectories and Wingbeat Frequencies of Birds in the Field.
Hangjian Ling, Guillam Mclvor,
Geoff Nagy, Sepehr MohaimenianPour, Richard Vaughan, Alex Thornton, Nicholas T. Ouellette.
Journal of the Royal Society Interface, 2018.
BibTeX
Self-Organization of a Robot Swarm into Concentric Shapes.
Geoff Nagy, Richard Vaughan.
Proceedings of the 14th Conference on Computer and Robot Vision, Edmonton, Canada, 2017.
PDF |
BibTeX
Flying Face Engagement: Aligning a UAV to Directly Face a Moving Uninstrumented User.
Geoff Nagy, Richard Vaughan.
Abstract in: Proceedings of the IEEE International Conference on Intelligent Robots and Systems, Vancouver, Canada, 2017.
PDF |
BibTeX
Active Team Management Strategies for Multi-Robot Teams in Dangerous Environments.
(Best Student Paper)
Geoff Nagy, John Anderson.
Proceedings of the 30th Canadian Conference on Artificial Intelligence, Edmonton, Canada, 2017.
PDF |
BibTeX
Active Recruitment Mechanisms for Heterogeneous Robot Teams in Dangerous Environments.
Geoff Nagy, John Anderson.
Proceedings of the 29th Canadian Conference on Artificial Intelligence, Victoria, Canada, 2016.
PDF |
BibTeX
Are Tangibles Better?: Keyboard and Joystick Outperform TUIs for Remote Robotic Locomotion Control.
Geoff Nagy, James E. Young, John Anderson.
Proceedings of the 10th ACM/IEEE International Conference on Human-Robot Interaction (Abstracts), Portland, USA, 2015.
PDF |
BibTeX
An Event-Driven Operating System for Servomotor Control.
Geoff Nagy, Jacky Baltes, Andrew Winton, John Anderson.
RoboCup 2014: Robot World Cup XVIII, Joao Pessoa, Brazil, 2014.
PDF |
BibTeX
Robar Industries Ltd. Graduate Scholarship, Simon Fraser University
Jan 2020
Helmut & Hugo Eppich Family Graduate Scholarship, Simon Fraser University
Jan 2019
May 2018
May 2017
May 2017
Graduate Dean Entrance Scholarship, Simon Fraser University
Sept 2016
Provost Prize of Distinction, Simon Fraser University
Sept 2016
Graduate Fellowship, Simon Fraser University
Sept 2016
3rd Place, Technical Challenge, RoboCup 2014
July 2014
Computer Science Guaranteed Funding Package, University of Manitoba
Jan 2014
3rd Place, Technical Challenge, RoboCup 2013
July 2013
Faculty of Science Graduate Studentship, University of Manitoba
Sept 2013
While working on my master's degree at the University of Manitoba, I was a sessional instructor from 2013 to 2015. In total, I taught 7 classes, ranging in size from 30 to over 100 students. While course topics were determined by the department, I developed and presented my own lecture content and assignments. Exams were developed and graded jointly between myself and the other instructors teaching the remaining sections. I received excellent ratings from students during evaluations.
Introductory Computer Science I (COMP 1010)
Fall 2013, 2014
Introductory Computer Science II (COMP 1020)
Winter 2013, 2014, 2015
Object Orientation (COMP 2150)
Summer 2013, 2014
I have been very active in the computer science and robotics communities. My volunteer work included organizing student events for international conferences, and contributing to committees on both local and international levels.
May 2020 - May 2021
May 2018 - May 2021
Chair, Student Activities Committee, IEEE RAS
May 2018 - May 2020
May 2018 - May 2020
IROS 2017 Volunteer Organizer, Simon Fraser University
July 2017 - Sept 2017
Member, Department of CS Council, University of Manitoba
Sept 2014 - Aug 2015
March 2011 - Feb 2012
- I'm highly interested in space travel and exploration of the Solar System.
- Since 2013, I've trained in several martial arts, with a focus on practical self-defense and knowledge.
- Seattle, WA and Vancouver, BC have some amazing opportunities for scenic hikes!
Page last updated July 25, 2025.