Curriculum Vitae of Ryan Francis Kelly
I am a software engineer and occasional consultant. I live in the seaside town of Inverloch near Melbourne, Australia, where I work remotely as a Senior Staff Software Engineer for Mozilla.
The best way to contact me is by email; use
ryan@ plus the domain of this website.
Academically, I hold a PhD in Computer Science from the Intelligent Agents Laboratory at the University of Melbourne. My undergraduate studies were a double bachelor's degree in Engineering and Computer Science, which I was awarded with first class honours.
Personally, I enjoy public speaking, theatre and performance arts of any persuasion. I am a keen hiker and camper, even though it means being disconnected from the Internet for hours or even days at a time.
More details are available in the sections below:
Software Engineer, Mozilla
I currently work as a Senior Staff Software Engineer for Mozilla, where I take broad responsibility for the Firefox Accounts identity system and the client and server components that power Firefox Sync.
Highlights from my work over the years have included:
- Re-designing the HTTP service API for Firefox Sync so that multiple clients can sync concurrently without risking data corruption.
- Working in a small team to launch a new account system and simplified Sync setup experience, then watching the service steadily grow to support millions of Firefox users across the globe.
- Collaborating with security experts to help keep user data safe, from reviewing the security properties of new account account features, to finding and fixing security bugs, to mitigating malicious service traffic.
- Managing a team of five engineers for ongoing development of the Firefox Accounts service, including the promotion of two senior engineers and the hiring of some amazing new colleagues.
- Championing the development of a unified cross-platform sync client SDK, and creating a multi-language bindings generator for Rust to lighten its maintenance burden.
Director and Lead Developer, Cloud Matrix
I co-founded and was lead developer at Cloud Matrix, a small Melbourne-based startup in the cloud storage space. We built "SaltDrive", an encrypted cloud-enabled USB stick. The SaltDrive technology stack was predominantly Python including PySide for the desktop client, Django and jQuery for the website, and some custom python code to interface with Amazon Web Services for file storage.
We built a working product, but did not achieve any noteworthy market traction.
Keywords: Python, Django, Native Apps, AWS, Encryption.
Freelance Developer and Consultant
I have done occasional work as a freelance developer and software consultant. My past projects have involved developing Python-based desktop and online applications, and code maintenance and translation services for Prolog.
Keywords: Python, Django, Web Apps, Prolog.
Programmer, The Victorian Partnership for Advanced Computing
After completing a Summer Internship with the Victorian Partnership for Advanced Computing, I undertook ongoing programming work on a casual basis. My roles ranged from developer to software architect, handling the design and development of software for engineering applications. Projects included a Python-based desktop application to support computer-aided design workflows, and a PHP-based project management portal used to coordinate research and development activities among several large organisations.
Keywords: Python, PHP, Native Apps, Web Apps, Computational Engineering.
I also worked a variety of part-time roles while completing my academic studies; if you're interested you can read about them in my full profile on LinkedIn.
I have a PhD in Computer Science from the University of Melbourne, Department of Computer Science and Software Engineering. My thesis, entitled "Asynchronous Multi-Agent Reasoning in the Situation Calculus", as submitted in October 2008. The main outcomes of my research are summarized here.
Prior to this, I obtained a Bachelor of Engineering (Mechatronics) and a Bachelor of Computer Science from the University of Melbourne, graduating in 2005 with first-class honours.
I love to talk, present and discuss just about anything software-related, from new technologies and tools to the philosophy of API design. Some of my previous conference presentations include:
- PyPy.js: What? How? Why? (PyCon Australia, 2014).
- Testing for Graceful Failure with Vaurien and Marteau. (PyCon Australia, 2013).
- Also presented at Kiwi PyCon, 2013.
- The Lazy Dev's Guide to Testing Your Web API (PyCon Australia, 2012).
- Deep Freeze: Building better stand-alone apps with Python. (PyCon US, 2012).
- Bytecode: What, Why, and How to Hack it. (PyCon Australia, 2011).
- Say What You Mean: Meta-Programming a Declarative API. (PyCon Australia, 2011).
- Esky: keep your frozen apps fresh. (PyCon Australia, 2010).
I co-authored the following publications as a result of my doctoral studies:
- Ryan F. Kelly and Adrian R. Pearce. Asynchronous Knowledge with Hidden Actions in the Situation Calculus. Artificial Intelligence 221, pp. 1-35, 2015.
- Ryan F. Kelly and Adrian R. Pearce. Property Persistence in the Situation Calculus. Artificial Intelligence 174, pp. 865-888, 2010.
- Ryan F. Kelly and Adrian R. Pearce. Complex Epistemic Modalities in the Situation Calculus, in Proceedings of the 11th International Conference on Principles of Knowledge Representation and Reasoning, 2008.
- Ryan F. Kelly and Adrian R. Pearce. Knowledge and Observations in the Situation Calculus, in Proceedings of the 2007 International Conference on Autonomous Agents and Multi-Agent Systems, 2007.
- Ryan F. Kelly and Adrian R. Pearce. Property Persistence in the Situation Calculus, in Proceedings of the 20th International Joint Conference on Artificial Intelligence, 2007.
- Ryan F. Kelly and Adrian R. Pearce. Towards High-Level Programming for Distributed Problem Solving, in Proceedings of the 2006 IEEE/WIC/ACM International Conference on Intelligent Agent Technology, 2006.
I enjoy tech conferences in both a personal and professional capacity, and have volunteered on the managing committee for PyCon Au on several occasions. Most recently I served as PyCon Au Treasurer for the 2016 and 2017 conferences.
I love public speaking and the performing arts in general. As a younger man I had major roles in several amateur theatrical/musical productions; as a busy working parent I look forward to fitting such things into my schedule again one day in the future.
I am a keen hiker and keen-if-the-weather-looks-good camper, and enjoy regular outdoor escapes with family and friends, even if it means being disconnected from the Internet for days at a time. (Besides, have you seen all the tech gear you can get for camping these days?).