Initial commit
BIN
doylet_resume_summary.pdf
Normal file
BIN
img/projects_dchip8_screen_1.png
Normal file
After Width: | Height: | Size: 3.2 KiB |
BIN
img/projects_dchip8_screen_2.png
Normal file
After Width: | Height: | Size: 3.1 KiB |
BIN
img/projects_dengine_demo.gif
Normal file
After Width: | Height: | Size: 370 KiB |
BIN
img/projects_dengine_screen_1.png
Normal file
After Width: | Height: | Size: 9.3 KiB |
BIN
img/projects_dqn_screen_1.png
Normal file
After Width: | Height: | Size: 336 KiB |
BIN
img/projects_dtrenderer.gif
Normal file
After Width: | Height: | Size: 4.6 MiB |
BIN
img/projects_kay_engine_screen_1.png
Normal file
After Width: | Height: | Size: 232 KiB |
BIN
img/projects_loki_screen_1.png
Normal file
After Width: | Height: | Size: 208 KiB |
BIN
img/projects_math_masher_screen_1.jpg
Normal file
After Width: | Height: | Size: 244 KiB |
BIN
img/projects_math_masher_screen_2.jpg
Normal file
After Width: | Height: | Size: 299 KiB |
BIN
img/projects_math_masher_screen_3.jpg
Normal file
After Width: | Height: | Size: 275 KiB |
BIN
img/projects_novel_screen_1.png
Normal file
After Width: | Height: | Size: 163 KiB |
BIN
img/qr_code.png
Normal file
After Width: | Height: | Size: 15 KiB |
584
index.html
Normal file
@ -0,0 +1,584 @@
|
|||||||
|
<!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>
|
BIN
luneaustralia/images/app_store.png
Normal file
After Width: | Height: | Size: 5.0 KiB |
BIN
luneaustralia/images/background.png
Normal file
After Width: | Height: | Size: 129 KiB |
BIN
luneaustralia/images/background_old.jpg
Normal file
After Width: | Height: | Size: 326 KiB |
5
luneaustralia/images/desktop.ini
Normal file
@ -0,0 +1,5 @@
|
|||||||
|
[.ShellClassInfo]
|
||||||
|
InfoTip=This folder is shared online.
|
||||||
|
IconFile=C:\Program Files (x86)\Google\Drive\googledrivesync.exe
|
||||||
|
IconIndex=16
|
||||||
|
|
BIN
luneaustralia/images/favicon.png
Normal file
After Width: | Height: | Size: 820 B |
BIN
luneaustralia/images/fb_logo.png
Normal file
After Width: | Height: | Size: 34 KiB |
BIN
luneaustralia/images/game_play_1.jpg
Normal file
After Width: | Height: | Size: 105 KiB |
BIN
luneaustralia/images/game_play_2.jpg
Normal file
After Width: | Height: | Size: 120 KiB |
BIN
luneaustralia/images/game_play_3.jpg
Normal file
After Width: | Height: | Size: 131 KiB |
BIN
luneaustralia/images/lune_logo.png
Normal file
After Width: | Height: | Size: 14 KiB |
BIN
luneaustralia/images/math_masher_logo.png
Normal file
After Width: | Height: | Size: 167 KiB |
BIN
luneaustralia/images/play_store.png
Normal file
After Width: | Height: | Size: 6.2 KiB |
2234
luneaustralia/index.ai
Normal file
92
luneaustralia/index.html
Normal file
@ -0,0 +1,92 @@
|
|||||||
|
<html>
|
||||||
|
|
||||||
|
<head>
|
||||||
|
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||||
|
<meta name="author" content="Lune Australia">
|
||||||
|
<meta name="keywords" content=" Math, Masher, iOS, Android, Math, Learning, Game, Lune, Australia, Puzzle, Kids, Education">
|
||||||
|
<meta name="description" content="Math Masher is a math game, made to educate kids in numbers whilst bringing fun and enjoyment in the process">
|
||||||
|
<meta name="url" content="http://luneaustralia.com">
|
||||||
|
<meta name="title" content="Math Masher: Bringing joy to numbers">
|
||||||
|
|
||||||
|
<meta property="og:author" content="Lune Australia">
|
||||||
|
<meta property="og:url" content="http://luneaustralia.com">
|
||||||
|
<meta property="og:description" content="Math Masher is a math game, made to educate kids in numbers whilst bringing fun and enjoyment in the process">
|
||||||
|
<meta property="og:title" content="Math Masher: Bringing joy to numbers">
|
||||||
|
<meta property="og:image" content="http://luneaustralia.com/images/lune_logo.png">
|
||||||
|
|
||||||
|
<title>Lune Australia - Math Masher - An iOS and Android interactive numbers game</title>
|
||||||
|
<link rel="stylesheet" href="style.css">
|
||||||
|
<script src="script.js"></script>
|
||||||
|
<link href="https://fonts.googleapis.com/css?family=Lato" rel="stylesheet">
|
||||||
|
<link rel="shortcut icon" type="image/png" href="images/favicon.png"/>
|
||||||
|
</head>
|
||||||
|
|
||||||
|
<body>
|
||||||
|
<nav>
|
||||||
|
<img id="lune_logo" src="images/lune_logo.png" alt="lune_logo.png">
|
||||||
|
</nav>
|
||||||
|
|
||||||
|
<header>
|
||||||
|
<div id="header_wrapper">
|
||||||
|
<div class="row">
|
||||||
|
<div class="col-12">
|
||||||
|
<img id="math_masher_logo" src="images/math_masher_logo.png" alt="math_masher.png"></a>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="row" id="store_wrapper">
|
||||||
|
<div class="col-6">
|
||||||
|
<a href="https://itunes.apple.com/au/app/mathmasher/id1239372207?l=en&mt=8"><img id="app_store" src="images/app_store.png" alt="app_store.png"></a>
|
||||||
|
</div>
|
||||||
|
<div class="col-6">
|
||||||
|
<a href="https://play.google.com/store/apps/details?id=com.lune.MathMasher">
|
||||||
|
<img id="play_store" src="images/play_store.png" alt="play_store.png">
|
||||||
|
</a>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</header>
|
||||||
|
<main>
|
||||||
|
<div id="trailer_wrapper">
|
||||||
|
<iframe src="https://www.youtube.com/embed/AUozUZ8aY7g" frameborder="0" allowfullscreen></iframe>
|
||||||
|
</div>
|
||||||
|
<div class="row" id="math_masher_desc">
|
||||||
|
<div class="col-12">
|
||||||
|
<p>Play to practise your times-table from 1-12 and have fun at the same time. Practice in three different game modes and collect points to purchase skins and powerups as you become more familiar and confident with your times-table.<p>
|
||||||
|
<ul>
|
||||||
|
<li>✔ Select Multiples - Choose all the minions that are a multiple of the target number.</li>
|
||||||
|
<li>✔ Select Pair - Choose the 2 minions that multiply to the target number.</li>
|
||||||
|
<li>✔ Solve Equation - *BONUS* Practice your add/subtract skills by selecting the minion that solves the problem.</li>
|
||||||
|
</ul>
|
||||||
|
<p>With 3 game-modes for practice and over 20 collectables, no ads, Math Masher is a no fuss and fun way to help you master your times-table.</p>
|
||||||
|
<p>Everything collectable is free by earning points in game. No money required, no charges, let children play at ease and become comfortable with arithmetic.</p>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="row" id="game_play_wrapper">
|
||||||
|
<div class="col-4">
|
||||||
|
<img class="game_play" src="images/game_play_1.jpg" alt="game_play_1.jpg">
|
||||||
|
</div>
|
||||||
|
<div class="col-4">
|
||||||
|
<img class="game_play" src="images/game_play_2.jpg" alt="game_play_2.jpg">
|
||||||
|
</div>
|
||||||
|
<div class="col-4">
|
||||||
|
<img class="game_play" src="images/game_play_3.jpg" alt="game_play_3.jpg">
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</main>
|
||||||
|
<footer>
|
||||||
|
<div id="footer_wrapper">
|
||||||
|
<!--<div class="row">
|
||||||
|
<h2>Stay Connected</h2>
|
||||||
|
<a href="" target="_blank"><img id="fb_logo" src="https://upload.wikimedia.org/wikipedia/commons/thumb/c/c2/F_icon.svg/2000px-F_icon.svg.png" alt="fb_logo.png"></a>
|
||||||
|
</div>-->
|
||||||
|
<div class="row" id="email">
|
||||||
|
<a href="">EMAIL US (Deprecated)</a>
|
||||||
|
</div>
|
||||||
|
<div class="row" id="copyright">
|
||||||
|
<p>Copyright © 2017 Lune Australia.</p>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</footer>
|
||||||
|
</body>
|
||||||
|
|
||||||
|
</html>
|
0
luneaustralia/script.js
Normal file
BIN
luneaustralia/social-media_orig.png
Normal file
After Width: | Height: | Size: 71 KiB |
239
luneaustralia/style.css
Normal file
@ -0,0 +1,239 @@
|
|||||||
|
* {
|
||||||
|
margin: 0px;
|
||||||
|
padding: 0px;
|
||||||
|
box-sizing: border-box;
|
||||||
|
font-family: 'Lato', sans-serif;
|
||||||
|
}
|
||||||
|
|
||||||
|
body {
|
||||||
|
background-size: 100% auto;
|
||||||
|
background-repeat: no-repeat;
|
||||||
|
background-image: url("images/background.png");
|
||||||
|
background-color: rgba(195, 232, 255, 1.0);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* NAVIGATION
|
||||||
|
*/
|
||||||
|
|
||||||
|
nav {
|
||||||
|
max-height: 200px;
|
||||||
|
text-align: center;
|
||||||
|
padding: 25px 0px;
|
||||||
|
/*background-color: rgba(0, 0, 0, 0.1);*/
|
||||||
|
}
|
||||||
|
|
||||||
|
nav img {
|
||||||
|
height: 100%;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* HEADER
|
||||||
|
*/
|
||||||
|
|
||||||
|
header {
|
||||||
|
min-width: 100%;
|
||||||
|
/*min-height: 100%;*/
|
||||||
|
/* background-size: contain;
|
||||||
|
background-repeat: repeat no-repeat;
|
||||||
|
background-image: url("images/header_bg.jpg");*/
|
||||||
|
}
|
||||||
|
|
||||||
|
#header_wrapper {
|
||||||
|
max-width: 960px;
|
||||||
|
margin: 0px auto;
|
||||||
|
padding: 20px 0px;
|
||||||
|
}
|
||||||
|
|
||||||
|
#math_masher_logo {
|
||||||
|
width: 100%;
|
||||||
|
padding: 0px 20px;
|
||||||
|
margin: 10px 0px;
|
||||||
|
}
|
||||||
|
|
||||||
|
@media only screen and (min-width: 768px) {
|
||||||
|
#math_masher_logo {
|
||||||
|
width: 100%;
|
||||||
|
padding: 25px 60px;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/* STORE */
|
||||||
|
|
||||||
|
#store_wrapper {
|
||||||
|
width: 50%;
|
||||||
|
margin: 0 auto;
|
||||||
|
}
|
||||||
|
|
||||||
|
#app_store, #play_store {
|
||||||
|
width: 100%;
|
||||||
|
padding: 10px;
|
||||||
|
}
|
||||||
|
|
||||||
|
#lune_logo {
|
||||||
|
height: 150px;
|
||||||
|
margin: auto;
|
||||||
|
}
|
||||||
|
|
||||||
|
#app_store:hover, #play_store:hover, #fb_logo:hover {
|
||||||
|
transform: scale(1.1);
|
||||||
|
}
|
||||||
|
|
||||||
|
@media only screen and (min-width: 768px) {
|
||||||
|
#app_store, #play_store {
|
||||||
|
padding: 25px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.game_play:hover {
|
||||||
|
transform: scale(1.1);
|
||||||
|
}
|
||||||
|
|
||||||
|
#store_wrapper {
|
||||||
|
width: 80%;
|
||||||
|
margin: 0px auto;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* MAIN
|
||||||
|
*/
|
||||||
|
|
||||||
|
main {
|
||||||
|
max-width: 960px;
|
||||||
|
margin: 20px auto;
|
||||||
|
clear: both;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* TRAILER */
|
||||||
|
#trailer_wrapper {
|
||||||
|
position: relative;
|
||||||
|
padding-bottom: 56.25%;
|
||||||
|
margin: 0px 0px 25px 0px;
|
||||||
|
}
|
||||||
|
|
||||||
|
#trailer_wrapper iframe {
|
||||||
|
position: absolute;
|
||||||
|
top: 0;
|
||||||
|
left: 0;
|
||||||
|
width: 100%;
|
||||||
|
height: 100%;
|
||||||
|
padding: 0px 20px;
|
||||||
|
}
|
||||||
|
|
||||||
|
#math_masher_desc {
|
||||||
|
width: 80%;
|
||||||
|
padding: 0px 0px;
|
||||||
|
margin: 20px auto;
|
||||||
|
text-align: center;
|
||||||
|
background-color: rgba(255, 255, 255, 0.9);
|
||||||
|
color: rgba(0, 0, 0, 0.7);
|
||||||
|
text-align: left;
|
||||||
|
box-shadow: 2px 2px 2px 1px rgba(0, 0, 0, 0.2);
|
||||||
|
}
|
||||||
|
|
||||||
|
#math_masher_desc p, li, ul{
|
||||||
|
margin: 10px 0px;
|
||||||
|
padding: 0px 20px;
|
||||||
|
}
|
||||||
|
|
||||||
|
#math_masher_desc li {
|
||||||
|
list-style-type: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
@media only screen and (min-width: 768px) {
|
||||||
|
#math_masher_desc {
|
||||||
|
/*padding: 0px 150px;*/
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
#game_play_wrapper .col-4 {
|
||||||
|
margin: 10px 0px 10px 0px;
|
||||||
|
}
|
||||||
|
|
||||||
|
@media only screen and (min-width: 768px) {
|
||||||
|
#game_play_wrapper {
|
||||||
|
margin: 25px 0px 0px 0px;
|
||||||
|
width: 100%;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.game_play {
|
||||||
|
width: 90%;
|
||||||
|
margin: 0px 20px;
|
||||||
|
box-shadow: 2px 2px 2px 1px rgba(0, 0, 0, 0.2);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* FOOTER
|
||||||
|
*/
|
||||||
|
|
||||||
|
footer {
|
||||||
|
clear: both;
|
||||||
|
text-align: center;
|
||||||
|
margin: 50px auto 0px auto;
|
||||||
|
/*background-color: rgba(0, 0, 0, 0.1);*/
|
||||||
|
}
|
||||||
|
|
||||||
|
#footer_wrapper {
|
||||||
|
border-top: solid 1px black;
|
||||||
|
padding: 25px 0px;
|
||||||
|
max-width: 960px;
|
||||||
|
margin: 0px auto;
|
||||||
|
}
|
||||||
|
|
||||||
|
#email {
|
||||||
|
margin-top: 25px;
|
||||||
|
}
|
||||||
|
|
||||||
|
#email a:link {
|
||||||
|
color: black;
|
||||||
|
text-decoration: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
#copyright {
|
||||||
|
margin-top: 30px;
|
||||||
|
}
|
||||||
|
|
||||||
|
#fb_logo {
|
||||||
|
width: 5%;
|
||||||
|
margin-top: 10px;
|
||||||
|
}
|
||||||
|
|
||||||
|
#email a:hover {
|
||||||
|
color: red;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Grid-View
|
||||||
|
* https://www.w3schools.com/css/css_rwd_mediaqueries.asp
|
||||||
|
*/
|
||||||
|
/* For mobile phones: */
|
||||||
|
[class*="col-"] {
|
||||||
|
width: 100%;
|
||||||
|
}
|
||||||
|
|
||||||
|
@media only screen and (min-width: 768px) {
|
||||||
|
/* For desktop: */
|
||||||
|
.col-1 {width: 8.33%;}
|
||||||
|
.col-2 {width: 16.66%;}
|
||||||
|
.col-3 {width: 25%;}
|
||||||
|
.col-4 {width: 33.33%;}
|
||||||
|
.col-5 {width: 41.66%;}
|
||||||
|
.col-6 {width: 50%;}
|
||||||
|
.col-7 {width: 58.33%;}
|
||||||
|
.col-8 {width: 66.66%;}
|
||||||
|
.col-9 {width: 75%;}
|
||||||
|
.col-10 {width: 83.33%;}
|
||||||
|
.col-11 {width: 91.66%;}
|
||||||
|
.col-12 {width: 100%;}
|
||||||
|
}
|
||||||
|
|
||||||
|
[class*="col-"] {
|
||||||
|
float: left;
|
||||||
|
}
|
||||||
|
|
||||||
|
.row::after {
|
||||||
|
content: "";
|
||||||
|
clear: both;
|
||||||
|
display: table;
|
||||||
|
}
|
BIN
luneaustralia/v1.jpg
Normal file
After Width: | Height: | Size: 133 KiB |
BIN
luneaustralia/v2.jpg
Normal file
After Width: | Height: | Size: 119 KiB |
BIN
luneaustralia/v3.jpg
Normal file
After Width: | Height: | Size: 95 KiB |
BIN
luneaustralia/v4.jpg
Normal file
After Width: | Height: | Size: 133 KiB |
401
style.css
Normal file
@ -0,0 +1,401 @@
|
|||||||
|
/*******************************************************************************
|
||||||
|
* Globals
|
||||||
|
******************************************************************************/
|
||||||
|
* {
|
||||||
|
/* Reset all default margins and padding set by browser */
|
||||||
|
margin: 0;
|
||||||
|
padding: 0;
|
||||||
|
list-style-type: none;
|
||||||
|
color: rgba(0, 0, 0, 0.9);
|
||||||
|
font-size: 14px;
|
||||||
|
font-family: sans-serif;
|
||||||
|
|
||||||
|
/* Disable auto-resizing on load since it's unreliable. But allow resizing
|
||||||
|
* by users after the page has loaded */
|
||||||
|
-webkit-text-size-adjust: 100%;
|
||||||
|
}
|
||||||
|
|
||||||
|
p, h4 {
|
||||||
|
margin-top: 0.5em;
|
||||||
|
}
|
||||||
|
|
||||||
|
html {
|
||||||
|
margin-left: 10px;
|
||||||
|
margin-right: 10px;
|
||||||
|
}
|
||||||
|
|
||||||
|
body {
|
||||||
|
min-width: 50%;
|
||||||
|
margin: auto;
|
||||||
|
}
|
||||||
|
|
||||||
|
@media print {
|
||||||
|
html *{
|
||||||
|
font-size: 0.99em;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@media screen and (min-width: 60em) {
|
||||||
|
/* 960px / 16px == 60em (since 1em == 16px, base font size (above)) */
|
||||||
|
html {
|
||||||
|
font-size: 1.0em;
|
||||||
|
}
|
||||||
|
|
||||||
|
body {
|
||||||
|
max-width: 940px;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@media screen and (max-width: 48em) {
|
||||||
|
/* 768px / 16px == 48em (since 1em == 16px, base font size (above)) */
|
||||||
|
html {
|
||||||
|
font-size: 1.0em;
|
||||||
|
}
|
||||||
|
|
||||||
|
body {
|
||||||
|
max-width: 100%;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@media screen and (max-width: 20em) {
|
||||||
|
/* 320px / 16px == 20em (since 1em == 16px, base font size (above)) */
|
||||||
|
html {
|
||||||
|
font-size: 0.65em;
|
||||||
|
}
|
||||||
|
|
||||||
|
body {
|
||||||
|
max-width: 100%;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
a:link, a:visited {
|
||||||
|
text-decoration: underline;
|
||||||
|
}
|
||||||
|
|
||||||
|
h1 {
|
||||||
|
font-weight: bold;
|
||||||
|
font-size: 2em;
|
||||||
|
}
|
||||||
|
|
||||||
|
h2
|
||||||
|
{
|
||||||
|
padding-bottom: 0.5%;
|
||||||
|
font-weight: bold;
|
||||||
|
font-size: 1.25em;
|
||||||
|
}
|
||||||
|
|
||||||
|
h3 {
|
||||||
|
font-size: 1em;
|
||||||
|
}
|
||||||
|
|
||||||
|
h1, h2, a:hover {
|
||||||
|
color: #009688;
|
||||||
|
}
|
||||||
|
|
||||||
|
.index_divider, .index_divider_no_top_margin {
|
||||||
|
background-color: #009688;
|
||||||
|
display: block;
|
||||||
|
}
|
||||||
|
|
||||||
|
/*******************************************************************************
|
||||||
|
* Index Page (index.html)
|
||||||
|
******************************************************************************/
|
||||||
|
#index_wrapper
|
||||||
|
{
|
||||||
|
margin: auto;
|
||||||
|
}
|
||||||
|
|
||||||
|
.index_divider, .index_divider_no_top_margin
|
||||||
|
{
|
||||||
|
height: 2px;
|
||||||
|
|
||||||
|
margin-top: 1em;
|
||||||
|
margin-bottom: 0.5em;
|
||||||
|
}
|
||||||
|
|
||||||
|
@media print {
|
||||||
|
#index_divider_last_before_optional_content {
|
||||||
|
page-break-after: always;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.index_divider_no_top_margin {
|
||||||
|
margin-top: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
.index_education_table_cell p,
|
||||||
|
.index_education_table_cell_year p,
|
||||||
|
.index_table_cell p,
|
||||||
|
.index_table_cell_year p,
|
||||||
|
.index_table_cell_name p,
|
||||||
|
.index_projects_summary_table_cell p,
|
||||||
|
.index_projects_summary_table_cell_name p,
|
||||||
|
.index_projects_summary_table_cell_year p {
|
||||||
|
margin-top: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
.index_projects_summary_table_cell_year p,
|
||||||
|
.index_education_table_cell_year p,
|
||||||
|
.index_table_cell_year p {
|
||||||
|
font-weight: bold;
|
||||||
|
min-width: 9ch;
|
||||||
|
}
|
||||||
|
|
||||||
|
@media screen and (max-width: 48em) {
|
||||||
|
/* 768px / 16px == 48em (since 1em == 16px, base font size (above)) */
|
||||||
|
.index_projects_summary_table_cell_year,
|
||||||
|
.index_education_table_cell_year,
|
||||||
|
.index_table_cell_year {
|
||||||
|
font-weight: bold;
|
||||||
|
min-width: 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.index_generic_table {
|
||||||
|
display: table;
|
||||||
|
}
|
||||||
|
|
||||||
|
.index_generic_table_row {
|
||||||
|
display: table-row;
|
||||||
|
}
|
||||||
|
|
||||||
|
.index_generic_table_cell {
|
||||||
|
display: table-cell;
|
||||||
|
}
|
||||||
|
|
||||||
|
.index_table_cell li {
|
||||||
|
list-style-type: disc;
|
||||||
|
margin-left: 1em;
|
||||||
|
}
|
||||||
|
|
||||||
|
#index_header_subtitle {
|
||||||
|
color: #009688;
|
||||||
|
font-weight: bold;
|
||||||
|
}
|
||||||
|
|
||||||
|
#index_header_subtitle a:link {
|
||||||
|
text-decoration: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
/*******************************************************************************
|
||||||
|
* index_overview
|
||||||
|
******************************************************************************/
|
||||||
|
.index_overview {
|
||||||
|
margin: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
.index_overview_section {
|
||||||
|
width: 48%;
|
||||||
|
display: inline-block;
|
||||||
|
vertical-align: top;
|
||||||
|
}
|
||||||
|
|
||||||
|
#index_overview_section_qr_code > img{
|
||||||
|
min-width: 65px;
|
||||||
|
max-width: 20%;
|
||||||
|
}
|
||||||
|
|
||||||
|
@media screen and (max-width: 30em) {
|
||||||
|
/* 480px / 16px == 40em (since 1em == 16px, base font size (above)) */
|
||||||
|
.index_overview_section {
|
||||||
|
display: block;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.index_overview_section ul {
|
||||||
|
font-weight: bold;
|
||||||
|
}
|
||||||
|
|
||||||
|
/*******************************************************************************
|
||||||
|
* index_skills
|
||||||
|
/******************************************************************************/
|
||||||
|
#index_skills_table {
|
||||||
|
border-spacing: 2em 0.75em;
|
||||||
|
border-collapse: separate;
|
||||||
|
margin-left: -2em;
|
||||||
|
margin-top: -0.75em;
|
||||||
|
margin-bottom: -0.75em;
|
||||||
|
}
|
||||||
|
|
||||||
|
.index_skills_table_cell {
|
||||||
|
display: table-cell;
|
||||||
|
padding: 0.25em;
|
||||||
|
margin-right: 1em;
|
||||||
|
margin-bottom: 0.5em;
|
||||||
|
border: 2px solid #009688;
|
||||||
|
border-radius: 4px;
|
||||||
|
|
||||||
|
float: left;
|
||||||
|
}
|
||||||
|
|
||||||
|
/*******************************************************************************
|
||||||
|
* index_table
|
||||||
|
/******************************************************************************/
|
||||||
|
.index_table {
|
||||||
|
display: table;
|
||||||
|
|
||||||
|
border-spacing: 0.5em 0.75em;
|
||||||
|
border-collapse: separate;
|
||||||
|
margin-left: -0.5em;
|
||||||
|
margin-top: -0.75em;
|
||||||
|
margin-bottom: -0.75em;
|
||||||
|
}
|
||||||
|
|
||||||
|
.index_table_row {
|
||||||
|
display: table-row;
|
||||||
|
}
|
||||||
|
|
||||||
|
.index_table_cell_name,
|
||||||
|
.index_table_cell_year,
|
||||||
|
.index_table_cell {
|
||||||
|
display: table-cell;
|
||||||
|
}
|
||||||
|
|
||||||
|
.index_table_cell_name {
|
||||||
|
display: table-cell;
|
||||||
|
max-width: 15ch;
|
||||||
|
}
|
||||||
|
|
||||||
|
.index_table_cell_role {
|
||||||
|
color: #009688;
|
||||||
|
font-weight: bold;
|
||||||
|
}
|
||||||
|
|
||||||
|
/*******************************************************************************
|
||||||
|
* index_eduation
|
||||||
|
/******************************************************************************/
|
||||||
|
#index_education_table {
|
||||||
|
display: table;
|
||||||
|
|
||||||
|
border-spacing: 0.5em 0.3em;
|
||||||
|
border-collapse: separate;
|
||||||
|
margin-left: -0.5em;
|
||||||
|
margin-top: -0.3em;
|
||||||
|
margin-bottom: -0.3em;
|
||||||
|
}
|
||||||
|
|
||||||
|
.index_education_table_row {
|
||||||
|
display: table-row;
|
||||||
|
}
|
||||||
|
|
||||||
|
.index_education_table_cell,
|
||||||
|
.index_education_table_cell_year {
|
||||||
|
display: table-cell;
|
||||||
|
}
|
||||||
|
|
||||||
|
/*******************************************************************************
|
||||||
|
* index_projects
|
||||||
|
/******************************************************************************/
|
||||||
|
.index_projects_header {
|
||||||
|
padding-right: 3%;
|
||||||
|
margin-bottom: 2%;
|
||||||
|
}
|
||||||
|
|
||||||
|
.index_projects_content {
|
||||||
|
padding-right: 3%;
|
||||||
|
margin-bottom: 2%;
|
||||||
|
}
|
||||||
|
|
||||||
|
.index_projects_content ul, .index_projects_content li {
|
||||||
|
list-style-type: disc;
|
||||||
|
margin-top: 0.15em;
|
||||||
|
margin-left: 1.25em;
|
||||||
|
}
|
||||||
|
|
||||||
|
.index_projects_content_section {
|
||||||
|
margin-bottom: 1em;
|
||||||
|
}
|
||||||
|
|
||||||
|
.index_projects_preview_images {
|
||||||
|
text-align: center;
|
||||||
|
margin-bottom: 1em;
|
||||||
|
}
|
||||||
|
|
||||||
|
#index_projects_preview_images_loki img {
|
||||||
|
width: 100%;
|
||||||
|
height: 100%;
|
||||||
|
}
|
||||||
|
|
||||||
|
#index_projects_preview_images_novel img {
|
||||||
|
width: 100%;
|
||||||
|
height: 100%;
|
||||||
|
}
|
||||||
|
|
||||||
|
#index_projects_preview_images_kay_engine img {
|
||||||
|
width: 100%;
|
||||||
|
height: 100%;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/*******************************************************************************
|
||||||
|
* index_projects_dtrenderer
|
||||||
|
/******************************************************************************/
|
||||||
|
#index_projects_preview_images_dtrenderer img{
|
||||||
|
width: 100%;
|
||||||
|
height: 100%;
|
||||||
|
}
|
||||||
|
|
||||||
|
/*******************************************************************************
|
||||||
|
* index_projects_math_masher
|
||||||
|
/******************************************************************************/
|
||||||
|
#index_projects_math_masher h2 {
|
||||||
|
}
|
||||||
|
|
||||||
|
#index_projects_preview_images_math_masher img{
|
||||||
|
width: 33%;
|
||||||
|
height: 33%;
|
||||||
|
}
|
||||||
|
|
||||||
|
/*******************************************************************************
|
||||||
|
* index_projects_dengine
|
||||||
|
/******************************************************************************/
|
||||||
|
#index_projects_dengine h2 {
|
||||||
|
}
|
||||||
|
|
||||||
|
#index_projects_preview_images_dengine img {
|
||||||
|
width: 49.5%;
|
||||||
|
height: 49.5%;
|
||||||
|
}
|
||||||
|
|
||||||
|
@media screen and (max-width: 45em) {
|
||||||
|
/* 720px / 16px == 45em (since 1em == 16px, base font size (above)) */
|
||||||
|
#index_projects_preview_images_dengine img {
|
||||||
|
width: 95%;
|
||||||
|
height: 95%;
|
||||||
|
display: inline-block;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/*******************************************************************************
|
||||||
|
* index_projects_dchip8
|
||||||
|
/******************************************************************************/
|
||||||
|
#index_projects_preview_images_dchip8 img {
|
||||||
|
width: 49%;
|
||||||
|
height: 49%;
|
||||||
|
}
|
||||||
|
|
||||||
|
@media screen and (max-width: 45em) {
|
||||||
|
/* 720px / 16px == 45em (since 1em == 16px, base font size (above)) */
|
||||||
|
#index_projects_preview_images_dchip8 img {
|
||||||
|
width: 95%;
|
||||||
|
height: 95%;
|
||||||
|
display: inline-block;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/*******************************************************************************
|
||||||
|
* index_projects_dqn
|
||||||
|
/******************************************************************************/
|
||||||
|
#index_projects_preview_images_dqn img {
|
||||||
|
width: 100%;
|
||||||
|
height: 100%;
|
||||||
|
}
|
||||||
|
|
||||||
|
/*******************************************************************************
|
||||||
|
* index_footer
|
||||||
|
/******************************************************************************/
|
||||||
|
#index_footer {
|
||||||
|
margin-bottom: 25px;
|
||||||
|
text-align: center;
|
||||||
|
}
|