From 22318601f680d25b405bd66cd4f65ef6f378805c Mon Sep 17 00:00:00 2001 From: doylet <--global> Date: Mon, 31 Aug 2026 17:17:19 +1000 Subject: [PATCH] Add CTA to the website when page is printed as PDF --- index.html | 461 +++++++++++++++++++++++++++-------------------------- 1 file changed, 234 insertions(+), 227 deletions(-) diff --git a/index.html b/index.html index 6644a35..352a89c 100644 --- a/index.html +++ b/index.html @@ -56,24 +56,30 @@ .favicon { height: 16px; vertical-align: text-bottom; padding-left: 0.5em; padding-right: 0.5em; } .bullet-points { list-style: circle; margin-left: 1.5rem; } - @media print { - .pagebreak { - page-break-before: always; - } - } - - + /* + Helper classes for printing to PDF. A class with `print-show` will only show up in in + printing mode. `print-hide` will hide the tagged class when in printing mode. + */ + @media screen { .print-show { display: none; } } + @media print { .print-hide { display: none; } }
-

doylet // doy-lee

+

doylet // doy-lee

Low-level programmer since 2016. Uses C/C++ often. Passion for tools, privacy & game technology. Curious & learning every day.

+ +

About

@@ -410,7 +416,7 @@
  • Cross-Platform (Win32/Emscripten)
  • - + @@ -480,236 +486,237 @@

    -

    Archived

    -
    -

    2024 - 2025: Liquid++ (Closed Source)

    -
      -
    • C style C++
    • -
    • Chainflip
    • -
    • Market Making
    • -
    • ImGui
    • -
    • Sokol
    • -
    • SQLite
    • -
    • Backend
    • -
    -
    - -
    -

    - A market-making bot written in C++ for Chainflip, a decentralised cross-chain exchange. - The bot provides liquidity by placing limit orders on Chainflip's concentrated liquidity - AMM, then hedges directional exposure by taking opposing perpetual positions on - Hyperliquid. It pulls price data from Bybit as a secondary oracle to inform pricing. -

    -

    - The system connects to three exchanges simultaneously via WebSocket, each with dedicated - rate limiters and staleness detection to prevent trading on stale data. Orders are priced - using the external mid-price plus a configurable profit margin, and a kill-order is - scheduled for the next block to cancel unfilled orders before they can be picked up at an - unfavourable price. -

    -

    - It has hot-reload DLL support, a platform layer (Sokol) separates business logic into a - reloadable DLL. Dear ImGui is used for monitoring positions, order fills, and exchange - connectivity. A separate web dashboard server (CivetWeb) publishes binary heartbeats over - WebSocket for remote monitoring in a browser. -

    - - -
    -

    2023: Terry Cherry game.doylet.dev/terry_cherry/

    -
      -
    • C style C++
    • -
    • Raylib
    • -
    • Emscripten
    • -
    • 2D Tower Defence-Esque
    • -
    - - - - - -
    -

    - A 2-player local co-op top-down tower defence game developed over 4 weekends in a game - jam. Players defend "Terry's Heart" from waves of love-themed enemies (catfish, smoochie - teleporters, and clinger dashers) that march along waypoint paths toward the base. -

    -

    - Players earn coins by defeating enemies and purchase upgrades or buildings from the - storefronts. A pub that slows enemies, a church that converts them to allies and an - airport that flies them to the back of the queue. Monkey totems spawn periodically which - can disable enemy portals when delivered to them shutting them down permanently to win. -

    -

    - The engine features a tree-based entity system with generation-indexed - handles[1] to prevent use-after-free bugs, - fixed-timestep physics with swept AABB collision and a waypoint path-finding system. Built - on Raylib with a custom C++ meta-build system, hot-reload DLL support, and an Emscripten - web build targeting WebGL. -

    - -
      -
    • Source Code git.doylet.dev/doylet/feely_pona
    • -
    • [1] Handles are the better pointers floooh.github.io/2018/06/17/handles-vs-pointers.html
    • +
      +

      Archived

      +
      +

      2024 - 2025: Liquid++ (Closed Source)

      +
        +
      • C style C++
      • +
      • Chainflip
      • +
      • Market Making
      • +
      • ImGui
      • +
      • Sokol
      • +
      • SQLite
      • +
      • Backend
      -
      -
      + + +
      +

      + A market-making bot written in C++ for Chainflip, a decentralised cross-chain exchange. + The bot provides liquidity by placing limit orders on Chainflip's concentrated liquidity + AMM, then hedges directional exposure by taking opposing perpetual positions on + Hyperliquid. It pulls price data from Bybit as a secondary oracle to inform pricing. +

      +

      + The system connects to three exchanges simultaneously via WebSocket, each with dedicated + rate limiters and staleness detection to prevent trading on stale data. Orders are priced + using the external mid-price plus a configurable profit margin, and a kill-order is + scheduled for the next block to cancel unfilled orders before they can be picked up at an + unfavourable price. +

      +

      + It has hot-reload DLL support, a platform layer (Sokol) separates business logic into a + reloadable DLL. Dear ImGui is used for monitoring positions, order fills, and exchange + connectivity. A separate web dashboard server (CivetWeb) publishes binary heartbeats over + WebSocket for remote monitoring in a browser. +

      +
    -
    -

    2020: intc Software u128/256 bit port to C git.doylet.dev/doylet/intc

    -
      -
    • C99/C++
    • -
    • Open Source
    • -
    • Single File Library Port
    • -
    -

    - intc is a port of calccrypto's uint128/256 library into a single header file library to - allow u128/256 calculations. This port is primarily C first and provides C++ helpers like - operator overloads that are opt in. -

    - -
      -
    • calccrypto's uint256_t github.com/calccrypto/uint256_t
    • +
      +

      2023: Terry Cherry game.doylet.dev/terry_cherry/

      +
        +
      • C style C++
      • +
      • Raylib
      • +
      • Emscripten
      • +
      • 2D Tower Defence-Esque
      -
      -
      + + + + + +
      +

      + A 2-player local co-op top-down tower defence game developed over 4 weekends in a game + jam. Players defend "Terry's Heart" from waves of love-themed enemies (catfish, smoochie + teleporters, and clinger dashers) that march along waypoint paths toward the base. +

      +

      + Players earn coins by defeating enemies and purchase upgrades or buildings from the + storefronts. A pub that slows enemies, a church that converts them to allies and an + airport that flies them to the back of the queue. Monkey totems spawn periodically which + can disable enemy portals when delivered to them shutting them down permanently to win. +

      +

      + The engine features a tree-based entity system with generation-indexed + handles[1] to prevent use-after-free bugs, + fixed-timestep physics with swept AABB collision and a waypoint path-finding system. Built + on Raylib with a custom C++ meta-build system, hot-reload DLL support, and an Emscripten + web build targeting WebGL. +

      + + + +
    -
    -

    2020: RaylibSIMD SIMD Software rendering in C git.doylet.dev/doylet/RaylibSIMD

    -
      -
    • C99
    • -
    • SSE2
    • -
    • Graphics Programming
    • -
    -

    - Raylib is a game-engine by Raysan5 whose main focus is to make game engine programming - simple and enjoyable. In this project, I rewrote the software-rendering routine to use - SSE2/3 instructions to attain the expected 4x speed-up by taking advantage of - data-parallelism offered by SIMD. -

    - -
      -
    • Raylib Website raylib.com
    • +
      +

      2020: intc Software u128/256 bit port to C git.doylet.dev/doylet/intc

      +
        +
      • C99/C++
      • +
      • Open Source
      • +
      • Single File Library Port
      -
      -
      +

      + intc is a port of calccrypto's uint128/256 library into a single header file library to + allow u128/256 calculations. This port is primarily C first and provides C++ helpers like + operator overloads that are opt in. +

      + + + +
    -
    -

    2017: DTRenderer 3D Software rendering in C++ git.doylet.dev/doylet/DTRenderer

    - - -
    -

    - 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. -

    -
      -
    • 2D Software Rendering
    • -
    • Alpha Blending
    • -
    • Bilinear Filtering
    • -
    • Correct Color Space Pipeline (SRGB <-> Linear)
    • -
    • Rasterisation
    • -
    • Texture Mapping
    • -
    • Translation, Rotation, Scale
    • -
    • 3D Software Rendering
    • -
    • Full Bright, Flat, Gouraud Shading
    • -
    • Orthographic, Perspective Projections
    • -
    • Custom Wavefront Obj Loader (minimal subset)
    • -
    • Hot Reloadable DLL for Renderer Code (taken from Handmade Hero)
    • -
    -
    - -
    -

    2017: Math Masher Math game for mobile doylet.dev/luneaustralia

    - - - - - - -
    -

    - 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 was developed in a team using the Cocos2DX framework in C++. My role in the - project is as the lead developer and assisting role with asset design. -

    -
      -
    • Project management (Trello, minutes meeting, code review etc.)
    • -
    • Game engine architecture (Gameplay, UI, shopping mechanics, debug)
    • -
    • Basic sound editing (Compressor, EQing, normalisation)
    • -
    • Asset designs (Creating graphical assets with Photoshop)
    • -
    - -
      -
    • Trailer youtube.com/watch?v=AUozUZ8aY7g
    • +
      +

      2020: RaylibSIMD SIMD Software rendering in C git.doylet.dev/doylet/RaylibSIMD

      +
        +
      • C99
      • +
      • SSE2
      • +
      • Graphics Programming
      -
      -
      +

      + Raylib is a game-engine by Raysan5 whose main focus is to make game engine programming + simple and enjoyable. In this project, I rewrote the software-rendering routine to use + SSE2/3 instructions to attain the expected 4x speed-up by taking advantage of + data-parallelism offered by SIMD. +

      + + + +
    -
    -

    2017: DCHIP8 Chip8 interpreter git.doylet.dev/doylet/dchip-8

    - - - - - -
    -

    DCHIP8 aims to emulate the CHIP8 architecture to better understand at a lower level - operations between memory, cpu, input and output.

    -
      -
    • Fetch, Decode, Execute Opcodes
    • -
    • Modelling memory, registers and basic CPU architecture
    • -
    • Software Rendering and interaction with Win32
    • -
    • Minimal dependencies, single file executable
    • -
    - -
      -
    • Specification Sheet devernay.free.fr/hacks/chip8/C8TECH10.HTM
    • +
      +

      2017: DTRenderer 3D Software rendering in C++ git.doylet.dev/doylet/DTRenderer

      + + +
      +

      + 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. +

      +
        +
      • 2D Software Rendering
      • +
      • Alpha Blending
      • +
      • Bilinear Filtering
      • +
      • Correct Color Space Pipeline (SRGB <-> Linear)
      • +
      • Rasterisation
      • +
      • Texture Mapping
      • +
      • Translation, Rotation, Scale
      • +
      • 3D Software Rendering
      • +
      • Full Bright, Flat, Gouraud Shading
      • +
      • Orthographic, Perspective Projections
      • +
      • Custom Wavefront Obj Loader (minimal subset)
      • +
      • Hot Reloadable DLL for Renderer Code (taken from Handmade Hero)
      -
      -
      +
    -
    -

    2016: Dengine 2D engine for asteroids git.doylet.dev/doylet/dengine

    - - - - - -
    -

    - 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. -

    -
      -
    • Asset Management (load data into intermediate representations)
    • -
    • Audio API from OpenAL
    • -
    • Basic 2D Game Mathematics/Physics (Vector, Trig, Explicit Euler)
    • -
    • Collision Detection (Single Axis Theorem, Minkowski Sum/Diff, AABB)
    • -
    • Debug Services & Displays
    • -
    • Entity Component Systems
    • -
    • IMGUI Systems
    • -
    • Input Parsing
    • -
    • Push-Buffer Memory Systems
    • -
    • Small Size Array Optimisations
    • -
    • Standard Library Replacements (e.g. atoi, strlen, itoa, string)
    • -
    • Texture Atlas Support, Runtime Font Packing
    • -
    • OpenGL 2D Rendering Pipeline & Batching Render Calls
    • -
    - -
      -
    • Handmade Hero handmadehero.org
    • +
      +

      2017: Math Masher Math game for mobile doylet.dev/luneaustralia

      + + + + + + +
      +

      + 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 was developed in a team using the Cocos2DX framework in C++. My role in the + project is as the lead developer and assisting role with asset design. +

      +
        +
      • Project management (Trello, minutes meeting, code review etc.)
      • +
      • Game engine architecture (Gameplay, UI, shopping mechanics, debug)
      • +
      • Basic sound editing (Compressor, EQing, normalisation)
      • +
      • Asset designs (Creating graphical assets with Photoshop)
      -
      -
      + + + +
    +
    +

    2017: DCHIP8 Chip8 interpreter git.doylet.dev/doylet/dchip-8

    + + + + + +
    +

    DCHIP8 aims to emulate the CHIP8 architecture to better understand at a lower level + operations between memory, cpu, input and output.

    +
      +
    • Fetch, Decode, Execute Opcodes
    • +
    • Modelling memory, registers and basic CPU architecture
    • +
    • Software Rendering and interaction with Win32
    • +
    • Minimal dependencies, single file executable
    • +
    + + + +
    + +
    +

    2016: Dengine 2D engine for asteroids git.doylet.dev/doylet/dengine

    + + + + + +
    +

    + 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. +

    +
      +
    • Asset Management (load data into intermediate representations)
    • +
    • Audio API from OpenAL
    • +
    • Basic 2D Game Mathematics/Physics (Vector, Trig, Explicit Euler)
    • +
    • Collision Detection (Single Axis Theorem, Minkowski Sum/Diff, AABB)
    • +
    • Debug Services & Displays
    • +
    • Entity Component Systems
    • +
    • IMGUI Systems
    • +
    • Input Parsing
    • +
    • Push-Buffer Memory Systems
    • +
    • Small Size Array Optimisations
    • +
    • Standard Library Replacements (e.g. atoi, strlen, itoa, string)
    • +
    • Texture Atlas Support, Runtime Font Packing
    • +
    • OpenGL 2D Rendering Pipeline & Batching Render Calls
    • +
    + + + +
    +