doylet.dev/index.html
2023-02-06 17:51:20 +11:00

585 lines
33 KiB
HTML

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<!--stackoverflow.com/questions/18500836/should-i-use-max-device-width-or-max-width-->
<meta name="viewport" content="width=device-width, initial-scale=1">
<link type="text/css" rel="stylesheet" href="style.css"/>
<title>Doyle T. | Resume</title>
</head>
<body id="index_wrapper">
<main>
<div class="index_header">
<div>
<h1>DOYLE T.</h1>
</div>
<div id="index_header_subtitle">
Print Friendly Summary: <a href="doylet_resume_summary.pdf">doy-lee.github.io/doylet_resume_summary.pdf</a></li>
</div>
</div>
<div class="index_divider_no_top_margin"></div>
<div id="index_overview">
<div class="index_overview_section">
<h2>DETAIL</h2>
<ul>
<li>This Resume: <a href="http://doy-lee.github.io">doy-lee.github.io</a></li>
<li>Email: <a href="mailto:cv.doylet.2380i@simplelogin.com">cv.doylet.2380i@simplelogin.com</a></li>
<li>Github: <a href="http://github.com/doy-lee">github.com/doy-lee</a></li>
<li>Flickr: <a href="http://flickr.com/doy-lee">flickr.com/doy-lee</a></li>
</ul>
</div> <!-- index_overview_section -->
<!-- QR Code generated by Google -->
<!-- http://chart.googleapis.com/chart?cht=qr&chs=150x150&choe=UTF-8&chld=H&chl=doy-lee.github.io -->
<div class="index_overview_section" id="index_overview_section_qr_code">
<h2>RESUME QR CODE</h2>
<img style="max-width: 100, height: auto" src="img/qr_code.png">
</div>
</div> <!-- index_overview -->
<div class="index_divider"></div>
<div class="index_wrapper">
<h2>WORK EXPERIENCE</h2>
<div class="index_table">
<ul class="index_table_row">
<li class="index_table_cell_year">
<p>CURRENT</p>
<p>2020 OCT</p>
</li>
<li class="index_table_cell_name">
<h3>AOS Group</h3>
<p>Software Engineer</p>
</li>
<li class="index_table_cell">
<p class="index_table_cell_role">
AI Toolchain/Planning Engine Team:
<a href="https://aosgrp.com">(aosgrp.com)</a>
</p>
<p>
AOS creates tools to model real-world systems via reasoning agents
running in AOS's real-time BDI (Beliefs, Desires, Intentions)
planning engine providing fault-tolerant, traceable and
explainable autonomous real-world systems.
</p>
<ul>
<li>C++11, Kafka, RTI DDS, SFML, Dear ImGui, BDI/Multi-Agent Protocols, Windows/Linux</li>
<li>
Write a 2D simulation engine w/ ECS for tests and
demonstration of interactive agent models.
</li>
<li>
Converting real-world system specs to a multi-agent
paradigm to highlight deficiencies in the development
methodology leading to new protocols such as how to share
beliefs between teams of agents and interactive human
contribution into agent decision making.
</li>
<li>
Co-implement a distribution protocol for the planning engine
allowing the synchronisation of other engine instances for
fault-tolerance and cross-engine agent collaboration.
</li>
<li>
Documenting best practices and tutorials for designing effective
multi-agent systems.
</li>
</ul>
</li>
</ul>
<ul class="index_table_row">
<li class="index_table_cell_year">
<p>2020 OCT</p>
<p>2018 FEB</p>
</li>
<li class="index_table_cell_name">
<h3><a href="index.html#index_projects_oxen">Oxen (prev. Loki)</a></h3>
<p>Software Engineer</p>
</li>
<li class="index_table_cell">
<p class="index_table_cell_role">
Blockchain Team
<a href="https://github.com/oxen-io/oxen/commits?author=Doy-lee">(github.com/oxen-io/oxen/commits?author=Doy-lee)</a>
</p>
<p>
Oxen is a blockchain company that creates privacy tools that enable
untraceable, secure and anonymous money, onion routed messaging and
networks powered by a masternode network on-top of the blockchain.
</p>
<ul>
<li>C++14, Boost, Docker, CMake, Libsodium, Monero/Cryptonote, Windows/OSX/Linux/Android</li>
<li>
Implement layer 2 masternodes which are quorums of
permissioned nodes via new chain protocols: de/registration and
payout transactions and self-regulating consensus with
reliability metrics and voting via a P2P gossip network.
</li>
<li>
Improve chain resilience by securing blocks using checkpoints
formed by masternode consensus providing faster settlement and
finalization of transactions on the network.
</li>
<li>
Implement an on-chain DNS registry for named records for
wallets, messaging aliases and domains on the onion routed
networks.
</li>
<li>
Transition from Proof of Work to Proof of Stake
on a decentralized network using a commit-reveal scheme for
generating non-exploitable entropy for block generation.
</li>
<li>
Responsible for building, packaging and distribution of
releases. Patching vulnerability disclosures and fixing
network stalls on an in production network.
</li>
<li>
Fix/improve/create test tooling for the Service Node network
including a re-write of the Monero testing framework and
integration tests using IPC named pipes over multi-process.
</li>
</ul>
</li>
</ul>
<ul class="index_table_row">
<li class="index_table_cell_year">
<p>2017 NOV</p>
<p>2017 AUG</p>
</li>
<li class="index_table_cell_name">
<h3>Wargaming</h3>
<p>Intern SWE</p>
</li>
<li class="index_table_cell">
<ul>
<p class="index_table_cell_role">
Client Tools Team
<a href="https://wargaming.com/en/about">(wargaming.com/en/about/)</a>
</p>
<li>Assisting with the game editor for the asset pipeline involving C++11, Qt, Jira, Perforce, Plastic</li>
</ul>
</li>
</ul>
</div> <!-- index_table -->
</div> <!-- index_wrapper -->
<div class="index_divider"></div>
<div id="index_wrapper">
<h2>SIDE PROJECTS</h2>
<div class="index_table">
<ul class="index_table_row">
<li class="index_table_cell_year">
<p>ONGOING</p>
</li>
<li class="index_table_cell_name">
<h3>Dqn Library</h3>
</li>
<li class="index_table_cell">
<p class="index_table_cell_role">
Personal Utility Library C++
<a href="http://github.com/doy-lee/dqn">(github.com/doy-lee/dqn)</a>
</p>
<ul>
<li>Helpers to bootstrap projects quickly and improving my API design by experience</li>
<li>Cache friendly stack based containers for data that has a low upper-bound</li>
<li>Arena based allocators for manual, cheap heap allocation and freeing</li>
<li>For learning, SHA3-256, unit test, C/C++ metaprogram generator library</li>
</ul>
</li>
</ul> <!-- index_table_row -->
<ul class="index_table_row">
<li class="index_table_cell_year">
<p>2020</p>
<p>2017</p>
<p>.</p>
<p>.</p>
<p>2016</p>
</li>
<li class="index_table_cell_name">
<h3 style="font-size: 0.85em">RaylibSIMD</h3>
<h3><a style="font-size: 0.85em" href="index.html#index_projects_dtrenderer">DTRenderer</a></h3>
<h3><a style="font-size: 0.85em" href="index.html#index_projects_dchip8">DChip8</a></h3>
<h3><a style="font-size: 0.85em" href="index.html#index_projects_math_masher">Math Mash</a></h3>
<h3><a style="font-size: 0.85em" href="index.html#index_projects_dengine">Dengine</a></h3>
</li>
<li class="index_table_cell">
<p class="index_table_cell_role">
SIMD Software Rendering (SSE, 4x faster)
<a href="http://github.com/doy-lee/RaylibSIMD">(github.com/doy-lee/RaylibSIMD)</a>
</p>
<p class="index_table_cell_role">
3D Software Renderer from First Principles
<a href="http://github.com/doy-lee/DTRenderer">(github.com/doy-lee/DTRenderer)</a>
</p>
<p class="index_table_cell_role">
CHIP8 Interpreter (C/C++, Win32)
<a href="http://github.com/doy-lee/dchip-8">(github.com/doy-lee/dchip-8)</a>
</p>
<p class="index_table_cell_role">
Mobile Game (C++, Photoshop, Cocos2dx) <a href="http://doy-lee.github.io/luneaustralia">(doy-lee.github.io/luneaustralia)</a>
</p>
<p class="index_table_cell_role">
Basic 2D Engine (C++, OpenGL, GLFW, STB, OpenAL)
<a href="http://github.com/doy-lee/dengine">(github.com/doy-lee/dengine)</a>
</p>
</li>
</ul> <!-- index_table_row -->
</div>
</div> <!-- index_project_wrapper -->
<div class="index_divider"></div>
<div id="index_education_wrapper">
<h2>EDUCATION</h2>
<div id="index_education_table">
<ul class="index_education_table_row">
<li class="index_education_table_cell_year">
<p>2014-2017</p>
</li>
<li class="index_education_table_cell_place">
<h3>UNIVERSITY OF NEW SOUTH WALES</h3>
</li>
<li class="index_education_table_cell">
<p>Bachelor of Science (Computer Science)</p>
</li>
</ul>
</div>
</div> <!-- index_education_wrapper -->
<!-- IMPORTANT: This divider has a page break that pushes away
the content below to the next page in printing mode -->
<div class="index_divider" id="index_divider_last_before_optional_content"></div>
<div id="index_projects_oxen">
<div class="index_projects_header">
<h2>OXEN (formerly Loki) - Privacy tools for untraceable, secure and anonymous communications</h2>
</div>
<div class="index_projects_content">
<div class="index_projects_content_section">
<div class="index_projects_preview" id="index_projects_preview_images_loki">
<img src="img/projects_loki_screen_1.png">
</div>
<div class="index_projects_content_section">
<h3>SUMMARY</h3>
<p>
Oxen is a blockchain company that creates privacy tools that enable
untraceable, secure and anonymous money, onion routed messaging and
networks powered by a masternode network on-top of the blockchain.
</p>
<p>
They are an open-source, non-for profit company that is responsible for
developing the Oxen blockchain, Session a private messenger and Lokinet
an onion routing network.
</p>
<p>
As the primary blockchain engineer, I worked towards developing a
masternode network and auxiliary features that protects the network from
malicious activity, tampering and allow nodes to enter and leave the
permissioned network to maintain a sybil resistant network that is
suitable for onion routing of the services provided on-top.
</p>
</div>
<div class="index_projects_content_section">
<h3>MILESTONES</h3>
<h4>Service Node Network (Masternode Layer)</h4>
<a style="font-size: 0.85em" href="https://docs.oxen.io/about-the-oxen-blockchain/oxen-service-nodes">https://docs.oxen.io/about-the-oxen-blockchain/oxen-service-nodes</a>
<ul>
<li>Implement layer 2 masternodes which are quorums of permissioned nodes via new chain protocols: de/registration and payout transactions and self-regulating consensus with reliability metrics and voting via a P2P gossip network.</li>
<li>Design new cryptographic transactions for Service Node registration/blacklisting/unlocking/voting</li>
<li>Penalizing misbehaving Service Nodes by temporary locking of registered funds and rewarding behaving Service Nodes with automatic on-chain</li>
<li>Keep the network consistent against malicious Service Nodes by gracefully rolling back state and banning.</li>
<li>Develop a node grouping system aka. quorums to self-regulate the network by collecting metrics and coming to consensus to deregister nodes off the network</li>
<li>JSON RPC API for statistics used by external services for metrics (i.e. CoinMarketCap, Masternodes Pro, <a href="https://lokidashboard.com">lokidashboard.com</a>) </li>
</ul>
<h4>Service Node Checkpointing</h4>
<a style="font-size: 0.85em" href="https://github.com/oxen-io/oxen-improvement-proposals/blob/master/LIPS/LIP-3.md">https://github.com/oxen-io/oxen-improvement-proposals/blob/master/LIPS/LIP-3.md</a>
<ul>
<li>Improve chain resilience by securing blocks using checkpoints formed by masternode consensus providing faster settlement and finalization of transactions on the network.</li>
<li>Defend against 51% attacks on the blockchain and mitigate double spends</li>
<li>Additional consensus rules to lock in blocks autonomously by Service Nodes</li>
<li>Improves the previous manual system of updating hardcoded lists per release to passively locking the chain as it progresses.</li>
</ul>
<h4>Oxen Name System</h4>
<a style="font-size: 0.85em" href="https://docs.oxen.io/using-the-oxen-blockchain/overview#oxen-name-system-ons-human-readable-names-for-session-lokinet-and-more">https://docs.oxen.io/using-the-oxen-blockchain/overview#oxen-name-system-ons-human-readable-names-for-session-lokinet-and-more</a>
<ul>
<li>Implement an on-chain DNS registry for named records for wallets, messaging aliases and domains on the onion routed networks. </li>
<li>New transactions to burn funds and record temporarily owned name entries into the blockchain</li>
<li>Interop with Libsodium and Monero cryptography for encryption/decryption of records</li>
<li>End User API for integration across external services such as Session, wallet software and Lokinet</li>
</ul>
<h4>Pulse (Proof of Stake)</h4>
<a style="font-size: 0.85em" href="https://github.com/oxen-io/oxen-improvement-proposals/blob/master/LIPS/LIP-5.md">https://github.com/oxen-io/oxen-improvement-proposals/blob/master/LIPS/LIP-5.md</a>
<ul>
<li>Transition from Proof of Work to Proof of Stake on a decentralized network using a commit-reveal scheme for generating non-exploitable entropy for block generation.</li>
<li>Coordinate a commit reveal scheme to generate and collect entropy from a quorum of nodes within an time-limited epoch for block generation</li>
<li>Multi-round process to synchronise data, prevent leaking of random entropy and ensure no biasing of results</li>
<li>Fail safe mechanisms to support round failure, and network failure, i.e. falling back to Proof of Work when the Service Nodes are unable to coordinate the quorum</li>
</ul>
<h4>Other</h4>
<ul>
<li>Loki Onion Blockchain Explorer - Forked and repurposed for additional Service Node information</li>
<li>Loki Integration Tests - Multi-process IPC to blockchain daemons to simulate user interaction</li>
<li>Loki RPC Doc Generator - Custom Recursive Descent Parser for generating documentation</li>
<li>Rewriting core testing framework to extensively test new Service Node features</li>
<li>Handling cross platform builds, CI and distribution (Windows, Linux, OSX, Android)</li>
</ul>
</div>
<div class="index_projects_content_section">
<h3>LINKS</h3>
<ul>
<li> <a href="https://oxen.io">Oxen Homepage</a> (oxen.io)</li>
<li> <a href="https://github.com/oxen-io/oxen-core">Main Github</a> (github.com/oxen-io/oxen-core)</li>
<li> <a href="https://github.com/oxen-io/oxen-core/commits?author=Doy-lee">Main Commits</a> (github.com/oxen-io/oxen-core/commits?author=Doy-lee)</li>
<li> <a href="https://github.com/oxen-io/loki-onion-blockchain-explorer">Block Explorer</a> (github.com/oxen-io/loki-onion-blockchain-explorer)</li>
<li> <a href="https://github.com/doy-lee/loki-rpc-doc-generator">RPC Doc Generator</a> (github.com/doy-lee/loki-rpc-doc-generator) </li>
<li> <a href="https://github.com/doy-lee/loki-integration-testing">Integration Testing</a> (github.com/doy-lee/loki-integration-testing) </li>
</ul>
</div> <!-- index_projects_content_section -->
</div> <!-- index_projects_content_section -->
</div>
</div>
<div class="index_divider"></div>
<div id="index_projects_dtrenderer">
<div class="index_projects_header" id="index_projects_dtrenderer_header">
<h2>DTRENDERER (2017) - 3D Software Renderer from First Principles</h2>
</div>
<div class="index_projects_preview_images" id="index_projects_preview_images_dtrenderer">
<img src="img/projects_dtrenderer.gif">
</div>
<div class="index_projects_content">
<div class="index_projects_content_section">
<h3>SUMMARY</h3>
<p>
DTRenderer is an attempt to build a simple software renderer from the ground up.
The main goal is to build an intuitive understanding of graphics mathematics,
rendering pipeline and core concepts. It runs as a Win32 program with minimal
dependencies.
</p>
</div> <!-- index_projects_content_section -->
<div class="index_projects_content_section">
<h3>MILESTONES</h3>
<h4>2D Software Rendering</h4>
<ul>
<li>Alpha Blending</li>
<li>Bilinear Filtering</li>
<li>Correct Color Space Pipeline (SRGB <-> Linear)</li>
<li>Rasterisation</li>
<li>Texture Mapping</li>
<li>Translation, Rotation, Scale</li>
</ul>
<h4>3D Software Rendering</h4>
<ul>
<li>Full Bright, Flat, Gouraud Shading</li>
<li>Orthogaphic, Perspective Projections</li>
<li>Translation Rotation Scale</li>
</ul>
<h4>Misc.</h4>
<ul>
<li>Custom Wavefront Obj Loader (minimal subset)</li>
<li>Hot Reloadable DLL for Renderer Code (taken from Handmade Hero)</li>
<li>SIMD "Optimisation" (with a grain of salt, tried to with some % improvement)</li>
</ul>
</div> <!-- index_projects_content_section -->
<div class="index_projects_content_section">
<h3>LINKS</h3>
<ul>
<li> <a href="http://github.com/doy-lee/DTRenderer">Github</a> (github.com/Doy-lee/DTRenderer) </li>
</ul>
</div>
</div>
</div> <!-- index_projects_dtrenderer -->
<div class="index_divider"></div>
<div id="index_projects_math_masher">
<div class="index_projects_header" id="index_projects_math_masher_header">
<h2>MATH MASHER (2017) - Educational Mobile Math Game</h2>
</div>
<div class="index_projects_preview_images" id="index_projects_preview_images_math_masher">
<img src="img/projects_math_masher_screen_1.jpg">
<img src="img/projects_math_masher_screen_2.jpg">
<img src="img/projects_math_masher_screen_3.jpg">
</div>
<div class="index_projects_content">
<div class="index_projects_content_section">
<h3>SUMMARY</h3>
<p>Math Masher is a cross-platform mobile app that aims to teach
basic arithmetic skills including addition, subtraction and
multiplication by gamifying the learning experience. The app is
developed with a team using the Cocos2dx framework in
C++.</p>
<p>My role in the project is as the lead developer and
assisting role with asset design.</p>
</div> <!-- index_projects_content_section -->
<div class="index_projects_content_section">
<h3>MILESTONES/RESEARCH</h3>
<p>Features that have been implemented at one point or tasks responsible for.</p>
<ul>
<li>Project Management (Trello, Minutes Meeting, Code Review etc.)</li>
<li>Game Engine Architecture (Gameplay, UI, Shop, Debug)</li>
<li>Basic Sound Editing (Compressor, EQuing, Normalisation)</li>
<li>Asset Designs (Assisting with graphical asset creation)</li>
</ul>
</div> <!-- index_projects_content_section -->
<div class="index_projects_content_section">
<h3>LINKS</h3>
<ul>
<li> <a href="luneaustralia/index.html">Official Website (deprecated, archive only)</a> (doy-lee.github.io/luneaustralia) </li>
<li> <a href="https://www.youtube.com/watch?v=AUozUZ8aY7g">Trailer</a> (youtube.com/watch?v=AUozUZ8aY7g) </li>
</ul>
</div>
</div>
</div> <!-- index_projects_math_masher -->
<div class="index_divider"></div>
<div id="index_projects_dchip8">
<div class="index_projects_header">
<h2>DCHIP8 (2017) - CHIP8 Interpreter</h2>
</div>
<div class="index_projects_preview_images" id="index_projects_preview_images_dchip8">
<img src="img/projects_dchip8_screen_1.png">
<img src="img/projects_dchip8_screen_2.png">
</div>
<div class="index_projects_content">
<div class="index_projects_content_section">
<h3>SUMMARY</h3>
<p>DCHIP8 aims to emulate the CHIP8 architecture to
better understand at a lower level operations between
memory, cpu, input and output.</p>
</div> <!-- index_projects_content_section -->
<div class="index_projects_content_section">
<h3>MILESTONES/RESEARCH</h3>
<ul>
<li>Fetch, Decode, Execute Opcodes</li>
<li>Modelling memory, registers and basic CPU architecture</li>
<li>Software Rendering and interaction with Win32</li>
<li>Minimal dependencies, single file executable</li>
</ul>
</div> <!-- index_projects_content_section -->
<div class="index_projects_content_section">
<h3>LINKS</h3>
<ul>
<li> <a href="https://github.com/Doy-lee/dchip-8">Github</a> (github.com/Doy-lee/dchip-8) </li>
<li> <a href="http://devernay.free.fr/hacks/chip8/C8TECH10.HTM">Specification Sheet</a> (devernay.free.fr/hacks/chip8/C8TECH10.htm) </li>
</ul>
</div>
</div>
</div> <!-- index_projects_math_masher -->
<div class="index_divider"></div>
<div id="index_projects_dengine">
<div class="index_projects_header" id="index_projects_dengine_header">
<h2>DENGINE (2016) - Basic 2D Engine</h2>
</div>
<div class="index_projects_preview_images" id="index_projects_preview_images_dengine">
<img src="img/projects_dengine_screen_1.png">
<img src="img/projects_dengine_demo.gif">
</div>
<div class="index_projects_content">
<div class="index_projects_content_section">
<h3>SUMMARY</h3>
<p>Dengine is a solo project, 2D game engine developed
with OpenGL and low-level libraries in C. The main goal
of Dengine is to facilitate learning from many aspects
of Computer Science. Alongside Dengine, Asteroids is
being built which guides the development of features for
the game. Dengine is inspired by Handmade Hero, with
a focus on developing as many features with minimal
libraries, such that it is not too time-consuming and
counter-productive to do so.</p>
</div>
<div class="index_projects_content_section">
<h3>MILESTONES/RESEARCH</h3>
<p>Features/research that have been implemented at one point in the making of the engine.</p>
<ul>
<li>Asset Management (load data into intermediate representations)</li>
<li>Audio API from OpenAL</li>
<li>Basic 2D Game Mathematics/Physics (Vector, Trig, Explicit Euler)</li>
<li>Collision Detection (Single Axis Theorem, Minkowski Sum/Diff, AABB)</li>
<li>Debug Services & Displays</li>
<li>Entity Component Systems</li>
<li>IMGUI Systems</li>
<li>Input Parsing</li>
<li>Push-Buffer Memory Systems</li>
<li>Small Size Array Optimisations</li>
<li>Standard Library Replacements (e.g. atoi, strlen, itoa, string)</li>
<li>Texture Atlas Support, Runtime Font Packing</li>
<li>OpenGL 2D Rendering Pipeline & Batching Render Calls</li>
</ul>
</div> <!-- index_projects_content_section -->
<div class="index_projects_content_section">
<h3>LINKS</h3>
<ul>
<li> <a href="https://github.com/Doy-lee/Dengine">Github</a> (github.com/Doy-lee/Dengine) </li>
</ul>
</div>
</div> <!-- index_projects_content -->
</div> <!-- index_projects_dengine -->
<div class="index_divider"></div>
<footer id="index_footer">
</footer>
</body> <!-- index_wrapper -->
</html>